Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Francisco de Paula
Santander Ingeniera Electrnica Diseo Digital
LABORATORIO N 6
INTRODUCCIN AL VHDL:
ESTILO DE DESCRIPCIN FLUJO DE DATOS EN VHDL
1. OBJETIVO
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.
4. MARCO CONCEPTUAL
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.
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].
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.
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
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.
Si A = B entonces C = 1.
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
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.
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.
Cdigo IV. Aproximacin al formato del estilo de descripcin flujo de datos aplicando ecuaciones
booleanas.
Puertos de entrada: A y B.
Puerto de Salida: C.
C = AB (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 ----------------------------------------------------------------
C = A0 B0 A1 B1 (2)
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
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.
Cdigo VII. Aproximacin al formato del estilo de descripcin flujo de datos aplicando 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.
3
La seal debe ser de 2 bits porque la concatenacin de A con B produce una palabra de este tamao.
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 ----------------------------------------------------------------
Asignacin: Comprobar el funcionamiento del Cdigo VIII conectando cada una de las
entradas a un switch y la salida a un led.
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).
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.
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.
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.
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.