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

Reply via email to