viii. jerarquías de diseño en vhdl -...

17
1 VIII. Jerarquías de diseño en VHDL

Upload: nguyencong

Post on 05-Feb-2018

225 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: VIII. Jerarquías de diseño en VHDL - mixteco.utm.mxmixteco.utm.mx/~merg/AC/vhdl/8_Jerarquias_de_diseno.pdf · El estándar de VHDL permite manejar esta situación simplemente sin

1

VIII. Jerarquías de diseño en VHDL

Page 2: VIII. Jerarquías de diseño en VHDL - mixteco.utm.mxmixteco.utm.mx/~merg/AC/vhdl/8_Jerarquias_de_diseno.pdf · El estándar de VHDL permite manejar esta situación simplemente sin

2

Introducción

La descripción funcional describe al sistema en términos de sus operaciones. La

descripción estructural especifica cómo el sistema está hecho, cuales son sus

subsistemas o componentes y como es que ellos se interconectan.

La descripción estructural permite tener múltiples niveles de jerarquía y un

componente puede ser especificado, ya sea con una descripción 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.

Page 3: VIII. Jerarquías de diseño en VHDL - mixteco.utm.mxmixteco.utm.mx/~merg/AC/vhdl/8_Jerarquias_de_diseno.pdf · El estándar de VHDL permite manejar esta situación simplemente sin

3

COMP 4

COMP

2

COMP

3

COMP

1

COMP 11

COMP 13

COMP 12

CO

MP

13

1

CO

MP

13

2

Diferentes jerarquias en un sistema

Page 4: VIII. Jerarquías de diseño en VHDL - mixteco.utm.mxmixteco.utm.mx/~merg/AC/vhdl/8_Jerarquias_de_diseno.pdf · El estándar de VHDL permite manejar esta situación simplemente sin

4

Componentes de una descripción estructural

En una descripción estructural, los componentes se comunican entre si a través de

señales.

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 descripción estructural.

La instanciación de componentes es una proposición básica 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 cómo se hará la conexión entre los puertos del componente con las

señales del nivel jerárquico mas alto.

Page 5: VIII. Jerarquías de diseño en VHDL - mixteco.utm.mxmixteco.utm.mx/~merg/AC/vhdl/8_Jerarquias_de_diseno.pdf · El estándar de VHDL permite manejar esta situación simplemente sin

5

D

Clk

Q

A

BC

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

Page 6: VIII. Jerarquías de diseño en VHDL - mixteco.utm.mxmixteco.utm.mx/~merg/AC/vhdl/8_Jerarquias_de_diseno.pdf · El estándar de VHDL permite manejar esta situación simplemente sin

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;

Page 7: VIII. Jerarquías de diseño en VHDL - mixteco.utm.mxmixteco.utm.mx/~merg/AC/vhdl/8_Jerarquias_de_diseno.pdf · El estándar de VHDL permite manejar esta situación simplemente sin

7

Antes de que un componente pueda ser usado, éste debe ser instanciado.

La instanciación consiste en seleccionar una especificación compilada de la

librería 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 librería donde todos los elementos definidos

por el usuario son salvados.

Componentes e instanciación directa

de componentes

Page 8: VIII. Jerarquías de diseño en VHDL - mixteco.utm.mxmixteco.utm.mx/~merg/AC/vhdl/8_Jerarquias_de_diseno.pdf · El estándar de VHDL permite manejar esta situación simplemente sin

8

Instanciación Directa

Es la forma más simple de construir un sistema estructuralmente.

Se requiere la especificación compilada del componente a instanciar y la

proposición con la instanciación.

El nombre de la arquitectura es obligatorio cuando la entidad a instanciarse

tiene asociadas mas de una arquitectura. En otro caso, puede omitirse.

Page 9: VIII. Jerarquías de diseño en VHDL - mixteco.utm.mxmixteco.utm.mx/~merg/AC/vhdl/8_Jerarquias_de_diseno.pdf · El estándar de VHDL permite manejar esta situación simplemente sin

9

Mapeo de puertos por posiciones

Los mapas de puertos especifican las conexiones entre los puertos de una entidad

(componente) y las señales en la arquitectura donde los componentes son instanciados.

Existen dos formas para hacer el mapeo de puertos: Asociación de puertos posicional o

asociación de puertos por nombre.

En la asociación posicional, las señales 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 asociación sea posible, las señales 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;

So

me

Syste

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

Page 10: VIII. Jerarquías de diseño en VHDL - mixteco.utm.mxmixteco.utm.mx/~merg/AC/vhdl/8_Jerarquias_de_diseno.pdf · El estándar de VHDL permite manejar esta situación simplemente sin

10

Mapeo de puertos por nombre

En el mapeo por posiciones se debe tener cuidado del orden para no cometer errores.

La asociación de puertos por nombre da mayor claridad y reduce la posibilidad de

cometer errores, por que para cada asociación debe especificarse:el nombre de la

señal a asociar, el símbolo “ => ” 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

om

eS

yste

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

Page 11: VIII. Jerarquías de diseño en VHDL - mixteco.utm.mxmixteco.utm.mx/~merg/AC/vhdl/8_Jerarquias_de_diseno.pdf · El estándar de VHDL permite manejar esta situación simplemente sin

11

Asociaciones complejas

3

2

1

0

7

6

5

4

3

2

1

0

3

2

1

0

BANDERAS

MEMORIA

ACUMULADOR

OPERACIÓN_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;

Page 12: VIII. Jerarquías de diseño en VHDL - mixteco.utm.mxmixteco.utm.mx/~merg/AC/vhdl/8_Jerarquias_de_diseno.pdf · El estándar de VHDL permite manejar esta situación simplemente sin

12

Asociaciones complejas

VHDL proporciona flexibilidad para asociaciones complejas. Tanto señales

como puertos pueden ser asignadas elemento a elemento o bien por bloques.

Cualquier asignación de señales y puertos es permitida, siempre que se

conserve que los elementos son compatibles (del mismo tipo y tamaño).

. . . .

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

);

. . . .

Page 13: VIII. Jerarquías de diseño en VHDL - mixteco.utm.mxmixteco.utm.mx/~merg/AC/vhdl/8_Jerarquias_de_diseno.pdf · El estándar de VHDL permite manejar esta situación simplemente sin

13

Puertos sin conexión

Es posible que un puerto no este conectado, para ello debe especificarse como abierto

(open).

El estándar de VHDL permite manejar esta situación simplemente sin agregar al mapa

de puertos al puerto que se quedará sin conexión. Sin embargo, las herramientas de

simulación 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

Comp1Comp1 : 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

Comp2Comp2 : Entity Work.SomeEntity

port map (

Inpu1 => SigA,

Input2 => SigB,

Input3 => SigC,

Output1 => SigD,

Output2 => Open );

Page 14: VIII. Jerarquías de diseño en VHDL - mixteco.utm.mxmixteco.utm.mx/~merg/AC/vhdl/8_Jerarquias_de_diseno.pdf · El estándar de VHDL permite manejar esta situación simplemente sin

14

Instanciación por Componente

Para diseños grandes sería conveniente que todos los módulos se pudiesen

hacer por separado y que se pudiera hacer referencia a otros componentes

cuyo comportanmiento no ha sido aún especificado.

Para una especificación estructural sería suficiente con tener una declaración

de la interfaz del componente (como requisito del sistema).

La declaración de la interfaz del componente es llamada declaración del

componente (component declaration) y es ubicada en la parte declarativa del

cuerpo de la arquitectura (o en un paquete).

Instanciación Directa Instanciación del Componente

Instanciación del Componente

Declaración del Componente

Instanciación del Componente

Page 15: VIII. Jerarquías de diseño en VHDL - mixteco.utm.mxmixteco.utm.mx/~merg/AC/vhdl/8_Jerarquias_de_diseno.pdf · El estándar de VHDL permite manejar esta situación simplemente sin

15

Declaración de Componentes

La sintaxis para la declaración de componentes es muy similar a la declaración

de entidades, esto no es coincidencia puesto que los componentes y las

entidades juegan un papel similar en la definición de módulos externos.

Sintaxis: component nombre_del_componente is

generic ( lista de parámetros );

ports ( lista de puertos );

end component nombre_del_componente;

Ejemplo: Architecture Struct of Reg4 is

component DFF is

generic ( t_prop : time; -- tiempo de propagación

t_setup : time ); -- tiempo de ajuste

ports ( d, clk, rst : in Bit;

q : out Bit; );

end component DDF;

begin

. . . .

Page 16: VIII. Jerarquías de diseño en VHDL - mixteco.utm.mxmixteco.utm.mx/~merg/AC/vhdl/8_Jerarquias_de_diseno.pdf · El estándar de VHDL permite manejar esta situación simplemente sin

16

Entidades y Componentes

Existen dos diferencias importantes entre Entidades y Componentes:

La declaración de una Entidad define una interfaz de un módulo “real”, es

decir, un sistema o circuito que físicamente existe; el sistema es una

unidad de diseño separada y puede ser simulada individualmente,

analizada o sintetizada.

La declaración de un componente por otro lado define la interfaz de un

módulo “virtual” o que “no-existe”; es especificado dentro de una

arquitectura como para indicar que ahí se va a situar al componente “real”.

Page 17: VIII. Jerarquías de diseño en VHDL - mixteco.utm.mxmixteco.utm.mx/~merg/AC/vhdl/8_Jerarquias_de_diseno.pdf · El estándar de VHDL permite manejar esta situación simplemente sin

17

DClk

QRST

B

I

T

1DClk

QRST

B

I

T

0 DClk

QRST

B

I

T

3DClk

QRST

B

I

T

2

RegD(0)

RegQ(0) RegQ(1) RegQ(2) RegQ(3)

RegD(1) RegD(2) RegD(3)CLK

RstREG4B

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 propagación

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;