Hallo zusammen,
ich habe vor kurzem angefangen VHDL zu lernen und noch gewisse
Startschwierigkeiten.
Ich will mir zur Übung einen einfachen 8 Bit-Zähler programmieren und
hab' folgenden Code zustande gebracht, das Problem liegt darin, dass der
Zählerausgang (COUNT_OUT) immer auf high liegt und auch VAR_NEW_COUNT
ändert sich nicht. Evtl. sieht jemand meinen Fehler im Code oder ich
mach in der Simulation etwas falsch. Dafür benutze ich ModelSim und
stelle CIN als Clock ein.
Schonmal vielen Dank und hier der Code: :)
1 | entity COUNTER is
|
2 | port( CIN: in bit;
|
3 | COUNT_OUT: out bit_vector(7 downto 0));
|
4 | end COUNTER;
|
5 |
|
6 | architecture COUNTER_BEHAVE of COUNTER is
|
7 | signal SIG_COUNT: bit_vector(7 downto 0) := (others => '0');
|
8 | begin
|
9 |
|
10 | ADD1: process(CIN)
|
11 | variable VAR_NEW_COUNT: bit_vector(7 downto 0);
|
12 | variable CB: bit := '1';
|
13 | begin
|
14 |
|
15 | if (CIN = '1' and CIN'event) then
|
16 | for I in 7 downto 0 loop
|
17 | if (SIG_COUNT(I) and CB) = '1' then
|
18 | VAR_NEW_COUNT(I) := '0';
|
19 | else
|
20 | VAR_NEW_COUNT(I) := '1';
|
21 | CB := '0';
|
22 | end if;
|
23 | end loop;
|
24 | end if;
|
25 |
|
26 | COUNT_OUT <= VAR_NEW_COUNT;
|
27 |
|
28 | end process ADD1;
|
29 |
|
30 | end COUNTER_BEHAVE;
|