Documente Academic
Documente Profesional
Documente Cultură
VHDL es un lenguaje de especificación definido por el IEEE II. ELEMENTOS BÁSICOS DE VHDL
(Institute of Electrical and Electronics Engineers) (ANSI/IEEE
1076-1993) utilizado para describir circuitos digitales y para la
Un sistema digital está descrito por sus entradas y sus salidas
automatización de diseño electrónico. VHDL es acrónimo y la relación que existe entre ellas. En el caso de VHDL por un
proveniente de la combinación de dos acrónimos: VHSIC (Very lado se describirá el aspecto exterior del circuito: entradas y
High Speed Integrated Circuit) y HDL (Hardware Description salidas; y por otro la forma de relacionar las entradas con las
Language). Aunque puede ser usado de forma general para salidas. El aspecto exterior, cuántos puertos de entrada y salida
describir cualquier circuito digital se usa principalmente para tenemos, es lo que denominaremos entity. Y la descripción del
programar PLD (Programable Logic Device - Dispositivo Lógico
Programable), FPGA (Field Programmable Gate Array), ASIC y
comportamiento del circuito architecture, toda architecture
similares. tiene que estar asociada a una entity. Además, aunque no es
estrictamente necesario, podemos definir también las
PALABRAS CLAVES; CIRCUITOS DIJITALES, bibliotecas y paquetes que vamos a utilizar, lo que nos indicará
AUTOMATIZACIÓN DE DICEÑO ELECTRÓNICO, VHDL, PLD, que tipos de puertos y operadores podemos utilizar. Siempre ha
DISPOSITIVOS LÓGICOS PROGRAMABLES. de aparecer la definición de las bibliotecas y paquetes antes de
la definición de la entity.
I. INTRODUCCIÓN A. Entity
Una entidad es la abstracción de un circuito, ya sea desde un
E l VHDL es un lenguaje de descripción de circuitos
electrónicos digitales que utiliza distintos niveles de
abstracción. El significado de las siglas VHDL es VHSIC (Very
complejo sistema electrónico o una simple puerta lógica. La
entidad únicamente describe la forma externa del circuito, en
High Speed Integrated Circuits) Hardware Description ella se enumeran las entradas y las salidas del diseño. Una
Language. Esto significa que VHDL permite acelerar el proceso entidad es análoga a un símbolo esquemático en los diagramas
de diseño. VHDL no es un lenguaje de programación, por ello electrónicos, el cual describe las conexiones del dispositivo
conocer su sintaxis no implica necesariamente saber diseñar hacia el resto del diseño.
con él. VHDL es un lenguaje de descripción de hardware, que
permite describir circuitos síncronos y asíncronos. * Define externamente al circuito o subcircuito.
Para realizar esto debemos: * Nombre y número de puertos, tipos de datos de entrada y
*Pensar en puertas y biestables, no en variables ni funciones. salida.
*Evitar bucles combinacionales y relojes condicionados. * Tienes toda la información necesaria para conectar tu
*Saber qué parte del circuito es combinacional y cuál circuito a otros circuitos.
secuencial. entity nombre is
Los circuitos descritos en VHDL pueden ser simulados generic (cte1: tipo := valor1; cte2: tipo:= valor 2; …);
utilizando herramientas de simulación que reproducen el port (entrada1, entrada2, … : in tipo;
funcionamiento del circuito descrito. Para la realización de la salida1, salida2, …: out tipo;
simulación existe un estándar aprobado por el IEEE, en el cual puertoi : modo tipo);
se explican todas las expresiones propias de VHDL y cómo se end nombre;
simulan. Además, existen herramientas que transforman una
descripción VHDL en un circuito real (a este proceso se le Los puertos pueden ser de entrada in, salida out, entrada-
denomina síntesis). La sintaxis para síntesis y su salida inout o buffer. Los puertos de entrada sólo se pueden leer
implementación final, aunque sigue unas normas generales, y no se puede modificar su valor internamente en la descripción
depende en gran medida de la herramienta de síntesis del comportamiento del circuito (architecture), sobre los
seleccionada. puertos de salida sólo se puede escribir pero nunca tomar
decisiones dependiendo de su valor (esto implica una lectura).
Si es estrictamente necesario escribir sobre un puerto a la vez
que se tiene que tener en cuenta su valor el tipo sería inout o
>REMPLACE ESTA LÍNIEA CON EL NÚMERO DE IDENTIFICACIÓN DE SU ARTÍCULO (DOBLE CLIC ACÁ) < 2
buffer.
Además, en la entity se pueden definir unos valores genéricos El código VHDL propiamente dicho se escribe dentro de
(generic) que se utilizarán para declarar propiedades y architecture. Cada architecture va asociada a una entity y se
constantes del circuito, independientemente de cual sea la indica en la primera sentencia. A continuación, y antes de begin
arquitectura. A nivel de simulación utilizaremos generic para se definen todas las variables (señales) internas que vas a
definir retardos de señales y ciclos de reloj, estas definiciones necesitar para describir el comportamiento de nuestro circuito,
no serán tenidas en cuenta a nivel de síntesis. También se puede se definen los tipos particulares que necesitamos utilizar y los
utilizar generic para introducir una constante que será utilizada componentes, otros circuitos ya definidos y compilados de los
posteriormente en la architecture, utilizaremos esa constante cuales conocemos su interfaz en VHDL.
para hacer nuestro circuito más general. Desde begin hasta end escribiremos todas las sentencias
A continuación se presenta un ejemplo de descripción propias de VHDL, pero no todas pueden utilizarse en cualquier
externa del circuito (entity). Para el ejemplo sabemos que el parte del código. Así pues aquellas sentencias de VHDL que
circuito presentará dos entradas de tamaño N bits y una salida tengan definido un valor para cualquier valor de la entrada (y
de tamaño un bit, particularizamos la entidad para N igual a 8. que nosotros denominamos sentencias concurrentes) podrán ir
Como hemos advertido anteriormente, aunque la función de en cualquier parte del código pero fuera de la estructura process.
generic es permitirnos generar un código más general, una vez Aunque no es el fin de este manual, puede afirmarse que todas
que definimos el circuito, tenemos que particularizarlo, por lo las sentencias concurrentes se traducirán en subcircuitos
que siempre debe darse un valor a las constantes del campo combinacionales. También fuera de la estructura process, se
instanciarán los componentes, subcircuitos ya definido
sutilizados por el circuito actual, indicando cuáles son sus
entradas y sus salidas de entre las señales del circuito del que
A
B
F Y forman parte.
El process es una estructura particular de VHDL (que se
describe con mucho más detalle más adelante) que se reserva
generic; principalmente para contener sentencias que no tengan
entity F is obligatoriamente que tener definido su valor para todas las
generic (N: natural :=8); entradas (el ejemplo más común es una estructura if-else
port (A, B: in bit_vector(N-1 downto 0); incompleta). Esto obliga a que la estructura process almacene
Y: out bit); los valores de sus señales y pueda dar lugar (no siempre) a
end F; subcircuitos secuenciales. Además, en simulación sólo se
ejecutan las sentencias internas a esta estructura cuando alguna
B. Architecture
de las señales de su lista de sensibilidad cambia de valor.
Los pares de entidades y arquitecturas se utilizan para
representar la descripción completa de un diseño. Una C. Identificadores
arquitectura describe el funcionamiento de la entidad a la que En VHDL existen tres clases de objetos por defecto:
hace referencia, es decir, dentro de architecture tendremos que *Constant: Los objetos de esta clase tienen un valor inicial
describir el funcionamiento de la entidad a la que está asociada que es asignado de forma previa a la simulación y que no puede
utilizando las sentencias y expresiones propias de VHDL. ser modificado durante ésta.
*Define internamente el circuito. -constant identificador: tipo:= valor;
*Señales internas, funciones, procedimientos, constantes.
*La descripción de la arquitectura puede ser estructural o por *Variable: Los objetos de esta clase contienen un único
comportamiento. valor que puede ser cambiado durante la simulación con una
architecture arch_name of entity_name is sentencia de asignación. Las variables generalmente se utilizan
-- declaraciones de la arquitectura: como índices, principalmente en instrucciones de bucle, o para
-- tipos tomar valores que permitan modelar componentes. Las
-- señales variables NO representan conexiones o estados de memoria.
-- componentes Pueden ser declaradas antes del begin de la architecture y antes
begin del begin del process, en su declaración se les puede asignar un
-- código de descripción valor por defecto.
-- instrucciones concurrentes -variable identificador: tipo [:= valor];
-- ecuaciones booleanes La asignación de una variable a un valor se hace mediante el
-- componentes operador :=
process (lista de sensibilidad) nombre variable := valor o expresión;
begin i := 10;
-- código de descripción *Signal: Las señales representan elementos de memoria o
end process; conexiones y sí pueden ser sintetizados, dicho de otra manera,
end arch_name; a cada objeto de nuestro código VHDL que sea declarado como
>REMPLACE ESTA LÍNIEA CON EL NÚMERO DE IDENTIFICACIÓN DE SU ARTÍCULO (DOBLE CLIC ACÁ) < 3
1 1 0 0 0 0
1 1 1 0 0 1
A. Practica 1
𝑆1 = ̅̅̅̅̅
𝑎𝑏𝑐 + 𝑎̅𝑏𝑐 + 𝑎𝑏̅𝑐
𝑎̅(𝑏𝑐 + 𝑏𝑐) + 𝑎𝑏̅𝑐
̅̅̅
̅̅̅̅̅̅ ) + 𝑎𝑏̅𝑐
𝑎̅(𝑏⨀𝑐
A. And de 2 entradas
La compuerta AND o compuerta Y lógica es una de las
compuertas más simples dentro de la Electrónica Digital. Su
Véase que en este caso se ha unido la columna izquierda con
representación o símbolo es la que se muestra en la siguiente
la derecha para formar un único rectángulo.
figura.
3. Encontrar la MSP (suma de productos mínima). Ojo
porque podemos encontrarnos con que puede haber más de una
MSP.
*Cada rectángulo pertenece a un término producto.
*Cada término se define encontrando las variables que hay A B X
en común en tal rectángulo. 0 0 0
En nuestro ejemplo tenemos 𝑭(𝒙𝒚𝒛) = 𝒛̅ + 𝒙𝒚 ̅̅̅̅ nótese que 0 1 0
las variables resultado son las que tienen un valor común en 1 0 0
cada rectángulo. 1 1 1
Primer paso;
Se le da clic derecho en la parte superior del programa, después
se le da en nuevo proyecto.
V. PRACTICAS 1, 2, 3
A B C S1 S2 S3
∅ ∅ ∅ 1 0 1
∅ ∅ 1 0 1 1
∅ 1 ∅ 0 1 0
0 1 1 1 0 1
1 0 0 0 1 1
1 0 1 1 0 0
>REMPLACE ESTA LÍNIEA CON EL NÚMERO DE IDENTIFICACIÓN DE SU ARTÍCULO (DOBLE CLIC ACÁ) < 5
Segundo paso;
Aparecerá el siguiente código:
Después aparecerá el cuadro que se muestra a continuación,
seleccionar la opción del VHDL module y asignarle un nombre:
Tercer paso;
Dar clic en run
Y aparecerá la siguiente imagen:
>REMPLACE ESTA LÍNIEA CON EL NÚMERO DE IDENTIFICACIÓN DE SU ARTÍCULO (DOBLE CLIC ACÁ) < 6
B. And de 3 entradas
Una compuerta AND puede tener muchas entradas. La
compuerta AND de múltiples entradas puede ser creada
conectando compuertas simples en cascada. El problema de
poner compuertas en cascada, es que el tiempo de propagación
de la señal desde la entrada hasta la salida, aumenta.
A B C X
0 0 0 0
0 0 1 0
0 1 0 0
0 1 1 0
1 0 0 0
1 0 1 0
1 1 0 0
1 1 1 1 D. Or de 3 entradas
La representación de la compuerta “OR” de tres entradas
C. Or de 2 entradas
La representación de la compuerta “OR” de 2 entradas y su
tabla de verdad se muestran a continuación.
A B C X
A C X 0 0 0 0
0 0 0 0 0 1 1
0 1 1 0 1 0 1
1 0 1 0 1 1 1
1 1 1 1 0 0 1
1 0 1 1
1 1 0 1
1 1 1 1
>REMPLACE ESTA LÍNIEA CON EL NÚMERO DE IDENTIFICACIÓN DE SU ARTÍCULO (DOBLE CLIC ACÁ) < 7
F. Xor de 2 entradas
La puerta lógica OR-exclusiva, más conocida por su nombre
en inglés XOR, realiza la función booleana A'B+AB'. Su
símbolo es el más (+) inscrito en un círculo. En la figura de la
derecha pueden observarse sus símbolos en electrónica.
E. Or de 4 entradas A B X
0 0 0
0 1 1
1 0 1
1 1 0
>REMPLACE ESTA LÍNIEA CON EL NÚMERO DE IDENTIFICACIÓN DE SU ARTÍCULO (DOBLE CLIC ACÁ) < 8
1 0 0
1 1 0
G. Xnor de 2 entradas
Una compuerta NOR - exclusiva o XNOR opera en forma
exactamente opuesta a una compuerta XOR, entregando una
salida baja cuando una de sus entradas es baja y la otra es alta y
una salida alta cuando sus entradas son ambas altas o ambas
bajas. Es decir que una compuerta XNOR indica, mediante un
lógico que su salida, cuando las dos entradas tienen el mismo
estado.
A B X
0 0 1
0 1 0
>REMPLACE ESTA LÍNIEA CON EL NÚMERO DE IDENTIFICACIÓN DE SU ARTÍCULO (DOBLE CLIC ACÁ) < 9
VII. OPERACIONALES
>REMPLACE ESTA LÍNIEA CON EL NÚMERO DE IDENTIFICACIÓN DE SU ARTÍCULO (DOBLE CLIC ACÁ) < 10
C. Restador
B. Multiplicador
>REMPLACE ESTA LÍNIEA CON EL NÚMERO DE IDENTIFICACIÓN DE SU ARTÍCULO (DOBLE CLIC ACÁ) < 11