Forum Discussion
Altera_Forum
Honored Contributor
17 years agoHi,
A thread on FM demodulation is still hot at: http://www.alteraforum.com/forum/showthread.php?t=4696 As I am still fresh with this thread I have this personal summary that may help: FM modulation: straightforward. try two frequencies, generate them in NCO according to symbol value. Per symbol you may generate one channel only or two(cos/sin) as this helps the RF side(single sideband). The NCO gives better result than having two look-up-tables (phase continuity issue). each sinusoid has to run fast for several cycles per symbol. upconversion: you can do some U/C in fpga if you can run fast enough, generate a carrier from another NCO(or lut) and multiply by your FM signal. You will need to upsample the FM signal before multiplication. Follow by DAC, some commercial DACs have further U/C functions. Downconversion A proper receiver needs to lock to carrier and symbol clock...this is no trivial In a student project, you can just loop back from ADC. To downconvert get a copy of your carrier and multiply the FM signal with cos and -sin to get I,Q baseband(needs a low pass filter to remove high sideband...but you may recover symbols without this filter). You then demodulate the I,Q: there are several methods: arctan method: m = d(arctan(Q/I)) oldest method, see above thread differentiated arctan : m = d(Q/I) /(1 + (Q/I)^2); * no-name : m = (I.dQ - Q.dI)/(I^2 + Q^2) see above thread where d = difference of current sample and previous sample of given term *The differentiated arctan is also documented in a link in the above thread, the document uses this name and is authored by three Eygptian engineers. The last two methods avoid measuring the arctan itself(for phase) Finally decimate back to original symbols Thus you can estimate your FPGA resource requirement from above summary designing the whole system will take several engineers(fpga,software,RF + managers) some 6 months or so to finalise as a functioning card but you can get some acceleration from DSP builder and any ready-made RF modules There is one important subtlety in all the above demodulation equations. The result is so small(either below one or just above) so you need to extract the information from the remainder of division. edit: I have ignored pulse shaping requirements.