Hallo Leute, kurze Frage: Ich habe ein random digitales Signal (1 Bit), welches ich in einen FPGA speise. Da das Signal nicht synchron zur internen Clock ist, synchronisiere ich das Signal mit der internen Clock ein. Was jetzt an dieser Stelle passiert ist, dass ich das Signal intern jetzt einsynchronisiert habe - wenn ich das synchronisierte Signal aber 1:1 am FPGA ausgebe, ist das mit Noise überlagert. Also quasi wie bei einem Delta-Sigma Wandler ein white-noise welches bis 1/2 * clock Frequenz reicht. Jetzt meine Frage: Welche Ansätze gibt es, dieses Hintergrundnoise, welches durch die Synchronisierung entsteht, wieder wegzufiltern? Ich habe gelesen, es gibt Noise-Shaper mit deren Hilfe man das Noise in höhere Frequenzbereiche schieben kann. Wie sähe aber eine entsprechende Implementierung z.B. in VHDL aus und wie berechne ich den Shaper korrekt, um das Signal im Frequenzbereich bis z.B. Frequenz X sauber zu halten, wenn ich Clockfrequenz y habe? Danke euch :)
Das "noise shapen", wie Du es hier nennst, müsste VOR dem Einsynchronisieren geschehen und zwar so, dass das Erfassen des Taktes statistisch in der Amplitude / der Zeit getunnelt wird. Da es aber in digitaler Eingang ist, also steilflankig verläuft, ist da wenig Raum zur analogen Beaufschlagung von Rauschen in der Amplitude, wenngleich das grundsätzlich funktioniert. Man kann so sogar Analogsignale sampeln. Dazu habe Ich hier im Artikelbereich einen Beitrag verfasst. Allerdings bildet sich (s) das künstliche Rauschen stark in den Frequenzbereich ab und muss massiv gefiltert werden, daher könnte man auch gleich richtiges phase dithing im Zeitbereich betreiben. Das ist besser zu kontrollieren. Um die Methodik zu Ende zu denken, müsste das Signal aber stärker überabgetastet werden, um überhaupt dithering zu verwenden und somit die Faltungsprodukte, die beim "Mulitplizieren" des Eingangssignals mit dem Takt des FPGAs entstehen, zu minimieren und im Spektrum zu verteilen. Das Überabtasten ist auch deshalb nötig, damit überhaupt eine Trägerfrequenz entsteht, welche die erwünschten "höheren Frequenzanteile" beinhalten kann. Und man muss dann auch auf dieser erhöhten Frequenz weiterarbeiten, um eine entsprechende Qualität des Signals zu erhalten. Wenn man weit unterhalb der Samplefrequenz arbeitet, also digitale Signale im Bereich von max. 1/1000 der FPGA-Frequenz abtastet, dann sollte es reichen, die Eingangsdaten einfach zu dezimieren. Zusätzliches dithern wäre dann nicht nötig, bzw. kaum noch nutzbringend. Wenn das eingehende Signal wiederum ein Takt ist, der zudem maximal ca 1/100 abwärts der FPGA-Frequenz liegt und nur sehr fein in der Phase erfasst werden muss, gibt es noch eine weitere Möglichkeit der Filterung / Überabtastung, welches aus einer Kombilösung von dithering / danymischem oversampling und einer geschickten Interpolation im Frequenzbereich besteht. Für diese hätte Ich einen Core. Sampelt mit einem 200MHz-FPGA PDM-Signale im Bereich bis 3MHz und berechnet das duty cycle auf 10-4 genau, folgt dem Signal voll audiofähig. Funktioniert z.B. für autark laufende PDM-Signale aus Mikrofonen, die nicht synchronisiert sind, also aus einer fremden domain stammen.
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.