www.mikrocontroller.net

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


Autor: Christian R. (supachris)
Datum:

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

Autor: T. H. (pumpkin) Benutzerseite
Datum:

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

Autor: Christian R. (supachris)
Datum:

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

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.