This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/tetra@lists.osmocom.org/.
Vahid Behzadan vbehzadan at yahoo.comHi, I am currently trying to implement a modulator/demodulator for TETRA using pi/4 DQPSK. I tried to use cqpsk.py which was provided with this package, but apparently some functions such as psk.constellation[] are not available in the new version of gnuradio. I created a list of constellation points to be used by chunks_to_symbols_bc() function, and I think this has solved this issue. I have another issue: when I modulate a string of bits in a file, and then demodulate it, the output contains 10 zeros and then a few numbers between 0 to 255 which does not seem to be related to the input bit stream at all. Could anyone please advise me on the matter? I am using GNURadio3.6.0, and main bits of code are attached: Regards, Vahid CQPSK.py cqpsk_mod() modification: ... self.pi4map = [1, 3, 7, 5] self.constel = [1+0j,0.7+0.7j,0+1j,-0.7+07j,-1+0j,-0.7-0.7j,0-1j,0.7-0.7j] self.symbol_mapper = gr.map_bb(self.pi4map) self.diffenc = gr.diff_encoder_bb(arity) self.chunks2symbols = gr.chunks_to_symbols_bc(self.constel) ... ------------------------------------------------------------------- Modulator: sample_rate = options.sample_rate symbol_rate = 18000 sps = 2 IN = gr.file_source(gr.sizeof_char, options.input_file, repeat = False) #IN = (1,0,0,0,1,1,0,0) #src = gr.vector_source_b (IN) MOD = cqpsk.cqpsk_mod( samples_per_symbol = sps, excess_bw=0.35, log=options.log, verbose=options.verbose) OUT = gr.file_sink(gr.sizeof_gr_complex, options.output_file) # r = float(sample_rate) / float(new_sample_rate) # INTERPOLATOR = gr.fractional_interpolator_cc(0, r) self.connect(IN, MOD, OUT) --------------------------------------------------------------- Demodulator: sample_rate = options.sample_rate symbol_rate = 18000 sps = 2 # output rate will be 36,000 ntaps = 11 * sps new_sample_rate = symbol_rate * sps channel_taps = gr.firdes.low_pass(1.0, sample_rate, options.low_pass, options.low_pass * 0.1, gr.firdes.WIN_HANN) FILTER = gr.freq_xlating_fir_filter_ccf(1, channel_taps, options.calibration, sample_rate) sys.stderr.write("sample rate: %d\n" %(sample_rate)) IN = gr.file_source(gr.sizeof_gr_complex, options.input_file, repeat = False) DEMOD = cqpsk.cqpsk_demod( samples_per_symbol = sps, excess_bw=0.35, costas_alpha=0.03, gain_mu=0.05, mu=0.05, omega_relative_limit=0.05, log=options.log, verbose=options.verbose) self.convert = gr.float_to_char() self.convert2 = gr.float_to_char() OUT = gr.file_sink(gr.sizeof_char, options.output_file) self.sink1 = gr.vector_sink_b() r = float(sample_rate) / float(new_sample_rate) INTERPOLATOR = gr.fractional_interpolator_cc(0, r) self.connect(IN, FILTER, INTERPOLATOR, DEMOD, self.convert, OUT) self.connect (DEMOD,self.convert2,self.sink1) def print_data(self): print "data in sink1 is: ",self.sink1.data() --------------- -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.osmocom.org/pipermail/tetra/attachments/20120601/d73fab95/attachment.htm>