The "SW block diagram of the Convolution SDR" does not exist, so I canīt post it ;-).
Have a look at the source code, it is not at all highly optimized, because I am not a programmer, so the flow in the source code should be very easy to follow.
Signal flow in brief is as follows:
I & Q data input from the QSD hardware into the LINE input of the Teensy audio board -->
queue 32 blocks of 128 samples of I & Q -->
convert int16_t to float32_t -->
Software I & Q amplitude and phase correction -->
Frequency translation by sampling rate / 4 without multiplication (see Rick Lyonsī book which explains how that works) -->
lowpass filter and downsample-by-4 -->
lowpass filter and downsample-by-2 -->
prepare buffers for digital convolution (I use the overlap and discard/save algorithm) -->
1024-point-FFT --> [from now on we are in the frequency domain]
fill those parts of the FFT buffer with zeros that are of no interest (e.g. upper sideband, when in LSB) -->
complex multiply the FFT buffer with the FFT results of a 513 tap FIR filter that has to be calculated once depending on the bandwidth chosen by the user -->
1024-point-inverse-FFT & take only the 2nd half of the iFFT output (overlap and discard/save) --> [we are back again in time domain]
Automatic gain control [controls both I & Q] -->
demodulation algorithm according to the chosen Demodulation mode:
- LSB / USB --> no demodulation necessary, just take the real part of the iFFT output
- AM: nine different algorithms implemented, take a look at the corresponding page in the wiki
- SAM: side band selected synchronous AM demodulation, see Whiteley 2011 (wiki) for an explanation
-->
upsample-by-2 and lowpass filter -->
upsample-by-4 and lowpass filter -->
scaling has to be done after this interpolation by 8 -->
take the 32 blocks of audio, convert them from float32_t to int16_t -->
push the 32 blocks x 128 samples into the output queue and listen to the radio ! ;-)
Not listed in the flow are the:
- spectrum display function
- Zoom FFT function
- and all the menus and settings, e.g. sample rate change etc.
Hope that helps in understanding and building the Teensy Convolution SDR!
Well, sorry, canīt do that, I have other books to write ;-): try these resources listed in my wiki:
https://github.com/DD4WH/Teensy-Conv...ks-&-Resources
And also this helps a lot for the general understanding of the Convolution approach:
Borgerding, M. (2006): Turning Overlap-Save into a Multiband Mixing, Downsampling Filter Bank.
http://www.3db-labs.com/01598092_Mul...Filterbank.pdf