INTRODUCCIÓN AL LENGUAJE VHDL eman ta zabal zazu LDD 2007-08 1 ÍNDICE. 1. 2. 3. 4. Introducción. Conceptos básicos del lenguaje y Aplicaciones. Tipos de datos y Señales. Sentencias concurrentes y secuenciales. Registros y máquinas de estados finitos. eman ta zabal zazu LDD 2007-08 2 Bibliografía: - VHDL Lenguaje estándar de diseño electrónico. Lluís Terés, Yago Torroja, Serafín Olcoz, Eugenio Villar. Ed, Mc Graw-Hill, 1998 - VHDL Modeling for Digital Design Synthesis Yu-Chin Hsu, Kevin F. Tsai, Jessie T. Liu, Eric S.Lin. Ed, Kluwer Academic Publishers, 1995 - Hardware Design and Simulation in VAL / VHDL. Larry M. Augustin, David C. Luckham, beniot A. Gennart, Youmth Huh, Alec G. Stanculescu. Ed, Kluwer Academic Publishers, 1991. - VHDL Designers Reference. Jean Michel Bergé, Alain Fonkova, Serge Maginot, Jacques Rovillard. Kluwer Academic Publishers, 1992 eman ta zabal zazu LDD 2007-08 3 PROCESO BÁSICO DE DISEÑO Requisitos y especificaciones Altera Diseño modelo VHDL Diseño Funcional Compilación Modelado y Síntesis Diseño Arquitectural (RTL) Diseño Lógico (puertas) Diseño Físico (transistores-layout) eman ta zabal zazu Simulación Fabricación y Test LDD 2007-08 Análisis de Timing Configuración del PLD Programación del PLD y Test 4 • Estas etapas son función de las distintas alternativas de diseño. • Por analogía PROGRAMACIÓN se busca SÍNTESIS DE ALTO NIVEL Chip desde una descripción de alto nivel • Imprescindible los lenguajes HDL-- VHDL eman ta zabal zazu LDD 2007-08 5 BREVE HISTORIA: EL LENGUAJE VHDL • VHDL: (Very HIGH Speed Integrated Circuit Hardware Description Language) proyecto del departamento de defensa de los E.E.U.U. para desarrollar C.I. de 0,5m de muy altas prestaciones. • Objetivo: disponer de una herramienta estándar e independiente para la especificación y documentación de sistemas electrónicos. eman ta zabal zazu LDD 2007-08 6 PROPIEDADES BÁSICAS. • Permite modelar, y simular sistemas desde un alto nivel de abstracción hasta el nivel más bajo (puertas, biestables). • Básicamente permite 3 niveles de descripción: – Comportamental o algorítmico – Flujo de datos o RTL – Estructural • Inicialmente desarrollado para modelado y simulación lógica de sistemas digitales. Actualmente se usa también para síntesis. eman ta zabal zazu LDD 2007-08 7 Ventajas del uso de VHDL • Es un lenguaje normalizado compatible con la mayoría de las herramientas de diseño (Std IEEE 1076-1987) • Permite la comunicación entre distintos diseñadores minimizando errores y problemas de compatibilidad. • Admite diseño jerárquico. • Los sistemas de prueba (test) pueden escribirse en el mismo lenguaje y usarse para comprobar distintos modelos. • Permite al diseñador concentrase en la funcionalidad del diseño sin tener que preocuparse en otros factores como: retardos, área,... eman ta zabal zazu LDD 2007-08 8 Otras Ventajas • Reducción del Tiempo de Diseño. • Mejora de la Calidad del Diseño. • Posibilidad de Explorar el Espacio de Diseño. • Tecnología VLSI/diseño electrónico abierta a un mayor número de usuarios con poca experiencia. eman ta zabal zazu LDD 2007-08 9 Síntesis de hardware descripción funcional process begin for I in 0 to 10 loop ::: end loop; end process; descripción estructural Síntesis Proceso de Transformación de una descripción de un circuito en una descripción funcional estructural: eman ta zabal zazu –Nivel de Transferencias entre registros. –Layout (Caso Ideal) LDD 2007-08 10 Proceso de Síntesis Ejemplo de Descripción: function Paridad (Inp:std_logic_vector(2 downto 0)) return bit is variable Par:bit; begin Par := ‘1’; for I in 1 to 3 loop if Inp(I) = ‘1’ then Par := not Par; endif; end loop; return Par; end Paridad; Inp 3 Paridad Par eman ta zabal zazu LDD 2007-08 11 Sintesis de Alto Nivel process begin for I in 0 to 10 loop ::: end loop; end process; Restricciones Función Objetivo Síntesis • Función Objetivo: Una función de : – Estimación del área. – Retardos del Circuito • Restricciones: Condiciones que debe cumplir el circuito. (p.e. Area estimada < X. Retardo < Y...) eman ta zabal zazu LDD 2007-08 12 1.Aplication and language Introduction - What is VHDL ? - Aplication areas - Limitations of VHDL - VHDL styles - Main laguages concepts - Entity - Architecture - Hierarchy - Declaration - Processes and types - Packages eman ta zabal zazu LDD 2007-08 13 What is VHDL? eman ta zabal zazu LDD 2007-08 14 Limitations eman ta zabal zazu LDD 2007-08 15 eman ta zabal zazu LDD 2007-08 16 VHDL Styles eman ta zabal zazu LDD 2007-08 17 eman ta zabal zazu LDD 2007-08 18 eman ta zabal zazu LDD 2007-08 19 eman ta zabal zazu LDD 2007-08 20 eman ta zabal zazu LDD 2007-08 21 Entity eman ta zabal zazu LDD 2007-08 22 Architecture eman ta zabal zazu LDD 2007-08 23 eman ta zabal zazu LDD 2007-08 24 eman ta zabal zazu LDD 2007-08 25 eman ta zabal zazu LDD 2007-08 26 eman ta zabal zazu LDD 2007-08 27 eman ta zabal zazu LDD 2007-08 28 eman ta zabal zazu LDD 2007-08 29 eman ta zabal zazu LDD 2007-08 30 Processes eman ta zabal zazu LDD 2007-08 31 eman ta zabal zazu LDD 2007-08 32 Types eman ta zabal zazu LDD 2007-08 33 The package eman ta zabal zazu LDD 2007-08 34 eman ta zabal zazu LDD 2007-08 35 2. Signals and Data Types - The concept of a type - Standard data types - Assignments to signals - Type definition - Multi valued logic - Standard Logic - Using Standard Logic VHDL Operators - Logical Operators - Relational Operators - Arithmetic Operators eman ta zabal zazu LDD 2007-08 36 Type definition eman ta zabal zazu LDD 2007-08 37 Type definition eman ta zabal zazu LDD 2007-08 38 Type concept and specification eman ta zabal zazu LDD 2007-08 39 eman ta zabal zazu LDD 2007-08 40 eman ta zabal zazu LDD 2007-08 41 eman ta zabal zazu LDD 2007-08 42 eman ta zabal zazu LDD 2007-08 43 Type std_logic is ( ‘ U’, Uninitiliced ‘ X’ Unknown ‘ 0’ Logic 0 ‘ 1’ logic 1 ‘ Z’ impedance high ‘W’ Unknown ‘ L’ logic 0 ‘ H’ logic 1 ‘_‘ Don´t care Strong drive Weak drive eman ta zabal zazu LDD 2007-08 44 eman ta zabal zazu LDD 2007-08 45 eman ta zabal zazu LDD 2007-08 46 Using Standard Logic library IEEE; use IEEE.Std_logic_1164.all; entity MULS is port ( A, B, : in std_logic ; Z : out std_logic ); end MULS; eman ta zabal zazu LDD 2007-08 47 OPERADORES EN VHDL Existen 3 tipos predefinidos: • Operadores lógicos • Operadores matemáticos • Operadores relacionales Por defecto, cada operador puede usarse con cierto tipo de datos. El usuario puede definir funciones si precisa usar otros tipos. eman ta zabal zazu LDD 2007-08 48 OPERADORES LÓGICOS Son los siguientes: • AND, NAND, OR, NOR • XOR, XNOR • NOT • Además de desplazamientos lógicos/aritméticos izda/dcha y rotaciones: SLL, SRL, SLA, SRA, ROL, ROR. Todos misma prioridad (de izda a dcha) salvo NOT que es siempre prioritaria. eman ta zabal zazu LDD 2007-08 49 OPERADORES LÓGICOS Tipos para los que están definidos: eman ta zabal zazu LDD 2007-08 50 library IEEE; use IEEE.Std_logic_1164.all; entity MULS is port ( A, B, : in std_logic ; Z : out std_logic ); end MULS; architecture EX of MULS is begin z <= A and not (B or C ); end EX; eman ta zabal zazu LDD 2007-08 51 Signal A_BUS, B_BUS, Z_BUS: std_logic_vector ( 3 downto 0 ); Z_BUS <= A_BUS and B_BUS; Equivalente a ZBUS(3) <= A_BUS(3) and B_BUS(3); ZBUS(2) <= A_BUS(2) and B_BUS(2); ZBUS(1) <= A_BUS(1) and B_BUS(1); ZBUS(0) <= A_BUS(0) and B_BUS(0); eman ta zabal zazu LDD 2007-08 52 OPERADORES RELACIONALES Son los siguientes: • igual (=) , distinto (/=) • mayor(>), mayor o igual (>=) • menor(>), menor o igual (>=) Los operandos pueden ser de cualquier tipo. El resultado es de tipo boolean. eman ta zabal zazu LDD 2007-08 53 eman ta zabal zazu LDD 2007-08 54 eman ta zabal zazu LDD 2007-08 55 OPERADORES ARITMÉTICOS Son los siguientes y para los tipos de datos indicados: • suma (+), resta (-) --- cualquier tipo numérico • producto (*), división (/) --- entero/real • potencias (**) --- entero/real (exponente entero) • módulo (mod), resto (rem) --- enteros • valor absoluto (abs) --- entero/real eman ta zabal zazu LDD 2007-08 56 CONSTANTES Es un objeto que almacena un único valor durante toda la simulación Ejemplos: • constant E:real:=2.7172; • constant V37:bit_vector (7 downto 0):= “0100110”; • constant delay:time:=2ns; eman ta zabal zazu LDD 2007-08 57 Arrays... eman ta zabal zazu LDD 2007-08 58 eman ta zabal zazu LDD 2007-08 59 eman ta zabal zazu LDD 2007-08 60 c 1 2 3 4 z 3 2 1 0 eman ta zabal zazu LDD 2007-08 61 eman ta zabal zazu LDD 2007-08 62 Concatenation and aggregates eman ta zabal zazu LDD 2007-08 63 eman ta zabal zazu LDD 2007-08 64 eman ta zabal zazu LDD 2007-08 65 eman ta zabal zazu LDD 2007-08 66 eman ta zabal zazu LDD 2007-08 67 eman ta zabal zazu LDD 2007-08 68 eman ta zabal zazu LDD 2007-08 69 3. Concurrent and secuential Statements - Concurrent Assignment Statements - The Process - Process execution - Sensitivity lists - The if statement - The case statement -The for loop -Variables eman ta zabal zazu LDD 2007-08 70 eman ta zabal zazu LDD 2007-08 71 eman ta zabal zazu LDD 2007-08 72 eman ta zabal zazu LDD 2007-08 73 eman ta zabal zazu LDD 2007-08 74 SENTENCIA WHEN ... SELECT • Es una sentencia concurrente que permite realizar asignaciones condicionales de valores, expresiones u objetos a señales. • Sintáxis : [etiqueta:]señal<= valor1 when condición1 else valor2 when condición2 else ………… valorn when condiciónn else unaffected; eman ta zabal zazu LDD 2007-08 75 SENTENCIA WITH... SELECT • Es una sentencia concurrente que permite realizar asignaciones condicionales de valores, expresiones u objetos a señales (análoga a WHEN..SELECT). • Sintáxis : [etiqueta:]with expresión select señal<= valor1 when resultado1 else valor2 when resultado2 else ………… valorn when resultadon else unaffected when others; eman ta zabal zazu LDD 2007-08 76 eman ta zabal zazu LDD 2007-08 77 eman ta zabal zazu LDD 2007-08 78 eman ta zabal zazu LDD 2007-08 79 eman ta zabal zazu LDD 2007-08 80 eman ta zabal zazu LDD 2007-08 81 eman ta zabal zazu LDD 2007-08 82 eman ta zabal zazu LDD 2007-08 83 Process execution eman ta zabal zazu LDD 2007-08 84 eman ta zabal zazu LDD 2007-08 85 Sensitivity Lists eman ta zabal zazu LDD 2007-08 86 eman ta zabal zazu LDD 2007-08 87 eman ta zabal zazu LDD 2007-08 88 eman ta zabal zazu LDD 2007-08 89 The If Statement eman ta zabal zazu LDD 2007-08 90 Executes first true branch eman ta zabal zazu LDD 2007-08 91 The Case Statement eman ta zabal zazu LDD 2007-08 92 eman ta zabal zazu LDD 2007-08 93 The For Loop eman ta zabal zazu LDD 2007-08 94 eman ta zabal zazu LDD 2007-08 95 Variable usage eman ta zabal zazu LDD 2007-08 96 4 ODD A ( 3 downto 0 ) Process (A) variable TMP : std_logic; begin TMP:= ‘0’; for I in A’low to A’high loop TMP := TMP xor A(I); end loop; ODD <= TMP; end process; eman ta zabal zazu LDD 2007-08 97 eman ta zabal zazu LDD 2007-08 98 eman ta zabal zazu LDD 2007-08 99 eman ta zabal zazu LDD 2007-08 100 ARQUITECTURA ESTILOS DE DESCRIPCIÓN • La arquitectura define la funcionalidad de la entidad. • Estilos de descripción: – Algorítmico: mediante un conjunto de instrucciones que se ejecutan secuencialmente (proceso) – Flujo de datos: mediante funciones u operadores. – Estructural: conjunto de componentes interconectados eman ta zabal zazu LDD 2007-08 101 Tema 4: Synthesis Issues - Specifying registers in VHDL - Detecting a rising clock - Controling transparent latches - Finite State Machines eman ta zabal zazu LDD 2007-08 102 Specifying registers in VHDL eman ta zabal zazu LDD 2007-08 103 Entiti Flop is port (D, Clk : in std_logic; Q : out st_logic); end Flop; architecture A of Flop is begin process begin wait until Clk’event and Clk = ‘1’; Q <= D; end process; eman ta zabal zazu end A; LDD 2007-08 104 eman ta zabal zazu LDD 2007-08 105 eman ta zabal zazu LDD 2007-08 106 eman ta zabal zazu LDD 2007-08 107 entity incomp_if is port (EN, D : in std_logic; Q : out st_logic); end incomp_if; architecture A of incomp_if is begin process (EN, D ) begin if ( EN = ‘1’ ) then ; Q <= D; end if ; end process; end A; eman ta zabal zazu LDD 2007-08 108 Controling Transparent Latches eman ta zabal zazu LDD 2007-08 109 eman ta zabal zazu LDD 2007-08 110 eman ta zabal zazu LDD 2007-08 111 eman ta zabal zazu LDD 2007-08 112 FINITE STATE MACHINES eman ta zabal zazu LDD 2007-08 113 EJEMPLO Reset* E0 E2 E1 1 S2 X 0 S1 E3 0 Y 1 0 X S1,S0 1 eman ta zabal zazu LDD 2007-08 114 eman ta zabal zazu LDD 2007-08 115 Architecture una of UC is signal EST_PRES,EST_SIG: integer range 0 to 3; begin........... EST_PRE S EST_SIG eman ta zabal zazu LDD 2007-08 116 SEC: process (EST_PRES, X,Y) --- inicialización case EST_PRES is when 0 => if X= ‘0’ then EST_SIG<=1; else EST_SIG <=2; end if; when 1 => EST_SIG<=3; when 2 => if Y= ‘1’ then EST_SIG<=3; else EST_SIG <=2; end if; when 3 => if X= ‘0’ then EST_SIG<=1; else EST_SIG <=0; end if; end case; end process SEC; eman ta zabal zazu LDD 2007-08 117 REG: process (clk, Reset) begin if Reset=‘0’ then EST_PRES <= 0; if clk’ event and clk=‘1’ then EST_PRES <= EST_SIG; end if; end process REG; eman ta zabal zazu LDD 2007-08 118 outputs S2 <=‘1’ when EST_PRES=2 else 0; S1 <=‘1’ when (EST_PRES=1 or (EST_PRES=2 AND Y=‘1’)) else 0; S0 <=‘1’ when (EST_PRES=2 AND Y=‘1’) else 0; ESTADO <= EST_PRES; eman ta zabal zazu LDD 2007-08 119 DESCRIPCIÓN COMPLETA: architecture una of UC is signal EST_PRES,EST_SIG: integer range 0 to 3; begin SEC: process (EST_PRES, X,Y) --- inicialización case EST_PRES is when 0 => if X= ‘0’ then EST_SIG<=1; else EST_SIG <=2; end if; when 1 => EST_SIG<=3; when 2 => if Y= ‘1’ then EST_SIG<=3; else EST_SIG <=2; end if; when 3 => if X= ‘0’ then EST_SIG<=1; else EST_SIG <=0; end if; end case; end process SEC; REG: process (clk, Reset) begin if Reset=‘0’ then EST_PRES <= 0; if clk’ event and clk=‘1’ then EST_PRES <= EST_SIG; end if; end process REG; S2 <=‘1’ when EST_PRE S1 <=‘1’ when (EST_PRES=1 or (EST_PRES=2 AND Y=‘1’)) S0 <=‘1’ when (EST_PRES=2 AND Y=‘1’) ESTADO <= EST_PRES; else 0; else 0; else 0; eman ta zabal zazu end una; LDD 2007-08 120 Lógica combinacional Entradas Generar estado siguiente Generar señales de salida Señale s salida Estado Registro Estado presente siguiente Clk eman ta zabal zazu LDD 2007-08 121 EJEMPLO: RESET* E0 (00) 0 (borrar registro y overflow) sumar borrar OVF<--0 CLR 1 INIC 0 SUM 1 E3(11) E1(01) LDR (cargar el registro) 1 0 SUM + INIC Cout 1 0 (activar overflow) OVF<--1 E2(10) (borrar registro y overflow) OVF<--0 CLR 1 INIC 0 eman ta zabal zazu LDD 2007-08 122 Descripción en VHDL: library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_arith.all; entity p1_ucV is port( CLK ,RESETL : in std_logic; INIC, SUM, COUT : in std_logic; CLRL, LDRL, OVF1, OVF0L: out ESTADO std_logic; : out integer range 0 to 3); end p1_ucV; eman ta zabal zazu LDD 2007-08 123 Descripción en VHDL: architecture UC of p1_ucV is signal EST_PRES, EST_SIG_EST integer range 0 to 3; begin ES: process (EST_PRES, INIC,SUM,COUT) begin EST_SIG <= EST_PRES; case EST_PRES is eman ta zabal zazu LDD 2007-08 124 Descripción en VHDL: case EST_PRES is when E0 => if INIC='1' then EST_SIG <= E3; elsif SUM='1' then EST_SIG <= E1; else EST_SIG <= E0; end if; when E1 => if COUT='1' then EST_SIG <= E2; else EST_SIG <= E3; end if; when E2 => if INIC='0' then else EST_SIG <= E2; EST_SIG <= E3; end if; when E3 => if (INIC or SUM) = '1' then EST_SIG <= E3; else EST_SIG <= E0; end if; end case; end process ES; eman ta zabal zazu LDD 2007-08 125 Descripción en VHDL: REG: process (clk, resetL) begin if (resetL='0') then EST_PRES<=E0; elsif (clk'event) and (clk='1') then EST_PRES<=EST_SIG; end if; end process REG; eman ta zabal zazu LDD 2007-08 126 Descripción en VHDL: LDRL <= '0' when EST_PRES=E1 else '1'; CLRL <= '0' when (EST_PRES=E1 OR EST_PRES =E0) AND INIC='1' OVF1 <= '1' when EST_PRES=E1 AND COUT='1' OVF0L <= ‘0' when (EST_PRES=E2 OR EST_PRES =E0) AND INIC='1' else '1'; else '0'; else ‘1'; ESTADO <= EST_PRES; end UC; eman ta zabal zazu LDD 2007-08 127