feat: 2048-pt FFT upgrade with decimation=4, 512 output bins, 6m spacing

Complete cross-layer upgrade from 1024-pt/64-bin to 2048-pt/512-bin FFT:

FPGA RTL (14+ modules):
- radar_params.vh: FFT_SIZE=2048, RANGE_BINS=512, 9-bit range, 6-bit stream
- fft_engine.v: 2048-pt FFT with XPM BRAM
- chirp_memory_loader_param.v: 2 segments x 2048 (was 4 x 1024)
- matched_filter_multi_segment.v: BRAM inference for overlap_cache, explicit ov_waddr
- mti_canceller.v: BRAM inference for prev_i/q arrays (was fabric FFs)
- doppler_processor.v: 16384-deep memory, 14-bit addressing
- cfar_ca.v: 512 rows, indentation fix
- radar_receiver_final.v: rising-edge detector for frame_complete, 11-bit sample_addr
- range_bin_decimator.v: 512 output bins
- usb_data_interface_ft2232h.v: bulk per-frame with Manhattan magnitude
- radar_mode_controller.v: XOR edge detector for toggle signals
- rx_gain_control.v: updated for new bin count

Python GUI + Protocol (8 files):
- radar_protocol.py: 512-bin bulk frame parser, LSB-first bitmap
- GUI_V65_Tk.py, v7/*.py: updated for 512 bins, 6m range resolution

Golden data + tests:
- All .hex/.csv/.npy golden references regenerated for 2048/512
- fft_twiddle_2048.mem added
- Deleted stale seg2/seg3 chirp mem files
- 9 new bulk frame cross-layer tests, deleted 6 stale per-sample tests
- Deleted stale tb_cross_layer_ft2232h.v and dead contract_parser functions
- Updated validate_mem_files.py for 2048/2-segment config

MCU: RadarSettings.cpp max_distance/map_size 1536->3072

All 4 CI jobs pass: 285 tests, 0 failures, 0 skips
This commit is contained in:
Jason
2026-04-16 17:27:55 +05:45
parent affa40a9d3
commit e9705e40b7
178 changed files with 687738 additions and 122880 deletions
+515
View File
@@ -0,0 +1,515 @@
// Quarter-wave cosine ROM for 2048-point FFT
// 512 entries, 16-bit signed Q15 ($readmemh format)
// cos(2*pi*k/2048) for k = 0..511
7FFF
7FFF
7FFE
7FFE
7FFD
7FFB
7FF9
7FF7
7FF5
7FF3
7FF0
7FEC
7FE9
7FE5
7FE1
7FDC
7FD8
7FD2
7FCD
7FC7
7FC1
7FBB
7FB4
7FAD
7FA6
7F9F
7F97
7F8F
7F86
7F7D
7F74
7F6B
7F61
7F57
7F4D
7F42
7F37
7F2C
7F21
7F15
7F09
7EFC
7EEF
7EE2
7ED5
7EC7
7EB9
7EAB
7E9C
7E8D
7E7E
7E6F
7E5F
7E4F
7E3E
7E2E
7E1D
7E0B
7DFA
7DE8
7DD5
7DC3
7DB0
7D9D
7D89
7D76
7D62
7D4D
7D39
7D24
7D0E
7CF9
7CE3
7CCD
7CB6
7C9F
7C88
7C71
7C59
7C41
7C29
7C10
7BF8
7BDE
7BC5
7BAB
7B91
7B77
7B5C
7B41
7B26
7B0A
7AEE
7AD2
7AB6
7A99
7A7C
7A5F
7A41
7A23
7A05
79E6
79C8
79A9
7989
796A
794A
7929
7909
78E8
78C7
78A5
7884
7862
783F
781D
77FA
77D7
77B3
778F
776B
7747
7722
76FE
76D8
76B3
768D
7667
7641
761A
75F3
75CC
75A5
757D
7555
752D
7504
74DB
74B2
7488
745F
7435
740A
73E0
73B5
738A
735E
7333
7307
72DB
72AE
7281
7254
7227
71F9
71CB
719D
716F
7140
7111
70E2
70B2
7083
7053
7022
6FF2
6FC1
6F90
6F5E
6F2C
6EFB
6EC8
6E96
6E63
6E30
6DFD
6DC9
6D95
6D61
6D2D
6CF8
6CC3
6C8E
6C59
6C23
6BED
6BB7
6B81
6B4A
6B13
6ADC
6AA4
6A6D
6A35
69FD
69C4
698B
6952
6919
68E0
68A6
686C
6832
67F7
67BC
6781
6746
670A
66CF
6693
6656
661A
65DD
65A0
6563
6525
64E8
64AA
646C
642D
63EE
63AF
6370
6331
62F1
62B1
6271
6231
61F0
61AF
616E
612D
60EB
60AA
6068
6025
5FE3
5FA0
5F5D
5F1A
5ED7
5E93
5E4F
5E0B
5DC7
5D82
5D3E
5CF9
5CB3
5C6E
5C28
5BE2
5B9C
5B56
5B0F
5AC9
5A82
5A3B
59F3
59AC
5964
591C
58D3
588B
5842
57F9
57B0
5767
571D
56D3
568A
563F
55F5
55AA
5560
5515
54C9
547E
5432
53E7
539B
534E
5302
52B5
5268
521B
51CE
5181
5133
50E5
5097
5049
4FFB
4FAC
4F5D
4F0E
4EBF
4E70
4E20
4DD1
4D81
4D31
4CE0
4C90
4C3F
4BEE
4B9D
4B4C
4AFB
4AA9
4A58
4A06
49B4
4961
490F
48BC
4869
4816
47C3
4770
471C
46C9
4675
4621
45CD
4578
4524
44CF
447A
4425
43D0
437B
4325
42D0
427A
4224
41CE
4177
4121
40CA
4073
401D
3FC5
3F6E
3F17
3EBF
3E68
3E10
3DB8
3D60
3D07
3CAF
3C56
3BFE
3BA5
3B4C
3AF2
3A99
3A40
39E6
398C
3933
38D9
387E
3824
37CA
376F
3715
36BA
365F
3604
35A8
354D
34F2
3496
343A
33DF
3383
3326
32CA
326E
3211
31B5
3158
30FB
309E
3041
2FE4
2F87
2F2A
2ECC
2E6E
2E11
2DB3
2D55
2CF7
2C99
2C3A
2BDC
2B7D
2B1F
2AC0
2A61
2A02
29A3
2944
28E5
2886
2826
27C7
2767
2708
26A8
2648
25E8
2588
2528
24C8
2467
2407
23A6
2346
22E5
2284
2223
21C2
2161
2100
209F
203E
1FDD
1F7B
1F1A
1EB8
1E57
1DF5
1D93
1D31
1CCF
1C6D
1C0B
1BA9
1B47
1AE5
1A82
1A20
19BE
195B
18F9
1896
1833
17D0
176E
170B
16A8
1645
15E2
157F
151C
14B9
1455
13F2
138F
132B
12C8
1264
1201
119D
113A
10D6
1072
100F
0FAB
0F47
0EE3
0E80
0E1C
0DB8
0D54
0CF0
0C8C
0C28
0BC4
0B5F
0AFB
0A97
0A33
09CF
096A
0906
08A2
083E
07D9
0775
0711
06AC
0648
05E3
057F
051B
04B6
0452
03ED
0389
0324
02C0
025B
01F7
0192
012E
00C9
0065