Line 238... |
Line 238... |
for i in 39 downto 0 loop
|
for i in 39 downto 0 loop
|
s1signeddata56a(i+16) <= s1signa xor s1data40a(i);
|
s1signeddata56a(i+16) <= s1signa xor s1data40a(i);
|
s1signeddata56b(i) <= s1signb xor s1data40b(i);
|
s1signeddata56b(i) <= s1signb xor s1data40b(i);
|
end loop;
|
end loop;
|
end if;
|
end if;
|
|
|
end process;
|
end process;
|
|
|
|
|
s1b2b1s:
|
s1b2b1s:
|
for i in 22 downto 0 generate
|
for i in 22 downto 0 generate
|
b1s(i) <= s1b(22-i);
|
b1s(i) <= s1b(22-i);
|
end generate s1b2b1s;
|
end generate s1b2b1s;
|
signa:
|
signa:
|
for i in 22 downto 0 generate
|
for i in 22 downto 0 generate
|
s1sma(i) <= s1a(31) xor s1a(i);
|
s1sma(i) <= s1a(31) xor s1a(i);
|
end generate;
|
end generate;
|
s1sma(23) <= not(s1a(31));
|
s1sma(23) <= not(s1a(31));
|
s1sma(24) <= s1a(31);
|
s1sma(24) <= s1a(31);
|
|
|
|
|
--! Combinatorial Gremlin, Etapa2: Finalizar la denormalización de b.
|
--! Combinatorial Gremlin, Etapa2: Finalizar la denormalización de b.
|
s2signslab:
|
s2signslab:
|
for i in 16 downto 0 generate
|
for i in 16 downto 0 generate
|
s2slab(i) <= s2smb(24);
|
s2slab(i) <= s2smb(24);
|
end generate s2signslab;
|
end generate s2signslab;
|
|
|
--! Combinatorial Gremlin, Etapa 3 Realizar la suma, quitar el signo de la mantissa y codificar el corrimiento hacia la izquierda.
|
--! Combinatorial Gremlin, Etapa 3 Realizar la suma, quitar el signo de la mantissa y codificar el corrimiento hacia la izquierda.
|
--adder:sadd2
|
--adder:sadd2
|
--port map (s3sma(24)&s3sma,s3smb(24)&s3smb,dpc,s3res);
|
--port map (s3sma(24)&s3sma,s3smb(24)&s3smb,dpc,s3res);
|
process (s3sma,s3smb)
|
process (s3sma,s3smb)
|
begin
|
begin
|
--! Magia: La suma ocurre aqui
|
--! Magia: La suma ocurre aqui
|
s3res <= (s3sma(24)&s3sma)+(s3smb(24)&s3smb);
|
s3res <= (s3sma(24)&s3sma)+(s3smb(24)&s3smb);
|
end process;
|
end process;
|
|
|
process(s3res)
|
process(s3res)
|
variable lshift : integer range 24 downto 0;
|
variable lshift : integer range 24 downto 0;
|
begin
|
begin
|
lshift:=24;
|
lshift:=24;
|
|
|
Line 283... |
Line 276... |
end if;
|
end if;
|
end loop;
|
end loop;
|
s3ures(24) <= s3res(24) xor s3res(25);
|
s3ures(24) <= s3res(24) xor s3res(25);
|
s3lshift <= conv_std_logic_vector(lshift,5);
|
s3lshift <= conv_std_logic_vector(lshift,5);
|
end process;
|
end process;
|
|
|
|
|
--! Combinatorial Gremlin, Etapa 4 corrimientos y normalización de la mantissa resultado.
|
--! Combinatorial Gremlin, Etapa 4 corrimientos y normalización de la mantissa resultado.
|
normsupershiftermult:lpm_mult
|
normsupershiftermult:lpm_mult
|
generic map ("DEDICATED_MULTIPLIER_CIRCUITRY=YES,MAXIMIZE_SPEED=9","UNSIGNED","LPM_MULT",9,9,18)
|
generic map ("DEDICATED_MULTIPLIER_CIRCUITRY=YES,MAXIMIZE_SPEED=9","UNSIGNED","LPM_MULT",9,9,18)
|
port map (shl(conv_std_logic_vector(1,9),s4lshift(2 downto 0)),s4ures(22 downto 14),s4nrmS);
|
port map (shl(conv_std_logic_vector(1,9),s4lshift(2 downto 0)),s4ures(22 downto 14),s4nrmS);
|
normhighshiftermult:lpm_mult
|
normhighshiftermult:lpm_mult
|