Sistemas digitales II
VHDL
Ingeniería Electrónica | UNSAAC
1
INDICE
1.-Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1.-Brebe reseña histórica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.-Definiciones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.1.-HDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2.-VHDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2.1.-Definición . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2.2.-Ventajas y limitaciones . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.-Lenguaje VHDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.1.-Aspectos generales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.2.-Estilos de descripción en VHDL . . . . . . . . . . . . . . . . . . . . . . . 6
3.2.1.-Descripción algorítmica . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.2.2.-Descripcion flujo de datos . . . . . . . . . . . . . . . . . . . . . . 9
3.2.3.-Descripción estructural . . . . . . . . . . . . . . . . . . . . . . . . . .10
3.3.-Sintaxis y semántica básica de VHDL . . . . . . . . . . . . . . . . . .11
3.3.1.-Entidad VHDL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11
3.3.2.-Arquitectura VHDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15
4.-Ejemplos aplicativos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18
4.1.-Sumador completo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.2.-Flip-Flop JK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.3.- Descodificador de 7 segmentos . . . . . . . . . . . . . . . . . . . 20
5.-Anexos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .21
6.-Bibliografía . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Sistemas digitales II
VHDL
Ingeniería Electrónica | UNSAAC
2
I.-Introducción
Breve reseña histórica
A mediados de los años sesenta se produce una fuerte evolución en los
procesos de fabricación de los circuitos integrados, y junto a las
tecnologías bipolares, surgen la MOS, principalmente la NMOS,
promoviendo el desarrollo de circuitos digitales hasta la primera mitad de
los ochenta.
En aquellas épocas, el esfuerzo de diseño se concentraba en los niveles
eléctricos de establecer características e interconexiones entre los
componentes básicos a nivel de transistor. El proceso de diseño era
altamente manual y tan solo se empleaban herramientas como el PSPICE,
para la simulación de esquemas eléctricos con modelos previamente
personalizados, a las distintas tecnologías.
A medida que pasaban los años, los procesos tecnológicos se hacían más
y más complejos. Los problemas de integración iban en aumento y los
diseños eran cada vez más difíciles de depurar y de dar mantenimiento.
Inicialmente los circuitos M.S.I.y L.S.I. se diseñaron medianamente la
realización de prototipos basados en módulos más sencillos. Cada uno de
estos módulos estaba formado por puertas ya probadas, este método
poco a poco, iba quedándose obsoleto. En ese momento (finales de los
años sesenta) se constata el enorme desfase entre tecnología y diseño.
La considerable complejidad de los chips que se pueden fabricar, implica
unos riesgos y costes de diseño desmesurados e imposibles de asumir por
las empresas. Es entonces, cuando diversos grupos de investigadores
empiezan a crear y desarrollar los llamados “lenguajes de descripción de
hardware” con sus características diferentes.
Empresas tales como IBM con su IDL, el TI-HDL de Texas Instruments, ZEUS de
General Electric, etc., así como los primeros prototipos empleados en las
universidades, empezaron a desarrollarse buscando una solución a los
problemas que presentaba el diseño de los complejos sistemas.
Sistemas digitales II
VHDL
Ingeniería Electrónica | UNSAAC
3
Sin embargo, estos lenguajes nunca alcanzaron el nivel de difusión y
consolidación necesarias por motivos distintos. Unos, los industriales, por ser
propiedad de la empresa permanecieron encerrados en ellas y no
estuvieron disponibles para su estandarización y mayor difusión, los otros,
los universitarios, perecieron por no disponer de soporte ni mantenimiento
adecuado.
Alrededor de 1981 el departamento de Defensa de los Estados Unidos
desarrolla un proyecto llamado VHSIC (Very High SpeedIntegratedCircuit)
su objetivo era rentabilizar las inversiones en hardware haciendo más
sencillo su mantenimiento. Se pretendía con ello resolver el problema de
modificar el hardware diseñado en un proyecto para utilizarlo en otro, lo
que no era posible hasta entonces porque no existía una herramienta
adecuada que armonizarse y normalizarse dicha tarea, era el momento de
los HDL‟s.
VHDL vs M.S.I.
En 1983, IBM, Intemetricsy Texas Istruments empezaron a trabajar en el
desarrollo de un lenguaje de diseño que permitiera la estandarización,
facilitando con ello, el mantenimiento de los diseños y la depuración de los
algoritmos, para ello el IEEE propuso su estándar en 1984.
Tras varias versiones llevadas a cabo con la colaboración de la industria y
de las universidades, que constituyeron a posteriori etapas intermedias en
el desarrollo del lenguaje. El IEEE adoptó en diciembre de 1987 a VHDL
como su lenguaje HDL, dando un impulso a éste frente a sus competidores.
El estándar IEEE std 1076-1987 que constituyó el punto firme de partida de
lo que después de cinco años sería ratificado como VHDL.
La independencia en la metodología de diseño, en el proceso de
fabricación, su versatilidad para la fabricación de sistemas de complejas,
su posibilidad de reutilización, han hecho que VHDL se convierta con el
paso del tiempo en el lenguaje de descripción de hardware por
excelencia.
Sistemas digitales II
VHDL
Ingeniería Electrónica | UNSAAC
4
II.-Definiciones
2.1.-HDL.-Los lenguajes de descripción hardware (HDLs, Hardware
DescriptionLanguages) permiten modelar sistemas digitales
completos.Mediante herramientas de software estos modelos
pueden luego “sintetizarse” para implementarlos como circuitos
reales.La utilización de HDLs y su posterior síntesis pueden tener como
objetivo la creación de un circuito integrado de propósito específico
(ASICs) o la implementación del circuito en algún dispositivo de
lógica programable (PLD‟s).
Al utilizar un HDL es importante tener en cuenta que se está
modelando hardware, y no escribiendo software.Existen varios HDLs
pero dos son los que predominan: Verilog y VHDL.
2.2.-VHDL
2.2.1.-Definición.- El significado de las siglas VHDL es VHSIC (Very High
SpeedIntegratedCircuit) Hardware DescriptionLanguage, es decir,
lenguaje de descripción hardware de circuitos integrados de muy
alta velocidad. VHDL es un lenguaje de descripción y modelado,
diseñado para describir, es una forma en que los humanos y
máquinas puedan leer y entender la funcionalidad y la organización
de sistemas hardware digitales, placas de circuitos y componentes.
VHDL fue diseñado como un lenguaje para el modelado y
simulación lógica dirigida por eventos de sistemas digitales, y
actualmente se utiliza también para síntesis automática de circuitos.
VHDL es un lenguaje con una sintaxis amplia y flexible que permite
el modelado estructural, en flujo de datos y de comportamiento de
hardware. VHDL permite el modelado preciso, en distintos estilos, del
comportamiento de un sistema digital conocido y desarrollado en
modelos de simulación.
Uno de los objetivos del lenguaje VHDL es el modelado. Modelado es
el desarrollo de un modelo para la simulación de un circuito o
Sistemas digitales II
VHDL
Ingeniería Electrónica | UNSAAC
5
sistema previamente implementado cuyo comportamiento, por
tanto, se conoce. El objetivo de modelado es la simulación.
2.2.2.-Ventajas y limitaciones.-La síntesis a partir de VHDL constituye
hoy en día una de las principales aplicaciones del lenguaje con una
demanda de uso. Las herramientas de síntesis basadas en el
lenguaje permiten en la actualidad ganancias importantes en la
productividad de diseño.
Algunas ventajas del uso de VHDL para la descripción de hardware
son:
VHDL permite diseñar, modelar y comprobar un sistema desde
un alto nivel de abstracción bajando hasta el nivel de
definición estructural de puertas.
Circuitos descritos utilizando VHDL, siguiendo unas guías para
síntesis, pueden ser utilizados por diversas herramientas de
síntesis para crear e implementar circuitos.
Los módulos creados en VHDL pueden utilizarse en diferentes
diseños, lo que permite la reutilización del código. Además, la
misma descripción puede utilizarse para diferentes tecnologías
sin tener que rediseñar todo el circuito.
Al estar basado en un estándar (IEEE std 1076-1987, IEEE std
1076-1993) los ingenieros de toda la industria de diseño pueden
usar este lenguaje para minimizar errores de comunicación y
problemas de compatibilidad.
VHDL permite diseño Top-Down, esto es, describir (modelar) el
comportamiento de los bloques de alto nivel, analizarlos
(simularlos) y refinar su funcionalidad en alto nivel requerida
antes de llegar a niveles más bajos de abstracción de la
implementación del diseño.
Modularidad: VHDL permite dividir o descomponer un diseño
hardware y su descripción VHDL en unidades más pequeñas.
Alguna de las limitaciones que presenta el uso de VHDL son:
No permite describir sistemas analógicos. Sin embargo ya se
están desarrollando versiones analógicas y mixtas.
Sistemas digitales II
VHDL
Ingeniería Electrónica | UNSAAC
6
No existe un estilo de descripción normalizado. Para síntesis se
requiere ajustar los estilos disponibles a la capacidad de
herramientas CAD.
Es posible sintetizar lógica solo de un subconjunto del lenguaje.
Las herramientas de síntesis no soportan los mismos
subconjuntos, y existen a veces diferencias al mudar de
herramientas.
3.-Lenguaje VHDL
3.1.-Aspectos generales
El VHDL va a ser interesante puesto que va a permitir dos tipos de
descripciones:
Estructura:VHDL puede ser usado como un lenguaje de netlistnormal y
corriente y corriente donde se especifican por un lado los componentes
del sistema y por otro sus conexiones.
Comportamiento: VHDL también se puede utilizar para la descripción
comportamental o funcional de un circuito. Esto es lo que distingue de un
lenguaje de Netlist. Esto es especialmente útil en simulación, ya que
permite simular un sistema sin conocer su estructura interna.
Muchas veces la descripción comportamental se divide a su vez en dos,
dependiendo del nivel de abstracción y del modo en que se ejecutan las
instrucciones. Estas dos formas comportamentales de describir circuitos son
las de flujo de datos y algorítmica.
3.2.-Estilos de descripción en VHDL
VHDL presenta tres estilos de descripción de circuitos dependiendo del
nivel de abstracción. El menos abstracto es una descripción puramente
estructural. Los otros dos estilos representan una descripción
comportamental o funcional, y la diferencia viene de la utilización o no de
la ejecución serie.
Mediante un sencillo ejemplo, que además sirve para ilustrar la forma en
que se escriben descripciones en VHDL, se van a mostrar estos tres estilos
de descripción.
Sistemas digitales II
VHDL
Ingeniería Electrónica | UNSAAC
7
Ejemplo 3.1Describir en VHDL un circuito que multiplexe dos líneas de
entrada (a y b)de un bit, a una sola línea (salida) también de un bit; la
señal selec sirve para seleccionar la línea a(selec=’0’) o b(selec=’1’).
En la fig. 6 se muestra el circuito implementado con puertas lógicas que
realiza la función de multiplexación.
Fig. 6 Ejemplo básico de un esquema en VHDL
3.2.1.-Descripción algorítmica
La sintaxis del VHDL no es sensible a mayúsculas, por lo que se puede
describir como se prefiera. A lo largo de las explicaciones se pondrán
siempre las palabras clave del lenguaje en mayúsculas para distinguirlas de
las variables y otros elementos. Esto no significa que durante la descripción
de diseños se tenga que hacer así, de hecho resulta más rápido escribir
siempre en minúsculas.
En primer lugar, sea el tipo de descripción que sea, hay que definir el
símbolo o entidad del circuito. En efecto, lo primero es definir las entradas y
salidas del circuito, es decir, la caja negra que lo define. Se llama entidad
por que la sintaxis de VHDL esta parte se declara con la palabra clave
ENTITY. Esta definición de entidad, que suele ser la primera parte de toda
la descripción VHDL, se expone a continuación:
-- Los comentarios empiezan con dos guiones
ENTITY mux IS
Sistemas digitales II
VHDL
Ingeniería Electrónica | UNSAAC
8
PORT (a: IN bit;B:IN bit;
C: IN bit;
Salida: OUT bit);
ENDmux;
Ésta porción del lenguaje indica que la entidad mux (que es el nombre
que se le ha dado al circuito) tiene tres entradas de tipo bit y una salida
también de tipo bit. Simplemente indica un línea que puede tomar
valores „0‟ ó „1‟.
La entidad de un circuito es única. Sin embargo, se mostró que un mismo
símbolo, en este caso entidad, podía tener varias vistas, que en el caso de
VHDL se llaman arquitecturas. Cada bloque de arquitectura, que es donde
se describe el circuito, puede ser una representación diferente del mismo
circuito. Por ejemplo, puede haber una descripción estructural y otra
comportamental, ambas son descripciones diferentes, pero ambas
corresponden al mismo circuito, símbolo, o entidad. Se muestra a
continuación la descripción comportamental del multiplexor:
ARCHITECTURE comportamental OF mux IS
BEGIN
PROCESS(a,b,selec)
BEGIN
IF (selec='0') THEN
salida<=a;
ELSE
salida<=b;
END IF;
END PROCESS;
END comportamental;
Más adelante se verá lo que hace un bloque PROCESS, de momento, y
como primera aproximación, se considerará que es una especie de
subrutina cuyas instrucciones se ejecutan secuencialmente cada vez que
alguna de las señales de la lista sensible cambia. Esta lista sensible es una
lista de señales que suele poner junto a la palabra clave PROCESS, y en el
caso del ejemplo es (a, b, selec).
Sistemas digitales II
VHDL
Ingeniería Electrónica | UNSAAC
9
Esta descripción comportamental es muy sencilla de entender, ya que
sigue una estructura parecida los lenguajes de programación
convencionales. Es por lo que se dice que se trata de una descripción
comportamental algorítmica. Lo que se está indicando es simplemente
que si la señal selec es cero, entonces la salida es la entrada a, y si selec es
uno, entonces la salida es la entrada b. Esta forma tan sencilla de describir
el circuito permite a ciertas herramientas sintetizar el diseño a partir de una
descripción comportamental como la que se acaba de mostrar. La
diferencia con un Netlist es directa: en una descripción comportamental
no se están indicando ni los componentes ni sus interconexiones, sino
simplemente lo que hace, es decir, su comportamiento o funcioamiento.
3.2.2.-Descripcion flujo de datos.- La descripción anterior era puramente
comportamental, de manera que con una secuencia sencilla de
instrucciones se podría describir el circuito. Naturalmente, a veces resulta
más interesante describir el circuito de forma que esté más cercano a una
posible realización física del mismo. En ese sentido VHDL posee una forma
de describir circuitos que además permite la paralelización de
instrucciones, y que se encuentra más cercana a una descripción
estructural del mismo, siendo todavía una descripción funcional. A
continuación se muestran dos ejemplos de una descripción concurrente,
también llamada de flujo de datos o de transferencia entre registros:
ARCHITECTURE flujo1 OF mux IS
SIGNALnosel,ax,bx:bit;
BEGIN
nosel<=NOTselec;
ax<=a ANDnosel;
bx<=b ANDselec;
salida<=ax ORbx;
END flujo1;
ARCHITECTURE flujo2 OF mux IS
BEGIN
salida<=a WHENselec='0' ELSE
b;
END flujo2;
En la descripción de la izquierda hay varias instrucciones todas ellas
concurrentes, es decir, se ejecutan cada vez que cambia alguna de las
señales que intervienen en la asignación. Este primer caso es casi una
descripción estructural, ya que de alguna manera se están describiendo
las señales (cables) y los componentes que la definen; aunque no es
Sistemas digitales II
VHDL
Ingeniería Electrónica | UNSAAC
10
estructural, ya que en realidad se trata de asignaciones a señales y no una
lista de componentes y conexiones. El segundo caso (derecha) es también
una descripción de flujo de datos, aunque basta una única instrucción de
asignación para definir el circuito.
3.2.3.-Descripción estructural.- Aunque no es la característica más
interesante del VHDL, también permite ser usado como Netlist o lenguaje
de descripción de estructura. En este caso esta estructura también estaría
indicada dentro de un bloque de arquitectura, aunque la sintaxis interna es
completamente diferente:
ARQUITECTURAestructuraOF mux IS
SIGNALax,bx,nosel:bit;
BEGIN
u0:ENTITYinvPORT MAP(e=>selec,y=>nosel);
u1:ENTITY and2 PORT MAP(e1=>a,e2=>nosel,y=ax);
u2:ENTITY and2 PORT MAP(b,selec,bx);
u3:ENTITY or2 PORT MAP(e1=>ax,e2=>bx,y=salida);
END estructura;
Se observa fácilmente que esta descripción es un poco más larga u mucho
menos clara que las anteriores. En el cuerpo de la arquitectura se hace lo
que en un Netlist normal, es decir, se ponen los componentes y sus
interconexiones. Para los componentes se utilizarán entidades que estarán
definidas en alguna biblioteca, y para las conexiones se usarán señales
que se declararán al principio de la arquitectura.
Al igual que ocurre en cualquier netlis, las señales o conexiones deben
tener un nombre. En el esquema se le han puesto nombres a las líneas de
conexión internas al circuito. Estas líneas hay que declararlas como SIGNAL
en el cuerpo de la arquitectura y delante del BEGIN. Una vez declaradas
las señales que intervienen se procede a conectar entre sí las señales y
entidades que representan componentes. Para ello la sintaxis es muy
simple. Lo primero es identificar y poner cada componente, que es lo que
comúnmente se conoce como replicación, es decir, asignarle a cada
componente concreto un símbolo. En este ejemplo se le ha llamado u a
cada componente y se le ha añadido un número para distinguirlos, en
Sistemas digitales II
VHDL
Ingeniería Electrónica | UNSAAC
11
principio el nombre puede ser cualquier identificador válido y la única
condición es que no haya dos nombres iguales. A continuación del
nombre viene la entidad correspondiente al componente, que en este
caso puede ser una and2, una or2 o una puerta inversora inv. Después se
realizan las conexiones poniendo cada señal en su lugar correspondiente
con las palabras PORT MAP. Así los dos primeros argumentos en el caso de
la puerta and2 son las entradas, y el último es la salida. De esta forma tan
simple se va creando el netlisto definición de la estructura.
3.3.-Sintaxis y semántica básica de VHDL
Los circuitos digitales realizan operaciones (sumas, comparaciones,
cuentas, almacenamiento, etc.) sobre señales digitales utilizando una
combinación de puertas lógicas, registros, memorias y dispositivos de
entrada y salida. VHDL provee varios tipos de datos, operadores y
sentencias para modelar el funcionamiento del circuito lógico y
representar sus señales y componentes.
Una descripción de un circuito en VHDL se hace en dos partes claramente
definidas para separar la interfaz del circuito lógico (entidad) de la
implementación de la función lógica (arquitectura). Toda descripción
circuital en VHDL consta de una única entidad y de una o más
arquitecturas. Puede existir más de una arquitectura para una entidad
porque usualmente es posible definir varias soluciones para una función
lógica.
3.3.1.-Entidad VHDL.-La entidad (ENTITY) es un bloque que define la
configuración de las entradas y salidas del circuito, es decir, especifica
su interfaz o la manera en que el circuito puede ser usado o conectado a
otros circuitos. También sirve para definir parámetros del circuito
(números de bits, límites de cuentas). La sintaxis de una entidad es:
Sistemas digitales II
VHDL
Ingeniería Electrónica | UNSAAC
12
Una entidad puede contener dos secciones: GENERIC y PORT. En la
primera sección podemos colocar parámetros del diseño, y en PORT se
identifican los puertos de interfaz del circuito. Cada puerto es una señal
que tiene nombre (identificador de la señal), modo de conexión y tipo de
dato.
En las descripciones VHDL es indiferente utilizar letras mayúsculas o
minúsculas, a excepción de los valores constantes que usualmente se
deben colocar en mayúsculas. Los comentarios se insertanen cada línea
escribiendo primero dos guiones seguidos (--).
MODOde las señales
Existen cuatro modos de interconexión de las señales con el medio exterior:
IN La señal es una entrada al circuito. No puede ser escrita, es decir, a esta
señal no se le puede asignar un valor, solamente puede ser leída y
utilizada como operando en funciones internas.
OUT Salida únicamente. La señal sale del circuito. A esta señal se le puede
asignar un valor pero no puede ser leída o utilizada como operando en
funciones internas.
INOUT La señal es bidireccional, es decir, de entrada y salida. Puede ser
leída y escrita.
BUFFER Salida que puede ser utilizada como operando en el circuito,
es decir, puede formar parte de expresiones para asignar a otras señales
en el circuito.
Sistemas digitales II
VHDL
Ingeniería Electrónica | UNSAAC
13
TIPOS DE DATOS
Los tipos de datos utilizados para síntesis en VHDL son INTEGER, BIT,
BIT_VECTOR, STD_LOGIC y STD_LOGIC_VECTOR. Además VHDL provee
operadores y tipos de datos para documentación y simulación tales como
REAL y TIME.
INTEGER Se utiliza con números enteros.
BIT Puede contener '0' ó '1' (se usa comilla simple).
BIT_VECTOR Puede contener un bus, vector o grupo de datos de tipo
BIT. Las constantes de este tipo se especifican con una
cadena de ceros y unosencerrados entre comillas dobles
como en "00101101", "0101", "00".
STD_LOGIC Tiene los valores '0', '1', '–', 'Z' y 5 otros valores más no utilizando
para síntesis lógica. El valor '–' es de no importa y 'Z' (en
mayúscula) esvalor de tres estados.
STD_LOGIC_VECTOR El tipo es un bus de datos STD_LOGIC.
Los tipos STD_LOGIC y STD_LOGIC_VECTOR se prefieren en el ámbito
industrial. Para utilizar estos tipos es necesario insertar el paquete
std_logic_1164 de la biblioteca IEEE.
Para manejar buses, grupos de bits, se emplea BIT_VECTOR o
STD_LOGIC_VECTOR. En general, un bus de N bits puede ser declarado de
varias maneras:
BIT_VECTOR(N – 1 DOWNTO 0)
BIT_VECTOR(N DOWNTO 1)
BIT_VECTOR(1 TO N)
BIT_VECTOR(0 TO N – 1)
BIT_VECTOR(10 TO N + 9)
BIT_VECTOR(N + 19 DOWNTO 20)
Sistemas digitales II
VHDL
Ingeniería Electrónica | UNSAAC
14
Ejemplos de entidades
OR de dos entradas de tipo STD_LOGIC (requiere el paquetestd_logic_1164
de la bibliotecaIEEE)
AND de N entradas de tipo BIT. La salida s es la función AND de todos los
bits de la señal a.
Multiplexor de dos canales de cuatro bits cada uno. Las señales a y b son
buses de datos de tipo STD_LOGIC_VECTOR. La señal s es el selector, f es la
salida del multiplexor.
Sistemas digitales II
VHDL
Ingeniería Electrónica | UNSAAC
15
3.3.2.-Arquitectura VHDL.-En la arquitectura se define elfuncionamiento del
circuito lógico declarado en la entidad. Es posiblecrear varias formas de
un circuito lógico y para ello una entidad puede tener asociadas
varias arquitecturas. De este modo podemos tener opciones de diseño
para solucionar un mismo problema.
Su sintaxis básica es:
Las sentencias más utilizadas en la definición de circuitos son la
asignación directa, la asignación selectiva, la asignación condicional, el
proceso y la instanciación de componentes. Estas sentencias son
concurrentes entre sí, es decir, no importa el orden en que aparezcan en la
descripción.
Las señales internas del circuito se declaran en la arquitectura con un
nombre y un tipo de dato.
A continuación se muestran dos versiones de modelado para una función
AND de dos entradas. Una versión emplea datos de tipo BIT y la otra
emplea datos de tipo STD_LOGIC. La salida s se defineen la arquitectura
como el resultado de la operación AND de las entradas a y b. Note
que para asignar a una señal una expresión se utiliza el signo < seguido del
signo =.
Sistemas digitales II
VHDL
Ingeniería Electrónica | UNSAAC
16
And2x con BIT
And2x con STD_LOGIC
Operadores
Los operadores sirven para realizar las funciones lógicas y aritméticas del
circuito.
Los datos de tipo INTEGER se pueden sumar (+) y restar (-). También es
posible multiplicarlos (*).Los datos de tipos STD_LOGIC y
STD_LOGIC_VECTOR pueden sumarse y restarse usando paquetes de la
biblioteca IEEE.
Los datos de tipo INTEGER, BIT, BIT_VECTOR, STD_LOGIC y
STD_LOGIC_VECTOR pueden ser comparados con los operadores
relacionales igual (=), diferente (/=), menor (<), menor o igual (<=), mayor
(>), mayor o igual (>=).
Los operadores lógicos son AND, OR, NOT, NAND, NOR y XOR. Se utilizan
con los tipos de datos BIT, BIT_VECTOR, STD_LOGIC y STD_LOGIC_VECTOR.
Sistemas digitales II
VHDL
Ingeniería Electrónica | UNSAAC
17
Buses
Los buses se utilizan frecuentemente en el diseño digital. Por ejemplo, si f es
una señal interna de un circuito de 3 bits, podríamos declararla en la
arquitectura, antes de BEGIN, como:
SIGNAL f: BIT_VECTOR(2 DOWNTO 0);
De esta manera, f es una señal de tres bits con el bit más significativo
identificado como f(2), el bit intermedio como f(1) y el bit menos
significativo como f(0). En el cuerpo de la arquitectura, después de
BEGIN, a f puede asignársele un valor como "110" así:
f <= "110";
Lo que es equivalente a hacer tres asignaciones:
f(0) <= '0'; f(1) <= '1'; f(2) <= '1';
Si queremos agrupar tres señales binarias en una sola señal podemos
utilizar el operador de concatenación &. Así, si se declara:
SIGNAL a, b, c: STD_LOGIC;
Entonces la asignación:f <= a & b & c;es equivalente a:
f(2) <= a;
f(1) <= b;
f(0) <= c;
También podemos hacer agrupaciones compuestas. Si r es una señal
de ocho bits y t de 1 bit, podemos agrupar en x algo complejo como:
x <= '0' & r & "01" & t;
En este caso x debe haber sido definido como un bus de 1 + 8 + 2 + 1 =
12 bits. Note que los valores constantes de bits van entre comillas
simples ('1', '0') y los valores de buses van entre comillas dobles ("01",
"110").
Sistemas digitales II
VHDL
Ingeniería Electrónica | UNSAAC
18
4.-Ejemplos aplicativos:
4.1.-Sumador completo
Sistemas digitales II
VHDL
Ingeniería Electrónica | UNSAAC
19
4.2.-Flip-Flop JK
Flip-Flop JK activado por flanco positivo:
Sistemas digitales II
VHDL
Ingeniería Electrónica | UNSAAC
20
4.3.- Descodificador de 7 segmentos
Salidas activas en baja
Salidas activas en alta
Sistemas digitales II
VHDL
Ingeniería Electrónica | UNSAAC
21
5.-Anexos
Tabla de operadores
Sistemas digitales II
VHDL
Ingeniería Electrónica | UNSAAC
22
Herramientas
Warp
Altera
Xilinx
ActiveVHDL
GHDL (GNU)
Max+Plus II
Quartus II
ModelSim/ISE
Otros programas están incluyendo en sus últimas versiones la capacidad
de programar FPGA usando sus propios lenguajes, pero también incluyen
módulos en VHDL, por ejemplo Protel DXP, Labview o Matlab.
-Fabricantes de FPGA
Actel
Altera - Max Plus II, Quartus II
Atmel
Cypress
Lattice
QuickLogic
Xilinx - ISE, Modelsim
Sistemas digitales II
VHDL
Ingeniería Electrónica | UNSAAC
23
-Fabricantes de herramientas
Aldec-ActiveVHDL
GHDL
IEEE
IEEE estándar 1164
Sintaxis de la revisión del 93
Synplicity. Herramientas de síntesis física y verificación de diseño
Mentor Graphics. Herramientas de síntesis física, simulación y otras
relacionadas con diseño microelectrónico, sistemas embebidos, diseño de
PCB, etc.
6.-Bibliografía
• VHDL: Lenguaje para síntesis y modelado de circuitos, Fernando
Pardo, José A. Boluda.
• Tutorial VHDL, Arturo J. Miguel de Priego Paz Soldán.
• Diseño Digital con Lógica Programable y Lenguajes de Descripción
de Hardware, Arturo J. Miguel de Priego Paz Soldán.
• Diseño de circuitos digitales con VHDL, Felipe Machado, Susana
Borromeo.
Top Related