You are on page 1of 44

Modelado de componentes

Arquitectura de Computadoras
Israel A. Suaste Rivas
Universidad del Mayab

Israel_suaste@yahoo.com.mx
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
Niveles de abstracción
VHDL para el modelado en VHDL

z Nivel comportamental

z Nivel estructural o de transferencia de


registros

z Nivel lógico

18/03/2006
VHDL Modelado Comportamental
z Cuerpo de la arquitectura (Entidad)
z Describe la implementación de una entidad
z Puede haber varias entradas y salidas por entidad

z Arquitectura comportamental
z Describe el algoritmo ejecutado por el módulo
z Contiene Procesos, donde cada uno tiene:
z Comandos secuenciales, tales como
z Asignaciónd e señales y
z Comandos wait

18/03/2006
Ejemplo de Modelado Comportamental
VHDL – 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
d0 q0
d q
clk
Este es el diagrama
bit1 esquemático del registro
d_latch
d1
d q
q1 de 4 bits que se utiliza
clk como ejemplo para
bit2
mostrar la diferencia
d2
d_latch
q2
entre un diseño
d q
comportamental y uno
clk
estructural
bit3
d_latch
d3 q3
d q

gate clk
and2
en int_clk
a y
clk
b

18/03/2006
VHDL Modelado Estructural
z Arquitectura estructural
z Se implementa a través de subsistemas
z Contiene
z Declaraciones de señales para conexiones
internas
z Los puertos de la entidad son tratados como señales
z Implementación de componentes
z Se hace uso de entidades/arquitecturas previamente
declaradas
z Mapeo de puertos en las instancias
z Conecta señales a los puertos de los componentes
z Comandos wait

18/03/2006
Ejemplo de una estructura
VHDL – 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 ); entity and2 is
end entity d_latch; port ( a, b : in bit; y : out bit );
end entity and2;
architecture arq of d_latch is
begin architecture arq of and2 is
begin
latch_behavior : process is
begin and2_behavior : process is
if clk = ‘1’ then begin
q <= d after 2 ns; y <= a and b after 2 ns;
end if; wait on a, b;
wait on clk, d; end process and2_behavior;
end process latch_behavior; end architecture arq;
end architecture arq;

18/03/2006
Ejemplo de una estructura
VHDL – 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 Banco de Pruebas (Test Bench)

18/03/2006
VHDL Modelado lógico

z Se hace en base a operaciones


booleanas o tablas de verdad

z Se interconectan compuertas

18/03/2006
Modelado lógico – Ejemplo
VHDL Sumador de 1 bit con acarreo

18/03/2006
Combinación de modelado
VHDL Comportamental y estructural

z Una arquitectura puede contener partes


estructurales y de comportamiento
z Procesos e instanciación de componenetes
z Procesos pueden leer y asignar señales

z Ejemplo: Data path


z El flujo de datos se describe estructuralmente
z El control se describe en forma comportamental

18/03/2006
VHDL Ejemplo Data path

multiplier multiplicand

shift_reg

control_ shift_
section 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
Modelo comportamental
VHDL de un sumador de 8 bits

18/03/2006
Modelo estructural de un
VHDL sumador de 8 bits (1)

18/03/2006
Modelo estructural de un
VHDL sumador de 8 bits (1)

18/03/2006
Modelo estructural de un
VHDL sumador de 8 bits (1)

18/03/2006
Modelo comportamental de un
VHDL multiplicador sin signo de 5x4 bits

18/03/2006
VHDL Acumulador de 4 bits

18/03/2006
VHDL RAM 32x8

18/03/2006
VHDL ROM 32x8

18/03/2006
VHDL Registros

z Registro simple
z Registro con “load enable”
z Registro con “load enable” y “Async clear”
z Registro con “load enable”, “Async clear” y “Async
set”
z Registro con “load enable”, “Sync clear” y “Sync
set”

18/03/2006
VHDL Registro simple

Registro Simple

D Q

Clk

18/03/2006
Registro con
VHDL “Load Enable”

Registro con Enable

Data Q
Enable
Clk

18/03/2006
Registro con
VHDL “Load Enable” y “Clear asincrono”

Registro con
Enable y Clear

Data Q
Enable
Clk
ACLR

18/03/2006
Registro con “Ser asincrono”
VHDL “Load Enable” y “Clear asincrono”

Registro con
Enable y Clear

ASET
Data Q
Enable
Clk
ACLR

18/03/2006
Registro con “Set sincrono”
VHDL “Load Enable” y “Clear sincrono”

Registro con
Enable y Clear

ASET
Data Q
Enable
Clk
ACLR

18/03/2006
VHDL Conversión de Códigos

18/03/2006
VHDL Binario a BCD

18/03/2006
VHDL Binario a Hot

18/03/2006
VHDL Hot a binario

18/03/2006
VHDL Hot a binario (2)

18/03/2006
VHDL Priority encoder

18/03/2006
VHDL Binario a Gray

18/03/2006
VHDL Gray a Binario

18/03/2006
VHDL

z ADC
z DAC

18/03/2006
VHDL ADC

18/03/2006
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
e Bidireccional

a Y

18/03/2006

You might also like