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