hi everyone,

       I am using the programs of DIGITAL-BERT folder to see the bit error
rate pattern versus the SNR. The given programs are for BPSK scheme. I tried
to change it for QPSK Scheme. But seems that I did not do it right. I am
giving the modified code in the programs . Please help me out......Thanking
in advance....

*1) transmit_path.py  in /digital-bert/ folder.*


self._bits = gr.vector_source_b([1,], True)      # Infinite stream of ones
        self._scrambler = gr.scrambler_bb(0x8A, 0x7F, 7) # CCSDS 7-bit
scrambler

# Map to constellation
self._constellation = [-1-1j,1-1j,-1+1j,1+1j]
self._mapper = gr.chunks_to_symbols_bc(self._constellation,2)

# Create RRC with specified excess bandwidth
taps = gr.firdes.root_raised_cosine(sps*amplitude,  # Gain
    sps,    # Sampling rate
    1.0,    # Symbol rate
    excess_bw,    # Roll-off factor
    11*sps)         # Number of taps

self._rrc = gr.interp_fir_filter_ccf(sps,    # Interpolation rate
     taps)    # FIR taps

        # Wire block inputs and outputs
        self.connect(self._bits, self._scrambler, self._mapper, self._rrc,
self)





*2)receive_path. py in /digital-bert/ folder*

  self._agc = gr.agc_cc(1e-5, 1.0, 1.0, 1.0)

# Create RRC with specified excess bandwidth
taps = gr.firdes.root_raised_cosine(1.0,          # Gain
    self._sps,    # Sampling rate
    1.0,          # Symbol rate
    excess_bw,    # Roll-off factor
    11*self._sps) # Number of taps

self._rrc = gr.fir_filter_ccf(1, taps)

        # Create a Costas loop frequency/phase recovery block

        print "Costas alpha:", costas_alpha
        print "Costas beta:", costas_beta
        print "Costas max:", costas_max

        self._costas = gr.costas_loop_cc(costas_alpha,  # PLL first order
gain
                                         costas_beta,   # PLL second order
gain
                                         costas_max,    # Max frequency
offset rad/sample
                                         -costas_max,   # Min frequency
offset rad/sample
                                         4)             # QPSK

        # Create a M&M bit synchronization retiming block
        mm_mu = 0.5
        mm_omega = self._sps

        print "MM gain mu:", mm_gain_mu
        print "MM gain omega:", mm_gain_omega
        print "MM omega limit:", mm_omega_limit

        self._mm = gr.clock_recovery_mm_cc(mm_omega,       # Initial
samples/symbol
                                           mm_gain_omega,  # Second order
gain
                                           mm_mu,          # Initial symbol
phase
                                           mm_gain_mu,     # First order
gain
                                           mm_omega_limit) # Maximum timing
offset

        # Add an SNR probe on the demodulated constellation
        self._snr_probe = gr.probe_mpsk_snr_c(10.0/symbol_rate)
        self.connect(self._mm, self._snr_probe)


        self._c2r = gr.complex_to_real()
        self._slicer = gr.binary_slicer_fb()
        self._c2i = gr.complex_to_imag()
        self._inter = gr.interleave(gr.sizeof_float*1)
        # Descramble BERT sequence.  A channel error will create 3 incorrect
bits
        self._descrambler = gr.descrambler_bb(0x8A, 0x7F, 7) # CCSDS 7-bit
descrambler

        # Measure BER by the density of 0s in the stream
        self._ber = gr.probe_density_b(1.0/symbol_rate)


self.connect(self, self._agc, self._rrc, self._costas, self._mm)
self.connect(self._mm,self._c2r)
self.connect(self._mm,self._c2i)
self.connect(self._c2r,(self._inter,0))
self.connect(self._c2i,(self._inter,1))
self.connect(self._inter,self._slicer,self._descrambler,self._ber)




Please help me out.

Amarnath
_______________________________________________
Discuss-gnuradio mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Reply via email to