Sunteți pe pagina 1din 11

>REMPLACE ESTA LÍNIEA CON EL NÚMERO DE IDENTIFICACIÓN DE SU ARTÍCULO (DOBLE CLIC ACÁ) < 1

MANUAL DE PRÁCTICAS DE VHDL


PONCE GOIZ IVAN, SERRANO JIMENEZ JOSE FRANCISCO, THECANHUEY AMASTAL
MIGUEL, VAZQUEZ RODRIGUEZ DANIEL, DIAZ SANCHEZ JESUS, TAPIA ORTEGA
MARIA FERNANDA, HERNANDEZ MOTA CARLOS.

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

signal le corresponde un cable o un elemento de memoria dos entradas es como la sigue:


(biestable, registro …) en nuestro circuito. Por lo tanto, su
comportamiento en simulación será el esperado de ese elemento
físico aunque no lo describamos en el código explícitamente.
Tienen que ser declaradas antes del begin de la architecture. Los
puertos de una entidad son implícitamente declarados como
señales en el momento de la declaración, ya que estos
representan conexiones.
-signal identificador: tipo;
La asignación de una señal a un valor se hace mediante el
operador <=
nombre señal <= valor o expresión;
A <= 10;
Input A Input B Input C
0 0 0
III. ESTRUCTURA BÁSICA DE UN ARCHIVO FUENTE EN VHDL 0 1 1
1 0 1
Como hemos visto los modelos VHDL están formados por 1 1 1
dos partes: la entidad (entity) y la arquitectura (architecture); es
en esta última donde se escriben las sentencias que describen el Los valores de una variable aparecen sobre la parte superior
comportamiento del circuito, a este modelo de programación en del mapa, definiendo los valores de la columna, mientras los
VHDL se le suele denominar behavioral. valores de la otra variable aparecen a un lado, definiendo los
valores de la variable en cada fila. El mapa de Karnaugh se va
completando colocando los unos “1” en la celda apropiada,
architecture circuito of nombre is ayudados por la tabla de verdad. Esta agrupación es conocida
-- señales como minitérminos o minterms y como expresión booleana
begin viene a ser una suma de productos. Usualmente no se escriben
-- sentencias concurrentes los ceros “0” en la tabla, ya que solo se agrupan los unos “1”.
process (lista de sensibilidad) En el mapa las celdas adyacentes que contienen unos 1 se
begin agrupan de a dos, de a cuatro, o de a ocho. En este caso, hay un
-- sentencias secuenciales grupo horizontal y otro vertical que puede agruparse de a dos.
-- sentencias condicionales Se indican los agrupamientos dibujando un círculo alrededor de
end process cada uno “1”.
end architecture circuito; Vamos a indicar cada uno de los pasos para obtener la
Dentro de la arquitectura se encuentra: expresión MSP (mínima suma de productos). Para ello vamos a
*Tipos y señales intermedias necesarios para la descripción ilustrarlo con el ejemplo:
del comportamiento.
*Sentencias de asignación que deben realizarse siempre así 𝑭(𝒙𝒚𝒛) = 𝒙𝒚𝒛̅̅̅̅̅ + 𝒙𝒚
̅̅̅̅𝒛 + 𝒙
̅𝒚𝒛̅ + 𝒙𝒚𝒛
̅̅̅̅ + 𝒙𝒚𝒛̅
como sentencias concurrentes. Los pasos a seguir para conseguir reducir esta expresión son:
*Uno a varios process que tienen en su interior sentencias 1. Convertir la expresión a una suma de productos si es
condicionales y asignaciones a señales que dan lugar a necesario. Esto se puede realizar de varias maneras:
hardware secuencial. *Algebraicamente.
*Construyendo una tabla de verdad, trasladando los valores
IV. MAPA DE KARNAUGH al mapa de Karnaugh. Esta es la forma que vamos a utilizar.
Un mapa de Karnaugh provee una manera alternativa de
simplificación de circuitos lógicos. En lugar de usar las técnicas X Y Z RESULTADO
de simplificación con el álgebra de Boole, tú puedes transferir 0 0 0 1
los valores lógicos desde una función booleana o desde una 0 0 1 1
tabla de verdad a un mapa de Karnaugh. El agrupamiento de 0 1 0 1
ceros 0 y unos 1 dentro del mapa te ayuda a visualizar las 0 1 1 0
relaciones lógicas entre las variables y conduce directamente a 1 0 0 1
una función booleana simplificada. 1 0 1 0
El mapa de Karnaugh es a menudo usado para simplificar los 1 1 0 1
problemas lógicos con 2, 3 o 4 variables. Un mapa de Karnaugh 1 1 1 0
de 2 variables es trivial pero puede ser usado para introducir el
método que necesitas aprender. El mapa para una puerta OR de
>REMPLACE ESTA LÍNIEA CON EL NÚMERO DE IDENTIFICACIÓN DE SU ARTÍCULO (DOBLE CLIC ACÁ) < 4

1 1 0 0 0 0
1 1 1 0 0 1

A. Practica 1
𝑆1 = ̅̅̅̅̅
𝑎𝑏𝑐 + 𝑎̅𝑏𝑐 + 𝑎𝑏̅𝑐
𝑎̅(𝑏𝑐 + 𝑏𝑐) + 𝑎𝑏̅𝑐
̅̅̅
̅̅̅̅̅̅ ) + 𝑎𝑏̅𝑐
𝑎̅(𝑏⨀𝑐

2. Cubrir todos los unos del mapa mediante rectángulos de 2


elementos, donde N = 0 ... número de variables. Ninguno de B. Practica 2
esos rectángulos debe contener ningún cero.
*Para minimizar el número de términos resultantes se hará el 𝑆2 = ̅̅̅
𝑎𝑏𝑐 + 𝑎̅𝑏𝑐̅ + 𝑎𝑏𝑐 ̅̅̅
mínimo número posible de rectángulos que cubran todos los ̅
𝑎̅(𝑏𝑐 + 𝑏𝑐̅) + 𝑎𝑏𝑐 ̅̅̅
unos. 𝑎̅(𝑏 ⊕ 𝑐) + 𝑎𝑏𝑐̅̅̅
*Para minimizar el número de variables se hará cada
C. Practica 3
rectángulo tan grande como sea posible.
𝑆3 =
̅̅̅ + 𝑏𝑐 + 𝑏𝑐
𝑎𝑏 ̅̅̅
̅̅̅ + (𝑏⨀𝑐
𝑎𝑏 ̅̅̅̅̅̅ )
VI. Practica de compuertas

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:

Después seleccionar Next y aparecerá el siguiente cuadro y


colocar las variables que ay aparecen y nuevamente aplastar
NEXT:
Después se eliminara todo lo que está en verde y quedara lo
siguiente;

Por ultimo aparecerá el siguiente cuadro y se aplastara FINISH:

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

VI. COMOPONENTES DE ENTIDAD A. Sumador

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

matter of convenience and service to the technical community,


these topical papers are typically collected and published in one
special issue of most transactions publications.
At least two reviews are required for every paper submitted.
D. Copyright Form
For conference-related papers, the decision to accept or reject a
An IEEE copyright form should accompany your final paper is made by the conference editors and publications
submission. You can get a .pdf, .html, or .doc version at committee; the recommendations of the referees are advisory
http://www.ieee.org/copyright. Authors are responsible for only. Indecipherable English is a valid reason for rejection.
obtaining any security clearances. There is a service available that will help you improve your
English for a fee, and the link to that service can be found at
VIII. EDITORIAL POLICY http://www.ieee.org/web/publications/authors/transjnl/index.html.
Submission of a manuscript is not required for participation Authors of rejected papers may revise and resubmit them as
in a conference. Do not submit a reworked version of a paper regular papers, whereupon they will be reviewed by two new
you have submitted or published elsewhere. Do not publish referees.
“preliminary” data or results. The submitting author is
responsible for obtaining agreement of all coauthors and any
consent required from sponsors before submitting a paper. The IX. CONCLUCION
IEEE Transactions and Journals Department strongly Se logro inplementar el tech been en todos los programas,
discourages courtesy authorship. It is the obligation of the .
authors to cite relevant prior work.
The IEEE Transactions and Journals Department does not
publish conference records or proceedings. The department REFERENCES
does publish papers related to conferences that have been
Basic format for books:
recommended for publication on the basis of peer review. As a

S-ar putea să vă placă și