mikrocontroller.net

Forum: FPGA, VHDL & Co. #define in VHDL


Autor: Thomas B. (thomas1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was du suchst ist ein Alias
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?

Autor: Thomas B. (thomas1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 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-m...
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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.