Forum: FPGA, VHDL & Co. Resampling hochgenau ausführen


von Martin (Gast)


Lesenswert?

Ich möchte ein Signal, das (in einem neuen Messsystem) mit einer 
Messfrequenz von 2,048 MHz gesampelt und bearbeitet wurde auf der alten 
Frequenz von 512 kHz ausgeben, damit es in die alten Baugruppen passt.

Fall 1: Es besteht eine feste Relation von 4:1

Jetzt ist mir bekannt, dass man ein solches Signal erzeugen kann, in dem 
man einfach alle anderen Samples als jedes 4. weglässt. Nun ist es aber 
so, dass damit ja eine Bandbreitenreduzierung stattfindet. Ich gehe 
davon aus, dass ich den Datenstrom zuvor einfach auf die neue 
Nyquistfrequenz von 50% 512kHz = 256kHz filtern muss? Ich würde dann mal 
so 200kHz als Maxfrequenz angeben, die man mit dem neuen System im alten 
Modus noch ausgeben kann.

Fallv2: Es besteht eine feste Relation von 2048:1750 (Alternative).

Nehme ich dann <40% von 1750, also rund 600kHz an?

Wie verhindere ich ein sample-Problem bei der Übergabe der Werte von der 
einen in die andere Domain?

von Falk B. (falk)


Lesenswert?

@  Martin (Gast)

>so, dass damit ja eine Bandbreitenreduzierung stattfindet. Ich gehe
>davon aus, dass ich den Datenstrom zuvor einfach auf die neue
>Nyquistfrequenz von 50% 512kHz = 256kHz filtern muss?

Sicher.

> Ich würde dann mal
>so 200kHz als Maxfrequenz angeben, die man mit dem neuen System im alten
>Modus noch ausgeben kann.

>Fallv2: Es besteht eine feste Relation von 2048:1750 (Alternative).

Ähnlicher Fall.

>Nehme ich dann <40% von 1750, also rund 600kHz an?

Kann man machen, je nach Filteraufwand.

>Wie verhindere ich ein sample-Problem bei der Übergabe der Werte von der
>einen in die andere Domain?

Wenn es unabhängige Takte sind, mit einem asynchronen FIFO.

MfG
Falk

von Stefan (Gast)


Lesenswert?

>> Fall 1: Es besteht eine feste Relation von 4:1
Dein Signal ist oversampled. Addiere einfach 4 Samples und freue Dich 
über die hohe Auflösung.
Stefan

von Martin (Gast)


Lesenswert?

@Stefan, das Signal ist nicht oversampled, sondern es hat eine höhere 
Bandbreite. Diese kann im alten System nicht genutz werden.

@Falk: SO dachte ich mir das. Danke.

von Duke Scarring (Gast)


Lesenswert?

Martin schrieb:
> Fall 1: Es besteht eine feste Relation von 4:1
In diesem Fall kann Dir ein CIC-Filter [1] weiterhelfen.

Duke

[1] http://de.wikipedia.org/wiki/Cascaded-Integrator-Comb_Filter

von BiBi (Gast)


Lesenswert?

Das CIC funktioniert aber nur bei festem Systemtakt, bzw ganzzhaligem 
Verhältnis der abtastenden Takte In und Out. Was ist mit Jitter?

Das wäre freilich ein dritter Fall.

von Benjamin (Gast)


Lesenswert?

Überlege dir das einfach ganz theoretisch. Eine Abtastratenwandlung um 
einen rationalen Faktor L/M wird durch eine Interpolation um den Faktor 
L und eine anschließende Dezimation um den Faktor M. Dazwischen liegt 
das Interpolationsfilter und das Dezimationsfilter, welches zu einem 
einzelnen Tiefpassfilter zusammengeführt werden kann.
Der Sperrbereich des Tiefpassfilters muss für M > L bei spätestens Pi/M 
und für L > M bei spätestens Pi/L beginnen.
Eine besonders recheneffiziente Struktur dieses Abtastratenumsetzers ist 
zum Beispiel die Realisierung mittels Polyphasenfiltern.

von BiBi (Gast)


Lesenswert?

Irgendwo hat man aber doch einen Zeitsprung zwischen den domains, wenn 
man den jitter ignoriert und einsampelt. Ausserdem ist ja nicht 
unbedingt gesagt, dass es ein KGV der beiden Frequenzen gibt. Versuche 
mal im Videobereich ein 1024x768 auf 800x600 genau zu wandeln. Das geht 
nur theoretisch entlang der Horizontalfrequenz. Praktisch - auf den 
Bildspeicher bezogen - kommt man auf ein Frequenzverhältnis von 32:25 
brächte also 25x70MHz. Das ist ein bissel viel fürs FPGA.

von Martin (Gast)


Lesenswert?

Ich habe mir nun einn CIC im Xilinx angesehen und dort vorgefunden, dass 
man offensichtlich 2 Möglichkeiten hat, ihen einzustellen. Ganz blicke 
ich da noch nicht, was ich nehmen muss. Welche Endfrequenz brauche ich? 
Kann ich direkt die 2,048MHz nehmen?

Was bringt mir das Filter, statt dem einfachen Weglassen von samples?

Welche Frequenz käme für den Fall 2048:1750 in Betracht?

Ich erkenne nicht, wo ich das genau einstellen kann, soll , muss.

von Martin (Gast)


Lesenswert?

Ach, gerade sehe ich noch ein Problem: Das Xilinx-Geraffel kann nur 20 
Bit! Kann man das aufstocken oder muss ich selber bauen?

von Duke Scarring (Gast)


Lesenswert?

Martin schrieb:
> Das Xilinx-Geraffel kann nur 20
> Bit! Kann man das aufstocken oder muss ich selber bauen?
Wenn das eine Limitierung für Dich ist, hilft nur selber bauen (oder 
bauen lasen...)

Duke

von BiBi (Gast)


Lesenswert?

Martin schrieb:
> Was bringt mir das Filter, statt dem einfachen Weglassen von samples?

Bei ganzzahligen Verhältnissen ist "Weglassen" = "Resampeln", weil man 
die Stützstelle, die es zu errechnen gälte direkt trifft. Umrechnen muss 
man nur bei Zwischenwerten, hier anhand des Beispiels 7:5:

Man bekommt folgende Koordinatentransforamtion (aus Sicht A, aus Sicht 
B)

A-Nr.    B-Nr.
1    0,7
2    1,4
3    2,1
4    2,9
5    3,6
6    4,3
7    5,0


B-Nr.    A-Nr.
1    1,4
2    2,8
3    4,2
4    5,6
5    7,0

Um also die 5 Zielpunkte zu berechnen, braucht man 5x eine 
Interpolationsgleichung der Punkte:

1: 0,0 ... 1,4
2: 1,4 ... 2,8
...
5: 5,6 ... 7,0

Der "Punkt" 5,6 sind einfach 40% des Punktes 5 und 60% des nächsten 
Punktes 7.

von Stefanie B. (sbs)


Lesenswert?

BiBi schrieb:
> Der "Punkt" 5,6 sind einfach 40% des Punktes 5 und 60% des nächsten
> Punktes 7.

Das ist lineare Interpolation zwischen 2 Punkten. Die Spektren dürften 
sich danach deutlich unterscheiden.

(Die Koeffizienten eines FIR Filter haben ganz gerne mal eine 
si-ähnliche
Ausprägung)

von BiBi (Gast)


Lesenswert?

Was macht denn der CIC, statt linear zu interpolieren? Inwiefern erhält 
man da ein besseres Spektrum?

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
Noch kein Account? Hier anmelden.