DESCRIPCIÓN DE CIRCUITOS DIGITALES



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

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

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

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

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

VHDL. Lenguaje de descripción hardware

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

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

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

DISEÑODE SISTEMAS ELECTRÓNICOS DIGITALES AVANZADOS.

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

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

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

El código concurrente está destinado para el diseño de circuitos combinacionales.

Figura 0-1: Lista de palabras reservadas del VHDL A continuación se dará una serie de ejemplos de diseños VHDL de dificultad incremental

VHDL: Código Secuencial. Arquitectura del Computador 2017

MAQUINA DE ESTADO FINITO (FSM) Autómata finito

MAQUINA DE ESTADO FINITO (FSM) Autómata finito

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

Practica 9 Estilos de codificar a estados FCE

LABORATORIO DE CIRCUITOS DIGITALES (2005-II) SEGUNDA CLASE DE 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

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

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

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

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

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

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

DE INGENIERÍA TÉCNICA INDUSTRIAL. ESPECIALIDAD EN ELECTRÓNICA INDUSTRIAL

Diseño de Sistemas Electrónicos Digitales Avanzados

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

SINTAXIS BÁSICA DEL VHDL SIMPLIFICADO

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

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

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

SISTEMAS DIGITALES VHDL

Decodificadores/Demultiplexores. Grupo 9 Javier de Gregorio Menezo Laro de la Fuente Lastra Raúl Fernández Díaz

Índice. VHDL Lección 2.9 Máquinas de Estados Finitos (FSM) 1

Circuitos Electrónicos Digitales E.T.S.I. Telecomunicación Universidad Politécnica de Madrid. Circuitos Secuenciales

Tema 7. Análisis de Circuitos Secuenciales

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

Los multiplexores son dispositivos de varias entradas que permiten seleccionar la señal que llega a una de éstas y transmitirla a la salida.

Tema 6. Elementos Lógicos Secuenciales

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

+ Máquinas de Estado Finitas

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

DISEÑO DE CIRCUITOS SECUENCIALES

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

Titulación: Ingeniería Informática Asignatura: Fundamentos de Computadores

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

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

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

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.

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

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

Electrónica Digital. Capítulo 1: Circuitos Digitales. Circuitos combinacionales. (2/3)

Circuitos Electrónicos Digitales E.T.S.I. Telecomunicación Universidad Politécnica de Madrid. Descripciones funcionales y estructurales

PRUEBA DE ENTRADA E P3 P2

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

TEMA IV: SÍNTESIS HARDWARE

Practica No. 5 Diseño de un Multiplicador

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

8. Multiplexores Digitales

Práctica I.- Introducción a los Sistemas Secuenciales

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

Practica No. 5 Diseño de un Multiplicador

VHDL. Carlos Andrés Luna Vázquez. Lección 10 Problemas

Tema 4 - Bloques combinacionales

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

Código concurrente en VHDL [5]

Introducción a VHDL Circuitos Secuenciales

SENTENCIA LOOP 1.- Implementar y simular el siguiente circuito que cuenta el número de bits 1 que ingresan

Práctica 4: CONTADORES

EDIG. Electrónica Digital

GUÍA PRÁCTICA DEL SOFTWARE ACTIVE-HDL.

Practicas tuteladas VHDL (curso 04-05)

Multiplicador Digital

Tema 3 - Modelado con HDL a nivel RTL

Pipeline. Diseño de Sistemas con FPGA 1er cuatrimestre 2009 Patricia Borensztejn

Laboratorio de Arquitectura de Computadoras

VHDL. Carlos Andrés Luna Vázquez. Lección 5. Sentencias concurrentes

Transcripción:

DESCRIPCIÓN DE CIRCUITOS DIGITALES Circuitos combinacionales Circuitos secuenciales Organización del diseño. Diseño genérico Operaciones iterativas Autores: Luis Entrena, Celia López, Mario García, Enrique San Millán, Marta Portela, Almudena Lindoso 1 Indice Sentencias condicionales Reglas para el diseño de circuitos combinacionales Ejemplos y ejercicios 2

Sentencias condicionales Sentencias secuenciales IF...THEN...ELSE CASE...IS...WHEN Sentencias concurrentes... WHEN... (asignación condicional) WITH... SELECT (asignación seleccionada) 3 Un multiplexor 2 a 1 -- Descripción secuencial PROCESS (a, b, s) IF s = '0' THEN z <= a; ELSE z <= b; -- Descripción concurrente z <= a WHEN s = '0' ELSE b; a MUX z b s 4

Un multiplexor 4 a 1 -- Descripción secuencial PROCESS (a, b, c, d, s) CASE s IS WHEN "00" => z <= a; WHEN "01" => z <= b; WHEN "10" => z <= c; WHEN OTHERS => z <= d; END CASE; -- Descripción concurrente WITH s SELECT z <= a WHEN "00", b WHEN "01", c WHEN "10", d WHEN OTHERS; a b MUX c d z s 5 Diferencias entre IF y CASE IF...THEN...ELSE impone prioridades en la selección IF s0 = '0' THEN z <= a; ELSIF s1 = '0' THEN a b 0 0 1 z z <= b; ELSE z <= c; c 1 s0 s1 6

Diferencias entre IF y CASE CASE no impone prioridades en la selección PROCESS (a, b, c, d, s) CASE s IS WHEN "00" "10" => z <= a; WHEN "01" => z <= b; WHEN OTHERS => z <= d; a b d MUX z END CASE; s 7 Tablas de verdad PROCESS (a, b, c) VARIABLE entradas: STD_LOGIC_VECTOR (2 DOWNTO 0); entradas := a & b & c; CASE entradas IS WHEN "000" => f <= '1'; WHEN "001" => f <= 'X'; WHEN "010" => f <= '0'; WHEN "011" => f <= '1'; WHEN "100" => f <= '0'; WHEN "101" => f <= '1'; WHEN OTHERS => f <= 'X'; END CASE; 8

Reglas para el diseño de circuitos combinacionales Condiciones para que un proceso infiera un circuito combinacional correctamente: Si una señal se asigna dentro de un proceso o en una sentencia de asignación concurrente, entonces debe garantizarse que recibe un valor bajo todas las posibles condiciones o casos. En otras palabras, el valor de la señal debe estar definido en todos los casos. La lista de sensibilidad de un proceso que modela lógica combinacional debe contener todas las señales que son leídas en el proceso, es decir, todas las señales cuyo valor se utiliza dentro del proceso y que por tanto actúan como entradas en el circuito resultante de la síntesis. Si se utilizan variables dentro de un proceso, estas deben de ser utilizadas propiamente como variables intermedias, es decir, que deben ser escritas antes de ser leídas. 9 Reglas para el diseño de circuitos combinacionales Algunas consecuencias de las reglas anteriores: Para cubrir todos los casos, es conveniente que toda sentencia IF o asignación condicional lleve una claúsula ELSE, y toda sentencia CASE o asignación seleccionada lleve una claúsula WHEN OTHERS No se deben crear referencias circulares, es decir, salidas que dependen de sí mismas, ya que se generarían lazos de realimentación asíncronos Se aconseja el uso de señales en lugar de variables cuando sea posible 10

Ejemplos PROCESS( s, a) IF s = 0 THEN z <= a; PROCESS( s, a) IF s = 0 THEN z <= a; ELSE z <= b; PROCESS( s, a) IF s = 0 THEN z <= a; ELSE z <= z; PROCESS( s, a, b) IF s = 0 THEN z <= a; ELSE z <= b; 11 Efecto de la lista de sensibilidad en la simulación Lista de sensibilidad incorrecta (s, a) Lista de sensibilidad correcta (s, a, b) 12

Ejercicio Diseñar un decodificador de 2 a 4 de forma secuencial de forma concurrente Declaración de la entidad ENTITY decodificador IS PORT ( a: IN STD_LOGIC_VECTOR (1 DOWNTO 0); z: OUT STD_LOGIC_VECTOR (3 DOWNTO 0)); END decodificador; 13 Ejercicio Diseñar un comparador de 4 bits de forma secuencial de forma concurrente Declaración de la entidad ENTITY comparador IS PORT ( a, b: IN STD_LOGIC_VECTOR (3 DOWNTO 0); menor, mayor, igual: OUT STD_LOGIC); END comparador; 14

Ejercicio Diseñar un codificador con prioridad de 2 bits de forma secuencial de forma concurrente Declaración de la entidad ENTITY codificador IS PORT ( a: IN STD_LOGIC_VECTOR (3 DOWNTO 0); z: OUT STD_LOGIC_VECTOR (1 DOWNTO 0); gs: OUT STD_LOGIC); END decodificador; 15 Solución al ejercicio: decodificador 16

Solución al ejercicio: comparador 17 Solución al ejercicio: codificador 18

DESCRIPCIÓN DE CIRCUITOS DIGITALES Circuitos combinacionales Circuitos secuenciales Organización del diseño. Diseño genérico Operaciones iterativas Autor: Luis Entrena Arrontes 19 Indice Biestables y registros Reglas para el diseño de circuitos secuenciales Contadores Máquinas de estados 20

Biestables -- Biestable D -- activo por flanco de subida PROCESS (clk) IF clk EVENT AND clk = 1 THEN q <= d; -- Biestable D -- activo por nivel (latch) PROCESS (enable, d) IF enable = 1 THEN q <= d; d q d q clk enable SOLO DISEÑO SÍNCRONO 21 Un registro Si q es un vector, se crea un registro de tantos biestables como indique la dimensión del vector -- Registro de 8 bits SIGNAL q, d: STD_LOGIC_VECTOR (7 DOWNTO 0);... PROCESS (clk) IF clk EVENT AND clk = 1 THEN q <= d; 22

Biestable con entradas asíncronas Las entradas asíncronas deben figurar en la lista de sensibilidad Nota: la precedencia de las señales de control viene dada por el orden IF... ELSIF... ELSIF... PROCESS (preset, clr, clk) IF preset = 1 THEN q <= 1 ; ELSIF clr = 1 THEN q <= 0 ; ELSIF clk EVENT AND clk = 1 THEN q <= d; preset tiene precedencia sobre el clr 23 Biestable con entradas de control síncronas Las entradas síncronas no figuran en la lista de sensibilidad PROCESS (reset, clk) IF reset = 1 THEN q <= 0 ; ELSIF clk EVENT AND clk = 1 THEN IF enable = 1 THEN q <= d; } } parte parte asíncrona síncrona 24

Reglas para el diseño de circuitos secuenciales síncronos Deben describirse mediante procesos Debe haber una condición de flanco de reloj IF clk EVENT AND clk = 1 THEN IF clk EVENT AND clk = 0 THEN Detrás de dicha condición no puede haber ELSE Si se asigna una señal, no es necesario cubrir todos los casos: en los casos no cubiertos, la señal mantiene su valor Lista de sensibilidad: reloj + entradas asíncronas (reset) Las entradas de datos y las entradas síncronas no aparecen en la lista de sensibilidad del proceso 25 Reglas para el diseño de circuitos secuenciales síncronos Plantilla para el diseño de circuitos secuenciales síncronos PROCESS( <reloj + entradas asíncronas>) IF <condición de inicialización asíncrona> THEN <inicialización asíncrona> ELSIF <flanco activo de reloj> THEN -- Comportamiento síncrono 26

Ejemplos PROCESS (reset, clk) IF reset = 0 THEN q <= 0101 ; ELSIF clk EVENT AND clk = 1 AND enable = 1 THEN q <= d; 27 Ejemplos PROCESS (reset, clk) IF reset = 0 THEN q <= 0101 ; ELSIF enable = 1 THEN IF clk EVENT AND clk = 1 THEN q <= d; 28

Ejemplos PROCESS (reset, clk) IF reset = 1 THEN IF clk EVENT AND clk = 1 THEN IF enable = 1 THEN q <= d; ELSE q <= 0101 ; 29 Inferencia de registros y biestables Todas las señales que se asignan entre IF clk EVENT... y END IF infieren un biestable Todas las variables que se asignan antes de ser leídas entre IF clk EVENT... y END IF infieren un biestable 30

Ejemplos -- Ejemplo 1 (recomendado) PROCESS (clk) VARIABLE v: STD_LOGIC; IF clk EVENT AND clk = 1 THEN v := d; q <= v; -- Ejemplo 2 (no recomendado) PROCESS (clk) VARIABLE v: STD_LOGIC; IF clk EVENT AND clk = 1 THEN q <= v; v := d; 31 Ejemplos -- Sumador combinacional PROCESS (a, b) s <= a + b; -- Sumador seguido de un registro PROCESS (clk) IF clk EVENT AND clk = 1 THEN s <= a + b; 32

Ejemplos -- Sumador con entradas y salidas registradas PROCESS (clk) IF clk EVENT AND clk = 1 THEN a1 <= a; b1 <= b; s <= a1 + b1; -- Sumador con entradas y salidas registradas -- Registros de entrada y salida con reset PROCESS (reset, clk) IF reset = 1 THEN a1 <= (OTHERS => 0 ); b1 <= (OTHERS => 0 ); s <= (OTHERS => 0 ); ELSIF clk EVENT AND clk = 1 THEN a1 <= a; b1 <= b; s <= a1 + b1; 33 Ejemplos Un registro puede no tener reset, pero no puede hacer reset de una señal que no sea un registro! -- Sumador seguido de un registro -- Inicializacion incorrecta! PROCESS (clk) IF reset = 1 THEN a <= (OTHERS => 0 ); b <= (OTHERS => 0 ); s <= (OTHERS => 0 ); ELSIF clk EVENT AND clk = 1 THEN s <= a + b; 34

Ejercicios Diseñar un biestable JK activo por flanco de bajada ENTITY biestable_jk IS PORT ( reset: IN STD_LOGIC; clk: IN STD_LOGIC; j, k: IN STD_LOGIC; q: OUT STD_LOGIC); END biestable_jk; Diseñar un registro de desplazamiento ENTITY reg_desp IS PORT ( reset: IN STD_LOGIC; clk: IN STD_LOGIC; es: IN STD_LOGIC; q: OUT STD_LOGIC_VECTOR (0 to 3)); END reg_desp; 35 Solución: Biestable JK 36

Solución: Registro de desplazamiento 37 Contadores PROCESS (reset, clk) IF reset = 1 THEN q <= 00000000 ; ELSIF clk EVENT AND clk = 1 THEN IF enable = 1 THEN q <= q + 1; 38

Contadores PROCESS (reset, clk) VARIABLE c: INTEGER RANGE 0 TO 255; IF reset = 1 THEN c := 0; Necesario para evitar el desbordamiento en simulación ELSIF clk EVENT AND clk = 1 THEN IF enable = 1 THEN IF c = 255 THEN c := 0; ELSE q declarado como entero c := c + 1; Si q es un std_logic_vector, utilizar q <= CONV_STD_LOGIC_VECTOR(c, 8); q <= c; 39 Ejercicio Diseñar un contador ascendente de 4 bits con salida de acarreo ENTITY cont4 IS PORT ( reset: IN STD_LOGIC; clk: IN STD_LOGIC; q: OUT STD_LOGIC_VECTOR(7 DOWNTO 0); carry_out: OUT STD_LOGIC); END cont4 ; 40

Ejercicio Diseñar un contador ascendente/descendente con entradas de habilitación y de precarga ENTITY cont_up_down IS PORT ( reset: IN STD_LOGIC; clk: IN STD_LOGIC; load: IN STD_LOGIC; d: IN STD_LOGIC_VECTOR(7 DOWNTO 0); ud: IN STD_LOGIC; enable: IN STD_LOGIC; q: OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END cont_up_down; 41 Solución: contador ascendente de 4 bits 42

Solución: contador ascendente/descendente con habilitación y precarga 43 Máquinas de estados Entradas Salidas Parte combinacional Estado actual Estado siguiente Biestables clk 44

Ejemplo: máquina de Moore 0 0 s0 / 0 1 1 s1 / 0 1 s11 / 1 ENTITY maquina is PORT( clk: in std_logic; reset: in std_logic; a: in std_logic; z : out std_logic); END maquina; 0 45 Ejemplo: Máquina de Moore ARCHITECTURE moore OF maquina IS TYPE estado IS (s0, s1, s11); SIGNAL estado_actual, estado_siguiente: estado; PROCESS (clk, reset) IF reset = '1' THEN estado_actual <= s0; ELSIF clk'event AND clk = '1' THEN estado_actual <= estado_siguiente;... PROCESS (estado_actual, a) CASE estado_actual IS WHEN s0 => z <= '0'; IF a = '0' THEN estado_siguiente <= s0; ELSE estado_siguiente <= s1; WHEN s1 => z <= '0'; IF a = '0' THEN estado_siguiente <= s1; ELSE estado_siguiente <= s11; WHEN s11 =>...... END CASE; END moore; 46

Ejemplo: máquina de Mealy 0 / 0 0 / 0 s0 1 / 0 s1 ENTITY maquina is PORT( clk: in std_logic; reset: in std_logic; a: in std_logic; z : out std_logic); END maquina; 1 / 1 47 Ejemplo: Máquina de Mealy ARCHITECTURE mealy OF maquina IS TYPE estado IS (s0, s1); SIGNAL estado_actual, estado_siguiente: estado; PROCESS (clk, reset) IF reset = '1' THEN estado_actual <= s0; ELSIF clk'event AND clk = '1' THEN estado_actual <= estado_siguiente;... PROCESS (estado_actual, a) CASE estado_actual IS WHEN s0 => z <= '0'; IF a = '0' THEN estado_siguiente <= s0; ELSE estado_siguiente <= s1; WHEN s1 => IF a = '0' THEN z <= '0'; estado_siguiente <= s1; ELSE z <= '1'; estado_siguiente <= s11; END CASE;... 48