aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFriedrich Beckmann <friedrich.beckmann@hs-augsburg.de>2024-04-08 11:26:35 +0200
committerFriedrich Beckmann <friedrich.beckmann@hs-augsburg.de>2024-05-28 12:22:40 +0200
commitc9f4ee68de24fcf9182c7e0d7929d894c8389688 (patch)
treed4a343245a70e5894ee3ef56982741b34960c770
parent9ab2617b61b68c496ff6b34cc17e9df8de7b49f7 (diff)
add solution top_hex
-rw-r--r--src/top_hex.vhd20
1 files changed, 14 insertions, 6 deletions
diff --git a/src/top_hex.vhd b/src/top_hex.vhd
index af0da77..2047e84 100644
--- a/src/top_hex.vhd
+++ b/src/top_hex.vhd
@@ -15,6 +15,7 @@ architecture rtl of top_hex is
signal sa : signed(4 downto 0);
signal sb : signed(4 downto 0);
signal sum : signed(4 downto 0);
+ signal betrag : signed(4 downto 0);
begin
LEDR <= SW;
@@ -22,20 +23,27 @@ LEDR <= SW;
sa <= signed(SW(4 downto 0));
sb <= signed(SW(9 downto 5));
sum <= sa + sb;
+betrag <= abs(sum);
-bin2seg_i1: entity work.bin2seg
+bin2seg_i0: entity work.bin2seg
+ port map(
+ bin_i => std_ulogic_vector(betrag(3 downto 0)),
+ seg_o => HEX0
+);
+
+bin2seg_i3: entity work.bin2seg
port map(
bin_i => "000" & std_ulogic(sum(4)),
- seg_o => HEX1
+ seg_o => HEX3
);
-bin2seg_i0: entity work.bin2seg
+bin2seg_i2: entity work.bin2seg
port map(
bin_i => std_ulogic_vector(sum(3 downto 0)),
- seg_o => HEX0
+ seg_o => HEX2
);
-HEX2 <= "1111111" when sa > -1 else "0000000";
-HEX3 <= "1111111";
+HEX1 <= "0001110" when sum = -16 else
+ "0111111" when sa < 0 else "1111111";
end architecture rtl;