Circuitos Digitales II - Universidad De Antioquia

Download Report

Transcript Circuitos Digitales II - Universidad De Antioquia

Departamento de Ingeniería Electrónica
Facultad de Ingeniería
Circuitos Digitales II
TestBench, Generics, Generate y Más sobre Procesos
Semana No.4
Semestre 2008-2
Prof. Gustavo Patiño
[email protected]
Prof. Eugenio Duque
[email protected]
1
Temario

Repaso :

Instrucciones de Asignación







VHDL Estructural
Síntesis vs Simulación
Test Bench (Banco de Prueba)
Generics


Dentro de Arquitecturas, fuera de procesos.
Dentro de Procesos.
Ejemplos : Máquinas de Estados
Generic Map
Generate Statement


FOR-scheme
IF-scheme
2
Departamento de Ing. Electrónica
Circuitos Digitales II
2008-2
Universidad de Antioquia
Repaso : Instrucciones de Asignación

Las
instrucciones
condicionales
y
asignaciones
seleccionadas difieren considerablemente en su gramática
dentro y fuera de los Process.

Fuera de un Process una asignación seleccionada es
funcionalmente equivalente a una instrucción case dentro de
un Process.
Los procesos pueden ser utilizados para lógica
combinacional, pero suelen ser más utilizados para
encapsular lógica secuencial.

3
Departamento de Ing. Electrónica
Circuitos Digitales II
2008-2
Universidad de Antioquia
Repaso : Instrucciones de asignación concurrente:
Asignación Condicional
WHEN -ELSE
target_signal <= value1 when condition1 else
value2 when condition2 else
. . .
valueN-1 when conditionN-1 else
valueN;
Value N
Value N-1
 0 .…
1
Condition N-1
…
Value 2
Target Signal
0
1
Value 1
Condition 2
0
1
Condition 1
4
Departamento de Ing. Electrónica
Circuitos Digitales II
2008-2
Universidad de Antioquia
Repaso : Formato para múltiples k-opciones
WHEN value
WHEN value_1 to value_2
WHEN value_1 | value_2 | .... | value N
5
Departamento de Ing. Electrónica
Circuitos Digitales II
2008-2
Universidad de Antioquia
Repaso : Instrucciones de asignación concurrente:
Asignación seleccionada
With –Select –
When
with choice_expression select
target_signal <= expression1 when choices_1,
expression2 when choices_2,
. . .
expressionN when choices_N;
Los valores deben ser
constantes
choices_1
expression1
expression2
choices_2
expressionN
choices_N
 target_signal
 choice expression
6
Departamento de Ing. Electrónica
Circuitos Digitales II
2008-2
Universidad de Antioquia
Repaso :
Formato para múltiples k-opciones
WITH sel SELECT
y <=
a WHEN “000”,
b WHEN “011” to "110,
c WHEN “001” | “111”,
d WHEN OTHERS;
7
Departamento de Ing. Electrónica
Circuitos Digitales II
2008-2
Universidad de Antioquia
Repaso : Instrucciones condicionales dentro de Process
CASE – WHEN
CASE variable/señal IS
WHEN valor => enunciado ;
…
WHEN OTHERS => default ;
END CASE;
8
Departamento de Ing. Electrónica
Circuitos Digitales II
2008-2
Universidad de Antioquia
Repaso : Instrucciones condicionales dentro de Process
FOR - LOOP
FOR variable/señal IN a TO/DOWNTO b LOOP
…
END LOOP;
9
Departamento de Ing. Electrónica
Circuitos Digitales II
2008-2
Universidad de Antioquia
Repaso : Circuitos secuenciales complejos


Los circuitos que sean más complejos pueden ser
construidos usando Máquinas de Estados Finitos
(FSM: Finite State Machines).
Las FSM son fácilmente especificadas usando
instrucciones CASE/WHEN dentro de uno o varios
Process.
10
Departamento de Ing. Electrónica
Circuitos Digitales II
2008-2
Universidad de Antioquia
Repaso : Modelo secuencial mono fase
11
Departamento de Ing. Electrónica
Circuitos Digitales II
2008-2
Universidad de Antioquia
Señales vs Variables dentro
de Process
Ejemplos
12
13
Departamento de Ing. Electrónica
Circuitos Digitales II
2008-2
Universidad de Antioquia
14
Departamento de Ing. Electrónica
Circuitos Digitales II
2008-2
Universidad de Antioquia
Código basado en el
uso de Señales
15
Departamento de Ing. Electrónica
Circuitos Digitales II
2008-2
Universidad de Antioquia
Código basado en el
uso de variables
16
Departamento de Ing. Electrónica
Circuitos Digitales II
2008-2
Universidad de Antioquia
VHDL Estructural


Para conectar varios dispositivos, se requiere definir
una arquitectura estructural (componentes +
conexiones)
Ejemplo mínimo: Test Bench
17
Departamento de Ing. Electrónica
Circuitos Digitales II
2008-2
Universidad de Antioquia
VHDL Estructural (…cont)

Beneficios:



Al sintetizar una descripción estructural, los elementos
individuales VHDL se colapsan dentro de un solo
bloque, resultando quizá en lógica más eficiente.
Portabilidad.
Problemas:


Fácilmente se equivocan las conexiones.
No se puede rescatarse el diseño original a partir del
archivo de síntesis.
18
Departamento de Ing. Electrónica
Circuitos Digitales II
2008-2
Universidad de Antioquia
Modelo para VHDL estructural
ENTITY nombre IS
PORT(...);
END ENTITY nombre;
ARCHITECTURE estructural OF nombre IS
COMPONENT tipo1
PORT( … );
END COMPONENT;
COMPONENT tipo2
PORT( … );
END COMPONENT;
…
SIGNAL señal1, señal2, …
BEGIN
c1: tipo1 PORT MAP( …);
c2: tipo2 PORT MAP(…);
... ...
END ARCHITECTURE estructural;
19
Departamento de Ing. Electrónica
Circuitos Digitales II
2008-2
Universidad de Antioquia
VHDL Estructural (…cont)

Components



Once you have defined an entity, the next thing is to
instantiate it as a component within another entity’s
architecture.
The interface of the component must be defined in any
architecture that instantiates it. Then, any number of
port map statements create instances of that
component.
Example : Here is how to connect eight of the full
adders to give a eight-bit adder:
20
Departamento de Ing. Electrónica
Circuitos Digitales II
2008-2
Universidad de Antioquia
Ejemplo : Sumador completo de 1- bit
library ieee;
use ieee.std_logic_1164.all;
-- add this to the IEEE library
-- includes std_ulogic
entity full_adder is
port(a, b, c : in std_ulogic;
sum, carry : out std_ulogic);
end full_adder;
architecture imp of full_adder is
begin
sum <= (a xor b) xor c;
-- combinational logic
carry <= (a and b) or (a and c) or (b and c);
end imp;
21
Departamento de Ing. Electrónica
Circuitos Digitales II
2008-2
Universidad de Antioquia
Ejemplo : Sumador completo de 8- bits
usando components
library ieee;
use ieee.std_logic_1164.all;
entity add2 is
port (A, B
sum_out
end add2;
: in std_logic_vector(7 downto 0);
: out std_logic_vector(8 downto 0));
architecture imp of add2 is
component full_adder
port (a, b, c : in std_ulogic;
sum, carry : out std_ulogic);
end component;
signal carry : std_ulogic_vector(6 downto 0);
begin
bit0 : full_adder port map (a => A(0), b => B(0), c => ’0’, sum => sum_out(0), carry => carry(0));
bit1 : full_adder port map (a => A(1), b => B(1), c => carry(0), sum => sum_out (1), carry => carry(1));
bit2 : full_adder port map (a => A(2), b => B(2), c => carry(1), sum => sum_out (2), carry => carry(2));
bit3 : full_adder port map (a => A(3), b => B(3), c => carry(2), sum => sum_out (3), carry => carry(3));
bit4 : full_adder port map (a => A(4), b => B(4), c => carry(3), sum => sum_out (4), carry => carry(4));
bit5 : full_adder port map (a => A(5), b => B(5), c => carry(4), sum => sum_out (5), carry => carry(5));
bit6 : full_adder port map (a => A(6), b => B(6), c => carry(5), sum => sum_out (6), carry => carry(6));
bit7 : full_adder port map (a => A(7), b => B(7), c => carry(6), sum => sum_out (7), carry => sum_out (8));
end imp;
22
Departamento de Ing. Electrónica
Circuitos Digitales II
2008-2
Universidad de Antioquia
Síntesis vs Simulación



Todos los diseños sintetizables pueden ser simulados.
No todos los diseños para simulación pueden ser
sintetizados.
Considere, por ejemplo, el siguiente código:
23
Departamento de Ing. Electrónica
Circuitos Digitales II
2008-2
Universidad de Antioquia
Síntesis vs Simulación (…cont)

La entrada din es asignada a dout después de
10ns (after 10ns)






Puede esto representar un sistema del mundo real ? SI
Será posible de implementar esto en un dispositivo ? TAL VEZ
Será posible de implementar esto en todos los dispositivos ? NO
Esta arquitectura puede ser simulado más no
sintetizado.
Algunas herramientas de diseño en VHDL sólo
permiten el uso de palabras claves sintetizables.
La mayoría de las herramientas aceptan un
subconjunto sintetizable de VHDL’93.
24
Departamento de Ing. Electrónica
Circuitos Digitales II
2008-2
Universidad de Antioquia
Test Bench (Banco de Prueba)
-- Modelo VHDL para elaboración de un testbench en VHDL:
 Eventualmente
WORK
es
la
LIBRARY IEEE;
colección de diseños que se desean
USE IEEE.std_logic_1164.all;
simular.
LIBRARY WORK;
USE WORK.all;
------------------------------------------------------------------------ Declaración del banco de prueba  No hay interface externa.
 Básicamente debido a que la
----------------------------------------------------------------------declaración de un Testbench no es
en si mismo un bloque circuital.
ENTITY mux2a1_tb IS
 Es sólo la especificación temporal
END ENTITY mux2a1_tb;
de variaciones de señales para
efectos de simulación.
25
Departamento de Ing. Electrónica
Circuitos Digitales II
2008-2
Universidad de Antioquia
Componentes del TestBench
----------------------------------------------------------------- Definición del banco de prueba
---------------------------------------------------------------ARCHITECTURE prueba OF mux2a1_tb IS
-- Declaración del componente bajo prueba (cbp)
COMPONENT mux2a1 IS
PORT( s
: IN std_logic ;
a,b
: IN std_logic_vector(7 DOWNTO 0);
o
: OUT std_logic_vector(7 DOWNTO 0)
);
END COMPONENT mux2a1;
-- selector
-- entradas
-- salida
-- Declaración de señales de prueba
SIGNAL clk
SIGNAL a,b,o
: std_logic;
: std_logic_vector(7 DOWNTO 0);
26
Departamento de Ing. Electrónica
Circuitos Digitales II
2008-2
Universidad de Antioquia
Instancias y procesos del testbench
BEGIN
cbp : COMPONENT mux2a1
PORT MAP( clk ,a,b,o);
reloj: PROCESS IS
BEGIN
clk <= '1';
WAIT FOR 25 ns ;
clk <= '0';
WAIT FOR 25 ns ;
END PROCESS reloj;
estimulación: PROCESS IS
BEGIN
a <= "01010101";
b <= "00001111";
WAIT ;
END PROCESS estimulación;
-- instancia del dispositivo
Component/Port
map :
Genera una instancia del
-- generación
de reloj
componente
y lo conecta a las
señales del circuito al cual
pertenece.
Wait/wait for:
-- patrones de estimulación
Le indican al simulador que
-- define entrada 'a' esperen infinitamente por el
-- define entrada 'b' tiempo especificado.
END ARCHITECTURE prueba;
27
Departamento de Ing. Electrónica
Circuitos Digitales II
2008-2
Universidad de Antioquia
Generics

Generics provide a method to communicate static
information to an architecture from the external
environment. They are passed through the entity
construct.
28
Departamento de Ing. Electrónica
Circuitos Digitales II
2008-2
Universidad de Antioquia
Generics – Example
29
Departamento de Ing. Electrónica
Circuitos Digitales II
2008-2
Universidad de Antioquia
Generic Map
30
Departamento de Ing. Electrónica
Circuitos Digitales II
2008-2
Universidad de Antioquia
Generic Map : Sintax
31
Departamento de Ing. Electrónica
Circuitos Digitales II
2008-2
Universidad de Antioquia
Another Example
32
Departamento de Ing. Electrónica
Circuitos Digitales II
2008-2
Universidad de Antioquia
Generate Statement
FOR-scheme and IF-Scheme
33
Generate Statement




VHDL provides the GENERATE statement to create
well-patterned structures easily.
Some structures in digital hardware are repetitive in
nature (e.g. RAMs, adders).
Any VHDL concurrent statement may be included in
a GENERATE statement, including another
GENERATE statement.
Specifically, component instantiations may be made
within GENERATE bodies
34
Departamento de Ing. Electrónica
Circuitos Digitales II
2008-2
Universidad de Antioquia
Generate Statement (…cont)

VHDL provides two different
GENERATE statement :





schemes
of
the
FOR-scheme
IF-scheme.
The FOR-scheme is reminiscent of a FOR loop used for
sequence control in many programming languages.
The FOR-scheme generates the included concurrent
statements the assigned number of times.
In the FOR-scheme, all of the generated concurrent
statements must be the same.
35
Departamento de Ing. Electrónica
Circuitos Digitales II
2008-2
Universidad de Antioquia
For – Scheme



All objects created are similar
The GENERATE parameter must be discrete and is
undefined outside the GENERATE statement (i.e. it is
not a variable or signal visible elsewhere in the
architecture).
Loop cannot be terminated early
36
Departamento de Ing. Electrónica
Circuitos Digitales II
2008-2
Universidad de Antioquia
For – Scheme : Example
37
Departamento de Ing. Electrónica
Circuitos Digitales II
2008-2
Universidad de Antioquia
IF – Scheme


Allows for conditional creation of components.
Cannot use ELSE or ELSIF clauses with the IFscheme.
38
Departamento de Ing. Electrónica
Circuitos Digitales II
2008-2
Universidad de Antioquia
IF – Scheme (…cont)


One obvious difference between this scheme and
the FOR-scheme is that all the concurrent
statements generated do not have to be the same.
While this IF statement may seem reminiscent to the
IF-THEN ELSE constructs in programming
languages, note that the GENERATE IF-scheme
does not provide ELSE or ELSIF clauses.
39
Departamento de Ing. Electrónica
Circuitos Digitales II
2008-2
Universidad de Antioquia
IF – Scheme : Example
40
Departamento de Ing. Electrónica
Circuitos Digitales II
2008-2
Universidad de Antioquia