Modelado de componentes

Arquitectura de Computadoras Israel A. Suaste Rivas Universidad del Mayab

Israel_suaste@yahoo.com.mx

VHDL

Contenido

Modelado en VHDL - Niveles de abstracción Ejemplos de modelado de diversos componentes Unidades aritméticas Memorias Datapath Otros

18/03/2006

VHDL

Niveles de abstracción para el modelado en VHDL

Nivel comportamental Nivel estructural o de transferencia de registros Nivel lógico

18/03/2006

VHDL

Modelado Comportamental

Cuerpo de la arquitectura (Entidad)
Describe la implementación de una entidad Puede haber varias entradas y salidas por entidad

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

18/03/2006

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
d0

Registro de 4-bits Implementado
bit0 d_latch d q clk bit1 d_latch d q clk bit2 d_latch d q clk bit3 d_latch d q gate and2 a y b clk int_clk q0

d1

q1

d2

q2

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

d3

q3

en clk

18/03/2006

VHDL

Modelado Estructural

Arquitectura estructural
Se implementa a través de subsistemas Contiene
Declaraciones de señales para conexiones internas
Los puertos de la entidad son tratados como señales

Implementación de componentes
Se hace uso de entidades/arquitecturas previamente declaradas

Mapeo de puertos en las instancias
Conecta señales a los puertos de los componentes

Comandos wait
18/03/2006

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
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;

Ahora se usan componentes para crear el registro

18/03/2006

VHDL

Banco de Pruebas (Test Bench)

18/03/2006

VHDL

Modelado lógico

Se hace en base a operaciones booleanas o tablas de verdad Se interconectan compuertas

18/03/2006

VHDL

Modelado lógico – Ejemplo Sumador de 1 bit con acarreo

18/03/2006

VHDL

Combinación de modelado Comportamental y estructural

Una arquitectura puede contener partes estructurales y de comportamiento
Procesos e instanciación de componenetes Procesos pueden leer y asignar señales

Ejemplo: Data path
El flujo de datos se describe estructuralmente El control se describe en forma comportamental

18/03/2006

VHDL
multiplier

Ejemplo Data path
multiplicand

shift_reg

control_ section

shift_ adder

reg

product

18/03/2006

VHDL
entity datap is port ( clk, reset : in bit; multiplicand, multiplier : in integer; product : out integer ); end entity datap;

Data path (1)

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

La suma es la operación aritmética más común Se usa como base para realizar otras operaciones (multiplicación y resta) Existe una gran variedad de algoritmos para implementar la suma...

18/03/2006

VHDL

Modelo comportamental de un sumador de 8 bits

18/03/2006

VHDL

Modelo estructural de un sumador de 8 bits (1)

18/03/2006

VHDL

Modelo estructural de un sumador de 8 bits (1)

18/03/2006

VHDL

Modelo estructural de un sumador de 8 bits (1)

18/03/2006

VHDL

Modelo comportamental de un 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

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 Q

Clk

18/03/2006

VHDL

Registro con “Load Enable”

Registro con Enable Data Enable Clk Q

18/03/2006

VHDL

Registro con “Load Enable” y “Clear asincrono”

Registro con Enable y Clear Data Enable Clk ACLR Q

18/03/2006

VHDL

Registro con “Ser asincrono” “Load Enable” y “Clear asincrono”

Registro con Enable y Clear
ASET

Data Enable Clk ACLR

Q

18/03/2006

VHDL

Registro con “Set sincrono” “Load Enable” y “Clear sincrono”

Registro con Enable y Clear
ASET

Data Enable Clk ACLR

Q

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
ADC 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

e a b

Buffer Bidireccional Y

18/03/2006

Sign up to vote on this title
UsefulNot useful