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
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
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
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
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
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.