blob: 2047e84bc159a9c28d0d85c1997e09a9c1dc8371 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
entity top_hex is
port ( SW : in std_ulogic_vector(9 downto 0);
HEX0 : out std_ulogic_vector(6 downto 0);
HEX1 : out std_ulogic_vector(6 downto 0);
HEX2 : out std_ulogic_vector(6 downto 0);
HEX3 : out std_ulogic_vector(6 downto 0);
LEDR : out std_ulogic_vector(9 downto 0));
end entity;
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;
sa <= signed(SW(4 downto 0));
sb <= signed(SW(9 downto 5));
sum <= sa + sb;
betrag <= abs(sum);
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 => HEX3
);
bin2seg_i2: entity work.bin2seg
port map(
bin_i => std_ulogic_vector(sum(3 downto 0)),
seg_o => HEX2
);
HEX1 <= "0001110" when sum = -16 else
"0111111" when sa < 0 else "1111111";
end architecture rtl;
|