discuss-gnuradio
[Top][All Lists]
Advanced

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

Σχετ: Re: Σχετ: Re: Σχετ: Re: QAM constellation script


From: George Katsimaglis
Subject: Σχετ: Re: Σχετ: Re: Σχετ: Re: QAM constellation script
Date: Tue, 2 May 2023 05:26:49 +0000 (UTC)

Hi Marcus,

Thanks for your detailed answer!!!
Can we consider this approach as a new spread spectrum technology or is really an existing one?

Best regards

George SV1BDS 

Στάλθηκε από το Ταχυδρομείο Yahoo σε Android

Στις Δευ, 1 Μαΐ, 2023 στις 23:14, ο χρήστηςMarcus Müller
<mmueller@gnuradio.org> έγραψε:
Hi George,
thanks for the reply!

>>    "VCO generator":

>    It produces two different vectors depending of fh Boolean value. A sawtooth vector of
>    values between  -0.5 and 0.5 or the same random values between -0.5 and 0.5. The
>    sawtooth values used in alignment phase (adjusting myblock).

Yes, indeed! But I was focussing on the self.fh == True case.
>>    "Repeat":
>
>    This block offloads the previous block as is too heavy to produce random numbers at
>    the rate needed.

Well, you did not write it very efficiently, but agreed, if you just need to repeat the
vector, by all means, this is a nice way to do it.


>>    "VCO (complex)":
>    The VCO complex, with the values specified, produce frequencies between -500 kHz for
>    -0.5 and +500 kHz for +0.5 input. This block creates the frequency change.

But only for fh == False. For fh == True, you're really just piping in random numbers to a
mapper that maps the random numbers from [-0.5,+0,5] to a point on the unit circle with
phase [-π;+π]. This phase is then what is output *for every sample*, separately. Your VCO
really does only this:

output[i] = output[i-1] · exp(1j · sensitivity/sampling_rate · input[i]),

and in your case, sensitivity/sampling_rate == 2π ,

output[i] = output[i-1] · exp(1j · 2π · input[i])
          = output[i-1] · random phase increment in [-π;+π].

and because your input is just random independent numbers between -0.5 and +0.5, you just
get random independent numbers on the output: (pseudo-)White noise.

Connect a QT GUI Frequency Sink to the output of your VCO (complex), set fh==True and
looks how flat and random the output spectrum is.

(I'm attaching a subgraph of your flow graph with that sink, and also a screenshot from
the QT GUI Frequency Sink)

>>    "Multiply":
>    It moves the USB voice signal by frequency created from previous steps.

Sorry, definitely no USB created anywhere! If that was the case, the QT GUI Frequency Sink
mentioned above would have to show zero for the upper half (before you complex conjugate),
or the lower half of the spectrum, because you shift your 0-frequency-symmetric message
signal spectrum by the frequencies in the spectrum of your VCO's output, and if you only
want them to end up in the USB, then all these "shifting" frequencies would have to be in
the upper half of the spectrum.

>    You can better understand it considering frequencies rather than phases.

I'm about to say the same to you :)
Notice that frequency is the derivative of the phase. In your VCO block, you generate
completely random phase increments. The derivative of that is just again complete
randomness – every single sample.

Anything that you really can say "has a frequency" needs to have the same phase increment
for multiple samples. But you're switching the phase increment with every sample -
completely randomly.

This really nicely spreads the signal power from narrowband input signal into the full
sampling rate bandwidth, but it's really not frequency hopping.

Best regards,
Marcus

reply via email to

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