非流程图中心应用程序中的FFT与流程图中心应用程序(如uhd_fft)不同

时间:2015-01-13 21:44:28

标签: gnuradio usrp

我编写了一个小型GNU Radio程序来捕获和绘制来自USRP N210的FFT数据。

为了避免锁定我的GUI(matplotlib和wxpython),我只在GUI报告它空闲后才运行流程图。

为了实现这种时间安排,我使用了GNU Radio Tutorial中引入的非流程图集中方法。

基本上,我有一个看起来像这样的主循环(伪代码):

topblock.set_usrp_freq()
while True:
    topblock.run()
    data = topblock.vector_sink.data()
    thread-safe call to plot data
    wait for gui.EVT_IDLE
    topblock.skiphead.reset()
    topblock.head.reset()

流程图基本上看起来像:

self.connect(usrp, skiphead, stream_to_vector, head, fft, c2mag_sq, stats, volts_to_dBm, vector_sink)
# skiphead is modified to be resettable like head

当我使用类似的参数时,我希望看到我在运行uhd_fft -f 700M -s 10e6时看到的相同内容:uhd_fft looking normal

我的matplotlib图的输出首先非常相似,但非常明显的LO除外。我试图通过uhd_fft跟踪代码而我没有看到他们做任何LO抵消,所以我的第一个问题是问:是否uhd_fft避免以某种方式绘制LO,或者是我是如何从主循环运行流程图导致LO发音的? enter image description here

编辑:我已经确认极端LO是电压尖峰的副产品,每次流程图运行时都会发生电压尖峰(#34; run()"您需要降低到LO的样本数量可以在我的后续帖子中的时间数据中看到:voltage pulse from USRP when using simple GNU Radio flowgraph from Python

第二次运行后,我定期得到奇怪的数据,这些数据绝对没有。发生在uhd_fft。我可以通过使用skiphead块为每个流程图运行转储数千个样本来消除此问题,但我的第二个问题是:问:为什么从单独的主循环运行流程图会导致绘制垃圾数据,即使USRP没有被重新调整? uhd_fft使用以流程图为中心的流程,但没有这个问题: enter image description here

我的直觉是,在教程中没有提到运行非流程图中心应用程序时会有一些注意事项。

0 个答案:

没有答案