farrow delay

Bei der Signalverarbeitung besteht manchmal die Notwendigkeit, die Abtastzeitpunkte eines Signals um einen Bruchteil einer Abtastung zu verschieben oder fein abzustimmen. Für diese Aufgabe wird in der Regel ein FIR-Farrow-Verzögerungsfilter verwendet, das mit einer herkömmlichen ganzzahligen Verzögerungsleitung kombiniert werden kann, um eine universelle Verzögerungsleitung mit gebrochener Länge zu erhalten.

Eine fraktionale Verzögerung auf der Grundlage einer FIR-Farrow-Struktur kann wie folgt definiert werden:

\(H(z)=(1-\alpha)+\alpha z^{-1}; \; 0 \leq \alpha \leq 1 \)

Daraus ergibt sich eine fraktionierte lineare Verzögerung von \(\alpha\) zwischen 0 und 1 Samples. Ein universellerer Baustein kann jedoch durch die Kombination der Farrow-Verzögerungsstruktur mit einer ganzzahligen Verzögerung, \(\Delta\) erreicht werden.

\(H(z)=(1-\alpha) z^{-\Delta}+\alpha z^{-(\Delta+1)}\)

Die nachstehende Grafik zeigt die Spektren von Betrag (blau) und Phase (lila) für \(\Delta=9, \, \alpha=0.52\). Wie man sieht, führt das fraktionierte Verzögerungselement zu einem nicht flachen Betragsspektrum bei höheren Frequenzen.

Farrow Verzögerungsfilter
Frequenzgang des Farrow-Verzögerungsfilters

Implementierung

Ein Farrow-Delay-Filter kann in ASN FilterScript wie folgt implementiert werden:
[code language=”java”]
ClearH1; // clear primary filter from cascade

interface alpha = {0,1,0.02,.5}; // fractional delay
interface D = {1,30,1,10}; // integer delay

Main()
Num = {zeros(D),1-alpha,alpha}; // numerator coefficients
Den = {1}; // denominator coefficient
Gain = 1/sum(Num); // normalise gain at DC
[/code]

Demo jetzt herunterladen

Lizenzierung

0 replies

Leave a Reply

Want to join the discussion?
Feel free to contribute!

Leave a Reply

Your email address will not be published. Required fields are marked *