Introduction 引言

Some USRP devices are capable of being grouped to form a single, virtual device. A single uhd::usrp::multi_usrp instantiation can control such a compound of devices.

一些 USRP 设备能够组合成 multi_usrp 设备。并通过一个 uhd::usrp::multi_usrp 实例对象来控制这个 multi_usrp 设备。

Currently, the following devices support this capability: 

目前,支持这种组合能力的设备有:

  • USRP2 / N2x0 Series
  • X3x0 Series

Note that only USRPs of the same type can be combined.  

注意: 只有同类型的 USRP 设备才可以组合使用。

Setting up devices 设置设备

A description of a multiple-USRP setup can be found on the respective device's manual pages.

在相关的设备手册页可以看到关于 multi_usrp 设置的描述。注:指的是下图这里:

Addressing of a compound of devices is done by listing multiple addresses, e.g.:

通过列出多个设备的地址,完成这种 multi_usrp 设备的地址配置:

addr0=192.168.10.2,addr1=192.168.20.2

Channel and Device Numbering 信道&设备编号

Assume we have combined 2 X310 USRPs into a single multi_usrp using the address string given above, maybe using the following command:

假设我们使用上面给出的地址字符串,将两个USRP X310设备组合,配置成一个 multi_usrp 设备,可能使用下面的命令:

uhd::device_addr_t args("addr0=192.168.10.2,addr1=192.168.20.2");
uhd::usrp::multi_usrp::sptr usrp = uhd::usrp::multi_usrp::make(args);

Some uhd::usrp::multi_usrp commands require passing a device index. This is simply the index in the address list, so say we want to check the master clock rate on both devices, this would be valid:

一些 uhd::usrp::multi_usrp 方法需要将设备索引(母板的编号)作为实参。索引就是地址列表对应的编号,即地址为addr0=192.168.10.2的母板对用的索引为0,addr1对用的索引为1,因此,如果我们想要查看2个母板的时钟率,需要使用下面的合法语句。

double mcr0 = usrp->get_master_clock_rate();
double mcr1 = usrp->get_master_clock_rate();

Some methods default to applying to all devices, so the following command would set the time on all devices to zero:

一些方法默认可以应用于所有的设备,因此下面的命令可以设置所有设备的时间为0。

usrp->set_time_next_pps(uhd::time_spec_t());

So, device indexes run from 0 to N-1 where N is the number of devices.

因此,设备索引取值范围为 0 - N-1,N为设备数量。

Channels are indexed in a similar way. Channel indexes run from 0 to M-1 where M is the total number of channels on all devices.

信道(天线数)索引与设备索引(母板数)类似,范围为 0 - M-1,M是所有设备总的信道数。

The number and order of channels per device depends on the subdev spec (see also Specifying the Subdevice ). In the current example, assume all the X310 USRPs are using their standard configuration, and all have two daughterboards inside.

每个设备的信道数量和编号依赖于子设备的规格(see also Specifying the Subdevice )。在当前例子中,假设所有的X310设备都使用标准配置,并且每个母板都有两个子板。

In this case channels 0 and 1 map to slot A and B of the first USRP, respectively. Channels 2 and 3 map to slots A and B of the second USRP, and so on.

在这种条件下,信道0,1分别的映射到第1个USRP的插槽A,B。信道2,3分别映射到第2个USRP的插槽A,B,以此类推。

However, by changing the subdev spec on individual devices, this can change. Say we have this unusual piece of code next:

但是,通过改变一个子设备规格。也就是说,我们有下面代码段,通常我们不这么做:

usrp->set_rx_subdev_spec("A:0 B:0", );
usrp->set_rx_subdev_spec("A:0", );
usrp->set_rx_subdev_spec("B:0 A:0", );

The first device uses the default configuration. The second device artificially disables slot B, giving this USRP a single channel only. The third device uses both devices, but flips their order.

第1个设备使用默认配置,第2设备人为的不用第2个插槽,只用这个USRP的一个信道。第3个设备使用两个信道,但是改变他们的顺序编号。

Now, there's a total of 5 channels, mapped as:

现在,我们的到5个信号,映射如下:

  • Channel 0: Slot A of Device 0
  • Channel 1: Slot B of Device 0
  • Channel 2: Slot A of Device 1
  • Channel 3: Slot A of Device 2
  • Channel 4: Slot B of Device 2

While valid, this kind of configuration is not recommended unless heavily documented. It is usually simplest to call set_rx_subdev_spec() without a device index, which will set the same subdev spec on all devices. This assumes all devices have a similar daughterboard configuration

除非有正当的理由,否则不建议使用这样的配置。通常最简单的是调用不带设备索引的 set_rx_subdev_spec() (第二个参数有默认值),这样就会设置所有设备相同的子设备。这是假设所有的设备都有相同的子板配置。

MIMO Operation MIMO 操作

When a multi-channel streamer is generated from a compound multi_usrp, and a streamer with multiple channels is generated, MIMO operations is automatically chosen. This means samples will be aligned between streams automatically.

当multi_usrp产生 multi-channel 流的时候,MIMO操作会自动的将各个流的样点对齐。

In order for this to work, all devices must use a common time and frequency reference. This can be achieved in different ways, e.g. by daisy-chaining devices (for a small number of X-Series devices), using the MIMO cable (when only 2 N2x0 devices are used), or using a clock distribution system, e.g. an OctoClock. See Device Synchronization and the individual device manuals on more details on how to do this.

为了对齐各个channel 流的样点,所有的设备必须有一个共同的时间和频率参考。这可以通过不同的方式实现。例如,1. 通过daisy-chaining devices (对于少数X-系列设备);2. 使用MIMO Cable(两个N2x0设备);或者使用时钟分布系统,详见 Device Synchronization

本文链接:GNU Radio: Multiple USRP configurations 配置多个USRP设备

参考链接:Multiple USRP configurations

GNU Radio: Multiple USRP configurations 配置多个USRP设备的更多相关文章

  1. GNU Radio: Synchronization and MIMO Capability with USRP Devices

    Application Note Synchronization and MIMO Capability with USRP Devices Ettus Research Introduction S ...

  2. Ubuntu18.04安装UHD+GNU Radio后找不到USRP B210解决办法

    一.在终端中输入uhd_usrp_probe,提示USB错误,没有权限. 解决办法: 输入 : sudo uhd_usrp_probe 二.GNU Radio中出现找不到设备,地址为空的错误: 错误原 ...

  3. GNU Radio: USRP2 and N2x0 Series

    Comparative features list 相对性能清单 Hardware Capabilities: 1 transceiver card slot External PPS referen ...

  4. GNU Radio安装教程: Ubuntu14.04 + uhd3.10.0 + gnuradio3.7.10.1

    1. 更新和安装依赖项 在编译安装uhd和gnuradio之前,确保已安装所需依赖项.Ubuntu系统运行: sudo apt-get update 安装UHD和GNURadio所需依赖项: On U ...

  5. GNU Radio 入门培训

    1. GNU Radio介绍 1.1 什么是GNU Radio GNU Radio是一个完全开源的软件无线电结构平台,它可以用来设计和仿真,也可以用来连接真实的无线电系统.GNU Radio是一个高度 ...

  6. 使用Octave分析GNU Radio的数据

    Octave 是 GNU Radio 的最流行的分析工具,因此 GNU Radio 软件包也包含它自身的一组脚本用于读取和语法分析输出.本文介绍如何使用 Octave 分析 GNU Radio 产生的 ...

  7. 【译】GNU Radio How to write a block 【如何开发用户模块及编写功能块】

    本文讲解如何在GNU Radio中添加用户开发的信号处理模块,译文如有不当之处可参考原文地址:http://gnuradio.microembedded.com/outoftreemodules Ou ...

  8. GNU Radio Radar Toolbox

    GNU Radio Radar Toolbox Install guide Change to any folder in your home directory and enter followin ...

  9. GNU Radio: Overview of the GNU Radio Scheduler

    Scetion 1: The Flowgraph The flowgraph moves data from sources into sinks. 一个流图由多个模块组成,其中一般包括信源(Sour ...

随机推荐

  1. vue.js指令v-model实现方法

    原文链接:http://www.jb51.net/article/99097.htm V-MODEL 是VUE 的一个指令,在input 控件上使用时,可以实现双向绑定. 通过看文档,发现他不过是一个 ...

  2. HBase表的备份

    HBase表备份其实就是先将Table导出,再导入两个过程. 导出过程 //hbase org.apache.hadoop.hbase.mapreduce.Driver export 表名 数据文件位 ...

  3. pip安装tensorflow-gpu好慢怎么办

    答:为pip换源,如换成清华源 cat ~/.pip/pip.conf(没有此文件,自行创建即可,然后加入以下内容) [global]index-url = https://pypi.tuna.tsi ...

  4. HDU 4725 The Shortest Path in Nya Graph(最短路建边)题解

    题意:给你n个点,m条无向边,每个点都属于一个层,相邻层的任意点都能花费C到另一层任意点,问你1到n最小路径 思路:没理解题意,以为每一层一个点,题目给的是第i个点的层数编号.这道题的难点在于建边,如 ...

  5. python 输出所有列表元素的乘积

    def multiply_list(items): tot = 1 for x in items: tot *= x return tot print(multiply_list([1,2,-8]))

  6. SSM(Spring+SpringMVC+Mybatis)+Mysql 框架整合搭建流程以及其间注意事项

    复习SSM框架,太久没用自己手动撘一个,发现自己还是有很多地方忘记了和没注意的事项... 首先,直接给出总流程: 零.引jar包 1.引包(或者写maven.pom) 一.数据库部分 设计数据库各表结 ...

  7. tp5集成淘宝,微信,网易,新浪等第三方登录

    tp5集成淘宝,微信,网易,新浪等第三方登录 一.总结 一句话总结: 接口 链接 实现的话就是这些平台给的一个接口(链接),你通过这些接口登录进去之后,它会给你返回用户名,头像之类的信息,我们的网站存 ...

  8. UVA-10816 Travel in Desert (最小瓶颈最短路)

    题目大意:给一张无向图,图中的每条边都有两个权值,长度d和热度r.找出从起点到终点的一条最大热度最小的路径,如果这样的路径有多条,选择一个最短的. 题目分析:如果只考虑最小的最大热度,那么本题就是一个 ...

  9. 个人知识管理系统Version1.0开发记录(04)

    demo model 我们采用mvc软件架构模式,方便以后用Struts2框架技术优化.重构.封装.这次主要设计一些常用的方法工具,即数据访问逻辑.工具:eclipse.oracle.sqldevel ...

  10. hdu——过山车(二分图,匈牙利算法)

    过山车 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...