summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pb_APP_log_comb.srcs/sim_1/new/Bin2DualBCD_S_tb.vhd18
-rw-r--r--pb_APP_log_comb.srcs/sources_1/new/Bin2DualBCD_S.vhd72
2 files changed, 55 insertions, 35 deletions
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;