170 likes | 357 Views
VHDL. Breve introducción. ¿Qué es VHDL?. Es un lenguaje formal de diseño basado en texto que permite describir la especificación (tanto estructura como comportamiento) de un sistema digital a alto nivel.
E N D
VHDL Breve introducción
¿Qué es VHDL? Es un lenguaje formal de diseño basado en texto que permite describir la especificación (tanto estructura como comportamiento) de un sistema digital a alto nivel. Sus siglas provienen de VeryhighspeedHardware Description (o design para algunos autores) Languaje: Lenguaje de alto nivel para descripción de hardware (IC digitales) de alta velocidad. Derivado de las iniciativas VHSIC y HDL. Desarrollado por IEEE. Otros: Verilog y ABEL (AdvancedBooleanEquationLanguage)
Potencialidades • Objetivo original era poder describir y simular circuitos integrados de muy alta velocidad previo a su fabricación (VHSIC y HDL) • Permite describir de manera formal un sistema digital a través de una notación (“programar el circuito”). • A partir de esta descripción formal de alto nivel, un software puede determinar los circuitos digitales que implemente la funcionalidad del sistema descrito: • Se pueden obtener los esquemas, las tablas de verdad, mapas de Karnaugh, etc. • Se puede implementar todo el sistema empleando lógica programable, CPLDs y FPGAs
Características y ventajas Sirve como herramienta de diseño lógico, posibilitando la documentación de los proyectos y su reutilización. Sirve como herramienta de especificación de proyectos. Permite generar proyectos con estructura del tipo jerárquica. Posibilita modelar el concepto de tiempo. Permite describir módulos con acciones que serán evaluadas luego en forma secuencial. Permite parametrizaciónde componentes y portabilidad de los diseños independientes de la tecnología. Permite implementación de test-bench para simulación de diseños.
Metodología • Se describen las operaciones de un sistema hardware empleando las siguientes acciones posibles: • Indicar QUE debe hacer modelando por “comportamiento” (behavior). • Indicar COMO debe funcionar utilizando “algoritmos”. • Indicar CON QUE hacerlo empleando “estructuras” o “flujo de datos”.
Niveles de abstracción de diseño • Funcional (Behavioral) • Algorítmico • De flujo de datos • Estructural • Físico
Proceso de diseño Sumador completo:
Proceso de diseño ENTITY full_adder IS PORT (a, b, cin: IN BIT; s, cout: OUT BIT); END full_adder; ARCHITECTURE dataflow OF full_adder IS BEGIN s <= a XOR b XOR cin; cout<= (a AND b) OR (a AND cin) OR (b AND cin); END dataflow; Definimos su archivo hdl:
Proceso de diseño ENTITY full_adder IS PORT (a, b, cin: IN BIT; s, cout: OUT BIT); END full_adder; ARCHITECTURE dataflow OF full_adder IS BEGIN s <= a XOR b XOR cin; cout<= (a AND b) OR (a AND cin) OR (b AND cin); END dataflow; Síntesis Compilación Programación (place and route) del Dispositivo Hardware Compilación Optimización Del hdl se realiza la síntesis y programación del dispositivo en lógica programable (FPGA o CPLD, por ejemplo) o se da a construir como IC:
Estructura del archivo • Diferentes estilos según el nivel de abstracción Funcional o Estructural. • Conformado por Unidades o estructuras: LIBRARY, PACKAGE, ENTITY y ARCHITECTURE. • Al menos Entity y Architecture son requeridas. • LIBRARY: Contiene la lista de todaslasbibliotecas a serusadas en el diseño. Porejemplo:ieee, std, work, etc. • ENTITY : Describe lasentradas y salidas (pines) del circuito (Estructura). • ARCHITECTURE : Contiene el código VHDL propiamente, define el comportamiento o funcionalidad del circuito. • PACKAGE: Es una forma para almacenar y usar información útil que describe a un modelo (relacionada con library)
Estructura del archivo Entity NAME_OF_ENTITY is [ genericgeneric_declarations);] port (signal_names: modetype; : signal_names: mode type); end [NAME_OF_ENTITY] ; Architecture NAME_OF_ARCHITECTURE offull_adderIS BEGIN s <= a XOR b XOR cin; cout <= (a AND b) OR (a AND cin) OR (b AND cin); END dataflow;
Ejemplo de archivo VHDL ENTITY full_adder IS PORT (a, b, cin: IN BIT; s, cout: OUT BIT); END full_adder; ARCHITECTURE dataflow OF full_adder IS BEGIN s <= a XOR b XOR cin; cout <= (a AND b) OR (a AND cin) OR (b AND cin); END dataflow;
Opciones para la asignación • Usarel ISE WebPACKde Xilinx • Software muypotente y completo • Propietario • Gran tamaño (5.9 GB) • Usar el Hardware Simulator de NAND2TETRIS • Software simplificado, con sintaxis un tantodiferente. • Free • Menortamaño