DEPARTAMENTO DE ELECTRÓNICA I.T.Telecomunicación Sistemas Electrónicos



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

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

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

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

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

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

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

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 examen de Septiembre 2014

VHDL: Código Secuencial. Arquitectura del Computador 2017

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

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

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

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

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

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

DESCRIPCIÓN DE CIRCUITOS DIGITALES

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

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

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

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

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

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

Simulación avanzada con TestBench en HDL. Ing. Andrés Miguel Airabella. Ing. Facundo Aguilera.

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

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

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

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

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

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

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

Recursos y Metodologías. Función. Programas

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

Diseño de Sistemas Electrónicos Digitales Avanzados

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

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

PRÁCTICA: LENGUAJE VHDL

4. SUMADORES EN BINARIO PURO (I)

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

Tutorial de VHDL: Contadores y Simulación

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

Sistemas Electrónicos Digitales. PRACTICA nº 8

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

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

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

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

Código concurrente en VHDL [5]

SISTEMAS DIGITALES VHDL

MAQUINA DE ESTADO FINITO (FSM) Autómata finito

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

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

DISEÑODE SISTEMAS ELECTRÓNICOS DIGITALES AVANZADOS.

MICROPROCESADOR (CÓDIGO EN VHDL) TOMADO DEL LIBRO PARDO Y BOLUDA

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

DISEÑO DE CIRCUITOS SECUENCIALES

MAQUINA DE ESTADO FINITO (FSM) Autómata finito

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

Ejemplos y tipos de datos 4.1 Ejemplos simples 4.2 Definición de nuevos tipos de datos 4.3 Ejemplos de máquinas de estados 4.

SINTAXIS BÁSICA DEL VHDL SIMPLIFICADO

INFORMÁTICA INDUSTRIAL. 3º INGENIERÍA TÉCNICA INDUSTRIAL. ESPECIALIDAD ELECTRÓNICA BOLETÍN 2. CURSO 2003/04

Comparador de 1 bit Tabla de verdad y circuito lógico A B A > B A = B A < B

1. Lenguajes de descripción de hardware. VHDL

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

Descripción en VHDL de arquitecturas para implementar el algoritmo CORDIC

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

ESTRUCTURA Y TECNOLOGÍA DE COMPUTADORES PRÁCTICAS DE LÓGICA CABLEADA

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

Simulación de circuitos descritos en VHDL

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

PRUEBA DE ENTRADA E P3 P2

Simulación y Síntesis con VHDL

Introducción al VHDL

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

INTRODUCCIÓN AL LENGUAJE VHDL PARA CIRCUITOS

PRACTICA 6: CIRCUITOS ARITMETICOS: SUMADORES Y RESTADORES.

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

Tema 7. Análisis de Circuitos Secuenciales

9. Dibujar el diagrama de tiempos de las siguientes asignaciones de señales.

SECUENCIA: A BASE DE LOS 3 TIPOS DE F/F

Practica No. 5 Diseño de un Multiplicador

5. Decodificadores. Salida _1= A A A A = m = M ... Electrónica Digital. Tema

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

Practica No. 5 Diseño de un Multiplicador

LABORATORIO DE ARQUITECTURA DE COMPUTADORES. I. T. I. SISTEMAS / GESTIÓN GUÍA DEL ALUMNO

Tema 4 - Bloques combinacionales

4.3. Lenguaje VHDL Declaración de Packages

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

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

ANEXO 1 A LAS CLASES DEL AÑO 2016

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

Departamento de Ingeniería Electrónica E.T.S.I. Telecomunicación U.P.M. CIRCUITOS ELECTRÓNICOS PRUEBA ESCRITA Enero de 2015 Duración: 90 min.

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

2. Escoja la ubicación y el nombre del proyecto. Seleccione la casilla Create project subdirectory.

Practicas tuteladas VHDL (curso 04-05)

Practica 9 Estilos de codificar a estados FCE

Multiplicador Digital

Práctica 7. Diseño en VHDL de un modulador PPM

VHDL. Lenguaje de descripción hardware Estructura Básica de diseño

Transcripción:

DEPARTAMENTO DE ELECTRÓNICA I.T.Telecomunicación Sistemas Electrónicos ASIGNATURA Microelectrónica FECHA Junio - 2009 APELLIDOS,NOMBRE SOLUCION Nº Lista 1 2 3 4 5 6 7 T Cuestión 1 (10 ptos) Nota: las respuestas incorrectas, restan 1/3 de la puntuación. a. En las pastillas VirtexII de Xilinx existen bloques de memoria denominados BRAM, qué capacidad de almacenamiento tiene cada uno de ellos? 18 kbit b. Qué significa BIST. Built-in Self Test En el proceso de fabricación de chips. c. Enumere los pasos de la implementación de un CI tras haber realizado la síntesis del diseño. Wafer Preparation Photolithography Etch Cleaning Thin Films Ion Implantation Planarization Test and Assembly d. Indique para qué sirve la implantación de iones. Es el proceso de dopado del silicio. e. Existe un proceso denominado Etch, qué proceso le precede y qué proceso le sigue? Photo-Lithography => Etch => Cleaning 1/9

Cuestión 2 (10 ptos) Codifique un procedimiento Cont1 dentro de un paquete MM para que sea usado en la generación del siguiente cronograma correspondiente a un contador dentro de un testbench. Sus parámetros son los siguientes: - una constante de 4 bits, que define el salto de la cuenta (cronograma = 2) - una señal de entrada que indica el valor inicial de partida del contador (4, dada en 6 bits). - una señal de entrada que indica el valor máximo que puede llegar a tener el contador (dada en 10 bits). - una señal de salida (10 bits) con el valor de cuenta. Los valores se van proporcionando en cada flanco descendente de la señal de reloj clk. Cronograma: SOL: procedure cont1 ( constant N : in unsigned(3 downto 0); signal INI : in unsigned(3 downto 0); signal MAX : in unsigned(9 downto 0); signal S : out unsigned(9 downto 0) ) is variable aux : unsigned(s'range); -- cont1 aux := (others => '0'); aux(ini'range) := INI; S <= aux; wait until clk='0'; while aux<max loop aux := aux+n; S <= aux; wait until clk='0'; end cont1; 2/9

Cuestión 3 (15 ptos) El código Gray es un tipo especial de código binario que no es ponderado (los dígitos que componen el código no tienen un peso asignado). Su característica más significativa es que entre una combinación de dígitos y la siguiente sólo hay una diferencia de un dígito. En la tabla adjunta se muestra la relación entre un código Gray y el binario para un dato de 4 bits. Decimal Binario Gray 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 0000 0001 0011 0010 0110 0111 0101 0100 1100 1101 1111 1110 1010 1011 1001 1000 Para convertir un número binario a Gray se procede de la siguiente forma: El primer bit del código Gray (MSB) es el mismo, igual al primer bit del número binario (MSB). El segundo bit del código Gray será 1 si los bits del primer y segundo del código binario son diferentes y 0 si son iguales. El tercer bit del código Gray será 1 si los bits segundo y tercero del número binario son diferentes y 0 en caso contrario, y así sucesivamente. Para convertir de Gray a binario se requiere de este otro procedimiento: El primer bit binario (MSB) es el mismo que el primer bit Gray (MSB). Si el segundo bit Gray es 0, el segundo bit binario es el mismo que el primero; si el segundo bit Gray es 1, el segundo bit binario es el inverso del primer bit binario. El paso 2 se repite para bits sucesivos. Se debe crear el código VHDL sintetizable que modele un circuito conversor que permita pasar un dato A (de N bits genérico) de binario a Gray o de Gray a binario, en función del valor de una entrada de selección SEL. Si SEL es 1 se realiza la conversión de binario a Gray y si es 0 la conversión es de Gray a binario. 3/9

library ieee; use ieee.std_logic_1164.all; entity gray is generic (N : positive := 4); port ( dato : in std_logic_vector(n-1 downto 0); sel : in std_logic; q : out std_logic_vector(n-1 downto 0) ); end gray; architecture rtl of gray is process (dato, sel) variable aux : std_logic_vector(n-1 downto 0); if sel = '1' then aux(n-1) := dato(n-1); for i in dato'high-1 downto dato'low loop aux(i) := dato(i+1) xor dato(i); else aux(n-1) := dato(n-1); for i in dato'high-1 downto dato'low loop if dato(i) = '0' then aux(i) := aux(i+1); else aux(i) := not aux(i+1); q <= aux; end rtl; 4/9

Cuestión 4 (15 ptos) Realice un testbench que compruebe de forma exhaustiva el comportamiento del circuito de la cuestión anterior, particularizado para N=8 considerando que el circuito combinacional tiene un retardo de 15 ns y escribiendo los resultados en un fichero de nombre results_conversion.dat con el siguiente formato: Tipo_de_Conversion : Valor_Entrada => Valor_Salida En el testbench para finalizar la simulación una vez se haya realizado toda la operativa necesaria de comprobación del circuito se debe dar orden al simulador de finalizar el proceso de simulación. library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; use std.textio.all; use ieee.std_logic_textio.all; entity gray_tb is end gray_tb; architecture sim of gray_tb is component gray generic ( N : positive); port ( dato : in std_logic_vector(n-1 downto 0); sel : in std_logic; q : out std_logic_vector(n-1 downto 0)); end component; constant N : positive := 4; signal dato_i : std_logic_vector(n-1 downto 0); signal sel_i : std_logic; signal q_i : std_logic_vector(n-1 downto 0); -- sim DUT : gray generic map ( N => N) port map ( dato => dato_i, sel => sel_i, q => q_i); process file res : text open write_mode is "results_conversion.txt"; variable buf : line; variable aux : std_logic_vector(n-1 downto 0); sel_i <= '1'; for i in 0 to (2**N)-1 loop aux := std_logic_vector(to_unsigned(i, N)); dato_i <= aux; write (buf, string'( "Binario a Gray : ")); write(buf, aux); write (buf, string'( " => ")); wait for 50 ns; aux := q_i; write(buf, aux); writeline(res, buf); sel_i <= '0'; for i in 0 to (2**N)-1 loop aux := std_logic_vector(to_unsigned(i, N)); dato_i <= aux; write (buf, string'( "Gray a Binario : ")); write(buf, aux); write (buf, string'( " => ")); wait for 50 ns; aux := q_i; write(buf, aux); writeline(res, buf); file_close(res); assert false report "fin simulación" severity failure; end sim; 5/9

Cuestión 5 (15 ptos) Se pide que codifique en VHDL sintetizable un circuito que permita restar dos números A y B, codificados en BCD con un tamaño genérico de N dígitos (p.e. el número 6420, tiene N=4 dígitos BCD). El resultado, RES, también codificado en BCD, tendrá el mismo tamaño que los datos de entrada. Asimismo, se dispondrá de una salida SIGN que indica el signo del resultado. En el caso de que el número A sea mayor que B la operación a realizar será A-B y SIGN toma el valor 0, para indicar que el resultado es positivo. En caso contrario, se realiza la operación B-A y SIGN toma el valor 1 para indicar que el resultado es negativo. Nota: Los puertos de la entidad serán del tipo std_logic o std_logic_vector. library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; entity resta is generic ( N : positive := 4); port ( a, b : in std_logic_vector (4*N-1 downto 0); sign : out std_logic; res : out std_logic_vector (4*N-1 downto 0)); end resta; architecture rtl of resta is -- rtl process (a, b) variable a1, b1 : std_logic_vector (4*N-1 downto 0); variable ai, bi, si : std_logic_vector(3 downto 0); variable co : std_logic; -- process if b > a then a1 := b; b1 := a; sign <= '1'; else a1 := a; b1 := b; sign <= '0'; co := '0'; for i in 0 to N-1 loop ai := a1(i*4+3 downto i*4); bi := std_logic_vector(unsigned (b1(i*4+3 downto i*4))+("000"&co)); if ai < bi then si := std_logic_vector( unsigned(ai)+10 -unsigned(bi)); co := '1'; else si := std_logic_vector( unsigned(ai) -unsigned(bi)); co := '0'; res(i*4+3 downto i*4) <= std_logic_vector(si(3 downto 0)); end rtl; 6/9

Cuestión 6 (20 ptos) Se desea realizar un circuito sumador secuencial con la entidad dada más abajo. Tiene de entrada un bit de datos X y un bit DX que indica cuándo el bit X es válido para ser leído por el circuito. La salida S (un bit) debe ir proporcionando de forma secuencial, el resultado de la operación de suma, indicando un bit DS cuándo el valor de salida es válido. El circuito realiza la suma serie de dos números A y B de N bits (parámetro genérico). Los bits de los números a sumar A y B se van introduciendo alternativamente de forma secuencial por el bit X, siguiendo la secuencia de valores siguiente (LSB a MSB): a0, b0, a1, b1, etc. y atendiendo a que DX esté activo. El circuito proporciona por el bit de salida S, N+1 bits, para que la suma no tenga pérdida de precisión. Entre operación de suma de dos valores A/B y la siguiente operación de suma de otros datos A/B, se debe dar un pulso a la señal de reset (rst), el cual tiene un funcionamiento síncrono. La latencia del circuito debe ser mínima, por lo que no es válido capturar los datos A/B y sumar en paralelo. Se recomienda hacer uso de una máquina de estados Mealy. entity sum_serie is generic(n:integer:=3); port( X,DX,clk,rst: in std_logic; S,DS: out std_logic); end entity sum_serie; SOL: El grafo que se va a implementar es el siguiente: El circuito a implementar en 3 procesos f,g,mem está interconectado de la siguiente manera: 7/9

architecture rtl of FSM1 is type estadosfsm is (q0, q1, q2,q3,q4,q5); signal estado, prox_estado : estadosfsm; f:process (X, DX, estado) case estado is when q0 => if (X='0') then prox_estado <= q1; else prox_estado <= q2; when q1 => prox_estado <= q0; when q2 => if (X='0') then prox_estado <= q0; else prox_estado <= q3; when q3 => if (X='0') then prox_estado <= q2; else prox_estado <= q4; when q4 => prox_estado <= q3; end case; if(dx=0) then prox_estado <= estado; -- no avanza mem:process (CLK, RST) if (RST='1') then estado <= q0; elsif CLK'event and CLK='1' then estado <= prox_estado; g:process (X, DX, estado) case estado is when q0 => DS<='0'; S<= 0 ; -- salida no valida when q1 => DS<='1'; S<=X; when q2 => DS<= 1 ;S<= not X; when q3 => DS<='0'; S<= 0 ; -- salida no valida when q4 => DS<='1'; S<=X; end case; if(dx=0) then DS<= 0 ; -- estado no avanza y salida no es valida end rtl; 8/9

Cuestión 7 (15 ptos) Realice el circuito digital comparador de dos bits A1A0 con B1B0 que proporciona 3 salidas: Igual, Mayor, Menor, usando lógica np-mos. Se valorará la reducción del número de transistores empleados. SOL: El circuito de lógica np-mos tiene el siguiente esquema. Las funciones a realizar como PDN y que serán utilizadas como entradas posteriormente de las PUN de salida, son: Ig0 =a0*b0+/a0*/b0 May0=a0*/b0 Men0=/a0*b0 Ig1 =a1*b1+/a1*/b1 Cuya implementación usando la teoría de CMOS estático es directa. Como redes PUN, se tienen las 3 salidas deseadas: May10=a1*/b1+May0*Ig1 Men10=/a1*b1+Men0*Ig1 Ig10 =Ig1*Ig0 Cuya implementación usando la teoría de CMOS estático es también directa. 9/9