Thanks for the updates. If you just want to reload the FPGA, try running "overlay rm n310 && overlay add n310" on the N310. This should simply reload the FPGA using the bistream already in the flash.
Wade On Fri, Dec 11, 2020 at 6:45 PM Rob Kossler <rkoss...@nd.edu> wrote: > 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