Forum: FPGA, VHDL & Co. EDK bidirektionalen Port an eigener Logik einbinden


von Christian R. (supachris)


Lesenswert?

Ich hab da ein Problem.
Folgende Konfiguration: Virtex-4 Board ML403, an den freien Pins eine 
eigene Logik angeschlossen. Um die anzusprechen habe ich mir ein 
FSL-basierten IP-Core gebaut, ganz simpel, FSL-Master und Slave. Nun 
habe ich zu meiner externen Hardware aber nur einen bidirektionalen Bus, 
ich muss also die FSL_M_DATA und FSL_S_DATA zusammenführen und die 
Richtung umschalten. Dazu hab ich ein OE-Steuersignal, was die externe 
Logik ausgibt. Ich bekomme es aber nicht hin, dass die Daten, die ich 
vom PPC aus an die externe Hardware schicke, auch ankommen. Die 
Steuersignale kommen richtig, also FSL_EXIST geht auf High, wenn ich was 
reinschreibe. Meine externe Logik holt darufhin das Wort aus dem FIFO, 
dann geht EXIST wieder auf Low. Allerdings kommen nur Nullen auf dem 
Datenbus. Als Verbindung nach draußen hab ich DATA_O, DATA_I und DATA_T, 
weil das EDK zuerst meckerte, als ich den Bus direkt als IO deklariert 
hatte. EDK hat dann auch erkannt, dass es bidirektional ist, und bietet 
mir zusätzlich DATA als IO an. Die Steuersignale und DATA (IO) hab ich 
als Make External rausgeführt und die entstandenen Signale per UCF File 
auf die FPGA Pins gelegt. Was muss ich denn mit den _O _I und _T machen? 
Im VHDL-File, was am FSL Bus hängt bediene ich die korrekt, aber wie 
muss ich die im System "verdrahten" Momentan stehen die auf "No 
Conection", was sicherlich nicht korrekt ist. Kann mir da jemand helfen? 
Der FSL an sich funktioniert ja, Steuersignale klappen, der ganze Ablauf 
stimmt, bloß der bidirektionelle Bus will noch nicht.
Danke im Voraus.

von T. H. (pumpkin) Benutzerseite


Lesenswert?

Mhh, so ganz habe ich die Problematik wahrscheinlich nicht verstanden. 
Wenn ich dich richtig verstanden habe hast du im Design zwei Busse die 
du miteinander verknüpfen möchtest? Ich mache einen BiDi Bus im Design 
als einen einzigen Signalzug, als inout. Wenn man was lesen will wird 
der auf 'Z' gesetzt.

von Christian R. (supachris)


Lesenswert?

Ja, das wollte ich ja ursprünglich. Hat das EDK aber nicht zugelassen, 
weil es, wie ich inzwischen herausgefunden habe, meinen Core als 
component in das große Top-Level VHDL eingebunden hat, und alle 
Anschlüsse erst mal auf Signale legt. Und da gibts keine 
bidirektionalen. Ich hab auch in dem VHDL jetzt gefunden, dass der schon 
die IO-Buffer Instanziiert hat, das sollte also klappen. Wahrscheinlich 
haben wir die Takte noch nicht richtig vergeben, ist halt alles etwas 
verwirrend im EDK. Mal schauen, kann ja eigentlich nicht so schwer sein.

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
Noch kein Account? Hier anmelden.