Signal Processing on the BBB

Hi guys,

I’m totally new to MCUs and the Beagleboard and I’m a little overwhelmed by the amount of information out there.
For a class project, I need to sample a signal (the beat signal out of a FMCW radar module, the frequency is not higher that audio), detect its frequency, and use this frequency value to calculate the range and/ or speed of my target.

I’m pretty sure that I can use either the beagleboard-xm or the beaglebone black for this, but I’m confused about a couple things. I hope that I can get help here!

Can I just use the CPU on the BB-xM or the BBB to sample the audio and do the necessary processing or would I have to use the xM’s DSP or an audio cape for the BBB? I have written simple DSP applications in C before, and so far I have used JACK to get my samples from the sound card. Could I do the same thing on the Beagleboard? Would grabbing samples for computations in a C program also work by using ALSA?

In order to detect the frequency of my signal, I believe that I will have to take chunks of the signal, take the FFT and detect the peak in the resulting array. Can I do these operations on a beagleboard without significant delay?

Thanks for your help!


This is something I have been reading about rather than having done it
myself, so I may be wrong about details, but here's what I understand.
The Doppler radar setup will give you a beat frequency between your
tranmitter and receiver. IIRC, Doppler frequency is 1/(1+2v/c), so for
instance when an object moving at 1m/s is lit up by 5GHz, the
receiver will return a 33Hz beat frequency signal. This is within
audio range, so you can read it with a sound cape or USB dongle, or
directly via BBB digital or analog I/O pins, if you're careful about
not burning them up with excess voltage.

You can get the speed by measuring the frequency, but you can't get
actual distance unless you do time-of-flight measurement on
well-defined pulses, which is tricky because radar waves move at the
speed of 1 foot/nanosecond. On a Beaglebone it's pretty hard to
measure timing to a resolution much better than a microsecond or so,
so your distance measurement would be to within 1000 feet.

Here is an example I wrote for my students that shows how to use ALSA to read in an audio signal, processes it and send it out again.

fftw has been ported to the Bone. has instructions on how to compile it.

It think what you are trying to do is doable, but you’ll have to pull pieces from here and there to make it work. Once working, be sure to post instructions on how you got it working.