mirror of
https://github.com/NawfalMotii79/PLFM_RADAR.git
synced 2026-06-09 15:07:14 +00:00
docs(cfar): PR-M.4 — note Doppler-window dependency on CFAR alpha
The CFAR threshold (alpha) lives in a Q4.4 host register and is loaded
from RP_DEF_CFAR_ALPHA / _SOFT at boot (3.0 / 1.5 in Q4.4). With PR-M.2
swapping the Doppler window from a non-canonical "Hamming-ish" LUT
(PSL=-33 dB) to Dolph-Chebyshev 60 dB (PSL=-60 dB), training-cell
contamination from off-Doppler sidelobes drops by 27 dB and the
effective Pfa at the shipped alpha drops accordingly.
This commit is documentation only — defaults are not changed pre-HW.
Two operating-point options for HW bring-up:
(a) Hold alpha — get higher Pd at lower Pfa as a free win.
(b) Lower alpha — recover original Pfa, get even higher Pd.
Recommended bring-up procedure recorded in cfar_ca.v header:
1. Collect noise-only frames (no targets in dwell).
2. Measure empirical Pfa at shipped alpha=3.0 / 1.5.
3. If Pfa < 0.5 x design target, lower alpha; otherwise hold.
Opcodes 0x23 (RP_OP_CFAR_ALPHA) and 0x2D (RP_OP_CFAR_ALPHA_SOFT) let
the host adjust at runtime without firmware change.
Files:
* cfar_ca.v — adds "Doppler-window dependency" block to the header
after the existing "Threshold computation" block.
* radar_params.vh — adds a note above RP_DEF_CFAR_ALPHA pointing at
cfar_ca.v for the rationale.
This commit is contained in:
@@ -42,6 +42,29 @@
|
||||
* alpha_fpga = alpha_statistical / 16 = 0.305 → Q4.4 ≈ 0x05
|
||||
* Or host can set alpha per training cell if it accounts for count.
|
||||
*
|
||||
* Doppler-window dependency (PR-M, 2026-05-01):
|
||||
* CFAR slides through RANGE within each Doppler-bin column, so the
|
||||
* training-cell statistics depend on what "noise" actually looks like
|
||||
* in a column — which includes Doppler-window sidelobe leakage from
|
||||
* strong returns at OTHER Doppler bins at the same range.
|
||||
*
|
||||
* With the new Dolph-Chebyshev 60 dB window (vs the old "Hamming-ish"
|
||||
* LUT at -33 dB peak sidelobes), sidelobe leakage drops 27 dB. Training
|
||||
* cells are now closer to true thermal noise; effective Pfa at the
|
||||
* shipped α defaults (RP_DEF_CFAR_ALPHA=3.0, ALPHA_SOFT=1.5) drops
|
||||
* accordingly. Two operating-point choices for HW bring-up:
|
||||
*
|
||||
* (a) Hold α — accept lower Pfa, get higher Pd as a free win.
|
||||
* (b) Lower α — recover original Pfa, get even higher Pd.
|
||||
*
|
||||
* Defaults are NOT changed in this PR. Recommended bring-up procedure:
|
||||
* 1. Collect noise-only frames (no targets in dwell).
|
||||
* 2. Measure empirical Pfa at shipped α=3.0/1.5.
|
||||
* 3. If Pfa < 0.5 × design target, lower α to spec; otherwise hold.
|
||||
*
|
||||
* The opcodes 0x23 (RP_OP_CFAR_ALPHA) and 0x2D (RP_OP_CFAR_ALPHA_SOFT)
|
||||
* let the host adjust α at runtime without firmware change.
|
||||
*
|
||||
* Edge handling:
|
||||
* At range boundaries where the full window doesn't fit, only available
|
||||
* training cells are used. The noise estimate naturally reduces, raising
|
||||
|
||||
@@ -229,6 +229,12 @@
|
||||
// ============================================================================
|
||||
// CFAR DEFAULTS
|
||||
// ============================================================================
|
||||
// alpha defaults below are calibrated for the Dolph-Chebyshev 60 dB Doppler
|
||||
// window (PR-M, 2026-05-01). With the new -60 dB sidelobes, training cells
|
||||
// suffer ~27 dB less leakage from strong off-Doppler returns than under the
|
||||
// previous "Hamming-ish" -33 dB LUT — effective Pfa at fixed alpha drops
|
||||
// accordingly. Re-measure during HW bring-up; opcode 0x23/0x2D adjusts at
|
||||
// runtime. See cfar_ca.v "Doppler-window dependency" comment for details.
|
||||
`define RP_DEF_CFAR_GUARD 2
|
||||
`define RP_DEF_CFAR_TRAIN 8
|
||||
`define RP_DEF_CFAR_ALPHA 8'h30 // 3.0 in Q4.4
|
||||
|
||||
Reference in New Issue
Block a user