Guten Tag Ich bin ein VHDL Anfänger, der noch lernen muss, beim VHDL-programmieren nicht in C zu denken. Und nun meine Frage: Gibt es in VHDL eine äquivalente Anweisung zu #define in C? Eigentlich möchte ich lediglich einen String möglichst einfach ersetzen können: P1: process(CLK_50M) begin if rising_edge(CLK_50M) then ... end P1 Im .ucf vom Evalboard für den Spartan3AN ist der Eingang vom 50MHz Clock definiert. Das Signal heisst dann CLK_50M. Weil ich aber später vom Evalboard auf eine selbergemachte Hardware wechseln werde, habe ich sicher keinen 50MHz Clock mehr (weil batteriebetriebenes Gerät => möglichst geringer Energieverbrauch => tieferer Clock), und folglich werde ich das Signal nicht mehr so nennen. Ich werde also im gesamten Code dieses CLK_50M umbenennen müssen. Am elegantesten wäre das in C wohl so: #define System_Clock CLK_50M ... ... P1: process(System_Clock) begin if rising_edge(System_Clock) then ... end P1 Aber nun in VHDL? Danke für die Hilfe Mit freundlichen Grüssen Thomas Bader
Was du suchst ist ein Alias
1 | alias System_Clock : std_logic is CLK_50M; |
Aber warum benennst du den Pin nicht einfach im ucf-File um? Oder legst im Top-Level-Modul ein Signal System_Clock an, auf das dann der CLK_50M zugeweisen wird?
Danke für die Antwort Wie ist das genau mit dem Alias? Ist das wie eine Definition eines neuen Typs, oder ist das eine Art Variable (wegen std_logic)? Ja, eigentlich könnte ich das Signal auch schon im .ucf umbenennen. (Nach dem Prinzip: Warum einfach, wenn es kompliziert auch geht...). Was ist das Top-Level_Modul? Vielleicht habe ich dumme Fragen gestellt, aber ich habe halt weder Erfahrung noch besonders grosses Wissen (im Moment). Gruss Thomas
> Wie ist das genau mit dem Alias? Ist das wie eine Definition eines neuen > Typs, oder ist das eine Art Variable (wegen std_logic)? Hier eine anwendung des Alias: http://www.lothar-miller.de/s9y/archives/38-DDFS-mit-Distributed-ROM.html Dort wird bei der Vorzeichenabfrage dann statt Accum(Accum'high) der Alias Sign definiert und verwendet. > Ja, eigentlich könnte ich das Signal auch schon im .ucf umbenennen. Langfristig ist das der bessere Weg. KISS: Keep it simple and stupid. > (Nach dem Prinzip: Warum einfach, wenn es kompliziert auch geht...). Das mit dem UCF scheint dir nur kompliziert. Es ist allemal besser, als irgendwelche Signale unnnötig umzubenennen. Und letztlich wird dir sowieso nichts anderes bleiben, denn wie du sagst, gibt es im fertigen Design den 50MHz Takt nicht mehr. > Was ist das Top-Level_Modul? Das, in dem das Signal hardwaremäßig als Pin in das Design hereinkommt. Und damit genau das, das letztlich ins FPGA kommt.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.