Hello,

Several weeks ago I went through the tutorial for producing the example "gain" 
block using rfnoc 3.8 and uhd 3.15. There were some bumps, but I did get that 
working fine. For the past couple weeks, I've been working with UHD 4.0 and the 
latest gr-ettus repo.

I posted a question a week or two ago since I couldn't get UHD to recognize my 
custom block, as UHD doesn't look for the block yml file in the latest uhd 4.0 
build. It just shows up as "0/Block#0" when probing. Thanks to Wade F. for the 
quick response to that question and for suggesting I either just continue OOT 
and use the "Block" name to interface with it or build in-tree for now. I chose 
to stick with OOT and just use the "Block" naming.

I started with the gain example, but ended up simplifying it to literally just 
using what was generated by rfnocmodtool (just a pass through block in the 
FPGA) with no modifications. I made an rfnoc block, called "Block". I built 
this for an E320, so I did have to modify the "XXX_x310_rfnoc_image_core.yml" 
file accordingly.

I built/installed everything, but this is what is happening. When I create a 
gnuradio-companion "waveform", it does run, but I get the following behavior:

1) If my setup is RFNoC_RX_Radio -> RFNoC_DDC_Block -> RFNoC_Block -> 
RFNoC_RX_Streamer -> QT_GUI_Freq_Sink:

Everything runs, but the following repeats over and over and the output plot 
doesn't change:
----
gr::log :WARN: rfnoc_rx_streamer0 - RFNoC Streamer block received error 
ERROR_CODE_BAD_PACKET (Code: 0xf)
[ERROR] [STREAMER] The receive transport caught a value exception.
ValueError: Bad CHDR header or invalid packet length.
gr::log :WARN: rfnoc_rx_streamer0 - RFNoC Streamer block received error 
ERROR_CODE_BAD_PACKET (Code: 0xf)
[ERROR] [STREAMER] The receive transport caught a value exception.
ValueError: Bad CHDR header or invalid packet length.
----

I put in some ILA probes and it seems that "ep4_to_xb_tready" is stuck low. ep4 
is the endpoint tied to the in and out of my custom "Block." I'm guessing it 
didn't start low but a FIFO or something filled up somewhere.

I should mention that if I use this same setup, but remove my custom 
RFNoC_Block and directly connect the DDC to the RX_Streamer, everything works 
fine. No errors, the spectrum looks fine, etc.


2) If my setup is Constant_Source(set to 4+9j) -> RFNoC_TX_Streamer -> 
RFNoC_Block -> RFNoC_RX_Streamer -> QT_GUI_Time_Sink:

Everything runs and I do not have a problem with any gnuradio warnings. Also, 
TReady is high the entire time. But, the output plot for I and Q sit mostly 
constant stuck at "1", with non-periodic blips down to "0". I'm not seeing the 
complex constant I set in gnuradio. If I look at the payload_tdata in an ILA 
for my "Block" when tvalid is high and tready is high, I see that the data is 
sitting at 0x7fff7fff except when TLAST is high, tdata switches to 0xfffc7ff7.

I'm at a bit of a loss trying to figure out what is happening. Could it be that 
UHD is not interfacing properly to my block (given that UHD doesn't look for my 
OOT yml file)? I did not change any block controller code or anything else. Oh, 
and the user_register that is included as part of the default design designated 
by rfnocmodtool seems to work fine. I can change the register value in gnuradio 
and I can see it change appropriately via and ILA.

For reference, this is what I've been working with:
1) UHD (v4.0.0.0 tag)
2) gnuradio (3.8.2.0 tag)
3) gr-ettus (maint-3.8-uhd4.0 branch)

RFNoC is new to me, so any thoughts on what could be wrong or how I could go 
about debugging this would be greatly appreciated. Hopefully, I'm just missing 
something simple.

Thanks,
Jim

_______________________________________________
USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com

Reply via email to