discuss-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Discuss-gnuradio] USRP Complex Demodulation


From: Roee Bar
Subject: Re: [Discuss-gnuradio] USRP Complex Demodulation
Date: Tue, 17 Nov 2015 00:46:03 -0800

Yes, the images came ok.

Using your original example of transmitting I(t)=cos(wm*t), Q(t)=sin(wm*t), let’s take I(t)=cos(wm*t) and Q(t)=0: 
sout(t) = cos(wm*t)*cos(wo*t) - 0*sin(wo*t) = 1/2 * [ cos(wm*t-wo*t) + cos(wm*t+wo*t) ]

At the receiver (sorry if the derivation is too explicit):
I(t) = sout(t) * cos(wo*t) =   1/2 * [ cos(wm*t-wo*t) + cos(wm*t+wo*t) ] *  cos(wo*t) = 1/4 * [ cos(wm*t) + cos(wm*t - 2*w0) + cos(wm*t + wo*t) + cos(wm*t) ] = 1/2 * cos(wm*t) + 1/4 * [cos(wm*t - 2*w0) + cos(wm*t + 2*wo*t)]
Q(t) = sout(t) * -sin(wo*t) =  1/2 * [ cos(wm*t-wo*t) + cos(wm*t+wo*t) ] * -sin(wo*t) = 1/4 * [ -sin(wm*t) + sin(wm*t - 2*wo*t) - sin(wm*t + 2*wo*t) + sin(wm*t) ] = 1/4 * [ sin(wm*t - 2*wo*t) - sin(wm*t + 2*wo*y) ]

After the low pass filter, which removes 2*wo+wm and 2*w0-wm components, we end up with:
I(t) = 1/2 * cos(wm*t)
Q(t) = 0

But in the USRP I don’t get Q(t)=0… 


Thanks,
Roee


On 16 Nov 2015, at 18:06, James Humphries <address@hidden> wrote:

I'm referring to the receiver. It's essentially two receivers in parallel, one mixing down with the local oscillator (cosine) and the other mixing down with the same local oscillator, but phase shifted -90 degrees (sine). This is how it generates two components for the input signal. Of course, you can only input a real signal, but the receiver can generate both the I and Q components in the 'dual' receiver mode. This is similar to how a vector network analyzer (VNA) operates.

Did the images I sent on the first e-mail come through ok? They were pretty basic, but show the layout of the transmitter and receiver.

-Trip

On Mon, Nov 16, 2015 at 5:47 PM, Roee Bar <address@hidden> wrote:
Thanks James,

What do you mean by “USRP will generate the in-phase and quadrature components”? Are you referring to the USRP receiver or transmitter? I am feeding the USRP transmitter with a real only signal s(t)=cos(w0*t), why does the received signal has an imaginary component (i.e. Q(t) is not zero)?

Thanks again,
Roee


On 16 Nov 2015, at 14:34, James Humphries <address@hidden> wrote:

Hi Roee,

The USRP is not expecting any particular type of data. The USRP is a direct conversion transceiver that operates on I and Q samples, so in theory, you should be able to generate/receive any type of signal. If you input a cosine to the USRP, in will generate the in-phase and quadrature components of that signal. For a simple cosine input, you get I(t)=cos(w0t) and Q(t)=sin(w0t) components. 

Yes, the USRP performs low-pass filtering, but this is to remove out-of-band noise and other signals. It is not to suppress the side-bands like you would see in a system that only samples the in-phase signal components. Remember, we are down-converting to baseband, so the low-pass filter actually filters from -BW/2 to +BW/2 (where BW is your total bandwidth, in this case, it is usually your sample rate). Those 'mirror' images don't exist in this system since both the positive and negative frequency components can be uniquely determined with the I/Q components of the signal. If you were to just zero out either the I or Q component, then you would see your mirror images in frequency again.
 
-Trip

On Mon, Nov 16, 2015 at 2:52 AM, Roee Bar <address@hidden> wrote:
Hi James,

Thank you very much for your time and effort!

Your explanation of the USRP complex modulation/demodulation is equivalent to what I originally described. 

Since my experiments show that the receiver did not always received what was transmitted, I thought there was something wrong with my assumptions about the complex demodulation, but my understanding was correct.

I believe the reason for the inconsistency between my sent signal and the received signal is that my original signal was not single-side-band, or, not ‘proper’ IQ signal. 
Taking your example, if I wanted to transmit cos(w0*t), I transmitted s(t)=cos(w0*t), instead s(t)=cos(w0*t)+j*sin(w0*t). In that case, I received I(t)=cos(w0*t) but Q(t) was not zero (sometimes it was something like sin(w0*t) but not always).

So I guess the USRP receiver performs some low pass filtering which removes the lower-side-band or something similar. 

Can anyone confirm that the USRP expects single-side-band signals so I can put this issue to rest?

Thanks in advance,
Roee
 




On 13 Nov 2015, at 19:40, James Humphries <address@hidden> wrote:

Hi Roee,

That's a great question! There are lots of explanations on the topic, but I'll try to show just some basics of the USRP (and is applicable to any direct conversion transceiver). For completeness sake, I'm going to include a lot more information than you probably need here. I've just copied over some figures from my thesis work to help explain some things.

Since the USRP is operating as a direct conversion transceiver, converting from RF to baseband (and vice versa), we need a way to be able to determine both the negative and positive frequency components of our signal. As you know, with only real samples, you cannot distinguish between the positive and negative frequency components due to the ambiguity in phase. To fix this, we need to decompose our signal into an In-Phase (Real, I) and Quadrature (Complex, Q) components. With these components, we can form a phase vector on a complex plane. Each sample in this system will consist of an In-Phase and Quadrature component. These components are 90 degrees out of phase, as shown on the complex plane below:

<I-Q_Diagram.png>


With this method to represent our signal, we can determine the negative and positive frequency components of the signal and perform complex phase modulation techniques (among many other advantages). Luckily, we already have two functions that are in quadrature, sine and cosine.

Let's say we do have a complex signal, s(t), that we want to transmit. This signal is composed of the I/Q components, so we'll say s(t) = I(t) + Q(t). The key here is that the I component is multiplied by a cosine term and the Q component is multiplied by a sine term. I've included a diagram below to illustrate:

<IQ_modulation_TX.png>

The two terms are then added into a single output and transmitted. For example, let's say we want to transmit a cosine signal, cos(wmt). The I component is cos(wmt), but the Q component is sin(wmt). When we mix our signals up, we end up with:

sout(t) = cos(wmt)*cos(wot) - sin(wmt)*sin(wot)  (minus sign due to -90 degree phase shift from LO) (wm is signal frequency, wo is oscillator frequency)

Using some trig identities, this expands to:

sout(t) = 1/2 * [ cos(wmt-wot) + cos(wmt+wot) ] - 1/2 * [ cos(wmt-wot) - cos(wmt+wot) ]

The first and third cosine terms cancel, leaving you with just the signal you wanted to output, but offset by your LO frequency:

sout(t) = cos(wmt+wot)

Receiving is just the opposite. Here is the receiver diagram:

<IQ_modulation_RX.png>

Multiply the incoming signal by a cosine and sine term to down-convert to baseband and also generate your I and Q components. The math is exactly the same in this case. Now, say we are receiving that cosine signal that we just transmitted. This gets decomposed into its I and Q components and you end up just where we started above. I think you can work it out from here to get the answer you were looking for.

Here is a nice site I like to use since it has good diagrams and illustrations:


And a paper on direct conversion architecture (advantages/disadvantages):


Hopefully that points you in the right direction, let me know if you need any more info (or any USRP specific info).

-Trip


On Fri, Nov 13, 2015 at 9:25 PM, Roee Bar <address@hidden> wrote:
Hello,

I am trying to understand how the USRP performs the modulation/demodulation to/from higher frequencies.

Let's say I have a complex signal s(t). When I feed it to the USRP block, my understanding is that the USRP performs something like s(t)*exp(i*w*t), and transmit the real part of it, i.e.,
r(t) = 1/2 * (s(t)*exp(i*w*t) + s_c(t)*exp(-i*w*t)),
where s_c is the complex conjugate of s(t).

However, I couldn't find any explanation how the receiver brings the signal back to its original representation. My experiments show that it's not just multiplication with exp(-i*w*t) followed by low pass filter, but something else. The USRP source complex output is not the original s(t). Can someone please clarify this issue?

Thanks in advance!
Roee


_______________________________________________
Discuss-gnuradio mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio



_______________________________________________
Discuss-gnuradio mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio




_______________________________________________
Discuss-gnuradio mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio




reply via email to

[Prev in Thread] Current Thread [Next in Thread]