Fix RTL Bug #3: S_IDLE->S_ACCUMULATE now writes first sample immediately
Previously the S_IDLE->S_ACCUMULATE transition consumed one data_valid cycle without writing to BRAM, losing the first sample. The testbench worked around this by sending sample[0] twice. Fix: drive mem_we + data capture in S_IDLE on the transition cycle and advance write_range_bin to 1. Testbench workaround removed. Verified: 3/3 Doppler co-sim BIT-PERFECT, integration test 10/10 PASS.
This commit is contained in:
@@ -206,7 +206,14 @@ always @(posedge clk or negedge reset_n) begin
|
||||
|
||||
if (data_valid && !frame_buffer_full) begin
|
||||
state <= S_ACCUMULATE;
|
||||
write_range_bin <= 0;
|
||||
// Write the first sample immediately (Bug #3 fix:
|
||||
// previously this transition consumed data_valid
|
||||
// without writing to BRAM)
|
||||
mem_we <= 1;
|
||||
mem_waddr_r <= mem_write_addr;
|
||||
mem_wdata_i <= range_data[15:0];
|
||||
mem_wdata_q <= range_data[31:16];
|
||||
write_range_bin <= 1;
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user