Wie funktioniert CLKOUT auf dem LTC2323-12 ADC im „High-Speed“-Geschwindigkeitsmodus?

http://www.farnell.com/datasheets/1833817.pdf

Mir wurde eine Aufgabe zugewiesen, bei der ich einen LTC2323-12 ADC (Analog-Digital-Wandler) an ein FPGA anschließen muss.

Beim Lesen des LTC2323-12-Datenblatts scheint es zwei Möglichkeiten zur Steuerung zu geben. Ein Weg ist über den SCK-Eingang (clock-like), der Zyklus für Zyklus die ADC-Ergebnisse aus dem ADC-zu-SDO-Port verschiebt.

Der andere Weg wird als "hohe Geschwindigkeit" beschrieben, die "die Timing-Anforderungen für das FPGA erleichtern kann" (würden Sie das für mich klären?), Diese letzte Methode erfolgt durch das CLKOUT-Signal, das scheinbar eine Uhr ist, die herauskommt des ADC, der mit den ADC-Ergebnissen aus dem SDO-Port übereinstimmt (oder zwischenspeichert). Ist das korrekt? Habe ich es richtig verstanden?

Also muss ich das FPGA-Modul entwerfen, um das CNV-Startsignal auszugeben, es dann für TCNVH-Nanosekunden behalten, es dann freigeben und dann einfach warten, bis ADC AUTOMATISCH das erste CLKOUT sendet, damit ich es registrieren und 11 weitere zählen kann dieser CLKOUT, während ich die SDO-Daten bei jedem dieser CLKOUT-Zyklen an meine eigenen Register weitergebe?

Dann muss ich nach den letzten 14 CLKOUT-Takten einen Zähler entwerfen, der ein gültiges Signal auslöst, das einen weiteren Zähler von TDSCKLCNVH-Nanosekunden startet und gleichzeitig aus diesem Registerregister und einem "Finishing" -Signal herausportiert (also ein weiteres Top-Modul mit dem gleichen Takt wie mein FPGA-Modul, kann diese Signale in einem anderen Moment verwenden.

Ich möchte Sie bitten, mich zu korrigieren, wenn ich etwas über das Verhalten des LTC2323-12 ADC und die Vorgehensweise falsch verstanden habe. Vielen Dank im Voraus.

Antworten (2)

Der andere Weg wird als "hohe Geschwindigkeit" beschrieben, die "die Timing-Anforderungen für das FPGA erleichtern kann" (würden Sie das für mich klären?), Diese letzte Methode erfolgt durch das CLKOUT-Signal, das scheinbar eine Uhr ist, die herauskommt des ADC, der mit den ADC-Ergebnissen aus dem SDO-Port übereinstimmt (oder zwischenspeichert). Ist das korrekt? Habe ich es richtig verstanden?

Ja, das ist richtig. Ihr Datenempfänger kann CLKOUT verwenden, um die vom ADC kommenden Daten zwischenzuspeichern. Das CLKOUT-Signal und der Datenausgang können durch PCB-Spuren verzögert werden, die das FPGA (Empfänger) speisen, und wenn beide am ADC erzeugt und im Allgemeinen über ähnliche Pfade zum FPGA geleitet werden, bleiben sie synchron, egal ob es sich um Millimeter oder mehrere Zentimeter handelt zwischen ADC und FPGA.

Die SCK-Leitung kommt von Ihrem FPGA, und wenn sie zum Einklinken Ihrer digitalen Daten verwendet wurde, gibt es eine Taktverzögerung beim ADC und eine Verzögerung beim Zurückkommen der Daten, und dies kann (auf längeren PCB-Spuren) bedeuten, dass Sie gewinnen. t saubere Daten speichern.

Also muss ich das FPGA-Modul entwerfen, um das CNV-Startsignal auszugeben, es dann für TCNVH-Nanosekunden behalten, es dann freigeben und dann einfach warten, bis ADC AUTOMATISCH das erste CLKOUT sendet, damit ich es registrieren und 11 weitere zählen kann dieser CLKOUT, während ich die SDO-Daten bei jedem dieser CLKOUT-Zyklen an meine eigenen Register weitergebe?

Ja, um eine optimale Hochgeschwindigkeitsleistung auf längeren Leiterbahnen zu erzielen.

Dann muss ich nach den letzten 14 CLKOUT-Takten einen Zähler entwerfen, der ein gültiges Signal auslöst, das einen weiteren Zähler von TDSCKLCNVH Nanosekunden startet

Geben Sie hier die Bildbeschreibung ein

Ja, gemäß dem obigen Timing-Diagramm (dem ich auch ein paar Mindesttimings hinzugefügt habe).

Wenn ich also CLKOUT verwende, muss ich mich nicht um SCK-Signale kümmern (sie ignorieren), ... aber ich sollte einige Verzögerungszyklen auf dem FPGA-ADC-Controller-Modul FSM hinzufügen (wie ein Zähler mit Äquivalent von 2 Nanosekunden), bevor der SDO-Inhalt an ein lokales Register weitergegeben wird und so weiter, mit den nächsten CLKOUTs. ist es richtig?
Sie müssen natürlich immer noch SCK bereitstellen, aber im Wesentlichen ja. Sie könnten die Daten auch an der steigenden Flanke von CLKOUT eintakten, wie es aussieht.
danke Andy, ich frage mich immer noch das SCK-Signal, wie soll ich es bereitstellen? Denn jetzt, wo CLKOUT mir automatisch die Uhr gibt, sehe ich nicht, warum sollte ich mir die Mühe machen, sie von fpga aus zu steuern, verstehen Sie, was ich meine? und letzte Frage: Wenn ich bereits während des Posedge von CLOKOUT gültige Daten erhalten kann, gibt es einen Vorteil, wenn ich es auf Negede mache, denke ich, dass es aus Codierungsperspektive einfacher ist, die Verzögerung von 2 ns wegzulassen.
Sie müssen immer noch SCK füttern.

Dieses Gerät erfordert einen ziemlich schnellen Schnittstellentakt für eine dauerhafte Leistung von 5 MS/s.

Ich reproduziere das Zeitdiagramm, damit ich es durchsprechen kann:

LTC2323-12 Timing

CNV (wie Sie richtig sagen) löst eine Konvertierung aus und muss lange genug hoch gehalten werden, damit die internen Sampler das Signal erfassen können. 35 ns in diesem speziellen Fall.

Sie müssen dann die SCK-Ruhezeit abwarten, bis die CNV niedrig wird (10 ns), bevor Sie SCK zum ADC treiben.

Sie müssen SCK dann 14 Mal fahren, um die Daten herauszubewegen; Der Schlüssel hier ist, dass CLKOUT eine Ausgabeversion Ihres SCK ist, die an den Ausgabedaten ausgerichtet ist , sodass Sie sich nicht um Zeitverschiebungen bei der Rundreise kümmern müssen.

Sie müssen SCK zum ADC treiben; Wenn Sie ziemlich schnell fahren, wird Ihr Ausgangs-SCK bei T0 irgendwann T0 + x am ADC ankommen und die Daten werden bei T0 + 2x + Datenverzögerung bei Ihnen zurückkommen, und Ihr FPGA kann durchaus ungültige Daten erhalten.

Wenn Sie sich das Datenblatt genau ansehen, erscheint Data Out auf den ADC-Pins spätestens 2 ns nach SCK in und CLKOUT wird nicht früher als 2,5 ns nach SCK angezeigt.

Das bedeutet, dass der empfangene Takt (unter der Annahme übereinstimmender Spurlängen) frühestens 500 ps nach den Daten vom ADC zurückkommt ; das liegt wahrscheinlich leicht innerhalb der Einrichtungszeit Ihrer Eingabe (dies könnte verwendet werden, um eine Timing-Closure-Regel zu bilden).

(Ich musste Softwarespiele mit einigen der LTC ADC-Schnittstellen spielen, da sie gelegentlich etwas ungewöhnlich sein können.)