You are on page 1of 11

SEMANA 8

Complemento a 1
Complemento a 2
Multiplicacion binaria
Diseño de un multiplicador binario de
4 bits

Curso: Circuitos Lógicos Combinacionales Escuela de Ingeniería Mecatrónica


LOGRO

Al final de la sesión el alumno será capaz de construir el circuito


básico para un multiplicador de n-bits, asi como conocer el uso del
complemento a 1 y el complemento a 2

Curso: Circuitos Lógicos Combinacionales Escuela de Ingeniería Mecatrónica


Complemento a 1

• El complemento a uno de un número binario se define como el valor


obtenido al invertir todos los bits en la representación binaria del
número (intercambiando 0 por 1 y viceversa).
• El sistema de numeración binaria de complemento a uno se
caracteriza por el complemento bit de cualquier valor entero que es
el negativo aritmético del valor. Es decir, invertir todos los bits de un
número (el complemento lógico) produce el mismo resultado que
restar el valor de 0.

Curso: Circuitos Lógicos Combinacionales Escuela de Ingeniería Mecatrónica


Complemento a 2

• El complemento a 2 de un numero binario se obtiene tomando el


complemento a 1, y sumándole 1 al bit menos significativo. A
continuación se ilustra este proceso para el numero 1001 = 9

• Cuando se agrega el bit de signo 1 al MSB, el numero complemento a


2 con signo se convierte en 10111 y es el numero equivalente al - 9.

Curso: Circuitos Lógicos Combinacionales Escuela de Ingeniería Mecatrónica


Multiplicacion binaria

Curso: Circuitos Lógicos Combinacionales Escuela de Ingeniería Mecatrónica


Multiplicador de 4 bits

Curso: Circuitos Lógicos Combinacionales Escuela de Ingeniería Mecatrónica


Multiplicador de 4 bits

Curso: Circuitos Lógicos Combinacionales Escuela de Ingeniería Mecatrónica


Multiplicador de 4 bits
library IEEE;
use IEEE.STD_LOGIC_1164.ALL; library IEEE;
entity Adder1b is use IEEE.STD_LOGIC_1164.ALL;
port( A : in std_logic; use IEEE.STD_LOGIC_unsigned.ALL;
B : in std_logic;
entity multi4b is
Cin : in std_logic; port(
Cout : out std_logic; A : in std_logic_vector(3 downto 0);
S : out std_logic); B : in std_logic_vector(3 downto 0);
end Adder1b; Cin : in std_logic;
architecture Behavioral of Adder1b is
Cout : out std_logic;
R : out std_logic_vector(7 downto 0)
begin
);
Cout <= (B and Cin) or (A and Cin) or (A and B); end multi4b;
S <= A xor (B xor Cin);
end Behavioral;
Curso: Circuitos Lógicos Combinacionales Escuela de Ingeniería Mecatrónica
Multiplicador de 4 bits
architecture Behavioral of Adder4bLogic is begin
U0: Adder1b PORT MAP(
R(0) <= A(0)and B(0);
A => C(1),
COMPONENT Adder1b B => C(0),
PORT( C(0) <= A(1)and B(0);
Cin => '0',
A : IN std_logic; C(1) <= A(0)and B(1);
Cout => Carry(0),
B : IN std_logic; C(2) <= A(2)and B(0);
S => R(1)
Cin : IN std_logic; C(3) <= A(1)and B(1);
);
Cout : OUT std_logic; C(4) <= A(3)and B(0);
S : OUT std_logic C(5) <= A(2)and B(1);
U1: Adder1b PORT MAP(
); C(6) <= A(3)and B(1);
A => C(3),
END COMPONENT; C(7) <= A(0)and B(2);
B => C(2),
C(8) <= A(1)and B(2);
Cin => Carry(0),
signal C : STD_LOGIC_VECTOR (14 downto 0); C(9) <= A(2)and B(2);
Cout => Carry(1),
signal Carry : STD_LOGIC_VECTOR (10 downto 0); C(10) <= A(3)and B(2);
S => E(0)
signal E : STD_LOGIC_VECTOR (5 downto 0); C(11) <= A(0)and B(3);
);
C(12) <= A(1)and B(3);
C(13) <= A(2)and B(3);
C(14) <= A(3)and B(3);
Curso: Circuitos Lógicos Combinacionales Escuela de Ingeniería Mecatrónica
Multiplicador de 4 bits
U2: Adder1b PORT MAP( U5: Adder1b PORT MAP( U8: Adder1b PORT MAP(
A => C(5), A => C(8), A => C(11),
B => C(4), B => E(1), B => E(3),
Cin => Carry(1), Cin => Carry(4), Cin => '0', U11: Adder1b PORT MAP(
Cout => Carry(2), Cout => Carry(5), Cout => Carry(8), A => C(14),
S => E(1) ); S => E(3) ); S => R(3) ); B => Carry(7),
Cin => Carry(10),
U3: Adder1b PORT MAP( U6: Adder1b PORT MAP( U9: Adder1b PORT MAP(
A => C(6), A => C(9),
Cout => R(7),
A => C(12),
B => '0', B => E(2), B => E(4), S => R(6) );
Cin => Carry(2), Cin => Carry(5), Cin => Carry(8),
Cout => Carry(3), Cout => Carry(6), Cout => Carry(9), end Behavioral;
S => E(2)); S => E(4) ); S => R(4) );

U4: Adder1b PORT MAP( U7: Adder1b PORT MAP( U10: Adder1b PORT MAP(
A => C(7), A => C(10), A => C(13),
B => E(0), B => Carry(3), B => E(5),
Cin => '0', Cin => Carry(6), Cin => Carry(9),
Cout => Carry(4), Cout => Carry(7), Cout => Carry(10),
S => R(2) ); S => E(5) ); S => R(5) );

Curso: Circuitos Lógicos Combinacionales Escuela de Ingeniería Mecatrónica


Multiplicador de 4 bits
library IEEE;
use IEEE.STD_LOGIC_1164.all;
use IEEE.NUMERIC_STD.all;

ENTITY sum IS
PORT (a : IN std_logic_vector(3 DOWNTO 0);
b : IN std_logic_vector(3 DOWNTO 0);
salida : OUT std_logic_vector(4 DOWNTO 0));
END sum;

ARCHITECTURE synth OF sum IS


BEGIN

PROCESS (a, b) IS
BEGIN
salida <= std_logic_vector(UNSIGNED(a) + UNSIGNED(b));
END PROCESS;
END synth;

Curso: Circuitos Lógicos Combinacionales Escuela de Ingeniería Mecatrónica

You might also like