mikrocontroller.net

Forum: FPGA, VHDL & Co. Verilog Code in VHDL umschreiben


Autor: unwissender_Neuling (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

bin gerade dabei ein Programm welches in Verilog geschrieben wurde in 
VHDL umzuschreiben und bin an eine Stelle gerade die ich nicht wirklich 
verstehe.

Verilog Code:

>>IBUF_LVCMOS25 SW0 (.I(dip_switches[0]), .O(dipsw[0]));
>>-- synthesis attribute LOC of SW0 is R4;

das ist ja ein sogenannter "Input buffer" und wenn ich im user guide 
nachschaue müsste ich diese Zeilen so übersetzen:

component IBUF
-- synthesis translate_off
generic (
IOSTANDARD: bit_vector := "LVTTL");
-- synthesis translate_on
port (O : out STD_ULOGIC;
I : in STD_ULOGIC);
end component;

attribute IOSTANDARD : string;
attribute IOSTANDARD of IBUF_LVCMOS25 SW0 : label is "LVTTL";

IBUF_LVCMOS25 SWO : IBUF
-- synthesis translate_off
generic map (
IOSTANDARD => “string_value”)
-- synthesis translate_on
port map (O => dipsw(0),
          I => dip_switches(0));

Erstmal verwundert mich der Zeilenunterschied der beiden Sprachen und 
dann ist ja das synthese attribute in Verilog R4 und kein string. Ist 
damit ein PIN LOC eines PE Models gemeint?

Wie muss ich dann diesen Teil umschreiben.

Danke

unwissender_neuling

Autor: Klaus Falser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Am besten Du schreibst überhaupt nichts um, sondern läßt es weg.
Das einfügen von Input- und Output buffern kann man getrost dem 
Synthese-tool überlassen.
Im UCF-File legst Du dann den I/O Standard und die Pin-Zuweisung fest.
Übrigends deutet IBUF_LVCMOS25 wohl eher darauf hin, daß der gewünschte 
I/O Standard LVCMOS mit 2.5 V ist und nicht LVTTL wie Du geschrieben 
hast.

Grüße
Klaus

Autor: unwissender_Neuling (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Danke erstmal für die Antwort,

allerdings ist die nicht so wie erhofft.

Weglassen find ich irgendwie komisch, der Programmierer hat sich ja was 
dabei gedacht diesen Teil in den Quelltext mit hineinzuschreiben.

Außerdem könnte ich ja dann die hälfte des Quelltextes im Anhang 
weglassen.

Gibt es denn nicht noch andere Möglichkeiten oder kann man general alle 
In- und Output buffer weglassen?

>>daß der gewünschte I/O Standard LVCMOS mit 2.5 V ist und nicht LVTTL wie Du 
>>geschrieben hast.

das hab ich auch festgestellt, darum hatte ich ja gefragt wie die 
entsprechenden Zeilen oben umgeschrieben werden müssten.

Gruss

unwissender_Neuling

Autor: Klaus Falser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nun, wenn eine Antwort immer gewünscht ausfallen würde, bräuchte man 
nicht zu fragen.

Es gibt ein paar Argumente, die dafür sprechen, I/O Buffer nicht manuell 
zu instanzieren :
- Der Compiler macht es automatisch, man spart sich Arbeit
- Man kann das Design besser wiederverwerten, z.B. wenn man die aktuelle 
Top Level Einheit als Untereinheit eines größeren Designs verwendet. 
Dann sind die Signale keine I/O's mehr und die IBUFs und OBUFs müssen 
entfernt werden
- Man vermischt Funktion und Implementierung, wenn man in VHDL (oder 
Verilog) schon die Pin-Zuweisung oder den I/O Standard festlegt. 
Üblicherweise beschreibt man daher mit VHDL die Funktion und legt die 
Implementierungsdetails im UCF-File fest.

In deinem Fall macht das Top-Level anscheinend auch nicht viels anderes, 
als um das effektive Design herum die I/O bufs zu instanzieren, etwas 
das man im  UCF ebenso machen könnte und sollte.
Eine Ausnahme sind die verwendeten LVDS Ports, diese müssen meines 
Wissens instanziert werden, weil aus einem digital Signal zwei 
Port-Signale werden.
Aus diesem Grund braucht es wahrscheinlich auch diese Top Level.

Mich wundert nur,
- wenn Du dich genügend auskennst um zu erkennen was IOSTANDARD ist und 
daß  LVCMOS25 nicht LVTTL ist
- wenn Du genügend gestöbert hast um herauszufinden wie man einen IBUF 
instanziert,
dann ist es doch eigentlich nur ein kleiner Schritt um zu ahnen und in 
der Dokumentation nachzusehen
- daß man wahrscheinlich das Generic IOSTANDARD auf einen string mit dem 
Wert "LVCMOS25" (oder so ähnlich) setzen muß
- oder daß man das attribute IOSTANDARD auf "LVCMOS25" anstatt auf 
"LVTTL"  setzen muß

Grüße
Klaus


Autor: unwissender_Neuling (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da ich in der ganzen VHDL bzw. Verilog Sache noch ein Neuling bin, denke 
ich wahrscheinlich zu kompliziert und vermute hinter allen immer etwas 
aufwendiges.

Aber wenn du sagst das"LVTTL" einfach durch "LVCMOS25" ersetzt werden 
kann bzw. der Rest aus genannten Gründen vereinfacht werden kann, werde 
ich es einmal versuchen.

Danke & eine guten Rutsch

unwissender_Neuling

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.