Thanks again. Two more clarifications... - When you say each "radio" has a separate queue, does that translate into each "channel" has a separate queue? Assuming so, then I suppose a streaming command that is for multiple channels will create an entry in each of the queues. - If successive commands in the same queue have identical time specs (e.g., an rx streaming command, a tx streaming command, and a timed GPIO switch command), am I basically guaranteed that the 2nd or 3rd successive command will not be Late?
Rob On Tue, Oct 10, 2017 at 5:25 PM, Michael West <michael.w...@ettus.com> wrote: > Hi Rob, > > Yes. The queue is a simple FIFO and does no reordering, so the commands > must be in time order. Each radio has a separate command queue, so they > will not interfere with each other. > > All commands go to the same queue, whether timed or not, so care must be > taken with all commands issued to a particular radio. > > Despite the downside of having to properly collate all commands issued to > a single radio, the upside is that you can use a single timed command to > block a series of commands and guarantee the sequence and timing of > operations. For instance, you could issue a timed command to set the > switch position followed by an RX stream command that is not timed and it > will start streaming as soon as the switch is set. > > Regards, > Michael > > On Tue, Oct 10, 2017 at 1:33 PM, Rob Kossler <rkoss...@nd.edu> wrote: > >> Thanks Michael, >> So, do all "timed" commands sent to the command queue need to be in >> strictly ascending order (in time)? In other words, will a disordered >> queue always produce a Late error or does it depend on how much disordered? >> >> Are there any other "timed" commands to worry about besides the following? >> >> - commands sent in between set_command_time() and clear_command_time() >> - rx and tx streaming commands that include a time_spec >> >> Rob >> >> On Tue, Oct 10, 2017 at 4:11 PM, Michael West <michael.w...@ettus.com> >> wrote: >> >>> Hi Rob, >>> >>> Yes, that would be a problem. There is a single command queue for both >>> TX and RX commands to the radio, so something has to collate the T/R >>> switching commands with the RX streaming command so none of the commands >>> arrive late. >>> >>> Regards, >>> Michael >>> >>> On Thu, Oct 5, 2017 at 7:48 AM, Rob Kossler via USRP-users < >>> usrp-users@lists.ettus.com> wrote: >>> >>>> Hi Marcus, >>>> Still working on the same issue (sporadically). I was able to get my >>>> transmit pulse behaving reasonably well (using continuous Tx streaming and >>>> manually controlling the T/R switch using timed commands). However, I ran >>>> into a problem when I tried to simultaneously stream Rx data. The RX >>>> streaming reports a single Late command followed by numerous Timeouts. >>>> >>>> Since I am able to >>>> A) run my application in TX-only mode (with separate threads for >>>> transmit streamer and T/R switching), and >>>> B) to run in TX/RX mode without T/R switching >>>> >>>> I am wondering what is the source of my problem when I try to run in >>>> TX/RX mode with T/R switching. I am wondering if the problem could be >>>> related to ordering of timed commands. I have made sure that the T/R >>>> switching commands are sent in time-ascending order, but I have no >>>> synchronization between these commands and my Rx streaming command (which >>>> includes a time spec in the meta data). So, it is possible that my >>>> application is sending a tone of T/R switching commands (filling up the >>>> timed command FIFO) prior to sending the Rx streaming command. Would this >>>> be a problem? >>>> >>>> Rob >>>> >>>> >>>> On Tue, Sep 26, 2017 at 9:09 PM, Rob Kossler <rkoss...@nd.edu> wrote: >>>> >>>>> Hi Marcus, >>>>> Thanks for your response. I've been away for several days and finally >>>>> had the opportunity to revisit this today. >>>>> >>>>> I modified my code to manually control the TxEnable pin using timed >>>>> commands in order to pulse a continuously streaming TX waveform (100 >>>>> MS/s). This worked until I reached a limit on PRF at around 20 kHz (50 us >>>>> PRI). When I tried to go faster (e.g., 20 us PRI), the pulse train went a >>>>> bit crazy - likely from the commands arriving late. I'm guessing that >>>>> there is some limit to how fast I can send these GPIO commands while at >>>>> the >>>>> same time streaming at 100 MS/s. The bad news is that this was with one >>>>> channel. So, I expect that when I implement with 2 TX simultaneously >>>>> (e.g., beamforming), I will need to send twice the number of GPIO commands >>>>> and thus my min PRI will jump to about 100 us (but I haven't tried this >>>>> yet). By the way, this was implemented with 3.9.LTS and a single 10Gbe >>>>> link. >>>>> >>>>> The other thing I noticed was that the RF pulse width was about 300 ns >>>>> shorter than expected for the specified switching times. The switch data >>>>> sheet indicates on/off switch times on the order of 45ns. Thus, enabling >>>>> and disabling of the switch could account for 90 ns, but this is still >>>>> much >>>>> less than the observed shortfall. Not sure what the cause is. >>>>> >>>>> In the end, this may be good enough for my application. Still, I may >>>>> try some things in the FPGA. >>>>> >>>>> Rob >>>>> >>>>> >>>>> >>>>> On Mon, Sep 18, 2017 at 5:54 PM, Marcus Müller via USRP-users < >>>>> usrp-users@lists.ettus.com> wrote: >>>>> >>>>>> Hey Rob, >>>>>> >>>>>> so, it's probably the good ol' radar bandwidth conundrum: For good >>>>>> range resolution, you'd typically want high TX and RX bandwidth, but at >>>>>> least on TX, it feels kinda bad to stream a full 200MS/s to the USRP, >>>>>> just >>>>>> to be able to turn a sine wave on and off again within a few nanoseconds. >>>>>> And to confirm your suspicion: Yes, if you use a lower rate than that, >>>>>> the >>>>>> X310 will interpolate to the 200MS/s MCR, and that happens with a >>>>>> low-pass >>>>>> filter (to get rid of spectral aliasing in the general use case), and >>>>>> that >>>>>> "washes out" your pulses. So, meh. >>>>>> >>>>>> As long as you're not sending constantly, but more in terms of single >>>>>> pulses or short pulse packets, sending the signal at a full 200 MS/s >>>>>> might >>>>>> be the right thing to do – the USRP would buffer the sample packets until >>>>>> the TX timestamp "happens", and there's no unnecessarily high CPU load. >>>>>> >>>>>> You could also replace the DUC with a simple "repeat" NoC block. Or >>>>>> with an upsampler without an anti-imaging filter (ie. a zero-padder), for >>>>>> that manner. Or, upsample, but use the desired pulse shape as filter. >>>>>> >>>>>> 1) well, close reflections are usually very strong with radar. If >>>>>> you're using an external amplifier, that might be a problem. >>>>>> 2) There's a the auto-TX/RX switching functionality that you can use >>>>>> to switch when you start/stop streamers. Also, yes, antenna switches are >>>>>> just "normal" GPIO, so you can basically look into the daughterboard >>>>>> driver >>>>>> to see which GPIO gets toggled when you change the antenna, and do the >>>>>> same >>>>>> in your application. >>>>>> >>>>>> Hope that helps, >>>>>> >>>>>> best regards, >>>>>> >>>>>> Marcus >>>>>> >>>>>> On 09/18/2017 01:55 PM, Rob Kossler via USRP-users wrote: >>>>>> >>>>>> Hi, >>>>>> I am interested in implementing a pulsed CW radar using a single >>>>>> channel (X310/UBX) via the TX/RX antenna port. >>>>>> >>>>>> My initial implementation works, but not that well. In this >>>>>> implementation, I continuously stream the receiver with antenna set to >>>>>> TX/RX and I simultaneously send timed transmit bursts for each pulse. >>>>>> The >>>>>> USRP automatically switches the T/R switch to transmit during the >>>>>> transmit >>>>>> bursts and then back to receive when the transmit burst completes. The >>>>>> switch time seems good enough for my application. However, the transmit >>>>>> pulse doesn't look as expected at the beginning - likely due to start up >>>>>> filtering in the DUC. >>>>>> >>>>>> I am considering a different implementation such that transmit and >>>>>> receive both run continuously and I just manually "hot-switch" the T/R >>>>>> switch between transmit and receive using timed commands. I have 2 >>>>>> questions: >>>>>> 1) is there a problem with this approach (e.g., possibility of >>>>>> damaging the device)? >>>>>> 2) how do I manually control the T/R switch? (I am expecting I need >>>>>> to use the GPIO registers, but I can't find the relevant info in the >>>>>> manual). >>>>>> >>>>>> Rob >>>>>> >>>>>> >>>>>> _______________________________________________ >>>>>> USRP-users mailing >>>>>> listUSRP-users@lists.ettus.comhttp://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 >>>>>> >>>>>> >>>>> >>>> >>>> _______________________________________________ >>>> 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