Dear all,

I'm trying to build a BPSK transmitter which is modulated with a group of 
binary sequence of bits by USRP1 with LFTX/RX plugged on. The frequence of the 
sequence in baseband should be 25kHz, 

I'm modifying the digital-bert project in gnuradio-example, using the following 
two line to take the place of the BERT data creation (._bits and ._ scrambler): 

 self._bits = (1,0,0,1, 0,0,0,1, 0,1,1,1, 1,0,1,0,
                      1,1,1,0, 0,1,0,1, 1,0,1,1, 0,1,0,0,
                      1,1,1,0, 1,0,1,1, 1,1,0,1, 0,0,0,1,
                      0,0,1,1, 0,1,0,1, 1,1,0,0, 0,1,0,0,
                      0,0,1,0, 0,1,0,0, 0,0,1,1, 1,1,1,0,
                      0,1,1,0, 0,1,1,1, 1,0,1,0, 0,0,1,0,
                      0,1,0,0, 0,0,1,0, 0,0,1,1, 1,0,1,0,
                      1,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0)
 self.in_data = gr.vector_source_b(self._bits, True )

Then the data will map to the same constellation and filtered by the same rrc 
as BERT data does. 

To meet the requirement of the baseband frequence, the parameters are set as 
shown as following:
rate: 25e3
sps:  32
if_rate: 800e3 (=rate*sps)
interp: 160 (=_dac_rate/if_rate=128e6/800e3)
freq:3M
amplitude: 128 
--excess-bw: 0.35

Are these parameters set correctly? How to decide the amplitude? Will the 
signal be saturated at the receiver side, if the amplitude is too large but 
less than 32767?

At the receiver side, the received raw signal in baseband will be required to 
recorded in  a data file without frequency recovery and time offset correction. 
Such that my receiver only tune the  signal back to baseband and filter it by a 
matched filter rrc and sink the data in a data file. My top block for the 
receiver is:

class rx_bpsk_block(gr.top_block):
    def __init__(self, options):    

    gr.top_block.__init__(self, "rx_mpsk")

        print "USRP decimation rate", options.decim_rate

        # Create a USRP source at desired board, sample rate, frequency, and 
gain
        self._setup_usrp(options.which,
                         options.decim_rate,
                         options.rx_subdev_spec,
                         options.freq,
                         options.gain)
       
        # Create the receiver
        if_rate = self._usrp.adc_rate()/options.decim_rate
    self._sps = int(if_rate/options.rate)
    
    
    # Create RRC with specified excess bandwidth
    taps = gr.firdes.root_raised_cosine(1.0,          # Gain
                        self._sps,    # Sampling rate
                        1.0,          # Symbol rate
                        options.excess_bw,    # Roll-off factor
                        11*self._sps) # Number of taps

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

    self._c2r = gr.complex_to_real()

    #sink the data into a file
    self._sink = gr.file_sink(gr.sizeof_float, options.filename)
        
    self.connect(self._usrp, self._agc,self._rrc, self._c2r, self._sink)

The parameters are set as:
gain: 20
rate: 25e3
decim-rate: 8
freq:3M

How to determine the decim-rate?

By using octave to plot the data recorded, the received signal I got is like a 
impulse response of root-raised-cosine filter. What I suppose to get is the 
signal after tunning back to baseband and filtered by a lowpass filter. What 
the problem will be?

Thank you so much in advance

Regards,
Yan

<<attachment: ynie3.vcf>>

_______________________________________________
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
http://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Reply via email to