Altera University Program 1 Proyecto de Dise˜no 6 Circuitos sumadores, restadores, y multiplicadores El proposito de este ejercicio es examinar los circuitos aritm´eticos que implementan la operaciones de suma, resta y mutiplicaci´on. Cada ciurcuito ser´a descrito en VHDL e implementado en la tarjeta de desarrollo DE-2 de Altera. Parte I Considere el circuito sumador en cascada usado en la sesi´on 2, cuyo diagrama se muestra en la Figura 1. Figura 1: Sumador en cascada de cuatro bits. Este circuito puede implementarse usando el operador ’+’ en VHDL. Por ejemplo, el siguiente fragmento de c´odigo suma dos n´umeros binarios de n bits A y B, y coloca el resultado de la suma en sum: library ieee; use ieee.std logic 1164.all; use ieee.std logic arith.all; use ieee.std logic signed.all; ... signal sum : std logic vector(n-1 downto 0); ... sum <= A + B; Use la estructura mostrada anteriormente para disear un circuito como el de la Figura 2. Siga los pasos que a continuaci´on se listan para implementar su dise˜no: 1. Cree un nuevo proyecto en el IDE Quartus II. Identifique la matricula del circuito integrado reconfigurable en su tarjeta DE-2; indique al compilador que su dise˜no debe ser optimizado para esta arquitectura. 2. Escriba un programa en VHDL que describa el circuito mostrado en la Figura 2. 3. Importe el archivo de asignaci´on de patillas espec´ıfico para la tarjeta DE-2. 4. Conecte la entrada A a los interruptores SW7−0 ; use el bot´on KEY0 como una entrada de reinicializaci´on activa en bajo y el bot´on KEY1 como una entrada manual de reloj. Despliegue la salida resultado en los LEDs LEDR7−0 y la bandera de sobrefuljo en el LED LEDR8 . 5. Compile su dise˜no y use simulaci´on temporal para verificar la operaci´on correcta de su circuito. Una ves que su simulaci´on muestre los resultados deseados, programe la tarjeta DE-2 con su dise˜no. Verifique que la bandera de sobreflujo solo se activa cuando el acumulador se desborda. Traducido por Eduardo Rodr´ıguez Mart´ınez Altera University Program 2 6. Abra el reporte de la compilaci´on de su proyecto y examine los resultados reportados por la herramienta Timing Analyzer. Cu´al es la frecuencia m´axima de operaci´on de su circuito? Cu´al es la trayectoria en su circuito que presenta el m´aximo retardo? Figura 2: Circuito acumulador de 8 bits. Parte II Expanda el circuito mostrado en la Figura 2 para que sea cap´az de sumar y restar. Modifique su dise˜no y a˜nada la entrada suma resta de tal forma que cuando esta entrada sea 1 su circuito debe restar A de resultado, y cuando sea 0 su circuito debe sumar A a resultado. Parte III La Figura 3a muestra un ejemplo de como se realiza una multiplicaci´on de dos n´umeros en sistema decimal A = 11 y B = 12. Figura 3: Multiplicaci´on de numeros binarios. El producto P = A × B se calcula como una suma. El primer sumando es A multiplicado por el digito de las unidades en B. El segundo sumado es la version desplazada una posicion a la izquierda del resultado de A multiplicado por el digito en las decenas en B. La 3b muestra el mismo ejemplo pero usando n´umeros binarios de cuatro bits. En este caso, los sumandos son versiones desplazadas de A o´ del n´umero ”0000”, porque cada d´ıgito en B es 1 o´ 0. La Figura 3c muestra como cada sumando puede ser construdio a partir de funciones AND entre A y el correspondiente digito en B. Traducido por Eduardo Rodr´ıguez Mart´ınez Altera University Program 3 En la Figura 4 se ilustra un circuito de cuatro bits que implementa el producto P = A×B. Este tipo de circuito es llamado multiplicador en malla ya que presenta una estructura regular que asemeja una malla. Las secciones sombreadas en la Figura 4 corresponden a las columnas sombreadas en la Figura 3c. En cada fila del multiplicador se usan compuertas AND para producir los sumandos, y tambi´en se usan sumadores completos para producir las sumas parciales. Figura 4: Multiplicador en malla. Siga los pasos que se listan a continuaci´on para implementar el sumador en malla: 1. Cree un nuevo proyecto en el IDE Quartus II. 2. Escriba el programa en VHDL que implemente el circuito mostrado en la Figura 4, incluyalo en su proyecto y compilelo. 3. Use la simulaci´on funcional para verificar el funcionamiento de su dise˜no. 4. Expanda su dise˜no de forma que use los interruptores SW11−8 , en la tarjeta DE-2, para introducir el numero A, y los interruptores SW3−0 para introducir el numero B. Despliegue el valor hexadecimal de A y B en los visualizadores de siete segmentos HEX6 and HEX4, respectivamente. El producto P = A × B debe ser desplegado usando los visualizadores de siete segmentos HEX1 y HEX0. Los demas visualizadores deben de estar apagados. Traducido por Eduardo Rodr´ıguez Mart´ınez Altera University Program 4 5. Recompile su circuito y programe la tarjeta DE-2 con e´ l. 6. Pruebe el funcionamiento correcto de su dise˜no con distintos valores para A y B. Parte IV En la Parte III usted implement´o un multiplicador en malla usando sumadores completos. Remplazando cada fila de sumadores completos por un sumador de n bits, el multiplicador en malla puede representarse como se muestra en la Figura 5. Figura 5: Multiplicador en malla usando sumadores de n bits. Cada sumador de n bits opera sobre una version de A desplazada a la izquierda y la suma parcial proveniente de la fila anterior. Esta descomposici´on en sumas parciales nos permite construir multiplicadores mas grandes. Use este m´etodo para dise˜nar un multiplicador de 8 bits como el mostrado en la Figura 6. Este circuito contiene elementos de memoria en las entradas y salidas que nos permite retener su valor para posterior uso. Traducido por Eduardo Rodr´ıguez Mart´ınez Altera University Program 5 Figura 6: A registered multiplier circuit. Siga los pasos que a continuaci´on se listan: 1. Cree un nuevo proyecto en el IDE Quartus II. 2. Escriba el programa en VHDL que implemente el circuito en la Figura 6, incluya lo en su proyecto y sintentice el circuito. 3. Use simulaci´on funcional para verificar su dise˜no. 4. Expanda su dise˜no de forma que use los interruptores SW15−8 , en la tarjeta DE-2, para introducir el valor de A, y los interruptores SW7−0 para insertar el valor de B. Despliegue el valor hexadecimal de A y B en los visualizadores de siete segmentos HEX7-6 y HEX5-4, respectivamente. El producto P = A × B debe ser desplegado usando los visualizadores de siete segmentos HEX3-0. 5. Recompile su circuito y programe la tarjeta DE-2 con e´ l. 6. Pruebe el funcionamiento correcto de su dise˜no con distintos valores para A y B. 7. Cuantos elementos l´ogicos ocup´o su dise˜no para ser implementado? 8. Cu´al es la frecuencia m´axima de operaci´on de su circuito? Parte V En la Parte IV usted implement´o un multiplicador como un conjunto de sumas consecutivas, que acumulaban versiones desplazadas de A. Otra forma de implementar las sumas consecutivas es mediante el uso de sumas en a´ rbol. Las sumas en a´ rbol es un m´etodo para sumar varios numeros en forma paralela. Esta idea es ilustrada en la Figura 7, donde los n´umeros A, B, C, D, E, F , G, y H son sumados en paralelo. Las sumas A + B, C + D, E + F y G + H se ejecutan de forma simultanea. Los resultados de estas operaciones son sumados de nuevo en paralelo hasta obtener el resultado final P . Traducido por Eduardo Rodr´ıguez Mart´ınez Altera University Program 6 Figura 7: Ejemplo que muestra la suma de ocho cantidades usando sumas en a´ rbol. Implemente un multiplicador en malla de 8 bits usando el m´etodo de sumas en a´ rbol para implementar las sumas concecutivas. Tanto las entradas A y B, como la salida P deben de contener elementos de memoria para almacenar su estado como lo hizo en la Parte IV. Cu´al es la frecuencia m´axima de operaci´on de su circuito? Traducido por Eduardo Rodr´ıguez Mart´ınez
© Copyright 2024