Sesión 1: Introducción al lenguaje VHDL S1 1 Laboratorio de Estructura de Computadores – Curso 04 / 05 AREAS DE APLICACION DE VHDL Síntesis i1 suma carry i2 Modelado de Rendimiento Documentación Circuito semisumador Componentes: puerta AND puerta OR puerta XOR ............................ ............................ VHDL ENTITY circuito IS PORT(i1,i2 : IN bit; sum, carry : OUT); END circuito; ARCHITECTURE estructura OF circuito IS BEGIN PROCESS .................. END PROCESS; END estructura; Verificación Formal Diagnosis de Fallos i1 suma i2 ¿correcto? Simulación carry si CLK X Z S1 2 Laboratorio de Estructura de Computadores – Curso 04 / 05 NIVELES DE RESOLUCION DE UN SISTEMA DIGITAL Sistema Sistema MEMORIA XDLi FI1 FI1 FI2 FI2 BUSQUEDA BUSQUEDA RELOJ INIT LECTURA LECTURA INIT WRITE ESCRITURA DISPONIBLE Chip DISPONIBLE BUS_DIR BUS_DIR BUS_DAT_SAL BUS_DAT_ENT BUS_DAT_ENT BUS_DAT_SAL bus de direcciones RMICAUX RMIC DECOD SEQUEN Registros ROM DE CONTROL MAR R I bus de datos S • Q S Q • NQ R NQ R Puertas VDD Circuito IN OUT VSS VDD Silicio IN OUT VSS S1 3 Laboratorio de Estructura de Computadores – Curso 04 / 05 CAPACIDAD EXPRESIVA DE VHDL SISTEMA CHIP VHDL REGISTRO PUERTAS CIRCUITO SILICIO DESCOMPOSICION ESTRUCTURAL DEL DISEÑO Descomposición estructural S1 4 Laboratorio de Estructura de Computadores – Curso 04 / 05 UNIDAD DE DISEÑO EN VHDL ENTITY señales_de_entrada nombre ARCHITECTURE primera señales_de_salida ARCHITECTURE ARCHITECTURE segunda tercera Correspondencia Entrade/Salida descrita con procesos interconectados S1 5 Laboratorio de Estructura de Computadores – Curso 04 / 05 UNIDAD DE DISEÑO EN VHDL: SINTAXIS ENTITY nombre IS PORT ( señales_de_entrada : IN tipo; señales_de_salida : OUT tipo); END nombre; ARCHITECTURE primera OF nombre IS BEGIN PROCESS Declaraciones BEGIN Cuerpo del Proceso (Algorítmo Secuencial) END PROCESS; END primera; S1 6 Laboratorio de Estructura de Computadores – Curso 04 / 05 SENTENCIAS SECUENCIALES DE VHDL 1) Sentencia de asignación de variable variable := expresión; 2) Sentencias de control del flujo de ejecución a) Condicional IF condición THEN sentencias_1 ELSE sentencias_2; b) Alternativa CASE expresión IS WHEN valor_1 => sentencias_1; WHEN valor_2 => sentencias_2; -----------------------------------------WHEN valor_n => sentencias_n; END CASE; c) Bucle iterativo FOR índice IN rango LOOP sentencias END LOOP; 3) Sentencias de interacción con el exterior a) Asignación de señal señal <= expresión AFTER retardo; S1 b) Espera de eventos WAIT ON lista_de_señales; Laboratorio de Estructura de Computadores – Curso 04 / 05 7 CONCEPTO BASICO DE SEÑAL s1 '1' '0' 0 10 5 driver de la señal s1 : 15 20 25 ns {('0', 5 ns), ('1', 10 ns), ('0', 20 ns, ('1', 25 ns)} S1 8 Laboratorio de Estructura de Computadores – Curso 04 / 05 EJEMPLO 1: Puerta and de dos entradas ENTITY and2 IS PORT (a, b : IN bit; c : OUT bit); END and2; a ARCHITECTURE primera OF and2 IS BEGIN PROCESS BEGIN c <= a AND b AFTER 3 ns; WAIT ON a, b; END PROCESS; END primera; and2 b a b c 13 5 0 10 23 15 20 28 c ns ns a b -------------------------------------0 0 0 5 1 0 10 1 1 13 1 1 20 0 1 23 0 1 25 1 1 28 1 1 c 0 0 0 1 1 0 0 1 25 S1 9 Laboratorio de Estructura de Computadores – Curso 04 / 05 SEGUNDA ARQUITECTURA para la Puerta and de dos entradas ARCHITECTURE segunda OF and2 IS BEGIN PROCESS VARIABLE temp : BIT; BEGIN temp := a AND b; IF (temp = '1') THEN c <= temp AFTER 6 ns; ELSE c <= temp AFTER 4 ns; END IF; WAIT ON a, b; END PROCESS; END segunda; a b c 16 S1 0 5 10 15 24 20 25 31 ns 30 Laboratorio de Estructura de Computadores – Curso 04 / 05 a and2 c b ns a b c ----------------0 0 0 0 5 1 0 0 10 1 1 0 16 1 1 1 20 0 1 1 24 0 1 0 25 1 1 0 31 1 1 1 10 EJEMPLO 2: Multiplexor ENTITY mux IS PORT ( i3, i2, i1, i0, x1, x0 : IN BIT; z : OUT BIT ); END mux; i3 i2 ARCHITECTURE mux OF mux IS BEGIN PROCESS TYPE peso IS RANGE 0 TO 3; VARIABLE muxval : peso; BEGIN muxval := 0; IF (x0 = '1') THEN muxval := muxval + 1; END IF; IF (x1 = '1') THEN muxval := muxval + 2; END IF; CASE muxval IS WHEN 0 => z <= i0 AFTER 10 ns; WHEN 1 => z <= i1 AFTER 10 ns; WHEN 2 => z <= i2 AFTER 10 ns; WHEN 3 => z <= i3 AFTER 10 ns; END CASE; WAIT ON i3, i2, i1, i0, x1, x0; END PROCESS; END mux; S1 z mux i1 i0 x1 x0 11 Laboratorio de Estructura de Computadores – Curso 04 / 05 EJEMPLO 3: Circuito and con máscara. ENTITY and_mask IS PORT ( x, y, m : IN bit_vector ( 7 DOWNTO 0); z : OUT bit_vector ( 7 DOWNTO 0)); END and_mask; x y m 8 8 8 z and_mask 8 ARCHITECTURE and_mask OF and_mask IS BEGIN PROCESS BEGIN FOR i IN 0 TO 7 LOOP IF ( m(i) = '0') THEN NEXT; ELSE z(i) <= x(i) AND y(i); END IF; END LOOP; WAIT ON x, y, m; END PROCESS; END and_mask; S1 12 Laboratorio de Estructura de Computadores – Curso 04 / 05 EJEMPLO 4: Máquina de Estados Finitos. ENTITY mef IS PORT(x, reloj : IN BIT; z : OUT BIT); END mef; 0 inicial 0 S1 ARCHITECTURE unica OF mef IS BEGIN est1010 1 PROCESS 1 TYPE estados IS (inicial, est1, est10, est101, est1011); 0 0 VARIABLE estado : estados := inicial; 1 BEGIN WAIT ON reloj; est101 1 IF reloj = '1' THEN 0 0 CASE estado IS WHEN inicial => IF x = '1' THEN estado := est1; ELSE estado := estado; END IF; z <= '0'; WHEN est1 => IF x = '1' THEN estado := est1; ELSE estado := est10; END IF; z <= '0'; WHEN est10 => IF x = '1' THEN estado := est101; ELSE estado := inicial; END IF; z <= '0'; WHEN est101 => IF x = '1' THEN estado := est1011; ELSE estado := est10; END IF; z <= '0'; WHEN est1011 => IF x = '1' THEN estado := est1; ELSE estado := est10; END IF; z <= '1'; END CASE; END IF; END PROCESS; END unica; Laboratorio de Estructura de Computadores – Curso 04 / 05 1 1 est1 0 0 est10 0 13 Practica 1: Conceptos básicos de VHDL Objetivos 1. Utilización de las construcciones secuenciales básicas de VHDL. 2. Modelado del comportamiento de pequeños sistemas combinacionales y secuenciales. 2. Familiarización con el entorno VHDL para compilar, depurar, simular y trazar programas. Práctica a realizar Codificación de un programa VHDL (entre 30 y 40 líneas de código) que utilice las sentencias secuenciales estudiadas hasta el momento. El programa deberá modelar el comportamiento de un sistema digital previamente especificado (decodificador, decodificador con prioridad, codificador, demultiplexor, operador aritmético, máquina secuencial, etc) Resultados a entregar Documentación del programa en la que conste: 1. Especificación del sistema modelado. 2. Listado VHDL comentado del código del programa. 3. Diagramas de tiempo que muestren la respuesta del sistema frente a entradas significativas. S1 14 Laboratorio de Estructura de Computadores – Curso 04 / 05