Hallo zusammen,
ich bin VHDL Einsteiger und programmiere erst seit kurzer Zeit
damit(Uni).
Ich möchte auf meinem Altera FPGA DE1 Board eine Laufschrift auf den
Siebensegmentanzeigen ausgeben, die immer von links nach rechts und von
rechts nach links hin und her pendelt. Dies möchte ich unter anderem
gerne mit einem Counter probieren.
Hier mal mein Counter-Code:
1 | library ieee;
|
2 | use ieee.std_logic_1164.all;
|
3 | use ieee.numeric_std.all;
|
4 |
|
5 | entity Up_Down is
|
6 | port (clk : in std_logic;
|
7 | enable: in std_logic;
|
8 | up_down :in std_logic;
|
9 | pos: out std_logic_vector (2 downto 0));
|
10 | end Up_Down;
|
11 |
|
12 |
|
13 | architecture Verhalten of Up_Down is
|
14 | signal modulo: natural range 0 to 7;
|
15 | begin
|
16 |
|
17 | process (all) begin
|
18 |
|
19 | if rising_edge (clk) then
|
20 | if enable = '1' then
|
21 | if (up_down = '1') then
|
22 | modulo <= modulo + 1;
|
23 | pos <= not std_logic_vector (to_unsigned(modulo + 1, 3));
|
24 | else
|
25 | modulo <= modulo - 1;
|
26 | pos <= not std_logic_vector (to_unsigned(modulo - 1, 3));
|
27 | end if;
|
28 | end if;
|
29 | end if;
|
30 | end process;
|
31 |
|
32 | end Verhalten;
|
"enable" ist hierbei ein Signal dass nur jede 5. Taktperiode aktiv ist.
Der Counter steuert einen Decoder an (über pos) der die verschiedenen
Stellungen auf den Anzeigen ausgibt.
Leider läuft meine Laufschrift immer nur von links nach rechts und
pendelt nicht. Vll. kann mir der eine oder andere ein paar nützliche
Tipps geben. Wie gesagt ich bin noch ein sehr früher Einsteiger ;)