Saturday 27 June 2020

Digital Filter measurements for SSB generation

I have played a bit with Digital SSB generation, see June 2020 below. There are two methods

1. Phasing - where both AF and RF I & Q (90deg shift) signals are generated. The AF signal is produced using a TEENSY processor and filters defined on the Audio.h library.

2. Weaver - where two sine wave oscillators at half the audio bandwidth (e.g. 1400Hz) with a 90 deg phase shift feed two mixers and mix with the incoming audio, then it passes through two sharp low pass filters and on to the RF IQ mixers. Like this


In this case rather than the accurate +/-45 deg phase shifts produced by Hilbert filters, only LPF are needed. Hibert filters on the TEENSY 3.2 can run with up to 120-140 coefficients, and this does not give a flat phase shift across the full audio band. It drops off at low frequencies. 



The result it that the unwanted sideband is not phase cancelled at lower frequencies and a small amount of the wrong sideband is generated at low frequencies.

But with the Weaver system only LPFs are needed, which could have better characteristics on the TEENSY 3.2. When I tried this out I found that the same problem existed and that the LPFs did not have a sharp enough and a flat eoungh frequency response down the low audio frequencies. So I had the same wrong sideband breakthrough. Perhaps a more powerful processor, that can allow more coefficients to be used, may be needed, like the TEENSY 3.5/3.6 or 4.0.

FILTERS
I have decided to study the filter characteristics and see what can be done. For this I need an audio oscillator to feed the TEENSY and an AF meter to measure the output. I have already an AF SIGGEN  (see this blog for February 2019). Here is an AF METER, based on this circuit from the AD8307 data sheet.
Basic schematic


AF METER
Display shows a bar graph, Vrms and dBv

The software code here is very similar to an RF METER that I had built previously and which runs on an Arduino UNO (or Nano). The AD8307 output goes to the UNO A0 input. The output is displayed on an OLED display.

F1 first filter, Hilbert, 70 taps
Sample rate 41117
Fc 1500
BW 2400
Taps 70
Phase +45 (shown) or -45

Teensy code for this is here

Simulated and actual measured response:



The filter has the expected shape, but it's not what we need for a Phasing SSB exciter, we need a much, much sharper response. As you see in the simulation the phase shift falls away at low frequencies from  the programmed +45. This degrades the phase balance and causes bad balance and unwanted sideband output at low frequencies.

F2 second filter, Hilbert, 200 taps
By way of trying to better this filter, I thought I would try many more "taps" or coefficients in the Hilbert filters. So I prepared +45 and -45 filters with 200 taps. This is the result of a filter with design parameters of Fc = 1.5kHz, BW = 2.4kHz running on my TEENSY.

Simulation/design

Measured

Which is a markable improvement, even if the LF end could still be raised a little. The SSB generated sound good but needs more "punch" which I may be able to get by using the Audio Adapter built-in compressor functions. We will see.

Note: I still have a problem with my mixers (RF I&Q and AF I&Q) which are on my breadboard have too much carrier breakthrough. I thought this was the filters not having good LF phase charactersitics but now I not so sure. Investigate!

No comments: