Koen, Sorry, yes, you are correct, recent > On Jun 15, 2018, at 1:06 AM, TIMMEN Koen <koen.tim...@thalesaleniaspace.com> > wrote: > > Ian, > > Thank you for the clear explanation. > > Luckily for me, I will not have to deal with bursts as I simple transmit I/Q > samples that fit into a single sample. By the way, they are generated > internally to the FPGA on a custom module. > > What you said about the radio is useful, however it raises a new question: > you said that the Radio block streams to the DUC stages.. but, as I > understand it you will need a separate DUC block for that correct? And > normally you place that block before a Radio Tx block? So then the order of > blocks will be Source à DUC à Radio. Or am I way off now? > > And you said that when I want a packet to contain a time value in the CHDR, I > will have to enable this on the host? I assume it should also be able to let > a custom rfnoc block do this internally to the USRP. In that way, I can > generate a sample and give it a time stamp I want it to be transmitted on and > then offload to the radio, which will handle timely transmission. > > Thank you for your patience. > > > Kind regards, > > Koen > > > > De : Ian Buckley [mailto:i...@ionconcepts.com <mailto:i...@ionconcepts.com>] > Envoyé : mercredi 13 juin 2018 20:18 > À : TIMMEN Koen > Cc : Michael West; Neel Pandeya; usrp-users@lists.ettus.com > <mailto:usrp-users@lists.ettus.com> > Objet : Re: [USRP-users] vita time > > Koen > OK a few low level H/W and CHDR hints to help you along: > > “Time” when we talk about the H/W and how it’s implemented is a 64bit value > that counts in units of 1/master_clock_rate which for X310 is generally 5nS. > > The reference for time is a 64bit counter that’s driven from a block called > “timekeeper.v” and you will see this time value passed around X310 generally > called “vita_time”. > > This counter can be set/reset via UHD API calls such as > “set_time”now/set_time_next_pps/set_time_unknown_pps” > > CHDR packets can optionally contain a 64bit time value as part of the header, > and a bit in the header indicates if the time field is present. > > When this field is present it represents an absolute time value for the first > sample in the packet. > > In general you will see time present in most CHDR packets, for example the > radio tags all RX samples with the time. > > From a transmit perspective, there is a stateful concept of “bursts”, that is > the radio can either be idle or actively transmitting. After startup the TX > Radio is in an idle state, and host software will generally use API calls to > adjust the absolute “vita_time” to closely track host time-of-day or exactly > track GPS time if it is available. When a sample packet arrives at the radio > with a time field inside, the radio compares this time value with the current > “vita_time” and providing that the packets time value is still in the > “future” will start buffering arriving sample packet data in order until the > time field of that first packet matches the “vita_time” as it advances. At > this point the state of the radio becomes active, and it will start streaming > de-packetized data into the DUC stages and hence out into the analog > transmitter. To leave the active state, ceasing transmission, and return to > the idle state, a bit in a CHDR packet header signals end-of-burst (EOB) and > the last sample in this packet shall represent a transition of radio state > back to idle. > > From the user application perspective then you need to annotate a time value > into your initial CHDR packet to the radio that is still “in the future” and > has a time delta from the current vita_time such that allowance is made for > that packet to arrive at the radio in a timely fashion. From then on your > application will need to generate CHDR packets at a rate that matches or > exceeds the sample rate. When you are done transmitting the last packet you > generate will have the EOB bit set. A lot of this functionality is presumably > already provided in the noc_shell to abstract you from the details, someone > else who is RFNoC conversant will need to comment on that mechanism though. > > -Ian > > > > On Jun 12, 2018, at 11:56 PM, TIMMEN Koen <koen.tim...@thalesaleniaspace.com > <mailto:koen.tim...@thalesaleniaspace.com>> wrote: > > Hello again, > > Thank you for answering my question. I do still have a few questions though. > > What do the timestamps in each packet serve for exactly? Are you talking > about the CHDR packets here? I saw that in the CHDR format ‘fractional time’ > was optional, but did not understand how to activate this option. I assumed > it would be handled internally in the AXI wrapper and NoC shell. But as I > understand now, one has to write his own code that adds this part of the > payload? > > My original plan was based on what you suggest as well, to make the time > available in a register and upon reaching some future start time, my block > will transmit the corresponding sample. However, this does not answer the > question of where to find the value to store inside the register and update > it as time actually progresses. Is it as simple as coding a counter and > counting the number of passed clock cycles? > > Sorry if I seem to ask for the obvious, it’s all still relatively new to me. > > Kind regards, > > Koen > > > > De : Michael West [mailto:michael.w...@ettus.com > <mailto:michael.w...@ettus.com>] > Envoyé : lundi 11 juin 2018 23:59 > À : TIMMEN Koen > Cc : Neel Pandeya; Ian Buckley (i...@ionconcepts.com > <mailto:i...@ionconcepts.com>); usrp-users@lists.ettus.com > <mailto:usrp-users@lists.ettus.com> > Objet : Re: [USRP-users] vita time > > Hi Koen, > > The way to achieve what you want is to set the device time and then have your > signal generator put timestamps in each packet relative to that time. To > tell your custom block what time to use, you can have a user register that > you also program with the time (or some future start time). > > Regards, > Michael > > On Wed, Jun 6, 2018 at 11:24 PM, TIMMEN Koen via USRP-users > <usrp-users@lists.ettus.com <mailto:usrp-users@lists.ettus.com>> wrote: > Hello, > > My block is a signal generator and each sample needs to be transmitted at an > accurately known instant. The samples themselves do not need to hold this > information. > > The device I am using is the X310. > > What Neel Pandeya is suggesting sounds like exactly what I’m trying to do. > > Thank you for your responses. > > Regards, > > Koen Timmen > > > De : Neel Pandeya [mailto:neel.pand...@ettus.com > <mailto:to%3aneel.pand...@ettus.com>] > Envoyé : jeudi 7 juin 2018 06:14 > À : TIMMEN Koen > Cc : usrp-users@lists.ettus.com <mailto:usrp-users@lists.ettus.com> > Objet : Re: [USRP-users] vita time > > Hello Koen: > > As Ian requested, could you please provide additional detail on exactly what > you're trying to do? > > Are you merely trying to access the 64-bit FPGA VITA time from within the > RFNoC block? > > Which device are you using? > > --Neel Pandeya > > > > > On 5 June 2018 at 09:24, Ian Buckley via USRP-users > <usrp-users@lists.ettus.com <mailto:usrp-users@lists.ettus.com>> wrote: > Koen, > Can you expand a little on the functionality you need pls, its not fully > clear enough to me to make a suggestion. > Are you trying to extract time from incoming samples or apply time to samples > you are processing? > -Ian > > > On Jun 5, 2018, at 7:36 AM, TIMMEN Koen via USRP-users > <usrp-users@lists.ettus.com <mailto:usrp-users@lists.ettus.com>> wrote: > > Hello all, > > Currently I’m working on a RFNoC block that requires a known time reference, > but I have trouble making this value available. Ideally I would like to have > the value available in a register designated to the block. > > As I understand, a time reference is available through the CHDR, but.. not > all the time? It is optional I read in the manual. Is this a toggle that can > be set by the user? > > Or is there another way that I am able to obtain the device time reference > available in a user register? > > Kind regards, > > Koen > _______________________________________________ > USRP-users mailing list > USRP-users@lists.ettus.com <mailto:USRP-users@lists.ettus.com> > http://lists.ettus.com/mailman/listinfo/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 <mailto:USRP-users@lists.ettus.com> > http://lists.ettus.com/mailman/listinfo/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 <mailto:USRP-users@lists.ettus.com> > http://lists.ettus.com/mailman/listinfo/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