From 7865ce7228e841b3dad14e105348ab46cb88fcd5 Mon Sep 17 00:00:00 2001 From: Luca Cuzzocrea Date: Sun, 8 Sep 2019 23:16:55 +0200 Subject: [PATCH] Fix e test normalizzatore --- IEEE754Adder.xise | 46 ++++++++------- Normalizer.vhd | 47 +++++++-------- NormalizerTest.vhd | 111 +++++++++++++++++++++++++++++++++++ NormalizerTest_isim_beh.exe | Bin 0 -> 21792 bytes NormalizerTest_isim_beh.wdb | Bin 0 -> 37214 bytes NormalizerTest_isim_beh2.wdb | Bin 0 -> 37861 bytes Normalizer_isim_beh.exe | Bin 0 -> 21792 bytes fuse.log | 45 +++++++++----- fuseRelaunch.cmd | 2 +- 9 files changed, 192 insertions(+), 59 deletions(-) create mode 100644 NormalizerTest.vhd create mode 100755 NormalizerTest_isim_beh.exe create mode 100644 NormalizerTest_isim_beh.wdb create mode 100644 NormalizerTest_isim_beh2.wdb create mode 100755 Normalizer_isim_beh.exe diff --git a/IEEE754Adder.xise b/IEEE754Adder.xise index ee9e06d..f45da8d 100644 --- a/IEEE754Adder.xise +++ b/IEEE754Adder.xise @@ -42,7 +42,7 @@ - + @@ -80,11 +80,11 @@ - + - + @@ -106,7 +106,7 @@ - + @@ -140,57 +140,63 @@ - + - + - + - + - + - + - + - + - + - + - + - + + + + + + + @@ -449,8 +455,8 @@ - - + + @@ -469,7 +475,7 @@ - + @@ -525,7 +531,7 @@ - + diff --git a/Normalizer.vhd b/Normalizer.vhd index cadd6c7..8d43721 100644 --- a/Normalizer.vhd +++ b/Normalizer.vhd @@ -94,9 +94,9 @@ begin EXP_ADD_RIGHT <= "00000001"; EXP_ADD_ISSUB <= '0'; elsif (IS_FINAL_EXP_MINIMUM = '1') then - EXP_ADD_LEFT <= "01111111"; --127 - EXP_ADD_RIGHT <= EXP; - EXP_ADD_ISSUB <= '1'; + EXP_ADD_LEFT <= "00000000"; + EXP_ADD_RIGHT <= "00000000"; + EXP_ADD_ISSUB <= '0'; else EXP_ADD_LEFT <= EXP; EXP_ADD_RIGHT <= ZERO_COUNT; @@ -108,10 +108,10 @@ begin generic map ( BITCOUNT => 8 ) port map ( X => EXP_ADD_LEFT, Y => EXP_ADD_RIGHT, IS_SUB => EXP_ADD_ISSUB, RESULT => EXP_ADDSUB_RES, OVERFLOW => EXP_ADDSUB_OF ); - shift_process: process (IS_FINAL_EXP_MINIMUM, EXP_ADDSUB_RES, ZERO_COUNT) + shift_process: process (IS_FINAL_EXP_MINIMUM, EXP, ZERO_COUNT) begin if (IS_FINAL_EXP_MINIMUM = '1') then - LEFT_SHIFT_AMOUNT <= '0' & EXP_ADDSUB_RES; + LEFT_SHIFT_AMOUNT <= '0' & EXP; else LEFT_SHIFT_AMOUNT <= '0' & ZERO_COUNT; end if; @@ -123,30 +123,31 @@ begin port map ( N => MANT, PLACES => LEFT_SHIFT_AMOUNT, RESULT => LEFT_SHIFTED_MANT_TMP ); LEFT_SHIFTED_MANT <= LEFT_SHIFTED_MANT_TMP(47 downto 25); - final_process: process (SUM_OVERFLOW, IS_FINAL_EXP_MINIMUM, EXP_ADDSUB_RES, EXP_ADDSUB_OF, RIGHT_SHIFTED_MANT, LEFT_SHIFTED_MANT) + final_process: process (SUM_OVERFLOW, IS_FINAL_EXP_MINIMUM, EXP_ADDSUB_RES, EXP_ADDSUB_OF, RIGHT_SHIFTED_MANT, LEFT_SHIFTED_MANT, EXP) variable IS_INF : std_logic; + variable IS_INF_ORIGINAL_EXP : std_logic; + variable IS_INF_FINAL_EXP : std_logic; begin - if (SUM_OVERFLOW = '1') then - IS_INF := '1'; - for i in EXP_ADDSUB_RES'range loop - IS_INF := IS_INF and EXP_ADDSUB_RES(i); - end loop; - IS_INF := IS_INF or EXP_ADDSUB_OF; - - if (IS_INF = '1') then - FINAL_EXP <= "11111111"; - FINAL_MANT <= "00000000000000000000000"; - else + IS_INF_ORIGINAL_EXP := '1'; + for i in EXP'range loop + IS_INF_ORIGINAL_EXP := IS_INF_ORIGINAL_EXP and EXP(i); + end loop; + IS_INF_FINAL_EXP := '1'; + for i in EXP_ADDSUB_RES'range loop + IS_INF_FINAL_EXP := IS_INF_FINAL_EXP and EXP_ADDSUB_RES(i); + end loop; + IS_INF := IS_INF_ORIGINAL_EXP or IS_INF_FINAL_EXP or EXP_ADDSUB_OF; + + if (IS_INF = '1') then + FINAL_EXP <= "11111111"; + FINAL_MANT <= "00000000000000000000000"; + else + if (SUM_OVERFLOW = '1') then FINAL_EXP <= EXP_ADDSUB_RES; FINAL_MANT <= RIGHT_SHIFTED_MANT; - end if; - else - if (IS_FINAL_EXP_MINIMUM = '1') then - FINAL_EXP <= "00000000"; - FINAL_MANT <= LEFT_SHIFTED_MANT; else FINAL_EXP <= EXP_ADDSUB_RES; - FINAL_MANT <= LEFT_SHIFTED_MANT; + FINAL_MANT <= LEFT_SHIFTED_MANT; end if; end if; end process; diff --git a/NormalizerTest.vhd b/NormalizerTest.vhd new file mode 100644 index 0000000..6d1ed2a --- /dev/null +++ b/NormalizerTest.vhd @@ -0,0 +1,111 @@ +LIBRARY ieee; +USE ieee.std_logic_1164.ALL; + + +ENTITY NormalizerTest IS +END NormalizerTest; + +ARCHITECTURE behavior OF NormalizerTest IS + + -- Component Declaration for the Unit Under Test (UUT) + + COMPONENT Normalizer + PORT( + SIGN : IN std_logic; + EXP : IN std_logic_vector(7 downto 0); + MANT : IN std_logic_vector(47 downto 0); + SUM_OVERFLOW : IN std_logic; + IEEE_754_SUM : OUT std_logic_vector(31 downto 0) + ); + END COMPONENT; + + + --Inputs + signal SIGN : std_logic := '0'; + signal EXP : std_logic_vector(7 downto 0) := (others => '0'); + signal MANT : std_logic_vector(47 downto 0) := (others => '0'); + signal SUM_OVERFLOW : std_logic := '0'; + + --Outputs + signal IEEE_754_SUM : std_logic_vector(31 downto 0); + + constant clock_period : time := 10 ns; + signal clock : std_logic; + +BEGIN + + -- Instantiate the Unit Under Test (UUT) + uut: Normalizer PORT MAP ( + SIGN => SIGN, + EXP => EXP, + MANT => MANT, + SUM_OVERFLOW => SUM_OVERFLOW, + IEEE_754_SUM => IEEE_754_SUM + ); + + -- Clock process definitions + clock_process :process + begin + clock <= '0'; + wait for clock_period/2; + clock <= '1'; + wait for clock_period/2; + end process; + + + -- Stimulus process + stim_proc: process + begin + SIGN <= '1'; + EXP <= "10010100"; + MANT <= "100101010001001001000001111101010000001000110001"; + SUM_OVERFLOW <= '1'; + wait for clock_period; + SIGN <= '1'; + EXP <= "10010100"; + MANT <= "000000000000000000000000000000000000000000000000"; + SUM_OVERFLOW <= '0'; + wait for clock_period; + SIGN <= '1'; + EXP <= "00000010"; + MANT <= "000000010001001001000001111101010000001000110001"; + SUM_OVERFLOW <= '0'; + wait for clock_period; + SIGN <= '1'; + EXP <= "11111110"; + MANT <= "111111111111111111111111111111111111111111111111"; + SUM_OVERFLOW <= '0'; + wait for clock_period; + SIGN <= '1'; + EXP <= "11111110"; + MANT <= "111111111111111111111111111111111111111111111111"; + SUM_OVERFLOW <= '0'; + wait for clock_period; + SIGN <= '1'; + EXP <= "11111111"; + MANT <= "100101010001001001000001111101010000001000110001"; + SUM_OVERFLOW <= '0'; + wait for clock_period; + SIGN <= '1'; + EXP <= "11111111"; + MANT <= "100101010001001001000001111101010000001000110001"; + SUM_OVERFLOW <= '1'; + wait for clock_period; + SIGN <= '1'; + EXP <= "11111111"; + MANT <= "000000000000001001000001111101010000001000110001"; + SUM_OVERFLOW <= '0'; + wait for clock_period; + SIGN <= '1'; + EXP <= "00000001"; + MANT <= "010101010001001001000001111101010000001000110001"; + SUM_OVERFLOW <= '0'; + wait for clock_period; + SIGN <= '1'; + EXP <= "00000000"; + MANT <= "100101010001001001000001111101010000001000110001"; + SUM_OVERFLOW <= '0'; + wait for clock_period; + end process; + +END; diff --git a/NormalizerTest_isim_beh.exe b/NormalizerTest_isim_beh.exe new file mode 100755 index 0000000000000000000000000000000000000000..3209988d8d84424c4d5c423f8f5aaa98e3cf50c8 GIT binary patch literal 21792 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 AQvd(} literal 0 HcmV?d00001 diff --git a/Normalizer_isim_beh.exe b/Normalizer_isim_beh.exe new file mode 100755 index 0000000000000000000000000000000000000000..3209988d8d84424c4d5c423f8f5aaa98e3cf50c8 GIT binary patch literal 21792 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