Example Code

Examples using LabVIEW FPGA RF Communications Library 3.0


This page contains a list of examples developed using the "LabVIEW FPGA RF Communications Library 3.0".


PXIe-5641R LabVIEW FPGA 2010 examples

FM Demodulator recovers the message signal transmitted using frequency modulation.

Differential M-PSK Demodulator recovers the M-PSK constellation, tracks timing and frequency offset and measures BER for PN data.

Reed-Solomon Encoder for [n=255, k=239], p(x) and g(x) used in DVB-T.

Viterbi Decoder for r=1/2, K=7, programmable generator matrix.

Reed-Solomon Decoder for [n=255, k=239], p(x) and g(x) used in DVB-T.

PXIe-7965R LabVIEW FPGA 2010 examples

Normal M-PSK Modulator generates PN or user defined bits, modulates using BPSK/QPSK/8-PSK and adds AWGN.

Normal M-PSK Demodulator recovers the M-PSK constellation, tracks timing and frequency offset and measures BER for PN data.




LabVIEW FPGA RF Communications Library 3.0 available on NI Labs


PXIe-5641R or PXIe-7965R (depending on the examples)

Example code from the Example Code Exchange in the NI Community is licensed with the MIT license.


Hello there!

Thanks for a great library and examples. In case of demodulation, I guess, as in modulation toolkit examples, performing equalization on the recovered data gives much better visulazation.

I'd like to report a problem with the example, Normal M-PSK Demodulator. Most of the times this examples works perfect. I observed two issues with the code:

1. making it runtime configurable - For the changed parameters like, Symbol rate, Center frequency and Modulation scheme to take effect, we need to stop the code and run it again. I made some modifications and made them runtime configurable, but code isn't working. I tried updating all the controls including Reset and M-PSK Receiver Controls but it didn't work. Closing and reopening the FPGA reference everytime I change a parameter is not comfortable.

2. performance is inconsistent - Unfortunately I observed that the performance of the code is inconsistent but I couldn't find out the reasons precisely.

Following are the observations

I was testing the code at different data rates from 5.5k S/s to 5M S/s. Code is working fine at data rates > 500kS/s (can be symbol rate) but at low data rates it is not consistent. This is one reason I could find out.

This is how I tested:

1. Turned on the transmitter, set symbol rate(6k) & modulation type(BPSK)

2. Set same symbol rate & modulation type and run the receiver code.

It was locking immediately and giving perfect constellation. Changed symbol rates from 6k, 10k, 20k, 40k.. to 5M and back to 10k in different steps. Found no issues with the constellation.

3. Set Tx symbol rate to 100k

4. Started Rx at symbol rate = 98k and increased till 110k in 1k steps and back from 110k to 98k. (Assuming that the exact symbol rate is unknown)

Sometimes this scenario is working but most of the times it is not locking. Its giving proper constellation for few cycles (say 1-2 seconds) and then going off (the symbols are rotating) (as shown in the image attached). The behaviour is same even if we close and reopen the session, give exact symbol rate, etc.

Tried so many ways to bring it from rotating state back to the working state and could list out few cases.

  • When FPGA resource is changed (interesting)
  • At high symbol rates
  • Sometimes when system is left idle for 40-50 minutes
  • On system restart


Thanks in anticipation,



Hello avinaash ,

                Iam facing the same problem . Did you find the error ?