Hallo zusammen,
weil das doch recht speziell ist frage ich hier.
Ich plane den Bau einer Platine mit FPGA und schnellem ADC. Der ADC wird
ein HMCAD1511 mit maximal 1 GSample/s. In dessen Datenblatt
https://www.analog.com/media/en/technical-documentation/data-sheets/hmcad1511.pdf
auf Seite 4 ist der Takteingang beschrieben. Und zwar kann ich LVDS
leider nur bis 700 MHz verwenden.
Jetzt möchte ich extern aber keinn festen Oszillator hinsetzen, sondern
ich möchte extern den Abtasttakt verändern können. Einfach als
Sicherheit damit ich den Takt reduzieren kann wenn das bei 1 GSample
nicht so funktioniert wie ich will. Da ist ein langsamerer Takt auch zum
Debugging ganz sinnvoll wie ich finde. Bei langsameren ADCs hatte ich
bisher einen Taktgeber und dann einen Taktteiler wie der AD9508
verwenden, aber der kann nix schnelleres als LVDS. Und wenn ich kein
LVDS verwenden kann müsste ich ja LVPECL verwenden wie ich das sehe. Da
brauchen dann so Taktteiler ICs richtig viel Strom, meistens, es gibt
auch welche wie den AD9515https://www.analog.com/media/en/technical-documentation/data-sheets/AD9515.pdf
die mit relativ wenig Strom auskommen.
Meine Entscheidung ist jetzt zwischen einer LVPECL Festtaktquelle und
Taktteiler und einer programmierbaren LVPECL Taktquelle wie dem Si570
https://www.silabs.com/documents/public/data-sheets/si570.pdf .
Wie würdet ihr das machen und warum?
Ich habe mir natürlich auch EvalBoards von diversen ADCs angeguckt, aber
die haben eigentlich immer nur einen externen Takteingang und selbst
keine Taktquelle auf dem Board.
Edit:
Laut hier
https://ez.analog.com/data_converters/high-speed_adcs/f/q-a/116153/hmcad1511-lvpecl-clock-and-analog-input-specs
ist LVDS schon OK wenn der Hub groß genug bleibt bei hohen Frequenzen
und wenn nicht dann bekommt man eben mehr Jitter drauf.
Beim AD9508 kann man den LVDS Strom einstellen:
Sehe ich das richtig, dass ich dann a) bei hohen Frequenzen die LVDS
Amplitude seigern und b) auch HSTL verwenden kann um den ADC Eingang zu
treiben?
Danke!
Weshalb soll LVDS bei 700MHz enden. Es gibt FPGA, die machen 1260 MBit,
1520 .. 10GBit. Irgendwo wird die Schnittstelle aendern. Da musst du
dann eben die Passende verwenden. Du bist nicht der Erste, der einen
schnellen ADC an ein FPGA haengt. Woran denn sonst ?
Es geht hier nicht um die Datenverbindung zwischen ADC und FPGA sondern
um den Takt, den der ADC bekommt. Und dazu steht im Datenblatt des ADCs,
dass LVDS nur bis 700 MHz geeignet ist.
Aber gut, der ADC hat AC gekoppelte Takteingänge und akzeptiert
verschiedene Standards.
Ich könnte also:
Eine LVPECL Clock verwenden, eine PLL mit LVPECL Ausgang, oder einen
Stein bei dem ich den LVDS Strom etwas erhöhen kann um große Amplitude
und steile Flanken zu bekommen.
Leider gibt es kaum Oszillatoren mit 1 GHz und LVPECL und PLLs gibt es
zwar, aber die brauchen ordentlich Strom und sehen von der Bedienung her
eher kompliziert aus. Die haben viele Register in die Werte geschrieben
werden müssen von denen man erstmal verstanden haben muss wir der
entsprechende PLL IC funktioniert.
Ich habe mich schon so halb für den XLP736A00000000X entschieden. Aber
auch nur weil ich eben nicht weiß wie man so einen ADC typischerweise
taktet.
Vergiss alle rumspielereien mit dem Takt. Wenn du viel SNR brauchst muss
der Takt so jitterarm als möglich sein. Also "Quarzoszillator -> ADC",
vielleicht mit Abzweig zum FPGA, vielleicht hat der ADC einen
Taktausgang für den FPGA. Sonst nichts. keine Teiler, PLLs, SI570.
Produziert alles viel zu viel Jitter, und auch zu viel
Breitbandrauschen. Ja, auch Rauschen ist bei einem Taktsignal wichtig,
auch wenn manche Leute der Meinung sind es wäre ein digitales Signal. ->
Der Takt ist aber ein analoges Signal und faltet sich in das
ADC-Ausgangssignal. Deswegen muss der so störarm als möglich sein und
das in der vollen Bandbreite die der ADC sehen kann.
Das ist mir alles klar, aber der Jitter ist bei Quarzoszillatoren nicht
am geringsten. Es gibt PLLs mit extrem geringem Phasenrauschen und auch
der Si570 ist da ziemlich gut. Der Si570 hat trotz eingebauter PLL sogar
ein geringeres Phasenrauschen als der XLP736A00000000X ohne PLL.
Das ist ja der Grund warum ich hier frage, das ist nicht so einfach und
ich weiß nicht was man typischerweise als Taktquelle verwendet.
> Und noch eine PLL mit geringem Rauschen die auch LVPECL kann. Sieht aber> kompliziert in der Ansteuerung aus.> https://www.analog.com/en/products/hmc1035.html
Ok, hätte nicht gedacht dass es neuerdings Taktgeneratoren mit variabler
Frequenz gibt die so gut sind dass man damit ADC-Takt erzeugen kann. Da
hat sich also sie 15 Jahre einiges getan seit ich das letzte mal konkret
sowas (mit-)gebaut habe. Damals war Taktgenerator mit fixer Frequenz das
einzige bei dem der Jitter niedrig genug war.
Bei der hohen Frequenz (1GHz Takt für den ADC) würde ich einfach mit
Sinus rein gehen wenn der ADC das im Datenblatt erlaubt. Die Flanken
sind eh so lang dass das Richtung Trapez geht selbst wenn man ein
Rechteck probiert. Der Unterschied zum Sinus ist dann akademisch. Und
nimm die Beschaltung mit Trafos zum symmetrisch ansteuern wenn sowas im
Datenblatt ist.
OK, aber wo bekomme ich die Sinusquelle her? Ich möchte das direkt mit
auf die Platine setzen.
Wenn ich schon ein differentielles Signal wie LVPECL verwende, dann
brauche ich doch keinen Trafo sondern nur eine Terminierung?
Hm. Danke. Jetzt bin ich doch recht unsicher. Das ist nur ein 8 Bit ADC,
ich kann da nicht wirklich abschätzen was da sinnvoll ist. So ein
kleiner LVPECL Oszillator ist deutlich kleiner, braucht weniger Strom
und auch weniger Bauteile am ADC-Eingang. Ich möchte da also auch kein
Overengeneering betreiben sondern suche nach der Lösung die ein Profi
bauen würde wenn er damit z. B. ein Oszilloskop bauen würde wofür der
ADC ja gedacht ist.
Im Siglent 1000x
https://www.flickr.com/photos/eevblog/21651872371/in/dateposted-public
sehe ich keinen tollen Oszillator, dafür einen Synthesizer ADF4360.
Ja, die messen aber alle erst ab 12 KHz. Das ganze schöne 1/f-Rauschen
fällt dabei unter den Tisch. Das macht nun mal den Löwenanteil aus.
Bei Telekom-Anwendungen stört das nicht.
Gerhard
In irgendeiner LTC AppNote wird vorgerechnet, wie wenig Phasenrauschen
ein passender Oszillator für bestimmte Werte eines ADC haben muß.
Irgendwie paßt dein Wissen nicht zu deinen Ambitionen.
So eine Appnote wurde ein paar Beiträge weiter oben verlinkt.
Abdul K. schrieb:> Irgendwie paßt dein Wissen nicht zu deinen Ambitionen.
Nun wenn man immer nur Dinge macht die man schon kann, dann lernt man
nicht dazu. Und weil ich das hier eben noch nicht gemacht habe habe ich
Fragen gestellt von denen der Großteil weiterhin unbeantwortet ist. Wenn
du das also alles schon gemacht hast und weißt wie das geht kannst du
gerne die Fragen aus dem Thread beantworten.
Diese PLLs haben oft sehr viele Register die beschrieben werden können
und teilweise auch werden müssen. Gibt es da ein schönes Tool in dem man
sagt was man haben möchte und das dann die Speicherinhalte ausgibt die
man schreiben muss?
Eigentlich müsste das ja die Software von so China PLL Modulen machen.
Da stellt man am PC was ein und das wird dann über SPI in den IC
geschrieben. Gibt es das in quelloffen?
Gustl B. schrieb:> Gibt es da ein schönes Tool in dem man> sagt was man haben möchte und das dann die Speicherinhalte ausgibt die> man schreiben muss?
Ja scheint so als wäre heute dein Glückstag!
Gibt es von AD zB.
ADIsim
ADF435x
mfg
Gustl B. schrieb:> Wie würdet ihr das machen und warum?
Du solltest als erstes Anforderungen festlegen und dann abschätzen, wie
gut Dein Sampling-Taktsignal im Hinblick auf Phasenrauschen bzw. Jitter
und Stabilität sein muss.
Erster Anhaltspunkt: Die Spezifikation des Aperture Jitter des HMCAD1511
ist 150 fs(rms) (mit "one bit set to ‘1’ in jitter_ctrl<7:0>"). Ein
besseres Sampling-Taktsignal wäre also ohnehin vergeblich, denn es gilt
für gen gesamten RMS-Jitter
wobei τ_aperture der RMS-Aperture-Jitter des ADC ist, und τ_clk der
RMS-Jitter des Sampling-Taktsignals.
Wie auch im Datenblatt nachzulesen ist der Jitter-Anteil am SNR für
einen Breitband-RMS-Jitter τ_rms des Sampling-Taktsignals gegeben durch
für ein sinusförmiges Eingangssignal mit der Frequenz f, bezogen auf die
volle Bandbreite. Damit kannst Du anhand Deines geforderten SNR dann
τ_rms abschätzen. Man beachte die Abhängigkeit des Jitter-Anteils des
SNR von der Frequenz; diese ist bestimmend für die Anforderungen an das
Sampling-Taktsignal.
Der Jitter des Taktsignals liefert natürlich nur einen Beitrag zum
Gesamt-SNR des ADC, u.a. das Quantisierungs- und das thermische Rauschen
kommen noch hinzu.
Alles weitere hängt davon ab, was für ein System Du am entwickeln bist,
und wie der Datenstrom des ADC weiterverarbeitet wird. Digitales Filtern
z.B. wird den SNR verbessern, und zwar um
Für manche Anwendungen mag es nötig sein, sich die spektrale
Leistungsdichte des Phasenrauschens des Sampling-Taktsignals (und nicht
nur den Breitband-RMS-Jitter) genauer anzuschauen und damit das System
auszulegen, wenn es z.B. um Blocking bei SDRs geht, siehe:
https://www.ti.com/lit/an/slyt705/slyt705.pdf?ts=1593552127437> Meine Entscheidung ist jetzt zwischen einer LVPECL Festtaktquelle und> Taktteiler und einer programmierbaren LVPECL Taktquelle
Du solltest das Sampling-Taktsignal auf jeden Fall differentiell mit
symmetrischen Leitungen zuführen, und nicht als Sinus mit TCXO o.ä., wie
oben vorgeschlagen. Wenn das SNR wichtig ist, darf das Taktsignal nicht
in den Analogeingang des ADC einkoppeln. In der Hinsicht und auch im
Hinblick auf EMV sind symmetrische Leitungen vorteilhaft. Bezüglich des
Jitter sagt das Datenblatt des HMCAD1511 außerdem: "CMOS and sine wave
clock inputs will result in slightly degraded jitter performance."
Gustl B. schrieb:> Diese PLLs haben oft sehr viele Register die beschrieben werden können> und teilweise auch werden müssen. Gibt es da ein schönes Tool in dem man> sagt was man haben möchte und das dann die Speicherinhalte ausgibt die> man schreiben muss?
Wie schon erwähnt haben manche Hersteller Tools dafür. So kompliziert
sind die aber meist nicht, und man hat das schnell selber implementiert.
Wenn man im Betrieb an den Parametern drehen will, muss man es ohnehin
selber machen. Ansonsten bieten einige Hersteller auch fertige
Code-Schnipsel. Musst Du den Sampling-Takt denn überhaupt mit hoher so
Auflösung einstellen können?
Mario H. schrieb:> Du solltest als erstes Anforderungen festlegen und dann abschätzen, wie> gut Dein Sampling-Taktsignal im Hinblick auf Phasenrauschen bzw. Jitter> und Stabilität sein muss.
Vielen Dank für deine sehr ausführliche Antwort! Ich glaube hier liegt
ein Missverständnis vor und ich bin daran vermutlich auch mit schuld.
Mir geht es nicht darum eine möglichst rauscharme Lösung zu bauen. Wenn
es rauscharm ist, dann ist das gut, aber die Genauigkeit ist hier nicht
wirklich wichtig. Ganz egal ist sie natürlich auch nicht.
Ich habe den Tread aufgemacht, weil ich schlicht irgendwie den ADC
takten muss und das nicht über ein zusätzliches externes Gerät machen
möchte. Ausserdem möchte ich keine zu aufwändige/teure Lösung aber auch
keine Lösung die sehr schlecht ist. Daher habe ich nach dem gefragt wie
man das eben typischerweise machen würde. Klar das hängt von den
Anforderungen ab, die sind hier eher niedrig.
Mario H. schrieb:> Die Spezifikation des Aperture Jitter des HMCAD1511> ist 150 fs(rms) (mit "one bit set to ‘1’ in jitter_ctrl<7:0>"). Ein> besseres Sampling-Taktsignal wäre also ohnehin vergeblich,
Sehe ich richtig, dass sich die Jitter addieren? Also der vom ADC und
der der Taktquelle?
Mario H. schrieb:> sinusförmiges Eingangssignal mit der Frequenz f
Nächster Punkt^^:
Ich habe gar kein sinusförmiges Eingangssignal sondern einen einzelnen
Impuls. Klar auch den kann man darstellen aus vielen Sinussignalen. Für
mich ist unklar ob der Jitter überhaupt wichtig ist wenn ich gar nicht
an der Frequenz sondern nur an der Höhe des Impulses interessiert bin?
Der Impuls kommt ja zu einem beliebigen Zeitpunkt. Und egal ob meine
Abtastpunkte jetzt äquidistant sind oder nicht, es ist immer
unwahrscheinlich, dass ich genau das Maximum des Impulses erfasse. Aber
ich glaube nicht, dass die Wahrscheinlichkeit das Maximum zu treffen
dadurch steigt, dass die Abtastpunkte äquidistant sind.
Mario H. schrieb:> was für ein System Du am entwickeln bist,> und wie der Datenstrom des ADC weiterverarbeitet wird. Digitales Filtern> z.B. wird den SNR verbessern,
Exakt das kommt dann ins Spiel. Eben weil es unwahrscheinlich ist, dass
ich das Maximum treffe möchte ich virtuell die Abtastrate erhöhen. Ich
habe mich deshalb für einen dickeren Einsteiger FPGA entschieden. Da
möchte ich aus den 1 GSample/s dann 4 GSample/s machen und das dann
Tiefass filtern. auf < F_Sample/8. Dann bekomme ich Werte die näher am
tatsächlichen Maximum liegen. Allerdings erzeugt das Filter nur dann ein
realitätsnahes Signal wenn die Abtastpunkte äquidistant waren.
Mario H. schrieb:> Du solltest das Sampling-Tanksignal auf jeden Fall differentiell mit> symmetrischen Leitungen zuführen
Der Meinung bin ich auch. Das spart mir Bauteile und geht bei dem ADC
wunderbar. Die Eingänge sind im ADC AC-gekoppelt, ich kann also den
DC-Offset von meinem differentiellen Taktsignal wählen wie ich will.
Hauptsache ist, dass der Hub groß genug ist und die Flanken sehr steil
sind. Und das erfüllt LVPECL.
Mario H. schrieb:> Wenn das SNR wichtig ist, darf das Taktsignal nicht> in den Analogeingang des ADC einkoppeln.
Wie wichtig das ist kann ich kaum abschätzen, ich würde sagen das ist
eher unwichtig. Ich werde im Layout aber trotzdem darauf achten und
Viafencing betreiben.
Mario H. schrieb:> So kompliziert> sind die aber meist nicht, und man hat das schnell selber implementiert.> Wenn man im Betrieb an den Parametern drehen will, muss man es ohnehin> selber machen. Ansonsten bieten einige Hersteller auch fertige> Code-Schnipsel. Musst Du den Sampling-Takt denn überhaupt mit hoher so> Auflösung einstellen können?
Für mich als Laie sieht das alles erstmal kompliziert aus. Aber so ist
das eben wenn man neue Dinge anfängt. Nein, ich muss den Takt im Betrieb
nicht anpassen.
Ich wollte das zwar zuerst mal machen um den ADC bei geringeren Takten
zu betreiben, aber da hatte ich noch nicht gelesen, dass der ADC einen
Taktteiler eingebaut hat. Mir genügt also ein fester externer Takt.
Gustl B. schrieb:> Sehe ich richtig, dass sich die Jitter addieren? Also der vom ADC und> der der Taktquelle?
Der gesamte RMS-Jitter ist die Quadratwurzel aus der Summe der Quadrate
der Beiträge, wegen der Definition des quadratischen Mittelwertes. Eben
die Formel in Beitrag "Re: Takten eines schnellen ADCs".
> Ich habe gar kein sinusförmiges Eingangssignal sondern einen einzelnen> Impuls. Klar auch den kann man darstellen aus vielen Sinussignalen. Für> mich ist unklar ob der Jitter überhaupt wichtig ist wenn ich gar nicht> an der Frequenz sondern nur an der Höhe des Impulses interessiert bin?
Wenn es um Impulse geht, nähert man sich dem Problem am besten im
Zeitbereich. Für ein Signal v(t) am Eingang gilt folgende Abschätzung:
Wenn die Länge des Unsicherheitsintervalls des Sampling-Zeitpunkts dt
beträgt, ist die Unsicherheit des Samples
mit v' der Ableitung von v. Entscheidend ist also der Anstieg des
Eingangssignals. Wenn der Impuls ein hinreichend langes und flaches Dach
hat, gilt für Zeiten t im Bereich des Dachs v'(t)=0. Damit spielt der
Jitter in der Tat keine bzw. nur eine untergeordnete Rolle, wenn nur die
Impulshöhe interessiert (der Jitter erhöht natürlich trotzdem den
Rauschteppich des Systems).
> Der Impuls kommt ja zu einem beliebigen Zeitpunkt. Und egal ob meine> Abtastpunkte jetzt äquidistant sind oder nicht, es ist immer> unwahrscheinlich, dass ich genau das Maximum des Impulses erfasse. Aber> ich glaube nicht, dass die Wahrscheinlichkeit das Maximum zu treffen> dadurch steigt, dass die Abtastpunkte äquidistant sind.
Wenn der Impuls derart kurz ist, wird auch die Anstiegszeit des ADC eine
nennenswerte Rolle spielen, wenn man zuverlässig Impulshöhen bestimmen
will. Für ein System erster Ordnung gilt
das sind schon 0,54 ns für Deinen HMCAD1511, wenn ich mich nicht
verrechnet habe.
Mario H. schrieb:> Entscheidend ist also der Anstieg des> Eingangssignals. Wenn der Impuls ein hinreichend langes und flaches Dach> hat, gilt für Zeiten t im Bereich des Dachs v'(t)=0. Damit spielt der> Jitter in der Tat keine bzw. nur eine untergeordnete Rolle, wenn nur die> Impulshöhe interessiert (der Jitter erhöht natürlich trotzdem den> Rauschteppich des Systems).
Wie so oft ist das in der Realität so ein Zwischending. Die Impulse sind
oben nicht flach sondern rund aber die Anstiegszeit ist auch nicht irre
schnell. Ich bekomme also von jedem Impuls mehrere Abtastwerte. Wenn das
Signal also bandbreitenbegrenzt ist vor dem ADC und der ADC äquidistant
abtastet, dann kann ich zumindest in der Theorie die Abtastrate virtuell
erhöhen und danach Tiefpass filtern um mehr Werte zu bekommen die dann
auch näher am Maximum liegen.
Mario H. schrieb:> Wenn der Impuls derart kurz ist
So kurz sind die nicht, aber egal wie lang ein Impuls ist, der hat immer
nur genau an einem Punkt sein Maximum. Und genau das zu treffen ist doch
immer unwahrscheinlich?
Gustl B. schrieb:> Wie so oft ist das in der Realität so ein Zwischending. Die Impulse sind> oben nicht flach sondern rund aber die Anstiegszeit ist auch nicht irre> schnell.
Damit wirst Du vermutlich keine übermäßigen Anforderungen an den Jitter
des Sampling-Taktsignals haben. Die oben schon genannten
programmierbaren Oszillatoren mit LVPECL-Ausgang und < 1 ps RMS Jitter
reichen locker hin, sofern Du Impulse nicht hart am Rauschteppich
detektieren willst und den Dynamikbereich des Systems maximieren musst.
> Wenn das> Signal also bandbreitenbegrenzt ist vor dem ADC und der ADC äquidistant> abtastet, dann kann ich zumindest in der Theorie die Abtastrate virtuell> erhöhen und danach Tiefpass filtern um mehr Werte zu bekommen die dann> auch näher am Maximum liegen.
Wie man hier am besten interpoliert (Upsampling und Filtern ist ja
nichts anderes) wird sicher auch von der Impulsform abhängen. Dazu
können sicher die Experten für digitale Signalverarbeitung mehr sagen.
Wenn die Impulse immer die gleiche Form haben, könnte man auch
integrieren, um auf die Impulshöhe zu schließen. Das ginge mit einem
geeigneten Trigger und einer passenden Ablaufsteuerung auch ohne
schnellen ADC. Keine Ahnung, ob das vorteilhaft wäre.
> So kurz sind die nicht, aber egal wie lang ein Impuls ist, der hat immer> nur genau an einem Punkt sein Maximum. Und genau das zu treffen ist doch> immer unwahrscheinlich?
Deswegen ist Interpolieren hier keine verkehrte Idee.
Mario H. schrieb:> das sind schon 0,54 ns für Deinen HMCAD1511, wenn ich mich nicht> verrechnet habe.
Ich sehe gerade, dass die 650 MHz die Full Power BW des HMCAD1511 sind:
https://www.analog.com/media/en/analog-dialogue/studentzone/studentzone-11-2017.pdfhttps://ez.analog.com/data_converters/high-speed_adcs/f/q-a/107827/hmcad1511-bandwidth
Die -3dB-Bandbreite von dem Ding ist eher um die 300 MHz.
Mario H. schrieb:> Wie man hier am besten interpoliert (Upsampling und Filtern ist ja> nichts anderes) wird sicher auch von der Impulsform abhängen. Dazu> können sicher die Experten für digitale Signalverarbeitung mehr sagen.
Ich habe mich damit auch noch nicht wirklich beschäftigt. Das war eben
erste Idee wie man näher ans Maximum kommen müsste. Leider ist das aber
sehr rechenlastig.
Mario H. schrieb:> Das ginge mit einem> geeigneten Trigger und einer passenden Ablaufsteuerung auch ohne> schnellen ADC. Keine Ahnung, ob das vorteilhaft wäre.
Das wäre vermutlich wirklich eine Überlegung wert. Wie man das baut
weiß ich aber nicht, vielleicht mache ich das ja wenn ich das mit dem
schnellen ADC mal ausprobiert habe.
Mario H. schrieb:> Deswegen ist Interpolieren hier keine verkehrte Idee.
Danke!
Mario H. schrieb:> Die -3dB-Bandbreite von dem Ding ist eher um die 300 MHz.
Der ist für billige Oszis gebaut. Mir reichen die 300 MHz ganz gut. Es
ist für mich zwar schnwer den Frequenzinhalt eines solchen Impulses
auszurechnen weil ich nicht weiß wie das geht, aber ich habe etwas mit
Filtern im Oszi gespielt und gesehen, dass ein 200 MHz Filter den Puls
kaum sichtbar verändert. Bei 150 MHz sind schon starke Änderungen
sichtbar.