Hallo zusammen, ich ersuche eure Hilfe und zwar habe ich mich vor kurzem mit VHDL und Quartus beschäftigt und bin auf ein komisches Verhalten vom Quartus gestoßen und zwar wenn der Ausgangszustand sein Wert nicht veränder wird kein Design erstellt. Kann man irgend-wo dem Kompiler sagen, dass er dies nicht tun soll? Gruss A
1 | library IEEE; |
2 | use IEEE.STD_LOGIC_1164.ALL; |
3 | use IEEE.numeric_std.all; |
4 | |
5 | entity blink2 is |
6 | Port ( |
7 | clk : in std_logic; |
8 | LED : out std_logic |
9 | );
|
10 | end blink2; |
11 | |
12 | architecture RTL of blink2 is |
13 | constant max_count : natural := 48000000; |
14 | signal Rst : std_logic; |
15 | |
16 | begin
|
17 | |
18 | Rst <= '0'; |
19 | |
20 | compteur1 : process |
21 | variable count : natural range 0 to max_count; |
22 | begin
|
23 | wait until rising_edge(clk); |
24 | if Rst = '1' then |
25 | count := 0; |
26 | led <= '1'; |
27 | elsif rising_edge(clk) then |
28 | if count < max_count/2 then |
29 | count := count + 1; |
30 | led <= '1'; |
31 | elsif count < max_count then |
32 | led <= '0'; |
33 | count := count + 1; |
34 | else
|
35 | led <= '1'; |
36 | count := 0; |
37 | end if; |
38 | end if; |
39 | end process compteur1; |
40 | |
41 | end RTL; |
dabei wird etwas generiert, wenn ich aber nur eine Zeile auskommentiere dann erzeugt der Kompiler nichts und gibt keine Fehlermeldung aus:
1 | library IEEE; |
2 | use IEEE.STD_LOGIC_1164.ALL; |
3 | use IEEE.numeric_std.all; |
4 | |
5 | entity blink2 is |
6 | Port ( |
7 | clk : in std_logic; |
8 | LED : out std_logic |
9 | );
|
10 | end blink2; |
11 | |
12 | architecture RTL of blink2 is |
13 | constant max_count : natural := 48000000; |
14 | signal Rst : std_logic; |
15 | |
16 | begin
|
17 | |
18 | Rst <= '0'; |
19 | |
20 | compteur1 : process |
21 | variable count : natural range 0 to max_count; |
22 | begin
|
23 | wait until rising_edge(clk); |
24 | if Rst = '1' then |
25 | count := 0; |
26 | led <= '1'; |
27 | elsif rising_edge(clk) then |
28 | if count < max_count/2 then |
29 | count := count + 1; |
30 | led <= '1'; |
31 | elsif count < max_count then |
32 | --led <= '0';
|
33 | count := count + 1; |
34 | else
|
35 | led <= '1'; |
36 | count := 0; |
37 | end if; |
38 | end if; |
39 | end process compteur1; |
40 | |
41 | end RTL; |