Hallo zusammen,
in VHDL gibt es nicht so etwas wie Präprozessor, habe ich hier in einem
Beitrag gelesen. Was mache ich denn, wenn bei z.B. FSM bestimmte Zeiten
mit festen Zählerwerten taktfrequenzabhängig realisiere und die
Taktfrequenz versuchsweise ändere und die Zählerwerte nicht immer neu
ausrechnen und eintragen will. In C wird es ja z.B. so gemacht:
1 | #define F_CPU 4000000UL // Systemtakt in Hz - Definition als unsigned long beachten
|
2 | #define BAUD 9600UL // Baudrate
|
3 |
|
4 | // Berechnungen
|
5 | #define UBRR_VAL ((F_CPU+BAUD*8)/(BAUD*16)-1) // clever runden
|
6 | #define BAUD_REAL (F_CPU/(16*(UBRR_VAL+1))) // Reale Baudrate
|
7 | #define BAUD_ERROR ((BAUD_REAL*1000)/BAUD) // Fehler in Promille, 1000 = kein Fehler.
|
Eine Idee für VHDL wär ja z.B. so was:
1 | constant F_CPU : integer := 4000000;
|
2 | constant BAUD : interger := 9600;
|
3 | constant BAUD_REAL : integer := -- hier die Berechnungsformel
|
Aber ist das sinnvoll und üblich so. Werden da für die Konstanten, die
ich ja nur für Zwischenberechnungen anlege, nicht die FPGA-Ressourcen
verbraucht.