Está en la página 1de 10

U n i v e r s i d a d

Francisco de Paula
Santander Ingeniera Electrnica Diseo Digital

LABORATORIO N 6
INTRODUCCIN AL VHDL:
ESTILO DE DESCRIPCIN FLUJO DE DATOS EN VHDL

1. OBJETIVO

Aplicar a un sistema electrnico digital el estilo de descripcin flujo de datos en


lenguaje VHDL, para describir su comportamiento, identificar sus componentes
fundamentales al interior de cada unidad bsica de diseo y deducir sus ventajas y
desventajas.

2. EQUIPO NECESARIO

Computadora.
Herramienta de simulacin Xilinx ISE WebPACK 14.2.
Tarjeta Nexys 2 de Digilent.
Cable de conexin USB de la Nexys 2 a la computadora.

3. TRABAJO PERSONAL PREVIO

Antes de comenzar con la prctica consulte en un manual de VHDL ejemplos para la


programacin de las diferentes estructuras que conforman los mdulos de diseo.

4. MARCO CONCEPTUAL

4.1 DESCRIPCIN CONCURRENTE FLUJO DE DATOS

La descripcin funcional es puramente comportamental, de manera que con una


secuencia sencilla de instrucciones se podra describir el circuito. Naturalmente, a veces
resulta ms interesante describir el circuito de forma que est ms cercano a una posible
realizacin fsica del mismo. En este sentido, VHDL posee una forma de describir
circuitos que adems permite la paralizacin de instrucciones1, y que se encuentra ms
cercana a una descripcin estructural del mismo, siendo todava una descripcin
funcional.

Las declaraciones concurrentes se diferencian de las series, entre otras cosas, en que
no obedecen a la definicin de un proceso. Por ello suelen utilizarse en las descripciones
de flujo de datos y estructural2. Una de las caractersticas que presenta este tipo de
descripcin es que no importa el orden en que se escriban las seales, ya que el resultado
para tal funcin es el mismo [1].

1
Un lenguaje que describa hardware debe permitir la ejecucin paralela o que hayan instrucciones
concurrentes.
2
El estilo de descripcin estructural se analizar en la gua de laboratorio N 7.

Est. Daniel Camilo Roln Quintero. Dto. Electricidad Y Electrnica UFPS


Ing. Jhon Jairo Ramrez Matheus.
1
U n i v e r s i d a d
Francisco de Paula
Santander Ingeniera Electrnica Diseo Digital

Este estilo describe el comportamiento del circuito detallando de manera concurrente


las transferencias de datos entre los puertos y las seales auxiliares intermedias. Para ello
se usan sentencias de asignacin de datos e instrucciones de control que permiten
condicionar dichas asignaciones a un determinado evento, o seleccionar el dato a signar
entre un conjunto de posibilidades. Por esto se le conoce como RTL (Lgica De
Transferencia De Registros), o tambin como flujo de datos (Data Flow Description);
porque especifican la transferencia de informacin.

En este tipo de descripcin se pueden utilizar tres formatos [1], [2]:

Declaraciones condicionales asignadas a una seal: when else (cuando sino).


Declaraciones concurrentes asignas a seales, o bien, por medio de ecuaciones
booleanas.
Seleccin de una seal: with select when (con seleccionar cuando).

4.1.1 Declaraciones Condicionales: When Else

El uso de esta declaracin implica la asignacin de valores a una seal de manera que
determine la ejecucin de una condicin propia del diseo [1]. El formato de este estilo
se muestra en el Cdigo I [2].

1 architecture <Nombre_de_arquitectura> of <Nonbre_de_entidad> is


2 begin
3 <Id_de_instrucciones>: -- Opcional.
4 <Nombre> <= <expresin_1> when <condicin_1> else
5 <expresin_2> when <condicin_2> else
6 <expresin_n>;
7 end <Nombre_de_arquitectura>;

Cdigo I. Aproximacin al formato del estilo de descripcin flujo de datos aplicando la


declaracin condicional when else.

El nombre se refiere a puertos, seales, etc. Las expresiones representan posibles


valores o sentencias lgicas que describen el comportamiento del circuito y que son
validadas por las condiciones.

Ejemplo 1. Implemente la descripcin en lenguaje VHDL de la compuerta and de la


Figura 1 utilizando el estilo flujo de datos con la declaracin condicional when else.

Solucin: De acuerdo con la Figura 1 y la tabla de verdad de la compuerta and (Tabla I),
las caractersticas que se necesitan tener en cuenta para tal descripcin son:

Puertos de entrada: A y B.
Puertos de Salida: C.
C = 1 slo cuando A = 1 y B = 1, de lo contario C = 0.

Est. Daniel Camilo Roln Quintero. Dto. Electricidad Y Electrnica UFPS


Ing. Jhon Jairo Ramrez Matheus.
2
U n i v e r s i d a d
Francisco de Paula
Santander Ingeniera Electrnica Diseo Digital

A
C
B
Figura 1. Esquemtico de la compuerta and. Fuente: elaboracin propia.

Tabla I
TABLA DE VERDAD DE LA COMPUERTA AND.

A B C

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

Fuente: elaboracin propia.

Teniendo esto presente se ha escrito el Cdigo II para cumplir con los requerimientos.
Las instrucciones 11 y 12 implican que C toma el valor de 1 cuando A y B son iguales a
1; de lo contrario, toma el valor de 0.

1 ----------------------------------------------------------------
2 --Declaracin de la librera y el paquete:
3 library IEEE;
4 use IEEE.std_logic_1164.all;
5 ----------------------------------------------------------------
6 --Declaracin de la entidad:
7 entity comp_and is
8 port(A,B : in std_logic;
9 C : out std_logic);
10 end comp_and;
11 ----------------------------------------------------------------
12 --Declaracin de la arquitectura:
13 architecture Arq_comp_and of comp_and is
14 begin
15 C <= '1' when (A = '1' and B = '1') else
16 '0';
17 end Arq_comp_and;
18 ----------------------------------------------------------------

Cdigo II. Descripcin en flujo de datos con la declaracin condicional when else de la
compuerta and.

Asignacin: Comprobar el funcionamiento del Cdigo II conectando cada una de las


entradas a un switch y la salida a un led.

Ejemplo 2. Describir el comparador de dos vectores de 2 bits presentado en la Figura 2


teniendo en cuenta que:

Si A = B entonces C = 1.

Est. Daniel Camilo Roln Quintero. Dto. Electricidad Y Electrnica UFPS


Ing. Jhon Jairo Ramrez Matheus.
3
U n i v e r s i d a d
Francisco de Paula
Santander Ingeniera Electrnica Diseo Digital

Si A B entonces C = 0.
Solucin: Se ha escrito el Cdigo III para satisfacer los requerimientos. Las instrucciones
9 y 10 implican que C toma el valor de 1 cuando A es igual a B; de lo contrario, toma el
valor de 0.

A PROCESO DE
C
B COMPARACIN

Figura 2. Diagrama de flujo de un comparador simple. Fuente: elaboracin propia.

1 ----------------------------------------------------------------
2 --Declaracin de la librera y el paquete:
3 library IEEE;
4 use IEEE.std_logic_1164.all;
5 ----------------------------------------------------------------
6 --Declaracin de la entidad:
7 entity comp is
8 port(A,B : in std_logic_vector (1 downto 0);
9 C : out std_logic);
10 end comp;
11 ----------------------------------------------------------------
12 --Declaracin de la arquitectura:
13 architecture Arq_comp of comp is
14 begin
15 C <= '1' when (A = B) else
16 '0';
17 end Arq_comp;
18 ----------------------------------------------------------------

Cdigo III. Descripcin en flujo de datos con la declaracin condicional when else del
comparador de la Figura 2.

Asignacin: Comprobar el funcionamiento del Cdigo III conectando cada una de las
entradas a un switch y la salida a un led.

4.1.2 Declaraciones Concurrentes: Ecuaciones Booleanas

El uso de esta declaracin implica que los puertos de salida se definan mediante
ecuaciones lgicas booleanas que describen el comportamiento de cada una de las
compuertas que componen el circuito [1]. El formato de este estilo se muestra en el
Cdigo IV [3]. El nombre se refiere a puertos, seales, etc. La expresin lgica booleana
describe el comportamiento de las compuertas lgicas que tiene efecto sobre el puerto o
seal correspondiente.

1 architecture <Nombre_de_arquitectura> of <Nonbre_de_entidad> is


2 begin
3 <Id_de_instrucciones>: -- Opcional.
4 <Nombre> <= <expresin_lgica_booleana>;
5 end <Nombre_de_arquitectura>;

Cdigo IV. Aproximacin al formato del estilo de descripcin flujo de datos aplicando ecuaciones
booleanas.

Est. Daniel Camilo Roln Quintero. Dto. Electricidad Y Electrnica UFPS


Ing. Jhon Jairo Ramrez Matheus.
4
U n i v e r s i d a d
Francisco de Paula
Santander Ingeniera Electrnica Diseo Digital

Ejemplo 3. Repetir el ejemplo 1 pero ahora empleando el estilo de descripcin flujo de


datos mediante ecuaciones booleanas.

Solucin: Teniendo en cuenta la Figura 1, las caractersticas que se necesitan tener en


cuenta para tal descripcin son:

Puertos de entrada: A y B.
Puerto de Salida: C.

Adems, es simple deducir que:

C = AB (1)

De acuerdo con ello se ha escrito el Cdigo V para cumplir los requerimientos.


Obsrvese que la instruccin 9 representa a (1).

1 ----------------------------------------------------------------
2 --Declaracin de la librera y el paquete:
3 library IEEE;
4 use IEEE.std_logic_1164.all;
5 ----------------------------------------------------------------
6 --Declaracin de la entidad:
7 entity comp_and is
8 port(A,B : in std_logic;
9 C : out std_logic);
10 end comp_and;
11 ----------------------------------------------------------------
12 --Declaracin de la arquitectura:
13 architecture Arq_comp_and of comp_and is
14 begin
15 C <= A and B;
16 end Arq_comp_and;
17 ----------------------------------------------------------------

Cdigo V. Descripcin en flujo de datos mediante ecuaciones booleanas de la compuerta and.

Asignacin: Comprobar el funcionamiento del Cdigo V conectando cada una de las


entradas a un switch y la salida a un led.

Ejemplo 4. Repetir el ejemplo 2 pero ahora empleando el estilo de descripcin flujo de


datos mediante ecuaciones booleanas.

Solucin: De acuerdo con lo propuesto en el ejemplo 2, la tabla de verdad


correspondiente al proceso de comparacin es como se lista en la Tabla II.

Alicando un mapa de Karnaugh al sistema y reduciendo la funcin lgica resultante


del mismo [4], se deduce que:

C = A0 B0 A1 B1 (2)

Est. Daniel Camilo Roln Quintero. Dto. Electricidad Y Electrnica UFPS


Ing. Jhon Jairo Ramrez Matheus.
5
U n i v e r s i d a d
Francisco de Paula
Santander Ingeniera Electrnica Diseo Digital

Tabla II
TABLA DE VERDAD DEL COMPARADOR DE LA FIGURA 2.

A1 A0 B1 B0 C

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

Fuente: elaboracin propia.

A0

B0
C
A1

B1
Figura 3. Representacin esquemtica del comparador de la Figura 2. Fuente: elaboracin propia.

1 ----------------------------------------------------------------
2 --Declaracin de la librera y el paquete:
3 library IEEE;
4 use IEEE.std_logic_1164.all;
5 ----------------------------------------------------------------
6 --Declaracin de la entidad:
7 entity comp is
8 port(A,B : in std_logic_vector (1 downto 0);
9 C : out std_logic);
10 end comp;
11 ----------------------------------------------------------------
12 --Declaracin de la arquitectura:
13 architecture Arq_comp of comp is
13 begin
15 C <= (A(0) xnor B(0)) and (A(1) xnor B(1));
16 end Arq_comp;
17 ----------------------------------------------------------------

Cdigo VI. Descripcin en flujo de datos con la declaracin condicional when else del
comparador de la Figura 2.

Est. Daniel Camilo Roln Quintero. Dto. Electricidad Y Electrnica UFPS


Ing. Jhon Jairo Ramrez Matheus.
6
U n i v e r s i d a d
Francisco de Paula
Santander Ingeniera Electrnica Diseo Digital

La Figura 3 muestra de manera esquemtica la ecuacin booleana obtenida (2), con


la cual se puede describir el comportamiento del comparador de la Figura 2 de la manera
mostrada en el Cdigo VI.

Asignacin: Comprobar el funcionamiento del Cdigo VI conectando cada una de las


entradas a un switch y la salida a un led.

4.1.3 Declaraciones de Seleccin: With Select When

El uso de esta declaracin implica la asignacin de un valor a una seal (dependiente)


en virtud del valor de otra seal (independiente) previamente seleccionada [1]. El formato
de este estilo se muestra en el Cdigo VII [1], [2]. La expresin elegida es la seal de
referencia o independiente, es decir la que se evala. El nombre se refiere a la seal
dependiente. Las expresiones 1, 2,, n son las asignaciones dadas a la seal dependiente
cuando la seal independiente cambia de estado (estado 1, 2,, n). Como se ver en los
ejemplos 5 y 6, esta declaracin es perfecta para describir el comportamiento de una seal
a partir de su tabla de verdad.

1 architecture <Nombre_de_arquitectura> of <Nonbre_de_entidad> is


2 begin
3 with <expresin_elegida> select
4 <Nombre> <= <expresin_1> when <estado_1>,
5 <expresin_2> when <estado_2>,
6 <expresin_n> when others;
7 end <Nombre_de_arquitectura>;

Cdigo VII. Aproximacin al formato del estilo de descripcin flujo de datos aplicando la
declaracin de seleccin with select when.

Ejemplo 5. Repetir el ejemplo 1 pero ahora empleando el estilo de descripcin flujo de


datos mediante con la declaracin de seleccin with select - when.

Solucin: En primera instancia, pareciese que para este caso slo es de inters conocer la
tabla de verdad de la seal a describir. No obstante, debe tenerse en cuenta la naturaleza
de las seales a tratar. Al analizar el Cdigo VII, se puede inferir que la expresin elegida
debe ser una sola seal, es decir, como un vector de bits.

El ejemplo 1 hace referencia a dos seales de entrada (A y B), entonces si se quiere


implementar la declaracin de seleccin, la expresin elegida debe ser la concatenacin
de dichas seales (para obtener el vector de bits). Sin embargo, la sntesis no acepta que
tal asignacin se haga de manera directa, pero s de manera indirecta. Para ello se propone
declarar una seal de dos bits3 (arbitrariamente llamada D).

As, teniendo en cuenta la Tabla I y las consideraciones anteriores, se procede a


escribir el programa tal como lo muestra el Cdigo VIII.

3
La seal debe ser de 2 bits porque la concatenacin de A con B produce una palabra de este tamao.

Est. Daniel Camilo Roln Quintero. Dto. Electricidad Y Electrnica UFPS


Ing. Jhon Jairo Ramrez Matheus.
7
U n i v e r s i d a d
Francisco de Paula
Santander Ingeniera Electrnica Diseo Digital

1 ----------------------------------------------------------------
2 --Declaracin de la librera y el paquete:
3 library IEEE;
4 use IEEE.std_logic_1164.all;
5 ----------------------------------------------------------------
6 --Declaracin de la entidad:
7 entity comp_and is
8 port(A,B : in std_logic;
9 C : out std_logic);
10 end comp_and;
11 ----------------------------------------------------------------
12 --Declaracin de la arquitectura:
13 architecture Arq_comp_and of comp_and is
14 signal D : std_logic_vector (1 downto 0); -- Seal de 2 bits.
15 begin
16 D <= A & B; -- & es el operador de concatenacin en VHDL.
17 with D select
18 C <= '1' when "11",
19 '0' when others;
20 end Arq_comp_and;
21 ----------------------------------------------------------------

Cdigo VIII. Descripcin de la compuerta and en flujo de datos mediante la declaracin de


seleccin with select when.

Asignacin: Comprobar el funcionamiento del Cdigo VIII conectando cada una de las
entradas a un switch y la salida a un led.

Ejemplo 6. Repetir el ejemplo 2 pero ahora empleando el estilo de descripcin flujo de


datos mediante la declaracin de seleccin with select - when.

Solucin: De igual manera que en el ejemplo 5, debe garantizarse que la seal elegida
sea un vector de bits. En este caso el nmero de bits deber ser cuatro, pues ambas
entradas al circuito son de dos bits. De modo que, al concatenarse las entradas resultara
una seal de cuatro bits (arbitrariamente llamada D).

As, teniendo en cuenta la Tabla II y las consideraciones anteriores, se procede a


escribir el programa tal como lo muestra el Cdigo IX.

1 ----------------------------------------------------------------
2 --Declaracin de la librera y el paquete:
3 library IEEE;
4 use IEEE.std_logic_1164.all;
5 ----------------------------------------------------------------
6 --Declaracin de la entidad:
7 entity comp is
8 port(A,B : in std_logic_vector (1 downto 0);
9 C : out std_logic);
10 end comp;
11 ----------------------------------------------------------------
12 --Declaracin de la arquitectura:
13 architecture Arq_comp of comp is
14 signal D : std_logic_vector (3 downto 0); -- Seal de 4 bits.

Est. Daniel Camilo Roln Quintero. Dto. Electricidad Y Electrnica UFPS


Ing. Jhon Jairo Ramrez Matheus.
8
U n i v e r s i d a d
Francisco de Paula
Santander Ingeniera Electrnica Diseo Digital

15 begin
16 D <= A & B;
17 with D select
18 C <= '1' when "0000",
19 '1' when "0101",
20 '1' when "1010",
21 '1' when "1111",
22 '0' when others;
23 end Arq_comp;
24 ----------------------------------------------------------------

Cdigo IX. Descripcin en flujo de datos con la declaracin condicional with select
whe del comparador de la Figura 2.

Asignacin: Comprobar el funcionamiento del Cdigo IX conectando cada una de las


entradas a un switch y la salida a un led.

5. ACTIVIDAD
A

D
B

U3 N3

AND2

U0 N0
INV U4 N4 U6 F

AND2
OR3

U5 N5

U1 N1
INV AND3 U7 G

U2 N2 AND2
INV
Figura 4. Diagrama esquemtico de un circuito lgico propuesto a describir en la actividad.
Fuente: elaboracin propia.

Teniendo en cuenta el estilo de descripcin flujo de datos y el circuito de la Figura 4:

a) Encuentre las expresiones booleanas que describen el circuito.


b) Del diagrama lgico encuentre la tabla de verdad que describe el comportamiento del
circuito.
c) Disee un programa en lenguaje VHDL que describa el circuito. Compruebe su
funcionamiento.
d) Construya el smbolo del programa que cre.
e) Realice el diagrama de tiempos.

Est. Daniel Camilo Roln Quintero. Dto. Electricidad Y Electrnica UFPS


Ing. Jhon Jairo Ramrez Matheus.
9
U n i v e r s i d a d
Francisco de Paula
Santander Ingeniera Electrnica Diseo Digital

f) Implemente su proyecto en la Nexys 2 utilizando los recursos de la tarjeta para


comprobar su funcionamiento. Diodos led para las salidas y swicthes para las entradas.

6. REFERENCIAS

[1] David G. Maxines and Jessica Alcal, VHDL El Arte de Programar Sistemas
Digitales, Primera ed. Mxico: Compaia Editorial Continental, 2002.
[2] Fernando Pardo Carpio and Jos A. Boluda Grau, VHDL Lenguaje para sntesis y
modelado de circuitos, Tercera ed. Mxico D.F., Mxico: Alfaomega Grupo Editor,
S.A. de C.V., 2011.
[3] Douglas L. Perry, VHDL: Programming by Example, 4th ed. United States of
America: McGraw-Hill, 2002.
[4] Ronald J. Tocci, Neal S. Widmer, and Gregory L. Moss, Sistemas Digitales
Principios y Aplicaciones, Dcima ed., Luis Miguel Cruz Castillo and Bernardino
GUtirrez Hernndez, Eds. Mxico, Mxico: Pearson Educin,S.A. - Prentice Hall,
2007.

Est. Daniel Camilo Roln Quintero. Dto. Electricidad Y Electrnica UFPS


Ing. Jhon Jairo Ramrez Matheus.
10

También podría gustarte