Hi,
ich bin mir ziemlich sicher das es eine daemliche Frage ist... aber ich
steh gerade ein bisschen auf dem Schlauch.
Ich versuche ein Verilog Modell von Lattice auf einen Xilinx FPGA zu
portieren, habe aber keinerlei Erfahrung mit Lattice FPGAs. Es haengt
blos an der Instanziierung eines "BB" Bidirectional Buffers, klingt vom
Namen her ja nach einer Entsprechung der Xlinx IOBs. Wo kann ich
nachlesen was das Teil genau tut?
Nach zwei Buchstaben zu googeln ist denkbar aussichtslos, "bidirectional
buffer" ist auch fuerchterlich allgemein und in den FPGA-Handbuechern
von Lattice hab ich auf Anhieb nichts finden koennen. Wo muss ich
schauen?
Danke,
Sebastian
Hallo Lothar,
die Beschreibung des Tristate-Puffers kann ich nachvollziehen. Ich bin
mir aber nicht wirklich sicher ob "BB" das selbe macht... dann waere es
ja nicht besonders sinnig die Komponente extra einzubauen wenn man das
Verhalten so einfach beschreiben kann...
Vielleicht mag sich mal jemand die angehaengte Datei ansehen. Was tut
diese Zeile?
> BB tpio_inst(.I(PIO_DATA_O), .T(~PIO_TRI), .O(PIO_IO_I), .B(PIO_IO));
Der Komponente tpio_inst werden die Signale Eingang (I), Tristate (T),
Ausgang (O) und ein Typ (B) zugewiesen. Der Typ (PIO_IO) ist eine
Zeichenkette, die den Portpin beschreibt (LVTTL..., Interfacespannung
2V5, 3V3...). Die anderen 3 sind die bekannten Signale.
Im Handbook HB1001.pdf zur XP-Familie ist das noch ein wenig auscodiert.
http://www.latticesemi.com/dynamic/view_document.cfm?document_id=9418
Allerdings muß ich zugeben, dass ich auch da nichts explizit zur
Komponente BB gefunden habe. Wenigstens aber die Anwendung.
Lothar Miller wrote:
>> BB tpio_inst(.I(PIO_DATA_O), .T(~PIO_TRI), .O(PIO_IO_I), .B(PIO_IO));>> Der Komponente tpio_inst werden die Signale Eingang (I), Tristate (T),> Ausgang (O) und ein Typ (B) zugewiesen. Der Typ (PIO_IO) ist eine> Zeichenkette, die den Portpin beschreibt (LVTTL..., Interfacespannung> 2V5, 3V3...). Die anderen 3 sind die bekannten Signale.
Also PIO_IO ist vom Typ "inout", das kann doch keine Zwichenkette sein,
oder (zugegeben, mit meinen Verilog-Kenntnissen ists nicht soo weit her,
aber das ist doch blos ein Bit)? Oder wie kommst du darauf?
> Im Handbook HB1001.pdf zur XP-Familie ist das noch ein wenig auscodiert.> http://www.latticesemi.com/dynamic/view_document.cfm?document_id=9418> Allerdings muß ich zugeben, dass ich auch da nichts explizit zur> Komponente BB gefunden habe. Wenigstens aber die Anwendung.
PIOs sind da ausfuehrlich beschrieben, aber die Signale passen so gar
nicht zu dem was BB hat.
Vielen Dank fuer deine Muehe, aber klar ist mir das immer noch nicht :-/
Sebastian
Ich kenne mich mit Verilog nun nicht soooo gut aus, ich habe deshalb vom
VHDL-Code auf die Verilog-Beschreibung transferiert. Und im VHDL-Code
ist das ein Attribut, das dem Synthesizer übergeben wird. Deshalb dürfte
die Beschreibung bei Verilog auch sowas ähnliches machen (so meine
Vermutung).
Diese Zeichenkette dürfte hier der Knackpunkt sein, der den IO-Standard
definiert:
/*synthesis IO_TYPE="SSTL25_II"*/
Verilog:
bidiInst0 : BB PORT MAP( I => ddrout(0),T => tridata(0),O => ddrin(0),B => dq(0));
5
:
EDIT: Weil so eine Komponenten-Instantitierung immer
Architekturgebunden ist, vermeide ich die soweit möglich und nehme die
generische Beschreibung wie aus meinem 1. Post. Der IO-Standard wird
dann im (architekturabhängigen) Constraint-File angegeben.
Achso, nun versteh ichs...
PIO_IO ist der Ein-/Ausgangspin. Und ueber diese Attribute kriegt er
gleich noch den IO-Standard mitgegeben, den man sonst im UCF File
eintragen muss.
Die versuchen aber auch alles um Portabilitaet zu verhindern...
Also werd ich mal dies versuchen:
SuperWilly wrote:
> ... aus der ispLEVER 7.1 Hilfe: siehe Anhang
Ausgezeichnet, demnach waren wir auf der richtigen Faehrte. Wenn ich mir
die Wahrheitstabelle ansehe wuerde ich so auf den ersten Blick sagen das
mein Code funktionieren muesste. Einwaende?
Vielen Dank fuer die guten Tipps Lothar und fuer die Loesung des
Raetsels, SuperWilly :-)
Sebastian
SuperWilly wrote:
> ... aus der ispLEVER 7.1 Hilfe: siehe Anhang
Ja, nur irgendwie schade, dass sowas nicht im Datenblatt oder Usermanual
oder in den Whitepapers auftaucht... :-(
Lothar Miller wrote:
> SuperWilly wrote:>> ... aus der ispLEVER 7.1 Hilfe: siehe Anhang>> Ja, nur irgendwie schade, dass sowas nicht im Datenblatt oder Usermanual> oder in den Whitepapers auftaucht... :-(
Ich haette nicht gedacht das ich das mal sagen wuerde, aber das macht
Xilinx tatsaechlich besser. Da gibts die ganze HTML-Doku durchsuchbar im
Netz...
Sebastian