Você está na página 1de 17

1

VIII. Jerarquas de diseo en VHDL


2
Introduccin
La descripcin funcional describe al sistema en trminos de sus operaciones. La
descripcin estructural especifica cmo el sistema est hecho, cuales son sus
subsistemas o componentes y como es que ellos se interconectan.
La descripcin estructural permite tener mltiples niveles de jerarqua y un
componente puede ser especificado, ya sea con una descripcin funcional o
estructural.
En el segundo caso, tales componentes pueden a la vez contener una red de
elementos mas primitivos.
Finalmente, en el ltimo nivel, ste es especificado por su comportamiento.
3
COMP 4
COMP
2
COMP
3
COMP
1
COMP 11
COMP 13
COMP 12
C
O
M
P

1
3
1
C
O
M
P

1
3
2
Diferentes jerarquias en un sistema
4
Componentes de una descripcin estructural
En una descripcin estructural, los componentes se comunican entre si a travs de
seales.
Un componente puede ser un sistema individual especificado por medio de su Entidad
y Arquitectura, o bien puede ser insertado en la arquitectura con la palabra reservada
component.
Los componentes deben ser instanciados en la descripcin estructural.
La instanciacin de componentes es una proposicin bsica en una arquitectura
estructural.
Las diferentes instancias son concurrentes una con otra.
Un componente instanciado no est completo sin un mapa de sus puertos una
referencia de cmo se har la conexin entre los puertos del componente con las
seales del nivel jerrquico mas alto.
5
D
Clk
Q
A
B
C
Dex
Clkex
En Clkin
Qout
Entity Dlatch_en is
port (
Dex, Clkex, En : in bit;
Qout : out bit
);
End Entity Dlatch_en;
DLatch
AND2
Architecture Struct of Dlatch_en is
Signal Clkin : bit;
Begin
gate: entity work.And2 (beh)
port map ( A => Clkex,
B => En,
C => Clkin );
latch: entity work.DLatch (beh)
port map ( D => Dex,
clk => Clkin,
Q => Qout );
End Architecture Struct;
Dlatch_en
6
Entity And2 is
port (
A, B : in bit;
C : out bit
);
End Entity And2;
Architecture Beh of And2 is
Begin
C <= A and B after 2 ns;
End Architecture Beh;
Entity Dlatch is
port (
D, Clk : in bit;
Q : out bit
);
End Entity And2;
Architecture Beh of Dlatch is
Begin
Process (clk, D)
begin
if clk = 1 then
Q <= D after 3 ns;
end if;
end process;
End Architecture Beh;
7
Antes de que un componente pueda ser usado, ste debe ser instanciado.
La instanciacin consiste en seleccionar una especificacin compilada de la
librera y ligarla a la arquitectura donde ser usada.
Cada instancia de un componente contiene dos partes:
nombre_de_la_instancia : entity
work.nombre_de_la_entidad ( nombre_de_la_arquitectura )
Donde Work es el nombre de la librera donde todos los elementos definidos
por el usuario son salvados.
Componentes e instanciacin directa
de componentes
8
Instanciacin Directa
Es la forma ms simple de construir un sistema estructuralmente.
Se requiere la especificacin compilada del componente a instanciar y la
proposicin con la instanciacin.
El nombre de la arquitectura es obligatorio cuando la entidad a instanciarse
tiene asociadas mas de una arquitectura. En otro caso, puede omitirse.
9
Mapeo de puertos por posiciones
Los mapas de puertos especifican las conexiones entre los puertos de una entidad
(componente) y las seales en la arquitectura donde los componentes son instanciados.
Existen dos formas para hacer el mapeo de puertos: Asociacin de puertos posicional o
asociacin de puertos por nombre.
En la asociacin posicional, las seales en el mapa de puertos deben listarse en el
mismo orden en el cual se declararon los puertos en la entidad del componente. Para
que la asociacin sea posible, las seales deben ser del mismo tipo.
Entity And2 is
port ( A, B : in bit;
C : out bit );
End Entity And2;
Architecture Beh of And2 is
Begin
C <= A and B after 2 ns;
End Architecture Beh;
S
o
m
e
S
y
s
t
e
m
X
Y
Z
Entity SomeSystem is
. . . .
End Entity SomeSystem;
Architecture Struct of SomeSystem is
Begin
. . .
gate: entity work.And2 (beh)
port map ( , , );
. . . .
End Architecture Struct;
A
B
C
10
Mapeo de puertos por nombre
En el mapeo por posiciones se debe tener cuidado del orden para no cometer errores.
La asociacin de puertos por nombre da mayor claridad y reduce la posibilidad de
cometer errores, por que para cada asociacin debe especificarse:el nombre de la
seal a asociar, el smbolo => y el nombre del puerto como aparece en la entidad del
componente.
No importa el orden en que se realicen las asociaciones.
Entity And2 is
port ( A, B : in bit;
C : out bit );
End Entity And2;
Architecture Beh of And2 is
Begin
C <= A and B after 2 ns;
End Architecture Beh;
S
o
m
e
S
y
s
t
e
m
X
Y
Z
Entity SomeSystem is
. . . .
End Entity SomeSystem;
Architecture Struct of SomeSystem is
Begin
. . .
gate: entity work.And2 (beh)
port map ( A => , B => , C => );
. . . .
End Architecture Struct;
A
B
C
11
Asociaciones complejas
3
2
1
0
7
6
5
4
3
2
1
0
3
2
1
0
BANDERAS
MEMORIA
ACUMULADOR
OPERACIN_DE_REGISTROS
CF
ZF
OF
MF
Opcode(3)
Opcode(2)
Opcode(1)
Opcode(0)
OperandA(3)
OperandA(2)
OperandA(1)
OperandA(0)
OperandB(3)
OperandB(2)
OperandB(1)
OperandB(0)
Signal Banderas :
Bit_Vector ( 3 downto 0);
Signal Memoria :
Bit_Vector ( 7 downto 0);
Signal Acumulador :
Bit_Vector ( 3 downto 0);
Entity Op_Reg is
port (
CF : out bit;
ZF : out bit;
OF : out bit;
MF : out bit;
Opcode : in bit_vector( 3 downto 0);
OperandA : in bit_vector( 3 downto 0);
OperandB : in bit_vector( 3 downto 0)
);
End entity Op_Reg;
12
Asociaciones complejas
VHDL proporciona flexibilidad para asociaciones complejas. Tanto seales
como puertos pueden ser asignadas elemento a elemento o bien por bloques.
Cualquier asignacin de seales y puertos es permitida, siempre que se
conserve que los elementos son compatibles (del mismo tipo y tamao).
. . . .
Operation_Register : Entity Work.Op_Reg
port map (
CF => Flags(3),
ZF => Flags(2),
OF => Flags(1),
MF => Flags(0),
Opcode => Memoria ( 7 downto 4),
OperandA => Memoria (3 downto 0),
OperandB => Acumulador
);
. . . .
13
Puertos sin conexin
Es posible que un puerto no este conectado, para ello debe especificarse como abierto
(open).
El estndar de VHDL permite manejar esta situacin simplemente sin agregar al mapa
de puertos al puerto que se quedar sin conexin. Sin embargo, las herramientas de
simulacin muchas veces no dan estas facilidades por que el programa no puede
determinar si el puerto no aparece por que no estar conectado, o bien por olvido del
usuario.
Input1
Output1
Input2
Output2
Input3
SigA
SigB
SigC
SigD
SigE
Comp1
Comp1 : Entity Work.SomeEntity
port map (
Inpu1 => SigA,
Input2 => SigB,
Input3 => SigC,
Output1 => SigD,
Output2 => SigE );
Input1
Output1
Input2
Output2
Input3
SigA
SigB
SigC
SigD
SigE
Comp2
Comp2 : Entity Work.SomeEntity
port map (
Inpu1 => SigA,
Input2 => SigB,
Input3 => SigC,
Output1 => SigD,
Output2 => Open );
14
Instanciacin por Componente
Para diseos grandes sera conveniente que todos los mdulos se pudiesen
hacer por separado y que se pudiera hacer referencia a otros componentes
cuyo comportanmiento no ha sido an especificado.
Para una especificacin estructural sera suficiente con tener una declaracin
de la interfaz del componente (como requisito del sistema).
La declaracin de la interfaz del componente es llamada declaracin del
componente (component declaration) y es ubicada en la parte declarativa del
cuerpo de la arquitectura (o en un paquete).
Instanciacin Directa Instanciacin del Componente
Instanciacin del Componente
Declaracin del Componente
Instanciacin del Componente
15
Declaracin de Componentes
La sintaxis para la declaracin de componentes es muy similar a la declaracin
de entidades, esto no es coincidencia puesto que los componentes y las
entidades juegan un papel similar en la definicin de mdulos externos.
Sintaxis: component nombre_del_componente is
generic ( lista de parmetros );
ports ( lista de puertos );
end component nombre_del_componente;
Ejemplo: Architecture Struct of Reg4 is
component DFF is
generic ( t_prop : time; -- tiempo de propagacin
t_setup : time ); -- tiempo de ajuste
ports ( d, clk, rst : in Bit;
q : out Bit; );
end component DDF;
begin
. . . .
16
Entidades y Componentes
Existen dos diferencias importantes entre Entidades y Componentes:
La declaracin de una Entidad define una interfaz de un mdulo real, es
decir, un sistema o circuito que fsicamente existe; el sistema es una
unidad de diseo separada y puede ser simulada individualmente,
analizada o sintetizada.
La declaracin de un componente por otro lado define la interfaz de un
mdulo virtual o que no-existe; es especificado dentro de una
arquitectura como para indicar que ah se va a situar al componente real.
17
D Clk
Q
RST
B
I
T
1
D Clk
Q
RST
B
I
T
0
D Clk
Q
RST
B
I
T
3
D Clk
Q
RST
B
I
T
2
RegD(0)
RegQ(0) RegQ(1) RegQ(2) RegQ(3)
RegD(1)
RegD(2) RegD(3)
CLK
Rst
REG4B
Entity Reg4B is
port (
RegD : in bit_vector;
RegQ : out bit_vector;
Rst, Clk : in bit );
End entity Op_Reg;
Architecture Struct of Reg4B is
component DFF is
generic ( t_prop : time; -- tiempo de propagacin
t_setup : time ); -- tiempo de ajuste
ports ( d, clk, rst : in Bit;
q : out Bit; );
end component DDF;
Begin
bit0: Component DDF
generic map ( t_prop => 2 nS, t_setup => 1 nS )
port map ( D => RegD(0), Q => RegQ(0), Rst => Rst, Clk => clk );
. . . .
End Architecture Struct;

Você também pode gostar