www.mikrocontroller.net

Forum: FPGA, VHDL & Co. GODIL Board I/O Datenrichtung Umschaltung


Autor: Randy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich hab ein GODIL Board, das hat 3,3-auf-5V Pegelwandler an den FPGA 
Pins.
http://shop.trenz-electronic.de/catalog/product_in...
Dazu benutze ich das UCF File von denen
http://www.trenz-electronic.de/fileadmin/content/P...
In der Vorlage für das Entity werden alle Pins als "inout" definiert. 
Meine Eingangspins klemme ich in der VHDL Beschreibung an ein Signal das 
nie treibt, d.h. immer ein Eingang ist. Ist das die richtige 
Vorgehensweise für einen Eingangspin?
Das Problem das ich habe ist dass als ich vorsichtig über einen 1kOhm 
Widerstand den Pin auf low ziehen wollte, ist nichts passiert. Ich hab 
nachgemessen, der 1k Widerstand hat die Spannung am Pin nur auf 2V 
runter gezogen. Der ADC den ich dann dran gehängt habe zieht den Pin 
zwar erfolgreich auf low (das kann ich an den Daten sehen), aber es 
kommt mir schon komisch vor dass dafür so viel Strom nötig sein soll.
Muß man Eingangspins anders in VHDL programmieren? (D.h. ich treibe 
gegen einen Ausgang dessen Pegel aber gemessen wird?)
Oder ist so viel Strom bei dem Pegelwandler (sn74cb3t16211) auf dem 
GODIL Board normal?

Randy

Autor: user (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
den pin mit 'Z' treiben

Autor: Randy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> den pin mit 'Z' treiben

Das hab ich heute mal probiert. Ein
pin(16) <= 'Z';
in top entity außerhalb aller Prozesse bewirkt keinen Unterschied zum 
Verhalten ohne die Zeile. Der Pin ist per Default high und es braucht 
3,5mA ihn auf low zu ziehen. Ein 1k Widerstand zieht den Pin nur auf 2V 
runter und er bleibt high.
Ein 'L' oder 'H' (d.h. schwach low oder high treiben) bewirkt dass der 
Pin high oder low ist und sich nicht auf den anderen Zustand ziehen 
lässt - aus sicht des VHDL-Codes, d.h. der Pin wird scheinbar nicht mehr 
gemessen da der FPGA es auch nicht merkt wenn man den Pin hart auf low 
legt (durch den Pegelwandler durch, versteht sich)
Was könnte man sonst noch probieren?
Da die top entity die Pins per
pin : inout std_logic_vector (48 downto 1)
definiert ist es gar nicht so einfach den Pin16 als reinen Eingang zu 
definieren ohne eine massive Umbennen-Aktion in der ucf Datei. Oder 
gibts da eine einfache Möglichkeit?

Viele Grüße,
Randy

Autor: Duke Scarring (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Randy schrieb:
> In der Vorlage für das Entity werden alle Pins als "inout" definiert.
...
> Muß man Eingangspins anders in VHDL programmieren? (D.h. ich treibe
...
> Oder ist so viel Strom bei dem Pegelwandler (sn74cb3t16211) auf dem
> GODIL Board normal?
-- Ausgang
pin_out <= '0'; -- oder
pin_out <= '1'; -- oder
pin_out <= logic_signal;

--Eingang
logic_signal <= pin_in;

Wo ist jetzt nochmal das Problem? Deine Pins können trotzdem inout 
bleiben. Das ändert am Treiber erstmal nichts.

Allerdings kenne ich Deinen Pegelwandler nicht. Evtl. gibt es dort 
Einschränkungen (Datenrichtung ö.a.)

Duke

Autor: Randy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Wo ist jetzt nochmal das Problem?

Es funktioniert ja. Mich wundert nur dass ich recht kräftig nach GND 
ziehen muß damit der Eingang low Pegel erkennt, immerhin mit 3,5mA...

> Allerdings kenne ich Deinen Pegelwandler nicht.

Im Datenblatt hätte ich nichts gefunden das darauf hinweist dass ein so 
hoher Strom für einen Eingang normal ist.
http://focus.ti.com/general/docs/lit/getliterature...
Deswegen hatte ich gehofft dass jemand in diesem Forum mit dem Board 
schon gearbeitet hat...

Randy

Autor: Randy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>> Wo ist jetzt nochmal das Problem?

> Es funktioniert ja.

Hmm... hab jetzt nochmal nachgemessen... wenn ich den Pin auf Ausgang 
schalte (pin(16)<='1') messe ich mit dem 1k Widerstand nach GND den 
gleichen Strom... (2V bzw. 2mA), das hat mich dazu bewogen zu glauben 
dass sich ggü. pin(16)<='Z' nicht verändert hat. Wenn ich mit dem 
Strommessgerät hart auf GND gehe messe ich tatsächlich 
unterschiedliches... 16mA ggü. 3,5mA. Dann ist bei 3,5mA der Pin 
tatsächlich erfolgreich auf Eingang geschaltet... und der Strom kommt 
vermutlich vom Pegelwandler...

Randy

Autor: MRandelzhofer (OHO-Elektronik) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Randy,

der im GODIL Modul verwendete Pegelwandler:
http://focus.ti.com/lit/ds/symlink/sn74cb3t16211.pdf

funktioniert ohne Richtungs-Umschaltsignal (Was bei 48 I/Os ja auch 
wünschenswert ist), d.h. mit Hilfe eines FETs, (fast) so wie in 
folgender APPNOTE von NXP über den I2C Bus beschrieben:
http://www.nxp.com/documents/application_note/AN10441.pdf

Der FET in dem TI-Baustein ist noch schöner, weil er keine parasitäre 
Diode zwischen Drain und Source hat, und Drain und Source vertauscht 
werden können.

Solche Pegelwandler sind ursprünglich mal von Quickswitch auf den Markt 
gekommen (Heute IDT).

Der Pullup auf der 5V-Seite des GODIL Moduls sorgt vor allem für vollen 
5V Spannungshub, um z.B. 5V HCMOS zu treiben. Als Eingangspin ist dieser 
Pullup natürlich eher suboptimal, man kann ihn zur Not auch auslöten 
(Aber dann gibts keine Garantie mehr !).
Will man den Pegelwandler nicht, kann man ihn auch mit einen 0Ohm 0603 
Widerstand brücken, siehe Schaltplan (Leider auch ohne Garantie).
Man kann nicht immer alle Fälle mit Jumpern abdecken, sonst wird so ein 
Modul Europaformat und TEUER.

Braucht man die 5V nicht, kann man das Modul auch mit 3,3V versorgen.

In VHDL kann man den Pegelwandler einfach ignorieren, d.h. man tut so 
als wär er nicht vorhanden.
Den Ausgang des FPGAs auf '1' zu setzten und den Pin hinter dem 
Pegelwandler auf '0' zu schalten ist jedoch ein KURZSCHLUSS, kann zu 
Zerstörung des Pegelwandlers oder des FPGAs führen (passiert bei 
einzelnen Signalen in der Praxis jedoch nicht).

MIKE

Autor: Randy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Der Pullup auf der 5V-Seite des GODIL Moduls sorgt vor allem für vollen
> 5V Spannungshub, um z.B. 5V HCMOS zu treiben.

Asche auf mein Haupt, der 1k5 Pullup erklärt natürlich die 3,5mA die 
gegen GND fließen. Die Bank Pullups habe ich im Schaltplan komplett 
übersehen.

> Will man den Pegelwandler nicht, kann man ihn auch mit einen 0Ohm 0603
> Widerstand brücken,

Der Pegelwandler ist mir durchaus recht, hoffe ich doch dass er die 
erste Stufe ESD o.ä. vom FPGA fern hält. Mein erstes Selbstbau-FPGA 
Board hat sich mehrmals mit heiß werdenden Spartan-2 verabschiedet. Die 
Pins gingen direkt auf den Stecker für die ADCs, vermutlich war die 
Sache zu empfindlich gegen ESD für meinen Hobbykeller.
Ich werde das Board ab jetzt mit 3,35-3,4V versorgen, die 5V sind an 
sich etwas viel für den mit 3,3V versorgten ADC...

> Den Ausgang des FPGAs auf '1' zu setzten und den Pin hinter dem
> Pegelwandler auf '0' zu schalten ist jedoch ein KURZSCHLUSS, kann zu
> Zerstörung des Pegelwandlers oder des FPGAs führen

Hmm... der Pegelwandler wird vermutlich den (Kurzschluss-)Strom nicht 
vom FPGA-Pin fern halten... so gesehen war das eXperiment schon recht 
riskant... aber ab und zu gibt es ohne Risiko keine neuen 
Erkenntnisse... so bin ich überhaupt auf die Problematik gestoßen, weil 
ich die Eingangspins nur mit einen 1k-Pulldown auf low ziehen wollte 
(was nicht ging) weil mir ein direktes Kurzschließen zu riskant erschien 
(waren ja genügend Ausgänge auf den Nachbarpins)

Vielen Dank für den Support aus erste Hand
Randy

Autor: Marcus Freiweber (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank für diese ausführliche Antwort, das erleichtert mir gerade 
die Kaufentscheidung. Ist doch hoffentlich kein Auslaufmodell? Ich frage 
nur, weil ich es auf der OHO-Webseite unter Produkte nicht finde 
(Allerdings wohl bei Trenz im Shop). Wollte nochmal zur Sicherheit 
nachfragen bevor ich zuschlage, weil ich eventuell eine Kleinserie damit 
ausrüsten möchte.

Gutes! Marcus

Autor: M.Randelzhofer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Unsere Webseite ist tatsächlich überarbeitungsbedürftig, wird gegen 
Anfang 2012 passieren - grosses FPGA-Ehrenwort ;-)

Leider ist wegen anderer Entwicklungsarbeiten wenig Zeit dafür 
geblieben.
Aber 2012 wird Alles besser...

Alle Module, auch die CPLD-Module sind sicher noch jahrelang verfügbar.
Und es wird irgendwann auch Basisboards geben...

Grüsse
MIKE Randelzhofer
OHO-Elektronik

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.