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
> 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
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
> 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
>> 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
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
> 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
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
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