Jason
ffba27a10a
feat: hybrid AGC (FPGA phases 1-3 + GUI phase 6) with timing fix
FPGA:
- rx_gain_control.v rewritten: per-frame peak/saturation tracking,
auto-shift AGC with attack/decay/holdoff, signed gain -7 to +7
- New registers 0x28-0x2C (agc_enable/target/attack/decay/holdoff)
- status_words[4] carries AGC metrics (gain, peak, sat_count, enable)
- DIG_5 GPIO outputs saturation flag for STM32 outer loop
- Both USB interfaces (FT601 + FT2232H) updated with AGC status ports
Timing fix (WNS +0.001ns -> +0.045ns, 45x improvement):
- CIC max_fanout 4->16 on valid pipeline registers
- +200ps setup uncertainty on 400MHz domain
- ExtraNetDelay_high placement + AggressiveExplore routing
GUI:
- AGC opcodes + status parsing in radar_protocol.py
- AGC control groups in both tkinter and V7 PyQt dashboards
- 11 new AGC tests (103/103 GUI tests pass)
Cross-layer:
- AGC opcodes/defaults/status assertions added (29/29 pass)
- contract_parser.py: fixed comment stripping in concat parser
All tests green: 25 FPGA + 103 GUI + 29 cross-layer = 157 pass
2026-04-13 19:24:11 +05:45
..
2026-04-12 14:21:03 +05:45
2026-04-07 02:51:48 +03:00
2026-03-16 18:51:08 +02:00
2026-03-16 01:02:07 +02:00
2026-03-16 01:02:07 +02:00
2026-03-16 01:02:07 +02:00
2026-03-16 01:02:07 +02:00
2026-03-16 16:01:40 +02:00
2026-03-16 16:01:40 +02:00
2026-03-16 16:01:40 +02:00
2026-04-12 14:21:03 +05:45
2026-03-15 13:37:10 +02:00
2026-03-15 13:37:10 +02:00
2026-03-15 13:37:10 +02:00
2026-03-15 13:37:10 +02:00
2026-03-15 13:37:10 +02:00
2026-03-15 13:37:10 +02:00
2026-03-15 13:37:10 +02:00
2026-03-15 13:37:10 +02:00
2026-03-15 13:37:10 +02:00
2026-03-15 13:37:10 +02:00
2026-03-15 13:37:10 +02:00
2026-03-15 13:37:10 +02:00
2026-03-15 13:37:10 +02:00
2026-03-15 13:37:10 +02:00
2026-03-15 13:37:10 +02:00
2026-03-15 13:37:10 +02:00
2026-03-15 13:37:10 +02:00
2026-03-15 13:37:10 +02:00
2026-03-15 13:37:10 +02:00
2026-03-15 13:37:10 +02:00
2026-03-15 13:37:10 +02:00
2026-03-15 13:37:10 +02:00
2026-03-15 13:37:10 +02:00
2026-03-15 13:37:10 +02:00
2026-03-15 13:37:10 +02:00
2026-03-15 06:14:11 +02:00
2026-03-16 01:02:07 +02:00
2026-03-16 01:02:07 +02:00
2026-03-16 01:02:07 +02:00
2026-03-16 01:02:07 +02:00
2026-04-07 19:22:16 +03:00
2026-03-16 22:24:34 +02:00
2026-03-17 19:38:09 +02:00
2026-03-20 04:57:34 +02:00
2026-03-15 06:14:11 +02:00
2026-03-20 01:45:00 +02:00
2026-03-15 06:14:11 +02:00
2026-03-20 04:38:35 +02:00
2026-03-20 04:38:35 +02:00
2026-03-16 18:14:06 +02:00
2026-04-07 02:51:48 +03:00
2026-04-07 02:51:48 +03:00
2026-03-15 06:14:11 +02:00
2026-04-07 02:51:48 +03:00
2026-03-19 20:39:01 +02:00
2026-03-20 19:02:06 +02:00
2026-03-15 06:14:11 +02:00
2026-04-07 02:51:48 +03:00
2026-04-07 02:51:48 +03:00
2026-03-18 01:28:42 +02:00
2026-03-19 12:20:37 +02:00
2026-03-16 10:25:07 +02:00
2026-03-16 16:23:01 +02:00
2026-03-20 16:39:17 +02:00
2026-03-16 19:15:23 +02:00
2026-03-16 15:02:35 +02:00
2026-03-16 23:23:06 +02:00
2026-03-19 23:54:48 +02:00
2026-03-20 04:57:34 +02:00
2026-03-20 04:38:35 +02:00
2026-03-20 03:19:22 +02:00
2026-04-13 19:24:11 +05:45
2026-04-07 02:51:48 +03:00
2026-03-20 04:38:35 +02:00
2026-04-13 19:24:11 +05:45