我正在学习如何使用GNURadio运行USRP设备。我能够将一个数据流从一个USRP发送到另一个USRP,并成功接收。现在我想做更高级的东西。目前,我想设置USRP来接收一些数据,然后当数据被完全接收时,我希望这个相同的USRP自动成为发送器并发回数据(例如ACK / NACK或其他)。以下是我的问题:
我认为我需要使用具有相同地址的UHD源和UHD接收器,以允许USRP在某些时间发送并在其他时间接收。我如何控制两个UHD块,以便在我不发送时接收,反之亦然?
我注意到有很多方法可以在块之间传递数据和控制(pmt,blob,消息传递,标记流)。我来自EE背景并试图阅读文档,但我不确定该项目应该用什么?
答案 0 :(得分:2)
第一个问题。使用UHD源/接收器模块,您可以实现全双工或半双工通信。如果您分别为RX2
天线和接收器选择TX/RX
,则可以同时接收和发送。如果您更喜欢半双工,请在两者中选择TX/RX
天线源和汇块。设备将不断接收样本,除非您传输内容,USRP设备在TX模式下切换,直到传输结束。
关于第二个问题:这取决于你的申请。默认连接对于面向流的应用程序更为可取,而PMT和消息队列机制更适合基于突发或基于数据包的传输。
答案 1 :(得分:2)
(没有足够的代表评论Manos'好的答案)。
查看UHD API,然后查看USRP块头(usrp_sink.h usrp_source.h)以获取标记命令支持。您可以使用标签选通和PMT轻松制作GRC示例,例如,发送" tx_freq"命令改变发射频率。当然,有一个范围或频谱分析仪可以看到结果。爆发的开始/结束也很有趣。
通过查看uhd示例程序,您也可以获得一些清晰度。那是我开始的地方......