ELECTRÓNICA DIGITAL 1 TRABAJO 1. UNIDAD IV. UNIDAD DE CONTROL Objetivo. Trabajar con las señales de control y de datos de una unidad aritmética simulando su funcionalidad en un software. Trabajo. Simular con el software de simulación del Warp (Active HDL‐Sim) el diseño del multiplicador binario visto en clase. Se simulará la descripción en VHDL también vista en clase, se adjunta en el presente documento para mayor facilidad. Pasos: 1. Crear un proyecto nuevo llamado binmul (como la entidad del mutliplicador). 2. Crear un archivo vhdl nuevo llamado binmul (como la entidad del multiplicador). Aquí editará el archivo con la descripción vista en clase. 3. Compilar el proyecto. Se habrá seleccionado un dispositivo CPLD para la compilación, se sugiere el CPLD | Flash370l | c375i | CY7C375l‐66UMB (en Project | Select device...). 4. Cuando no tenga errores ir al simulador para llevarla a cabo la simulación. Recuerde que en la entidad del diseño están las entradas y salidas del diseño. 5. Simule TRES operaciones de multiplicación diferentes. Recuerde que el multiplicando y el multiplicador son de cuatro bits, esto es, solo pueden ser valores entre 0000 y 1111 (0 y 15). AL MENOS DOS DE LOS EJEMPLOS DEBERÁN USAR VALORES QUE ESTÉN PRESENTES EN SUS NÚMEROS DE CONTROL TOMADOS DE UNO O DOS DIGITOS. ESPECIFICAR EN EL REPORTE CUÁLES NÚMEROS SE USARON PARA LAS SIMULACIONES. 6. Copien los resultados correctos de sus tres simulaciones y entreguen un reporte explicando lo que presentan en las gráficas de tiempo de las simulaciones. 7. Un ejemplo se muestra en la figura 1. En el cursor rojo inicia el resultado (result = 225). La señal de salida VSBU1 muestra los estados del control (T0=0, T1=1, T2=2, T3=3). Figura 1. Simulación del multiplicador binario, multiplicando y multiplicador tienen el valor de 15 (11112). EL TRABAJO SE PUEDE PRESENTAR INDIVIDUALMENTE O EN EQUIPO DE LABORATORIO. DR. JAVIER VEGA PINEDA INSTITUTO TECNOLÓGICO DE CHIHUAHUA ELECTRÓNICA DIGITAL 2 CÓDIGO VHDL -- Multiplicador binario de 4 bits, libro de Morris Mano -- Modificado por Javier Vega-Pineda (Octubre 2009) library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity binmul is port( clk, reset, s: in std_logic; mulando, mulador: in std_logic_vector(3 downto 0); --multiplicando y multiplicador result: out std_logic_vector(7 downto 0); --resultado A y Q cuenta: out std_logic_vector(2 downto 0));--contador P end; architecture elect_dig_2 of binmul is type estado is (T0, T1, T2, T3); signal edopte, edosgt: estado; signal A: std_logic_vector(4 downto 0); --A(4) = C signal B, Q: std_logic_vector(3 downto 0); --registros signal P: std_logic_vector(2 downto 0); --contador signal Z: std_logic; --Carry out y bandera de cero del contador begin Z <= not(P(0) or P(1) or P(2)); result <= A(3 downto 0) & Q; cuenta <= P; registro_estado: process(clk, reset) begin if reset='1' then edopte <= T0; elsif (clk'event and clk = '1') then edopte <= edosgt; end if; end process; func_estado_sgte: process (s, Z, edopte) begin case edopte is when T0 => if s='1' then edosgt <= T1; else edosgt <= T0; end if; when T1 => edosgt <= T2; when T2 => edosgt <= T3; when T3 => DR. JAVIER VEGA PINEDA INSTITUTO TECNOLÓGICO DE CHIHUAHUA ELECTRÓNICA DIGITAL 3 if Z='1' then edosgt <= T0; else edosgt <= T2; end if; end case; end process; func_datos: process(clk) begin if (clk'event and clk='1') then case edopte is when T0 => B<= mulando; Q <= mulador; when T1 => A <= "00000"; P <="100"; when T2 => if Q(0)= '1' then A <= A + ('0'& B); end if; P <= P - "001"; when T3 => Q <= A(0) & Q(3 downto 1); A <= '0' & A(4 downto 1); end case; end if; end process; end; ENTREGA DE SU REPORTE: LUNES 26 DE OCTUBRE EN CLASE DR. JAVIER VEGA PINEDA INSTITUTO TECNOLÓGICO DE CHIHUAHUA