我们在全双工模式下使用一个usrp x310和两个UBX 160(一个ubx用于发送,第二个用于接收,具有10G连接)。在代码中,建立了两个单独的TX和RX流程图(在单个过程中)。 top_block:
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流程图忙于处理时,发送器上的块可能无法获得所需的资源吗?
对此观察的任何解释以及有关如何解决此问题的任何建议将不胜感激!