Circuitos Digitales II

Download Report

Transcript Circuitos Digitales II

Departamento de Ingeniería Electrónica
Facultad de Ingeniería
Circuitos Digitales II
Elementos del VHDL (2da parte)
Semana No.4
Semestre 2008-2
Prof. Gustavo Patiño
[email protected]
Prof. Eugenio Duque
[email protected]
1
Temario

Ejemplo de Asignaciones










Modelo estructural de Nivel de Puertas Lógicas
Modelo estructural RTL Asignación condicional
Modelo estructural RTL Asignación seleccionada
Modelo comportamental definido dentro de un process y usando
IF-ELSE
Modelo comportamental definido dentro de un process y usando
CASE
Modelo comportamental definido dentro de un process y usando
FOR
Operadores Aritméticos
VHDL Estructural
Síntesis vs Simulación
Test Bench (Banco de Prueba)
2
Departamento de Ing. Electrónica
Circuitos Digitales II
2008-2
Universidad de Antioquia
Recordando….

Instrucciones de Asignación concurrentes


Sólo dentro de arquitecturas
Tipos de asignación concurrentes :
Asignación básica de señal
Asignación de señal condicional
1.
2.

Asignación de señal seleccionada
3.


When – Else
With – Select – When
Instrucciones de Asignación dentro de Process


Instrucciones secuenciales
Tipos de asignación :
Asignación básica de señal
Asignación de señal condicional
1.
2.

If – Elsif – Else – End if
Asignación de señal seleccionada
3.

Case – When – End case
3
Departamento de Ing. Electrónica
Circuitos Digitales II
2008-2
Universidad de Antioquia
Ejemplo Final de Tipos de Asignación :
Mux de dos entradas de 4 bits

Seis (6) formas diferentes de escribir
el mismo sistema.

Diferentes niveles de abstracción.
4
Modelo de Nivel de Puertas Lógicas
-- MUX de dos entradas de cuatro bits
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY quad_2_input IS
PORT
( select_data
data_a, data_b
data_q
);
: IN STD_LOGIC;
: IN STD_LOGIC_VECTOR(3 DOWNTO 0);
: OUT STD_LOGIC_VECTOR(3 DOWNTO 0)
END quad_2_input;
ARCHITECTURE gates_only OF quad_2_input IS
BEGIN
data_q(0) <= (data_a(0) AND NOT select_data) OR (data_b(0) AND select_data);
data_q(1) <= (data_a(1) AND NOT select_data) OR (data_b(1) AND select_data);
data_q(2) <= (data_a(2) AND NOT select_data) OR (data_b(2) AND select_data);
data_q(3) <= (data_a(3) AND NOT select_data) OR (data_b(3) AND select_data);
END gates_only;
5
Departamento de Ing. Electrónica
Circuitos Digitales II
2008-2
Universidad de Antioquia
Modelo RTL Asignación condicional
-- MUX de dos entradas de cuatro bits
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY quad_2_input IS
PORT
( select_data
: IN STD_LOGIC;
data_a, data_b : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
data_q
: OUT STD_LOGIC_VECTOR(3 DOWNTO 0)
);
END quad_2_input;
ARCHITECTURE conditional_assign OF quad_2_input IS
BEGIN
data_q <= data_a WHEN select_data = ’0’ ELSE
data_b;
END conditional_assign;
6
Departamento de Ing. Electrónica
Circuitos Digitales II
2008-2
Universidad de Antioquia
Modelo RTL Asignación seleccionada
-- MUX de dos entradas de cuatro bits
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY quad_2_input IS
PORT
( select_data
: IN STD_LOGIC;
data_a, data_b : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
data_q
: OUT STD_LOGIC_VECTOR(3 DOWNTO 0)
);
END quad_2_input;
ARCHITECTURE using_select OF quad_2_input IS
BEGIN
WITH select_data SELECT
data_q <= data_a WHEN ’0’,
data_b WHEN OTHERS,
END using_select;
7
Departamento de Ing. Electrónica
Circuitos Digitales II
2008-2
Universidad de Antioquia
Modelo comportamental definido dentro
de un process y usando IF-ELSE
-- MUX de dos entradas de cuatro bits
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY quad_2_input IS
PORT
(select_data
: IN STD_LOGIC;
data_a, data_b
: IN STD_LOGIC_VECTOR(3 DOWNTO 0);
data_q
: OUT STD_LOGIC_VECTOR(3 DOWNTO 0)
);
END quad_2_input;
ARCHITECTURE process_if OF quad_2_input IS
BEGIN
PROCESS (select_data, data_a, data_b)
BEGIN
IF (select_data = ’0’) THEN
data_q <= data_a;
ELSE
data_q <= data_b;
END IF;
END PROCESS;
END process_if;
8
Departamento de Ing. Electrónica
Circuitos Digitales II
2008-2
Universidad de Antioquia
Modelo comportamental definido dentro
de un process y usando CASE
-- MUX de dos entradas de cuatro bits
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY quad_2_input IS
PORT
(select_data
: IN STD_LOGIC;
data_a, data_b
: IN STD_LOGIC_VECTOR(3 DOWNTO 0);
data_q
: OUT STD_LOGIC_VECTOR(3 DOWNTO 0)
);
END quad_2_input;
ARCHITECTURE process_case OF quad_2_input IS
BEGIN
PROCESS (select_data, data_a, data_b)
BEGIN
CASE select_data IS
WHEN ’0’ =>
data_q <= data_a;
WHEN OTHERS =>
data_q <= data_b;
END CASE;
END PROCESS;
END process_case;
9
Departamento de Ing. Electrónica
Circuitos Digitales II
2008-2
Universidad de Antioquia
Modelo comportamental definido dentro
de un process y usando FOR
-- MUX de dos entradas de cuatro bits
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY quad_2_input IS
PORT
(select_data
: IN STD_LOGIC;
data_a, data_b
: IN STD_LOGIC_VECTOR(3 DOWNTO 0);
data_q
: OUT STD_LOGIC_VECTOR(3 DOWNTO 0)
);
END quad_2_input;
ARCHITECTURE process_loop OF quad_2_input IS
BEGIN
PROCESS (select_data, data_a, data_b)
BEGIN
FOR i IN 0 to 3 LOOP
data_q(i) <= (data_a(i) AND NOT select_data)
OR (data_b(i) AND select_data);
END LOOP;
END PROCESS;
END process_loop;
10
Departamento de Ing. Electrónica
Circuitos Digitales II
2008-2
Universidad de Antioquia
Arithmetic Operators in VHDL (1)
To use basic arithmetic operations involving
std_logic_vectors you need to include the following
library packages:
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_unsigned.all;
or
USE ieee.std_logic_signed.all;
Departamento de Ing. Electrónica
Circuitos Digitales II
2008-2
Universidad de Antioquia
Arithmetic Operators in VHDL (2)
You can use standard +, - operators to perform
addition and subtraction:
signal A :
signal B :
signal C :
STD_LOGIC_VECTOR(3 downto 0);
STD_LOGIC_VECTOR(3 downto 0);
STD_LOGIC_VECTOR(3 downto 0);
……
C <= A + B;
12
Departamento de Ing. Electrónica
Circuitos Digitales II
2008-2
Universidad de Antioquia
VHDL Estructural



Hasta ahora, cada dispositivo se ha diseñado,
compilado y simulado en forma independiente.
Para conectar varios dispositivos, se requiere definir
una arquitectura estructural (componentes +
conexiones)
Ejemplo mínimo: Test Bench
13
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.
14
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;
15
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:
16
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;
17
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;
18
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:
19
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.
20
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.
21
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);
22
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
componente
y lo conecta a las
-- generación
de reloj
señales del circuito al cual
pertenece.
Wait/wait for:
-- patrones de estimulación
Le indican al simulador que
esperen infinitamente por el
-- define entrada 'a'
-- define entrada 'b' tiempo especificado.
END ARCHITECTURE prueba;
23
Departamento de Ing. Electrónica
Circuitos Digitales II
2008-2
Universidad de Antioquia
Taller próxima clase

Actividad en clase

Taller para realizar en la próxima em preparación para
el Quiz No.1.


Multiplicador de 4 bits.
Quiz No. 1.

Miércoles 03 de diciembre del 2008.
Departamento de Ing. Electrónica
Circuitos Digitales II
2008-2
Universidad de Antioquia