Código concurrente en VHDL [5]

Documentos relacionados
Operadores y atributos en VHDL [1]

Estructura de VHDL. Sistemas Digitales Avanzados. Universidad Técnica Particular de Loja Prof: Diego Barragán Guerrero. Oct Feb.

Paquetes y componentes [1]

INGENIERÍA DE COMPUTADORES 3. Solución al examen de Junio 2013, Segunda Semana

Tipos de datos en VHDL

INGENIERÍA DE COMPUTADORES III. Solución al Ejercicio de Autocomprobación 4

Tema 3 - Modelado con HDL a nivel RTL

El código concurrente esta destinado únicamente para el diseño de circuitos combinacionales.

Tema 4 - Bloques combinacionales

LABORATORIO DE CIRCUITOS DIGITALES (2005-II) SEGUNDA CLASE DE VHDL

INGENIERÍA DE COMPUTADORES 3. Solución al examen de Septiembre 2016

INGENIERÍA DE COMPUTADORES III. Solución al Ejercicio de Autocomprobación 8

VHDL. Lenguaje de descripción hardware

INGENIERÍA DE COMPUTADORES III. Solución al Ejercicio de Autocomprobación 6

ALU (Unidad Aritmética Lógica). Objetivo General. Objetivo Específicos. Material y equipo. Tarea previa. Introducción teórica

INGENIERÍA DE COMPUTADORES 3. Solución al Trabajo Práctico - Septiembre de 2016

PRUEBA DE ENTRADA E P3 P2

Laboratorio de Arquitectura de Computadoras

Laboratorio de Arquitectura de Computadoras

INGENIERÍA DE COMPUTADORES III. Solución al Ejercicio de Autocomprobación 3

INGENIERÍA DE COMPUTADORES 3. Solución al examen de Junio 2015, Segunda Semana

Sistemas Digitales - Examen temas 1, 2 y 3 - (6 de Abril 2016)

Recursos y Metodologías. Función. Programas

VHDL. VHDL: VHSIC Hardware Description Language VHSIC: Very High Speed Integrated Circuits

INGENIERÍA DE COMPUTADORES 3. Solución al Trabajo Práctico - Junio de 2017

INGENIERÍA DE COMPUTADORES 3. Solución al examen de Junio 2014, Primera Semana

VII. Múltiples Procesos en una Arquitectura. F. Santiago E.

Sistemas Digitales - Examen temas 1, 2 y 3 - (6 de Abril 2016)

Sistemas Electrónicos Digitales Curso de adaptación al Grado

UNIVERSIDAD DE SEVILLA Dpto. de Ingeniería Electrónica. Introducción a los lenguajes HDL y conceptos. Octubre de 2007

Diseño de Sistemas Electrónicos Digitales Avanzados

INGENIERÍA DE COMPUTADORES 3. Solución al examen de Junio 2017, Primera Semana

SISTEMAS DIGITALES VHDL

PRÁCTICA: LENGUAJE VHDL

5.1. Introducción a los sistemas digitales

INGENIERÍA DE COMPUTADORES III. Solución al examen de Septiembre 2014

VHDL: Código Secuencial. Arquitectura del Computador 2017

PRACTICA 6: CIRCUITOS ARITMETICOS: SUMADORES Y RESTADORES.

PRACTICA 3. Lenguaje de descripción de hardware VHDL.

1. Módulo de desarrollo Spartan 3 STARTER KIT con un FPGA xc3s200 ft Software de diseño XILINX ISE versión 10.1

4. SUMADORES EN BINARIO PURO (I)

INTRODUCCIÓN AL LENGUAJE VHDL PARA CIRCUITOS

INFORME LABORATORIO No.1 Implementación de sistemas combinacionales en VHDL Diseño de una ALU. Nelson Antonio Becerra Carrillo

Objetos de VHDL. Un objeto en VHDL es un elemento que contiene un valor de tipo específico de dato

Electrónica Digital Departamento de Electrónica VHDL. Bioingeniería Facultad de Ingeniería - UNER

INGENIERÍA DE COMPUTADORES III. Solución al Ejercicio de Autocomprobación 10

SINTAXIS BÁSICA DEL VHDL SIMPLIFICADO

INGENIERÍA DE COMPUTADORES III. Solución al examen de Junio 2012, Segunda Semana

Sumadores. Tipos de sumadores: Half-adder. Full-Adder. Carry-Look-Ahead. Carry-select.

PLANTILLA. [t], Maximino Peña Guerrero,

INGENIERÍA DE COMPUTADORES 3. Solución al Trabajo Práctico - Junio de 2013

Introducción al VHDL. VHDL orientado a la síntesis de circuitos en Dispositivo Lógicos Programables

MAQUINA DE ESTADO FINITO (FSM) Autómata finito

INGENIERÍA DE COMPUTADORES III. Solución al Ejercicio de Autocomprobación 5

VHDL. Very. High. speed integrated circuit Hardware. Description. Language. Digital II Ingeniería Electrónica. Rosa Corti

Prof. Dr.-Ing. F. Schubert VHDL

Tema 2. Funciones Lógicas. Algebra de Conmutación. Representación de circuitos digitales. Minimización de funciones lógicas.

Arquitectura de Computadores. Práctica 1: Diseño Hardware de Procesadores. Práctica 1/1

UNIVERSIDAD CARLOS III DE MADRID. Ejercicios de VHDL. Circuitos Integrados y Microelectrónica. Luis Entrena. Celia López.

PARTE I. TÉCNICAS DE DISEÑO ELECTRÓNICO MEDIANTE LENGUAJES DE DESCRIPCIÓN HARDWARE

4.3. Lenguaje VHDL Declaración de Packages

FPGA: Herramientas de diseño

Sumador completo de un bit - Versión VHDL Sintético

Introducción a VHDL. Por: Carlos A. Fajardo UIS - Sistemas Digitales

PRUEBA DE ENTRADA NOMBRE : FECHA: / /2005 CÓDIGO : LAB. Nº: 4 HORARIO: H-441

Julio. [ Programación en VHDL ] Guía rápida. [ h t t p : / / w w w. o p e n b o x e r m b. c o m / a s i g n a t u r a s / d s d.

INGENIERÍA DE COMPUTADORES 3. Solución al examen de Junio 2014, Segunda Semana

Objetos de VHDL.! Un objeto en VHDL es un elemento que contiene. un valor de tipo específico de dato

CODIFICADORES CON PRIORIDAD. Grupo 2

INFORMÁTICA INDUSTRIAL. 3º INGENIERÍA TÉCNICA ELECTRÓNICA TRABAJO TUTORADO DE VHDL. Primer Cuatrimestre Curso 2005/2006.

Diseño VHDL de módulos combinacionales básicos

INGENIERÍA DE COMPUTADORES III. Solución al Ejercicio de Autocomprobación 1

Tema 2. Funciones Lógicas. Algebra de Conmutación. Minimización de funciones Lógicas. Introducción al VHDL.

ELECTRÓNICA DIGITAL 24-I Determinar el valor decimal de los números expresados en Complemento a 2. (0.25 puntos).

Practica No. 5 Diseño de un Multiplicador

Titulación: Ingeniería Informática Asignatura: Fundamentos de Computadores. Bloque 3: Sistemas secuenciales Tema 9: Módulos secuenciales básicos

Simulación con un banco de pruebas VHDL - test bench.

Tutorial de VHDL: Contadores y Simulación

LENGUAJE VHDL. Ing. Wilmer Naranjo 1

SISTEMAS DIGITALES CONTROL 1 (31/3/2014) APELLIDOS DNI: Firma NOMBRE MODELO DE EXAMEN A

Sesión 1: Introducción al lenguaje VHDL. S1 1 Laboratorio de Estructura de Computadores Curso 04 / 05

INGENIERÍA DE COMPUTADORES 3. Solución al Trabajo Práctico - Junio de 2014

+ Máquinas de Estado Finitas

INGENIERÍA DE COMPUTADORES 3. Solución al Trabajo Práctico - Junio de 2016

Práctica I Modelado y simulación de una máquina expendedora de refrescos

Diseño Lógico I Facultad de Ciencias Exactas y Tecnología UNT. LENGUAJES DE DESCRIPCIÓN DE HARDWARE

Practica No. 5 Diseño de un Multiplicador

VHDL Y FPGA LENGUAJE VHDL

MAQUINA DE ESTADO FINITO (FSM) Autómata finito

Estructura de un Código VHDL

CONTADORES. Definición. Diseño y analisis de un contador binario hacia arriba de 3 bits con flip-flops JK. Otros contadores típicos.

Prefacio 25 Organización de la Unidad Didáctica Cómo utilizar el libro Objetivos docentes... 27

INGENIERÍA DE COMPUTADORES III. Solución al examen de Septiembre 2012

DISEÑO DE PROCESADORES DEDICADOS. Práctica 6 LCD de Propósito General

CIRCUITOS MULTIPLEXORES Y DEMULTIPLEXORES

Universidad Autónoma de Querétaro Facultad de Ingeniería

INTRODUCCIÓN A LOS VHDL. AUTOR: Cavallero, Rodolfo Antonio.

DECODIFICADORES. Para cualquier código dado en las entradas solo se activa una de las N posibles salidas. 2 N

Transcripción:

Código concurrente en VHDL [5] Lab. Sistemas Digitales Universidad Técnica Particular de Loja Prof: Diego Barragán Guerrero Oct. 2014 - Feb. 2015 Lab. Sistemas Digitales (UTPL) IET Oct. 2014 - Feb. 2015 1 / 28

Introducción VHDL puede ser concurrente (paralelo) o secuencial. Declaraciones concurrentes: WHEN y GENERATE. Asignaciones con operadores: And, Not, +, *, sll, etc. Figura: Secuencial vs. concurrente [4]. Lab. Sistemas Digitales (UTPL) IET Oct. 2014 - Feb. 2015 2 / 28

Lógica concurrente versus secuencial Lógica combinacional: la salida del circuito depende solo de las entradas actuales. Así, el sistema no requiere memoria. Implementación solo con compuertas lógicas. Figura: Lógica secuencial. Lab. Sistemas Digitales (UTPL) IET Oct. 2014 - Feb. 2015 3 / 28

Lógica concurrente versus secuencial Lógica secuencial: la salida depende de la entrada previa. Elementos de memoria son necesarios. Figura: Lógica secuencial. Lab. Sistemas Digitales (UTPL) IET Oct. 2014 - Feb. 2015 4 / 28

Código concurrente en VHDL VHDL es inherentemente concurrente (paralelo). Código concurrente se conoce también como flujo de datos (dataflow). Código concurrente: Operadores. When (When / Else o With / Select / When) Generate. Lab. Sistemas Digitales (UTPL) IET Oct. 2014 - Feb. 2015 5 / 28

Operadores Forma más básica de crear código concurrente. Cualquier sistema combinacional se implementa con operadores. Figura: Tabla de operadores. Lab. Sistemas Digitales (UTPL) IET Oct. 2014 - Feb. 2015 6 / 28

Ejemplo: multiplexor 1 (1/3) Multiplexores: circuitos combinacionales con varias entradas y una única salida. Entradas de control: seleccionar una, y sólo una, de las entradas de datos para permitir su transmisión desde la entrada seleccionada hacia dicha salida [2]. Figura: Multiplexor. Lab. Sistemas Digitales (UTPL) IET Oct. 2014 - Feb. 2015 7 / 28

Ejemplo: multiplexor 1 (2/3) Código VHDL LIBRARY ieee; USE ieee.std_logic_1164.all; --------------------------------------- ENTITY mux IS PORT ( a, b, c, d, s0, s1: IN STD_LOGIC; y: OUT STD_LOGIC); END mux; --------------------------------------- ARCHITECTURE pure_logic OF mux IS BEGIN y <= (a AND NOT s1 AND NOT s0) OR (b AND NOT s1 AND s0) OR (c AND s1 AND NOT s0) OR (d AND s1 AND s0); END pure_logic; Lab. Sistemas Digitales (UTPL) IET Oct. 2014 - Feb. 2015 8 / 28

Ejemplo: multiplexor 1 (3/3) s0 s1 a b c d y 0.00 ns 50 ns 100 ns 150 ns 200 ns 250 ns 300 ns 350 ns 400 ns 450 ns 500 ns Figura: Diagrama temporal. Lab. Sistemas Digitales (UTPL) IET Oct. 2014 - Feb. 2015 9 / 28

When Código VHDL ------ Con WHEN/ELSE outp <= "000" WHEN (inp= 0 OR reset= 1 ) ELSE "001" WHEN ctl= 1 ELSE "010"; ---- Con WITH/SELECT/WHEN WITH control SELECT output <= "000" WHEN reset, "111" WHEN set, UNAFFECTED WHEN OTHERS; Todas las permutaciones son examinadas. Usar Others siempre que sea necesario. UNAFFECTED no ejecuta ningún cambio. Lab. Sistemas Digitales (UTPL) IET Oct. 2014 - Feb. 2015 10 / 28

Ejemplo: multiplexor 2 (1/4) Código VHDL ------- WHEN/ELSE-------- LIBRARY ieee; USE ieee.std_logic_1164.all; ------------------------------------------- ENTITY mux IS PORT ( a, b, c, d: IN STD_LOGIC; sel: IN STD_LOGIC_VECTOR (1 DOWNTO 0); y: OUT STD_LOGIC); END mux; ------------------------------------------- ARCHITECTURE mux1 OF mux IS BEGIN y <= a WHEN sel="00" ELSE b WHEN sel="01" ELSE c WHEN sel="10" ELSE d; END mux1; Lab. Sistemas Digitales (UTPL) IET Oct. 2014 - Feb. 2015 11 / 28

Ejemplo: multiplexor 2 (2/4) Código VHDL ---WITH/SELECT/WHEN ----- LIBRARY ieee; USE ieee.std_logic_1164.all; ------------------------------------------- ENTITY mux IS PORT ( a, b, c, d: IN STD_LOGIC; sel: IN STD_LOGIC_VECTOR (1 DOWNTO 0); y: OUT STD_LOGIC); END mux; ------------------------------------------- ARCHITECTURE mux2 OF mux IS BEGIN WITH sel SELECT y <= a WHEN "00", -- Uso de "," en lugar de ";" b WHEN "01", c WHEN "10", d WHEN OTHERS; -- no usar "d WHEN "11" " END mux2; Lab. Sistemas Digitales (UTPL) IET Oct. 2014 - Feb. 2015 12 / 28

Tarea Realizar las simulaciones de los códigos de la página 72 y el buffer de tres estados de la página 73 del libro de Pedroni. Lab. Sistemas Digitales (UTPL) IET Oct. 2014 - Feb. 2015 13 / 28

Ejemplo: codificador (1/4) Un codificador es un circuito combinacional con 2 N entradas y N salidas, cuya misión es presentar en la salida el código binario correspondiente a la entrada activada[1]. Figura: Codificador. Lab. Sistemas Digitales (UTPL) IET Oct. 2014 - Feb. 2015 14 / 28

Ejemplo: codificador (2/4) Código VHDL: WHEN/ELSE LIBRARY ieee; USE ieee.std_logic_1164.all; --------------------------------------------- ENTITY encoder IS PORT ( x: IN STD_LOGIC_VECTOR (7 DOWNTO 0); y: OUT STD_LOGIC_VECTOR (2 DOWNTO 0)); END encoder; --------------------------------------------- ARCHITECTURE encoder1 OF encoder IS BEGIN y <= "000" WHEN x="00000001" ELSE "001" WHEN x="00000010" ELSE "010" WHEN x="00000100" ELSE "011" WHEN x="00001000" ELSE "100" WHEN x="00010000" ELSE "101" WHEN x="00100000" ELSE "110" WHEN x="01000000" ELSE "111" WHEN x="10000000" ELSE "ZZZ"; END encoder1; Lab. Sistemas Digitales (UTPL) IET Oct. 2014 - Feb. 2015 15 / 28

Ejemplo: codificador (3/4) x 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000 y 000 001 010 011 100 101 110 111 0.00 ns 10 ns 20 ns 30 ns 40 ns 50 ns 60 ns 70 ns 80 ns Figura: Test bench ModelSim. Figura: Test bench ISim. Lab. Sistemas Digitales (UTPL) IET Oct. 2014 - Feb. 2015 16 / 28

Ejemplo: codificador (4/4) LIBRARY ieee; USE ieee.std_logic_1164.all; --------------------------------------------- ENTITY encoder IS PORT ( x: IN STD_LOGIC_VECTOR (7 DOWNTO 0); y: OUT STD_LOGIC_VECTOR (2 DOWNTO 0)); END encoder; --------------------------------------------- ARCHITECTURE encoder2 OF encoder IS BEGIN WITH x SELECT y <= "000" WHEN "00000001", "001" WHEN "00000010", "010" WHEN "00000100", "011" WHEN "00001000", "100" WHEN "00010000", "101" WHEN "00100000", "110" WHEN "01000000", "111" WHEN "10000000", "ZZZ" WHEN OTHERS; END encoder2; Lab. Sistemas Digitales (UTPL) IET Oct. 2014 - Feb. 2015 17 / 28

Ejemplo: ALU (Arithmetic Logic Unit) Unidad aritmético lógica (ALU): circuito digital que calcula operaciones aritméticas (como suma, resta, multiplicación, etc.) y operaciones lógicas (si, y, o, no), entre dos números [3]. Figura: ALU. Lab. Sistemas Digitales (UTPL) IET Oct. 2014 - Feb. 2015 18 / 28

Ejemplo: ALU (Arithmetic Logic Unit) Figura: ALU. Lab. Sistemas Digitales (UTPL) IET Oct. 2014 - Feb. 2015 19 / 28

Ejemplo: ALU (Arithmetic Logic Unit) Código VHDL ---------------------------------------------- LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.std_logic_unsigned.all; ---------------------------------------------- ENTITY ALU IS PORT (a, b: IN STD_LOGIC_VECTOR (7 DOWNTO 0); sel: IN STD_LOGIC_VECTOR (3 DOWNTO 0); cin: IN STD_LOGIC; y: OUT STD_LOGIC_VECTOR (7 DOWNTO 0)); END ALU; ---------------------------------------------- ARCHITECTURE dataflow OF ALU IS SIGNAL arith, logic: STD_LOGIC_VECTOR (7 DOWNTO 0); BEGIN Lab. Sistemas Digitales (UTPL) IET Oct. 2014 - Feb. 2015 20 / 28

Ejemplo: ALU (Arithmetic Logic Unit) Código VHDL ----- Unidad aritmética ------ WITH sel(2 DOWNTO 0) SELECT arith <= a WHEN "000", a+1 WHEN "001", a-1 WHEN "010", b WHEN "011", b+1 WHEN "100", b-1 WHEN "101", a+b WHEN "110", a+b+cin WHEN OTHERS; Código VHDL ----- Unidad lógica ----------- WITH sel(2 DOWNTO 0) SELECT logic <= NOT a WHEN "000", NOT b WHEN "001", a AND b WHEN "010", a OR b WHEN "011", a NAND b WHEN "100", a NOR b WHEN "101", a XOR b WHEN "110", NOT (a XOR b) WHEN OTHERS; -------- Mux: --------------- WITH sel(3) SELECT y <= arith WHEN 0, logic WHEN OTHERS; END dataflow; Lab. Sistemas Digitales (UTPL) IET Oct. 2014 - Feb. 2015 21 / 28

Ejemplo: ALU (Arithmetic Logic Unit) Figura: Test Bench ALU. Lab. Sistemas Digitales (UTPL) IET Oct. 2014 - Feb. 2015 22 / 28

Tarea Realizar la ALU usando el paquete numeric std. Recuerde que debe usar funciones de conversión de tipo de datos y declarar el tipo de dato como SIGNED o UNSIGNED, no como STD LOGIC VECTOR. Lab. Sistemas Digitales (UTPL) IET Oct. 2014 - Feb. 2015 23 / 28

Figura: (a) Mux 2x1 (b) Instalado 3 veces (c) Mux 2x3 Lab. Sistemas Digitales (UTPL) IET Oct. 2014 - Feb. 2015 24 / 28 Generate [6] Problema: repetir muchas veces un componente. Ej: memoria, registro, etc. Solución intuitiva: generar N veces el código del componente. Solución sintética: usar FOR / GENERATE.

Ejemplo: For/Generate Código VHDL -----Multiplexador 2x1----- LIBRARY ieee; USE ieee.std_logic_1164.all; --------------------------------- ENTITY mux2x1 IS PORT (a, b, sel: IN STD_LOGIC; x: OUT STD_LOGIC); END ENTITY; --------------------------------- ARCHITECTURE mux2x1 OF mux2x1 IS BEGIN x<=a WHEN sel= 0 ELSE b; END ARCHITECTURE; --------------------------------- Lab. Sistemas Digitales (UTPL) IET Oct. 2014 - Feb. 2015 25 / 28

Ejemplo: For/Generate LIBRARY ieee; USE ieee.std_logic_1164.all; ------------------------------------------------------- ENTITY mux2x3 IS PORT (a, b: IN STD_LOGIC_VECTOR(2 DOWNTO 0); sel: IN STD_LOGIC; x: OUT STD_LOGIC_VECTOR(2 DOWNTO 0)); END ENTITY; ------------------------------------------------------- ARCHITECTURE mux2x3 OF mux2x3 IS ---Declaración del component----- COMPONENT mux2x1 IS PORT (a, b, sel: IN STD_LOGIC; x: OUT STD_LOGIC); END COMPONENT; BEGIN ---Integración del componente--- generate_mux2x3: FOR i IN 0 TO 2 GENERATE comp: mux2x1 PORT MAP (a(i), b(i), sel, x(i)); END GENERATE generate_mux2x3; END ARCHITECTURE; Lab. Sistemas Digitales (UTPL) IET Oct. 2014 - Feb. 2015 26 / 28

Tarea Realizar el Test Bench del código anterior. Si en lugar de tipos de datos STD LOGIC VECTOR se necesita usar tipo de datos SIGNED, cuáles serían los cambios a realizar en el código? Lab. Sistemas Digitales (UTPL) IET Oct. 2014 - Feb. 2015 27 / 28

Bibliografía [1] Codificador. http://goo.gl/xa94qk. Acceso: 2014-09-09. [2] Multiplexor. http://goo.gl/iflx81. Acceso: 2014-09-09. [3] Unidad aritmético lógica. http://goo.gl/h6yfv. Acceso: 2014-09-09. [4] Using sas on sequential and parallel systems. http://goo.gl/o86xjc. Acceso: 2014-09-09. [5] V. A. Pedroni. Circuit Design with VHDL. MIT Press, Cambridge, MA, USA, 2004. [6] V. A. Pedroni. Circuit Design and Simulation with VHDL. The MIT Press, 2nd edition, 2010. Lab. Sistemas Digitales (UTPL) IET Oct. 2014 - Feb. 2015 28 / 28