Wade, The following also fails using just 2 blocks and 2 attempts: host_tx => Switchboard#0 => Switchboard#1 => host_rx // SUCCESS host_tx => Switchboard#1 => Switchboard#0 => host_rx // FAILURE (RX samples equal swapped I/Q of TX samples)
In addition to wanting to get this issue fixed, I also have a question about the best way to "reboot" the N310 which is what I need to do to fix the issue after it occurs. One way is to give the "reboot now" linux command. But, this takes a long time. Another way is to reprogram the FPGA image via uhd_image_loader. This is appreciably faster, but I'm thinking that this is not a great idea if the flash memory has a limited number of write cycles before failure. Is there another way to achieve a reboot other than these two? Rob On Fri, Dec 11, 2020 at 7:34 PM Rob Kossler <rkoss...@nd.edu> wrote: > AHA! I duplicated the issue with the Switchboard image. The way to > duplicate the issue is the run the following series of graphs: > host_tx => Switchboard#0 => Switchboard#1 => host_rx // SUCCESS > host_tx => Switchboard#2 => Switchboard#3 => host_rx // SUCCESS > host_tx => Switchboard#0 => Switchboard#2 => host_rx // FAILURE (RX > samples equal swapped I/Q of TX samples) > Each of these 3 runs consists of running my application (similar to one of > the examples such as rfnoc_rx_to_file) such that the UHD object is > re-created each time. My guess is that you could use gnuradio to do it > instead. > > My working theory is that the problem is caused by the fact that the > Switchboard#2 input port was changed from being connected to the host in > test case 2 to then be connected to another RFNoC block in test case 3. > Or, I suppose it could be the output port on this block (same logic). > > If you want me to send you my FPGA image with the 4 Switchboard blocks, > let me know. > Rob > > > > On Fri, Dec 11, 2020 at 7:09 PM Rob Kossler <rkoss...@nd.edu> wrote: > >> Hi Wade, >> After thinking about it a bit, I would ignore the "negation" issue for >> now. This may be a byproduct of I/Q swapping related to my custom block. >> Rob >> >> On Fri, Dec 11, 2020 at 6:34 PM Rob Kossler <rkoss...@nd.edu> wrote: >> >>> Hi Wade, >>> Thanks for the info. I still do not know what's going on, but here are >>> a few updates: >>> >>> - I built a new N310 image with 4 switchboards (1x1) and 1 >>> splitstream (1x2) blocks in addition to the default blocks. All of the >>> additional blocks are connected to SEPs for dynamic linking. I tried my >>> best to get bad behavior using a chain of 1 to 4 switchboards, but I >>> could >>> not duplicate any I/Q swapping or negation issues. >>> - I went back to my custom image (that I described below) and found >>> different behavior today (sometimes things worked OK). So, this got me >>> to >>> thinking that I am somehow getting the FPGA in a bad state such that a >>> reboot (or FPGA re-flashing) fixes things. I have had some success with >>> re-booting and things working properly. But, I still do not have a true >>> handle on things and cannot adequately predict when things are going to >>> succeed or fail. >>> - One thing that has been constant is that I have never seen bad >>> behavior when I only have 1 block in my graph (no matter which block I >>> choose). Note that for all of my tests, the graph looks like this: >>> host_tx >>> => block_chain => host_rx, where block_chain is a sequential chain of 1 >>> or >>> more rfnoc blocks. >>> >>> I will send a follow up once I figure things out. >>> Rob >>> >>> >>> On Fri, Dec 11, 2020 at 6:22 PM Wade Fife <wade.f...@ettus.com> wrote: >>> >>>> Hi Rob, >>>> >>>> The SEPs do have the ability to swap I and Q. This is because on the >>>> host computer, I is usually in the lower bits and Q is in the upper bits of >>>> each 32-bit word, but in RFNoC, for historical reasons, I goes in the upper >>>> bits and Q in the lower bits. The software programs the IQ swapping when it >>>> sets up the graph. >>>> >>>> I assume you're using dynamic connections (through the crossbar) to >>>> control the number of FFTs the data is passed through, and not static >>>> connections? If that's the case then I wonder if software configures IQ >>>> swapping incorrectly in some configurations. I'll see if I can do some >>>> testing next week to confirm if it's working correctly. >>>> >>>> As for negation, I'm not aware of anywhere we do that off the top of my >>>> head. Is that behavior block dependent? I'll see if I can find anywhere >>>> this happens. >>>> >>>> Thanks, >>>> >>>> Wade >>>> >>>> On Thu, Dec 10, 2020 at 3:54 PM Rob Kossler via USRP-users < >>>> usrp-users@lists.ettus.com> wrote: >>>> >>>>> Hi, >>>>> I am encountering very strange behavior with a custom FPGA image >>>>> (N310). It appears that data streaming through SEPs can get swapped (I/Q) >>>>> and/or negated. Is anyone at Ettus aware of anything that could cause >>>>> this? Of course, the issue might be on my end, but I can't think of what >>>>> it might be given that all of my custom blocks work as expected in >>>>> isolation (if the block is the only block in graph). >>>>> >>>>> My custom image is the following: >>>>> >>>>> - default blocks of Radios, DDCs, DUCs (each 2x2 and statically >>>>> connected as in default image) >>>>> - custom blocks of two 1x1 windowed-fft blocks, two 1x1 vector-avg >>>>> blocks, and one 2x2 custom block. Note: each of these blocks is >>>>> connected >>>>> to its own SEP, so I can connect dynamically in any fashion. >>>>> >>>>> My test case is transmitting 8192 random samples from host to FFT >>>>> block and then optionally through a 2nd FFT block before back to host. In >>>>> the test case, the radios/DDCs/DUCs are not used. >>>>> >>>>> Here is what I observed: >>>>> >>>>> - If I only include 1 FFT block in my RFNoC graph, I get the >>>>> expected results (the output from the FPGA matches what I calculate in >>>>> Matlab for the FFT). This is true for either of the two FFT blocks. >>>>> - If I include both FFT blocks in series, I can only match the >>>>> FPGA output if I swap the I/Q values in between my Matlab FFTs. >>>>> - Note: that this issue is not FFT-related as I can also duplicate >>>>> this issue with the other blocks. >>>>> - If I use 3 blocks in series (each through SEP), I need to negate >>>>> certain data in order to get it to match the FPGA output >>>>> >>>>> My next step is likely to build a new image with Ettus-developed FIFOs >>>>> to prove that the data is getting swapped/negated when 2 or more are used >>>>> in series through SEPs. >>>>> >>>>> Let me know if you have any suggestions for other things to try. >>>>> >>>>> Rob >>>>> _______________________________________________ >>>>> USRP-users mailing list >>>>> USRP-users@lists.ettus.com >>>>> http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com >>>>> >>>>
_______________________________________________ USRP-users mailing list USRP-users@lists.ettus.com http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com