Hi Martin,

 

This is interesting feedback.

 

On the streaming, I am using a python create_rx_streamer() directly on the 
graph to the connected to the 1 or 2 outputs of my new rfnoc block, like this:

 

g_graph  = uhd.rfnoc.RfnocGraph("type=n3xx,addr=10.20.101.1")

stream_args   = uhd.usrp.StreamArgs("fc32", "sc16")

g_rx_streamer = g_graph.create_rx_streamer(2, stream_args)

 

I was not aware of the need for forking streaming commands, and I am not sure 
how to do this. I will try and find info in the docs, but if there is anything 
special to know it would be very valuable. (I can compile UHD by hand, and have 
been doing for certain debugging.)

 

On the “consuming of samples” I am under the impression that by me asserting 
TREADY an upstream block will consider that sample “consumed”, and of course, I 
do this on both streams from the (single) radio on the N300?

 

So between the forking streaming commands and the sample consumption I’m sure 
my issue is there somewhere.

 

Thanks, Kevin

 

From: Martin Braun <martin.br...@ettus.com> 
Sent: Monday, 07 April 2025 16:16
Cc: usrp-users@lists.ettus.com
Subject: [EXTERNAL][USRP-users] Re: rfnoc sample alignment from two radio 
channels

 

We don't have any examples of blocks doing MIMO DSP -- that use case is a bit 
special because in general, you also want to compare timestamps. But let's 
stick with the addsub block, you could consider that a form of MIMO processing 
(coherent combining of signals assuming they're already phase-aligned...?).

 

The addsub block will properly align samples from upstream radio blocks if 
everything is on the same FPGA, because you usually don't lose samples on the 
FPGA, and we assume that the radios will get started at the same time. If you 
don't consume samples from a radio block, it will stall pretty quickly.

 

If tvalid is never going high, then maybe the second radio block is never 
actually starting to stream? How are you submitting stream commands? Straight 
to the radios, or to the streamer (and if it's the latter, is your block 
controller forking the stream command)? If you're running at TRACE level, then 
the radio will report all stream commands but for that you'd need to compile 
UHD by hand.

 

--M

 

 

On Sun, Apr 6, 2025 at 9:49 AM Kevin Williams <kevin.willi...@vastech.co.za 
<mailto:kevin.willi...@vastech.co.za> > wrote:

Hi,

I am curious as to how sample alignment for MIMO DSP is guaranteed in the
RFNoC framework?

I see sample stream alignment mechanisms in blocks like the AddSub block,
and have written similar logic for my own new blocks. Is there a certain
tolerance of sample delays that will never be exceeded?

My real question is that I am trying to trace an issue where I have two
input streams to my block (coming from a 0/Radio#0:0 and 0/Radio#0:1) but
the second stream is always stalled. I never see TVALID's from it, even
though both master TREADY's are simply hardcoded for now. (I can see this by
means of packing the handshaking bits into the output data samples.)

I've just compiled an ILA into the design but I suspect this will just show
the same.

Thanks, Kevin

_______________________________________________
USRP-users mailing list -- usrp-users@lists.ettus.com 
<mailto:usrp-users@lists.ettus.com> 
To unsubscribe send an email to usrp-users-le...@lists.ettus.com 
<mailto:usrp-users-le...@lists.ettus.com> 

Attachment: smime.p7s
Description: S/MIME cryptographic signature

_______________________________________________
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