📄 v10_10.vhd
字号:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_signed.all;
entity Flt2Fix is
port(DInA : in std_logic_vector(31 downto 0);
DInB : in std_logic_vector(31 downto 0);
ManA : out std_logic_vector(24 downto 0);
ManB : out std_logic_vector(24 downto 0);
Exp : out std_logic_vector(7 downto 0);
Clk : in std_logic);
end Flt2Fix;
architecture A_Flt2Fix of Flt2Fix is
signal ManInA : std_logic_vector(22 downto 0);
signal ManInB : std_logic_vector(22 downto 0);
signal ManInAi : std_logic_vector(24 downto 0);
signal ManInBi : std_logic_vector(24 downto 0);
signal ExpInA : std_logic_vector(7 downto 0);
signal ExpInB : std_logic_vector(7 downto 0);
signal Diff : std_logic_vector(7 downto 0);
signal SignA : std_logic;
signal SignB : std_logic;
begin
process(Clk)
begin
if Clk = '1' and Clk'event then
ManInA <= DInA(22 downto 0);
ManInB <= DInB(22 downto 0);
ExpInA <= DInA(30 downto 23);
ExpInB <= DInB(30 downto 23);
SignA <= DInA(31);
SignB <= DInB(31);
end if;
end process;
process(ExpInA,ExpInB,Diff,ManInAi,ManInBi)
begin
if (ExpInA > ExpInB) then --modified here
Diff <= ExpInA - ExpInB;
ManA <= ManInAi;
ManB <= SHR(ManInBi,Diff);
Exp <= ExpInA;
else
Diff <= ExpInB - ExpInA;
ManB <= ManInBi;
ManA <= SHR(ManInAi,Diff);
Exp <= ExpInB;
end if;
end process;
ManInAi <= "01" & ManInA when SignA = '0' else
not("01" & ManInA) + 1;
ManInBi <= "01" & ManInB when SignB = '0' else
not("01" & ManInB) + 1;
end A_Flt2Fix;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -