Nick Stephens wrote:
Hello Everyone - I am doing my best to understand how the TVRx board works. I have Rev. 3 of the TV board, with MicroTuner module with IF of ~44 MHz.(Preface - Thanks for your patience, as I am relatively new to GNU radio and the USRP!) In my experiment, I have an 80 MHz sine wave at 2 mV pk-pk input to the TV tuner from a function generator. The goal is to properly record this signal to a data file, then plot the time domain and FFT of the signal in Matlab to verify functionality. My record script is from the examples directory: #!/usr/bin/env python """ Read a specified number of samples from a USRP and write the data to a file. """ from gnuradio import gr, eng_notation from gnuradio import usrp import sys class record_graph(gr.flow_graph): def __init__(self): gr.flow_graph.__init__(self) self.u = usrp.source_c(which=0, decim_rate=8) self.dst = gr.file_sink(gr.sizeof_gr_complex, 'recorded.dat') self.head = gr.head(gr.sizeof_gr_complex, 5000) self.connect(self.u, self.head, self.dst) self.u.set_mux(usrp.determine_rx_mux_value(self.u, [1,0])) self.subdev = usrp.selected_subdev(self.u, [1,0]) self.subdev.set_gain(10) tuning = self.u.tune(0, self.subdev, 79000000) print "baseband_freq:", tuning.baseband_freq print "dxc_freq:", tuning.dxc_freq print "residual_freq:", tuning.residual_freq print "inverted:", tuning.inverted fs = self.u.converter_rate() print "source converter rate:", fs try: record_graph().run() except KeyboardInterrupt: pass ---- Now, as I understand it, with my tuning target frequency in this code at 79 MHz and a decimation rate of 16, and 64 MS/s sampling, then the sine wave signal should appear at approximately a 1 MHz frequency. However, all I am seeing is wideband noise. Does anybody know why this may be? Also, what can you tell me about using the TV board?
We've solved this problem internally (I'm working directly with Nick at Purdue), but here's the answer, for the record.
The short answer is that the 80 MHz test signal was wiped out by the Hilbert filter in the ADC. Here's why: The specified 79 MHz center frequency gets down-converted by the tuner module on the TVRX daughter card to 44 MHz (for our version of the card). This then goes to an ADC on the motherboard, sampling at 64 MHz. Draw the aliasing diagram, and you'll see that 44 MHz aliases down to 20 MHz, and that the spectrum is inverted. So what was 80 MHz is now at 19 MHz rather than 21 MHz. The Hilbert filter, if I understand it correctly, then passes only the positive portion of the frequency spectrum on to the FPGA. Finally, the FPGA's digital down-converter takes what was at 20 MHz down to 0, and the test signal that was at 19 MHz disappears into the ether.
A test signal 1 MHz LESS than the specified center frequency then aliases down to 21 MHz and then down-converts to 1 MHz.
--Paul _______________________________________________ Discuss-gnuradio mailing list [email protected] http://lists.gnu.org/mailman/listinfo/discuss-gnuradio
