Time Delay and Frequency Response of the Filters in Perseus SDR Receiver
Chavdar Levkov LZ1AQ
Last revision v.1.0 december 2014
I need an SDR radio with acceptable time delay between antenna input and audio output in order to work in CW contests. My usual setup is HDSDR  with ASIO4ALL driver and direct conversion (DC) receiver connected to PC soundcard. The SDR frequency is synchronized with my ICOM 756pro transceiver . The time delay is somewhere in the range of 200 ms which is the upper limit of acceptable delay (no QSK). But there are two problems – the image rejection which is in the range of 40 dB (unacceptable for contest work) and some dynamic range problems due to the simple hardware used for the DC receiver. I have a Perseus  receiver but using it with HDSDR software give unacceptable delay between 500 and 600 ms. The original Perseus software at first glance gives delays in the range of 300 ms but I noticed that the delay can be reduced to lower levels by playing with filters BW range settings and number of filter taps. Unfortunately there is no documentation about these topics so I think that my findings will help to other users of Perseus.
The original Perseus software is not very convenient for contest work mainly due to the need of double clicking to set the desired frequency on the waterfall display and also the limited size of the spectrum window but these are very minor drawbacks. To control the Icom transceiver I use Bobcat v.31 program  but it does not work with Perseus software v.4.1a by unknown reasons so at the end I used v.4.0b which for my goals has all the features I need for CW work. The user must be aware that Bobcat has other bugs e.g. in certain position it sets the com-port RTS signal to negative voltage which in my case removes the supply from the Icom CIV interface.
1. Time delay
I have measured the time delay with Perseus software v.4.0b . The procedure is described in http://www.lz1aq.signacor.com/docs/std/Measurements_of_Signal_Time_Delays_in_Several_SDR.htm  . It must be noted that measured time delays are within errors of 10 ms , moreover that the time delay is not very stable and floats within a range of 10 to 20 ms. Time delay floating exists in the most of SDR software measured by me and Perseus software is not an exception but it is the one with the most stable time delays. I noticed that after the start, the delay is somewhat longer and after 20 - 30 sec stabilizes to certain lower value and this value is plotted on Fig. 1. Interestingly, the delay change must lead to discontinuity of the audio signal and some clicks but I could not notice such effects which means that measures are taken in the software to mask these effects. The most of the measurements are performed only for 400 Hz band pass filter width but they can be extrapolated for other filters bandwidths since the delay does not depend on flilter bandwidth but only on BW range setting and the number of filter taps. The audio latency variable in setup was set to minimal value of 4 and I do not notice any signal discontinuity at least with my measurement setup. ( I do not know the exact function of this variable, just a guess that it reserves additional buffer length for the case of slow preprocessing in the operating system data stream). Only 3 tap sets were measured - 32, 128 and 512. A linear regression line can predict the delays with other taps settings (Fig.1) , since the number of filter taps determine the length of the data buffer and thus the time delay.
Fig.1 Time delay for 400 Hz bandpass filter width in Perseus software versus number of filter taps and BW range settings. Perseus runs in WinXP SP3, Intel Core 2 duo, 2.6 GHz, 2Gb RAM, Realtek high def.audio chip set (Esprimo Mobile laptop).
2. Filters frequency response
I have measured the frequency response of Perseus filters with different BW range settings and filter taps in order to find the optimal compromise between time delay and filter steepness.
A wideband noise signal is fed at Perseus input. The noise generator spectrum density level is -95.5 dBm at 1KHz bandwidth ( measured with Perseus with filter 1KHz /1.6KHz range 512 taps) . The receiving frequency was 7 MHz. The AF output of Perseus receiver was fed to 16 bits soundcard of another PC. Perseus was set at 125KHz s/rate, AGC=ATT=Presel=Preamp=Dither=off. Versions: Hw 1.0, Sw 4.1a, DLL 3.6.
A commercial spectrum analyzer software was used to analyze the AF output. ( S/rate 48KHz , FFT size 4096, Blackman window). Infinite averaging was used until the frequency response curve is smoothed sufficiently. This setup has approximately 60 dB dynamic range which is sufficient to estimate quite accurately the frequency response.
The following pictures are self explaining:
Remark: I have measured in the same way the Winrad (HDSDR) filters – they correspond approximately to Perseus filters with 512 taps.
Fig.2 Taps=32, CW mode; filter bandwidth is fixed to 400Hz
Red - 0.8 KHz BW range, Viol - 1.6 KHz BW range, Yellow - 3 KHz BW range
Fig.3 Taps=128, CW mode; filter bandwidth is fixed to 400Hz
Red - @ 0.8 KHz BW range, Viol -@ 1.6 KHz BW range, Yellow - @ 3 KHz BW range
Fig.4 Taps=512, CW mode; filter bandwidth is fixed to 400Hz
Red - @ 0.8 KHz BW range, Viol -@ 1.6 KHz BW range, Yellow - @ 3 KHz BW range
Fig.4a Taps=512, CW mode; filter bandwidth is fixed to 400Hz. Wideband BW range settings.
Viol - @ 3 KHz BW range, Blue-@ 6 KHz BW range, Yellow - @ 12 KHz BW range.
Fig.5 CW mode ; BW range =1.6KHz; filter bandwidth is fixed to 400Hz
Red - 512 taps, Viol - 128 taps, Blue - 64 taps, Yellow - 32 taps
3.CW peak filter
The CW peak filter must be used in order to improve the selectivity. The time delay is not increased if the CW peak filter is switched on – even a small delay reduction is noticed. It is in order of -10% for medium position of the CW filter slider. The notch filter also does not change the time delay .
The Perseus CW peak filter is an adaptive filter. It works only if there is a carrier, otherwise the adaptation procedure will not take place. If only a noise signal is applied at the input of this filter we can not see a stable frequency response. Along with the noise, additional carrier must be injected at the input. There is a slider with “fast” and “slow” markings which determines the speed at which the filter adaptation takes place. In “fast” adaptation, the filter forms its frequency response quickly but also looses it quickly if the signal drops down. At “slow” side of the slider the frequency response is much more stable but you need more time for filter adaptation. The filter also tracks the carrier frequency.
Fig.6 shows the CW peak filter response to two carriers with slightly different frequencies. This picture is obtained by injecting a carrier at the beginning. After the adaptation the CW signal is switched off. Since the filter is in slow mode, it still preserves its coefficient values and we can see its frequency response. This is not possible in “fast” mode – the filter almost immediately begin to change its coefficients and the frequency response becomes unstable – the filter is searching a carrier. The CW filter steepness also depends from the BW range settings (Fig.7).
Fig.6 64 taps 0.8KHz BW range. 400 Hz bandwidth setting. Slow adaptation.
Viol- without CW filter, Red – CW signal at 420 Hz, Yellow – CW signal at 460 Hz
Fig.7 The steepness of CW peak filter depends from BW range settings. There is a carrier in this spectrogram – the peak of the filter frequency response is somewhere at -60 dB level. The carrier frequency is deliberately changed in each case to show the carrier frequency adaptation. The filter is in “slow” adaptation mode, 64 taps. The peaks above 800 Hz are the harmonics of the input signal.
Red – 3 KHz BW, Viol. – 1.6 KHz BW, Yellow – 0.8 KHz BW
Fig.8 The difference in frequency response between “fast” and “slow” settings of the slider. There is a carrier in this spectrogram – the real peak of the filter frequency response is somewhere at -60 dB level – the same as with the case without peak filter. The filter notches are much more deeper in the “slow” mode.
Red – “fast” , Yellow – “slow”, Viol. – without CW peak filter
· BW range settings in Perseus GUI have effect on the filter steepness (including CW peak filter) and signal delay.
· Changing the filter bandwidth in the small spectrum window does not affect the time delay when BW range setting is fixed.
· The CW peak filter does not increase the basic time delay – even there is some decrease of the delay with 5 – 10 %.
· The CW peak filter is adaptive and there must be appropriate procedure to use it properly. I will suggest at the beginning to peak the CW signal in “fast” position and then to move the slider to “slow” position. This will tune filter quickly to exact carrier frequency and then will stabilize the response avoiding fading effects.
· CW peak filter is effective at BW range settings below 3KHz (Fig.7) .
· The minimal Perseus time delays are not suitable for QSK but delays below 200 ms are acceptable for normal CW work even at contests. My personal compromise is 64 or 128 taps at 1.6 KHz BW range. The delay is 200-220 ms and with CW peak filter, the frequency response becomes quite sharp. 256 taps at 3KHz BW gives quite good filter with low time delay of 170 ms. 6 and 12KHz BW range can be used with larger number of taps, e.g. at 6 KHz and 512 taps the filter is quite sharp with delay of only 150 ms but there the CW peak filter is not very effective and changing the filter width in the window is somewhat difficult due to rough resolution of the small spectrum window.
· The lowest measured delay is 110 ms at 32 taps and 12KHz BW range settings.
2. http://www.hdsdr.de/ http://www.weaksignals.com/
Sofia, December 2014