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