Analogdaten effektiv Resampeln

Gast #1878417
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).
Persönliche Seite #1879468
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.
Gast #1880823
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).
Persönliche Seite #1898427
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren