Search code examples
matlabsignal-processingsimulinklowpass-filter

Lowpass filter Phase Error


As the graph shows, I have slightly over 0.01 milliseconds delay introduced by transfer function for a simple low-pass ASK filter at the demodulation part. I need to get rid of this delay by any means. Scope Results

  • I tried to increase the frequency at the denominator coefficient of the transfer function, but still with the same delay.
  • In the last attempts, I tried to create a subsystem that outputs binary 1 at interval or 0.5 milliseconds if it is bigger than 0.5e-6 as threshold, and hold the value until the coming 1.5 millisecond where it should outputs 0 if it is less than 0.05e-6 and so on. I tried to follow this here, but it didn't work on my scenario. I also tried this here, but my attempts failed.

Here is an overall implementation for the demodulation part using simulink.ASK demodulation block

And the following is the transfer function for a simple low-pass ASK filter: Low-Pass Filter Transfer Func

Help here is much appreciated.


Solution

  • It is impossible for a linear filter to filter a signal (for any finite bandwidth above DC) without a delay. It takes some time (usually related to the period of the center frequency of a bandpass filter), for the filter to gather enough information from the signal to differentiate between a waveform to pass and a waveform to attenuate.

    You might be able to pass a sharper rise time or fall time by using a matched filter with the expected transient(s) as the template(s), but that would have an even greater delay.

    Usually this delay is accounted for by using a matching delay in other parts of the system to synchronize timing as needed.