I did some derivation of the IF signal of the FMCW using sawtooth LFM.
A chirp with sawtooth LFM is expressed like below $$x_T (t)=\cos\left(2\pi f_c t + \frac{\pi}{T}B (t-mT)^2 \right)$$ Where, $f_c$ is the center frequency, $T$ is the chrip duration, and $m$ is the number of chirp in the frame.
The two-way time delay of an obejct of initial range $R$ and time varying velocity $v(t)$ will be $$t_d=\frac{2(R+v(t)t)}{c}$$ Then the received signal is $$x_R (t) = \cos\left(2\pi f_c (t-t_d)+\frac{\pi}{T} B(t-t_d-mT)^2\right)$$ Mixing and fitering out the upper sideband gives signal with frequency $f_T - f_R$. The IF signal is $$x_{IF}=\cos\left(2\pi f_c t_d+\frac{2\pi B}{T}t_d (t-mT)-\frac{\pi B}{T}t_d^2 \right)$$ $$\Rightarrow x_{IF}=\cos\left(2\pi\left[\frac{2f_c R}{c}-\frac{2BRm}{c}-\frac{4\pi BR^2}{C^2 T}+\frac{2 f_c v(t)}{c}t+\frac{2 BR}{cT}t\\-\frac{2Bmv(t)}{c}t-\frac{8\pi BRv(t)}{c^2 T}t+\frac{2Bv(t)}{cT}t^2-\frac{4\pi B v(t)^2}{c^2 T}t^2 \right]\right)$$ The frequency of the IF signal is $$f_{IF}=\frac{2f_c v(t)}{c}+\frac{2f_c v^\prime (t)}{c}t+\frac{2BR}{cT}-\frac{2Bmv(t)}{c}-\frac{2Bmv^\prime(t)}{c}t-\frac{8\pi BR v(t)}{c^2 T}-\frac{8\pi BR v^\prime(t)}{c^2 T}t+\frac{4Bv(t)}{cT}t+\frac{2Bv^\prime(t)}{cT}t^2-\frac{8\pi Bv(t)^2}{c^2T}t-\frac{8\pi Bv(t)v^\prime(t)}{c^2T}t^2$$
From here, I have no idea how to derive the range equation. Also, many documents in the internet just calculate the range equation for a stationary object and use it onwards. How reliable is it? I did all this to find a way to compare the results between one with all the range-doppler coupling included and the one with the assumption that the object is stationary.

  • $\begingroup$ This is more complicated than it needs to be. Look at this post for a simple derivation of beat frequencies in FMCW: dsp.stackexchange.com/questions/68234/… $\endgroup$
    – Envidia
    Dec 22, 2022 at 23:46
  • $\begingroup$ @Envidia Thank you for the comment. Yes I have seen your post before I posted mine. The thing that was and still bugging me is that when we have constant or time-varying velocity, the derivative of the received signal will not be the same as the transmitted signal because with radial velocity, the range must change and this will alter the round-trip time delay. I know that it is a very minor thing but I wanted to model it in. How do you think about this? $\endgroup$
    – Moses Kim
    Dec 23, 2022 at 6:13
  • $\begingroup$ Absolutely. That post does not explicitly add Doppler in the single-pulse analysis (it does when considering a CPI of multiple pulses). However, the Doppler can be measured using multiple chirps, while also correcting for range-Doppler coupling. If I have time I will post an example but please consider and do some experimentation to confirm yourself that it's possible. $\endgroup$
    – Envidia
    Dec 23, 2022 at 7:08
  • $\begingroup$ @Envidia Does it mean that considering Doppler within a single pulse is unnecessary? If so, does it mean that the minimum time interval between two velocity measurements is the total duration of a frame? $\endgroup$
    – Moses Kim
    Dec 23, 2022 at 11:01
  • $\begingroup$ It really depends on what you're trying to do. The main goal is to find the range of an object. Depending on the parameters of the chirp and your specifications, the range migration due to Doppler may be ignored. However if you're explicitly trying to measure Doppler, that's a different story. To your last question: when considering processing multiple chirps, you must have an equivalent PRF that will give you unambiguous velocity, unless you are doing some other techniques to determine true velocity, but that's beyond the scope of this question. $\endgroup$
    – Envidia
    Dec 26, 2022 at 18:20

1 Answer 1


The range calculation for FMCW is much simpler than this and quite intuitive- since the chirp is “unchirped” in the receiver we can compute everything based on the received IF waveform as a frequency vs time, using the ramp rate of the chirp as a simple delay to frequency converter. From that we can estimate velocity to account for Doppler offsets for the case of moving targets.

First reviewing the basic FMCW ranging operation: Given a ramp rate in frequency and a stationary object, the round trip delay between the transmit signal and receive signal results in a constant frequency offset after the received chirp is multiplied with the transmitted chirp and low pass filtered, as depicted in the diagram below.


The round trip delay $\tau$ is calculated directly from the measured offset frequency $f_{\Delta}$ for a given target and the ramp rate $R$ as $f_{\Delta}/R$. For a simple example, if the chirp was sweeping at a rate of R = 10 MHz/us and the round trip delay was 100 ns, the frequency difference between transmit and receive would be 1 MHz:

$$f_{\Delta}= \tau R = (1E-9)(10E6/1E-6) = 1E6$$

In free space, propagation is approximately 1 ns/foot as given by the speed of light $c$, so the round trip delay of 100 ns would be associated with a target approximately 50 feet away. Or as calculated in meters:

$$d = \frac{c \tau}{2} = \frac{(3E8) (100E-9)}{2} = 15 \text{ meters}$$

The frequencies corresponding to the determination of range are typically computed using a "range FFT" which is an FFT of the IF signal over a unit time interval (which is typically the FFT chirp duration but need not be), resulting in complex values corresponding to each bin in the FFT and called "range bins".

Velocity of targets is determined by comparing successive range FFT's over a fixed time interval (typically the time between chirps if the range FFT is done on a complete chirp and the chirps are transmitted at consistent time intervals). This can be done with a digital differentiator on the computed ranges if a shorter time velocity resolution is needed, or with subsequent "Doppler FFT's" across multiple range bins: This would involve fast time "Range FFT's" done to compute the range bins (as a column) on finer scale time blocks (such as a chirp) and then with the use of multiple consecutive Range FFT's over a longer time duration (such as over multiple chirps) slow time "Doppler FFT's" are computed across the rows to compute the average velocities. The reason this works is to consider how a slower velocity would change the range slightly from one Range FFT to the next. This results in a change in phase for the particular FFT bin that was maximized for the given range. A change in phase over a change in time (from one Range FFT to the next) is frequency, since instantaneous frequency is $d\phi dt$, so therefore any frequencies across the rows would be a result of changing ranges. The resulting grid of bins as range in columns and velocities in rows is referred to as a "Range-Doppler Map".

The actual frequencies measured corresponding to the ranges in the range bins are modified due to the Doppler offset for moving targets. This has the effect of shifting all the frequencies for the range bins up and down, proportional to the velocity for a given target but does not change (for the case of constant velocity) the change in range over time, meaning the Doppler bins and resulting computed velocities are not modified. This means if we want to do Doppler correction, we can compute the velocities first from the rows in the Range-Doppler map and then with that correct for the Doppler offsets induced on the ranges resolved from the columns.

To see how Doppler offset affects the determined range, consider first the target with a constant velocity moving toward the transmitter. Assuming the frequency change over the ramp is significantly smaller than the carrier frequency transmitted (as would be typical for FMCW), the Doppler offset in this case would be constant and independent of the frequency ramp rate, shifting the frequency of the received signal higher as depicted in the graphic below and given by the formula below that.

Doppler Offset

$$f_d = \frac{2v_r f_{tx}}{c}$$


$f_d$: Doppler frequency offset

$v_r$: velocity between transmitter and target

$f_{tx}$: carrier frequency of transmitter (assumed >> frequency ramp)

$c$: speed of light.

In addition to this offset, and not necessarily visible in the scale of the graphic above, the measured frequency difference after the low pass filter ($f_{\Delta}$) will be changing with time (as itself a ramp if velocity is constant). Note that there is no cross-dependence in the ramp due to the time change in range, and the offset due the Doppler frequency due to the target velocity; therefore these two effects can be computed independently and summed.

Consider our example with the transmitted frequency as 10 GHz, with a relative velocity between transmitter and receiver of 20 m/s (target moving toward transmitter) the Doppler offset would then shift the received chirp upward in frequency by:

$$f_d = \frac{2 (20) 10E9 }{3E8} = 1.33 \text{ KHz}$$

As the target is moving toward the transmitter, the frequency difference due to the range alone would be decreasing. If we assumed a case where we use all measured data was for the target from 15m range as originally derived, up to a 14 m range, or 1 meter corresponding to a time of 1/20 second (given the velocity of 20 m/s), the frequency after the low pass filter without accounting for Doppler would be 1 MHz at 15m corresponding to a 100 ns delay as computed above, and for 14m:

$$\tau = \frac{2d}{c} = \frac {2(14)}{3E8} = 93.33 \text{ ns}$$

$$f_{\Delta} = \tau R = (93.33E-9)(10E6/1E-6) = 933.3 \text{ KHz}$$

Thus the frequency difference $f_{\Delta}$ before accounting for Doppler went from 1 MHz to 933.3 KHz over the 50 ms measurement interval. As noted by the graphic above, the effect of the increase in Doppler is to decrease this measured frequency difference by a constant amount, specifically 1.33 KHz in this case, and does not change the rate of change for the measured frequency; so the actual measured $f_{\Delta}$ in this case would be a frequency ramp starting at 998.67 KHz and ending at 932 KHz. Independent of this frequency shift, we can still derive the velocity directly from the rate of change in the measured frequency.

The above is to show that the ramp of the chirp itself can be removed from the equation with Doppler and velocity determination based on the derived waveform for $f_{\Delta}$, simplifying the computation.

Combining the above to a final formulation, we get:

$$d = \frac{c \tau}{2} = \frac{c (f_{\Delta} + f_d)}{2R} =\frac{c f_{\Delta} + 2v_r f_{tx}}{2R}$$


$R$: Ramp rate of chirp

$f_d$: Doppler frequency offset

$f_{\Delta}$: Measured frequency after low pass filter in receiver

$f_{tx}$: carrier frequency of transmitter (assumed >> frequency ramp)

$c$: speed of light.

And $v_r$ is derived directly from the time rate of change in $f_{\Delta}$, which is not affected by a constant Doppler or other parameters as described above.

A time varying velocity would result in the following differential equation:

$$v_r = \dot{d} = \frac{c}{2R}(\dot{f_{\Delta}}+2\dot{v_r}f_{tx})$$

Which for constant velocity simplifies to:

$$v_r = \frac{c \dot{f_{\Delta}}}{2R}$$

Resulting in:

$$d = \frac{cf_{\Delta}}{2R} + \frac{c \dot{f_{\Delta}}f_{tx}}{2R^2}$$

With the above computations we are assuming the receiver bandwidth is wide enough and time resolution for all processing small enough to support the rate of change due to the velocity of the target, otherwise these effects can also significantly impact the result.

[NOTE: I derived the above result while writing this post and did not yet confirm with a reference, simulation or other source. There could easily be sign or factor of 2 errors so please confirm my derivation carefully. I will remove this note once I have otherwise validated the result]

A useful reference on FMCW and other radars is this write-up by Infineon.

  • $\begingroup$ But doesn't $f_\Delta$ include the frequency shift made by the radial velocity of the object? Wouldn't this skew the apparent range to the actual range? $\endgroup$
    – Moses Kim
    Dec 17, 2022 at 12:22
  • $\begingroup$ @Moses My thought was to dechirp first and then consider the added Doppler directly, the fact that we are ramping the frequency does not change the Doppler that would result and working that into the chirp is needlessly complicated.... let me try to articulate that $\endgroup$ Dec 17, 2022 at 12:31
  • $\begingroup$ Thank you for the explanation. So does it mean that if we don't use other modulation method such as the trangular LFM, we have to accept the defect of the range-doppler coupling and pick the appropriate bandwidth and slope so that it will have an acceptable tolerance for the normal range and velocity of the intended application of the design? $\endgroup$
    – Moses Kim
    Dec 17, 2022 at 14:57
  • $\begingroup$ @MosesKim I am not confident I understand your question, but do you see/agree that the Doppler and range are not ambiguous and easily decoupled (at least for the case of a constant velocity)? We do need to choose our receiver bandwidth and time resolution of processing to be significantly greater / finer than the expected range of velocity of the intended application, otherwise that too will skew the results (notably receiver bandwidth limits the rate of change)-- if the max rate of change < 10x the receiver bandwidth, this should not be an issue (depending on accuracy desired and SNR) $\endgroup$ Dec 17, 2022 at 15:07
  • $\begingroup$ Oh sorry I misread the post. So, if the range is changing (meaning doppler shift is happening), the beat frequency will be time varying. Because the doppler effect doesn't change the total duration, the velocity (time varying or not) can be worked out directly from the time varying IF signal. With the extracted velocity data, we can then extactly work out the range of the target. If this is true, because the range FFT is calculated before the range FFT, does the range get corrected after the all the range data is collected? $\endgroup$
    – Moses Kim
    Dec 17, 2022 at 16:00

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.