Ich würde gerne einen FPGA mit einem mikrocontroller kommunizieren lassen. Dabei will ich die pull-up Widerstände der FPGA I/O Blöcke benutzen. Mein Problem sind die spannungsunterschiede. Wenn beispielsweise die Ausgangsspannung des MCU größer ist als die des FPGA kann es doch passieren dass ein Strom durch den pull-up Widerstand in die spannungsquelle des FPGAs hineinfließt oder nicht? Wie bekomme ich die spannungsunterschiede weg sodass kein Gerät überlastet wird?
Daniel R. schrieb: > Wie bekomme ich > die spannungsunterschiede weg sodass kein Gerät überlastet wird? Mit einem Pegelwandler. Über welche Spannungen reden wir hier eigentlich? > Ich würde gerne einen FPGA mit einem mikrocontroller kommunizieren > lassen. Ich würde dafür UART oder SPI verwenden. Da braucht man keine Pull-Ups. Daniel
Daniel R. schrieb: > Wenn beispielsweise die Ausgangsspannung des MCU größer ist als die des > FPGA Du darfst dann natürlich beim uC keinen High-Pegel ausgeben. Sondern eben nur L und Z. L ist klar, Z kommt heraus, wenn der uC Pin auf Eingang geschaltet wird. BTW: für eine anständig schnelle Kommunikation ist der interne Pullup viel zu hochohmig...
Die IO-Blöcke beim FPGA können mit unterschiedlichen Spannungen betrieben werden. Guck doch mal in deinem Schaltplan nach ob dies nicht möglich ist. Ansonsten halt nen Pegelwandler.
Danke für die Antworten. Mein Plan sieht folgendermaßen aus: Ich habe eine MCU, die über I²C mit einer anderen kommuniziert. Mein FPGA sitzt dazwischen und dient dazu das Signal in beide Richtungen (leicht modifiziert) durchzuleiten. Ich lese und schreibe also von/auf beide Leitungen. MCU1 <-> FPGA <-> MCU2 Ich denke es gibt da zwei Möglichkeiten zur Kontrolle der Spannungen für die Kommunikation: Entweder müssen die MCUs und der FPGA an der selben Spannungsquelle hängen (also die FPGA output driver blöcke). Oder es müssen Pegelwandler dazwischen (sofern die Betriebsspannung der MCUs außerhalb des erlaubten Bereichs des FPGA liegt, denn bei 3.3V ist beim FPGA schluss).
Was liefert denn Dein uC an Spannung am I2C-Interface? Die Daten zieht der sicher nur auf 0 und geht ansonsten auf TriState. Du brauchst nur noch eine 3,3V kompatible Clk-Leitung. Wenn der uC clock streching kann, dann darf er diese auch nicht aktiv treiben und Du bist fein raus. Du musst nur entsprechend pullen. Wenn der uC nur Master ist, ist das gar kein Problem, denn Du kannst den Eingang mit einer Schaltung aus R+Z-Diode auf 3,3V limitieren. Wenn der FPGA auch Master sein soll, dann musst Du die Spannung eben auf uC-Niveau hochpullen. Das geht bis 5V recht gut, Du musst eben nur die Schaltung anpassen, dass beim Laststrom durch die Z-diode bei aktivem uC selbiger nicht zu sehr belastet wird. Die Anordnung wird halt nur entsprechend langsam und limitiert die mögliche Taktfrequenz. Ansonsten Pegelwandlung mit einem Transistor. Wenn Du über grössere Distanzen gehen willst, brauchts Du eh einen Leitungstreiber/Buffer und die lösen Dir Dein Problem.
:
Bearbeitet durch User
Wenn Du einen XMEGA von Atmel nimmst dann kannst Du als VCC 3,3V verwenden. Auch die FPGA Bank vom FPGA kann dann mit 3,3V versorgt werden. Somit hast Du dann CMOS 3,3V zwischen dem µC und dem FPGA.
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.