Hallo, ich habe ein kleines Problem mit VHDL. Der Code soll auf zwei verschiedenen Boards mit unterschiedlichen Takten laufen. Da ich eine Menge zeitkritischer Sachen mache, die mit Timern realisiert werden muss ich bei jedem Boardwechsel alle Zeiten austauschen. Gibt es eine Möglichkeit dies zu automatisieren, dass die Timerwerte dynamisch bei der Syntetisierung erzeugt werden? So wie ich bei einem uC ein F_CPU habe.
Gast
#2133005
Welche Timer? In VHDL gibt es nix mit Timern. Zumindest nichts was synthetisiert wird
Idh habe halt ein integer den ich hoch zähle und wenn er einen bestimmten wert erreicht hat soll etwas passieren. Es geht mir jettum diesen Wert, der abhängig von der Taktfrequenz erzeugt werden muss.
Gast
#2133022
Mit nem VHDL package kannst du "globale" Konstanten erzeugen. Die Werte müssen aber von hand an das board angepasst werden.
Das bringt ja nichts, damit verlagere ich ja nur den Ort wo ich die Werte defeiniere.
Gast
#2133031
F_CPU musst du aber auch eintragen, der Compiler kann ja nicht wissen welches Quarz dran hängt
Ja aber dann kann ich sagen: REGISTER=1000/F_CPU; Wie mache ich das in VHDL?
Gast
#2133041
Kannst du anhand der Hardwareunterschiede feststellen auf welchem Board du dich befindest? z.B. hast du 2 Eingänge, die je nach Boardvariante fest auf High oder Low liegen. Das könntest du einmalig einlesen und deinen Zählwert entsprechend laden.
Gast
#2133042
>Ja aber dann kann ich sagen: REGISTER=1000/F_CPU;
ja, schon, aber auch F_CPU musst du irgendwann mal eintragen. Und zwar
VOR dem compilieren
Nein, aber ich möchte an nur einer Stelle F_CPU verändern anstatt an 20 Stellen die Timer Werte neu ausrechnen zu müssen.
Gast
#2133056
Schau dir mal das VHDL-Schlüsselwort "Generic" an.
Fabian S. schrieb: > Nein, aber ich möchte an nur einer Stelle F_CPU verändern anstatt an 20 > Stellen die Timer Werte neu ausrechnen zu müssen. Nimm ein Generic. Fabian S. schrieb: > Gibt es eine Möglichkeit dies zu automatisieren, dass die Timerwerte > dynamisch bei der Syntetisierung erzeugt werden? Bei der Synthese werden die Timerwerte statisch betrachtet. Ich bin mir übrigens nicht ganz sicher, ob du weißt, was in diesem Zusammenhang hier statisch und dynamisch bedeutet... Statisch bedeutet: zum Übersetzungszeitpunkt. Dynamisch bedeutet: mit einem Schalter zur Laufzeit umschaltbar.
Fabian S. schrieb: > Ja aber dann kann ich sagen: REGISTER=1000/F_CPU; > Wie mache ich das in VHDL? Sieh dir mal die SIO an: http://www.lothar-miller.de/s9y/categories/42-RS232 Da wird auch einfach der Zählerendwert aus der Baudrate und der Taktfrequenz berechnet. Für eine andere Baudrate änderst du nur den entsprechenden Generic...
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.