El sumador/restador

El sumador/restador

El siguiente ejemplo muestra el modelo VHDL de un sumador/restador, en el que la señal sel realiza la activación de suma o resta

sel=0 implica suma
sel=1 implica resta

El código VHDL es el siguiente

La siguiente figura muestra una síntesis realizada del modelo anterior

El funcionamiento del módulo sumador/restador, controlado por la señal sel, puede comprobarse, en la gráfica que sigue

¡Cuidado con los resultados presentados en esta gráfica!

A veces aparecen errores de desbordamiento claros en el funcionamiento como, por ejemplo, a los 24 ns cuando se realiza la operación

a + b + cin = 1010 + 1101 + 0 = 0111, resultado que es falso por desbordamiento
Y en otros, parece que todo sea correcto, como en los 16 ns cuando se realiza la operación
a + b + cin = 0101 + 0101 + 0 = 1010 que, aunque parezca que 5 + 5 = 10 tiende a ser correcto, también es erróneo el resultado por desbordamiento. ¿¿Cómo??

Si pasamos la forma de onda a formato decimal se observarán mejor estos errores claramente que, a los 16 ns, 5 + 5 + 0 = -6 ¡!

Pero, ¿por qué se producen estos resultados?
Debemos tener presente que estamos operando en complemento a 2, y que 1010 (C2, 4 dígitos) = -6 en base 10

Por ello, debemos ser cuidadosos al analizar los resultados aritméticos. Debemos saber elegir correctamente, en cada caso, el tipo de datos con el que operamos. Por ejemplo, en este caso probablemente sería conveniente trabajar directamente con tipos signed en los vectores

 

Problema

A partir del módulo sumador/restador de 4 bits resulta fácil construir (de forma estructural) cualquier sumador/restador de 2*m bits.

Como ejercicio se podría implementar cualquier sumador de 4*m bits.

Sin embargo, y para facilitar la comprobación, se propone lo siguiente

1. Cambiar, dentro del modelo sumaDif.vhd la variable genérica n. Poner n=2

2. Entonces, a partir del modelo sumador/restador de 2 bits, crear el nuevo modelo estructural sumador/restador de 4 bits

3. Generar un fichero de comprobación cuyas señales de entrada al sumador/restador evolucionen de acuerdo con la gráfica presentada en esta página. El resultado de salida debería ser el mismo

Anterior
Volver a inicio curso
Volver a inicio capítulo
Siguiente


WcN - Joan Oliver. Diseño de circuitos digitales con VHDL: Ejemplos