从零开始USRP 02 一些基本的GNU Radio操作

发布时间 2023-04-03 20:30:58作者: 爱和九九

继续学习:https://blog.csdn.net/YOUNGAAAAA/article/details/128098154

我们可以先简单创建一个USRP图:

 

 但是这个图目前是跑不了的,因为:

RuntimeError: LookupError: KeyError: No devices found for ----->
Empty Device Address

>>> Done (return code 1)

这里我暂时先不求甚解,就是说我没有硬件的话,软件是没办法给我模拟自发自收的是吧?

我们先简单讲一下搭了一个什么东西:首先,我们做了两个信号源,都是正弦信号,但是二者的频率不同,我们把这两个信号做乘法,得到一个输出,然后希望用一个USRP设备将这个输出发射出去,并用另一个USRP设备接收这个输出,从而显示在GUI上。

问题就在这个发射接收的过程,我应该是通过硬件来做的,对吧?软件应该是模拟不了这个东西,所以一直提示我找不到设备,因为我手头没有USRP设备,设备在清华。

 

Boulogeorgos实例章节一

本来其实是CPP自定义模块,但是作者曰:这一部分建议先看完GRC Boulogeorgos实例程序分析后再回过来看这个,就会清楚一些。

OK,那我就来看看什么是boulogeorgos

实例一:添加不同类型的布尔操作

 

 比如我这里加了一个与门,那么结果就是0和1必须全部为1(黑色)的时候,2才能是黑色。

哦对了,与此同时,要注意一点,即Random Source只能生成int、short和byte,因此IO要对齐的话,throttle和number sink都要调整输入输出,保持一致才能跑通。

这个问题我遇到了(小白才会遇到):https://dsp.stackexchange.com/questions/74926/source-io-size-8-does-not-match-sink-io-size-4

 

 

 

实例2:添加数学操作(加法举例):

 

 这里接了一个向量源,这个可以产生自己定义的数据,即放在一个vector里面,可以选择输出一组这个vector,也可以选择repeat输出这组向量。当然,0,0,0只是一个例子,你大可以如此定义:

 

 Tag Strobe,据说是用于添加标签,可以看一下维基百科对它的解释:

 

 就是说,这个Tags Strobe会给source打上tag,我们运行一下就能看到:

 

 具体在哪打的,其实是按照间隔来的,我上面设置的是50,如果设置为1呢?

那就是每个数据后面都会被打上tag:

 

 这个功能一般仅仅用来测试而已哈。

 然后就是说Keep1inN,或者KeepMinN。前者是保留每M段的最后一项,后者是保留N项。

打个比方:

我们输入使用一个向量:

 

 然后设置两个N均为4,其中一个保留最后一位(-1),另一个保留最后两位(都是负数),第三个我们保留所有的序列不做处理。但是有一点需要注意,即keep1inN,keep的是最后一位数,即the last one,但是keepMinN中keep的却是offset之后的数字,即如果想实现保留后两位,要调整一下offset从2之后keep。

 

  结果如下:

 

 与此同时我们还可以让窗口中对输入信号可选择:

 

 

 

 实例3:画出一组数据的直方图

 

 带着uniform的是平均分布的信号源,如果不带uniform,生成的是正态分布的数据源。结尾是一个立方图显示的组件。