Cómo escribir una declaración condicional en vhdl si desea realizar una multiplicación cuando hay una entrada de señal
Resumen: este artículo presenta las funciones básicas del temporizador/contador programable 8253 y el diseño del temporizador/contador programable 8253 utilizando el método del lenguaje VHDL, sus principios y se elaboran ideas de diseño, y se implementa utilizando el dispositivo FPGA ACEX 1K de Altera.
Palabras clave: FPGA; IP; VHDL
Introducción
En sistemas de ingeniería y control, para lograr control de temporización o retardo, como interrupción de temporización, temporización. La detección, el escaneo programado, etc. a menudo requieren algunos relojes en tiempo real y un contador para contar eventos externos. Para lograr el control de temporización o retardo, existen tres métodos principales: temporización de software, temporización de hardware no programable y temporizador de hardware programable. Entre ellos, el valor de sincronización y el rango del circuito temporizador programable se pueden determinar y cambiar fácilmente mediante software. Es relativamente potente y flexible de usar. El temporizador/contador de Intel es un temporizador programable PIT, modelo 8253, que fue mejorado a 8254. Es un circuito diseñado para completar las funciones anteriores.
Con el desarrollo de ASIC, el chip 8253PIT general muestra las siguientes deficiencias en la ingeniería real: 1. La frecuencia de conteo no es suficiente. La tasa de conteo más alta de 8253 es de 2 MHz. Incluso su 8254 mejorado a menudo no puede cumplir. algunos requisitos. Proyectos que requieren una mayor frecuencia de conteo. 2. 8253PIT no tiene señal de reinicio y el estado inicial de la salida es incontrolable. En respuesta a estas limitaciones del 8253, en proyectos reales a menudo es necesario rediseñar el 8253 e incorporar algunas de las funciones del 8253 en el diseño como módulos IP independientes para implementar un ASIC que complete funciones específicas.
Funciones básicas y estructura interna del 8253
Funciones principales
* Cada chip contiene tres canales de conteo independientes de 16 bits;
* Cada contador puede contar en binario o doble decimal;
* La velocidad de conteo de cada contador puede alcanzar hasta 2MHz
* Cada canal de conteo tiene 6 modos de trabajo, se puede configurar y; modificado por el programa;
* Todas las señales de nivel de entrada/salida son compatibles con TTL.
Estructura interna
La estructura interna de 8253 se muestra en la Figura 1.
1. Se trata de un búfer de tres estados bidireccional de 8 bits que se utiliza para conectar el 8253 al bus de datos de la CPU. La CPU escribe palabras de comando de control y valores de conteo iniciales en el chip 8253 a través del búfer del bus de datos, o lee el valor de conteo actual del contador 8253.
2. Lógica de lectura/escritura. Esta es la parte de control del funcionamiento interno del 8253. En primer lugar, la parte de control tiene la señal de selección de chip CS. Cuando CS tiene un nivel alto, el búfer del bus de datos está en tres estados y el bus de datos del sistema está cerrado, por lo que no se pueden realizar operaciones de programación, lectura y escritura. En segundo lugar, esta parte del puerto (3 contadores y registro de palabras de control) selecciona operaciones de lectura y escritura y controla la dirección de transmisión de datos.
3. Registro de palabras de control. Al inicializar y programar el 8253, la CPU escribe la palabra de control para determinar cómo opera el canal. En este registro sólo se puede escribir, no leer. De hecho, los tres canales de contador de 8253 tienen sus propios registros de palabras de control, que almacenan sus propias palabras de control respectivamente. Al inicializar la programación, estas tres palabras de control están en tres **** y la dirección del puerto de control se escribe en sus respectivos. pasillo. Se distinguen por los diferentes estados de los dos bits más altos.
4. Canal contador. Incluye Contador 0, Contador 1 y Contador 2. Tienen exactamente la misma estructura y pueden funcionar de forma independiente de diferentes maneras. Cada canal incluye: un registro de control de 8 bits; un registro de valor inicial de conteo de 16 bits; una parte de ejecución de conteo, un contador de resta de 16 bits y un pestillo de salida de 16 bits;
Cada canal cuenta el pulso de entrada CLK en forma binaria o decimal, restando uno al valor preestablecido. Cuando el valor preestablecido disminuye a cero, se emitirá una señal en la salida OUT.
Durante el proceso de conteo, el contador es controlado por la señal de puerta GATE.
Diseño de 8253
De acuerdo con la estructura interna de 8253, el diseño de 8253 se divide principalmente en dos partes: parte de control de bus y parte de sincronización/conteo.
Diseño de la parte de control del bus
Esta parte completa principalmente la lectura/escritura de datos y la escritura de palabras de control. Antes de diseñar esta parte en VHDL, debe comprender las selecciones de puertos del 8253 (consulte la Tabla 1) y las palabras de control (consulte la Figura 2).
La clave del diseño es dominar la palabra de control del puerto 8253. Cuando llega la señal de escritura, primero se debe determinar si es una palabra de control o un valor inicial de conteo. Si es un valor inicial, la clave es escribir primero el byte bajo y luego el byte alto. Debe usar una señal para determinar si escribir datos nuevos o escribir datos no escritos anteriormente en la parte del byte alto. La lectura y escritura de otros contadores es similar a ésta. Siempre que comprenda claramente las palabras de control del puerto 8253 y tenga cierta comprensión del tiempo de lectura/escritura, es muy fácil describir esta parte de la lógica en lenguaje VHDL. Este proceso puede enviar una señal de control para indicar si se completó la escritura de la palabra de control y los datos, y el contador puede contar. Esta señal de control se puede utilizar como señal de activación para la sección de conteo que se describe a continuación.
Diseño de la contraparte
8253 tiene tres contadores independientes, cada uno de los cuales tiene seis modos de trabajo para completar diferentes funciones. El modo 4 ahora se utiliza como ejemplo para presentar el diseño VHDL. Se pueden modificar otros modos según el modo 4.
En este modo de trabajo, cuando se escribe la palabra de control, la salida es de nivel alto. Después de escribir el valor de conteo, después de otro ciclo de reloj, la parte de ejecución de conteo obtiene el valor de conteo inicial y comienza a contar de 1 en 1. Cuando el conteo llega a 0, la salida cambia a nivel bajo. Este nivel bajo se mantiene durante un ciclo de reloj y luego cambia automáticamente a nivel alto y permanece en nivel alto. De esta manera, el conteo es una sola vez y sólo se puede iniciar un nuevo conteo después de ingresar un nuevo valor de conteo.
El proceso de diseño del modo 4 se presenta a continuación:
Después de que la CPU escribe la palabra de control, la salida se restablece inmediatamente. En el modo 4, la salida se restablece al nivel alto después. reiniciar. La CPU escribe el valor de conteo inicial del siguiente pulso CLK. El valor de conteo inicial se envía a la parte de ejecución de conteo y comienza a contar restando 1, y luego genera un pulso negativo después de N ciclos de reloj. Cuando GATE=1, se permite contar; cuando GATE=0, se prohíbe contar. Esto implementa la funcionalidad básica de activación del software del Modo 4.
si clk1'event y clk1='0' entonces -- llega el flanco descendente del pulso del reloj
si gate1='1' entonces -- el bit de puerta es 1, se permite contar
si ce1> "0000000000000001" entonces
ce1<=ce1-1;
--Disminuye el recuento en 1, ce es el recuento parte de ejecución
elsif ce1=" 0000000000000001" luego
out1<='0' --Salida de nivel bajo cuando el valor inicial disminuye a 1
ce1< ;=ce1-1 ; --Continúa disminuyendo en 1
elsif ce1="0000000000000000" y luego
out1<='1'; el valor disminuye a 0, salida plana de alta potencia
finaliza si; elsif gate1='0' entonces<
-- El bit de la puerta es 0, lo que desactiva el conteo
null; end if; end if ;
El subprograma anterior no está completo, pero describe las funciones básicas de activación del software del Modo 4. Si el valor de conteo se cambia durante el conteo, el valor de conteo se escribirá en la parte de ejecución de conteo en el siguiente ciclo CLK después de que se escriba el nuevo valor, y el conteo comenzará desde el nuevo valor de conteo.
Si el valor del recuento escrito es de dos bytes, escribir el primer byte no afecta el recuento. En el siguiente ciclo de reloj después de escribir el segundo byte, la parte de ejecución del recuento obtiene un nuevo valor y comienza a contar desde el nuevo valor. , esto se llama reactivación de software. Al agregar las señales de juicio y las señales de control correspondientes al programa anterior, se puede realizar la función de reactivación del software.
Flujo completo del proceso de escritura del 8253
De hecho, el 8253 completo es una estructura compleja con múltiples procesos. El proceso de lectura del bus, el proceso de escritura del bus y los seis modos de trabajo de cada contador son procesos independientes. Los procesos son paralelos. Siempre que cambie la señal sensible del proceso, se activará un proceso y los procesos se ejecutarán en orden cronológico. Tomando el proceso de escritura como ejemplo, el proceso del bus de escritura en sí es activado por las señales sensibles wr y cs. Ya sea que esté escribiendo la palabra de control o el valor inicial del conteo, el proceso del bus de escritura enviará una señal para indicar. se escribe el valor de un determinado contador, se escribe la palabra de control o se ha escrito el valor de conteo inicial de un determinado modo de trabajo de un determinado contador y se puede realizar el conteo. Estas señales son correspondientemente sensibles a otros procesos y la comunicación entre procesos depende de estas señales. Estos procesos se ejecutan simultáneamente entre sí y el proceso que se ejecuta depende de la palabra de control. La Figura 3 muestra el flujo del proceso de escritura y el flujo del proceso de lectura es similar.
Verificación de los resultados del diseño
El software de diseño y desarrollo se completa utilizando el software de desarrollo integrado MAX+PLUS II 10.2 de Altera. Y se verificaron los chips FPGA de la serie ACEX 1K de la empresa.
Se eligió la serie de chips ACEX 1K porque es una serie de chips FPGA de alta densidad y bajo costo que es la primera opción para equipos de tamaño mediano. Tiene las siguientes características:
* ACEX 1K adopta una estructura que combina una tabla de búsqueda (LUT) y un bloque de matriz integrado (EAB), que es particularmente adecuado para realizar funciones de memoria de funciones lógicas complejas, como En el campo de la comunicación se utilizan el procesamiento de señales digitales, el procesamiento de datos de múltiples canales, la transmisión de datos y los microcontroladores, etc.
* El recuento de puertas típico es de 10 000 a 100 000 puertas con hasta 49 152 bits de RAM (hasta 4096 bits de RAM por EAB).
* El dispositivo tiene un voltaje central de 2,5 V, bajo consumo de energía, es capaz de proporcionar E/S bidireccionales de hasta 250 MHz y es totalmente compatible con los estándares de bus local PCI de 33 MHz y 66 MHz.
* Interconexiones de carril rápido con secuenciación rápida y latencia predecible; cadenas de alimentación dedicadas para funciones aritméticas como sumadores, contadores, multiplicadores y comparadores rápidos y conectividad de nivel dedicado para entrada multisectorial de alta velocidad; funciones lógicas.
El diseño realiza bien su funcionalidad mediante simulación, síntesis y descarga a la FPGA para su verificación.
Referencias
1 F.T. Tseng, M.M. Chen.Programación VHDL
2 Ejemplo de diseño de sistema de control digital Mingquan Lin.VHDL
3