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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.