USRP 操作指南·notes

usrp,全称universal software radio peripheral(通用软件无线电外设)。顾名思义,配合软件无线电进行硬件实现,可进行半实物信号模拟。当你入手一台B210、X310时,如何快速上手,而不需要详尽地看内部FPGA、寄存器、引脚等原理结构?参考官网手册,是高效的方式。

这里,列举下常见的使用注意事项。

  1. 两阶段调谐过程

一个USRP设备包括两阶段的调谐:1)射频前端,在射频和中频之间转换;2)DSP,在中频和基带之间转换。在典型用例中,用户指定信号链的整体中心频率。RF 前端将尽可能接近中心频率进行调谐,DSP 将考虑目标频率和实际频率之间的调谐误差。通过uhd :: tune_request_t 对象(它允许进行更高级的调整),用户还可以明确地控制调谐的两个阶段。

通常,建议使用 UHD 软件的高级调谐,因为该方式可以轻松地将直流分量移出有用的频带。这可通过将需要的 LO 偏移量传递给 uhd :: tune_request_t 对象来完成,并让 UHD 软件处理其余任务。

2.采样率

很重要的一点,在 USRP 硬件中需使用 严格整数倍抽取和插值 以满足所要求的采样率。这意味着所需的采样率必须满足 \frac{主时钟速率}{所需的采样率} 比值为整数。此外,该比值最好是偶数。

对所需的采样率还有进一步的限制,例如,如果所需的抽取或插值超过 128,则产生的抽取必须能被 2 整除;如果所需的抽取超过 256,则产生的抽取必须能被 4 整除.

对于具有固定主时钟速率的 USRP 设备(特别是:USRP1、USRP2、N2xx),可用的有效采样率比 USRP 硬件少,后者在选择主时钟方面提供了一定的灵活性,因此,能提供更广泛的采样率选择。

在 UHD 软件的最新版本(3.8.5 和更新版本)和某些设备(当前:B2xx 和 E3xx 系列)上,主时钟速率是自动选择的(除非用户指定)。UHD 将选择与应用程序指定的所需采样率一致的主时钟速率。

3. overflow&underrun

overflow

接收时,设备以恒定速率生成样本。当主机消耗数据的速度不够快时,就会发生溢出。当 UHD 软件检测到溢出时,它会向 stdout 打印“O”或“D”,并将内联消息包推送到接收流中。有两种情形:

  • 基于网络的设备:主机不会对接收流进行背压。当内核的套接字缓冲区已满时,它将丢弃后续数据包。 UHD 软件将溢出检测为数据包序列号的不连续性,并将内嵌消息数据包推送到接收流中。在这种情况下,字符“D”被打印到标准输出作为指示。
  • 其他设备:主机对接收流进行反压。因此,溢出总是发生在设备本身。当设备的内部缓冲区已满时,流将关闭,并向主机发送内联消息包。在这种情况下,字符“O”被打印到标准输出作为指示。如果设备处于连续流模式,当缓冲区再次有空间时,UHD 软件将自动重新开始流。

underrun

传输时,设备以恒定速率消耗样本。当主机没有足够快地产生数据时,就会发生下溢。当 UHD 软件检测到下溢时,它会向 stdout 打印一个“U”,并将消息包推送到异步消息流中。

4.设备标识及查找

发现系统里连接的设备,在Linux下使用命令行 uhd_find_devices,查找设备属性,使用命令行 uhd_usrp_probe

5.子板指定

USRP 系列设备的子设备规范(或“子设备规范”)字符串由以下部分组成:

<主板插槽名称>:<子板前端名称>

如果主板可以选择多个无线电设备,则子开发规范可以包含多个字符串。在 X300 中,您可能在插槽 A 中有一个 SBX,在插槽 B 中有一个 CBX。这两个子板都有一个前端(“0”),因此配置这两个无线电通道的子开发规范如下所示:

A:0  B:0

所有 USRP 系列主板都有一个名为 A : 的第一个插槽。 USRP1 和 X3x0 有两个子板子设备插槽,称为 A: 和 B:。B210 系列具有不同的配置,因为它们的两个无线电设备在逻辑上连接到同一个“子板”(实际上是集成的 AD9361),但前端不同。要在 B200 上选择两个无线电设备,请使用如下字符串:

A:A A:B

更多内容,见官方手册

发布于 2021-11-05 20:20

文章被以下专栏收录