Sumador de Dos de 2 y 3bits
Sumador de Dos de 2 y 3bits
Sumador de Dos de 2 y 3bits
Anticipado.
Alexis Calvopiña, Yautibug Daniel, Yungan Richar,
Universidad Nacional de Chimborazo
Facultada de Ingeniería en Electrónica y Telecomunicaciones.
yautibugdaniel@hotmail.com, richardth794@hotmail.com,
Abstract. - In the following report, the comparison between an añadir cualquier par de bits ha sido diseñado, que el circuito
adder with serial carry and an adder with anticipated carry is puede ser replicado N veces para crear un sumador de N bits.
presented. The main element are semi-summers and full adders for
this case we use binary sum of 8 bits, the addition or binary addition
is analogous to the decimal numbers, the difference is that in the A) El semi-sumador
binary numbers a carry is produced when the sum exceeds one while
decimal carries a carry when the sum exceeds nine. Un semi-sumador suma dos bits y genera una suma y una salida
The numbers or addends are added in parallel or in columns,
placing one number on top of the other. All numbers under the same de acarreo.
column have the same place value.
INTRODUCCIÓN
I. DEFINICIONES 𝑪𝒐𝒖𝒕 = 𝑨𝑩
Ecuacion (1)
1. SUMADORES
La salida correspondiente a la suma ( es 1 sólo si las
Los circuitos sumadores suman dos operandos de N bits variables A y B son distintas.
para producir un resultado de N bits y una señal de llevar a
cabo (la llevan a cabo es un '1' sólo cuando el resultado de la Por tanto, la suma puede expresarse como una operación OR-
suma requiere más de N bits). El circuito de adición básica es exclusiva de las variables de entrada
una de las piedras angulares de diseño de sistemas digitales, y
se ha utilizado en infinidad de aplicaciones desde los primeros
días de la ingeniería digital. =𝑨 ⊕𝑩
“ Recuerde que la operación OR-exclusiva se implementa con Fig. 5 Circuito lógico de un sumador completo
puertas AND, una puerta OR e inversores. “
El acarreo de salida es 1 cuando las dos entradas de la primera
puerta XOR están a 1 o cuando las dos entradas de la segunda
puerta XOR están a 1. El acarreo de salida del sumador
B) SUMADOR COMPLETO completo se obtiene por tanto del producto lógico (AND) de la
entradas A y B, y del producto lógico de A ⊕B y 𝑪𝒊𝒏 . Después
se aplica la operación OR a estos dos términos
Un sumador acepta dos bits de entrada y un acarreo de entrada,
y genera una salida de suma y un acarreo de salida
𝑪𝒐𝒖𝒕 = 𝑨𝑩 + (𝑨 ⊕ 𝑩)𝑪𝒊𝒏
Ecuacion (4)
C) SUMADORES BINARIOS
EN PARALELO
D) EXPANSIÓN DE
SUMADORES
La entrada de acarreo del sumador de menor orden (C0) se Los pares de bits resaltados y asociados lleva muestran que
conecta a tierra, ya que no existe acarreo en la posi- ción del un circuito sumador bit-slice debe procesar tres entradas (los
bit menos significativo, y la salida de acarreo del sumador de dos bits sumando y un acarreo a partir de la etapa anterior) y
menor orden se conecta a la entrada de acarreo del sumador de producir dos salidas (el bit de suma y un llevar a cabo bits).
orden superior
Un diagrama de bloques para el circuito de bit-slice se muestra La propagación de acarreo tiene lugar cuando el acarreo de
a la derecha, y se llama un sumador completo (FA). entrada se transmite como acarreo de salida. Un acarreo de
entrada puede ser propagado por el sumador completo cuando
Sumadores completos se pueden utilizar para ensamblar uno o ambos bits de entrada son igual a 1. El acarreo
circuitos que se pueden añadir cualquier número de bits. propagado, Cp, se expresa como la función OR de los bits de
entrada.
La siguiente figura muestra un circuito sumador 8 bits
𝑪𝒑 = 𝑨𝒄𝒂𝒓𝒓𝒆𝒐 𝑷𝒓𝒐𝒑𝒂𝒈𝒂𝒅𝒐
construido a partir de ocho circuitos de bits denominada
sumador completo individuales.
𝑪𝒑 = 𝑨 + 𝑩
Ecuacion (6)
F) TIPOS DE ACARREO
d) Sumador completo 4
𝑪𝒊𝒏𝟒 = 𝑪𝒐𝒖𝒕𝟑
entity CLOC_ADC is
Port (
cloc : in STD_LOGIC;
reset : in STD_LOGIC;
clock_ADC : out STD_LOGIC);
end CLOC_ADC;
end if;
end if;
end process;
end Behavioral;
library IEEE;
Fig.20 Simulación Acarreo Serie use IEEE.STD_LOGIC_1164.ALL;
entity Sumador_Completo is
Port ( a : in STD_LOGIC;
b : in STD_LOGIC;
ci : in STD_LOGIC;
co : out STD_LOGIC;
s : out STD_LOGIC);
end Sumador_Completo;
begin
process (a,b,ci)
begin
s<= (a xor b) xor ci;
co<= (a and b) or ((a xor b) and ci);
Fig.21 Simulación Acarreo Anticipado end process;
Port ( C0 : out STD_LOGIC;
end Behavioral; A0 : in STD_LOGIC_VECTOR(7 DOWNTO 0);
B0 : in STD_LOGIC_VECTOR(7 DOWNTO 0);
S0 : out STD_LOGIC_VECTOR(7 DOWNTO 0));
end component;
component Principal_Anticipado is
Port ( A : in STD_LOGIC_VECTOR(7 DOWNTO 0);
B : in STD_LOGIC_VECTOR(7 DOWNTO 0);
C. [3] Elaboración del código para el sumador de 8 bits CI : in STD_LOGIC;
CO : out STD_LOGIC;
S : out STD_LOGIC_VECTOR(7 DOWNTO 0));
-- Full adder 8b end component;
-------------------------------------------------------
------------------------- begin
library IEEE; CARR1:Acarreo_Seriee port map
use IEEE.STD_LOGIC_1164.ALL; (C0=>C1,A0=>A,B0=>B,S0=>S1);
CARR2:Principal_Anticipado port map
entity Sumador_8_Bits is (A=>A,B=>B,CI=>'0',CO=>C2,S=>S2);
Port ( A : in STD_LOGIC_VECTOR(7 DOWNTO 0);
B : in STD_LOGIC_VECTOR(7 DOWNTO 0); end Behavioral;
SE : in STD_LOGIC;
C1 : out STD_LOGIC;
C2 : out STD_LOGIC; E. [5] Elaboración del código de los tipos de Acarreo
S1 : out STD_LOGIC_VECTOR(6 DOWNTO 0);
S2 : out STD_LOGIC_VECTOR(6 DOWNTO 0); library IEEE;
S3 : out STD_LOGIC_VECTOR(6 DOWNTO 0); use IEEE.STD_LOGIC_1164.ALL;
cloc : in STD_LOGIC;
reset : in STD_LOGIC; entity Suma_Acarreo is
clock_ADC : out STD_LOGIC_VECTOR(1 downto Port ( co : out STD_LOGIC;
0) A : in STD_LOGIC_VECTOR(7 DOWNTO 0);
); B : in STD_LOGIC_VECTOR(7 DOWNTO 0);
S : out STD_LOGIC_VECTOR(7 DOWNTO 0));
end Sumador_8_Bits; end Suma_Acarreo;
architecture Behavioral of Sumador_8_Bits is architecture Behavioral of Suma_Acarreo is
---------------------------------------------------- signal sa,sb,sc,sd,se,sf,sg :STD_LOGIC;
component CLOC_ADC is
Port (
cloc : in STD_LOGIC; component Sumador_Completo is
reset : in STD_LOGIC; Port ( a : in STD_LOGIC;
clock_ADC : out STD_LOGIC); b : in STD_LOGIC;
end component CLOC_ADC; ci : in STD_LOGIC;
----------------------------------------------------- co : out STD_LOGIC;
component Acarreo_Serie_Anticipado is s : out STD_LOGIC);
Port ( A : in STD_LOGIC_VECTOR(7 DOWNTO 0); end component;
B : in STD_LOGIC_VECTOR(7 DOWNTO 0);
SE : in STD_LOGIC; begin
C1 : out STD_LOGIC; suma0:Sumador_Completo port
C2 : out STD_LOGIC; map(ci=>'0',a=>A(0),b=>B(0),s=>S(0),co=>sa);
S1 : out STD_LOGIC_VECTOR(6 DOWNTO 0); suma1:Sumador_Completo port
S2 : out STD_LOGIC_VECTOR(6 DOWNTO 0); map(ci=>sa,a=>A(1),b=>B(1),s=>S(1),co=>sb);
S3 : out STD_LOGIC_VECTOR(6 DOWNTO 0)); suma2:Sumador_Completo port
map(ci=>sb,a=>A(2),b=>B(2),s=>S(2),co=>sc);
end component; suma3:Sumador_Completo port
map(ci=>sc,a=>A(3),b=>B(3),s=>S(3),co=>sd);
begin suma4:Sumador_Completo port
Acarreo: Acarreo_Serie_Anticipado port map(ci=>sd,a=>A(4),b=>B(4),s=>S(4),co=>se);
map(A=>A,B=>B,SE=>SE,S1=>S1,S2=>S2,S3=>S3,C1=>C1,C2=>C2 suma5:Sumador_Completo port
); map(ci=>se,a=>A(5),b=>B(5),s=>S(5),co=>sf);
clck: CLOC_ADC port map suma6:Sumador_Completo port
(cloc=>cloc,reset=>reset,clock_ADC=>clock_ADC(0)); map(ci=>sf,a=>A(6),b=>B(6),s=>S(6),co=>sg);
clck_2: CLOC_ADC port map suma7:Sumador_Completo port
(cloc=>cloc,reset=>reset,clock_ADC=>clock_ADC(1)); map(ci=>sg,a=>A(7),b=>B(7),s=>S(7),co=>co);
end Behavioral;
end Behavioral;
D. [4] Elaboración del código de los tipos de Acarreo
library IEEE;
use IEEE.STD_LOGIC_1164.ALL; F. [5] Elaboración del código para el acarreo generado
entity Tipos_Acarreo is library IEEE;
Port ( A : in STD_LOGIC_VECTOR(7 DOWNTO 0); use IEEE.STD_LOGIC_1164.ALL;
B : in STD_LOGIC_VECTOR(7 DOWNTO 0);
C1 : out STD_LOGIC; entity Propa_Genera is
C2 : out STD_LOGIC; Port ( a : in STD_LOGIC;
S1 : out STD_LOGIC_VECTOR(7 DOWNTO 0); b : in STD_LOGIC;
S2 : out STD_LOGIC_VECTOR(7 DOWNTO 0)); c : in STD_LOGIC;
end Tipos_Acarreo; cg : out STD_LOGIC;
cp : out STD_LOGIC;
architecture Behavioral of Tipos_Acarreo is s : out STD_LOGIC);
end Propa_Genera;
component Acarreo_Seriee is
architecture Behavioral of Propa_Genera is H. [7] Elaboración del código Decodificador
component Propagacion_Generacion is
Port ( a : in STD_LOGIC;
b : in STD_LOGIC;
c : in STD_LOGIC;
cg : out STD_LOGIC; library IEEE;
cp : out STD_LOGIC; use IEEE.STD_LOGIC_1164.ALL;
s : out STD_LOGIC);
end component;
entity Decodificador is
begin Port ( EN1 : in STD_LOGIC_VECTOR(3 DOWNTO 0);
Suma: Propagacion_Generacion port map EN2 : in STD_LOGIC_VECTOR(3 DOWNTO 0);
(a=>a,b=>b,c=>c,cg=>cg,cp=>cp,s=>s); EN3 : in STD_LOGIC_VECTOR(3 DOWNTO 0);
SA1 : out STD_LOGIC_VECTOR(6 DOWNTO 0);
end Behavioral; SA2 : out STD_LOGIC_VECTOR(6 DOWNTO 0);
SA3 : out STD_LOGIC_VECTOR(6 DOWNTO 0));
end Decodificador;
G. [7] Elaboración del código de Acarreo Anticipado
architecture Behavioral of Decodificador is
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
component Deco_Hexa is
Port ( y0 : in STD_LOGIC;
y1 : in STD_LOGIC;
entity Acarreo_Anticipado is
y2 : in STD_LOGIC;
Port ( A : in std_logic_vector(7 downto 0);
y3 : in STD_LOGIC;
B : in std_logic_vector(7 downto 0);
S : out std_logic_vector(7 downto 0); a : out STD_LOGIC;
SSS1: out std_logic_vector(7 downto 0); b : out STD_LOGIC;
SSS2: out std_logic_vector(7 downto 0); c : out STD_LOGIC;
CC: in std_logic_vector(7 downto 0)); d : out STD_LOGIC;
e : out STD_LOGIC;
f : out STD_LOGIC;
end Acarreo_Anticipado; g : out STD_LOGIC);
architecture Behavioral of Acarreo_Anticipado is end component;
end Behavioral;
Fig.21 Comprobacion de la Tarjeta FPGA modelo Zybo Z7
Fig. 22 Conexión del primer ADC para el ingreso de datos ala tarjeta
Fig. 23 Conexión del segundo ADC para el ingreso de datos ala tarjeta
VII. RECOMENDACIONES
Fig. 28 Visualización de los acarreos en Serie y Anticipados
Es de notar también que, aunque no viene explícitamente en la
práctica, al hacer la tabla de verdad de un sumador binario
podemos ver la relación entre la suma como operación
aritmética binaria y el de la compuerta OR como operación
lógica, la cual une valores de señales. Para la suma binaria.
VIII. REFERENCIAS
VI. CONCLUSIONES
X. AUTORES