Página |1
Informe De Laboratorio Sumador y Restador
Edinson Oquendo, José Saldarriaga
Diseño de sistema digitales – Ingeniería Electrónica
Universidad del Magdalena
2023
Por último, se presentan, evalúan y comparan los resultados
Resumen: Este informe describe varios códigos en VHDL obtenidos al implementar el circuito en una FPGA con
para realizar operaciones aritméticas como la suma y resta de resultados teóricos y simulados.
números binarios. Primero, se desarrollaron sumadores de 1
bit sin y con puertas XOR. Luego usó sumadores de 1 bit en II. MARCO TEÓRICO
cascada para desarrollar un sumador de 4 bits, con y sin XOR, La compuerta NOT realiza una operación llamada inversión
y finalmente implementó un código para realizar el ya que cambia 1 por un 0, y un 0 por 1, es decir, Cuando la
complemento de A2 en números de 4 bits, con el objetivo de entrada está a nivel BAJO, la salida está a nivel ALTO. [1]
usar el complemento de A2 y un sumador de 4 bits Crear el
final del restador. En la figura 1 se ilustra con su símbolo lógico la compuerta
NOT.
Palabras clave: sumador, restador, bits, compuertas.
Abstract- This report describes various codes in VHDL to
perform arithmetic operations, such as addition and
subtraction of binary numbers. First, a 1-bit adder is developed Figura 1. Símbolo lógico de la puerta NOT.
without the use of XOR gates and with the use of them. Then
use is made of the 1-bit adders in cascade in order to develop a La tabla 1 muestra de una manera más detallada el
4-bit adder, both with XOR and without XOR and finally a funcionamiento lógico de la compuerta NOT.
code is implemented to perform the A2 complement to a 4-bit
number, this with the objective end of creating a subtractor Entrada Salida
using the A2 complement code and the 4-bit adder. BAJO (0) ALTO (1)
Keywords: adder, subtractor, complement A2, code.
ALTO (1) BAJO (0)
I. INTRODUCCIÓN
Tabla 1. Tabla de la verdad de la puerta NOT.
En el presente trabajo se utilizó el software ISE versión 14.7 Las puertas AND realiza la operación de la multiplicación. La
para realizar todos los análisis y aplicaciones de circuitos operación lógica AND significa x=1 si y solo si A=1 y B=1;
FPGA. El foco está en la operación de un sumador de un bit o de lo contrario z=0. En la figura 2 se ilustra con su símbolo
un sumador completo, y la operación en el software se lógico la compuerta AND.
compara con la que se muestra en la Tabla [1], y así mismo,
muestra cómo los sumadores de un bit se pueden conectar en
cascada [2 ] para crear un sumador de cuatro bits.
Además, observe cómo, cuándo se conoce la operación del Figura 2. Símbolo lógico de la puerta AND.
complemento a dos A2, se aplica al acarreo de salida para
poder representar números negativos [1], de esta manera Para comprender de manera más acertada en la tabla 2 se ve el
utilizando el conocimiento de un sumador de 4 bits y el funcionamiento lógico de la compuerta AND.
complemento de A2 a cuatro -bit restador.
Entrada Salida
El análisis se realizó utilizando el software ISE versión 14.7, A B X
donde se modelaron los componentes y se definieron las
0 0 0
entradas y salidas. Los resultados de la simulación se analizan
y verifican comparando los resultados obtenidos con los 0 1 0
resultados teóricos esperados [1] [2]. 1 0 0
1 1 1
Luego, el circuito se implementa en una FPGA. Para ello se Tabla 2. Tabla de la verdad de la puerta AND.
realizó la síntesis y mapeo del diseño en el software de
programación FPGA.
Página |2
Las puertas OR pueden tener dos o más entradas y pueden A B C
realizar una operación llamada suma lógica. La puerta OR 0 0 1
produce un nivel alto en la salida cuando cualquiera de las
entradas es alta. La salida baja solo cuando todas las entradas 0 1 0
son bajas. Sus símbolos lógicos se muestran en la Figura 3, y 1 0 0
la tabla de verdad se muestra en la Tabla 3. 1 1 0
Tabla 4. Tabla de la verdad de la puerta XNOR.
Figura 3. Símbolo lógico de la puerta OR.
Entrada Salida
A B X Figura 4. Símbolo lógico estándar de la puerta XNOR.
0 0 0
El complemento a2 es importante ya que permite la
0 1 1 representación de números negativos, dicho complemento se
1 0 1 obtiene sumando 1 al bit menos significativo del complemento
1 1 1 a 1 como se muestra en la ecuación 1.
Tabla 3. Tabla de la verdad de la puerta OR.
Complemento A2 = Complemento A1 + 1
En una puerta XOR, la salida X es alta cuando la entrada A es Ecuación 1. Complemento A2.
baja y la entrada B es alta; o si la entrada A es alta y la entrada
B es baja; si tanto A como B son altos o bajos, entonces X es En figura 6se muestra cómo puede convertirse un número de 8
bajo. En la Tabla 5 queda evidenciado el funcionamiento de la bits en su complemento A2, invirtiendo en primer lugar cada
compuerta XOR y en la figura 5 su símbolo lógico. bit (obteniendo el complemento A1) y sumando después 1 al
complemento con el sumador.
Ilustración 5. Símbolo lógico estándar de la puerta XOR.
Entrada Salida
A B X
0 0 0
0 1 1
Figura 6. Ejemplo de obtención de complemento a2.
1 0 1
1 1 0 El semisumador [1] el funcionamiento de este admite dos
Tabla 5. Tabla de la verdad de la puerta XOR. dígitos binarios en sus entradas y genera dos dígitos binarios
en sus salidas: un bit de suma y un bit de acarreo. En la figura
La puerta XNOR es el complemento lógico de la puerta XOR. 7 se muestra su símbolo lógico.
La expresión asociada con la función realizada por la puerta
XNOR se escribe como Q=AB.
El valor de salida de una puerta XNOR es 1 si los valores de
entrada son iguales y 0 si los valores de entrada son diferentes,
ver tabla 4. La figura 4 muestra un diagrama esquemático de
una puerta XNOR.
Figura 7. Símbolo lógico de un semisumador.
Se observa que la salida de acarreo c out se puede representar
como una operación AND de las variables de entrada. La
ecuación 2 nos muestra matemáticamente como se ve el
acarreo de salida.
Entrada Salida
Página |3
C out = AB
Ecuación 2. Ecuación de salida del acarreo.
El sumador binario es un circuito digital que produce la suma
aritmética de dos números binarios. Se pueden formar
La operación booleana simplificada para la salida
sumadores de 4 bits disponiendo 4 sumadores completos
correspondiente a la suma Σ es 1 sólo si las variables A y B
conectados en cascada, conectando el acarreo de salida de uno
son distintas. En la ecuación 3 se observa cómo es
matemáticamente la salida correspondiente a la suma. [1] con el acarreo de entrada del siguiente. La figura 9 nos
muestra el diagrama de bloque de 4 sumadores completos en
Σ= A ⊕ B cascada.
Ecuación 3. Ecuación de salida del acarreo.
Para comprender el funcionamiento lógico de un
semisumador, se puede notar en la tabla 6.
A B C out ∑
0 0 0 0 Figura 9. Diagrama de bloque de la interconexión de 4
0 1 0 1 circuitos sumadores completos.
1 0 0 1 El simbolo lógico correspondiente se muestra en la figura 10.
1 1 1 0
Tabla 6. Tabla de verdad de un semisumador.
El sumador completo a diferencia del semisumador, acepta un
acarreo de entrada, el símbolo lógico se muestra en la figura 8.
Figura 8. Símbolo lógico de un sumador completo.
Figura 10. Simbolo lógico de un sumador de 4 bits.
Este sumador posee dos bits de entrada y un acarreo de
entrada, la ecuación de salida del sumador completo está La Tabla 8 es la tabla de verdad de un sumador de 4 bits. El
expresada en la ecuación 4. subíndice n representa los bits del sumador y puede ser igual a
1, 2, 3 o 4 para un sumador de 4 bits. Cn-1 es el acarreo del
Σ=(A ⊕B)⊕C¿ Ecuación 4. Ecuación de salida del sumador previo. Los acarreos C1, C2 y C3 se generan
acarreo. internamente. C0 es un acarreo de entrada externo y C4 es una
salida.
La tabla de verdad que se muestra en la tabla 7 describe el
funcionamiento del sumador completo. C n−1 An Bn ∑n Cn
0 0 0 0 0
A B C¿ C out ∑
0 0 1 1 0
0 0 0 0 0 0 1 0 1 0
0 0 1 0 1 0 1 1 0 1
0 1 0 0 1 1 0 0 1 0
0 1 1 1 0 1 0 1 0 1
1 0 0 0 1 1 1 0 0 1
1 0 1 1 0 1 1 1 1 1
Tabla 8. Tabla de verdad de un sumador de 4 bits.
1 1 0 1 0
1 1 1 1 1
Tabla 7. Tabla de verdad de un sumador completo.
Página |4
El restador binario, la mejor manera de representarlo es con
begin
complemento a2 el cual para restar dos números (A-B)
consiste en un sumador con inversores colocados entre cada co <= ((NOT xi) AND yi AND ci) OR (xi AND (NOT yi)
entrada de datos B y la entrada correspondiente del sumador AND ci) OR (xi AND yi);
completo. El acarreo de entrada C0 debe ser igual a 1 al restar.
zo <= ((NOT xi) AND (NOT yi) AND ci) OR((NOT xi) AND
La operación se convierte entonces en A más el complemento yi AND (NOT ci)) OR (xi AND (NOT yi)AND (NOT
a uno de B más 1 en la figura 11 se muestra el sumador- ci))OR(xi AND yi AND ci);
restador de cuatro bits.
end Behavioral;
Se declara la entidad como “sumador_1bit” y se le asigna xi,
yi como los dos números de entrada, se asigna ci como acarreo
de entrada y co como acarreo de salida y zo como el resultado
de la suma. En la Figura 12 se observa el esquematico del
componente.
Figura 11. Circuito de un restador de cuatro bits.
Un arreglo de compuertas programable en el campo (FPGA,
field programmable gate array) es un circuito VLSI que se
programa en las instalaciones del cliente. Un FPGA típico
consiste en un arreglo de cientos o miles de bloques lógicos,
rodeado por bloques programables de entrada/salida y
conectado mediante interconexiones programables.
III. ANÁLISIS Y RESULTADOS
Sumador 1 bit Figura 12. Diagrama sumador de 1 bit sin XOR.
Se procede a implementar un sumador de 1 bit sin compuerta En la Figura 13 se realiza el test de comportamiento del
XOR realizando el codigo y la simulacion en el programa ISE sumador de 1 bit sin XOR por medio de un código tipo test
Desing 14.7. bench (anexo 1). Se evidencia que se cumple la tabla de
verdad del sumador de 1 bit mostrada anteriormente (Tabla 7).
Se obtiene la ecuacion del acarreo de salida:
c o =( x i∗y i∗ci ) + ( xi∗y i∗c i ) + ( x i∗ y i )
Ecuacion de salida del sumador de 1 bit:
z o=( x i∗y i∗c i ) + ( x i∗ y i∗c i ) + ( x i∗y i∗c i ) +(x i∗ y i∗c i) Figura 13. Test de comportamiento del sumador de 1 bit.
Se implementa el sumador de 1 bit, pero esta vez con el uso de
Una vez obtenidas las ecuaciones se implementa el siguiente compuertas XOR. Obteniendo las siguientes ecuaciones:
codigo:
Ecuación del acarreo de salida:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
c o =c i∗( x i ⊕ yi ) + x i∗y i
entity sumador_1bit is
Port ( xi : in STD_LOGIC; Ecuacion de la salida del sumador:
yi : in STD_LOGIC;
ci : in STD_LOGIC;
co : out STD_LOGIC; z o=ci ⊕ ( x i ⊕ y i )
zo : out STD_LOGIC);
end sumador_1bit;
Ya obtenidas las ecuaciones se implementa por medio del
architecture Behavioral of sumador_1bit is siguiente codigo:
Página |5
library IEEE;
library IEEE; use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_1164.ALL;
entity sumador_4bits_sinxor is
entity sumador_1bit_xor is Port ( A : in STD_LOGIC_VECTOR (3 downto 0);
Port ( xi : in STD_LOGIC; B : in STD_LOGIC_VECTOR (3 downto 0);
yi : in STD_LOGIC; CI : in STD_LOGIC;
ci : in STD_LOGIC; CO : out STD_LOGIC;
co : out STD_LOGIC; Z : out STD_LOGIC_VECTOR (3 downto 0));
zo : out STD_LOGIC); end sumador_4bits_sinxor;
end sumador_1bit_xor;
architecture Behavioral of sumador_4bits_sinxor is
architecture Behavioral of sumador_1bit_xor is signal C1,C2,C3 : STD_LOGIC :='0';
begin component sumador_1bit is
Port ( xi : in STD_LOGIC;
co <= ((ci AND(xi XOR yi)))or(xi AND yi); yi : in STD_LOGIC;
ci : in STD_LOGIC;
zo <= ci XOR (xi XOR yi); co : out STD_LOGIC;
zo : out STD_LOGIC);
end Behavioral; end component;
begin
Se declara la entidad como “sumador_1bit_xor” y se le asigna
xi, yi como los dos números de entrada, se asigna ci como U0: sumador_1bit port map (A(0),B(0),CI,C1,Z(0));
acarreo de entrada y co como acarreo de salida y zo como el U1: sumador_1bit port map (A(1),B(1),C1,C2,Z(1));
U2: sumador_1bit port map (A(2),B(2),C2,C3,Z(2));
resultado de la suma. En la Figura 14 se observa el U4: sumador_1bit port map (A(3),B(3),C3,CO,Z(3));
esquematico del componente.
end Behavioral;
para este caso se implementa el código con una arquitectura
estructural, se declara la entidad como sumador_4bits_sinxor
y se asignan A y B como entradas tipo vector de 4bits, CI
como acarreo de entra y CO como acarreo de salida, y Z como
el resultado de la suma que será un vector de 4 bits.
Se asignan además 3 señales internas las cuales serán los
acarreos de salida y de entrada de cada sumador del
componente, como se observa en el código, se hace uso
nuevamente del código del sumador de 1 sin XOR.
Figura 14. Diagrama sumador de 1 bit con XOR.
Y finalmente se crean las instancias de cada sumador de 1 bit,
En la Figura 15 se realiza el test de comportamiento del
conectando el acarreo de salida del primer sumador en el
sumador de 1 bit con XOR por medio de un código tipo test
acarreo de entrada del segundo sumador y así para el resto de
bench (anexo 2).
sumadores, completando así el sumador de 4 bits, en la Figura
16 se observa el esquemático.
Figura 15. Test de comportamiento sumador 1 bit.
Al igual que el sumador anterior se evidencia en la Figura 2.2
que se cumple la Tabla 7, dando como resultado el mismo
comportamiento con menos cantidad de componentes.
Sumador 4 bits.
Se implementa el sumador de 4 bits, haciendo uso de 4
sumadores de 1 bit conectados en cascada como se observa en
la ilustracion 9. Se hara uso de sumadores de 1 bit sin
compuertas XOR.
Figura 16. Diagrama sumador 4 bits sin XOR.
El codigo quedara de la siguiente manera:
Página |6
La Figura 16 es similar a la Figura 12 y esto se debe a que 18 se observa el esquemático del sumador de 4 bits con
estamos usando 4 sumadores de 1 bit, en el diagrama se compuertas XOR.
observa que en las dos entras del sumador y en la salida se
resalta más las líneas, esto indicando que son datos de 4 bits.
En la Figura 17 se observa el test del comportamiento (anexo
3) en el que se suma el número 2(“0010”) mas 1(“0001”)
dando como resultado el 3(“0011”) y como segundo test se
suma el número 5(“0101”) mas 6(“0110”) dando como
resultado 11(“1011”).
Figura 18. Diagrama sumador de 4 bits con XOR.
Figura 17. Test de comportamiento sumador de 4 bits.
En la Figura 19 se observa el test del comportamiento (anexo
Se implementa el sumador de 4 bits al igual que el anterior, 4) al igual que en el anterior sumador se suma el número
con la diferencia que esta vez se hace uso de 4 sumadores de 1 2(“0010”) mas 1(“0001”) dando como resultado el 3(“0011”)
bit con XOR. y como segundo test se suma el número 5(“0101”) mas
6(“0110”) dando como resultado 11(“1011”). Por lo tanto, se
El código quedara de la siguiente manera: puede hacer uso de sumadores de 1 bit con XOR y sin XOR,
para crear sumadores de 4 bits.
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity SUMADOR_4Bits211 is
Port ( A: in STD_LOGIC_VECTOR (3 downto 0);
B: in STD_LOGIC_VECTOR (3 downto 0);
CI: in STD_LOGIC;
CO: out STD_LOGIC;
Z: out STD_LOGIC_VECTOR (3 downto 0)); Figura 19. Test de comportamiento sumador de 4 bits.
end SUMADOR_4Bits211;
Complemento A2
architecture Behavioral of SUMADOR_4Bits211 is
signal C1,C2,C3 : STD_LOGIC :='0';
Se implementará un código para calcular el complemento A2
component Sumador is de un número de 4 bits, esto será útil para realizar un restador
port ( A: in STD_LOGIC;
B: in STD_LOGIC;
de 4 bits. El complemento A2 de un número consiste en negar
CI: in STD_LOGIC; por completo el número y luego sumarle 1, como se observa
CO: out STD_LOGIC; en la figura 6.
Z: out STD_LOGIC);
end component;
Por lo tanto, el código quedara de la siguiente manera:
begin
library IEEE;
U0: sumador port map (A(0),B(0),CI,C1,Z(0)); use IEEE.STD_LOGIC_1164.ALL;
U1: sumador port map (A(1),B(1),C1,C2,Z(1));
U2: sumador port map (A(2),B(2),C2,C3,Z(2)); entity complemento_a2 is
U4: sumador port map (A(3),B(3),C3,CO,Z(3)); Port ( X : in STD_LOGIC_VECTOR (3 downto 0);
Z : out STD_LOGIC_VECTOR (3 downto 0);
end Behavioral; Z0: out STD_LOGIC_VECTOR (3 downto 0));
end complemento_a2;
Al igual que el anterior sumador se implementa el código con architecture Behavioral of complemento_a2 is
una arquitectura estructural, se declara la entidad como signal C1, C2 : STD_LOGIC := '0';
sumador_4bits211 y se asignan A y B como entradas tipo signal AN : STD_LOGIC_VECTOR (3 downto 0) := (others
=> '0');
vector de 4bits, CI como acarreo de entra y CO como acarreo constant Y : STD_LOGIC_VECTOR (3 downto 0) :="0001";
de salida, y Z como el resultado de la suma que será un vector
de 4 bits. component SUMADOR_4Bits211 is
Port ( A : in STD_LOGIC_VECTOR (3 downto 0);
B : in STD_LOGIC_VECTOR (3 downto 0);
El código será el mismo que en el sumador de 4 bits sin XOR, CI : in STD_LOGIC;
la diferencia se encuentra en el componente, que para este CO : out STD_LOGIC;
caso se hace uso del sumador de 1 bit con XOR. En la Figura Z : out STD_LOGIC_VECTOR (3 downto 0));
end component;
Página |7
begin
Z0 <= X; El código quedara de la siguiente forma:
AN(0) <= NOT X(0);
AN(1) <= NOT X(1); library IEEE;
AN(2) <= NOT X(2); use IEEE.STD_LOGIC_1164.ALL;
AN(3) <= NOT X(3);
entity Restador is
U0: SUMADOR_4Bits211 port map (AN,Y,C1,C2,Z); Port ( A : in STD_LOGIC_VECTOR (3 downto 0);
B : in STD_LOGIC_VECTOR (3 downto 0);
end Behavioral; CI : in STD_LOGIC;
CO : out STD_LOGIC;
Z : out STD_LOGIC_VECTOR (3 downto 0));
se declara la entidad como “complemento_a2” y se asigna X end Restador;
como entrada de 4 bits, pues este será el número al que se le
quiere aplicar el complemento A2 y se asigna Z como salida architecture Behavioral of Restador is
signal AC2 : STD_LOGIC_VECTOR (3 downto 0) :=
de 4 bits siendo este el número en complemento A2, y Z0 (others => '0');
como el número original para realizar la comparación en la
FPGA. component complemento_a2 is
Port ( X : in STD_LOGIC_VECTOR (3 downto 0);
Z : out STD_LOGIC_VECTOR (3 downto 0));
Se asignan las señales internas como C1 y C2 como los end component;
acarreos de entrada y AN como la señal del vector de 4 bits
negado y se agrega una constante que en este caso es el component SUMADOR_4Bits211 is
Port ( A : in STD_LOGIC_VECTOR (3 downto 0);
número 1 en 4 bits, el complemento A2 consiste en sumar el B : in STD_LOGIC_VECTOR (3 downto 0);
número negado más 1. En la Figura 20 se evidencia el CI : in STD_LOGIC;
esquemático del Complemento A2. CO : out STD_LOGIC;
Z : out STD_LOGIC_VECTOR (3 downto 0));
end component;
begin
U0: complemento_a2 port map (A,AC2);
U1: SUMADOR_4Bits211 port map (AC2,B,CI,CO,Z);
end Behavioral;
se declara la entidad como “Restador” y se implementa en
arquitectura estructural; se asignan A y B como entradas de 4
bits, siendo estos los números a ser restados; CI como acarreo
Figura 20. Diagrama del complemento A2. de entrada y CO como acarreo de salida y Z como salida
siendo este el resultado de la resta. Se hará uso de dos
Como se observa en la Figura 20. Entra el número, es negado componentes: un complemento A2 y un sumador de 4 bits.
por la NOT y luego es sumado por uno, cumpliendo así su
funcionamiento. En la Figura 21 se evidencia el test del Se asigna como señal interna a AC2 como vector de 4 bits,
comportamiento del complemento A2 (Anexo 4), en este caso que será la salida del complemento A2 al sumador. En la
se le aplica al número 2(“0010”) dando como salida “1110” y Figura 22 se observa el esquemático del restador completo.
también al número 3(“0011”) dando como salida “1101”.
Figura 21. Test de comportamiento del complemento A2.
Restador
Como es sabido al sumar un número positivo con uno
negativo el resultado terminara siendo la resta de ambos
números, esto es lo que se aplicara al restador de 4 bits que Figura 22. Diagrama de un Restador.
será implementado, al aplicarle el complemento A2 a un
número lo que estamos haciendo es representar el número en Como se observa en la Figura 22 al primer número se le aplica
forma negativa, por lo tanto, para realizar el restador se el complemento A2 y luego se suma con el segundo número,
sumara un número con otro número en complemento A2.
Página |8
dando como resultado la resta de ambos. En la Figura 23 se [3] Sánchez-Élez, M. (s.f.). Introducción a la programación en
evidencia el test de comportamiento del restador (Anexo 5). VHDL. Facultad de Informática, Universidad Complutense de
Madrid.
[4] Diego Andrés Restrepo Leal. (n.d.). Diseño DE Sistemas
Digitales. Retrieved April 26, 2023, from
[Link]
-blob/main/Diapositivas/diap_sistemas_digitales_clase_06.pdf
Figura 23. Test de comportamiento de restador de 4 bits.
Para este test se resta el número 4(“0100”) con el número
1(“0001”) dando como resultado el número 3(“0011”) y como
segunda prueba se resta el número 8(“1000”) con el 3(“0011”) VI. ANEXOS
dando como resultado el 5(“0101”). Evidenciando un Anexo 1:
funcionamiento exitoso.
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
IV. CONCLUSIONES ENTITY test_sumador_1bit IS
END test_sumador_1bit;
El software ISE 14.7 es una herramienta de ARCHITECTURE behavior OF test_sumador_1bit IS
diseño de circuitos digitales que permite a los COMPONENT sumador_1bit
ingenieros crear circuitos integrados PORT(
personalizados para una variedad de xi : IN std_logic;
yi : IN std_logic;
aplicaciones. Uno de los componentes más ci : IN std_logic;
comunes en los circuitos digitales es el co : OUT std_logic;
sumador/restador. zo : OUT std_logic
);
En general, un sumador/restador es un circuito END COMPONENT;
que puede sumar o restar dos números binarios.
El sumador/restador se compone de dos bloques --Inputs
signal xi : std_logic := '0';
principales: un sumador binario y un bloque de signal yi : std_logic := '0';
restador. El sumador binario suma dos bits de signal ci : std_logic := '0';
entrada y produce una salida de suma y un --Outputs
acarreo de salida. El bloque de restador resta dos signal co : std_logic;
bits de entrada y produce una salida de signal zo : std_logic;
diferencia y un acarreo de salida. BEGIN
En el software ISE 14.7, se puede diseñar un
uut: sumador_1bit PORT MAP (
sumador/restador mediante la implementación xi => xi,
de estos bloques. El diseño se puede verificar yi => yi,
ci => ci,
mediante la simulación del circuito y la co => co,
visualización de la salida en función de las zo => zo
entradas. );
En resumen, el diseño de un sumador/restador stim_proc: process
en el software ISE 14.7 implica la
implementación de un sumador binario y un begin
wait for 100 ns;
bloque de restador. El diseño se puede verificar xi <= '0';
mediante la simulación del circuito y la yi <= '0';
ci <= '1';
visualización de la salida en función de las
entradas. wait for 100 ns;
xi <= '0';
yi <= '1';
ci <= '0';
V. REFERENCIAS wait for 100 ns;
xi <= '0';
yi <= '1';
[1] T. L. Floyd, 9na. Ed. Madrid: Pearson education S.A, ci <= '1';
2006. wait for 100 ns;
[2] M.M Mano, 3a, Ed. México: Pearson education S.A, 2003. xi <= '1';
Página |9
yi <= '0'; CI<= '0';
ci <= '0';
wait;
wait for 100 ns; end process;
xi <= '1';
yi <= '0'; END;
ci <= '1';
Anexo 4:
wait for 100 ns;
xi <= '1'; LIBRARY ieee;
yi <= '1'; USE ieee.std_logic_1164.ALL;
ci <= '0';
ENTITY test_complemento_a2 IS
wait for 100 ns; END test_complemento_a2;
xi <= '1';
yi <= '1'; ARCHITECTURE behavior OF test_complemento_a2 IS
ci <= '1';
COMPONENT complemento_a2
wait; PORT(
end process; X : IN std_logic_vector(3 downto 0);
Z : OUT std_logic_vector(3 downto 0);
END; Z0 : OUT std_logic_vector(3 downto 0)
);
Anexo 3: END COMPONENT;
LIBRARY ieee; --Inputs
USE ieee.std_logic_1164.ALL; signal X : std_logic_vector(3 downto 0) :=
(others => '0');
ENTITY test_sumador_4bits_sinxor IS
END test_sumador_4bits_sinxor; --Outputs
signal Z : std_logic_vector(3 downto 0);
ARCHITECTURE behavior OF test_sumador_4bits_sinxor signal Z0 : std_logic_vector(3 downto 0);
IS
BEGIN
COMPONENT sumador_4bits_sinxor
PORT( uut: complemento_a2 PORT MAP (
A : IN std_logic_vector(3 downto 0); X => X,
B : IN std_logic_vector(3 downto 0); Z => Z,
CI : IN std_logic; Z0 => Z0
CO : OUT std_logic; );
Z : OUT std_logic_vector(3 downto 0)
); stim_proc: process
END COMPONENT; begin
wait for 100 ns;
--Inputs X <= "0010";
signal A : std_logic_vector(3 downto 0) :=
(others => '0'); wait for 100 ns;
signal B : std_logic_vector(3 downto 0) := X <= "0011";
(others => '0');
signal CI : std_logic := '0'; wait;
end process;
--Outputs
signal CO : std_logic; END;
signal Z : std_logic_vector(3 downto 0);
Anexo 5:
BEGIN
LIBRARY ieee;
uut: sumador_4bits_sinxor PORT MAP ( USE ieee.std_logic_1164.ALL;
A => A,
B => B, ENTITY TEST_Restador IS
CI => CI, END TEST_Restador;
CO => CO,
Z => Z ARCHITECTURE behavior OF TEST_Restador IS
);
COMPONENT Restador
stim_proc: process PORT(
begin A : IN std_logic_vector(3 downto 0);
wait for 100 ns; B : IN std_logic_vector(3 downto 0);
A <= "0010"; CI : IN std_logic;
B <= "0001"; CO : OUT std_logic;
CI<= '0'; Z : OUT std_logic_vector(3 downto 0)
);
wait for 100 ns; END COMPONENT;
A <= "0101";
B <= "0110"; --Inputs
P á g i n a | 10
signal A : std_logic_vector(3 downto 0) :=
(others => '0');
signal B : std_logic_vector(3 downto 0) :=
(others => '0');
signal CI : std_logic := '0';
--Outputs
signal CO : std_logic;
signal Z : std_logic_vector(3 downto 0);
BEGIN
uut: Restador PORT MAP (
A => A,
B => B,
CI => CI,
CO => CO,
Z => Z
);
stim_proc: process
begin
wait for 100 ns;
A <= "0011";
B <= "0101";
CI<= '0';
wait for 100 ns;
A <= "0111";
B <= "1010";
CI<= '0';
wait;
end process;
END;