discuss-gnuradio
[Top][All Lists]
Advanced

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

Re: the principle of "constellation modulator"?


From: Steve Hubbard
Subject: Re: the principle of "constellation modulator"?
Date: Fri, 7 May 2021 20:03:58 +0930
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.8.1

Hi ????????,

I don't know the inner workings of the module but if I want to generate, for example PSK, from first principles, I do it as follows. For QPSK there are four points in the constellation so each represents 2 bits. The points may be 1 + j, -1 - j, 1 - j and -1 + j, so a sample representing 2 bits would be one of these. If there is more than 1 sample per symbol, then the other samples are zero (interpolation). The next sample follows and so on. This forms the input to your root Nyquist filter, e.g. SRRC. The output of the filter is the modulated signal. As the previous response said, the centre frequency is zero. If you want any other frequency, a complex mix is required. To help you understand this you could try writing some code in Matlab, Octave or Python etc. to implement a simple signal chain.

Regards,

Steve Hubbard

On 7/5/21 7:03 pm, ???????? wrote:
Recently I was learning the working principle of "constellation modulator". I read the file "generic_mod_demod.py" and realized that it is a hierarchical block. I was confused about its working principle, why there is no other action after it is connected to rrc_filter. What? Shouldn't the general IQ modulation have "acoswt-bsinwt" or "(a + bi) exp(-jwt)" operation? I haven't seen similar operations in the code, but the output of the "constellation modulator" is a baseband complex modulated signal. Is there anything else I can't see?
mod code:
?0?2 ?0?2 ?0?2 ?0?2 # Connect
?0?2 ?0?2 ?0?2 ?0?2 self._blocks = [self, self.bytes2chunks]
?0?2 ?0?2 ?0?2 ?0?2 if self.pre_diff_code:
?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 self._blocks.append(self.symbol_mapper)
?0?2 ?0?2 ?0?2 ?0?2 if differential:
?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 self._blocks.append(self.diffenc)
?0?2 ?0?2 ?0?2 ?0?2 self._blocks += [self.chunks2symbols, self.rrc_filter, self]
?0?2 ?0?2 ?0?2 ?0?2 self.connect(*self._blocks)




reply via email to

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