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