Hallo,
ich möchte einen Zähler schreiben, dem ein Anfangs- und Endwert gegeben
wird. Danach soll er von dem Anfangswert bis 15 zählen und dann
rückwärts bis zu dem Endwert.
Ich beschäftige mich mit vhdl erst seit ein paar Tagen, deshalb hab ich
noch keine Ahnung davon.
Hier ist mein Code, den ich anhand von ähnlichen Codes erstellt habe:
1 | library ieee;
|
2 | use ieee.std_logic_1164.all;
|
3 | use ieee.numeric_std.all;
|
4 |
|
5 | entity zaehler is port(
|
6 | clk: in std_logic
|
7 | zahl_anfang in unsigned(3 downto 0);
|
8 | zahl_ende in unsigned(3 downto 0);
|
9 | zahl_aus out unsigned(3 downto 0);
|
10 | );
|
11 | end zaehler;
|
12 |
|
13 | architecture count of zaehler is
|
14 | signal value_jetzt: unsigned(3 downto 0);
|
15 | signal value_ende: unsigned(3 downto 0);
|
16 | begin
|
17 |
|
18 | process(clk)
|
19 | begin
|
20 | value_jetzt <= zahl_anfang
|
21 | if clk = '1' then
|
22 | value_jetzt <= value_jetzt + 1;
|
23 | if value_jetzt = "1111" then
|
24 | value_jetzt <= value_jetzt - 1;
|
25 | if value_jetzt = 'value_ende' then
|
26 | end if
|
27 | end if
|
28 | end if
|
29 | end process
|
30 |
|
31 | zahl_aus <= value_jetzt;
|
32 | end count
|
Ich würde mich über Hinweise und Verbesserungen freuen.