460 likes | 631 Views
Departamento de Ingeniería Electrónica Facultad de Ingeniería. Circuitos Digitales II. Introducción al VHDL Semana No.3 Semestre 2008-2 Prof. Gustavo Patiño gpatino@udea.edu.co Prof. Eugenio Duque eaduque@udea.edu.co. Recordando …. Niveles de Abstracción: Carta Y.
E N D
Departamento de Ingeniería Electrónica Facultad de Ingeniería Circuitos Digitales II Introducción al VHDL Semana No.3 Semestre 2008-2 Prof. Gustavo Patiño gpatino@udea.edu.co Prof. Eugenio Duque eaduque@udea.edu.co
Recordando ….Niveles de Abstracción: Carta Y Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
Recordando …. Proceso de Diseño Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
Recordando … Proceso de Diseño Behavioral Domain Structural Domain Synthesis Processors, Mem, Buses Registers, ALUs, MuXs, Gates, Flip-Flops Transistors Flowcharts, Algorithms Register Transfers Boolean Expressions Transistor Functions Transistor Layout Cells, Modules Chips, ASICs Implementation Boards, MCM Physical Domain Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
Introducción al VHDL Temario • Objetivos • Áreas de Aplicación • Terminología importante • Elementos básicos del VHDL • Unidades de Diseño • Descripción de Entidades (Entity’s) • Descripción de Arquitecturas (Architecture’s) • Ejemplo • Tipos de diseño • Niveles de Abstracción • Tipos de Arquitecturas • Modelado comportamental • Procesos • Concurrencia vs secuencia • Ejemplo. • Modelado estructural • Ejemplo. • Mezcla de ambas modelados • Paquetes y Configuración Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
Objetivos • Introducir los conceptos básicos de VHDL. • Lograr un razonable nivel de entendimiento que le permita escribir código VHDL para cualquier diseño que pudiera ser especificado usando un editor de esquemáticos con componentes de biblioteca. • Desarrollar un buen nivel de apreciación de la habilidad de VHDL de manipular diseños mezclados (estructurales, comportamentales y de flujo de datos (datapath)). • Aprender los elementos básicos de VHDL que le permitan realizar sus proyectos en CPLDs y/o FPGAs, y posteriormente probarlos. Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
Introducción al VHDL • VHDL es un lenguaje usado para describir el comportamiento de proyectos de circuitos digitales. • Los proyectos en VHDL pueden ser simulados y traducidos en un formato apropiado para la implementación en hardware. • El uso jerárquico de los diseños hechos en VHDL permite la rápida creación de proyectos de circuitos digitales complejos. Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
Areas de Aplicación del VHDL • Especificación de sistemas. • Captura del diseño de un proyecto. • Simulación. • Síntesis. • Desarrollo de pruebas (testing). • Verificación temporal. • Documentación. Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
Terminología importante • Simulación es la predicción del comportamiento de un proyecto circuital. • VHDL provee muchas características propias para la simulación de circuitos digitales. • La simulación funcional aproxima el comportamiento de un proyecto de hardware asumiendo de todas las salidas cambian al mismo tiempo. • La simulación temporal predice el comportamiento exacto de un proyecto de Hardware. • Síntesis en la traducción de un proyecto circuital en un archivo de netlist que describe la estructura de hardware de un circuito. • VHDL no fue diseñado para propósitos de síntesis. • No todos los componentes de VHDL son sintetizables. Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
Elementos Básicos de VHDL • Asignación de señal: • A <= B5 • • Comparaciones: • = /= > < >= <= • • Operaciones lógicas: • and xor or nand nor xnor not Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
Elementos Básicos de VHDL (…cont) • Condicionales : • If (estado_siguiente = espera) then …. else|elseif|endif • Lazos : • Fori in y’rangeloop …. endloop • Otros : • when/else case wait := Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
Elementos Básicos de VHDL (…cont) • Insensible a mayúsculas o minúsculas. • Terminación de enunciado: ; • Inicio de línea de comentario: -- -- • Los identificadores deben iniciar con una letra y pueden incluir caracteres alfanuméricos o guión bajo. • Concordancia estricta de tipo. Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
Unidades de diseño en VHDL • VHDL posee básicamente cinco unidades o componentes de diseño: • Descripción de Entidades (Entity´s). • Descripción de arquitecturas (Architecture´s). • Paquetes (Package). • Cuerpo de paquetes (Package body). • Configuraciones (Configuration´s). Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
Descripción de Entidades • Describen las entradas y las salidas de un módulo en un sistema. • Ocultan los detalles internos de un módulo. • Pueden ser usadas para describir módulos en muy bajos niveles de abstracción (p.enivel de puertas lógicas), así como un sistema completo (nivel de sistemas), y en niveles intermedios. Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
Modelado de Interfaces • Ejemplo : Declaración de una Entity • Describiendo los puertos de entrada y salida de un módulo. entity name port names port mode (direction) entity reg4 isport ( d0, d1, d2, d3, en, clk : in bit; q0, q1, q2, q3 : out bit );end entity reg4; punctuation reserved words port type Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
Descripción de la Arquitectura • Suministra una descripción estructural o funcional de una entidad. • Cada arquitectura es limitada solamente a una entidad – pero una entidad puede estar asociada a múltiples arquitecturas (solamente una a la vez, para una cierta simulación o síntesis). • Múltiples arquitecturas permiten descripciones tempranas del funcionamiento del módulo sin tener que diseñar todo a fin de comenzar la prueba funcional. Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
Descripción de la Arquitectura (…cont) Architecturearquitecturaofmodelois begin …. enunciados concurrentes …. end architecture arquitectura ; Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
Ejemplo Mux 2 a 1 LIBRARY IEEE; USE IEEE.std_logic_1164.all; ----------------------------------------------------------------------- -- Declaración del dispositivo ----------------------------------------------------------------------- ENTITY mux2a1 IS PORT( SIGNAL s: IN std_logic; -- selector SIGNALa,b: INstd_logic_vector(7 DOWNTO 0); -- entradas SIGNAL o: OUTstd_logic_vector(7 DOWNTO 0) --salida ); END ENTITY mux2a1; ----------------------------------------------------------------------- -- Definición del dispositivo, usando ecuaciones lógicas ----------------------------------------------------------------------- ARCHITECTURE bool_eqsOF mux2a1 IS SIGNALsel: std_logic_vector(7 DOWNTO 0); -- señal interna BEGIN sel<= (OTHERS => s); o <= (a AND (NOTsel)) OR (b ANDsel); END ARCHITECTUREbool_eqs; Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
Bibliotecas LIBRARY (Biblioteca): Colección de diseños y definiciones previos. USE: Diseños y definiciones de la biblioteca que será utilizada. LIBRARY IEEE; USE IEEE.std_logic_1164.all; ----------------------------------------------------------------------- -- Declaración del dispositivo ----------------------------------------------------------------------- ENTITY mux2a1 IS PORT( SIGNAL s: IN std_logic; -- selector SIGNAL a,b: IN std_logic_vector(7 DOWNTO 0); -- entradas SIGNAL o: OUT std_logic_vector(7 DOWNTO 0) --salida ); END ENTITY mux2a1; ----------------------------------------------------------------------- -- Definición del dispositivo, usando ecuaciones lógicas ----------------------------------------------------------------------- ARCHITECTURE bool_eqs OF mux2a1 IS SIGNAL sel: std_logic_vector(7 DOWNTO 0); -- señal interna BEGIN sel <= (OTHERS => s); o <= (a AND (NOT sel)) OR (b AND sel); END ARCHITECTURE bool_eqs; Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
Bibliotecas (…cont) Std_logic_1164 (lógica multivaluada) : ‘1’ ‘0’ ‘Z’ ‘-’ ‘X’ ‘U’ LIBRARY IEEE; USE IEEE.std_logic_1164.all; ----------------------------------------------------------------------- -- Declaración del dispositivo ----------------------------------------------------------------------- ENTITY mux2a1 IS PORT( SIGNAL s: IN std_logic; -- selector SIGNAL a,b: IN std_logic_vector(7 DOWNTO 0); -- entradas SIGNAL o: OUT std_logic_vector(7 DOWNTO 0) --salida ); END ENTITY mux2a1; ----------------------------------------------------------------------- -- Definición del dispositivo, usando ecuaciones lógicas ----------------------------------------------------------------------- ARCHITECTURE bool_eqs OF mux2a1 IS SIGNAL sel: std_logic_vector(7 DOWNTO 0); -- señal interna BEGIN sel <= (OTHERS => s); o <= (a AND (NOT sel)) OR (b AND sel); END ARCHITECTURE bool_eqs; Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
Entity : Interface Externa LIBRARY IEEE; USE IEEE.std_logic_1164.all; ----------------------------------------------------------------------- -- Declaración del dispositivo ----------------------------------------------------------------------- ENTITY mux2a1 IS PORT( SIGNAL s: IN std_logic; -- selector SIGNALa,b: INstd_logic_vector(7 DOWNTO 0); -- entradas SIGNAL o: OUTstd_logic_vector(7 DOWNTO 0) --salida ); END ENTITY mux2a1; ----------------------------------------------------------------------- -- Definición del dispositivo, usando ecuaciones lógicas ----------------------------------------------------------------------- ARCHITECTURE bool_eqs OF mux2a1 IS SIGNAL sel: std_logic_vector(7 DOWNTO 0); -- señal interna BEGIN sel <= (OTHERS => s); o <= (a AND (NOT sel)) OR (b AND sel); END ARCHITECTURE bool_eqs; Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
Entity : Interface Externa (…cont) LIBRARY IEEE; USE IEEE.std_logic_1164.all; ----------------------------------------------------------------------- -- Declaración del dispositivo ----------------------------------------------------------------------- ENTITY mux2a1 IS PORT( SIGNAL s: IN std_logic; -- selector SIGNAL a,b: IN std_logic_vector(7 DOWNTO 0); -- entradas SIGNAL o: OUT std_logic_vector(7 DOWNTO 0) --salida ); END ENTITY mux2a1; ----------------------------------------------------------------------- -- Definición del dispositivo, usando ecuaciones lógicas ----------------------------------------------------------------------- ARCHITECTURE bool_eqs OF mux2a1 IS SIGNAL sel: std_logic_vector(7 DOWNTO 0); -- señal interna BEGIN sel <= (OTHERS => s); o <= (a AND (NOT sel)) OR (b AND sel); END ARCHITECTURE bool_eqs; SIGNAL nombre : modo tipo Modo : IN; OUT; INOUT Tipo : std_logic, std_logic_vector, bit Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
Buses o vectores • Ejemplo : • y<= “11110000”; • Si y es • std_logic_vector(7 downto 0) y(7) es ‘1’ y y(0) es ‘0’ • std_logic_vector(0 to 7) ‘y(7) es ‘0’ y y(0) es ‘1’ Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
Arquitectura : Función del módulo LIBRARY IEEE; USE IEEE.std_logic_1164.all; ----------------------------------------------------------------------- -- Declaración del dispositivo ----------------------------------------------------------------------- ENTITY mux2a1 IS PORT( SIGNAL s: IN std_logic; -- selector SIGNAL a,b: IN std_logic_vector(7 DOWNTO 0); -- entradas SIGNAL o: OUT std_logic_vector(7 DOWNTO 0) --salida ); END ENTITY mux2a1; ----------------------------------------------------------------------- -- Definición del dispositivo, usando ecuaciones lógicas ----------------------------------------------------------------------- ARCHITECTURE bool_eqsOF mux2a1 IS SIGNALsel: std_logic_vector(7 DOWNTO 0); -- señal interna BEGIN sel<= (OTHERS => s); o <= (a AND (NOTsel)) OR (b ANDsel); END ARCHITECTUREbool_eqs; s : std_logic a, b : std_logic_vector No se puede operar entre ellas !. Se define el vector sel y se replica s en todos sus bits. Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
Asignación de vectores • sel <= (s,s,s,s,s,s,s,s); posicional • sel <= (4=>s,7=>s,2=>s,0=>s,1=>s,3=>s,5=>s,6=>7) por nombre • • sel <= (others => s); default • • sel <= (s,s,3=>s,others=>s); combinado Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
Tipos de diseño • Una unidad simple de un diseño: • Corresponde a un archivo fuente en VHDL con una pareja entity – architecture y una referencia a una biblioteca estándar de diseño. (p.e IEEE Standard Logic). • Un diseño más complejo: • Corresponde a múltiples archivos fuentes, cada uno con una pareja entity – architecture y con una declaración de paquetes. • Puede incluir un archivo de configuración. Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
Niveles de abstracción • Una importante característica de VHDL que no es compartida por otros tipos de lenguajes orientados al trabajo con PLDs (tales como ABEL, CUPL, etc). • Corresponde a la habilidad de representar diseños en múltiples niveles de abstracción. • Ejemplo : Un sumador de 16 bits podría ser representado por: • Interconexión de compuertas. • Interconexión de módulos (p.e sumadores completos o sumadores de 4 bits.). • Una función que realice la suma binaria sobre dos vectores de bits. Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
Tipos de Arquitectura • Comportamental • Describe la funcionalidad del módulo con respecto al tiempo, generalmente en forma de un algoritmo. • La capacidad directa de síntesis es muy limitada. • Dataflow (Transferencia de Registros) • Especifica registros y lógica combinacional en términos del flujo de datos de una función a otra. • Estructural • Especifica los componentes y sus interconexiones. • Equivale en lenguaje a lo realizado en esquemáticos. Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
Modelado Comportamental • Cuerpo del Architecture • Describe una implementación de una entidad. • Pueden ser varios para una entidad. • Arquitectura Comportamental • Describe el algoritmo ejecutado por el módulo. • Contiene: • Instrucciones de procesos (Process), cada uno conteniendo: • Instrucciones secuenciales, incluyendo: • Instrucciones de asignación de señales y • Instrucciones de espera (wait). Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
entity reg4 is port ( d0, d1, d2, d3, en, clk : in bit; q0, q1, q2, q3 : out bit );end entity reg4; Ejemplo Comportamental architecturebehavofreg4 isbegin storage : process isvariable stored_d0, stored_d1, stored_d2, stored_d3 : bit;beginifen = '1' andclk= '1' then stored_d0 := d0; stored_d1 := d1; stored_d2 := d2; stored_d3 := d3;end if;q0 <= stored_d0 after 5 ns;q1 <= stored_d1 after 5 ns;q2 <= stored_d2 after 5 ns;q3 <= stored_d3 after5 ns;wait ond0, d1, d2, d3, en, clk;end processstorage; end architecturebehav; VARIABLE difiere de una señal en que NO se registran eventos ni se controla su temporización. Se soportan los tipos de datos estándar. Notar que las asignaciones a variables se indican con:= Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
Procesos nombre :process(señal1, señal2, ...)is begin .... enunciados sequenciales .... endprocessnombre ; Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
Concurrencia vs Secuencia • Los enunciados concurrentes se ejecutan todos al mismo tiempo. • Los enunciados secuenciales, que sólo pueden aparecer dentro de un proceso, se ejecutan uno tras de otro. • ‘IF/ELSE’ , ’CASE’ , ’FOR’ : secuenciales. • ‘PROCESS’ : concurrentes. Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
Procesos nombre : process( señal1,señal2,...) is • donde señal1,señal2,… es la lista de sensibilidad del proceso. • Cualquier evento en alguna de estas señales hará que el proceso se ejecute durante una simulación. Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
Procesos (...cont) • La asignación de señales dentro de los enunciados de un proceso ocurre en forma secuencial, de modo que una asignación posterior siemprepuede cambiar el valor de una señal asignada previamente dentro del bloque (proceso). Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
Procesos (...cont) • Al usar procesos, un error clásico es olvidar incluir enunciados que asignen valores de default a todas las salidas. • Si las herramientas de síntesis VHDL encuentran una trayectoria lógica tal que una salida no tenga un valor asignado en el proceso, asumirán que el valor actual debe retenerse, generando un latch en el circuito. Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
Modelado Estructural • Arquitectura Estructural • Implementa el módulo como una composición de subsistemas. • Contiene: • Declaración de señales, para interconexiones internas. • Los puertos de la entidad son también tratados como señales. • Instancias de componentes • Son instancias de parejas de entity/arquitecturepreviamente declarados. • Mapas de puertos en instancias de componentes. • Conecta señales a puertos de componentes. • Instrucciones wait. Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
Arquitectura Estructural • Los componentes declarados en una arquitectura deben ser definidos en alguna parte. • Los componentes pueden ser definidos como: • Una pareja de entity-arquitecture en el mismo archivo fuente de VHDL. • Una pareja de entity-arquitecture en otro archivo fuente de VHDL. • Un objeto en otra herramienta de diseño tal que sea incorporado en un formato de archivo estándar. • Un objeto en una biblioteca de tecnología. Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
Arquitectura Estructural • Cada tipo componente debe ser declarado usando una declaración de componente. • La declaración del componente debe corresponder con la declaración de la entidad del módulo que está siendo invocado. componentcomponent-name port ( signal-names : mode signal-type; signal-names : mode signal-type; … signal-names : mode signal-type ); end component; Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
Arquitectura Estructural • Cada instancia de un componente debe ser instanciado por una instrucción Component. • La primera forma usa el orden de la señales para crear la correspondencia con la declaración del componente. • La segunda forma usa los nombres de los puertos como aparecen listados en la declaración del componente. label: component-name port map (signal1, signal2, …, signaln); OR label: component-name port map (port1=>signal1, port2=>signal2, portn=>signaln): Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
Ejemplo Estructural Registro síncrono de 4 bits y señal de enable Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
Ejemplo Estructural (…cont) • Primero declare las entidades y arquitecturas de latches tipo Dy compuertas and. entityd_latchisport ( d, clk : in bit; q : out bit );endd_latch; architecture basic ofd_latchisbegin latch_behavior : processbeginifclk = ‘1’ then q <= d after 2 ns;end if;wait onclk, d;end processlatch_behavior; endbasic; entity and2 isport ( a, b : in bit; y : out bit );endand2; architecture basic of and2 isbegin and2_behavior : processbegin y <= a and b after 2 ns;wait ona, b;end processand2_behavior; endbasic; Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
Ejemplo Estructural (…cont) • Declare los componentes correspondientes en el cuerpo de la arquitectura del registro. architecturestructof reg4 is componentd_latchport ( d, clk : in bit; q : out bit );end component; componentand2port ( a, b : in bit; y : out bit );end component; signalint_clk : bit; ... Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
Ejemplo Estructural (…cont) • Ahora, use dichos componentes para definir el registro del 4 bits. ... begin bit0 : d_latchport map ( d0, int_clk, q0 ); bit1 : d_latchport map ( d1, int_clk, q1 ); bit2 : d_latchport map ( d2, int_clk, q2 ); bit3 : d_latchport map ( d3, int_clk, q3 ); gate : and2port map ( en, clk, int_clk ); end struct; Fin del ejemplo Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
Mezcla del modelado comportamental y estructural • Una arquitectura puede contener ambas partes. • Instrucciones de procesos (process) e instanciación de componentes. • También llamados de estamentos o sentencias concurrentes. • Los procesos pueden leer y escribir en las señales. • Ejemplo: Modelo RTL (Nivel de Transferencia de Registros) • Flujo de datos (DataPath) descrito estructuralmente. • La sección de control es descrita comportamentalmente. Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
Tarea • Elabore, escriba, consulte, busque, copie o pastelee, un ejemplo completo en VHDL que de acuerdo a la primera letra de su nombre posea uno de las siguientes palabras claves del lenguaje. • En cada una de las próximas tres clases, se escogerán al azar tres estudiantes diferentes a fin de explicar en el tablero su ejemplo en VHDL. • A - Arquitecture • B - Buffer • C - Component • D - Downto • E - Elsif • F - For • G - Generate • H - Function • I - If • J - Procedure • K - Case • L - Loop • M - Map (Port map) • N - Not • O - Others • P - Process • Q - Package • R - Subtype • S - Select (WithSelect) • T - Type • U - Use • V - Variable • W - Whenelse • X - Xor • Y - Wait • Z – ‘Z’ (HighImpedance) Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2