Práctica 6

Anuncio
Altera University Program
1
Práctica 6
Circuitos sumadores, restadores, y multiplicadores
El proposito de esta práctica es examinar los circuitos aritméticos que implementan las operaciones de suma,
resta y mutiplicación. Cada circuito será 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 práctica 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ódigo suma dos números 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 diseñar un circuito como el de la Figura 2.
Siga los pasos que a continuación se listan para implementar su diseño:
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ño 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ón de patillas especı́fico para la tarjeta DE-2.
4. Conecte la entrada A a los interruptores SW7−0 ; use el botón KEY0 como una entrada de reinicialización
activa en bajo y el botón 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ño y use simulación temporal para verificar la operación correcta de su circuito. Una ves
que su simulación muestre los resultados deseados, programe la tarjeta DE-2 con su diseño. 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ón de su proyecto y examine los resultados reportados por la herramienta
Timing Analyzer. Cuál es la frecuencia máxima de operación de su circuito? Cuál es la trayectoria en su
circuito que presenta el máximo retardo?
Figura 2: Circuito acumulador de 8 bits.
Parte II
Expanda el circuito mostrado en la Figura 2 para que sea capáz de sumar y restar. Modifique su diseño y añada 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ón de dos números en sistema decimal
A = 11 y B = 12.
Figura 3: Multiplicación 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úmeros binarios de cuatro bits. En este caso, los sumandos son
versiones desplazadas de A ó del número ”0000”, porque cada dı́gito en B es 1 ó 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én se usan sumadores completos para producir las
sumas parciales.
Figura 4: Multiplicador en malla.
Siga los pasos que se listan a continuación 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ón funcional para verificar el funcionamiento de su diseño.
4. Expanda su diseño 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 él.
6. Pruebe el funcionamiento correcto de su diseño con distintos valores para A y B.
Parte IV
En la Parte III usted implementó 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ón en sumas parciales nos permite construir multiplicadores mas grandes. Use este
método para diseñar 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ón 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ón funcional para verificar su diseño.
4. Expanda su diseño 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 él.
6. Pruebe el funcionamiento correcto de su diseño con distintos valores para A y B.
7. Cuantos elementos lógicos ocupó su diseño para ser implementado?
8. Cuál es la frecuencia máxima de operación de su circuito?
Parte V
En la Parte IV usted implementó 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
árbol.
Las sumas en árbol es un método para sumar varios numeros en forma paralela. Esta idea es ilustrada en la
Figura 7, donde los números 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 árbol.
Implemente un multiplicador en malla de 8 bits usando el método de sumas en á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ál es la frecuencia máxima de operación de su circuito?
Traducido por Eduardo Rodrı́guez Martı́nez
Descargar