我们在全双工模式下使用一个 usrp x310 和两个 UBX 160(一个 ubx 用于发送,第二个用于接收,具有 10G 连接)。在代码中,建立了两个单独的 TX 和 RX 流程图(在单个进程下)。顶部块:
self.txpath = tx_hier(...)
self.rxpath = rx_hier(...)
self.source = uhd_receiver(...) # set up usrp, subdev: A:0
self.sink = uhd_transmitter(...) # set up usrp, subdev B:0
self.connect(self.source, self.rxpath)
self.connect(self.txpath, self.sink)
然而,在实际测试中,我们发现一旦RX流程图忙于处理数据,发送端在发送数据包时会出现严重的下溢问题。采样率仅为 5Msps,在相同的采样率下,单独使用 TX 流程图不会出现下溢,单独使用 RX 流程图也不会出现溢出。
由于这两个流程图是分开的,并且 gnuradio 会将一个线程分配给一个块,因此在我看来,处理数据不应该对传输产生影响(独立)。我想知道这怎么会发生。我也尝试使用 gr::hier_blocks::set_processor_affinity 来分离核心资源,但它没有用。也许在 RX 流程图忙于处理时,发送器上的块无法获得所需的资源?
对此观察的任何解释以及有关如何解决此问题的任何建议将不胜感激!