Hi Julian, thanks for your suggestion. I agree this is how I could work around my issue. Though, another goal of my project is to minimize latency. A 'tx_time' tag that points to some 'distant' time in the future contradicts that goal. Apparently, I forgot to add that to the list of things I'm trying to achieve in my original mail.
Cheers Johannes Am 17.01.19 um 22:35 schrieb Julian Arnold: > Johannes, > > I don't know if this helps but I think I was facing the same issue quite > a while ago. > > If I remember correctly, I was able to work around the issue by setting > a tx_time time tag on each burst which was pointing far enough into the > future to use the USRP as a "buffer" until all samples had left the > Burst Shaper (hope this makes sense). > > Not very elegant but I think it worked quite well at the end. > > You can find the block I used to calculate and set the tx_time tags in > flow graph [1]. > > Cheers, > Julian > > [1] https://github.com/RWTH-iNets/gr-inets/blob/master/grc/inets_tx_phy.grc > > On 17.01.19 12:39, Johannes Demel wrote: >> Hi community, >> >> I do have an issue with the 'Burst Shaper' block and I'm uncertain how >> to tackle this problem. In this particular case I'm stuck with 3.7 for >> now, but as fas as I can tell, the actual implementation did not change >> with respect to 3.8. >> >> So, here is the problem: >> I have a flowgraph like this >> >> Source -> MyModulator -> Burst Shaper -> UHD Sink >> -> Qt Time Sink >> >> Source emits a packet at certain intervals, say every 1ms. >> MyModulator transforms those bits into a burst with complex samples. >> 'Burst Shaper' is supposed to prepad some zeros and postpad some zeros. >> UHD Sink expects a tagged burst with a packet length to transmit. >> >> What happens? I get lots of underruns ('U') because Burst Shaper waits >> somewhere in the order of milliseconds to write the last portion of the >> burst to its output buffer. The actual burst consists of ~1k samples >> @12.5MSps. Less than 100us duration. >> >> Burst Shaper is required to pre and post pad zeros. >> Prepad to 'reinitialize' a USRP. Otherwise the preamble is distorted >> which ultimately screws my receiver algorithms. >> Postpad is required to flush USRP FIFOs. Otherwise you'd see the end of >> a previous burst at the beginning of the next burst. >> >> In my Qt Time Sink, I can see that all bursts are tagged correctly. The >> packet length tags are at the correct position. >> >> The problem is really, that 'Burst Shaper' does not write the last part >> of the burst until some later time. This makes the USRP sink miss some >> samples in every burst and print one 'U' per burst. Also, this results >> in this last part of the burst to be transmitted just before the next >> burst. This does corrupt my bursts and does cause more artifacts like >> cut off bursts which pollute the spectrum. >> >> How would you proceed? Convert 'Burst Shaper' to a tagged stream block? >> I tried to use 'Packet Pad2' from 'gr-foo'. Though, this would still >> occasionally result in 'U's printed. Also, I can still see that my >> bursts are occasionally transmitted late. >> >> I'd really like to fix 'Burst Shaper'. Though, I don't know how I should >> proceed yet. >> >> Cheers >> Johannes >> _______________________________________________ >> Discuss-gnuradio mailing list >> Discuss-gnuradio@gnu.org >> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio >> _______________________________________________ Discuss-gnuradio mailing list Discuss-gnuradio@gnu.org https://lists.gnu.org/mailman/listinfo/discuss-gnuradio