Hi Rob,

I'm not sure. I also tried forwarding the |tlast| signal of the original |tdata| samples to force the system to send a CHDR packet—even if my OFDM packet wasn't finished yet—but it doesn’t seem to solve the issue.

Another question I’ve been asking myself is:/does RFNoC allow a block to receive a new incoming CHDR packet if it hasn’t yet produced an outgoing packet/?

I'm using the AXI-Stream Data (Simple) interface, so I assume the NoC shell handles packet manipulation and length. I don't see where I could modify this behavior...

If you have any ideas or insights, I’d be happy to investigate further.

Best regards,
Quentin

On 4/17/25 17:58, Rob Kossler wrote:


        
Vous n’obtenez pas souvent d’e-mail à partir de rkoss...@nd.edu. Pourquoi c’est important <https://aka.ms/LearnAboutSenderIdentification>
        

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
    <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
    
<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

Reply via email to