discuss-gnuradio
[Top][All Lists]
Advanced

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

Re: [Discuss-gnuradio] CPFSK mod/demod + strange behavior


From: Marcus Müller
Subject: Re: [Discuss-gnuradio] CPFSK mod/demod + strange behavior
Date: Fri, 10 Jun 2016 10:52:47 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.6.0

Hi Olivier,

On 10.06.2016 03:06, Olivier Goyette wrote:
Excuse me for not understanding everything, but there seem to be a lack of comprehension coming from me.

1- Where is your "625 kHz" coming from ?
2x312.5kHz, your FSK deviation, and what looks like to be about your filter bandwidth!

2- The links I provided are only the reference where I took the information for trying to build things up. I didn't include the link where it specifies the RRC and I don't have it with me now. I will feed it tomorrow.

Thanks!
3rd and most IMPORTANT ! Keep in mind I've never touched an USRP in my life before nor do I have skills in digital radio design.
Yes, I try to keep that in mind and hence I tried to illustrate my considerations :) Also, that's why I stress that you should first get your simulation running. Real world radio is hard enough as is, and the beauty of SDR really is that you can develop in simulation before you bring it to the air.
I know that it's a big project for someone as newbie as me, but we gotta learn somewhere.
I like that approach :)
Now if you agree with me, instead of replying to numerous e-mails that in my opinion tend to give less useful info and more opinion on what's good or what's not good, would it be possible to start from the beginning with the parameters I have ? Does someone has ever done CPFSK and understands it ? I don't mean offense to anyone but people on forums tend to give more their opinion and it doesn't help me at all. I want to understand what's behind the wheel.
Huh, I wasn't aware of me being overly opinionated, aside from my opinion whether you can call a single-sample FSK "FSK".

USRP N210/WBX daughtercard

baud rate = 1.041667 Mbps
sample rate = 6.25 Msps
sample/symbol for CPFSK mod = 6
modulation index (k) = 0.6
center frequency = 978MHz
delta F for CPFSK = +- 312.5 kHz
roll-off factor for the Root Raised Cosine filter = 0.5

The point is really that the RRC doesn't make sense after CPFSK, mathematically (not an opinion).

To show that we really don't want to put you down or so, and don't act based on opinion and preference, but math:

OK. Let's look at the spectrum of an FSK transmission like yours. Let's first build a slightly simplified one, so that the math doesn't kill us.

So first of all, let's look at your data stream, and define it to be a square wave (alternating -1, 1,-1,...) $s_{data}(t)$. Let us keep the frequency of this signal a bit variable, first.

Let's now decompose that data stream into two other square waves:
$s_{H}(t)$, which is 1 whenever $s_{data}>0$, else 0, and
$s_{L}(t)$, which is 1 whenever $s_{data}<0$, else 0.
We immediately see that $s_{data} =
      s_{H}+(-1)s_{L}$.

Let's also define the two tones of your FSK as signals $c_{H} = e^{j2\pi
      f_0 t}$  (H for "high") and $c_{L} =
      e^{-j2\pi f_0 t} = \overline{c_{H}}$ (L for "low") simply the complex conjugate of $c_{H}$.

Since we know that $c_{H}$ will be sent exactly  when $s_{H}$ is "on", and the same goes for the $c_{L}$ and $s_{L}$, we know that we can write the FSK signal as:

$s_{FSK}(t) =
      s_{H}c_{H} + s_{L} c_{L}$.

So, what's the spectrum $S$ of this?

$S = \mathcal
      F\left\{ s_{FSK}\right\}(f) = \mathcal F\left\{ s_{H}c_{H} + s_{L}
      c_{L}\right\}$.

Since the Fourier Transform is linear:
$S=  \mathcal
      F\left\{ s_{H}c_{H}\right\} + \mathcal F\left\{ s_{L}
      c_{L}\right\}$
Bear in mind that $s_{L} =
      1-s_{H}$, so this reduces to
$S=  \mathcal
      F\left\{ s_{H}c_{H}\right\} + \mathcal F\left\{
      \left(1-s_{H}\right) c_{L}\right\}$

So let's look at the first component: It's the Fourier Transform of a product of two functions, and by the convolution/multiplication duality for the Fourier Transform:

$S_{+1} =
      \mathcal F\left\{ s_{H}c_{H}\right\} = \mathcal F\left\{
      s_{H}\right\}*\mathcal F\left\{c_{H}\right\}$, with $*$ being the convolution operator.

$\mathcal
      F\left\{c_{H}\right\}$ is easy, it's a dirac at $\mathcal
      F\left\{c_{H}\right\}=\delta_{f_0}$. That makes convolution a lot easier, too – it reduces convolution to a frequency shift by $f_0$.
That leaves us with finding the Fourier Transform of our "positive bit stream". That is just an offset, scaled standard square wave. I won't derive that in completeness now, you can probably look up a good derivation of it in every introduction to signals and systems, but put it down how I memorized it. So what is the Fourier series that describes a square wave like this one?

$s_H =
      \underbrace{\frac12}_\text{scaling}\cdot\underbrace{\frac4\pi
      \sum\limits_{k=0}^\infty
      \frac{\sin(2\pi(2k+1)f_{sq}t)}{2k+1}}_\text{standard square
      wave}+\underbrace{\frac12}_\text{offset}$

So what you can see from this formula, or most importantly from the sum, is that a square wave's spectrum consists of the spectral components at every odd (hence, the $2k+1$) multiple of the square wave  Not only that, but the energy contained at that $(2k+1)$th harmonic just goes down with $\frac1{2k+1}$, which means that if you low-pass filter early, you lose a lot of the original signal's energy. Rule of thumb: To get something that "visually" resembles a square wave, you need to keep the DC, the first and third harmonic. Everything else will just look very much like a somehow distorted sine. Usually, you'd try to keep at least the fifth, too.

Now, the third harmonic of your $f_{sq}=\SI{1.041667}{\mega\hertz}$ signal is at 3.125 MHz. You have to shift that with your deviation $f_0$, i.e. by 312.5 kHz, and you end up with the third harmonic of the positive data wave at + 3.4375 MHz, and for symmetry reasons, the third harmonic of your negative data wave is - 3.4375 MHz. Now, that leads to a total bandwidth of $2\cdot
      3.4375=6.875$ MHz.

Even your sampling rate is lower than that, so you're neglecting the Nyquist/Shannon sampling theorem. And if you use a filter after the FSK modulation, you will cut off even more of your signal, and that means there's nothing you can do to recover it.

This, again, points to the fact that if you do any pulse shaping with a RRC, you do it with the data signal, and hence filter $s_{data}$, not $s_{FSK}$.

Best regards,

Marcus

reply via email to

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