[Top][All Lists]

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

[Discuss-gnuradio] BPSK to QPSK

From: amarnath alapati
Subject: [Discuss-gnuradio] BPSK to QPSK
Date: Wed, 3 Mar 2010 17:06:01 +0530

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)

Please help me out. 


reply via email to

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