Raw Timestamp and Channel Impulse Response

I’m interested in understanding the RX raw timestamp (from 0x15) and how it relates to the accumulator memory in register 0x25.

The RX_STAMP is connected to the sample index of the accumulator memory by the FP_INDEX, but how is RX_RAWST related? What is the decision logic that decides how the 1016 (or 992 depending on mode) are centered/captured and how does that relate to RX_RAWST?

Second, what is the formula for computing the next TX_STAMP (with or without TX antenna delay) from a RX_RAWST when a reply has been requested?

Hi Akoski,


The raw RX time stamp is the time at which PHR is detected (see IC user manual) Basically the RX_STAMP is the RX_RAWST but with LDE adjustments to improve resolution.

The accumulator samples (0x25) do not use raw sample values when reading the accumulator, but adjusted RX Timestamps. See also IC user manual Register file: 0x25 – Accumulator CIR memory

The moment DW1000 starts the Tx it uses the Tx raw and simply adds the TX_ANTD (0X18) to create Tx timestamp

And as you can see from reading DW User Manual. Transmission is always done with around 8ns (125 Mhz) precision

And while you have the IC User manual open, also have a look at Sub-Register 0x2E:1804 – LDE_RXANTD


Hi Leo,

Thank you for the response!

The accumulator samples 1 symbol of data total at the ~1ns per sample rate with a reference defined by the RX_STAMP? Is it true that FLOOR(FP_INDEX) is always the same value (740?)? Is there any way to have the chip not perform the LDE and provide the accumulator samples relative to a different reference (non-LDE reference)?

As for the TX_STAMP, when does the counter start? relative to what reference? It doesn’t appear to be exactly related to the RX_STAMP … i.e. RX_STAMP + TX_RAWST + TX_ANTD isn’t the exact time the return transmit occurs. What additional delays are there?

What I need is a high accuracy and predictable time from one of the samples in the accumulator data to when the TX leaves the antenna that is not related to the internal LDE. For example, if the accumulator data was captured by a scope trace (simple threshold), the waveform on the scope would be captured centered around the captured threshold crossing… independent of what the waveform represents. Relative to this threshold crossing, I then need to know the precise time of the return transmit. The accumulator data in this case would act as a scope memory always capturing some known and fixed number of pre- and post- samples around the threshold crossing trigger point. As far as I can tell looking at the available documentation (primarily the DW User Manual), this cannot be done. Am I missing some key piece of information? What do you think?

Thanks again for your feedback.

Hi Again

I’m not 100% sure what you require, but could I ask you to look at the IC user manual chapter on delayed transmission? (chapter 3.3) It describes in great detail how Transmission is kicked of and how this is managed.


I guess (by what I read in topics “4.1.1 Preamble detection” and “4.1.2 Preable accumulation” of the DW1000 User Manual) the accumulator is triggered by the correlation result of what is being sampled at the antenna and the so called “chunks” (refer to the topic 4.1.1). Once it passes some sort of correlation threshold point it begins accumulating preamble information and looking for SFD. So, meanwhile the RTC is counting at 64 GHz frequency, and when SFD is detected the circuitry generates a raw timestamp, which is corrected by several factors (refer to “4.1.6 RX Message timestamp”) giving birth to the actual RX timestamp of register 0x15.

About this part, I think that it is impossible for the chip not to perform LDE algorithm, but at the same time it does not change the accumulator itself, it changes (adjusts) only the timestamp because it finds the first path of SFD part of the received signal (refer to the topic “ Sub-Register 0x2E:1804 – LDE_RXANTD”).

Please, give me your thoughts about my point of view and best regards.

Hi Akoski,
I think I have the same question as you :handshake:

Dear Leo,
I hope you can answer my confusion :pray:

How does the LDE algorithm adjust the RX timestamp?

What is the resolution here?

Can I see the specific process or algorithm in which technical documents or open-source code?

What command can I use to read the original RX_RAWST value?