Necesito dividir un entero por un entero en un ciclo de reloj. ¿Cómo debería hacer esto? Tengo una función que encontré en Internet, pero siempre devuelve una.
function divide (a : unsigned; b : unsigned) return integer is
variable a1 : unsigned(15 downto 0):=a;
variable b1 : unsigned(15 downto 0):=a;
variable p1 : unsigned(16 downto 0):= (others => '0');
variable i : integer:=0;
begin
for i in 0 to b'length-1 loop
p1(b'length-1 downto 1) := p1(b'length-2 downto 0);
p1(0) := a1(a'length-1);
a1(a'length-1 downto 1) := a1(a'length-2 downto 0);
p1 := p1-b1;
if(p1(b'length-1) ='1') then
a1(0) :='0';
p1 := p1+b1;
else
a1(0) :='1';
end if;
end loop;
return to_integer(a1);
end divide;