UNIVERSIDAD DE SEVILLA Dpto. de Ingeniería Electrónica AREA DE TECNOLOGIA ELECTRONICA VHDL (1ª parte) Introducción al lenguaje VHDL Introducción a los lenguajes HDL y conceptos básicos de VHDL Marzo de 2005 Tema 1: Introducción a los lenguajes HDL 1.1 Introducción 1.2 Los HDL en la metodología de diseño 1.3 Niveles de abstracción en HDL 1.4 HDL: Programa o diseño 1.5 VHDL vs. Verilog 1.6 Síntesis de circuitos 1 Bibliografía Douglas L. Perry. VHDL. McGraw-Hill, 2ª Edición. 1994. Apuntes de cátedra Tema 1: Introducción a los lenguajes HDL 1.1 Introducció Introducción 1.2 Los HDL en la metodología de diseño 1.3 Niveles de abstracción en HDL 1.4 HDL: Programa o diseño 1.5 VHDL vs. Verilog 1.6 Síntesis de circuitos 2 Introducción - Cada día aumenta la complejidad de los circuitos digitales. - El cuello de botella está en el diseñ diseño. Tema 1: Introducción a los lenguajes HDL 1.1 Introducción 1.2 Los HDL en la metodologí metodología de diseñ diseño 1.3 Niveles de abstracción en HDL 1.4 HDL: Programa o diseño 1.5 VHDL vs. Verilog 1.6 Síntesis de circuitos 3 Flujo de diseño: Metodología clásica Flujo de diseño con HDL 4 Flujo de diseño. Ventajas e inconvenientes de HDL Ventajas ☺ Capacidad de modificación y reutilización ☺ Diseño independiente del dispositivo, tecnología y software de diseño ☺ Simulación de código muy rápida ☺ Reduce el tiempo de desarrollo y el coste ☺ Diferentes circuitos dependiendo de las restricciones. Inconvenientes Se pierde control de la implementación a nivel de puertas. Implementaciones lógicas automáticas no óptimas La calidad de la síntesis depende del software Tema 1: Introducción a los lenguajes HDL 1.1 Introducción 1.2 Los HDL’s en la metodología de diseño 1.3 Niveles de abstracció abstracción en HDL 1.4 HDL: Programa o diseño 1.5 VHDL vs. Verilog 1.6 Síntesis de circuitos 5 Niveles de abstracción Estilo descriptivo (HDL) Tipo de datos Nivel funcional (grandes bloques) Algorítmico o descriptivo Abstracto Nivel de transferencia de registros (RTL) Flujo de datos Compuestos Nivel de puerta lógica En forma de esquema Bit Nivel de circuito Interconexión de transistores. No es posible en HDL Tensión e intensidad NIVEL DE DETALLE Niveles de abstracción en HDLs Tema 1: Introducción a los lenguajes HDL 1.1 Introducción 1.2 Los HDL’s en la metodología de diseño 1.3 Niveles de abstracción en HDL 1.4 HDL: Programa o diseñ diseño 1.5 VHDL vs. Verilog 1.5 Síntesis de circuitos 6 HDL: Programa o diseño La sintaxis es muy similar. En VHDL no se programa, se describe. Hay que pensar siempre que la descripción se corresponde con circuitos funcionando en paralelo Tema 1: Introducción a los lenguajes HDL 1.1 Introducción 1.2 Los HDL’s en la metodología de diseño 1.3 Niveles de abstracción en HDL 1.4 HDL: Programa o diseño 1.5 VHDL vs. Verilog 1.6 Síntesis de circuitos 7 VHDL vs. Verilog (RTL) VHDL Verilog • Basado en ADA • Normalizado por la IEEE 1076 • Pensado para descripción precisa • Incorpora muy buenas librerías, contempladas en el estándar. • Basado en C • Propiedad de CADENCE • Pensado para diseño “rápido” • Muy integrado con el software de CADENCE VHDL vs. Verilog EXAMPLE: FLIP-FLOP DESIGN module flip-flop (clk, ff_input, Q) input clk, reset; input ff_input; ff_input reg Q; always @ (posedge clk) clk Q= ff_input; always @ (reset) if (reset=1) assign Q=0; else deassign Q; end; endmodule reset, Q FF reset LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY FF IS PORT ( reset: IN STD_LOGIC; clk: IN STD_LOGIC; ff_input: IN STD_LOGIC; Q: OUT STD_LOGIC ); END FF; ARCHITECTURE behavioral OF FF IS BEGIN flipflop: PROCESS (reset, clk) BEGIN IF reset='1' THEN Q <= ‘0'; ELSIF clk'event AND clk='1' THEN Q <= ff_input; END IF; END PROCESS; END behavioral; 8 Tema 1: Introducción a los lenguajes HDL 1.1 Introducción 1.2 Los HDL’s en la metodología de diseño 1.3 Niveles de abstracción en HDL 1.4 HDL: Programa o diseño 1.5 VHDL vs. Verilog 1.6 Sí Síntesis de circuitos Síntesis de circuitos 9 Tema 2: Estructura de un diseño en VHDL 1.1 Introducció Introducción y ejemplo simple 1.2 La sección ENTITY 1.3 La sección ARCHITECTURE 1.4 La sección CONFIGURATION 1.5 La sección LIBRARY Introducción Lenguaje VHDL: Lenguaje de descripción de hardware. En VHDL se describe no se programa. Permite documentar diseños. Síntesis Lógica con VHDL: Diseños reutilizables => Herramienta CAD. Circuitos diferentes dependiendo de restricciones. 10 Introducción El VHDL es complejo pero: El subconjunto necesario para síntesis es muy pequeño. Solo utilizaremos: • Asignaciones: estado_siguiente <= REPOSO ; • Comparaciones y operadores lógicos = (igual), /= (no igual), > (mayor que), <= (menor o igual que), etc And, xor, or, nand, nor, xnor, not, etc • Sentencia if If (estado_actual=REPOSO) then …. End if; • Sentencia case Introducción -- -- es comentario --Zona de declaración de librerías Declaración de librerías y LIBRARY nombre_librería; paquetes USE librería.paquete_funciones.all; --Cabecera de la entidad Definición de la entidad ENTITY nombre_entity IS –GENERIC(..........); –PORT(................); END nombre_entity; --Cuerpo de la entidad ARCHITECTURE nombre_architecture OF nombre_entity IS Descripción de la –--Declaración de componentes y señales arquitectura –BEGIN –--Descripción de la funcionalidad –END nombre_architecture; --Enlace con las arquitecturas de otras entidades CONFIGURATION nombre_configuracion OF nombre_entidad IS Selección de la –FOR nombre_arquitectura configuración --Cuerpo de la configuración END nombre_configuracion; 11 Ejemplo básico -- Multiplexor de dos entradas entity mux21 is port ( e1, e2: IN std_logic; sel: IN std_logic; o1: OUT std_logic); end mux21; arquitecture A of mux21 is begin process(e1,e2, sel) begin if (sel=‘0’) then o1 <= E1; else o1<= e2; endif; end process; end A; Tema 2: Estructura de un diseño en VHDL 1.1 Introducción y ejemplo simple 1.2 La secció sección ENTITY 1.3 La sección LIBRARY 1.4 La sección ARCHITECTURE 1.5 La sección CONFIGURATION 12 La sección ENTITY ENTITY contador IS GENERIC ( N: integer := 10 ); PORT ( clk: IN STD_LOGIC; reset: IN STD_LOGIC; enable: IN STD_LOGIC; cuenta: OUT STD_LOGIC_VECTOR(N-1 downto 0) ); La sección ENTITY. Declaración de puertos Un puerto debe tener: – Nombre – Dirección » IN » OUT » INOUT » BUFFER – Tipo de dato 13 La sección ENTITY. Declaración de puertos Ejercicio IN IN IN IN A A W B C X OUT INOUT D Z Zint BUFFER OUT Z <= Zint; 14