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....
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