You are on page 1of 6

SUMADOR/RESTADOR DE 4 BITS

Disee un circuito usando VHDL que permita sumar/restar dos nmeros A y B


(A=A3A2A1A0, B=B3B2B1B0) de 4 bits cada uno. El circuito tendr una entrada X, de
tal manera que cuando X=0, el circuito sume y cuando X=1, el circuito reste. Considere que
A>B.

FUNDAMENTO TERICO
En circuitos digitales, un sumador/restador es un circuito que es capaz de sumar o substraer
nmeros (particularmente en binario). A continuacin se muestra un circuito que suma o
resta dependiendo de una seal de control.

Como puede observarse M es una lnea de control, suma cuando es 0 (F = A + B) y resta


cuando es 1 (F= A-B). C es el acarreo de salida y V es una bandera de sobreflujo.

Objetos de datos SIGNAL: Los objetos de datos SIGNAL representan las seales lgicas,
o cables en un circuito. Hay tres lugares donde es posible declarar las seales en el cdigo
VHDL; en una declaracin de entity, en la seccin declarativa en una architecture y en la
seccin declarativa de un package. Una seal debe declararse con un tipo asociado como
sigue:
SIGNAL signal_name : type_name:
La variable type_name de SIGNAL determina los valores legales que la seal puede asumir
y sus usos licitos en el cdigo de VHDL. Pueden ser; BIT, BIT_VECTOR, STD_LOGIC,
STD_LOGIC_VECTOR..etc.

DESARROLLO:

Primeramente se armar un circuito restador, pero que tambin suma en funcin del valor
de un selector X. Lo anterior es debido a que como se menciona en el fundamento
terico, una resta se puede realizar como suma, simplemente complementando a 2 el
substraendo.
1) Creamos un nuevo proyecto en ISE Project Navigator, lo nombramos
SumaRestaVHDL, el mdulo principal ser de tipo HDL.

2) Ajustamos los Project settings para adecuarlo a los parmetros de nuestra


Basys2 para su implementacin.

3) A continuacin, agregamos una nueva fuente, ya sea con el botn a la izquierda


de la ventana Design o mediante el men que aparece tras hacer clic derecho
sobre el nombre de nuestro proyecto, el mdulo ser de tipo VHDL y por
nombre le pondremos SumaResta:

4) Nuestro sumador/restador tendr operandos de 4 bits, por lo que tendr dos


entradas (A y B) de 4 bits y una salida tambin de 4 bits (traducida a una seal

sum para el acarreo final) y un C4 de 1 bit. A continuacin se muestra la


pantalla correspondiente.

5) Continuemos ahora con el cdigo de nuestro mdulo SumaResta, tenemos que


cuando la entrada X tenga un valor de 1 a la salida enviaremos el resultado de la
resta de las entradas A y B, y cuando valga 1 enviaremos el resultado de la suma
A y B al puerto S. En los lenguajes de programacin de PC podemos ejecutar
una u otra porcin de cdigo dependiendo del resultado de la evaluacin de una
expresin empleando la sentencia if, en VHDL tambin existe dicha instruccin,
y es la que utilizamos en este ejercicio

As
tambin
tenemos
el
uso
del
objeto de
datos signal
dentro
de la seccin
declarativa de
la
architecture. Dicho objeto define a Sum como un std_logic de 5 bits en virtud que son los
bits que se requieren a la salida proveniente de dos operandos de 4 bits.
Como puede verse un 0 se concatena (0 & A) con una seal A de 4 bits para dar un
resultado de 5 bits (4 para S y 1 para C4).

Simulando:

Los resultados muestran como la lnea X controla la operacin a ejecutar, apareciendo en el


puerto resultado el resultado de la operacin seleccionada.

You might also like