各位前辈好,想请教如果想要透过usrp在一个指定的时间录制0.01s長度的讯号,讓兩台usrp能夠在指定間錄製訊號,该怎么做?
目前都是透过python的datetime模组去指定时间来启动usrp,但是这样变成两台usrp的启动时间还是会有些微的差距,希望能达到启动时间几乎一致
我有去买了GPSDO震荡器装在USRP上,能够使USRP的时间更加精准
录制的程式是透过gnuradio平台录制,录制的时间是在gnuradio平台产生的python档里面加入了timesleep模组
录制讯号的程式码:
#!/usr/bin/env python2
# -*- coding: utf-8 -*-
##################################################
# GNU Radio Python Flow Graph
# Title: Top Block
# Generated: Tue Jun 1 14:49:46 2021
##################################################
from gnuradio import blocks
from gnuradio import eng_notation
from gnuradio import gr
from gnuradio import uhd
from gnuradio.eng_option import eng_option
from gnuradio.filter import firdes
from optparse import OptionParser
import time
class top_block(gr.top_block):
def __init__(self):
gr.top_block.__init__(self, "Top Block")
##################################################
# Variables
##################################################
self.samp_rate = samp_rate = 1e6
##################################################
# Blocks
##################################################
self.uhd_usrp_source_0 = uhd.usrp_source(
",".join(("", "")),
uhd.stream_args(
cpu_format="fc32",
channels=range(1),
),
)
self.uhd_usrp_source_0.set_samp_rate(samp_rate)
self.uhd_usrp_source_0.set_center_freq(102.5e6, 0)
self.uhd_usrp_source_0.set_gain(20, 0)
self.uhd_usrp_source_0.set_antenna('TX/RX', 0)
self.blocks_file_sink_0 = blocks.file_sink(gr.sizeof_gr_complex*1, '/home/lichen/0610_time_102.5M/build/102.6_park8_1M', False)
self.blocks_file_sink_0.set_unbuffered(False)
##################################################
# Connections
##################################################
self.connect((self.uhd_usrp_source_0, 0), (self.blocks_file_sink_0, 0))
def get_samp_rate(self):
return self.samp_rate
def set_samp_rate(self, samp_rate):
self.samp_rate = samp_rate
self.uhd_usrp_source_0.set_samp_rate(self.samp_rate)
def main(top_block_cls=top_block, options=None):
tb = top_block_cls()
tb.start()
# try:
# raw_input('Press Enter to quit: ')
# except EOFError:
# pass
time.sleep(0.03)
tb.stop()
tb.wait()
if __name__ == '__main__':
main()