Integrate MTI canceller and DC notch filter for ground clutter removal
MTI canceller (2-pulse, H(z)=1-z^{-1}) between range decimator and
Doppler processor. Subtracts previous chirp from current, nulling DC
Doppler (stationary clutter). Pass-through when host_mti_enable=0.
DC notch filter (post-Doppler, pre-CFAR) zeros bins within
+/-host_dc_notch_width of DC. Complements MTI for residual clutter.
New host registers: 0x26 (mti_enable), 0x27 (dc_notch_width).
Both default to 0 (disabled) - fully backward-compatible.
Verification: 23/23 regression, 29/29 MTI standalone, 3/3 real-data
co-sim (5137/5137 exact match) all PASS.
This commit is contained in:
@@ -74,6 +74,7 @@ PROD_RTL=(
|
||||
radar_mode_controller.v
|
||||
rx_gain_control.v
|
||||
cfar_ca.v
|
||||
mti_canceller.v
|
||||
)
|
||||
|
||||
# Source-only RTL (not instantiated at top level, but should still be lint-clean)
|
||||
@@ -377,6 +378,10 @@ run_test "RX Gain Control (digital gain)" \
|
||||
tb/tb_rx_gain_control.vvp \
|
||||
tb/tb_rx_gain_control.v rx_gain_control.v
|
||||
|
||||
run_test "MTI Canceller (ground clutter)" \
|
||||
tb/tb_mti_canceller.vvp \
|
||||
tb/tb_mti_canceller.v mti_canceller.v
|
||||
|
||||
run_test "CFAR CA Detector" \
|
||||
tb/tb_cfar_ca.vvp \
|
||||
tb/tb_cfar_ca.v cfar_ca.v
|
||||
@@ -405,7 +410,7 @@ if [[ "$QUICK" -eq 0 ]]; then
|
||||
chirp_memory_loader_param.v latency_buffer.v \
|
||||
matched_filter_multi_segment.v matched_filter_processing_chain.v \
|
||||
range_bin_decimator.v doppler_processor.v xfft_32.v fft_engine.v \
|
||||
rx_gain_control.v
|
||||
rx_gain_control.v mti_canceller.v
|
||||
|
||||
# Golden compare
|
||||
run_test "Receiver (golden compare)" \
|
||||
@@ -417,7 +422,7 @@ if [[ "$QUICK" -eq 0 ]]; then
|
||||
chirp_memory_loader_param.v latency_buffer.v \
|
||||
matched_filter_multi_segment.v matched_filter_processing_chain.v \
|
||||
range_bin_decimator.v doppler_processor.v xfft_32.v fft_engine.v \
|
||||
rx_gain_control.v
|
||||
rx_gain_control.v mti_canceller.v
|
||||
|
||||
# Full system top (monitoring-only, legacy)
|
||||
run_test "System Top (radar_system_tb)" \
|
||||
@@ -431,7 +436,7 @@ if [[ "$QUICK" -eq 0 ]]; then
|
||||
matched_filter_multi_segment.v matched_filter_processing_chain.v \
|
||||
range_bin_decimator.v doppler_processor.v xfft_32.v fft_engine.v \
|
||||
usb_data_interface.v edge_detector.v radar_mode_controller.v \
|
||||
rx_gain_control.v cfar_ca.v
|
||||
rx_gain_control.v cfar_ca.v mti_canceller.v
|
||||
|
||||
# E2E integration (46 strict checks: TX, RX, USB R/W, CDC, safety, reset)
|
||||
run_test "System E2E (tb_system_e2e)" \
|
||||
@@ -445,7 +450,7 @@ if [[ "$QUICK" -eq 0 ]]; then
|
||||
matched_filter_multi_segment.v matched_filter_processing_chain.v \
|
||||
range_bin_decimator.v doppler_processor.v xfft_32.v fft_engine.v \
|
||||
usb_data_interface.v edge_detector.v radar_mode_controller.v \
|
||||
rx_gain_control.v cfar_ca.v
|
||||
rx_gain_control.v cfar_ca.v mti_canceller.v
|
||||
else
|
||||
echo " (skipped receiver golden + system top + E2E — use without --quick)"
|
||||
SKIP=$((SKIP + 4))
|
||||
|
||||
Reference in New Issue
Block a user