Jason
21bf7a0228
feat(fpga,gui): PR-AC.1 — M-5 status pkt 30→34 B for medium_chirp/medium_listen readback
Closes the 161-µs MEDIUM PRI visibility gap from the 2026-05-02 e2e audit.
PR-G ran out of reserved bits in status_words[3] to fit a second 16-bit
pair, so this PR adds status_words[7] = {medium_chirp[15:0], medium_listen[15:0]}
and bumps STATUS_PKT_LEN 30→34, STATUS_PACKET_SIZE 30→34.
RTL (usb_data_interface_ft2232h.v):
- Two new input ports `status_medium_chirp` / `status_medium_listen`.
- status_words array bound 6→7, init loop 7→8, snapshot block packs word 7.
- STATUS_PKT_LEN width 5→6 bits to hold 34, byte-mux index widened
[4:0]→[5:0] with 4 new entries for word 7 + footer at index 33.
- Header docstring + length-localparam comment refreshed.
Top-level (radar_system_top.v): wire `host_medium_chirp_cycles` /
`host_medium_listen_cycles` into the FT2232H usb_inst (gen_ft2232h branch
only; legacy FT601 path retains its pre-PR-G 6-word / 26-byte layout —
no host code reads it today).
Host parser (radar_protocol.py):
- STATUS_PACKET_SIZE 30→34. Module docstring + parse_status_packet
docstring + find_bulk_frame_boundaries note refreshed.
- StatusResponse gains `medium_chirp` / `medium_listen` fields.
- Word-loop bounds 7→8; word-7 decode added.
Tests:
- tb_usb_protocol_v2 — drive default RP_DEF_MEDIUM_*_CYCLES (500/15600),
move T3.2 footer assertion 29→33, add T3.8..T3.11 for word-7 bytes.
Manual run: 31/31 PASS (TB not in run_regression.sh).
- tb_ft2232h_frame_drop, tb_e2e_dsp_to_host — tie new DUT ports to
16'd0 (these TBs don't exercise status reads).
- test_GUI_V65_Tk — extend _make_status_packet builder kwargs, rename
test_status_packet_is_30_bytes → _is_34_bytes, add round-trip +
16-bit-max tests for word 7.
- test_v7 — TestStatusPacketV2RoundTrip rewired for 8 words / 34 B,
add test_word7_medium_pri_decoded + test_pre_M5_30byte_packet_rejected.
Verification:
- FPGA regression (iverilog + xsim cosim): 42/0/0.
- tb_usb_protocol_v2 standalone: 31/0.
- Host test_GUI_V65_Tk: 119/119.
- Host test_v7: 152/152.
2026-05-07 15:20:09 +05:45
..
2026-05-07 13:29:48 +05:45
2026-05-06 01:23:21 +05:45
2026-05-02 10:08:00 +05:45
2026-05-05 13:33:48 +05:45
2026-05-07 15:20:09 +05:45
2026-04-23 12:39:33 +05:45
2026-05-05 13:33:48 +05:45
2026-04-14 00:08:26 +05:45
2026-04-30 10:47:31 +05:45
2026-04-20 14:28:22 +05:45
2026-05-01 18:53:24 +05:45
2026-04-30 19:37:43 +05:45
2026-04-30 21:51:46 +05:45
2026-04-23 11:32:03 +05:45
2026-03-16 22:24:22 +02:00
2026-05-05 12:12:04 +05:45
2026-03-16 18:14:06 +02:00
2026-05-02 13:37:06 +05:45
2026-03-17 13:48:47 +02:00
2026-05-02 10:08:00 +05:45
2026-05-02 08:33:06 +05:45
2026-03-27 23:05:28 +02:00
2026-03-16 10:25:07 +02:00
2026-04-21 01:52:32 +05:45
2026-04-30 10:08:34 +05:45
2026-04-29 23:27:15 +05:45
2026-05-02 08:33:06 +05:45
2026-05-01 15:07:19 +05:45
2026-05-02 08:33:06 +05:45
2026-04-30 20:52:32 +05:45
2026-04-18 20:34:52 +05:45
2026-04-30 21:51:46 +05:45
2026-05-02 13:37:06 +05:45
2026-05-06 01:23:21 +05:45
2026-05-07 13:29:48 +05:45
2026-03-18 03:57:26 +02:00
2026-03-19 16:47:59 +02:00
2026-04-29 20:06:52 +05:45
2026-05-07 15:20:09 +05:45
2026-04-30 21:51:46 +05:45
2026-04-30 09:04:01 +05:45
2026-05-07 13:29:48 +05:45
2026-05-06 01:23:21 +05:45
2026-04-30 17:46:08 +05:45
2026-04-30 17:46:08 +05:45
2026-04-30 17:46:08 +05:45
2026-04-30 17:46:08 +05:45
2026-04-30 17:46:08 +05:45
2026-04-30 17:46:08 +05:45
2026-04-30 17:46:08 +05:45
2026-04-30 17:46:08 +05:45
2026-04-30 17:46:08 +05:45
2026-04-30 17:46:08 +05:45
2026-04-30 17:46:08 +05:45
2026-05-07 15:20:09 +05:45
2026-04-29 23:01:41 +05:45
2026-04-07 02:51:48 +03:00
2026-05-02 10:20:10 +05:45