Hi All, I have an RFNoC setup with 5+ blocks contributing to a transmit path. I've measured the latency to get a signal through this RFNoC graph is non-negligible at my bit-rate -- I'm seeing several 10s of ms.
Before I go crazy consolidating RFNoC blocks, I decided to try shrinking the STR_SINK_FIFOSIZE from 2^11 down to 2^9. I have a known MTU packet limit that's something like 1024 *bytes*, which should be manageble with a 2^9 FIFO size. This could potentially reduce the latency due to input FIFOs by 4x, which might be a good start. But, I hit a few problems here... When setting the STR_SINK_FIFOSIZE to 9, I get the following error: -- Assuming max packet size for 0/he360encoder_0 Traceback (most recent call last): File "./e310_ground_modem.py", line 330, in <module> main() File "./e310_ground_modem.py", line 319, in main tb = top_block_cls(bitstream=options.bitstream, clk_rate=options.clk_rate, conv=options.conv, device=options.device, freq=options.freq, hdlc_enable=options.hdlc_enable, lo_offset=options.lo_offset, probeconsole=options.probeconsole, probecsv=options.probecsv, rate=options.rate, rs_enable=options.rs_enable, rxaddr=options.rxaddr, tx_gain=options.tx_gain) File "./e310_ground_modem.py", line 169, in __init__ self.device3.connect(self.fpgacomms_he360encoder_0.get_block_id(), 0, self.hawkeye_qpsk_modulator_0.get_block_id(), 0) File "/deploy/dev-ejk/lib/python2.7/site-packages/ettus/ettus_swig.py", line 1595, in connect return _ettus_swig.device3_sptr_connect(self, *args) RuntimeError: RuntimeError: Input FIFO for block 0/qpskmodulator_0 is too small (4 kiB) for packets of size 7 kiB coming from block 0/he360encoder_0. When setting the STR_SINK_FIFOSIZE to 10, I get a different error: -- [0/he360encoder_0] source_block_ctrl_base::configure_flow_control_out() buf_size_pkts==1 Traceback (most recent call last): File "./e310_ground_modem.py", line 330, in <module> main() File "./e310_ground_modem.py", line 319, in main tb = top_block_cls(bitstream=options.bitstream, clk_rate=options.clk_rate, conv=options.conv, device=options.device, freq=options.freq, hdlc_enable=options.hdlc_enable, lo_offset=options.lo_offset, probeconsole=options.probeconsole, probecsv=options.probecsv, rate=options.rate, rs_enable=options.rs_enable, rxaddr=options.rxaddr, tx_gain=options.tx_gain) File "./e310_ground_modem.py", line 169, in __init__ self.device3.connect(self.fpgacomms_he360encoder_0.get_block_id(), 0, self.hawkeye_qpsk_modulator_0.get_block_id(), 0) File "/deploy/dev-ejk/lib/python2.7/site-packages/ettus/ettus_swig.py", line 1595, in connect return _ettus_swig.device3_sptr_connect(self, *args) RuntimeError: RuntimeError: Invalid window size 1 for block 0/he360encoder_0. Window size must at least be 2. Both errors trace back to uhd/host/lib/rfnoc/graph_impl.cc, where it appears that the graph is attempting to read the FIFO size, compare to the expected packet size, and intelligently throw errors when there's a potential issue. I appreciate this feature, but I cant find how to set the pkt_size argument... Passing a pkt_size stream_arg into the rfnoc block constructor does not change the port_def to have a different pkt_size. Any ideas? What am I missing? Do I manually need to access the tree to edit the port_def parameter at "_root_path/ports/direction/port_index" for my block? Cheers, EJ
_______________________________________________ USRP-users mailing list USRP-users@lists.ettus.com http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com