Du steckst wohl noch ganz in den Anfängen. Ohne Dir zu nahe treten zu
wollen, so habe ich den Eindruck, dass Du noch nicht ganz verstanden
hast was ein Prozess in VHDL beschreibt.
Aus der Sicht des Softwerkers sieht das so aus als würden hier die
Befehle in dem Prozess nacheinander abgearbeitet. Dem ist aber nicht so.
Wenn man in einem Prozess den Konstrukt
1 | if rising_edge(clk) then
|
2 | ...
|
3 | end if;
|
verwendent, dann entsteht vereinfacht gesagt immer ein (oder mehrere)
Flip Flop. Nämlich zum Zeitpunkt der steigenden Flanke wird in der Regel
irgend einem Signal (oder mehreren Signalen) ein Wert zugewiesen. Dies
geschieht immer exakt in diesem Moment. Eine weitere Abfrage auf eine
steigenden Flanke innerhalb dieser if-Anweisung ist daher nicht möglich.
Ich habe das ganze mal spaßeshalber im ispLever-Classic compiliert und
synthetisiert. Auf Grund dessen, dass die zweite Clock-Abfrage auf Grund
der Momentaufnahme nie eintreten kann, hat das Tool gleich einiges
Wegoptimiert.
1 | Warning 13707:Unused pin 'clk500ms' removed.
|
2 | Warning 13707:Unused pin 'hsetpl' removed.
|
3 | Warning 13707:Unused pin 'hsetmin' removed.
|
4 | Warning 13707:Unused pin 'msetpl' removed.
|
5 | Warning 13707:Unused pin 'msetmin' removed.
|
6 | Warning 13707:Unused pin 'wahl_al_uhr' removed.
|
Als kleiner Tip: Als Anfänger brauchst Du keine Variablen. Und lese
wirklich mal ein gutes Buch dazu. Dazu gibt es genügend Foreneinträge.