Sei sulla pagina 1di 9

Reporte

Multiplicacin Binaria

INSTITUTO TECNOLOGICO DE ORIZABA
Maestra en Ingeniera en Electrnica
05 febrero 2014
Electrnica Digital Avanzada
Presenta:
Vctor Manuel Lpez Rodrguez

Multiplicacin Binaria
En un ordenador, la operacin de multiplicar se realiza mediante sumas
repetidas. Eso crea algunos problemas en la programacin porque cada suma
de dos UNOS origina un arrastre, que se resuelven contando el nmero de
UNOS y de arrastres en cada columna. Si el nmero de UNOS es par, la suma
es un CERO y si es impar, un UNO. Luego, para determinar los arrastres a la
posicin superior, se cuentan las parejas de UNOS.
Estructura de la Multiplicacin:










MULTIPLICACION BASADA EN ITERACIONES

1. Se realiza el producto del multiplicando por el bit 0 del multiplicador,
con lo cual obtendremos productos parciales que pueden valer lo mismo
que el multiplicando desplazado (cuando el bit del multiplicador sea 1) o
bien 0 (cuando dicho bit sea nulo).
2. Se desplazar el multiplicando un lugar hacia la izquierda para alinear
correctamente los productos parciales, que estarn convenientemente
rellenados con ceros a la izquierda y/o a la derecha (para ello,
doblaremos el tamao del multiplicando, e inicialmente lo rellenaremos
con ceros a la izquierda).
3. Se desplaza o se rota el multiplicador un lugar hacia la derecha (por
esto siempre se multiplica por el bit 0 del multiplicador).
4. Se sumar el producto parcial con la suma acumulada de los
productos parciales obtenidos en los pasos anteriores (al principio el
producto acumulado ser 0).












ALGORITMO





EJEMPLO DE ALGORITMO















Multiplicacin de 4 bits

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_unsigned.all;



entity Multiplicacion is
Port ( a : in STD_LOGIC_VECTOR (3 downto 0);--multiplicador
b : in STD_LOGIC_VECTOR (3 downto 0);--multiplicando
p : out STD_LOGIC_VECTOR (7 downto 0));--producto
end Multiplicacion;

architecture Multiplicacion of Multiplicacion is

begin
process (a,b)
variable pv, bp:std_logic_vector(7 downto 0);
begin
pv:="00000000";
bp:="0000" & b;
for i in 0 to 3 loop
if a(i) = '1' then
pv:= pv + bp;
end if;
bp:= bp (6 downto 0) & '0';
end loop;
p<=pv;
end process;

end Multiplicacion;


Simulacin












Multiplicacion N bits

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.std_logic_signed.all;


entity Multiplicacio_N is
generic (N : integer:=8;N2: integer:=16);
Port ( a : in STD_LOGIC_VECTOR (N-1 downto 0);--multiplicador
b : in STD_LOGIC_VECTOR (N-1 downto 0);--multiplicando
p : out STD_LOGIC_VECTOR (N2-1 downto 0));--producto
end Multiplicacio_N;

architecture Behavioral of Multiplicacio_N is

begin
process (a,b)
variable pv, bp:std_logic_vector(N2-1 downto
0);
begin

for I in 0 to N2-1 loop
pv(I):= '0';
if (I<N) then
bp(I):=b(I);
ELSE
bp(I):='0';
end if;
end loop;

for i in 0 to N-1 loop
if a(i) = '1' then
pv:= pv + bp;
end if;
bp:= bp (N2-2 downto 0) & '0';
end loop;
p<=pv;
end process;


end Behavioral;

Simulacin

Potrebbero piacerti anche