I am trying to emulate a satellite link where the delay time between the satellite and ground station changes over time due to the satellite's motion. I plan do this by converting to the frequency domain via FFT, multiplying it by $e^{-2\pi \omega_{delay} }$, and converting back to the time domain via IFFT.
However, when I implement this in GNURadio, it fails to work as I expect.
I generate a signal, pass it through the delay, and then match filter the original signal with the delayed signal. I then change the delay with a GUI slider. When I use the frequency-domain-phase-shifting method that I implemented, the correlation peak does not move when I change the delay. However, if I substitute in gr-baz
's variable delay block, the peak does move when I change the delay.
Why does my implementation of the shifting method not work? Is it because my delay block only works with a finite window of the signal?
Answer
Please see the answer to this question How to implement Polyphase filter? on how to implement a polyphase interpolator, and then note that the same structure without actually commutating the output can be used as a discrete variable delay; each output is the input within the passband of the filter at a different delay in uniform discrete steps. By stepping through the output continuously as we do in the interpolator, we achieve a higher sampled version of the input. By staying at one output we get the input at a specific delay based on that filter, by changing to another output we get another delay. The design of the filter as given in the link will properly create the filters such that each is a different delay of the other (with the same ampltitude response) in uniform steps.
Continuing with the example shown of "Resampling" further shows how a variable delay device results:
Here is shown a IS95 CDMA waveform with 2 samples per symbol (as indicated by the red dots on this eye diagram). The analog waveform that is represented by these samples is shown in blue.
If we used the polyphase structure as an interpolator, we would get all the samples in between the 2 samples per symbol we have, evenly spaced, given by the number of filter banks in the polyphase structure.
Therefore it should be clear that we can select any filter output that is closest to the desired delay we want to achieve (in this case within one symbol duration).
As mentioned in the comments a Farrow Filter is another approach to implementing a variable fractional delay in an FIR filter.
No comments:
Post a Comment