1

我正在学习如何使用 GNURadio 运行 USRP 设备。我能够将数据流从一个 USRP 发送到另一个,并成功接收。现在我想做更高级的东西。目前,我想设置一个USRP来接收一些数据,然后当数据完全接收时,我希望这个相同的USRP自动成为发送器并发送回数据(如ACK/NACK或其他)。以下是我的问题:

  1. 我想我需要使用具有相同地址的 UHD 源和 UHD 接收器,以允许 USRP 在某些时候传输并在其他时候接收。如何控制两个 UHD 块,以便在不传输时接收,反之亦然?

  2. 我注意到有很多方法可以在块之间传递数据和控制(pmt、blob、消息传递、标记流)。我来自 EE 背景并试图阅读文档,但我不确定我应该在这个项目中使用什么?

4

2 回答 2

2

对于你的第一个问题。使用 UHD 源/接收器模块,您可以实现全双工或半双工通信。如果源块分别选择RX2天线和TX/RX接收器,则可以同时接收和发送。如果您更喜欢半双工,则TX/RX在源块和接收器块中都选择天线。该设备将不断接收样本,除非您发送某些内容,USRP 设备在 TX 模式下切换,直到传输结束。

对于第二个问题:这取决于您的应用程序。默认连接更适合面向流的应用程序,而 PMT 和消息队列机制更适合突发或基于数据包的传输。

于 2016-09-04T20:54:03.500 回答
2

(没有足够的代表评论马诺斯的好答案)。

查看UHD API,然后查看 USRP 块标头 (usrp_sink.h usrp_source.h) 以获得标记命令支持。您可以使用带有 PMT 的标签选通信号轻松制作 GRC 示例,以发送例如“tx_freq”命令来更改发射频率。当然,使用示波器或频谱分析仪查看结果会有所帮助。爆发的开始/结束也很有趣。

您还可以通过查看 uhd 示例程序获得一些清晰的信息。那是我开始的地方...

于 2016-09-05T15:49:37.710 回答