Forum: FPGA, VHDL & Co. Analogdaten effektiv Resampeln


von Michael (Gast)


Lesenswert?

Ich muss Daten, die mit 10Bit und 61.5kHz bzw 6/5 davon -> 73.8kHz 
reinkommen, auf 175kHz hochsampeln. Das annehmen der Daten ist kein 
Problem (FIFOS), aber die Daten sind ursprünglich kontinuierlich und 
müssen auch kontinuierlich ausgegeben werden. Ich bekomme kein 
vernüftiges Teilerverhältnis hin, muss also resampeln.

Wie macht man das?

Ich will eine quadratische Gleichung verwenden, die die 3 letzen Punkte 
benutzt, um Zwischenwerte zu erzeugen, damit ich einfach abtasten kann. 
Wie stellt man die auf?  Was gibt es hinsichtlich Aliasing zu beachten?

Wäre was anderes besser?

Das Lösen ist kein Problem, ich habe genug Latenz "frei", um die Daten 
zu berechnen und verzögert auszugeben. 2 Samples = 2/175kHz wären kein 
Problem. Schwer wird eher die Genauigkeit von 1/2 digit.

Leider brauche ich das Ganze auch nochmal rückwärts. (Aufwärts und 
Abwärtskompatibilität von 2 Hardwareeinheiten).

von unwissender (Gast)


Lesenswert?

Wie hoch ist die maximal vorkommende Frequenz des Signals?

von J. S. (engineer) Benutzerseite


Lesenswert?

Du brauchst ein Resampling-Filter, welches in einem Zwischenschritt 
sozusagen "Analogdaten" erzeugt, die dann wiederum neu gesampelt werden. 
Daher auch die Frage nach der max Frequenz. Darauf muss das AA-Filter 
abgestimmt werden.

>Ich bekomme kein vernüftiges Teilerverhältnis hin, muss also resampeln.
Nun ja, das gilt nur, wenn die Frequenzen von aussen kommen und jittern. 
Wenn Du beide Takte intern erzeugen kannst, oder wenigstens die eine 
Frequenz aus der anderen ableiten darfst, kannst Du so vorgehen, daß Du 
mit einer PLL im FPGA beide Takte erzeugst, den Gebertakt einsampelst 
und mit einem Zähler einen Offset (als Zeit) ausrechnest, mit dem Du 
dann den zweiten verzögerst.

Hier ist eine Taktableitung (händisch erzeugt).

Ausgangsfrequenzen durch 100:
61500    73800     175000
  615      738       1750

Vereinigung von 1+2
  *6        *5
3690   3690

/10
369        369    *   175   = 64575 (x 1000)


OSC : 64575000 = 64.5xx MHz

1.) Teiler 369 -> 175000 kHz

dann 64575000 über PLL  *6 /35 -> 11070000

2a) 11070000 / 150 = 73800
2b) 11070000 / 180 = 61500

oder so ähnlich...

Wenn beide Takte zwar jittern, sangfristig aber streng genau sind, 
hängst Du FIFOs davor.

von Michael (Gast)


Lesenswert?

>Darauf muss das AA-Filter abgestimmt werden.
Aha und wie macht man das? Einfach ein Filter mit der benötigten 
Grenzfrequenz?

>Hier ist eine Taktableitung
Abgesehen dvon, daß mir nicht klar ist, wie man auf sowas kommt:

Ich verstehe noch nicht, wie ich diese Takte einsetzen soll. Ich bekomme 
ja von der Eingangsseite einen Takt mit der Phase des Sendesystems. Klar 
kann ich es einsampeln, aber es soll ja mit dem Takt ausgegeben werden, 
der dem Empfangssystem entspricht. Der kommt aus einem anderen 
Schaltungsteil, und ...

... kann nach letzter Information auch noch variieren. (187.5kHz).

von Harald D (Gast)


Lesenswert?

Kommt es bei völlig unkorrellierten Takten nicht zu 
Übernahmeverzerrungen?

Wenn die Takte nicht ganzzahlig zusammenpassen, muss doch eingesampelt 
werden und dann gibt es Sprünge (?)

von ---- (Gast)


Lesenswert?

In der Bildverarbeitung gibt es bei der Skalierung von Bildern ähnliche 
Probleme. Da gibt es verschiedene Verfahren, darunter die "b-spline 
approximation".

von J. S. (engineer) Benutzerseite


Lesenswert?

@OP: Ja, du must neu sampeln.

@Harald: Der Sinn des Resampeln ist es ja gerade, diese Sprünge zu 
verhindern. Zwischen den beiden Takten, die du hast, besteht zwar keine 
Kontinuität, wohl aber ein zeitlicher Zusammenhang. Der zweite Takt 
nimmt sich einfach eine interpolierte Gleichung, die einen Wert für den 
aktuellen Bereich liefern kann (Spline oder X2), setzt die Zeit ein und 
erhält den Wert. Im Falle des Taktüberganges gibt es u.U. 2 Gleichungen, 
die parallel einen Wert liefern können.

Für einfache Fälle reicht eine Geradengleichung.

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.