Убрать поздний триггер из разрешения адреса захвата
Продвигать кольцевой указатель на каждом отсчёте и заранее вычислять начало pretrigger. Сохранить точный адрес срабатывания без дополнительного такта задержки.
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user