For a university project we have been tasked with implementing a digital signal processing system on an STM32 discovery board in which we must model the AM channel to measure and graphically display the channel characteristics of the AM band (526.5 – 1606.5 kHz with 9kHz channel spacing in my country). The user should be able to select which channel (at 9kHz intervals) they would like to see and we'll have to use digital filtering techniques to display the FFT of that 'chosen channel' in addition to producing the demodulated output signal using the boards DAC.

I thought a good place to begin would be with an anti-aliasing filter to limit the input signal within the band between 526.5 – 1606.5, which is a band of 1.08MHz. According to Nyquist's theory I should sample at twice the highest frequency content of the signal which is 1.6065MHz, so sample at 3.2MHz. For the boards ADCs this is pretty demanding. I'd like to know if it would be possible to shift this range back to baseband such that the highest frequency component is \$1606.5kHz - 526.5kHz = 1080kHz\$ and then I would only need to sample at twice this frequency which is 2.16MHz.

I wondered if someone could tell me if this would be possible and point me in the right direction of how to do so.

edit: I've read about so called "bandpass undersampling techniques". Given a bandpass signal, if the bandedge frequencies, \$f_L\$ and \$f_H\$, are integer multiples of the signal bandwidth, then the signal can be sampled at a theoretical minimum rate of 2B without aliasing:

\$F_s(min) = 2B\$

The equation above is valid provided the ratios of the lower bandedge to the signal bandwidth and/or the upper band edge to the signal bandwidth are integers:

\$n = \frac{f_H}{B}\$ or \$n=\frac{f_L}{B}\$

If the signal band is not integer positioned, the band edge frequencies can be extended such that the band becomes integer positioned.

In my case I have

\$n = \frac{f_H}{B} = \frac{1606.5kHz}{1.08MHz} = 1.4875\$

It is possible to reduce the lower band edge frequency to a new given value by choosing the nearest integer value of n through the formula:

\$f_L' = (\frac{n-1}{n})f_H\$

but in my case if I choose n=1 then this makes the new lower band edge frequency 0Hz? Then the new bandwidth becomes 1606.5kHz - 0 and Fs is 3.2MHz, so this hasn't made any difference.

  • \$\begingroup\$ If you are looking to sample the signal and display it like an oscilloscope, twice the sampling frequency is nowhere near enough. You will display mostly junk which is not representive of the actual signal. If you just want to FFT and show amplitude you may see something but it's not going to be accurate. \$\endgroup\$ Apr 20, 2019 at 12:14
  • 2
    \$\begingroup\$ @sidA30 he's not trying to do that, as he describes in his question. \$\endgroup\$ Apr 20, 2019 at 12:15
  • \$\begingroup\$ 'Graphically display channel characteristics' \$\endgroup\$ Apr 20, 2019 at 12:18
  • \$\begingroup\$ @sidA30, Sinc interpolation would be possible to improve the display. Assuming ADC rate is limited but processing power is abundant (or slow display is acceptable). \$\endgroup\$
    – The Photon
    Apr 20, 2019 at 14:51
  • \$\begingroup\$ @ThePhoton there are no real requirements on display speed. \$\endgroup\$
    – Blargian
    Apr 20, 2019 at 14:55

1 Answer 1


Consider this frequency translation approach


simulate this circuit – Schematic created using CircuitLab


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.