VHDL + Alliance

17
VHDL VHDL + + Alliance Alliance

description

VHDL + Alliance. VHDL. Desarrollado para el Very High Speed Integrated Circuits Program del gobierno de EEUU. Luego, standard de la IEEE. Objetivos para el lenguaje: Permitir descripción de la estructura de un diseño (descripción estructural). - PowerPoint PPT Presentation

Transcript of VHDL + Alliance

Page 1: VHDL + Alliance

VHDLVHDL++

AllianceAlliance

Page 2: VHDL + Alliance

VHDLDesarrollado para el Very High Speed Integrated Circuits Program del gobierno de EEUU.

Luego, standard de la IEEE.

Objetivos para el lenguaje:

Permitir descripción de la estructura de un diseño (descripción estructural).

Especificar la funcionalidad usando estructuras similares a las de lenguajes de programación familiares (Ada) (descripción de comportamiento).

Simulación de los diseños.

Permite describir un componente mediante dos enfoques: comportamiento y estructura.

Page 3: VHDL + Alliance

Comportamiento vs Estructura

Comportamiento

Enfoque “caja negra”

Se especifican las salidas en función de las entradas.

En una descripción jerárquica, las hojas son descripciones de comportamiento.

Ej: a2_y.vbe (compuerta AND de dos entradas)

Estructura

Enfoque “caja blanca”

Se especifica la manera de interconectar los componentes que forman el diseño.

En una descripción jerárquica los nodos internos especifican estructura.

Ej: mux4.vst (multiplexor de 4 a 1 de 1 bit de ancho).

Page 4: VHDL + Alliance

Tipos de DatosTipos de datos escalares (númericos, enumerados, algunos predefinidos) y compuestos (arreglos y records).

Para nuestro trabajo nos vamos a manejar con los siguientes tipos:

BIT:

type BIT is (‘0’, ‘1’);

BIT_VECTOR:

type BIT_VECTOR is array ( range ) of BIT;

Donde el rango se especifica de la siguiente manera:

range ::= simple_expression direction simple_expression

direction ::= to | downto

Ej:

Entrada_ALU: BIT_VECTOR (0 to 5);

Salida_ALU: BIT_VECTOR (8 downto 3);

Page 5: VHDL + Alliance

Describiendo comportamientoEntity componente is

generic(declaraciones genéricas;

);port(

declaraciones de ports;);

End componente;Architecture comportamiento of componente isBegin

descripción de comportamiento;End comportamiento;

Page 6: VHDL + Alliance

Ejemplo: a2_y.vbeENTITY a2_y IS GENERIC ( CONSTANT area : NATURAL := 1008; -- area CONSTANT cin_i0 : NATURAL := 39; -- cin_i0 CONSTANT tpll_i0 : NATURAL := 1244; -- tpll_i0 CONSTANT rdown_i0 : NATURAL := 2048; -- rdown_i0 CONSTANT tphh_i0 : NATURAL := 1122; -- tphh_i0 CONSTANT rup_i0 : NATURAL := 1848; -- rup_i0 CONSTANT cin_i1 : NATURAL := 39; -- cin_i1 CONSTANT tpll_i1 : NATURAL := 1319; -- tpll_i1 CONSTANT rdown_i1 : NATURAL := 2048; -- rdown_i1 CONSTANT tphh_i1 : NATURAL := 1029; -- tphh_i1 CONSTANT rup_i1 : NATURAL := 1848 -- rup_i1 );

Sigue en la próxima transparencia…

Page 7: VHDL + Alliance

PORT ( i0 : in BIT; -- i0 i1 : in BIT; -- i1 t : out BIT; -- t vdd : in BIT; -- vdd vss : in BIT -- vss );END a2_y;-- Architecture DeclarationARCHITECTURE behaviour_data_flow OF a2_y ISBEGIN ASSERT ((vdd and not (vss)) = '1') REPORT "power supply is missing on a2_y" SEVERITY WARNING;t <= (i0 and i1);END;

Ejemplo: a2_y.vbe

Page 8: VHDL + Alliance

VHDL - Especificando estructura•Definir interfaz del componente.

Entity identifier is

entity_header

entity_declarative_partend identifier

entity_header ::=

[generic_clause]

[port_clause]

generic_clause ::= generic (generic_list) ;

port_clause ::= port( port_list) ;

Cada elemento del generic_list es de la forma:

[constant] identifier_list : [in] subtype_indication [:= expression ]

Cada elemento del port_list es de la forma:

[signal] identifier_list : [mode] subtype_indication [bus] [:= expression ]

Page 9: VHDL + Alliance

EjemploEntity alu1 is

port( a : in bit;

b : in bit;

carry_in : in bit;res : out bit;

carry_out : out bit ;

vdd, vss: in bit);end alu1;

‘alu1’ será una entidad con tres puertos de entrada de un bit cada uno (a, b, carry_in) , y dos puertos de salida (res, carry_out) de un bit cada uno, además de las señales de tierra y alimentación.

Ahora, queda declarar los componentes de nuestra entidad, instanciarlos y definir su interconexión => la arquitectura de nuestro diseño.

Puertos de salida

Puertos deentrada

Page 10: VHDL + Alliance

Describiendo la arquitecturaarchitecture identifier of entity_name is

architecture_declarative_partbegin

architecture_statement_part

end identifier;

En la parte declarativa en general pondremos declaraciones de señales internas o de componentes.

signal_declaration ::= signal identifier_list : subtype_indication [register | bus] [ := expr.]

component_declaration ::= component identifier

[generic_clause]

[port_clause]

end component;

En la parte de comandos instanciaremos los componentes, de la siguiente manera.

Page 11: VHDL + Alliance

Instanciando componentescomponent_instatiation_statement ::=

label: component_name

[generic_map_aspect]

[port_map_aspect]

Ejemplo:

enable_gate: nand3

port map ( a => en1, b => en2, c => int_req, y => interrupt);

parameter_rom: read_only_memory

generic_map (data_bits => 16, addr_bits => 8);

port_map (en => rom_sel, data => param, addr => a (7 downto 0);

Ahora, pasemos a un ejemplo completo.... Construyamos un XOR usando compuertas AND y NOT.

Page 12: VHDL + Alliance

XOR con AND, OR y NOT

A B A xor B

0 0 0

0 1 1

1 0 1

1 1 0

A xor B= (A and (not B)) or ((not A) and B)

Page 13: VHDL + Alliance

Diagrama del circuito

A

B

n1_y a2_y

o2_y

Page 14: VHDL + Alliance

AllianceAllianceConjunto de herramientas para desarrollo y validación de circuitos utilizando VHDL como lenguaje.

Disponible para Linux y Windows – Licencia GNU

Provee muchas herramientas:AsimutGenlibBsgRageMips_asmEtc...

En esta primer parte, vamos a utilizar la herramienta de simulación Asimut.

Page 15: VHDL + Alliance

Asimut: generalidadesUso: asimut [opciones] archivo_vhdl archivo_patrón archivo_resultado

Los archivos VHDL pueden ser descripciones estructurales (.vst) o de comportamiento (.vbe)

Los componentes referenciados por el archivo_vhdl se buscan usando el siguiente orden:

Descripcion de comportamiento (vbe) en el path MBK_CATA_LIB.

Descripcion estructural (vst) en el directorio actual.

Los resultado se escriben en el directorio indicado por MBK_WORK_LIB

Opciones mas usadas:

-c : solo compilar. OJO! Muchos errores se detectan sólo al linkear.

Ejemplo: asimut mi_xor prueba_mi_xor resultado_mi_xor

Page 16: VHDL + Alliance

Asimut: Archivo PatrónSon archivos que contienen las pruebas a realizar sobre los componentes.

Estructura:

[in | out | signal] <nombre_de_señal> [tipo_de_dato];Begin<nombre_patron>: <lista de valores>..End;

Donde la <lista de valores> puede contener caracteres comodín (‘*’), valores fijos (‘1’,’0’) o valores a validar (‘?0’).

Page 17: VHDL + Alliance

Asimut: Archivo Patrón ejemplo

Prueba_mi_xor.pat

in a B;:in b B;;out result B;:begin1 : 0 0 *;2 : 1 0 *;3 : 0 1 *;4 : 1 1 *;end;