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


von Randy (Gast)


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_info.php?products_id=636
Dazu benutze ich das UCF File von denen
http://www.trenz-electronic.de/fileadmin/content/PDF/OHO%20Elektronik/OHO_TEMPLATES.zip
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

von user (Gast)


Lesenswert?

den pin mit 'Z' treiben

von Randy (Gast)


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

von Duke Scarring (Gast)


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?
1
-- Ausgang
2
pin_out <= '0'; -- oder
3
pin_out <= '1'; -- oder
4
pin_out <= logic_signal;
5
6
--Eingang
7
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

von Randy (Gast)


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.tsp?genericPartNumber=sn74cb3t16211&fileType=pdf&track=no
Deswegen hatte ich gehofft dass jemand in diesem Forum mit dem Board 
schon gearbeitet hat...

Randy

von Randy (Gast)


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

von MRandelzhofer (OHO-Elektronik) (Gast)


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

von Randy (Gast)


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

von Marcus Freiweber (Gast)


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

von M.Randelzhofer (Gast)


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

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.