1

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.

Blargian
  • 859
  • 2
  • 9
  • 30
  • 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. – Curious Diode Apr 20 '19 at 12:14
  • 2
    @sidA30 he's not trying to do that, as he describes in his question. – Marcus Müller Apr 20 '19 at 12:15
  • 'Graphically display channel characteristics' – Curious Diode Apr 20 '19 at 12:18
  • @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). – The Photon Apr 20 '19 at 14:51
  • @ThePhoton there are no real requirements on display speed. – Blargian Apr 20 '19 at 14:55
  • I agree with your conclusion about undersampling. Due to the details of your frequency band, you can't undersample. If you sample at 2 MHz for example then 1.1 MHz will alias with 900 kHz, and that is no good for you because you may have stations at both of those frequencies. – user57037 Apr 20 '19 at 17:43
  • @Blargian - take a look at the traditional superheterodyne receiver topology for inspiration. Like the superheterodyne receiver, your system could have a mixer that centers your channel of interest at IF followed by a narrow BPF (~9 kHz in your case). Now you can use the under sampling technique you are suggesting with a way way lower sampling rate than what you originally had in mind. Consider B=10kHz, you could use the traditional IF=455kHz (so you can use standard parts), and make Fs=20kSa/s, with FL=45x10kHz and FH=46x10kHz. – joribama Apr 21 '19 at 06:41
  • @joribama, OP needs to sample the entire AM band from 526.5 to 1080 kHz, then demodulate in software. That is the point of the project. It is a software defined radio (SDR) project. But I think the solution suggested by analogsystemsrf would work. – user57037 Apr 21 '19 at 16:26

1 Answers1

2

Consider this frequency translation approach

schematic

simulate this circuit – Schematic created using CircuitLab

analogsystemsrf
  • 34,253
  • 2
  • 19
  • 48