Analogdaten effektiv Resampeln

Gast #1878417
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
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
>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).
Gast
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 (?)
Gast
In der Bildverarbeitung gibt es bei der Skalierung von Bildern ähnliche 
Probleme. Da gibt es verschiedene Verfahren, darunter die "b-spline 
approximation".
Persönliche Seite
@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

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.