www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Import peripheral mit inout ins XPS


Autor: Ütze (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

ich möchte einen FTDI FT2232 im FiFo-Mode per PLB vom MicroBlaze 
lesen/schreiben. Nur bekomm ich den inout Port im XPS nicht zum Laufen.
Bin mittlerweile 3 Schritte zurück und hab ein einfaches Design mit 
einem Register(slv_reg0) eportiert. Diese Register wird bei tristate = 0 
vom inout Port und kann bei tristate = 1 vom PLB beschrieben werden. Auf 
dem inout Port liegt bei tristate = 1 slv_reg0 sonst Z.

Im Top_Level sind die 3 Ports einzeln in_out_i, in_out_o, in_out_t und 
beim reimport ins XPS wird der inout Port erzeugt.

Den hab ich mit dem IO Port von GPIO verbunden (den IO-Port, die drei 
einzelnen sind nicht verbunden).

Im SDK kann ich per GPIO_SetDataDirection den tristate Port umschalten 
(hab mir einen Pin rausgelegt der je nach in_out_t Zustand low oder high 
ist).

Und das wars, kann vom IO-Port (also per GPIO) weder Daten lesen noch 
schreiben. Das slv_reg0 per plb schreiben und lesen geht.

In der .mpd des Cores wird der I/O port zweimal identisch generiert, 
weiß jemand warum? Hab hier auch enable = single versucht, ohne Erfolg.

Hab das umschalten in einem kleinen Projekt ohne XPS/SDK, einfach mit 
Oszi und per Hand Spannung/GND setzen, gechecked - das geht.

Wo könnte der Fehler liegen?

Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Nun, _I _O _T beziehen sich auf IOBUF. Hier ein Auszug aus dem
Language-Template:

   IOBUF_inst : IOBUF
   generic map (
      DRIVE => 12,
      IOSTANDARD => "DEFAULT",
      SLEW => "SLOW")
   port map (
      O => O,     -- Buffer output
      IO => IO,   -- Buffer inout port (connect directly to top-level
port)
      I => I,     -- Buffer input
      T => T      -- 3-state enable input, high=input, low=output
   );

D.h. du müsstest T auf '0' ( = low) setzen, wenn du schreiben willst.
Ich hoffe das löst dein Problem

Grüße
  Christian

Autor: Ütze (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Antwort aber leider nicht. Mein Core verhält sich genau 
entgegen gesetzt zum xps_gpio. D.h. wenn ich vom uB aus die gpio 
Datenrichtung auf Output setze ist in_out_t = 0 und mein Core soll lesen 
und umgekehrt. Das klappt auch im ISE mit 4 rausgelegt Pins(inout,einem 
eingang der auf inout geschrieben wird, einem ausgang auf dem das von 
inout gelesenen geschrieben wird und einen zum Umschalten(t quasi)). Nur 
nach dem Import ins xps funktioniert es nicht. Da werden zwar noch _i,_o 
und _t in einem io zusammen gefasst, den kann ich mit io vom xps_gpio 
verbinden und die IOs sind auch wirklich verbunden da ich zumindest 
tristate(auch in meinem Core) per SetDataDirection des GPIO-Cores 
umschalten kann. Aber das lesen und schreiben geht nicht.

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.