LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

I/Q Signal Output from FPGA

Hello everyone,

 

I think this question may be more suited for some kind of RF engineering forum, since I think my lack of knowledge lies largely in the theory of what I'm doing, but you've been extremely helpful for me in the past so I'd like to pose the question to you.

 

I have a setup in which I have to send out a sinusoidal wave of a given phase from my FPGA (NI PXIe 7972) + adapter module (NI PXIe-5783) setup. My program should be able to measure that phase and make adjustments on the fly. While it seems this is fairly simple to do so, the powers that be (my bosses) have decided to utilize an I/Q mixer (SignalCore SC5412A) to do this, so that we can also upconvert the frequency using a local oscillator signal from a signal generator (NI PXIe-5654). And I'm not entirely sure how to proceed in that case...I saw a bunch of I/Q examples for RFSAs, but that's reading, rather than writing, I/Q data, and it's not FPGA-based.

 

Is there a simple way on the FPGA to say "I want this phase and amplitude wave" but then have it output that wave as the equivalent I and Q signals? Or would I have to manually output a matching sine and cosine wave and then do math (maybe with something like CORDIC) to calculate the actual phase and amplitude of the resultant wave?

 

Thank you so much for your help, and to those that celebrate, have a very happy Thanksgiving. 🙂

0 Kudos
Message 1 of 3
(4,044 Views)

Hi Elizabeth,

 

Have you taken a look at the "Sine Wave.lvproj" example? You should be able to find it in 

 

Example Finder -> Toolkits and Modules -> FPGA -> R Series ->  Signal Generation and Processing -> Analog -> Generation -> Sine Wave

 

This example does not appear to be compatible with the PXIe 7972, but based on the example it does seem possible to generate a sinewave with a given phase and amplitude using the VIs in the "Sine Wave.vi" from that project, if you modify the getting started example for the 5783.

 

Does this help? Please let me know if you have any other questions for me! 

 

Stephen Chan 

Applications Engineer 

0 Kudos
Message 2 of 3
(3,981 Views)

The DDS Compiler would probably give you what you want. It can be a little tricky to configure, but it will be the most resource efficient way to generate a signal on the fpga.

 

If you don't mind a little extra resource usage though, the easiest way to generate the signal you're looking for is by using the frequency shift.vi that ships with the DSP library. The idea is that the frequency shift.vi can applies a shift to the IQ data, so if you connect a constant to the data input you're essentially shifting the frequency from zero to whatever you want and the output is an sine/cosine wave at whatever frequency you want. The nice part about this library is that since it is intended for use with our RF products it already outputs I and Q components. Its also got a phase input that allows you to change the phase as you see fit. If you need to modify the amplitude, you can connect the output to the Gain.vi that is also a part of the DSP library.

 

frequency_shift.png

0 Kudos
Message 3 of 3
(3,955 Views)