1 / 17

VHDL + Alliance

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).

Download Presentation

VHDL + Alliance

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. VHDL+Alliance

  2. 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). • 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.

  3. 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).

  4. Tipos de Datos • Tipos 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);

  5. Describiendo comportamiento Entity componente is generic( declaraciones genéricas; ); port( declaraciones de ports; ); End componente; Architecture comportamiento of componente is Begin descripción de comportamiento; End comportamiento;

  6. Ejemplo: a2_y.vbe ENTITY 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…

  7. Ejemplo: a2_y.vbe 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 Declaration ARCHITECTURE behaviour_data_flow OF a2_y IS BEGIN ASSERT ((vdd and not (vss)) = '1') REPORT "power supply is missing on a2_y" SEVERITY WARNING; t <= (i0 and i1); END;

  8. VHDL - Especificando estructura • Definir interfaz del componente. • Entity identifier is • entity_header • entity_declarative_part • end 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 ]

  9. Ejemplo • Entity 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 entrada Puertos de salida

  10. Describiendo la arquitectura • architecture identifier of entity_name is • architecture_declarative_part • begin • 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.

  11. Instanciando componentes component_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.

  12. XOR con AND, OR y NOT A xor B= (A and (not B)) or ((not A) and B)

  13. Diagrama del circuito n1_y a2_y A o2_y B

  14. Alliance • Conjunto de herramientas para desarrollo y validación de circuitos utilizando VHDL como lenguaje. • Disponible para Linux y Windows – Licencia GNU • Provee muchas herramientas: • Asimut • Genlib • Bsg • Rage • Mips_asm • Etc... • En esta primer parte, vamos a utilizar la herramienta de simulación Asimut.

  15. Asimut: generalidades • Uso: 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

  16. Asimut: Archivo Patrón Son 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’).

  17. Asimut: Archivo Patrón ejemplo • Prueba_mi_xor.pat • in a B;: • in b B;; • out result B;: • begin • 1: 0 0 *; • 2 : 1 0 *; • 3 : 0 1 *; • 4 : 1 1 *; • end;

More Related