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