Está en la página 1de 4

Laboratorio de sistemas Digitales I

LAB - 5

Escuela Técnica Superior de Ingeniería (ICAI)
Departamento de Electrónica y Automática

Lab-5: Circuitos aritméticos. Sumador de 5 bits.
OBJETIVOS
El propósito de esta práctica es:
-

Comprender el funcionamiento de un sumador.
Usar los bucles for … generate para instanciar componentes en VHDL.

MATERIAL
-

Ordenador personal con Quartus II y ModelSim.
Tarjeta de desarrollo de lógica programable.

DURACIÓN
1 sesión.

TRABAJO PREVIO E INFORMACIÓN DE CONSULTA
En esta sesión se harán como ejercicios previos:
- Obtener las ecuaciones lógicas del sumador de 1 bit a partir de la tabla 5.1 de los
apuntes (página 86).
- Diseño en VHDL de los bloques necesarios para la práctica.
- Lectura previa de las notas de clase y tutorial de VHDL.
- Lectura del manual de la tarjeta de lógica programable DE1 (disponible en la página
web de la asignatura).

TRABAJO POSTERIOR Y ENTREGA DE RESULTADOS
Después del desarrollo de la práctica se debe entregar un informe de resultados (véase guía
de informe) y el trabajo desarrollado en el laboratorio en soporte informático que contenga
el proyecto completo. Debe incluir:
1. Descripción del experimento y los pasos seguidos (tablas de verdad, expresiones
lógicas, K-maps).
2. Esquemas del circuito, código VHDL y su explicación.
3. Simulaciones y su explicación.
4. Resultados y conclusiones.
1

organice en QuartusII un proyecto con el nombre Practica5. A este bloque se le denominará Sumador1Bit. DESARROLLO PRÁCTICO Para desarrollar esta práctica. El diagrama de bloques del circuito a diseñar es el siguiente: Ilustración 1: Diagrama de bloques del circuito.vhd. También se usará el bloque BinA7Seg diseñado en la práctica anterior. Como primer paso. El diagrama general de bloques de la práctica estará compuesto por dos decodificadores de 7 segmentos BinA7Seg y el bloque Sumador5Bits.vhd y Sumador5Bits. Proceda a continuación con la descripción en VHDL de los bloques Sumador1Bit. el sumador de 5 bits ha de implantarse usando cinco sumadores de 1 bit. Tenga en cuenta que la salida del sumador de 5 bits está formada por un número de 5 bits que es el resultado de la suma y un acarreo de salida que nos indicará el desborde de la suma. La Ilustración 1 nos muestra este diagrama general de bloques.5 INTRODUCCIÓN En esta práctica se va a diseñar un circuito para sumar números de 5 bits.Laboratorio de sistemas Digitales I LAB . A su vez. 2 . además de 10 interruptores (SW9-SW0) y 2 displays de 7 segmentos (Display0 y Display1). arranque QuartusII y genere un proyecto con el nombre Practica5.

Laboratorio de sistemas Digitales I LAB . En el anexo A se incluye un banco de prueba para generar los estímulos para la simulación (véase la práctica 3 si no recuerda cómo añadir el testbench). abra una hoja nueva de tipo diagrama con el mismo nombre del proyecto (Practica5) para colocar los componentes y su conexionado definitivo en la placa en el top level del proyecto. Asignación de patillas de la FPGA a las señales del circuito. en el código VHDL y en el conexionado de los bloques. El manual lo tiene en el siguiente enlace: (http://www. Finalmente realice el volcado a la placa del circuito diseñado para su comprobación por el profesor. Si lo desea puede crear el nivel superior de la jerarquía usando una descripción estructural en VHDL. si los hubiera.5 A continuación. 3 .es/daniel/asignaturas/SistDig1_1_ITL/DE1_UserManual_v1018.icai.upcomillas.dea. tal como se refleja en la Ilustración 1. Realizado este paso proceda a la compilación del circuito diseñado. Ojo. en el banco de prueba mostrado se ha añadido al generado automáticamente por Quartus el paquete ieee. A continuación ha de consultar el Manual de la Tarjeta DE1 para identificar el pin de la FPGA con el correspondiente puerto de entrada y de salida: Señal a(0) a(1) a(2) a(3) a(4) b(0) b(1) b(2) b(3) b(4) d_a(6) d_a(5) d_a(4) d_a(3) d_a(2) d_a(1) d_a(0) d_b(6) d_b(5) d_b(4) d_b(3) d_b(2) d_b(1) d_b(0) desborde Tipo Entrada Entrada Entrada Entrada Entrada Entrada Entrada Entrada Entrada Entrada Salida Salida Salida Salida Salida Salida Salida Salida Salida Salida Salida Salida Salida Salida Salida Seven Seven Seven Seven Seven Seven Seven Seven Seven Seven Seven Seven Seven Seven Componente SW0 SW1 SW2 SW3 SW4 SW5 SW6 SW7 SW8 Sw9 Segment Digit Segment Digit Segment Digit Segment Digit Segment Digit Segment Digit Segment Digit Segment Digit Segment Digit Segment Digit Segment Digit Segment Digit Segment Digit Segment Digit LED Green[0] Pin FPGA 0[a] 0[b] 0[c] 0[d] 0[e] 0[f] 0[g] 1[a] 1[b] 1[c] 1[d] 1[e] 1[f] 1[g] Tabla 1. corrija los errores.pdf ). Proceda a continuación con la simulación en ModelSim.numeric_std (3º línea) y el interior del último PROCESS.

b => b. init : PROCESS -. USE ieee.numeric_std.signals SIGNAL a : STD_LOGIC_VECTOR(4 DOWNTO 0). 5)). assert unsigned(c_out&s) = i+j report "fallo en la suma" severity failure.all. s => s ). SIGNAL c_out : STD_LOGIC.constants -. ENTITY Sumador5Bits_vhd_tst IS END Sumador5Bits_vhd_tst. USE ieee.std_logic_1164. ARCHITECTURE Sumador5Bits_arch OF Sumador5Bits_vhd_tst IS -.variable declarations BEGIN -. END PROCESS always. s : OUT STD_LOGIC_VECTOR(4 DOWNTO 0) ). c_out => c_out. SIGNAL s : STD_LOGIC_VECTOR(4 DOWNTO 0). end loop.optional sensitivity list -. COMPONENT Sumador5Bits PORT ( a : IN STD_LOGIC_VECTOR(4 DOWNTO 0). c_out : OUT STD_LOGIC. always : PROCESS -. .( ) -. 5)).code that executes only once WAIT.list connections between master ports and signals a => a. SIGNAL b : STD_LOGIC_VECTOR(4 DOWNTO 0). END Sumador5Bits_arch.all.code executes for every event on sensitivity list for i in 0 to 31 loop a <= std_logic_vector(to_unsigned(i. wait for 100 ns. WAIT. END COMPONENT.variable declarations BEGIN -. end loop. BEGIN i1 : Sumador5Bits PORT MAP ( -.Anexo A LIBRARY ieee. END PROCESS init. for j in 0 to 31 loop b <= std_logic_vector(to_unsigned(j. b : IN STD_LOGIC_VECTOR(4 DOWNTO 0).