L
L
ó
ó
gica Programable
gica Programable
--
AHDL
AHDL
-
-Introducci
Introducci
ó
ó
n a los Sistemas
n a los Sistemas
L
L
ó
ó
gicos y Digitales
gicos y Digitales
2008
L
L
ó
ó
gica Programable
gica Programable
HDL
-
H
ardware
D
escription
L
anguage
-( Lenguaje de Descripción de Hardware)
L
L
ó
ó
gica Programable
gica Programable
Qué es HDL?
Es una herramienta formal para describir la estructura y
comportamiento de sistemas usando un lenguaje del tipo textual. Cuáles son sus características?
- Posibilita dividir un proyecto en una estructura jerárquica permitiendo combinar diferentes tipos de descripciones para diseñar los componentes de un sistema.
- Puede modelizar la respuesta temporal de sistemas electrónicos. Cómo se lo puede utilizar?
- Como herramienta de diseño: Posibilita la creación de componentes parametrizados.
Permite un diseño portable con independencia de la tecnología.
- Como herramienta de especificación: Se puede especificar un sistema o cualquiera de sus componentes. - Como herramienta de simulación: Capacidad de generar tests complejos.
Disponibilidad de modelos suministrados por fabricantes.
L
L
ó
ó
gica Programable
gica Programable
Tipos de HDL:
Bajo nivel: ABEL, PALASM, CUPL, etc.. Nivel medio: AHDL.
Nivel alto: VHDL, Verilog.
AHDL
Cuanto mas alto es el nivel de abstracción, en forma mas simple se puede especificar un diseño para generar lógica compleja. Sin embargo, es útil el conocimiento de las estructuras de
hardware a utilizar ya que a veces la síntesis se realiza de modo tal que el diseñador pierde la visión de cómo el compilador
implementa lo especificado, con el riesgo de un uso quizás no muy eficiente del hardware que puede hasta comprometer la performance de velocidad, consumo de potencia, etc..
L
L
ó
ó
gica Programable
gica Programable
AHDL:
Lenguaje de descripción de hardware propietario de Altera. Tiene característica de HDL que le permiten ser eficiente para desarrollos de baja a media complejidad.
Es un paso intermedio entre los lenguajes de bajo a alto nivel de abstracción ó complejidad.
Utiliza el modelo “behavioral” (de comportamiento) para describir la lógica que se desea implementar.
L
L
ó
ó
gica Programable
gica Programable
AHDL
El archivo de trabajo se ha denominado “compuertas01.tdf”.
Las declaraciones de entradas y salidas del circuito a implementar se hacen aquí
Esta es la parte donde se hace la especificación de la lógica que se quiere
IMPLEMENTACIÓN DE ALGEBRA DE BOOLE
“&” ≡ AND “#” ≡ OR “!” ≡ NOT
L
L
ó
ó
gica Programable
gica Programable
EJEMPLO: compuertas01.tdfAHDL
Icono del compilador
Luego de salvar el proyecto se debe compilar, operación que realiza el software para sintetizar la lógica en base a lo especificado.
La compilación puede ser:
Funcional: No se consideran los retardos.
L
L
ó
ó
gica Programable
gica Programable
EJEMPLO: compuertas01.tdfAHDL
Resultado de la compilación
L
L
ó
ó
gica Programable
gica Programable
EJEMPLO: compuertas01.tdfAHDL
Listado parcial del archivo de reporte (extensión “rpt”)
En este archivo se refleja toda la información que dá el compilador como:
Pines empleados.
Recursos utilizados y remanentes. Etc..
L
L
ó
ó
gica Programable
gica Programable
EJEMPLO: compuertas01.tdfAHDL
Listado parcial del archivo de reporte (extensión “rpt”)
Disposición de las variables sintetizadas.
L
L
ó
ó
gica Programable
gica Programable
EJEMPLO: compuertas01.tdfAHDL
Listado parcial del archivo de reporte (extensión “rpt”)
Información general de recursos empleados.
L
L
ó
ó
gica Programable
gica Programable
EJEMPLO: compuertas01.tdfAHDL
L
L
ó
ó
gica Programable
gica Programable
EJEMPLO: compuertas01.tdfAHDL
Gráfico de ventana para simulación del hardware sintetizado El archivo tiene extensión “scf”
L
L
ó
ó
gica Programable
gica Programable
EJEMPLO: compuertas01.tdfAHDL
Método para ingresar las variables del circuito (entradas, salidas y eventualmente señales internas)
L
L
ó
ó
gica Programable
gica Programable
EJEMPLO: compuertas01.tdfAHDL
Presionando “LIST” aparecen a la izquierda todas las variables posibles de ingresar.
L
L
ó
ó
gica Programable
gica Programable
EJEMPLO: compuertas01.tdfAHDL
Dando “OK” se ingresan y aparecerán luego en el gráfico.
L
L
ó
ó
gica Programable
gica Programable
EJEMPLO: compuertas01.tdfAHDL
El gráfico es un conjunto de diagramas temporales para realizar la simulación. Por lo tanto se deben especificar temporalmente los valores que tomaran las entradas en todo el tiempo de simulación. Luego se corre el programa asociado y se ven los resultados.
Gráfico de ventana para simulación del hardware sintetizado
señales de entrada
L
L
ó
ó
gica Programable
gica Programable
EJEMPLO: compuertas01.tdfAHDL
Gráfico de ventana para simulación del hardware sintetizado
Zoom (+) Zoom (-) Asignación de: “1” ó “0” ó “Z”
L
L
ó
ó
gica Programable
gica Programable
EJEMPLO: compuertas01.tdfAHDL
Gráfico de ventana para simulación del hardware sintetizado
Se marca la variable de entrada a la cual se le quiere dibujar el
L
L
ó
ó
gica Programable
gica Programable
EJEMPLO: compuertas01.tdfAHDL
Gráfico de ventana para simulación del hardware sintetizado
Se marca por ejemplo la zona donde se quiere que “a” valga “1”.
Para que se efectivice, se debe presionar el icono
L
L
ó
ó
gica Programable
gica Programable
EJEMPLO: compuertas01.tdfAHDL
Gráfico de ventana para simulación del hardware sintetizado
Se puede observar con detalle empleando el zoom, las marcaciones de las variables para dibujar con precisión la evolución de las mismas.
L
L
ó
ó
gica Programable
gica Programable
EJEMPLO: compuertas01.tdfAHDL
Gráfico de ventana para simulación del hardware sintetizado
Icono del simulador
Terminada la etapa de dibujar las variables de entrada, se procede a correr la simulación.
L
L
ó
ó
gica Programable
gica Programable
EJEMPLO: compuertas01.tdfAHDL
Gráfico de ventana para simulación del hardware sintetizado
Al inicio, el simulador presenta una ventana como esta donde indica los tiempos de inicio y de fin.
L
L
ó
ó
gica Programable
gica Programable
EJEMPLO: compuertas01.tdfAHDL
Gráfico de ventana para simulación del hardware sintetizado
L
L
ó
ó
gica Programable
gica Programable
EJEMPLO: compuertas01.tdfAHDL
Gráfico de ventana para simulación del hardware sintetizado
Aquí se puede observar los diagramas de las funciones:
Or-Exclusiva, OR, Nor-Exclusiva, NOR, NAND y AND respectivamente. Los retardos son los propios del dispositivo seleccionado.
L
L
ó
ó
gica Programable
gica Programable
AHDL
EJEMPLO: deco01.tdf
El diseño del decodificador se basa en una ecuación de equivalencia; cuando es cierta “chip_hab” vale “1”.
L
L
ó
ó
gica Programable
gica Programable
AHDL
EJEMPLO: deco02.tdf
El diseño del decodificador se basa en una ecuación de equivalencia; cuando es cierta “chip_hab” vale “1”.
La diferencia con lo anterior es que se usó una sentencia “CONSTANT” para definir el número de comparación.
L
L
ó
ó
gica Programable
gica Programable
EJEMPLO: deco03.tdfAHDL
L
L
ó
ó
gica Programable
gica Programable
EJEMPLO: deco04.tdfAHDL
Decodificador BCD a 7 segmentos Con el empleo de la función TABLE es posible realizar una innumerable
cantidad de decodificadores.
En este caso la entrada es un dígito en BCD y las salidas alimentan a un
display de 7 segmentos.
Es importante aclarar que algunos dispositivos lógicos programables NO TIENEN capacidad de corriente suficiente para manejar directamente a diodos emisores de luz (LED) por lo que se deben anteponer circuitos
L
L
ó
ó
gica Programable
gica Programable
EJEMPLO: deco04.tdfAHDL
L
L
ó
ó
gica Programable
gica Programable
EJEMPLO: deco05.tdfAHDL
Uso de sentencia CASE
Cuando hay opciones que no se cubren se puede usar la cláusura:
L
L
ó
ó
gica Programable
gica Programable
EJEMPLO: encoder01.tdfAHDL
L
L
ó
ó
gica Programable
gica Programable
AHDL
Diferencias importantes entre sentencias CASE y sentencias IF
Cualquier tipo de expresión Booleana puede ser usada dentro de una sentencia IF Then.
En cambio en CASE una expresión simple Booleana es comparada por una constante en cada cláusura WHEN.
Usando la cláusura ELSEIF se puede generar lógica muy complicada (innecesaria) debido a que cada ELSEIF debe ser chequeada si la anterior IF/ELSEIF ha sido Falsa.
L
L
ó
ó
gica Programable
gica Programable
AHDL
EJEMPLO: bidir01.tdf Q
DFF
D reloj oe in_outTRI
L
L
ó
ó
gica Programable
gica Programable
EJEMPLO: reg01.tdfAHDL
Este registro de 8 bits está formado por 8 FFs tipo “D” DFFE sincrónicos disparados por flanco ascendente y con entrada de habilitación.
Estos DFFE forman parte de la librería interna “primitiva” del MAX-Plus II.
L
L
ó
ó
gica Programable
gica Programable
EJEMPLO: reg02.tdfAHDL
Este ejemplo sintetiza exactamente lo mismo que “reg01.tdf”. La gran diferencia es que se utiliza la librería de componentes parametrizados ( en este caso un FF tipo “D”).
Un componente parametrizado es genérico y se lo configura según las necesidades.
Por ejemplo con LPM_WIDTH se le indica la longitud de palabra (en este caso el
L
L
ó
ó
gica Programable
gica Programable
EJEMPLO: contador01.tdfAHDL
En este diseño se sintetiza un contador basado en un conjunto de 16 FF´s tipo “D” DFF.
Con el uso de sentencia IF se
sintetiza el contador con entradas de carga y habilitación además de generar la secuencia de conteo ascendente binaria usando la sentencia: “cuenta[].q + 1”
Este es un ejemplo donde se puede apreciar la “potencia” del HDL
para sintetizar lógica.
L
L
L
ó
ó
gica Programable
gica Programable
EJEMPLO: contador02.tdfAHDL
Con el empleo de la librería de componentes parametrizados (en este caso un contador) se implementa un contador binario progresivo-regresivo con reset y habilitación.
Comparado con el ejemplo anterior, se puede observar la simplicidad del código para la
implementación.
Contador binario de 4 bits sincrónico disparado por flanco ascendente y con entradas de habilitación de reloj, reset y sentido de conteo (progresivo ó regresivo)
L
L
L
ó
ó
gica Programable
gica Programable
EJEMPLO: contador03.tdfAHDL
Contador BCD de un dígito sincrónico disparado por flanco ascendente y con entradas de habilitación de reloj, reset y sentido de conteo
(progresivo ó regresivo)
Aquí se especifica que el contador sea BCD En el ejercicio anterior era LPM_MODULUS=16 para binario
L
L
ó
ó
gica Programable
gica Programable
AHDL
Las mismas excitaciones al contador nos dá la respuesta de uno del tipo BCD.
L
L
ó
ó
gica Programable
gica Programable
EJEMPLO: contador04.tdfAHDL
Este ejemplo muestra como se puede realizar una cascada sincrónica
de contadores binarios de 12 bits en total
Se emplea la entrada de habilitación para que:
contador1 sólo cuente cuando el contador0 llegue a “15”.
contador2 lo mismo pero cuando los dos
anteriores lleguen a ese mismo valor.
Idem con contador3 que debe cambiar sólo
cuando los 3 anteriores lleguen a “15” (desborde)
L
L
L
ó
ó
gica Programable
gica Programable
EJEMPLO: contador05.tdfAHDL
Lo mismo que antes excepto que es una
cascada de contadores BCD.
Aquí el desborde es luego de llegar a “9”.
El mismo resultado se llega si en el archivo anterior sólo se cambia “15” por el “9” en las
sentencias de habilitación de los contadores.
L
L
L
ó
ó
gica Programable
gica Programable
EJEMPLO: contador06.tdfAHDL
Este es un ejemplo de un divisor de frecuencia sincrónico que tiene una entrada de 8 MHz y
sale una señal de 1 KHz (divide x 8.000).
Observar que los 3
primeros contadores son BCD por lo que ya se
tiene una división x1000. El último contador es
binario de 3 bits y la salida se obtiene de Q2 donde la señal es la 8va parte del conteo que ese contador hace. En total divide x 8000.
L
L
L
ó
ó
gica Programable
gica Programable
EJEMPLO: contador07.tdfAHDL
En este ejemplo se
diseña un generador de base de tiempos BT de 1 seg de tiempo en alto y 1mseg de tiempo en bajo. La señal de entrada es un reloj de 1mseg de período. Un contador “cuenta” y un FFD “salida” componen el generador de BT.
Con la ayuda de cláusura IF se puede implementar un circuito que genere una señal asimétrica en
L
L
ó
ó
gica Programable
gica Programable
EJEMPLO: contador07.tdfAHDL
Q
DFF
D CLK Vcc GND cuenta salida salida_1seg reloj_1KHz borrar resetEsquematización de la posible síntesis que realiza el compilador La salida del BT es la del FFD “cuenta”. El contador cuenta desde “0” hasta que llega a “1000” conteos manteniendo la señal interna “borrar” en “GND”. En esas condiciones el FFD siempre copia un “1” y salida_1seg sigue en “1”.
Cuando “cuenta” alcanza el conteo “1000”, por un lado se resetea y por el otro carga a FFD con “0”. Esto dura un ciclo de reloj de 1mseg.
De esta manera “salida_1seg” quedará en “0” 1mseg y volverá a repetirse todo en los siguientes 1000 ciclos de reloj_1KHz.
L
L
L
ó
ó
gica Programable
gica Programable
EJEMPLO: contador08.tdfAHDL
Este ejemplo es un divisor de frecuencia programable que emplea un contador sincrónico de 4 bits y un MUX 4:1.
L
L
ó
ó
gica Programable
gica Programable
EJEMPLO: mux03.tdfAHDL
En nuestro ejemplo debemos sintetizar un MUX 4:1 con bus de 1 bit. LPM_SIZE=4 (4 buses de entrada)
LPM_WIDTH=1 (cada bus de 1 bit de ancho) LPM_WITHS=2 (2 líneas de selección)
En este gráfico se dá un ejemplo de un MUX 8:1 que maneja 8 buses de 24 bits cada uno.
LPM_WIDTHS=CEIL(LOG2(LPM_SIZE) es una sentencia que calcula la cantidad de líneas de selección del MUX con el dato de LPM_SIZE
L
L
L
ó
ó
gica Programable
gica Programable
EJEMPLO: alu01.tdfAHDL
Unidad Aritmético-Lógica de 4 bits
L
L
ó
ó
gica Programable
gica Programable
EJEMPLO: alu01.tdfAHDL
Parte aritmética
La ALU tiene dos relojes:uno para cargar los datos A y B y el otro que maneja al sumador parametrizado.
La parte aritmética realiza la operación “A + B” si suma_resta = 0 El diseño se basa en un sumador
parametrizado para la síntesis de la parte aritmética.
Para la parte de lógica binaria se
emplean directamente una sentencia tipo CASE con los operadores lógicos normales.
L
L
ó
ó
gica Programable
gica Programable
EJEMPLO: alu01.tdfAHDL
Parte de lógica binaria
El diseño queda definido a la salida con un MUX que selecciona si la salida de la ALU presenta el resultado de la parte aritmética ó lógica. El MUX es inferido ya que la cláusura utilizada es del tipo “IF ELSE”
Dependiendo de la entrada “sel_logica” se pueden realizar 8 funciones lógicas diferentes: AND, NAND, OR, NOR,
OR-EXCL, NOR-EXCL,
L
L
ó
ó
gica Programable
gica Programable
EJEMPLO: alu01.tdfAHDL
L
L
ó
ó
gica Programable
gica Programable
EJEMPLO: alu01.tdfAHDL
Porción de la simulación del circuito aritmético
L
L
ó
ó
gica Programable
gica Programable
EJEMPLO: alu01.tdfAHDL
Porción de la simulación de las funciones lógicas
L
L
ó
ó
gica Programable
gica Programable
AHDL
DISEÑO CON MÁQUINAS DE ESTADOS
EJEMPLO: moore01.tdf
Detector de secuencia
"1000" sin solapamiento
L
L
ó
ó
gica Programable
gica Programable
AHDL
DISEÑO CON MÁQUINAS DE ESTADOS
EJEMPLO: moore01.tdf
Detector de secuencia
"1000" sin solapamiento
L
L
ó
ó
gica Programable
gica Programable
EJEMPLO: moore02.tdfAHDL
Diseño de contador binario
progresivo-regresivo de 2 bits
DISEÑO CON MÁQUINAS DE ESTADOS
L
L
ó
ó
gica Programable
gica Programable
AHDL
DISEÑO CON MÁQUINAS DE ESTADOS
EJEMPLO: moore02.tdf
L
L
ó
ó
gica Programable
gica Programable
DISEÑO CON MÁQUINASAHDL
DE ESTADOSL
L
ó
ó
gica Programable
gica Programable
DISEÑO CON MÁQUINASAHDL
DE ESTADOSL
L
ó
ó
gica Programable
gica Programable
DISEÑO CON MÁQUINASAHDL
DE ESTADOSL
L
ó
ó
gica Programable
gica Programable
DISEÑO CON MÁQUINASAHDL
DE ESTADOSL
L
ó
ó
gica Programable
gica Programable
DISEÑO CON MÁQUINASAHDL
DE ESTADOSDiseño de un contador
de dos dígitos BCD con
salida a display
L
L
ó
ó
gica Programable
gica Programable
DISEÑO CON MÁQUINASAHDL
DE ESTADOSDiseño de un contador
de dos dígitos BCD con
salida a display
L
L
ó
ó
gica Programable
gica Programable
DISEÑO CON MÁQUINASAHDL
DE ESTADOSDiseño de un contador
de dos dígitos BCD con
salida a display
L
L
ó
ó
gica Programable
gica Programable
DISEÑO CON MÁQUINASAHDL
DE ESTADOSDiseño de un contador
de dos dígitos BCD con
salida a display
L
L
ó
ó
gica Programable
gica Programable
DISEÑO CON MÁQUINASAHDL
DE ESTADOSDiseño de un contador
de dos dígitos BCD con
salida a display
Qué es lo que se puede mejorar en el diseño del prescaler???
L
L
ó
ó
gica Programable
gica Programable
DISEÑO CON MÁQUINASAHDL
DE ESTADOSDiseño de un contador
de dos dígitos BCD con
salida a display
L
L
ó
ó
gica Programable
gica Programable
DISEÑO CON MÁQUINASAHDL
DE ESTADOSDiseño de un contador
de dos dígitos BCD con
salida a display
L
L
ó
ó
gica Programable
gica Programable
DISEÑO CON MÁQUINASAHDL
DE ESTADOSDiseño de un contador
de dos dígitos BCD con
salida a display
L
L
ó
ó
gica Programable
gica Programable
DISEÑO CON MÁQUINASAHDL
DE ESTADOSDiseño de un contador
de dos dígitos BCD con
salida a display
L
L
ó
ó
gica Programable
gica Programable
AHDL
Bibliografía:
Apuntes de teoría:
• Trabajo Final “Introducción a los Dispositivos FPGA: Análisis y Ejemplos de Diseño ”. Autor: Eduardo Bozich. Año 2005.
Libros:
• “Sistemas Digitales”. R. Tocci, N. Widmer, G. Moss. Ed. Prentice Hall. • “Diseño Digital”. M. Morris Mano. Ed. Prentice Hall. 3ra edición.
• “Digital Design:Principles & Practices”. John Wakerly. Ed. Prentice Hall. • “Fundamentos de Diseño Lógico y Computadoras”. M. Mano, C. Kime.
Ed. Prentice Hall.