Forum: FPGA, VHDL & Co. SSO-limits wie behandeln


von Michael W. (Gast)


Lesenswert?

Ich baue mit einem FPGA der praktisch alle IO-Pins permanent schaltet 
und bin auf die limitierte Zahl der gleichzeitig schaltenden Ausgänge 
gestoßen. Werden diese überschritten. ist laut Datenblatt mit erhöhtem 
jitter zu rechnen. Wieviel, darüber lässt man sich nicht aus.

Wie handhabe ich das nun?

Wird das bei der Simulation berücksichtigt, oder muss ich das im Kopf 
hinzuaddieren? Wie geht man da vor?

von Gustl B. (-gb-)


Lesenswert?

Ich kenne mich da null aus aber kann man dann höher takten und dann 
nicht gleichzeitig sondern versetzt schalten? Also falls du noch nicht 
am Taktlimit bist. Wenn du den Takt verdoppeln könntest dann könntest du 
versetzt schalten und die Bits für doppelt so viele Takte gesetzt 
lassen.

von Hans (Gast)


Lesenswert?

Markus W. schrieb:
> Wie handhabe ich das nun?
Messen?

> Wird das bei der Simulation berücksichtigt,
Das kann ich mir nicht vorstellen.

> oder muss ich das im Kopf
> hinzuaddieren? Wie geht man da vor?
Wieviel Jitter erlaubt denn Deine Anwendung?
Wieviele Pins willst Du denn gleichzeitig schalten?
Und warum?

Hans

von Christian R. (supachris)


Lesenswert?

Durch das resultierende Ground Bouncing kannst du noch viel spannendere 
Sachen in deine Schaltung bekommen als nur ein bissl Jitter. Im 
schlimmsten Fall startet dsas FPGA ständig neu, weil ihm das 
Bezugspotential für seine VCC abhanden kommt.

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


Lesenswert?

Markus W. schrieb:
> mit einem FPGA
Welchem FPGA? In welchem Gehäuse?
> der
das Array
> praktisch alle IO-Pins permanent schaltet
Gleichzeitig? Mit welcher Frequenz? Gegen welche Last?

von 123abc (Gast)


Lesenswert?

die Frage ist auch, wie werden diese gleichzeitig geschaltet.

1) Alle Pins von 0 auf 1, 1 auf 0.

2) Oder 50% der Pins von 0 auf 1, gleichzeitig die anderen 50% von 1 auf 
0?

Fall 1) ist sehr kritisch und hier muss auch dein Spannungsregler und 
vor allem deine Kapazitäten richtig an Ort und Stelle sein!

Fall 2) ist nicht so kritisch, da sich nach dem Schalten der Strom in 
der Summe mittelt.

Wie mein Vorredner schon fragte ist auch erstmal die Frage, was deine 
Rahmenbedingungen sind. Ist der erhöhte Jitter (5% oder 10% mehr) für 
dich wirklich von Interesse? Mir würde da eher Sorgen machen, dass die 
Spannungen zu sehr einbrechen ...

Es ist alles eine Frage des Designs.

von Christian R. (supachris)


Lesenswert?

Naja, es geht auch um das Innenleben an den IOs, im Datenblatt des FPGA 
steht wieviele Ausgänge pro IO Bank gleichzeitig schalten dürfen. Werden 
es mehr, kann es sein dass as FPGA seltsame Sachen macht. Die IO Treiber 
brauchen Strom und so eine Bank hat ja nur ein paar GND Anschlüsse.

von Michael W. (Gast)


Lesenswert?

Also hier die elektrischen Fakten:

- Es handelt sich um einen Spartan 6 FPGA.
- Es werden 8 parallele Wandler gesteuert, insgesamt 8x16 Datenleitungen
- Frequenz 125 MHz SDR
- Auslastung 100% = immer an
- Toggle Rate der Leitungen unbekannt, je nach Daten halt
- Die Ausgänge sind über alle 4 Banken verteilt; 2 Ausgänge pro Bank

Was mache ich gegen GND bounce? Mehr blocken?

von Georg A. (georga)


Lesenswert?

> Was mache ich gegen GND bounce? Mehr blocken?

Extern hilft da nichts, das Problem ist ja, dass beim Wechsel von 1 auf 
0 der interne GND ein deutliches Potential über dem echten GND bekommt 
und damit High-Pegel evtl. nicht mehr als solche erkannt werden.

Falls möglich, kannst du evtl. die Treiberstärke oder Slewrate ändern. 
Da gibts AFAIR auch irgendwo Tabellen, wo die Auswirkungen dazu drin 
stehen. Es ist auch möglich, unbenutzte IOs als Output mit fester 0 zu 
definieren und extern an GND zu hängen. Das gibt dann so einen halben 
GND-Pin mehr... Leider hat man oft keine IOs mehr übrig :/

von Michael W. (Gast)


Lesenswert?

Georg A. schrieb:
> Extern hilft da nichts, das Problem ist ja, dass beim Wechsel von 1 auf
> 0 der interne GND ein deutliches Potential über dem echten GND bekommt

Also eher ein statisches Problem, dass sich gar nicht durch jitter 
allein ausdrücken wird? Na prima! Zu meinem Erschrecken habe ich nun 
nämlich feststellen müssen, dass ich laut Tabelle nur ein Drittel der 
Ausgänge hätte bedienen dürfen. Ich werde also was tun müssen, fürchte 
ich.

Georg A. schrieb:
> Es ist auch möglich, unbenutzte IOs als Output mit fester 0 zu
> definieren und extern an GND zu hängen.
Das leuchtet mir ein, leider habe ich wenige IOs frei. Ich habe den 
kleinsten FPGA genommen. Das werde ich frühestens im redesign ändern 
können.

Momentan bleibt mir nur die Treiberleistung. Was stellt man denn da 
minimal ein? Ich treibe hochohmige Dateneingänge von den Wandlern über 
sagen wir durchschnittlich maximal 10cm Länge, eher weniger.

von Christian R. (supachris)


Lesenswert?

32 Ausgänge pro Bank sind in den meisten Fällen auch am S6 noch OK. 
Schau doch einfach ins Datenblatt (DS162) ab Seite 36, da steht alles 
was du wissen musst. Wenn du auf QuietIO und 2mA stellst kannst du 
selbst bei LVCMOS33 noch 60 Ausgänge gleichzeitig pro Bank schalten.

von Georg A. (georga)


Lesenswert?

> Also eher ein statisches Problem, dass sich gar nicht durch jitter
> allein ausdrücken wird? Na prima!

Es ist schon dynamisch *), die Induktivität zwischen internem und 
externem GND begrenzt beim schnellen "Entladen" der IO-Signale halt den 
möglichen Strom und sorgt damit für die interne Potentialanhebung. 
Jitter ist dann nur die sanfte Vorwarnung vor interner/externer 
Fehlfunktion wegen falscher Pegelerkennung. Mit Einführung der BGAs (vs. 
PQFP) ist das Problem zwar eigentlich kleiner geworden, leider sind es 
aber auch jetzt wieder mehr Pins, die man schneller schalten kann/muss 
;)

von Michael W. (Gast)


Lesenswert?

Aber "Quite IO" ist doch sicher viel zu langsam? Im Xilinx Forum wurde 
das mal thematisiert und darauf hingewiesen, dass es z.B. für LEDs sei. 
Bisher habe ich das auch nur dafür genutzt. Was anderes wäre das 
Stromlimit. Aber auch da bin ich nicht sicher, was ich einstellen kann.

Bisher habe ich immer mit 5mA-10mA und "Fast" getrieben. Wäre die Frage, 
wie ich das berechnen kann. Eine RC-Kurve klappt schon mal nicht:

Kapazitive Belastung 20 pF
Spannung zum Schalten 3V
Ladung auf der Leitung 60pC
Treiber 6mA
Dauer für Ladungsänderung = 10 ns

Was stimmt hier nicht?

von Grendel (Gast)


Lesenswert?

Sieh Dir ggf. mal die IBIS Modelle an (damit kann mans simulieren).

von Christian R. (supachris)


Lesenswert?

20p ist schon viel Last. Ich glaube die hatten mal geschrieben dass 4mA 
ungefähr einem 50 Ohm Ausgang entspricht. Was sagt denn die Tabelle im 
DS162 für dein Setup?

von Michael W. (Gast)


Lesenswert?

Simulieren wäre sicher mal interessant, aber eigentlich würde ich es 
gerne abschätzen.

Irgendwie reicht es aber heute nacht nicht mehr mit dem Denken. Momentan 
kriege ich nicht mal die Lade-Entlade-Theorie mit der Realität zusammen. 
Bei den oben angenommenen Verhältnissen kann ich normal ohne Probleme 
100 MHz Signale treiben und der Pegel ist in deutlich kürzerer Zeit 
eingeschwungen, als 10ns. Eher ein Zehntel davon. Vielleicht überschätze 
ich aber auch die Leitungskapazität.

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.