Ich möchte mittels der ISERDES2 Blöcke in einem AMD Spartan 6 FPGA einen Time to Digital Converter realisieren. Dazu habe ich extern eine externe Clock von 500MHz und ein, aus einem Analogsignal erzeugtes, Stop event, sowie ein Start event. Das Start Signal, sowie das Stop Signal sind nicht Phasenstarr zur 500MHz Serdes Clock. Nun möchte der FPGA aber gewisse Hold Zeiten haben und die müssen eingehalten werden, damit das mit metastabil wird. Meine Idee wäre nun sowas wie einen ADCMP561 vorzuschalten wo ich Latch Enable dann jeweils an die 500MHz verbinde. Eine weitere Möglichkeit wäre die Serdes Clock Phasenstarr zum Start Signal zu machen, das immer periodisch ist und eine feste Frequenz hat. Wären das Lösungsansätze die Sinn machen?
:
Verschoben durch Moderator
Ein Komparator ist sinnvoll um extern eine Triggerschwelle für Dein Signal festzulegen und differentiell an die FPGA Pins zu gehen. Sowas wie der MAX9378 reicht aber völlig https://www.analog.com/media/en/technical-documentation/data-sheets/max9377-max9378.pdf. Mit welcher Zeitauflösung willst Du messen? 500 ps geht ganz gut. Genauer wird's mit den ISERDES eher nix. Dein Analogsignal wird auch zum 500 MHz Takt asynchron sein. Also verlagerst Du das Problem mit verletzten Setup- und Hold-Zeiten nur auf ein anderes Bauteil.
:
Bearbeitet durch User
Cartman E. schrieb: >> AMD Spartan 6 > > Nanu. > Hab ich was verpasst? ☺ Ja. Firmen werden aufgekauft. https://www.amd.com/de/products/adaptive-socs-and-fpgas/fpga/spartan-6.html
Andreas H. schrieb: > Ein Komparator ist sinnvoll um extern eine Triggerschwelle für > Dein > Signal festzulegen und ... Die differentiellen Eingänge am FPGA sind doch schon als Komperatoren verwendbar...
Andreas H. schrieb: > Cartman E. schrieb: >>> AMD Spartan 6 >> >> Nanu. >> Hab ich was verpasst? ☺ > > Ja. Firmen werden aufgekauft. > https://www.amd.com/de/products/adaptive-socs-and-fpgas/fpga/spartan-6.html Ach so. ☺ Mein letzter Spartan war ein 3A.
Rick schrieb: > Die differentiellen Eingänge am FPGA sind doch schon als Komperatoren > verwendbar... Das stimmt natürlich. Der Vorteil liegt eher darin, dass die Input Common Mode Voltage der Komperatoren eventuell besser zum Eingangssignal passt. Der Spartan 6 hätte gerne 0,3 V - 2,35 V. Die MAX9378 gehen bis 50 mV an GND bzw. VCC. Hängt aber vom Eingangssignal ab, ob das relevant ist. Außerdem sind sie schneller gewechselt, wenn man die Absolute Maximum Ratings doch mal überreizt hat. ;) Und vielleicht will man schon dicht an der Signalquelle auf LVDS wechseln anstatt erst am FPGA.
Es gibt auf mikrocontroller.net das Unterforum FPGA ( https://www.mikrocontroller.net/forum/fpga-vhdl-cpld ) da ist mehr Know-How zu diesem Thema zu erwarten. Metastabil kann man nicht verhindern, was man aber verhindern kann ist das metastaboile Zustände im FPGA weiterpropagieren und dort für Chaos sorgen. Man wird das also einsynchronisieren müßen, das kann man mit einem von der Quelle mitgelieferten Taktsignal (source-synchronous) machen. Das ist wohl das was du mit phasenstarren Clock meinst. Bei manchen Kommunikationskanälen wie bei den MGT kann man den Takt aus dem eigentlcihen Signal zurückgewinnen, vielleicht schaust du dir das mal an (clock recovery). Und dann gibt es oft delay elemente in den Eingängen mit denen man das signal um Bruchteile einer nanosekunde verschieben kann um do eine setup/hold-Verletzung zu verhindern (IO-Delay). Am besten mal das Datenblatt zu diesen Blöcken durchstudieren und die passenden Application Notes dazu, Das wird zwar ein Wochenende Zeit kosten ist aber nötig wenn man ein Verständnis für das was man mit dem FPGA tut erlangen will: * https://cdn.hackaday.io/files/21333912711072/ug381-%20spartan%206%20select%20io%20resources.pdf (UG381) bspw. S.70 ff u. S.77ff * https://docs.amd.com/api/khub/documents/9TuR8zuWNIUpLp0XvdEZDg/content (XAPP1064) Da ein paar deutschsprachige Schnipsel zum Thema: https://www.ib-dck.de/hauptseite/fpga/
Bradward B. schrieb: > Metastabil kann man nicht verhindern, was man aber verhindern kann ist > das metastaboile Zustände im FPGA weiterpropagieren und dort für Chaos > sorgen. Danke für die Hilfe soweit. Die Clock für das Startsignal kann ich per PLL phasenstarr zur SERDES Clock machen. Das wäre möglich, da dieses Signal periodisch ist. Das Stopsignal wird aber immer asynchron bleiben. Du hast also recht, dass es darum geht metastabile zustände am Eingang des FPGA für das Stopsignal zu erlauben aber eben nicht auf weitere Stufen zu übertragen. Das SelectIO Datenblatt habe ich mir schon angesehen. Wenn man den ISERDES Block benutzt kann man da keine Synchronisationslogik vorschalten. Extern eine Flip-Flop Kette zur Synchronisation vorschalten wäre schon schwierig bei 500MHz wird die Auswahl schon eng.
Ich würd hier ein Gray encoded counter für die eigentliche Messung verwenden, damit ist der Fehler durch Metastabilität/Synchronsiereffekte gering, da nur 2 FF auf das mglw. asynchrone Stoppsignal regieren müßen. https://www.eetimes.com/gray-code-fundamentals-part-2/
Nochmal eine Idee. Im Grunde ist der SERDES Empfänger schon eine Synchronisierungskette. Wenn ein paar bits metastabil sind kann ich damit leben das erwarte ich ja auch wenn ein Stopsignal asynchron kommt. Es darf eben nur nicht der ganze FPGA völlig undefiniertes tun. Man senkt mit einer FF Kette ja eben nur die wahrscheinlichkeit für metastabile zustände. Hat hier jemand Erfahrung ob es eben reichen kann das asynchrone Signal einfach auszuwerten? Mit dem entsprechenden Jitter muss ich dann eben leben.
Die Stopps asynchron mit ISERDES zu samplen funktioniert einwandfrei. Die ISERDES haben intern schon mehrstufige Flipflops. Die Ausgabe ist mit 4 oder 8 Bit parallel. 500 ps Auflösung funktioniert mit dem richtigen Speedgrade und Interleaving zweier ISERDES. Das langsamere Speedgrade kann offiziell nur irgendwas um 925 MHz Samplerate am Pin. Die Warnung kann man aber auch ignorieren. Der Stopppuls sollte halt sicher breiter als 500 ps sein, damit man keinen verpasst.
Andreas H. schrieb: > Die Stopps asynchron mit ISERDES zu samplen funktioniert einwandfrei. > Die ISERDES haben intern schon mehrstufige Flipflops. Die Ausgabe ist > mit 4 oder 8 Bit parallel. 500 ps Auflösung funktioniert mit dem > richtigen Speedgrade und Interleaving zweier ISERDES. Das langsamere > Speedgrade kann offiziell nur irgendwas um 925 MHz Samplerate am Pin. > Die Warnung kann man aber auch ignorieren. > > Der Stopppuls sollte halt sicher breiter als 500 ps sein, damit man > keinen verpasst. Die Stopevents sind im Bereich 10ns breit aber wichtiger ist nur die Auflösung der Zeit zwischen Start und Stop.
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.