You are on page 1of 7

INTRODUCCIN AL LENGUAJE AHDL

Fundamentos de computadores Marzo 2012

Los pasos que intervienen en el proceso de desarrollo y diseo circuitos digitales utilizando el software QuartusII se listan a continuacin, en figura 1 se muestra un diagrama de flujo que ilustra su secuencia.

Descripcin Diseo (HDL, uso de IPs, esquematico.. etc). Proceso de sntesis Simulacin funcional Proceso de ruteo (Fitting) Anlisis de tiempos y simulacin (Timing) Programacin y configuracin FPGA

Figura 1

La descripcin del diseo (design entry) puede llevarse a cabo de diferentes formas, por ejemplo introduciendo un esquema del diseo. Otra opcin es utilizar un lenguaje de descripcin de hardware HDL, tal como: VHDL, Verilog o AHDL. AHDL (sigla en ingls de "Altera Hardware Description Language", Lenguaje de Descripcin de Hardware de Altera) es un lenguaje de descripcin de hardware (HDL) propietario de Altera Corporation para la programacin de FPGAs, en este tutorial se intenta abordar los aspectos bsicos del lenguaje. En AHDL el diseador primero debe tener en mente un circuito y su funcionalidad, a continuacin traduce esta idea de alto nivel en una descripcin completa del hardware que desea implementar. Las instrucciones del lenguaje AHDL son similares a las de lenguaje de programacin como C/C++. Sin embargo, HDL no se debe confundir con lenguajes de descripcin de software ya que son paradigmas diferentes. Cuando se hace un programa en AHDL se esta describiendo HARDWARE que ser sintetizado e implementado en una FPGA. Mientras que, cuando se escribe un programa con C/C++, este ser compilado y ejecutado en un microprocesador.

CUERPO DE UNA ARQUITECTURA AHDL


Cree un proyecto en el quartusII (CycloneII, EP2C35F672C6). NewDesign Files AHDL file Escriba el bloque de cdigo listado en la figura 2a. Guarde el archivo como testAHDL. (note que el programa asigna la extensin .tdf) Compile (Si hay algn error verifique errores de escritura)

Figura 2a

Figura 2b

El cuerpo de una descripcin AHDL costa de dos bloques obligatorios como muestra la figura 2b: el SUBDISEO y la seccin lgica o ARQUITECTURA, de manera opcional se puede agregar un tercer bloque VARAIBLES, se ver su utilidad ms adelante. El sub-diseo esta acotado por unos parntesis. Mientras que la arquitectura est delimitada por las palabras BEGIN y END. En el sub-diseo se especifica el nmero y nombre de seales de entrada y salida, as como el nombre de la arquitectura. En general toma la forma: SUBDESIGN nombre( entrada1, entrada2 entradaN :INPUT; :OUTPUT;

salida1, salida2, salidaN )

Para indicar el inicio del sub-diseo se usa la palabra SUBDESIGN seguida del nombre de la arquitectura nombre, esta puede ser cualquiera pero debe coincidir con el nombre del archivo que contiene el programa AHDL (sin la extensin .tdf). A continuacin se especifica las entradas y las salidas del diseo, esta descripcin debe estar entre parntesis. En la arquitectura se define la funcionalidad del dispositivo. Por ejemplo, en el caso de la figura 2 se ha indicado que se realizan las operaciones lgicas AND y OR entre las entradas a0 y a1. El resultado de estas operaciones se asigna a las salidas sAND y sOR. La arquitectura se escribe entre BEGIN y END;

BEGIN -Descripcin AHDL del diseo

END;

Una vez compilado el modulo AHDL se puede visualizar el resultado de la descripcin AHDL, es decir, podemos ver lo que el compilador ha sintetizado. Esto se realiza a travs de las herramientas del QuartusII, tal y como se muestra en la figura 3a. El resultado de este proceso se muestra en la figura 3b.

ToolNetlist ViewersRTL Viewer

Figura 3a

Figura 3b

OPERADORES EN AHDL
Parte fundamental de la arquitectura son los operadores, durante el proceso de compilacin un operador AHDL es sustituido por su correspondiente modulo lgicos de alteras, (LMP functions, registro, adders etc). En las siguientes tablas se listan los operadores que se utilizaran en AHDL: Descripcin NOT AND NAND OR NOR XOR XNOR XNOR Smbolo ! & !& # !# $ !$ !$ Ejemplo s=!a; s=a&b; s=a!&b; s=a#b; s=a!#b; s=a$b; s=a!$b; s=a!$b; Descripcion Suma Resta Igualdad diferente Menor Menor o igual Mayor Mayor o igual smbolo + == != < <= > >= Ejemplo s[]=a[]+b[] s[]=a[]-b[]; a==b a!=b a <b a <=b a>b a>=b

A continuacin se muestran ejemplos que ilustran el uso adecuado de los operadores en AHDL, compile y verifique estos ejemplos. Sobre todo, asegrese de entenderlos. Ejemplo operadores lgicos:

Los operadores de comparacin se utilizan con la sentencia IF-ELSIF-ELSE. El compilador cambia el operador de comparacin por su modulo lgico, en este caso un LESS_THAT

AHDL cuenta con la sentencia CASE-WHEN con la cual se pueden implementar fcilmente decodificadores o dispositivos similares.

Con la sentencia tabla se pueden implementar fcilmente tablas de verdad, el software aplica sus algoritmos de simplificacin.

CAMPO VARIABLES
Como se mencion al inicio AHDL cuenta con un bloque opcional para la declaracin de variables, en el campo VARIABLE se puede declarar cualquiera de las siguientes construcciones: Instancias (Megafunciones, LMPs), Nodos, Registros, Maquinas de estados. Ejemplos VARIABLE:

La variable a_equals_2 de tipo NODE acta como una conexin, el nodo es resaltado con color rojo en la imagen.

La variable ff[7..0] es de tipo DFFE, (un registro de 8 bits). Con el operador punto ., se accede a las Entradas/salidas del la instancia de registro ff.

Note que, el nodo sadd[7..0] y sreg[7..0] funcionan como simples conexiones de bus. Observe que el orden de las conexiones no altera el diseo, las sentencias de AHDL deben pensarse como uniones que se realizan todas al mismo tiempo (en forma concurrente)

VARIABLES MAQUINA DE ESTADOS Consideremos la mquina de estados compuesta de los estados OFF y ON, con E como entrada y S salida: Cada estado es representado con un crculo y un nombre, en este caso los estados son OFF y ON. Bajo el nombre se describe el valor de las salidas en dicho estado, en este caso el estado OFF produce una salida 0, mientras que en el estado ON produce 1. Cada flecha indica las transiciones

Tabla lgica de estados:


E 0 1 0 1 Est. Actual OFF OFF ON ON Est. Siguiente OFF ON ON OFF S 0 1 1 1

entre estados. El nmero que acompaa a cada flecha corresponde al valor de entrada que hace que ocurra un cambio de estado. Por ejemplo, para pasar del estado OFF al ON es necesario que la entrada este en 1, por consiguiente vemos que la flecha que conecta OFF con ON tiene un uno.

Diagrama de estado:

En AHDL una maquina de estados se instancia como una variable tipo MACHINE, seguido de WITH STATES (stado0, estado1, estado2, ,estadoN) que pretende describir el conjunto de estados. Descripcin AHDL de una maquina de estados (ejemplo anterior), Compile y ejecute el siguiente comando: ToolNetlist ViewersState machine Viewer

Haciendo click en las transiciones del diagrama de estado, en la tabla de transiciones se resalta la transicin y la correspondiente condicin. Verifique la pestaa nombrada como encoding, si bien en AHDL el nombre de los estados son palabras (off, on, s0, s1 etc), al final corresponden a un cdigo binario que se muestra en dicha tabla.

Cmo editar las formas de onda para la simulacin de la mquina de estados? Qu valores deben tomar las entradas clk y reset?

reset: cuando esta seal se activa , la mquina de estados va a su estado cero o inicial. En este caso el reset es activo bajo, es decir se activa con un cero. clk: seal de reloj obligatoria en toda mquina secuencial. El periodo mnimo de esta seal depende de los tiempos de propagacin del circuito entre otros. Afortunadamente QuartusII nos entrega el periodo mnimo de operacin del circuito secuencial sintetizado Clock Setup: clk. En la figura contigua se muestra el reporte de tiempos con los tiempos relevantes de nuestra simulacin.

Tco (clock to output delay): Tiempo en que tarda una seal en propagarse a la salida, despus de que ha ocurrido el flanco de reloj Tsu (clock setup time): Tiempo que debe mantenerse una seal a la entrada del registro antes del flanco de reloj. Th (clock hold time ): Tiempo que debe mantenerse una seal a la entrada del registro despus del flanco de reloj. Clock Setup: clk: Periodo mnimo o frecuencia mxima de operacin de la mquina de estados.

En el archivo de simulacin se debe adicionar las seales de entrada, reser y clk, adems de las salidas (a las salidas no debe asignrseles ningn valor). Adems se puede agregar el registro de la mquina de estados, es decir, el que contiene el estado actual (realizando una bsqueda en la ventana Node Finder aparecer con una R, de forma similar a la I y O de las entradas y salidas). A continuacin se muestra el resultado de la simulacin, note que se ha resaltado con rojo cuando la entrada causa un cambio de estado. El periodo durante el cual la maquina permanece en reset se ha resaltado con azul, durante este tiempo el reset est activo bajo y la maquina permanecer en estado OFF=0 y la salida es s=0.

Figura 4.

You might also like