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