|
From: | Arturo Rinaldi |
Subject: | [Discuss-gnuradio] Issues estimating the BER of a 16-QAM modulation (and of M-QAM of course) |
Date: | Fri, 05 Apr 2013 19:41:17 +0200 |
User-agent: | Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:17.0) Gecko/20130328 Thunderbird/17.0.5 |
Hi folks, i have bumped into an error while updating my thesis
research to the latest version of gnuradio. It is a simple tool to estimate the BER of the digital modulation. I had to change some lines of code due to the fact that now the block constellation_decoder_cb accepts as input a "constellation object" and not a complex point tuple (i.e. [1+1j,1-1j,-1-1j,-1+1j] and so on) so i modified my code in the following way (only the deconding part). By asking to the gnuradio mailing list i got the following advice : rot = (3.0/2.0)*sqrt((8.0/5.0)*bit_energy) rotated_const = map(lambda pt: pt * rot, qam.make_nondifferential_constellation(16,gray_coded=True) constell = digital.constellation_calcdist(rotated_const,[],1,1).base() # (1) to get the base points and constellation object self.slicer = digital.constellation_decoder_cb(constell) # if self._gray_code: # self.symbol_mapper = gr.map_bb(qam.gray_to_binary[arity]) # else: # self.symbol_mapper = gr.map_bb(qam.ungray_to_binary[arity]) # unpack the k bit vector into a stream of bits self.unpack = gr.unpack_k_bits_bb(self.bits_per_symbol()) # (2) self.connect(self,self.slicer, self.unpack,self) which works fine for M-PSK modulation but since QAM is a mix of both phase and amplitude modulation i can't recover the exact position of the constellation points. I think the error stays in a wrong calculation of the euclidean distance. Any suggestions ? i really need help or otherwise the functionality of my tool will be dramatically reduced ! ! ! Thanks in advance, Arturo P.S. : The modulator block is shaped in the "old way", by just only passing as parameter the constellation points to the block self.chunks2symbols = gr.chunks_to_symbols_bc(rotated_const) I also use (2) because of my way to compare original bit by decoded bit and then calculating the BER. However the main issue is the wrong decoding of the constellation points by (1) |
[Prev in Thread] | Current Thread | [Next in Thread] |