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).
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.
>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).
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 (?)
In der Bildverarbeitung gibt es bei der Skalierung von Bildern ähnliche Probleme. Da gibt es verschiedene Verfahren, darunter die "b-spline approximation".
@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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.