From 99f4eb01251847661d14fbe893eb7b97fde81d96 Mon Sep 17 00:00:00 2001 From: LYAM Date: Mon, 5 May 2025 15:51:55 -0400 Subject: BCD_S now working with complement 2 instead of 1 --- .../sim_1/new/Bin2DualBCD_S_tb.vhd | 18 +++--- .../sources_1/new/Bin2DualBCD_S.vhd | 72 ++++++++++++++-------- 2 files changed, 55 insertions(+), 35 deletions(-) (limited to 'pb_APP_log_comb.srcs') diff --git a/pb_APP_log_comb.srcs/sim_1/new/Bin2DualBCD_S_tb.vhd b/pb_APP_log_comb.srcs/sim_1/new/Bin2DualBCD_S_tb.vhd index f025a9b..68ed84e 100644 --- a/pb_APP_log_comb.srcs/sim_1/new/Bin2DualBCD_S_tb.vhd +++ b/pb_APP_log_comb.srcs/sim_1/new/Bin2DualBCD_S_tb.vhd @@ -71,14 +71,14 @@ architecture Behavioral of Bin2DualBCD_S_tb is "0101" & "0000" & "0101", -- 5 "0110" & "0000" & "0110", -- 6 "0111" & "0000" & "0111", -- 7 - "1000" & "1101" & "0000", -- 8 - "1001" & "1101" & "0001", -- 9 - "1010" & "1101" & "0010", -- 10 - "1011" & "1101" & "0011", -- 11 + "1000" & "1101" & "1000", -- 8 + "1001" & "1101" & "0111", -- 9 + "1010" & "1101" & "0110", -- 10 + "1011" & "1101" & "0101", -- 11 "1100" & "1101" & "0100", -- 12 - "1101" & "1101" & "0101", -- 13 - "1110" & "1101" & "0110", -- 14 - "1111" & "1101" & "0111", -- 15 + "1101" & "1101" & "0011", -- 13 + "1110" & "1101" & "0010", -- 14 + "1111" & "1101" & "0001", -- 15 -- conserver la ligne ci-bas. others => "0000" & "0000" & "0000" -- 0 + 0 ); @@ -122,8 +122,8 @@ begin ---------------------------------------- input_sim <= vecteur_test_sim(11 downto 8); - expected_signed <= vecteur_test_sim(7 downto 4); - expected_code <= vecteur_test_sim(3 downto 0); + expected_signed <= vecteur_test_sim(3 downto 0); + expected_code <= vecteur_test_sim(7 downto 4); ---------------------------------------- wait for delai_sim; diff --git a/pb_APP_log_comb.srcs/sources_1/new/Bin2DualBCD_S.vhd b/pb_APP_log_comb.srcs/sources_1/new/Bin2DualBCD_S.vhd index ccfe305..d007af4 100644 --- a/pb_APP_log_comb.srcs/sources_1/new/Bin2DualBCD_S.vhd +++ b/pb_APP_log_comb.srcs/sources_1/new/Bin2DualBCD_S.vhd @@ -41,41 +41,61 @@ architecture Behavioral of Bin2DualBCD_S is begin - process (signed_in(3)) - begin - case (signed_in(3)) is - when '0' => - signed_code <= "0000"; - when '1' => - signed_code <= "1101"; - when others => - signed_code <= "1110"; -- E - end case; - end process; - - -- Units are the same regardless of sign. - process (signed_in(2 downto 0)) + process (signed_in) begin - case (signed_in(2 downto 0)) is - when "000" => + case (signed_in) is + when "0000" => signed_units <= "0000"; - when "001" => + signed_code <= "0000"; + when "0001" => signed_units <= "0001"; - when "010" => + signed_code <= "0000"; + when "0010" => signed_units <= "0010"; - when "011" => + signed_code <= "0000"; + when "0011" => signed_units <= "0011"; - when "100" => + signed_code <= "0000"; + when "0100" => signed_units <= "0100"; - when "101" => + signed_code <= "0000"; + when "0101" => signed_units <= "0101"; - when "110" => - signed_units <= "0110"; - when "111" => + signed_code <= "0000"; + when "0110" => + signed_units <= "0100"; + signed_code <= "0000"; + when "0111" => signed_units <= "0111"; + signed_code <= "0000"; + when "1000" => + signed_units <= "1000"; + signed_code <= "1101"; + when "1001" => + signed_units <= "0111"; + signed_code <= "1101"; + when "1010" => + signed_units <= "0110"; + signed_code <= "1101"; + when "1011" => + signed_units <= "0101"; + signed_code <= "1101"; + when "1100" => + signed_units <= "0100"; + signed_code <= "1101"; + when "1101" => + signed_units <= "0011"; + signed_code <= "1101"; + when "1110" => + signed_units <= "0010"; + signed_code <= "1101"; + when "1111" => + signed_units <= "0001"; + signed_code <= "1101"; when others => - signed_units <= "1111"; -- r + signed_units <= "1111"; + signed_code <= "1110"; end case; - end process; + end process; end Behavioral; -- cgit v1.2.3