Logic-analyzer capture memory
rtl/la_capture_buffer.v is a portable Verilog-2001 true dual-port capture
buffer. It deliberately contains no Altera/Intel primitive, board pin, UART,
or trigger logic. Quartus infers Cyclone IV M9K memory from the registered
read and synchronous write ports.
Parameters:
| Parameter | Meaning | Default |
|---|---|---|
SAMPLE_WIDTH |
Number of simultaneously captured digital inputs | 16 |
ADDR_WIDTH |
Buffer depth as 2**ADDR_WIDTH |
12 (4096 samples) |
The write and read clocks may be different. The caller owns clock-domain
crossing for addresses/status and must keep a read address stable until the
registered rd_data is valid on the following rd_clk edge.
Example Quartus source assignment:
set_global_assignment -name VERILOG_FILE path/to/templates/hdl/logic-analyzer/rtl/la_capture_buffer.v
Буфер с аппаратным триггером
rtl/la_trigger_buffer.v принимает восемь синхронизированных входов.
После arm первый отсчёт, удовлетворяющий маскам уровня и фронтов,
попадает в адрес 0. Нулевые маски включают немедленную запись.
divider задаёт шаг в тактах (минимум 1), last_address — последний адрес
записи включительно. По умолчанию глубина равна 65 536 отсчётам.
Модуль использует rtl/la_capture_buffer.v. После заполнения BRAM
он выдаёт отсчёты через data_valid и ready. Задержки читателя
влияют только на выгрузку. stop отменяет ожидание, запись или
выгрузку. Вход clk общий для обоих портов BRAM.
При EXTERNAL_TRIGGER=1 и use_external=1 вход pretrigger
задаёт число отсчётов перед срабатыванием. Блок собирает их в кольце
до разрешения trigger_tick. Подключите external_hit к
rtl/la_advanced_trigger.v и подайте на этот блок тот же отсчёт и
trigger_tick. Он выполняет до 16 стадий или сопоставляет биты
Serial Trigger по фронтам Clock между флагами Start и Stop.
rtl/la_run_encoder.v запускается по тому же типу триггера и кодирует
непрерывный поток. На каждый непрерывный уровень выдаёт два байта:
значение и число отсчётов минус один. Допустимая длина серии 1–256
отсчётов. Готовность выхода влияет на выдачу. При переполнении
очереди выставляется overflow, такт выборки сохраняется.
Блоки AXI-захвата
rtl/axi_logic_analyzer.svпринимает восемь входов и сохраняет окно в BRAM. Управляющий AXI4-Lite и входной синхронизатор работают в доменеclk.CLOCK_HZпередаёт фактическую частоту в регистр метаданных.ADDR_WIDTHзадаёт глубину BRAM.rtl/axi_logic_analyzer_bd.vвыводит интерфейсы в Vivado Block Design. Для другого домена управления подключите AXI Clock Converter.rtl/zynq_la_stream.vпишет 8-битные отсчёты в кольцо DDR через 64-битный AXI4. Выделите 8 МиБ по параметруDDR_BASEи исключите диапазон из общего распределителя DDR. Читатель подтверждает целые блоки счётчиком CONSUMED. При отставании читателя блок выставляет ошибку.include/zynq_la.hиinclude/zynq_la_stream.hописывают регистры и форматы Ethernet-сообщений ZLA1 и ZLS1.
Для буферного блока добавьте vfd_pwm.sv
и la_capture_buffer.v. Папка tests содержит проверки BRAM, фронтов,
переполнения и выдачи DDR через модель AXI. Привязку пинов, регистровые
адреса AXI и допустимую частоту определяет проект платы.