10-10-2007 06:53 AM
10-10-2007 09:36 AM
10-10-2007 02:02 PM
10-10-2007 02:22 PM
10-10-2007 09:16 PM
10-11-2007 12:14 PM
Hey Jieyi,
There are two approaches to generate sinewave using I&Q signals.
The fundamental formula for generating IF waveform using I&Q signals is:
IF (t) = I(t)*cos(Wc*t)- Q(t)*sin(Wc*t);
where IF(t) is the IF waveform
I(t), Q(t) are I&Q waveforms
Wc is the carrier frequency
One way as Markos mentioned is to set I(t) as DC value.
In this case, it would setting I=1, Q=0. Then IF(t)= cos(Wc*t). This means that the waveform generated in this mode, IF signal generated will have same frequency as carrier frequency. To change frequency of IF waveform in this mode, you would have to change carrier frequency (Wc). To change carrier frequency on the fly, we can modify the property node "Carrier Frequency". YWe can do multiple updates to the carrier frequency to get frequency sweep. However, this will be software timed.
Another way is to make I and Q signals as sine and cosine signals.
In this case, IF(t)= cos(wx*t)*cos(Wc*t)- wx(t)*sin(Wc*t) = cos((wc+wx)*t+theta)
Notice that in this case, the frequency of the output signal is Wc+Wx. In this mode, we can keep Wc constant and modify Wx on the fly. To change IF frequency in this case, we would have to constantly sweep the Wc(t) by changing the frequency content of I&Q signals. You can download a chirp signal for the I/Q signals which are out of phase and sweep the IF waveform.
If you are using NI PXI-5610 and NI PXI-5441, you can use NI-RFSG driver for generating required signal.
The particular example of interest I would recommend for your application to get started is to use
"C:\Program Files\National Instruments\LabVIEW 8.2\examples\instr\niRFSG\niRFSGExamples.llb\Large Arbitrary Waveform Generation.vi".
This examples downloads the complete chirp signal before the start of generation. However, you can modify this program to do streaming. I can help you on that if this example doesn't suffice.
Let me know if I am not clear on anything.
Can you elaborate more on "it will start with sine wave, after which, I will change it to BPSK" and I would be more than happy to help you out.
Thanks,
Kalyan
10-11-2007 01:09 PM
10-16-2007 11:45 PM
"Another way is to make I and Q signals as sine and cosine signals.
In this case, IF(t)= cos(wx*t)*cos(Wc*t)- wx(t)*sin(Wc*t) = cos((wc+wx)*t+theta)
Notice that in this case, the frequency of the output signal is Wc+Wx. In this mode, we can keep Wc constant and modify Wx on the fly. To change IF frequency in this case, we would have to constantly sweep the Wc(t) by changing the frequency content of I&Q signals. You can download a chirp signal for the I/Q signals which are out of phase and sweep the IF waveform. "
Am I right to say that the Wc will be set to fixed value, ie for my case 25MHz on the Carrier Frequency, while I will do a sweep, using the ramp function, on the Wx, which is the frequency of the I&Q signal?
10-17-2007 11:09 AM
Hi Jieyi,
Am I right to say that the Wc will be set to fixed value, ie for my case 25MHz on the Carrier Frequency, while I will do a sweep, using the ramp function, on the Wx, which is the frequency of the I&Q signal?
Yes, you would set the carrier frequency to 25MHz. Regarding the sweep of frequency for I/Q signals. You can notice that in one of the subVI's the example I referred, we ramp the frequency of I/Q signals. To create I/Q array from the frequency ramp in time-domain, we make use of polar notation.
To perform this operation easily in LabVIEW:
1) Create a Ramp signal for the frequencies you want to sweep with Sampling Rate = I/Q Rate.
For example, if you want to sweep from 25.5MHz- 26MHz. Then you would create Ramp Signal which will sweep from 0.5-1MHz after setting the carrier frequency to 25MHz.
You can notice that in RFSG driver examples.
C:\Program Files\National Instruments\LabVIEW 8.2\instr.lib\niRFSG\niRFSGExamplesSupport.llb\rfsg_Get Next Chirp Waveform Fragment for Large Waveform Example.vi .
If you don't have RFSG driver installed, attached VI demonstrates this operation and you can modify it accordingly for your application.
2) Then feed the output to the theta input of "Polar to Complex" function in LabVIEW. Essentially you are sweeping theta of "r*exp(j*theta)" with r=1. This will create the complex array I(t)+j * Q(t)
3) The rectangular co-ordinates of this complex array will give us I(t) &Q(t) signals needed for the generation of IF signal.
Let me know if I am not clear on anything.
10-18-2007 11:15 AM