mikrocontroller.net

Forum: FPGA, VHDL & Co. Nutzung bidirektionaler Pins


Autor: Tobias W. (eagle2010)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

für ein Projekt möchte ich einen 1x16-Zeichen-Punktmatrix-Display 
(HD44100-Controller) über ein FPGA (Spartan 3E) ansteuern.
Dafür möchte ich nach jeder Anweisung an das Display dessen Busy-Flag 
abfragen.
Daher habe ich die 8 Daten-Signale als "inout" definiert. Diese 8 Pins 
werden über einen Pegelwandler (SN74LVC4245A) mit dem Display verbunden.
Nun muss ja, denke ich mal, der Ausgang am FPGA hochohmig geschaltet 
werden, bevor das Display seine Daten auf den Bus legt. Aber wie 
funktioniert das? Wenn ich data <= "ZZZZZZZZ" setze, kann ich die Daten 
doch nicht mehr abfragen, oder? Was würde überhaupt passieren, wenn auf 
einer Leitung noch ein High-Signal vom FPGA anliegt, zugleich aber der 
Ausgang vom Pegelwandler auf Low geht, kann dabei das FPGA Schaden 
nehmen?
Sorry, wenn diese Fragen vielleicht etwas trivial sind, ich habe aber 
nach 3 Stunden googlen keine wirkliche Lösung gefunden - die 
Display-Ansteuerungen, die ich gefunden habe, schreiben immer nur aufs 
Display.

Gruß
Tobias

Autor: Manuel Kampert (manuel1139)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schau dir mal an wie z.B. SRAM angesteuert wird.

Wenn du HI/LO an Ausgängen hast gibt das einen Kurzschluss und zumindest 
der IOB dürfte defekt sein.

Autor: Stephan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Wenn ich data <= "ZZZZZZZZ" setze, kann ich die Daten
> doch nicht mehr abfragen, oder?

Doch das kannst du.

> Was würde überhaupt passieren, wenn auf einer Leitung noch ein High-Signal
> vom FPGA anliegt, zugleich aber der Ausgang vom Pegelwandler auf Low geht,
> kann dabei das FPGA Schaden nehmen?

Ja, er kann, wahrscheinlich hast du aber Glück und es passiert 
nichts(der Strom vom FPGA ist begrenzt). Also keine allzugrosse Angst.

Mit einem Testbench (das Beste an VHDL!) kannst du alles gut im 
Simulator durchtesten damit es dann ohne Probleme im FPGA läuft.

Autor: Tobias W. (eagle2010)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, also ich mache eine nebenläufige Anweisung:
disp_d <= data when rw = '0' else "ZZZZZZZZ";
und es kann nichts passieren?

Autor: guest (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dem FPGA passiert bei tristate Z ohnehin nichts mehr. Die Frage ist nur, 
wie verhält sich dein Pegelwandler? ist der auch bidirektional?

Autor: Tobias W. (eagle2010)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Pegelwandler ist bidirektional (Datenblatt: 
http://www.farnell.com/datasheets/62872.pdf). Der Eingang "DIR" des 
Wandlers ist ebenfalls folgendermaßen an das Signal "rw" gekoppelt:
pw_dir <= rw;
Außerdem hätte ich noch die Möglichkeit, den Pegelwandler hochohmig zu 
schalten, was aber eigentlich nicht nötig ist, oder?

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Tobias W. (eagle2010)

>Display-Ansteuerungen, die ich gefunden habe, schreiben immer nur aufs
>Display.

Und? Das reicht doch. Machen 99% aller Anwender so und das sehr 
erfolgreich.

MFG
Falk

Autor: Tobias W. (eagle2010)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Falk Brunner wrote:
> @ Tobias W. (eagle2010)
>
>>Display-Ansteuerungen, die ich gefunden habe, schreiben immer nur aufs
>>Display.
>
> Und? Das reicht doch. Machen 99% aller Anwender so und das sehr
> erfolgreich.

Ok, möglicherweise kann ich mir das Abfragen des Busy-Flags sparen, aber 
es wäre trotzdem interessant zu wissen, wie es funktioniert.

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.