Proyecto de diseño 6

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