EL SIGUIENTE ENLACE SE TRATA DE LA PROGRAMACIÓN AHDL.





PROGRAMACION EN AHDL
SISTEMAS DIGITALES

Dra. Ma. Aurora Diozcora Vargas Treviño

ANTONIO EMMANUEL BLANCO VIDAL, 
ÁNGEL EMMANUEL OROZCO TREJO,
 EMMANUEL SALAZAR LEZAMA


INTRODUCCION
Los entornos EDA (Electronic Design Automation) o Automatización de Diseño Electrónico son unas de las herramientas comúnmente empleada en el diseño e implantación de circuitos lógicos.  esta  herramienta además son  sencillos de manejar  gracias a las interfaces graficas que incorporan las plataformas  de diseño  como : ALTERA  XILIX  que permiten la instrumentación de dichos diseños y su implantación en los PLD’s  y FPGA`
Dichas herramientas de trabajo son puestas al alcance y  con el fin de dar a conocer las últimas técnicas de diseño con una formación integral en todas ellas. Para ello y de las prácticas adquirirá los conocimientos que le permitirán manejar los dispositivos fabricados por ALTERA, junto con el soporte de software Max+plus II como principal herramienta de diseño, verificación y simulación de prácticas y proyectos en el Laboratorio de Sistemas Digitales.
El sistema de desarrollo Quartus II es una plataforma de herramientas para el diseño de circuitos digitales sobre dispositivos FPGA y CPLD de Altera. Quartus II provee aplicaciones para la entrada de diseño, síntesis lógica, simulación lógica, ubicación y conexionado, análisis temporal, administración de potencia y programación de dispositivos, junto con una variedad  y aplicaciones adicionales para el diseño lógico programable
El propósito de este reporte es presentar el uso de Quartus II, y sus características y metodologías de diseño básicas para la descripción VHDL, síntesis y simulación de circuitos digitales.
 Este reporte se elaboró  para conocer y poder  diseñar con el software y circuitos de  Altera y Xilinx  que son las programas dominantes actualmente en la industria de la lógica programable.


INICIANDO CON ALTERA MAX+PLUS
AHDL permite la descripción del hardware a través de su comportamiento (behavior), en lugar de hacerlo a través de un circuito usa ecuaciones lógicas, variables, constantes, funciones, operadores aritméticos, tablas de verdad, y expresiones condicionales, en forma similar a la de un lenguaje de software de alto nivel.Usa un archivo de texto, de extensión .tdf  está especialmente orientado para definir máquinas de estado de gran complejidad toda la descripción del comportamiento es resuelta en forma concurrente.
AHDL: secciones de un archivo .tdf
v  Título (opcional)
v   Include (opcional)
v   Constant (opcional)
v   Define (opcional)
v   Parameters (opcional)
v   Function prototype (opcional)
v   Options(opcional)
v   Assert (opcional)
v   Subdesign (necesario)
v   Variable (opcional). Puede contener:Declaraciones: Instancias, Nodos, Registros y Máquinas de estado
v  Logic (necesario). Puede contener Construcciones: Default, Assert, , Case, For_Generate, If_Generate, If_Then, y Tablas de verdad, Ecuaciones: lógicas y de control, Referencias: a funciones In_Line.

AHDL: la sección TITULO

Es un campo opcional, único, que no afecta a la descripción del hardware permite incorporar comentarios que luego serán incorporados al reporte de compilación importante a los fines de la documentación del diseño La sintaxis es:



AHDL: la sección INCLUDE
 Es un campo opcional, múltiple, permite importar texto desde otros archivos escritos en AHDL (cuya extensión por defecto es .inc) al corriente diseño para la compilación usualmente usado para incluir prototipos de funciones de menor nivel La sintaxis es:


AHDL: la sección CONSTANT
Es un campo opcional, múltiple permite definir un nombre simbólico y asociarlo a un valor constante. Posteriores usos del nombre serán remplazados por el valor constante durante la compilación La sintaxis es:





AHDL: la sección DEFINE
Es un campo opcional, múltiple permite definir una función evaluable, que devuelve un valor en base a sus argumentos el compilador evalúa las expresiones y calcula el valor numérico la expresión DEFINE no genera hardware  Ejemplo:

AHDL: la sección PARAMETERS # 1
Es un campo opcional, múltiple permite declarar parámetros que controlan la implementación de  una megafunción o macrofunción parametrizada los parámetros pueden ser nombres definidos por el usuario, o por ALTERA un parámetro puede ser usado sólo luego de ser declarado no se  permiten referencias cruzadas en la declaración se puede asignar a los parámetros valores por default el compilador busca el valor del parámetro desde la instancia de la función hasta el nivel tope. Se sigue luego por los valores de default.
AHDL: la sección PARAMETERS # 2
Ejemplo de una sección PARAMETERS:

AHDL: la sección FUNCTION PROTOTYPE
El prototipo es la descripción de una función, compuesta por:
v  nombre de la función
v  entradas
v  parámetros
v  salidas y puertas bidireccionales




AHDL: la sección SUBDESIGN
SUBDESIGN declara tipo y nombre de las puertas de un diseño .tdf comienza con SUBDESIGN seguido por el nombre del diseño, que debe ser el mismo que el del archivo .tdf  el tipo básico de las puertas puede ser INPUT, OUTPUT, y BIDIR.  Se puede usar MACHINE INPUT y MACHINE OUTPUT para importar y exportar máquinas de estado es posible asignar un valor por default de GND o VCC para las entradas en caso que no sean usadas en un nivel superior.

AHDL: la sección VARIABLE
En esta sección se declaran las variables usadas en la sección LOGIC para definir lógica interna (o buried), puede incluir las siguientes construcciones:
v  Declaración de nodos
v  Declaración de registros
v  Declaración de instancias de funciones
v  Declaración de Máquinas de estado
v Asignación de ALIAS a Máquinas de estado





Ejemplo de una sección VARIABLE

La sección VARIABLE: los nodos
AHDL acepta dos tipos de nodos: NODE y TRI_STATE_NODE son variables locales similares a las variables globales INPUT, OUTPUT o BIDIR declaradas en la sección
SUBDESIGN, en cuanto representan una línea que transporta una señal. Un nodo de tipo NODE con múltiples asignaciones junta las señales mediante funciones wired-AND o wired-OR, según los defaults sean VCC o GND, respectivamente. Un nodo de tipo TRI_STATE_NODE con múltiples asignaciones junta las señales directamente entre sí. Un nodo de este tipo con una única asignación es tratado como un nodo tipo NODE.
Ejemplo elemental de diseño con especificación de nodos:




La sección VARIABLE: instancias

Declarar una instancia de una función significa asignar recursos específicos de hardware para realizar esa función Por ejemplo, dada una función “comparar”, con prototipo:

El poner en la sección VARIABLE la instancia

define los nodos mi_comp.a[..], mi_comp.b[..] y mi_comp.igual.

La sección VARIABLE: los registros
AHDL ofrece primitivas para definir los siguientes tipos de registros: flipflops:
v  D: DFF y DFFE (con clock Enable)
v  T: TFF y TFFE
v  JK: JKFF y JKFFE
v  SR: SRFF y SRFFE- latches: LATCH. Por ejemplo, el prototipo de un flipflop D es:
v  FUNCTION DFF (d,clk,clrn,prn) RETURNS (q);  Si en la sección VARIABLE se declara: mi_ff : DFF; en la sección de lógica se podrán utilizar las entradas mi_ff.d, mi_ff.clk, mi_ff.clrn, mi_ff.prn y la salida mi_ff.q.
Se puede crear una máquina de estados declarando su nombre, sus estados, y opcionalmente sus bits. La declaración se compone de:
v  el nombre simbólico, seguido de (:) y la palabra clave MACHINE  (opcional)
v  el nombre de los bits de estado, con la frase clave OF BITS (..)
v  la lista de estados, compuesta por la frase clave WITH STATES (..) con la enumeración de los nombres simbólicos de los estados, separados por comas, con sus asignaciones opcionales.

AHDL: la sección LOGIC
Define las operaciones lógicas del .tdf se encuadra entre las palabras clave BEGIN y END; Se compone de Ecuaciones: lógicas y de control Expresiones: Case, If_Then,
Tablas de verdad, Default, If_Generate, y For_Generate Referencias: a funciones In_Line.

La sección LOGIC: operadores
La sección lógica evalúa expresiones, usando operadores y reglas de precedencia.
Las expresiones pueden ser lógicas y aritméticas.

IF..THEN versus CASE
CASE evalúa una única expresión y luego detecta su coincidencia con expresiones constantes cuyo carácter excluyente entre sí puede ser verificado por software en la compilación.
-IF…THEN evalúa varias expresiones en las sentencias IF y ELSIF.., donde la posible validez de varias expresiones fuerza a que el compilador genere hardware para impedirlo.

Como Generar un Proyecto
Para la utilización de este programa empezaremos a explicar como generar un nuevo proyecto, hacia como generar nuestro circuito integrado que es en si el objetivo de este software, empecemos a realizar un nuevo proyecto, esto es siguiendo lo siguientes pasos.
En primera parte le daremos clic a new, en donde mostrara un recuadro en la con cuatro opciones en donde escogeremos la tercera Text Editor file, donde realizaremos el código que nos realizara el circuito integrado.

En donde aparecerá la ventana de edición del programa.

Aquí empieza la edición del programa, en la edición del programa lo colocaremos de la siguiente forma.

Teniendo el código puesto el editor copilamos el código para verificar que el código esta correctamente.

Terminado de copilar buscamos en FILE y después damos clic en Create Default Symbol, el cual nos realizara un circuito integrado que veremos en el área de trabajo en grafico, esto se realiza entrando a realizar el siguiente  paso que es la generación del esquemático, esto es volviendo a realizar el mismo procedimiento de nuevo proyecto pero ahora escogiendo el Graphic Editor file.


En donde le darán doble clik al área de trabajo y buscaran el componente con el mismo nombre con que guardaron el programa realizado. Y realizaran el siguiente procedimiento para que nos que de como la siguiente figura.

Ya teniendo nuestro esquemático realizado por la programación, le colocaremos las entradas que en este caso son tres, el cual están representadas por la entrada, clk, y el reset. Estas entradas se buscan de la misma manera que colocamos nuestro esquemático dándole doble clic al área de trabajo y en búsqueda colocar input.

Y así de la misma forma colocaremos la salida, solo con la diferencia que en la búsqueda se escribirá output. Con esto conectamos todo y después les damos doble clic para cambiar el nombre tal y como lo indica nuestro esquemático.

Después de haber realizado el cambio de nombre lo guardamos en la carpeta asignada agregándole un G al final del nombre propuesto, para diferenciar uno de otro con el editor del programa. Ahora nos dirigimos a FILE, después  Set Project to Current File, volvemos a copilar para verificar que todo este bien para pasar al siguiente paso que es la simulación.

Como ya se menciono el siguiente pasó a realizar es la simulación ya guardado el documento donde se encuentra la programación y el documento donde esta el esquemático, debemos hacer un nuevo documento llamado Waveform Editor file,

Con esto nos aparecerá la siguiente ventana, en donde en la columna de la izquierda se colocaran los nombres de nuestro diseño.

Ahora para colocar los nombres de nuestro diseño le daremos clic al primer recuadro de la columna de la izquierda en donde se colocaran de la siguiente forma:
·         RESET
·         ENTRADA
·         RELOJ
·         Y por ultimo las salidas.

Al hacer  clic  les aparecerá la siguiente ventana, del cual le pondrán clic a insertar nodo
Y después de eso aparecerá la siguiente ventana.
En donde le daremos clic a List,y aparecerán en el recuadro blanco los nombres de nuestro diseño seleccionamos de acuerdo al orden ya mencionado y cliqueamos en OK, y hacia se harán repetidamente hasta colocar todos los nombres del proyecto.

Ahora para terminar el proyecto debemos guardarlo y realizar el mismo procedimiento que realizábamos para guardar y copilar el proyecto, después de a ver realizado esta operación pasamos al simulado esto es con el siguiente icono.


En donde aparecerán las siguientes ventanas.

En esta ventana solo le daremos clik a Start, y empezara a copilar para realizar la simulación, cuando termine la cerraremos y veremos los pulsos de nuestro diseño.

Y en la siguiente figura se muestra la aparición de la simulación en forma de grafica.


...................................................................................................................................................................























































Comentarios

Entradas populares de este blog