Forum: FPGA, VHDL & Co. IOBUFFER richtig beschalten


von Harald (Gast)


Angehängte Dateien:

Lesenswert?

1. Ich verwende einen Spartan 3A. Dort möchte ich einen IO-Buffer 
verwenden, jedoch ist mir aus der Hilfe nicht so ganz klar, wann der 
IO-Buffer als Eingang und wann als Ausgang beschaltet ist. Ich kann den 
IO-Buffer mit der T-Leitung zwischen Eingang und Ausgang umschalten.

2. Ich weiß bei dem Symbol auch nicht an welcher Seite jetzt die Signale 
angeschlossen werden. Ich habe Daten ein einem Speicher die ich vom FPGA 
an einen externen Chip senden möchte. Demnach muss ich den Port auf 
Ausgang umschalten. Jedoch weiß ich nicht wo am Symbol ich die Daten 
anlegen muss? Ist es der I oder der O Anschluss?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Die Dreiecke könntest du auch als Pfeile sehen:
an der flachen Seite gehen Daten rein, an der Spitze kommen sie raus...

BTW: du wirst aber nicht etwa ein ganzes FPGA-Design über den 
Schaltplaneditor beschreiben wollen?

von Harald (Gast)


Lesenswert?

Nein das mache ich natürlich nicht. Sondern ich maches immer nur mit der 
IO-Buffer, diese gehen dann auf meine VHDL-Module.

Ich mache immer ein TopDown Design, in der obersten Ebene verwende ich 
immer ein Schematics und den den Ebenen darunter VHDL-Module.

Diese finde ich übersichtlich kostet allerdings dafür auch mehr Zeit.


Dies habe ich noch gefunden:

.O(O),     // Buffer output
.IO(IO),   // Buffer inout port (connect directly to top-level port)
.I(I),     // Buffer input
.T(T)      // 3-state enable input, high=input, low=output

Demnach muss ich T = 0 für Ausgang und T = 1 als Eingang beschalten

Was mich nur wundert ist das ich mit dem T-Signal zwischen Input und 
Output umschalten kann. Jedoch wann schalte ich den Port wirklich in den 
Tristate Modus also Hochohmig?

von Klaus F. (kfalser)


Lesenswert?

Den IO-Buffer mit Tristate braucht es nur, wenn man über den gleichen 
Pin Signale einlesen UND ausgeben will.
Für reine Ausgänge gibt es OBUF und für Eingänge IBUF.
Für Busse gibt es, soweit ich mich erinnere IBUF4, IBUF8 usw.

Im allgemeinen wäre es aber zu empfehlen, den Schaltplaneditor nicht zu 
verwenden, sondern VHDL oder Verilog zu lernen.

von Christian R. (supachris)


Lesenswert?

Harald schrieb:
> Was mich nur wundert ist das ich mit dem T-Signal zwischen Input und
> Output umschalten kann. Jedoch wann schalte ich den Port wirklich in den
> Tristate Modus also Hochohmig?

Wenn T = 1 ist, ist der Pin hochohmig und gleichzeitig Eingang. Wenn du 
nur hochohmig schaltbare Ausgänge haben willst, gibts den OBUFT dafür.

von Harald (Gast)


Lesenswert?

Ich neutze wie gesagt den Schaltplan Editor auch nur für den Toplevel. 
Das möchte ich auch weiterhin so betreiben. Ich möchte über die Leitung 
ja auch Daten senden und empfangen. Dies natürlich nicht gleichzeitig 
sondern nacheinander.

Ich snde über die Leitung Daten an ein externes IC und erhalte auch 
Daten von dem externen IC über die gleiche Leitung. Deshalb muss ich 
auch den IO-Buffer verwenden.

Das externe IC besitzt einen PORT der mir signalisiert das Daten für 
mich bereitstehen. Dann muss ich vom FPGA den OE-Pin vom externen IC 
setzen. Somit wird der IO-Buffer vom externen IC auf Output gestellt. 
Gleichzeitig muss ich dann natürlich meine FPGA Dateinleigung auf 
Eingang umstellen. Jetzt stellt sich mir die Frage wie ich dies am 
besten machen ohne dabei den exteren IC und den FPGA zu zerstören, denn 
es gibt ja einen kleinen Moment wo der Buffer der FPGAs und der Buffer 
des externen ICs beide auf Ausgang geschaltet sind (auch wenn dies nur 
einige ns der Fall ist). Gehen dabei nicht die ICs defekt?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Harald schrieb:
> es gibt ja einen kleinen Moment wo der Buffer der FPGAs und der Buffer
> des externen ICs beide auf Ausgang geschaltet sind (auch wenn dies nur
> einige ns der Fall ist).
Das ist ein traditioneller Buskonflikt. Der sollte bei der Busübergabe 
aber nicht gleich ein paar ns dauern...

> Dann muss ich vom FPGA den OE-Pin vom externen IC setzen. Somit wird der
> IO-Buffer vom externen IC auf Output gestellt.
> Gleichzeitig muss ich dann natürlich meine FPGA Dateinleigung auf
> Eingang umstellen.
Gleichzeitig gibt es nicht. Was passiert hier zuerst, wenn du das 
Umschaltsignal vom FPGA parallel auf die beiden Treiber (OBUF und 
externes IC) gibst? Der von dir beschreibene Fall ist unkritisch, denn 
bis der externe Buffer auf Ausgang steht, ist das FPGA längst hochohmig. 
Interessant ist das Umschalten des FPGAs auf "Ausgabe": der OBUF 
schaltet zuerst, das externe IC bekommt es ein paar 100ps später erst 
mit. Daher sind hier kurz beide auf Ausgang geschaltet.

> Gehen dabei nicht die ICs defekt?
Nein, sie werden nur warm... ;-)

von Harald (Gast)


Lesenswert?

Wir wissen doch alle das ICs im grunde nur mit Rauch arbeiten. Arbeiten 
diese dann zu stark kommt auch schon mal der Rauch aus dem IC :-)

von Harald (Gast)


Lesenswert?

Vielen Dank schon mal für die Informationen

von Panzer H. (panzer1)


Lesenswert?

Harald schrieb:
> Das externe IC besitzt einen PORT der mir signalisiert das Daten für
> mich bereitstehen. Dann muss ich vom FPGA den OE-Pin vom externen IC
> setzen. Somit wird der IO-Buffer vom externen IC auf Output gestellt.
> Gleichzeitig muss ich dann natürlich meine FPGA Dateinleigung auf
> Eingang umstellen. Jetzt stellt sich mir die Frage wie ich dies am
> besten machen ohne dabei den exteren IC und den FPGA zu zerstören, denn
> es gibt ja einen kleinen Moment wo der Buffer der FPGAs und der Buffer
> des externen ICs beide auf Ausgang geschaltet sind (auch wenn dies nur
> einige ns der Fall ist). Gehen dabei nicht die ICs defekt?

Nö.

Das ist doch ein sauberes Handshake!
Ext IC gibt einen Request ab.
FPGA zieht am OE und setzt den Tristate gleichzeitig auf Eingang.
NACHDEM OE gesetzt ist, wird der ext IC erst auf Ausgang gesetzt.
Es sollte keine Probleme geben, dass beide Ausgänge gleichzeitig 
treiben.

von Harald (Gast)


Lesenswert?

Wie Lothar Miller schon geschrieben hat wird erst beim Umschalten der 
FPGA-Pins auf Ausgang das Problem auftauchen, da der FPGA zuerst die 
FPGA-Pins auf Ausgangs setzt und das OE-Signal für den externen IC 
benötigt ja eine gewisse Zeit zum externen IC. In dieser Zeit sind bei 
Ports (FPGA und externes IC auf Ausgang gestellt) Erst wenn das externe 
IC seine Ports wieder auf Eingang umgeschaltet hat ist die Gefahr 
gebannt.

von Lattice User (Gast)


Lesenswert?

Da moderne IC Konstantsromquellen und -senken auf den Ausgängen haben 
kann ausgeschlossen werden das da etwas abraucht.

Aber es fliest während der Überlappzeit natürlich der Maximalstrom, das 
geht auf Kosten des Stromverbrauchs, und bei hohen Frequenzen wirds auch 
deutlich wärmer, hat ja Lothar schon erwähnt.

Ausserdem ist zu beachten dass die Stromänderung beim Abschalten eines 
der beiden Treiber Störungen in Nachbarleutungen induzieren kann.

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.