Hallo zusammen,
ich habe ein schon etwas längeres Programm geschrieben, welches
angemessen lange (ca. 2-3 min) bei der Syntehe benötigt. Nun habe ich
das Programm noch um eine letzte wichtige Komponente erweitert, doch
plötzlich führt die Synthese zu keinem Ende mehr (ich habe über 1 Std.
gewartet).
Was habe ich erweitert?
Es gibt in meinem Programm eine Integer Signal, welches bei jedem Takt
um 1 erhöht wird, wenn ich in einem bestimmten Prozess bin. Diese soll
quasi eine Zeitmessung wiederspiegeln.
Diese Zeit möchte ich nun "auswerten". Mein Systemtakt beträgt 50 MHz.
Also entspricht ein Takt einer Dauer von 2E-8 Sekunden. Ergo sind 500E3
Takte = 10ms.
Ich möchte diese Zeit nun in Millisekunden-Stellen aufteilen:
Es gibt vier Stellen:
- Zehntausend entspricht 10.000 ms = 10 s
- Tausend entspricht 1.000 ms = 1 s
- Hundert entspricht 100 ms = 0,1 s
- Zehn entspricht 10 ms = 0,01 s
Das war meine Idee (am Beispiel der Zehntausender Stelle [50 MHz Takt]):
1 | while (TIMER > (500000000)) loop
|
2 | X := X + 1;
|
3 | TIMER <= TIMER - (500000000);
|
4 | end loop;
|
Nach dieser Schleife steht in X die Anzahl "wie oft 10s vorkamen".
Danach kann dann ermittelt werden wie oft 1s vorkam usw. usf.
Doch sobald ich diese while Schleifen in mein Programm einbaue ist
Feierabend und er Synthetisiert bis zum Sankt Nimmerleinstag..
Was mache ich verkehrt?
Viele Grüße