Post Go back to editing

Audio filtering for radio communications using ADAU1700/1

Thread Summary

The user is designing a radio communications transceiver using the ADAU1701 DSP for audio processing. The solution involves using pots to control a variable boost and notch filter, with an example project provided for an adjustable notch filter. The engineer also shared a PLL-controlled notch filter to track and null out feedback tones, which was combined with a maximum energy selector to improve performance within the speech bandwidth.
AI Generated Content

Im working on a project that would benefit from DSP on transmit and receive in a radio communications transceiver. The test board we have, has 4 pots connected to 4 analog inputs. We want to use 2 channels both audio, one for transmit, the other for receive. The transmit channel would have boost for a preset range of frequencies but the receive side would have a variable filter giving a boost, and a variable filter giving a cut or a notch effect. I thought of using the first two pots to set the frequency and the 'depth' of effect for the boost, the last two pots to set the frequency and the depth of cut.

 

Is there any ready made software specifically for radio communications, SSB in particular, im pretty open minded how to approach this.

 

John

Parents
  •     Hello John,

        I had searched back issues of the ARRL's QST Magazine for DSP projects but could not find any for SigmaDSP.  They have a new book on Arduino ham radio projects which may be of interest to you.  Here's a few example projects related to peaking and notch filters to help get you started in your design, as well as demonstrate some of the crazy-fun stuff SigmaDSP can do.

         The -1701's toolbox includes a State-Variable Filter whose frequency can be adjusted by a control input pin.  Thus it's easy to adjust this filter with a pot in a self-boot system.   This example filter is adjustable from 100 Hz to 3 KHz, which you can customize by the DC and gain values as labeled.  The State-Variable Filter block includes the bandpass output used here, as well as lowpass and highpass outputs.  No notch filter, however.  You can subtract the filter's bandpass output from the input audio to make a notch, but it's hard to produce a deep notch this way.

         The General Second-Order Filter has a notch option that works very well.  These filters have no control input pins.  Thus, in a self-contained system you'll need to have your Arduino calculate the filter's five coefficients based on the desired notch frequency, then safeload them via SPI to your -1701.  Shown below is two General filters, one set up by SigmaStudio as a notch, and the other set by typing the needed coefficients for the same notch. calculated from a spreadsheet that's attached (see its rightmost column).  You could have your Arduino make the same calculations to get your coefficients.  By the way, if you would like to learn about how these DSP filters work and how to calculate their coefficients, see the book ADI makes available for download at The Scientist & Engineer's Guide to Digital Signal Processing | Learning and Development | Processors and DSP | Analog D…

         Perhaps at least at the beginning, you would prefer not to get involved with calculating and safeloading coefficients, instead using only the pots on your test board.  The example below makes an adjustable notch by shifting the frequency of the incoming audio before filtering with a fixed notch filter, then demodulating the result.  This works because the usual SSB bandwidth is about 3 KHz, giving us some room to modulate upwards.  In my example the fixed notch is at 12 KHz, the working frequency often used with sound card software radios.

         This project modulates the incoming audio to upper-sideband with a variable 9 KHz -- 11.9 KHz carrier, notch filters the result at 12 KHz, then demodulates back to audio.  Though quite convoluted, it uses only about 30% of your available program instructions, leaving room for more features.  As a bonus, since the adjustable carrier is a VCO, we can have the notch filter track the offending whistle so the operator need not constantly adjust for drift.  A quick listening test shows it works quite well.

         Have fun with your project!

         Best regards,

         Bob

Reply
  •     Hello John,

        I had searched back issues of the ARRL's QST Magazine for DSP projects but could not find any for SigmaDSP.  They have a new book on Arduino ham radio projects which may be of interest to you.  Here's a few example projects related to peaking and notch filters to help get you started in your design, as well as demonstrate some of the crazy-fun stuff SigmaDSP can do.

         The -1701's toolbox includes a State-Variable Filter whose frequency can be adjusted by a control input pin.  Thus it's easy to adjust this filter with a pot in a self-boot system.   This example filter is adjustable from 100 Hz to 3 KHz, which you can customize by the DC and gain values as labeled.  The State-Variable Filter block includes the bandpass output used here, as well as lowpass and highpass outputs.  No notch filter, however.  You can subtract the filter's bandpass output from the input audio to make a notch, but it's hard to produce a deep notch this way.

         The General Second-Order Filter has a notch option that works very well.  These filters have no control input pins.  Thus, in a self-contained system you'll need to have your Arduino calculate the filter's five coefficients based on the desired notch frequency, then safeload them via SPI to your -1701.  Shown below is two General filters, one set up by SigmaStudio as a notch, and the other set by typing the needed coefficients for the same notch. calculated from a spreadsheet that's attached (see its rightmost column).  You could have your Arduino make the same calculations to get your coefficients.  By the way, if you would like to learn about how these DSP filters work and how to calculate their coefficients, see the book ADI makes available for download at The Scientist & Engineer's Guide to Digital Signal Processing | Learning and Development | Processors and DSP | Analog D…

         Perhaps at least at the beginning, you would prefer not to get involved with calculating and safeloading coefficients, instead using only the pots on your test board.  The example below makes an adjustable notch by shifting the frequency of the incoming audio before filtering with a fixed notch filter, then demodulating the result.  This works because the usual SSB bandwidth is about 3 KHz, giving us some room to modulate upwards.  In my example the fixed notch is at 12 KHz, the working frequency often used with sound card software radios.

         This project modulates the incoming audio to upper-sideband with a variable 9 KHz -- 11.9 KHz carrier, notch filters the result at 12 KHz, then demodulates back to audio.  Though quite convoluted, it uses only about 30% of your available program instructions, leaving room for more features.  As a bonus, since the adjustable carrier is a VCO, we can have the notch filter track the offending whistle so the operator need not constantly adjust for drift.  A quick listening test shows it works quite well.

         Have fun with your project!

         Best regards,

         Bob

Children
No Data