Oct 27, 2026 · Santana Burintramart
Every number in the table follows from six primitive settings plus the antenna layout: start frequency, slope, samples per chirp, sampling rate, chirps per frame and the number of transmitters. The rest (bandwidth, resolutions, maximum range and velocity) are derived quantities, and this tutorial derives each one.
The configuration is a 60 GHz TDM-MIMO FMCW radar with 3 Tx and 4 Rx, the layout of TI’s IWR6843ISK board (the screenshot looks like TI’s mmWave sensing estimator). Note that this is a different radar family from the Sense2GoL Pulse in your host app: that board is a 24 GHz single-channel Doppler radar with no chirps, so only the Doppler section below carries over to it directly.
| Symbol | Meaning | Value |
|---|---|---|
| Start frequency | 60.75 GHz | |
| Chirp slope | 200 MHz/µs = 2×10¹⁴ Hz/s | |
| ADC samples per chirp | 96 | |
| ADC sampling rate | 10.785 Msps | |
| Chirps per frame (all Tx) | 288 | |
| Transmitters, receivers | 3, 4 | |
| Frame period | 90 ms | |
| Speed of light | 299 792 458 m/s | |
| Wavelength | 4.935 mm | |
| ADC sampling window | 8.90 µs | |
| Chirp repetition period (one Tx) | ≈ 49.1 µs (derived) | |
| Chirps per Tx per frame | 96 |
A chirp is a sinusoid whose frequency rises linearly with time. Mixing the echo with the transmitted chirp turns range into a constant beat frequency and velocity into a slow phase rotation, which is the whole trick of FMCW.
The instantaneous frequency of one chirp, for , is:
Integrating gives the transmitted phase and signal:
A point target at range returns the signal delayed by the round-trip time:
The mixer multiplies Tx and Rx, and the low-pass IF filter keeps the difference phase. With a complex (I/Q) receiver this is the IF signal:
Expanding the phase difference:
The last term (residual video phase) is tiny: at m, ns, so cycles. Dropping it and substituting :
Three things are encoded. The beat frequency gives range. The phase changes by a measurable amount between chirps when the target moves, giving velocity. The same phase differs between antennas by the extra path length, giving angle. Sections 3 to 5 extract each one with an FFT, producing the classic radar data cube (samples × chirps × antennas → range × Doppler × angle).
The 1780 MHz bandwidth is not the full ramp: it is only the part of the sweep that the ADC actually samples, .
Start frequency (60.75 GHz) sets the carrier and therefore the wavelength, which scales every phase-based quantity (velocity and angle):
Strictly, the centre of the sampled sweep ( GHz, mm) is a slightly better value; the estimator uses , and the 1.5 % difference does not change the table’s rounding much.
Slope (200 MHz/µs) is how fast the frequency rises. In SI units:
Slope converts range to beat frequency (), so a steeper slope pushes a given target to a higher IF frequency.
Samples per chirp (96) and sampling rate (10.785 Msps) fix the ADC window:
Bandwidth (1780 MHz) is the frequency swept during that window:
The physical ramp is longer than (there is ADC start time before sampling and some excess ramp after), so the synthesiser sweeps a bit more than 1.78 GHz. That extra sweep costs time and spectrum but adds no resolution, because resolution depends only on what is sampled. The 60 to 64 GHz band limits + total sweep to 64 GHz.
Range resolution comes only from bandwidth ( m); maximum range comes from how high a beat frequency the IF chain and ADC can pass ( m).
From section 1, a target at range produces
With Hz/s, every metre of range adds MHz of beat frequency.
The samples of one chirp are . Their DFT
peaks at bin . The bin spacing in frequency is , so in range:
Two targets are resolvable when their beat tones differ by at least one cycle over the observation window, . That gives the same answer:
Notice that slope and sample count cancel: only the swept bandwidth matters. A window (Hann, Blackman) lowers sidelobes but widens the main lobe, so the practical resolution is about 1.5 to 2 × .
The IF receiver is complex (I/Q), so beat frequencies from 0 up to are distinguishable (a real-only receiver would be limited to ). The ideal limit is
The IF anti-alias filter rolls off before , so TI’s tools use about 90 % of it as the usable IF bandwidth:
Equivalently, : of the 96 range bins of 8.4 cm, about 86 are usable. To see farther with the same chirp you either raise (more samples, more bandwidth needed in the ADC) or lower the slope (but then shrinks unless the chirp gets longer).
The 288 chirps are 96 loops of 3 chirps (one per Tx), so each antenna sees a chirp every ≈ 147 µs. That effective period sets m/s, and the 96 loops set m/s.
A target moving at radial velocity changes range by between consecutive chirps, so the range phase advances by
This is far too small to move the beat frequency ( over a whole frame is under one bin), but the phase is easy to measure. Sampling the range-FFT peak across chirps gives a slow-time sinusoid , whose frequency is the Doppler shift .
Phase is only known modulo , so unambiguous measurement needs :
The ± range is available because the Doppler samples are complex; this is the Nyquist limit of slow-time sampling at .
With 3 Tx in time-division multiplexing, the frame is a loop of Tx1, Tx2, Tx3 repeated times:
The same Tx/Rx pair is revisited only every , so that is the slow-time sampling interval. Solving for it from the table:
So each chirp (idle time + ramp) lasts about 49 µs, of which only 8.9 µs is the ADC window. MIMO triples the antenna count but divides by three.
The Doppler FFT over samples has bin spacing in frequency, which in velocity is
The table rounds this to 0.17. Resolution depends on total observation time per frame, ms, the same “one cycle over the window” rule as range resolution.
Moving targets also shift the beat frequency by . At that is 3.4 kHz against a range-bin width of kHz, so the range error is under 0.03 bins and can be ignored. In TDM-MIMO, however, the Tx2 and Tx3 chirps see an extra phase of and , which must be compensated before the angle FFT:
3 Tx × 4 Rx form 12 virtual antennas: 8 in a horizontal row (azimuth resolution ) and only 2 rows vertically (elevation ≈ 2/2 rad ≈ 57–58°).
A plane wave arriving at angle from boresight reaches antenna , spaced along the array, with an extra path . For a radar the Tx-to-target and target-to-Rx paths both contribute, but in the far field each is a one-way delay, so the phase at virtual element is
In MIMO, a Tx at position and Rx at position behave like a single element at (the sum of positions, from the sum of the two path lengths). Number of virtual channels:
On the IWR6843ISK layout, the four Rx sit apart, Tx1 and Tx3 are apart horizontally, and Tx2 is raised and offset. Tx1 and Tx3 therefore build one gap-free row of 8 elements at spacing; Tx2 adds a second, elevated row of 4.
| Tx | Virtual elements | Role |
|---|---|---|
| Tx1 | x = 0, 1, 2, 3 (× λ/2), z = 0 | Azimuth row |
| Tx3 | x = 4, 5, 6, 7 (× λ/2), z = 0 | Azimuth row (continues) |
| Tx2 | x = 2, 3, 4, 5 (× λ/2), z = 1 (× λ/2) | Elevation row |
The angle FFT measures modulo , so requires
An -element FFT resolves spatial frequencies one bin apart, . Since for :
Resolution is best at boresight and degrades toward the edges (the term). At boresight:
The elevation figure uses the small-angle form; with only two rows the approximation is rough (the exact is 90°), and in practice two elevation rows give you a height estimate for a single target, not the ability to separate two. Interpolating with a zero-padded FFT gives finer peak positions but not better resolution.
The radar transmits for only about 14 ms of every 90 ms frame (15.7 % duty cycle) and spends the rest processing, sending data and saving power.
The frame period does not appear in any resolution formula. It sets how often you get a new point cloud, and it bounds tracking: a target at moves 8.38 × 0.09 = 0.75 m (about 9 range bins) between frames.
Raw data volume per frame, with 16-bit I and Q:
The processed data cube after the range, Doppler and angle FFTs is 96 range × 96 Doppler × 12 virtual antennas.
All eleven derived values in the screenshot reproduce from the six primitives to within the table’s rounding.
| Parameter | Formula | Computed | Table |
|---|---|---|---|
| Wavelength | 4.935 mm | not shown | |
| ADC window | 8.901 µs | not shown | |
| Bandwidth | 1780.3 MHz | 1780 MHz | |
| Range resolution | 0.0842 m | 0.084 m | |
| Max range | 7.27 m | 7.2 m | |
| Chirp period (per Tx) | 49.07 µs | inferred | |
| Max velocity | 8.38 m/s | 8.38 m/s | |
| Chirp loops | 96 | 288 / 3 | |
| Velocity resolution | 0.1746 m/s | 0.17 m/s | |
| Virtual antennas | 12 | 3 × 4 | |
| Azimuth resolution | 14.48° | 14.5° | |
| Elevation resolution | 2 / 2 rad | 57.3° | 58° |
| Active time / duty | 14.13 ms / 15.7 % | not shown |
The chirp period is the one value not in the table; it is back-solved from , so if you change the idle time in the configuration, both and change with it.
The notebook fmcw_chirp_parameters_simulation.ipynb
simulates the full 3 Tx × 4 Rx TDM-MIMO radar with these exact settings
and confirms every table value by simulation. It needs only numpy and
matplotlib and runs in under a minute. All figures on this page come
from it.
| § | Simulation | What it shows |
|---|---|---|
| 0 | Parameter calculator | All table values recomputed, with assertions |
| 1 | Chirp and IF signal | = 1.334 MHz per metre of range |
| 2 | Two-target range FFT | Targets merge below 1 ΔR (rect) or ~1.5 ΔR (Hann); ΔR depends only on B |
| 3 | Range sweep 0.5–12 m | Range wraps at 8.08 m; IF filter loses ~2 dB at 7.27 m |
| 4 | TDM-MIMO data cube | Builds the 3 × 96 × 4 × 96 cube and plots the virtual array |
| 5 | Range–Doppler map | Three targets placed correctly; velocity wraps outside ±8.38 m/s |
| 6 | Two-target Doppler FFT | Velocity resolution 0.175 m/s from 14.1 ms of observation |
| 7 | Beam patterns, angle FFT | 8-element row resolves 14.5°, 2-element column ~57° |
| 8 | TDM phase error | Uncompensated azimuth error reaches ±7° at ; compensation removes it |
| 9 | Full pipeline | Range, velocity, azimuth and elevation recovered for three targets |
| 10 | Parameter explorer | Change slope, loops, Tx count and see the trade-offs |
The simulation uses the convention positive velocity = receding (range increasing). Your Sense2GoL host app uses the opposite sign (approaching = positive), so flip the sign if you compare the two.