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

Reply via email to