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
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
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
Publicar un comentario