exponenta event banner

Отладка конструкции Zynq с использованием кодера HDL и встроенного кодера

В этом примере показано, как отладить конструкцию Zynq с использованием функций HDL Coder™ и Embedded Coder ®.

Требования

  • Оценочный комплект Xilinx Zynq-7000 SoC ZC702

  • Пакет поддержки кодера HDL для платформы Xilinx Zynq

  • Пакет поддержки встроенного кодера для платформы Xilinx Zynq

  • Следуйте разделу «Настройка оборудования и инструментов Zynq» в разделе «Начало работы с целевой платформой Xilinx Zynq», чтобы настроить ZC702 оборудование.

Введение

При создании прототипа и разработке алгоритма для платформы Zynq полезно отслеживать, настраивать и отлаживать алгоритм во время его работы на оборудовании. В этом примере показано, как использовать такие функции, как внешний режим, интерфейс AXI и блоки HDL FIFO для проверки конструкции Zynq. С помощью функции внешнего режима можно проверить внутренние данные в программном обеспечении, работающем на процессоре ARM. А поскольку ARM-процессор подключается к FPGA через интерфейс AXI, можно также контролировать и настраивать параметры на FPGA. Вместе с блоками HDL FIFO можно собирать быстрые данные FPGA и извлекать их обратно в Simulink для анализа.

Начнем с примера модели.

open_system('hdlcoder_data_capture');

Подсистема DataCapture - это аппаратная подсистема, предназначенная для фабрики FPGA. Внутри этой подсистемы подсистема OriginalDUT содержит блок Тригонометрической функции, который генерирует быстрые потоки синусоидальных и косинусных данных. Подсистема OriginalDUT представляет наш алгоритм. Если мы хотим отладить эту конструкцию, как нам захватить и отслеживать этот быстрый поток данных?

FPGA работает на гораздо более высокой тактовой частоте, чем программный код процессора ARM. Внешний режим может использоваться с программным обеспечением, работающим на процессоре ARM, для мониторинга медленно изменяющихся параметров состояния, таких как состояние FIFO, но частота выборки программного кода, например, 1KHz, недостаточно высока, чтобы захватить быстро изменяющиеся данные в FPGA, например, 50MHz.

В этом примере показано, как использовать блок FIFO для захвата быстрых данных FPGA, а затем использовать программное обеспечение процессора ARM для извлечения захваченных данных через интерфейс AXI и внешний режим.

В целях отладки мы добавляем подсистему Debug_FIFOs в DUT. Эта подсистема использует два блока HDL FIFO для захвата быстрых потоков данных для будущего поиска. Входы управляющих сигналов в подсистему Debug_FIFOs подключаются к интерфейсу DUT и через интерфейс AXI подключаются к процессору ARM.

На верхнем уровне примерной модели, когда переключатель EnureCapture включен, а переключатель RetrieveData выключен, модуль Debug_FIFOs захватит 1000 выборок данных в блоки FIFO HDL. Это этап сбора данных. Затем, когда переключатель EnureCapture включен, а переключатель RetrieveData снова включен, модуль Debug_FIFOs передает захваченные данные обратно на процессор ARM. Это фаза извлечения данных. Можно использовать ручные переключатели для переключения между этими двумя фазами для сбора и мониторинга внутренних данных FPGA.

Таким образом, для каждого сигнала, который требуется отслеживать, можно вставить в проект более Debug_FIFO модулей для сбора и извлечения данных обратно в Simulink. Можно также использовать собственные управляющие сигналы или расширить этот пример с помощью собственных триггеров или квалификаторов.

Выходной порт аппаратной подсистемы DirectDataOut выводит данные непосредственно в интерфейс AXI. Напротив, выходные порты CapturedDataOut1 и CapturedDataOut2 выводят захваченные данные из FIFO. Результаты этих двух мероприятий будут сопоставлены в последнем разделе.

Развертывание конструкции на оборудовании Zynq

Затем мы запустим HDL Workflow Advisor из модели и выполним рабочий процесс совместного проектирования HW/SW Zynq, чтобы развернуть эту конструкцию на оборудовании Zynq. Подробное пошаговое руководство см. в примере Начало работы с платформой Targeting Xilinx Zynq.

1. В задании Set Target > Set Target Device and Synthesis Tool в поле Target workflow выберите IP Core Generation. В поле Целевая платформа выберите оценочный комплект Xilinx Zynq ZC702. Запустите эту задачу.

2. В задании Set Target > Set Target Interface выберите AXI4-Lite для всех портов ввода и вывода.

3. Затем выполните все шаги рабочего процесса, чтобы создать IP-адрес HDL, создать проект EDK, создать модель интерфейса программного обеспечения, а также построить и загрузить битовый поток FPGA. Сформированная модель программного интерфейса показана на следующем рисунке:

4. Сконфигурируйте и создайте модель интерфейса программного обеспечения для внешнего режима:

  1. В созданной модели щелкните панель Оборудование (Hardware) и перейдите в раздел Параметры оборудования (Hardware settings), чтобы открыть диалоговое окно Параметр конфигурации (Configuration Parameter).

  2. Выберите Решатель и установите для параметра «Stop Time» значение «inf».

  3. На панели «Оборудование» нажмите кнопку «Монитор и настройка».

  4. Нажмите кнопку «Выполнить» на панели инструментов модели. Embedded Coder строит модель, загружает исполняемый файл ARM на оборудование Zynq ZC702, выполняет его и подключает модель к исполняемому файлу, работающему на оборудовании Zynq ZC702.

Сбор и отображение данных с оборудования Zynq

Теперь как аппаратная, так и программная части конструкции работают на аппаратном обеспечении Zynq, следующим шагом является сбор и извлечение данных с платы Zynq.

После подключения внешнего режима убедитесь, что переключатель EnureCapture находится в позиции 1, а переключатель RetrieveData - в позиции 0. Обратите внимание, что поле отображения FIFONumber увеличивается почти сразу до 1000. Это означает, что FIFO внутри FPGA-матрицы начал сбор данных и был быстро заполнен 1000 выборками данных.

Откройте блок временной области и просмотрите выходные данные DirectDataOut в первой строке. Обратите внимание, что полученные данные представляют собой, казалось бы, случайный сигнал между -1 и 1. Это связано с тем, что FPGA работает на гораздо более высокой частоте, чем программное обеспечение процессора ARM. Непосредственное использование внешнего режима для контроля быстрых данных FPGA означает выборку быстрой синусоидальной формы сигнала с очень низкой скоростью, которая генерирует случайную форму сигнала между -1 и 1.

Теперь дважды щелкните переключатель RetrieveData, чтобы включить считывание данных. Параметр EnureCapture должен быть включен. Когда переключатель RetrieveData включен, внутренняя логика, смоделированная в этом примере, посылает полученные выборки данных один за другим от FIFO процессору ARM через интерфейс AXI. Эти выборки данных затем передаются из процессора ARM в Simulink через внешний режим. Обратите внимание, что поле отображения FIFONNUMBER уменьшается до 0.

Откройте блок Временная область, вторая и третья строки области теперь показывает синус и косинус волны мы захватили в FIFO. На следующем рисунке показаны формы сигналов объема.

Резюме

В этом примере показано, как использовать такие функции, как внешний режим, интерфейс AXI и блоки HDL FIFO, для проверки конструкции Zynq, захвата быстрых данных FPGA и извлечения их обратно в Simulink для анализа. Можно также выполнять аналогичный мониторинг с помощью инструментов поставщика FPGA, таких как ChipScope™ или SignalTap™. Но сила этого подхода заключается в том, что вы можете получить все преимущества визуализации Simulink, такие как различные блоки области, а также можете создать собственные пользовательские элементы управления, триггеры или квалификаторы в Simulink.