Group delay in a multirate system
Started by 2 months ago●7 replies●latest reply 2 months ago●170 viewsRecently, I have worked on a multirate system, the delay from the input and output found from the cross correlation was far off from the theoretical result. I don’t have a clue how to explain this.
Based on my knowledge, the group delay from the signal processing theory is equal to
(M0-1)/2+4*(M1-1)/2+8*(M2-1)/2 + 4*(M1-1)/2 + (M0-1)/2
Is it correct?
Hello,
I'm assuming the cross-correlation is taking place in the Fs/8 domain and the length of the sequence is M2. I'll also assume the length is odd.
For instance, if the length M is 5 then there would be 3 unit delays to the output of the center tap. I would take that as the group delay. So delay would be (M+1)/2.
Let's also take Ts = 1/Fs = sample period in seconds.
By inspection of the figure:
Delay = Ts *(2*((M0+1)/2) + 2*(4*(M1+1)/2) + (8*(M2+2)/2) )
You know another way to look at it is the pattern match. If that's the case then the pattern may match at the *end* of the correlation sequence in which case the delay might be the whole length of M2.
A simulation would nail it down.
Hope some of this helps.
Mark Napier
Mark-
Yes +1 to mention delay until max pattern match.
-Jeff
The cross correlation was taken between the input and the output of the multirate system. A single tone was used as the input signal. The group delay value given by the DSP theory is matched the delay estimated from the cross-correlation if the theoretical group delay value was within the period of the single tone. However, two values are total different if the theoretical group delay value of the system is above the period of the single tone. In this case, a modulo operation was taken for the theoretical group delay.
I think a wideband input (such as an impulse) might be a more natural choice for eyeballing group delay. Then you avoid the ambiguity of a periodic signal.
Nonetheless, I personally would split this into three parts:
- The 8:1 decimating filter.
- The FIR filter.
- The 1:8 interpolating filter.
You can use the Noble identities to rearrange the 2-stage decimator into a 1-stage decimating filter. And the same for the 2-stage interpolator. That leaves you simply with 3 FIR filters, a downsample by 8 and an upsample by 8. From that, the answer should be relatively easy to find.
The filter is not time-invariant, so I would repeat any analysis/measurements at all 8 phases.
Edit: As kaz noted, your equation is correct (assuming M is the filter length):
(M0-1)/2 + 4*(M1-1)/2 + 8*(M2-1)/2 + (M0-1)/2 + 4*(M1-1)/2
You can then input an impulse to your filter and see that the center tap comes out at precisely at the expected delay:
Here's the MATLAB script I wrote to draw the graph:
You can repeat this at all 8 phases by replacing x(1) = 1 with x(2) = 1 or x(3) = 1 etc. And you'll see that the response closely resembles a time-invariant response (delaying the input just delays the output).
Your equation is correct provided M0, M1,M2 are number of taps rather than the order.
group delay = (taps - 1)/2 or order/2
Don't forget that delay is the sum of "latency + filter group delay".
Latency is the time from first input to first output and is dependant on Implementation. Soft models usually ignore latency.