Modelado de componentes Arquitectura de Computadoras Israel A. Suaste Rivas Universidad del Mayab
[email protected]
VHDL
Contenido
z
Modelado en VHDL - Niveles de abstracción
z
Ejemplos de modelado de diversos componentes z Unidades aritméticas z Memorias z Datapath z Otros
18/03/2006
VHDL
Niveles de abstracción para el modelado en VHDL
z
Nivel comportamental
z
Nivel estructural o de transferencia de registros
z
Nivel lógico
18/03/2006
VHDL z
Cuerpo de la arquitectura (Entidad) z z
z
Modelado Comportamental
Describe la implementación de una entidad Puede haber varias entradas y salidas por entidad
Arquitectura comportamental z z
Describe el algoritmo ejecutado por el módulo Contiene Procesos, donde cada uno tiene: z z z
18/03/2006
Comandos secuenciales, tales como Asignaciónd e señales y Comandos wait
VHDL
Ejemplo de Modelado Comportamental – Registro de 4-bits
architecture behav of reg4 is begin storage : process is variable stored_d0, stored_d1, stored_d2, stored_d3 : bit; begin if en = '1' and clk = '1' then stored_d0 := d0; stored_d1 := d1; stored_d2 := d2; stored_d3 := d3; end if; q0 <= stored_d0 after 5 ns; q1 <= stored_d1 after 5 ns; q2 <= stored_d2 after 5 ns; q3 <= stored_d3 after 5 ns; wait on d0, d1, d2, d3, en, clk; end process storage; end architecture behav;
18/03/2006
VHDL
Registro de 4-bits Implementado bit0 d_latch d q
d0
q0
clk bit1 d_latch d q
d1
q1
clk bit2 d_latch d q
d2
q2
clk bit3 d_latch d q
d3
en clk
18/03/2006
gate and2 a y b
clk int_clk
q3
Este es el diagrama esquemático del registro de 4 bits que se utiliza como ejemplo para mostrar la diferencia entre un diseño comportamental y uno estructural
VHDL
Modelado Estructural
z Arquitectura
estructural
Se implementa a través de subsistemas z Contiene z
z
Declaraciones de señales para conexiones internas z
z
Implementación de componentes z
z
18/03/2006
Se hace uso de entidades/arquitecturas previamente declaradas
Mapeo de puertos en las instancias z
z
Los puertos de la entidad son tratados como señales
Conecta señales a los puertos de los componentes
Comandos wait
VHDL
Ejemplo de una estructura – Código VHDL para el registro de 4-bits
Se declara la compuerta and y el latch D entity d_latch is port ( d, clk : in bit; q : out bit ); end entity d_latch; architecture arq of d_latch is begin latch_behavior : process is begin if clk = ‘1’ then q <= d after 2 ns; end if; wait on clk, d; end process latch_behavior; end architecture arq; 18/03/2006
entity and2 is port ( a, b : in bit; y : out bit ); end entity and2; architecture arq of and2 is begin and2_behavior : process is begin y <= a and b after 2 ns; wait on a, b; end process and2_behavior; end architecture arq;
VHDL
Ejemplo de una estructura – Código VHDL para el registro de 4-bits
Ahora se usan componentes para crear el registro architecture struct of reg4 is signal int_clk : bit; begin bit0 : entity work.d_latch(arq) port map ( d0, int_clk, q0 ); bit1 : entity work.d_latch(arq) port map ( d1, int_clk, q1 ); bit2 : entity work.d_latch(arq) port map ( d2, int_clk, q2 ); bit3 : entity work.d_latch(arq) port map ( d3, int_clk, q3 ); gate : entity work.and2(arq) port map ( en, clk, int_clk ); end architecture struct; 18/03/2006
VHDL
18/03/2006
Banco de Pruebas (Test Bench)
VHDL
Modelado lógico
z
Se hace en base a operaciones booleanas o tablas de verdad
z
Se interconectan compuertas
18/03/2006
VHDL
18/03/2006
Modelado lógico – Ejemplo Sumador de 1 bit con acarreo
VHDL z
Una arquitectura puede contener partes estructurales y de comportamiento z z
z
Combinación de modelado Comportamental y estructural
Procesos e instanciación de componenetes Procesos pueden leer y asignar señales
Ejemplo: Data path z z
18/03/2006
El flujo de datos se describe estructuralmente El control se describe en forma comportamental
VHDL
Ejemplo Data path multiplier
multiplicand
shift_reg
control_ section
shift_ adder
reg
product
18/03/2006
VHDL
Data path (1)
entity datap is port ( clk, reset : in bit; multiplicand, multiplier : in integer; product : out integer ); end entity datap; architecture mixed of datap is signal partial_product, full_product : integer; signal arith_control, result_en, mult_bit, mult_load : bit; begin arith_unit : entity work.shift_adder(behavior) port map ( addend => multiplicand, augend => full_product, sum => partial_product, add_control => arith_control ); result : entity work.reg(behavior) port map ( d => partial_product, q => full_product, en => result_en, reset => reset );
... 18/03/2006
VHDL
Data path (2)
… multiplier_sr : entity work.shift_reg(behavior) port map ( d => multiplier, q => mult_bit, load => mult_load, clk => clk ); product <= full_product; control_section : process is -- variable declarations for control_section -- … begin -- sequential statements to assign values to control signals -- … wait on clk, reset; end process control_section; end architecture mixed;
18/03/2006
VHDL
Unidades Aritméticas - Sumadores
z
La suma es la operación aritmética más común
z
Se usa como base para realizar otras operaciones (multiplicación y resta)
z
Existe una gran variedad de algoritmos para implementar la suma...
18/03/2006
VHDL
18/03/2006
Modelo comportamental de un sumador de 8 bits
VHDL
18/03/2006
Modelo estructural de un sumador de 8 bits (1)
VHDL
18/03/2006
Modelo estructural de un sumador de 8 bits (1)
VHDL
18/03/2006
Modelo estructural de un sumador de 8 bits (1)
VHDL
18/03/2006
Modelo comportamental de un multiplicador sin signo de 5x4 bits
VHDL
18/03/2006
Acumulador de 4 bits
VHDL
18/03/2006
RAM 32x8
VHDL
18/03/2006
ROM 32x8
VHDL z z z z z
Registros
Registro simple Registro con “load enable” Registro con “load enable” y “Async clear” Registro con “load enable”, “Async clear” y “Async set” Registro con “load enable”, “Sync clear” y “Sync set”
18/03/2006
VHDL
Registro simple
Registro Simple D
Clk
18/03/2006
Q
VHDL
Registro con “Load Enable”
Registro con Enable Data Enable Clk
18/03/2006
Q
VHDL
Registro con “Load Enable” y “Clear asincrono”
Registro con Enable y Clear Data Enable Clk ACLR
18/03/2006
Q
Registro con “Ser asincrono” “Load Enable” y “Clear asincrono”
VHDL
Registro con Enable y Clear ASET
Data Enable Clk ACLR
18/03/2006
Q
Registro con “Set sincrono” “Load Enable” y “Clear sincrono”
VHDL
Registro con Enable y Clear ASET
Data Enable Clk ACLR
18/03/2006
Q
VHDL
18/03/2006
Conversión de Códigos
VHDL
18/03/2006
Binario a BCD
VHDL
18/03/2006
Binario a Hot
VHDL
18/03/2006
Hot a binario
VHDL
18/03/2006
Hot a binario (2)
VHDL
18/03/2006
Priority encoder
VHDL
18/03/2006
Binario a Gray
VHDL
18/03/2006
Gray a Binario
VHDL z ADC z DAC
18/03/2006
VHDL
18/03/2006
ADC
VHDL
DAC (1)
Buffer de tercer estado
18/03/2006
VHDL
Buffer de Tercer Estado
sel my_in
my_out ibufe
18/03/2006
VHDL
Buffer Bidireccional
Buffer Bidireccional
e a b
18/03/2006
Y