Убрать поздний триггер из разрешения адреса захвата

Продвигать кольцевой указатель на каждом отсчёте и заранее вычислять начало pretrigger.
Сохранить точный адрес срабатывания без дополнительного такта задержки.
This commit is contained in:
2026-11-13 20:33:18 +03:00
parent b724b40b84
commit 4b1c98d57f
+3 -3
View File
@@ -96,11 +96,11 @@ module la_trigger_buffer #(
previous_valid <= 1;
if (history != 0)
history <= history - 1'b1;
if (pre != 0 || triggered || fire)
write_address <= write_address + 1'b1;
write_address <= write_address + 1'b1; // Внутренний кольцевой индекс продвигается на каждом отсчёте, включая ожидание без pretrigger: неписавшиеся позиции не наблюдаемы, а fire фиксирует соответствующее начало чтения; это убирает поздний trigger из CE 16-битного указателя.
if (!triggered) // До срабатывания отслеживаем только потенциальное начало; после fire старое значение triggered=0 позволяет зафиксировать точный адрес на том же фронте без нового такта задержки.
read_address <= write_address - pre; // Индексы заданы в отсчётах по модулю 2^ADDR_WIDTH: prospective адрес игнорируется до готового окна, затем удерживается на первом pretrigger-отсчёте.
if (fire) begin
triggered <= 1;
read_address <= write_address - pre;
if (post_left == 0) begin
capturing <= 0;
read_pending <= 3;