Hallo, ich bin grad dabei mich mit dds zu beschäftigen und würde mich über Hilfe von euch freuen. Ich will auf einem FPGA Entwicklungsboard (Spartan 3e) aus dem Systemtakt 50MHz via dds 40kHz Sinus erzeugen. Ich will nur die eine Frequenz haben und es soll dds sein. Irgendwie habe ich jetzt aber so viele Parameter zu optimieren, dass ich nicht weiß wo ich am Besten ansetzen soll. Als erstes steht die Entscheidung über die Phasenregisterbreite an. Die minimale Frequenzänderung, die ich über die Erhöhung des Tuningwords erzielen kann ist mir durch die feste Ausgangsfrequenz egal. Bei z.B. 32 Bit Registerbreite bin ich mit entsprechend errechnetem und gerundetem Tuningword ziemlich dicht an den 40kHz dran. Andererseits könnte ich aber die 50Mhz auch ordentlich runterteilen. Dann könnte ich bei gleicher Frequenzauflösung bei der kleinen Ausgangsfrequenz in der Registerbreite runter gehen. Aber: Bei einer runtergeteilten Taktfrequenz und größerem Phasenregister muss das Tunigword ja entsprechend größer sein. Mein Gedanke dabei ist, dass ich, um zu errechnen wie viele Samples aus meinem Look Up Table bei der Ausgangsfrequenz tatsächlich genutzt werden, die Größe des Phasenregisters durch das Tuningword teile. Optimal wäre ja z.B. bei Nutzung der oberen 10 MSB des Phasenakkus zum ansteuern des Look Up Tables, dass ich auf 1024 komme. Beim runtergeteilten Takt wäre das ja entsprechend weniger und ich würde Auflösung verschenken. (Oder?) In dem Zusammenhang finde ich keine richtigen Entscheidungskriterien darüber, wie viele der oberen Bits des Phasenakkus ich zum Ansteuern des Look Up Tables benutze. Je mehr desto besser, aber - ich komme nicht drauf wie ich, wenn ich nur die eine Ausgangsfrequenz haben will, die optimale Anzahl bestimme. Ich würde mich über jeden Tipp von euch freuen, wenn irgendwas oben unverständlich ist kann ich auch mehr erklären was ich meinte. Viele Grüße und einen schönen Sonntag, Marcus
"Andererseits könnte ich aber die 50Mhz auch ordentlich runterteilen. Dann könnte ich bei gleicher Frequenzauflösung bei der kleinen Ausgangsfrequenz in der Registerbreite runter gehen." Wenn Du die Basisfrequenz herunterteilst, wird das Verhältnis Fsample / Fout schlechter, dadurch muss der Ausgangsfilter steiler werden, um weniger Oberwellen zu haben. Je kleiner die Lookup ist, desto größer werden die Phasensprünge. "Mein Gedanke dabei ist, dass ich, um zu errechnen wie viele Samples aus meinem Look Up Table bei der Ausgangsfrequenz tatsächlich genutzt werden, die Größe des Phasenregisters durch das Tuningword teile." Vermutlich werden mit der Zeit (nach mehreren Durchläufen) alle Einträge verwendet. Deswegen nimmt man ja so viele. Hast Du die theoretischen AD-ANs gelesen?
Hallo eProfi, erstmal vielen Dank für deine Antwort. "Wenn Du die Basisfrequenz herunterteilst, wird das Verhältnis Fsample / Fout schlechter, dadurch muss der Ausgangsfilter steiler werden, um weniger Oberwellen zu haben." Ich bin davon ausgegangen, dass Fsample im Verhältnis zu Fout so hoch ist, dass ich mir selbst bei einer Teilung durch 16 oder sogar noch mehr über die Flankensteilheit des Filters kaum sorgen machen muss. "Vermutlich werden mit der Zeit (nach mehreren Durchläufen) alle Einträge verwendet. Deswegen nimmt man ja so viele." Bump. Einfacher Satz mit viel Wirkung - du hast Recht. Daran, dass sich die Verhältnisse in einem bestimmten Zyklus bei jedem Durchlauf ändern hab ich einfach nicht gedacht. "Je kleiner die Lookup ist, desto größer werden die Phasensprünge." Ja, das ist mir klar. Nur hab ich gedacht, dass es für eine feste Frequenz vielleicht an Optimum an Bits gibt die genutzt werden. Wenn ich aber einen Absatz weiter nach oben gucke ist dem wohl nicht so. Mal als Beispeil was ich meinte: die Anzahl der pro Periode ausgegebenen unterschiedlichen Samples ist Fsample/Fout. Bei einer Registerbreite von 32 Bit bei Fsample=50MHz sind das 1250, bei Fsample/16=3,125MHz nur 78. Also viel geringe Phasensprünge bei der höheren Frequenz. Andererseits sollte das egal sein, wenn das Filter richtig arbeitet. Ich wüsste trotzdem nicht, wie viel Bit aus dem Phasenregister ich zum adressieren des Look Up Table "optimal" nutzen sollte. Wahrscheinlich müsste ich genau nachrechnen was für Frequenzen durch das Abschneiden der anderen Bits entstehen und schauen das die nicht zu weit in die Nähe meiner Ausgangsfrequenz rutschen - und die Wahrscheinlichkeit sinkt mit steigendender Bitzahl zum Addressieren, oder? Nachdem ich jetzt weiß was du mit AD-ANs meinst ;) Ja, ich hab sie neben mir zu liegen und auch drin gelesen. Es gibt halt viele Parameter und für mich ist's schwer ein Optimum für alles zu finden. Viele Grüße, Marcus
Mach Dir nicht zu viele Gedanken, bei dieser niedrigen Ausgangsfrequenz spielt das nahezu keine Rolle. Nimm 256 oder 1024 und gut ist's. Aber: man lernt viel dabei. Wie gibst Du denn aus? hat das FPGA einen integrierten DAC? oder Extern? Oder R2R? Könntest Du bitte das Ergebnis Deiner Überlegungen (Programmierung des FPGA) hier posten. Würde mich interessieren.
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.