Kommunikation: FPGA <-> Mikrocontroller

OP #3792907
Lesenswert?

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?
Moderator (Firma: Titel) Persönliche Seite #3793498
Lesenswert?

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...
OP #3795327
Lesenswert?

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).
Persönliche Seite #3795635
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren