Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> VHDL

Освоение Xilinx Vivado: Integrated Logic Analyzer (ILA) и Virtual Input/Output (VIO) для отладки

Это руководство проведет вас через использование ядер Integrated Logic Analyzer (ILA) и Virtual Input/Output (VIO) в Xilinx Vivado для отладки и мониторинга VHDL-проектов на кристалле. К концу вы научитесь вставлять пробники, настраивать триггеры и захватывать точное поведение сигналов без внешнего оборудования.

Обзор

Во всей статье мы будем ссылаться на скриншоты Vivado. Нажмите на каждое изображение, чтобы увеличить. Используйте боковую панель или мобильную навигацию для быстрого доступа.

ILA и VIO

IP-ядро ILA позволяет пробовать внутренние сигналы FPGA в реальном времени, а IP-ядро VIO дает возможность управлять внутренними сигналами из Vivado. Оба ядра бесплатны, высоконастраиваемы и бесшовно интегрируются в рабочий процесс Vivado.

Требования

  1. Плата разработки на базе FPGA Xilinx
  2. Vivado Design Suite (версия 2020.2 или новее)
  3. Базовые знания VHDL

В примерах используется комплект оценки Kintex‑7 KC705, но шаги применимы к любой современной FPGA Xilinx.

Загрузка примера проекта

Скачайте ZIP-архив с примером проекта и VHDL-файлами. Откройте ila_tutorial.xpr в Vivado для изучения проекта или читайте дальше, чтобы создать его с нуля.

Создание проекта в Vivado

Запустите Vivado и нажмите Create Project на приветственном экране.

Освоение Xilinx Vivado: Integrated Logic Analyzer (ILA) и Virtual Input/Output (VIO) для отладки

Пройдите через мастер: назовите проект ila_tutorial (без пробелов), выберите RTL Project, добавьте исходники counter.vhdl и counter_top.vhdl. Включите Copy sources into project и продолжите.

Освоение Xilinx Vivado: Integrated Logic Analyzer (ILA) и Virtual Input/Output (VIO) для отладки

Добавьте файл ограничений top.xdc, скопировав его в проект. Настройте выводы тактового сигнала и светодиодов под вашу плату и задайте правильный период такта.

Освоение Xilinx Vivado: Integrated Logic Analyzer (ILA) и Virtual Input/Output (VIO) для отладки

Выберите вашу плату из списка и нажмите Finish, чтобы открыть проект.

Освоение Xilinx Vivado: Integrated Logic Analyzer (ILA) и Virtual Input/Output (VIO) для отладки

Обзор примера проекта

Пример состоит из двух 4-битных счетчиков, соединенных в цепочку. counter.vhdl реализует счетчик, который инкрементируется при включении и выдает 1-битный сигнал trigger между значениями 12 и 15.

Освоение Xilinx Vivado: Integrated Logic Analyzer (ILA) и Virtual Input/Output (VIO) для отладки

Объявление сущности:

 ---------------------------------------------------------------------------- -- ОБЪЯВЛЕНИЕ СУЩНОСТИ. ---------------------------------------------------------------------------- ENTITY counter IS PORT(clk : IN STD_LOGIC; -- Основной такт reset : IN STD_LOGIC; -- Сброс, активный высокий уровень enable : IN STD_LOGIC; -- Включение следующего счетчика trigger : OUT STD_LOGIC -- Триггер для следующего счетчика ); END ENTITY; 

Внутренние сигналы:

Использование атрибутов (будет объяснено позже):

 ATTRIBUTE MARK_DEBUG : STRING; ATTRIBUTE MARK_DEBUG OF count : SIGNAL IS "true"; 

Последовательная логика:

 seq_proc: PROCESS (reset, clk) BEGIN -- for seq_proc IF (reset = '1') THEN count <= (OTHERS => '0'); trigger_o <= '0'; ELSIF rising_edge(clk) THEN IF (enable = '1') THEN count <= count + 1; IF (count > x"B" AND count <= x"F") THEN trigger_o <= '1'; ELSE trigger_o <= '0'; END IF; END IF; END IF; END PROCESS; 

counter_top.vhdl инстанцирует два счетчика. counter_1_inst всегда включен и тактирует counter_2_inst через свой выход trigger. Следовательно, counter_2_inst инкрементируется только четыре раза за 16-цикловой период counter_1_inst.

Освоение Xilinx Vivado: Integrated Logic Analyzer (ILA) и Virtual Input/Output (VIO) для отладки

Создание ядра VIO для RESET

Мы сгенерируем VIO, который управляет входом reset проекта, позволяя переключать его вручную из Vivado.

Откройте IP Catalog, найдите VIO, дважды кликните по VIO (Virtual Input/Output) и переименуйте в vio_reset. Установите Input Probe Count в 0 и Output Probe Count в 1.

Освоение Xilinx Vivado: Integrated Logic Analyzer (ILA) и Virtual Input/Output (VIO) для отладки

Настройте выходной пробник: ширина = 1, начальное значение = 0x1, затем нажмите OK и Generate.

Освоение Xilinx Vivado: Integrated Logic Analyzer (ILA) и Virtual Input/Output (VIO) для отладки

После синтеза объявите компонент в counter_top.vhdl и инстанцируйте его. Не забудьте установить flatten_hierarchy в None перед повторным синтезом.

 COMPONENT vio_reset PORT( clk : IN STD_LOGIC; probe_out0 : OUT STD_LOGIC_VECTOR(0 DOWNTO 0) ); END COMPONENT; 

Вставка отладочных пробников

Сигналы можно пробовать тремя способами:

  1. Из VHDL-источника (через атрибуты MARK_DEBUG).
  2. Из нетлиста или схемы (правый клик → Mark Debug).
  3. Из XDC/TCL-файла (не рассматривается здесь).

Вставка из VHDL-файла

Объявите атрибут MARK_DEBUG один раз на файл, затем примените его к нужным сигналам:

 ATTRIBUTE MARK_DEBUG : STRING; ATTRIBUTE MARK_DEBUG OF count : SIGNAL IS "true"; 

В синтезированном проекте count появится в разделе Unassigned Debug Nets с иконкой жука.

Освоение Xilinx Vivado: Integrated Logic Analyzer (ILA) и Virtual Input/Output (VIO) для отладки

Вставка из нетлиста

Перейдите в Netlist или Schematic, найдите сеть trigger, кликните правой кнопкой и выберите Mark Debug для обоих счетчиков.

Освоение Xilinx Vivado: Integrated Logic Analyzer (ILA) и Virtual Input/Output (VIO) для отладки Освоение Xilinx Vivado: Integrated Logic Analyzer (ILA) и Virtual Input/Output (VIO) для отладки

Создание отладочного ядра ILA

Откройте Set Up Debug из IP Catalog. Vivado покажет все отладочные сети и их тактовые домены. Оставьте все четыре сигнала для этого руководства.

Освоение Xilinx Vivado: Integrated Logic Analyzer (ILA) и Virtual Input/Output (VIO) для отладки

Настройте глубину FIFO ILA (1024 достаточно) и включите Capture control. Завершите мастер; Vivado сгенерирует ядро ILA и файл ограничений.

Освоение Xilinx Vivado: Integrated Logic Analyzer (ILA) и Virtual Input/Output (VIO) для отладки

Сохраните ограничения как ila_core.xdc. Этот файл применяет атрибуты отладки, создает ядро ILA, настраивает каждый пробник и инстанцирует dbg_hub, соединяющий ядро с Vivado. Обновите частоту такта хаба под ваш проект.

Освоение Xilinx Vivado: Integrated Logic Analyzer (ILA) и Virtual Input/Output (VIO) для отладки

Повторно запустите синтез, затем реализацию, и сгенерируйте битстрим. Откройте Hardware Manager, выполните автоподключение и запрограммируйте устройство вместе с .ltx файлом пробников.

Освоение Xilinx Vivado: Integrated Logic Analyzer (ILA) и Virtual Input/Output (VIO) для отладки

Настройка триггеров ILA

После программирования появится панель ILA. Включите вкладку VIO и удалите лишние окна. Добавьте пробник reset в VIO, чтобы переключать его во время захвата.

Освоение Xilinx Vivado: Integrated Logic Analyzer (ILA) и Virtual Input/Output (VIO) для отладки

Настройте триггер на counter_1_inst/trigger с условием по фронту и окном предтриггера 32 отсчета.

Освоение Xilinx Vivado: Integrated Logic Analyzer (ILA) и Virtual Input/Output (VIO) для отладки

Запуск ILA с одним триггером

Подготовьте триггер (статус переключится на waiting for trigger) и установите reset в 0. Когда триггер сработает, ILA запишет 32 отсчета до события и продолжит до заполнения FIFO.

Освоение Xilinx Vivado: Integrated Logic Analyzer (ILA) и Virtual Input/Output (VIO) для отладки

При увеличении масштаба видно поведение counter_2_inst.

Освоение Xilinx Vivado: Integrated Logic Analyzer (ILA) и Virtual Input/Output (VIO) для отладки

Запуск ILA с несколькими триггерами

Для сложных сценариев объединяйте несколько триггеров. Например, триггерьте при counter_1_inst/count == 9 И counter_2_inst/count > 2, разделяя FIFO на четыре окна.

Освоение Xilinx Vivado: Integrated Logic Analyzer (ILA) и Virtual Input/Output (VIO) для отладки

Режим Auto Re‑Trigger

Включите Auto re‑trigger для захвата случайных или высокочастотных событий. Настройте один триггер, задайте глубину FIFO и подготовьте ядро.

Освоение Xilinx Vivado: Integrated Logic Analyzer (ILA) и Virtual Input/Output (VIO) для отладки

Режим Capture Mode

Capture mode записывает только отсчеты, удовлетворяющие глобальному условию. Например, захват когда counter_1_inst/trigger == 1 И counter_2_inst/trigger == 0 одновременно.

Освоение Xilinx Vivado: Integrated Logic Analyzer (ILA) и Virtual Input/Output (VIO) для отладки

Заключение

ILA и VIO — мощные бесплатные инструменты для накристальной отладки. Используя пробники, множественные триггеры и режимы захвата, можно точно наблюдать и управлять сложными FPGA-проектами прямо из Vivado.

VHDL

  1. Мастерство VHDL и Verilog: написание чистой комбинационной и последовательной логики
  2. Расширение облачных горизонтов: новые зоны, контейнеры и мультиоблачные стратегии
  3. Основы ввода-вывода в C#: Console.WriteLine, ReadLine и форматирование
  4. Освоение ввода и вывода в C++: практическое руководство
  5. Ввод-вывод в C: scanf() и printf() — подробное руководство
  6. Мастерство ввода-вывода и импорта модулей в Python: Практическое руководство
  7. Ввод и вывод в Java: печать, чтение и форматирование данных
  8. D-защелки: проектирование, принцип работы и ключевые отличия от триггеров
  9. Ввод-вывод в C: stdio.h, потоки stdin/stdout/stderr, функции getchar/putchar, gets/puts, scanf/printf
  10. RightHand Robotics и Element Logic представили интегрированную роботизированную систему поштучной комплектации