Hi Quentin, Perhaps your issue is related to the 'length' parameter of the RFNoC packet? If you are not correcting the packet length based on the number of samples you are dropping, then you will get ill-formed packets coming out. Do you think that this could be the issue? Rob
On Thu, Apr 17, 2025 at 11:40 AM Quentin Prieels < quentin.prie...@student.uclouvain.be> wrote: > Hello everyone, > > I'm currently implementing a Schmidl & Cox OOT module on a USRP X310 as > part of my master's thesis. (For those interested, the code is available > here <https://github.com/quentinprieels/TFE25-462-rnfoc-ofdm/tree/latency> > (https://github.com/quentinprieels/TFE25-462-rnfoc-ofdm/blob/latency).) > > The purpose of this block is to detect the beginning of an OFDM frame — > specifically, just after the Schmidl & Cox preamble. I want the block to > forward *only* the "valid" samples (i.e., those that are part of the > actual OFDM frame). So when I call rx_stream->recv(), only actual data > packets should be received by my UHD application. > My first idea was to control the tvalid signal of the AXI-Stream > interface: setting it to 0 when the data was not a "valid" OFDM sample, > and asserting it (1) only when the data was valid. However, this seems to > cause some kind of deadlock. My UHD application always times out and > receives no data. Interestingly, when I output zero-valued samples instead > of deasserting the tvalid signal, I can see that my synchronization > mechanism is working as expected. This suggests the issue likely lies in my > use of AXI signals or a misunderstanding of the RFNoC protocol. > > *Note*: my configured SPP (samples per packet, here 200) is smaller than > the length of the actual OFDM frame, which consists of thousands of complex > samples. > > So here's my main question: > Given a continuous stream of data (currently configured as packets with > 200 samples each, where every packet is valid), how can I output *only a > subset* of this stream — a specific sequence of continuous samples > (potentially spread across multiple packets) — such that only this valid > subset is received by the UHD application? Alternatively, how can I mark > only part of the stream as valid for the receiver, while discarding the > rest? > > (For those interested in the code, this behavior corresponds to when > output_select is set to 2'b01 in the following module: detector.sv > <https://github.com/quentinprieels/TFE25-462-rnfoc-ofdm/blob/latency/fpga/ofdm/rfnoc_block_schmidl_cox/detector.sv> > ( > https://github.com/quentinprieels/TFE25-462-rnfoc-ofdm/blob/latency/fpga/ofdm/rfnoc_block_schmidl_cox/detector.sv) > , which controls forwarding of input data only when in the FORWARDING > state.) > > Thank you all for your help, > Quentin > > > > _______________________________________________ > USRP-users mailing list -- usrp-users@lists.ettus.com > To unsubscribe send an email to usrp-users-le...@lists.ettus.com >
_______________________________________________ USRP-users mailing list -- usrp-users@lists.ettus.com To unsubscribe send an email to usrp-users-le...@lists.ettus.com