Этот пример показывает, как отладить проект Zynq с помощью функций Embedded Coder® и HDL Coder™.
Оценочный комплект Xilinx Zynq-7000 SoC ZC702
Пакет поддержки HDL Coder для платформы Xilinx Zynq
Пакет поддержки Embedded Coder для платформы Xilinx Zynq
Следуйте за разделом "Set up Zynq hardware and tools" в примере HDL Coder, Начинающем с Рабочим процессом Элемента кода HW/SW для Платформы Xilinx Zynq устанавливать оборудование ZC702.
Когда вы моделируете и разрабатываете алгоритм для платформы Zynq, полезно контролировать, настроить, и отладить алгоритм, в то время как это работает на оборудовании. Этот пример показывает, как использовать функции как режим external mode, интерфейс AXI и HDL блоки FIFO, чтобы зондировать в проект Zynq. Используя функцию режима external mode, можно зондировать внутренние данные в программном обеспечении, работающем на процессоре ARM. И потому что процессор ARM соединяется с FPGA через интерфейс AXI, можно контролировать и настроить параметры на FPGA также. Вместе с HDL блоки FIFO можно собрать быстрые данные о FPGA и получить его назад к Simulink для анализа.
Давайте начнем путем рассмотрения модели в качестве примера.
open_system('hdlcoder_data_capture');
Подсистема DataCapture является аппаратной подсистемой, предназначающейся для матрицы FPGA. В этой подсистеме подсистема OriginalDUT содержит блок Trigonometric Function, который генерирует быстрый синус и потоки данных косинуса. Подсистема OriginalDUT представляет наш проект алгоритма. Если мы хотим отладить этот проект, как мы получаем и контролируем этот быстрый поток данных?
FPGA запускается на намного более быстрой частоте часов, чем программный код на процессоре ARM. Режим external mode может использоваться с программным обеспечением, работающим на процессоре ARM, чтобы контролировать медленно изменяющиеся параметры состояния, такие как состояние FIFO, но частота дискретизации программного кода, например, 1 кГц, не достаточно быстра, чтобы собрать быстро изменяющиеся данные в FPGA, например, 50 МГц.
Этот пример показывает, как использовать блок FIFO, чтобы собрать быстрые данные о FPGA, и затем использовать программное обеспечение на процессоре ARM, чтобы получить собранные данные через интерфейс AXI и режим external mode.
Для отладки целей мы добавляем подсистему Debug_FIFOs в DUT. Эта подсистема использует два HDL блоки FIFO, чтобы получить быстрые потоки данных для будущего извлечения. Входные параметры управляющего сигнала к подсистеме Debug_FIFOs соединяются с интерфейсом DUT и соединяются с процессором ARM через интерфейс AXI.
В верхнем уровне модели в качестве примера, когда переключатель EnableCapture включен, и выключен переключатель RetrieveData, модуль Debug_FIFOs получит 1 000 выборок данных в HDL блоки FIFO. Это - фаза сбора данных. Затем когда переключатель EnableCapture сохранен, и переключатель RetrieveData снова включен, модуль Debug_FIFOs возвратит собранные данные к процессору ARM. Это - фаза поиска данных. Можно использовать ручные переключатели, чтобы переключиться между этими двумя фазами, чтобы получить и контролировать внутренние данные о FPGA.
Таким образом для каждого сигнала вы хотите контролировать, можно вставить больше модулей Debug_FIFO в проект, чтобы получить и получить данные назад к Simulink. Можно также использовать собственные управляющие сигналы или расширить этот пример с собственными триггерами или спецификаторы.
Выходной порт аппаратной подсистемы, DirectDataOut, выходных данных непосредственно к интерфейсу AXI. Напротив, CapturedDataOut1 и CapturedDataOut2 выходных портов выходные параметры собрал данные от FIFOs. Мы сравним результаты этих двух выходных параметров в последнем разделе.
Затем, мы запустим HDL Workflow Advisor с модели и пробежим рабочий процесс элемента кода HW/SW Zynq, чтобы развернуть этот проект на оборудовании Zynq. Для подробного пошагового руководства обратитесь к примеру, Начинающему с Рабочим процессом Элемента кода HW/SW для Платформы Xilinx Zynq.
1. В Цели Набора> Целевое устройство Набора и задача Инструмента Синтеза, для Целевого рабочего процесса, выбирают IP Core Generation. Для Целевой платформы выберите оценочный комплект Xilinx Zynq ZC702. Запустите эту задачу.
2. В Цели Набора> Поставившая Целевая Интерфейсная задача, выберите AXI4-Lite для всех портов ввода и вывода.
3. Затем пробегите все шаги рабочего процесса, чтобы сгенерировать IP HDL, создать проект EDK, сгенерировать модель программного интерфейса, и создать и загрузить поток битов FPGA. Модель интерфейса сгенерированного программного обеспечения показывают в следующем изображении:
4. Сконфигурируйте и создайте модель программного интерфейса для режима external mode:
В сгенерированной модели откройте диалоговое окно Configuration Parameters.
Выберите Solver и установите "Время остановки" на "inf".
Из образцового меню выберите Simulation> Mode> External.
Щелкните по кнопке Run на образцовой панели инструментов. Embedded Coder создает модель, загружает исполняемый файл ARM на оборудование Zynq ZC702, выполняет его и соединяет модель с исполняемым файлом, работающим на оборудовании Zynq ZC702.
Теперь оба, аппаратные и программные части проекта работают на оборудовании Zynq, следующий шаг, должны получить и получить данные от платы Zynq.
Если режим external mode соединяется, убедитесь, что переключатель EnableCapture находится в 1 положении, и переключатель RetrieveData находится в 0 положениях. Заметьте, что поле отображения FIFONumber увеличивается до 1 000 почти сразу. Это означает, что FIFO в матрице FPGA начал собирать данные и был быстро заполнен 1 000 выборок данных.
Откройте блок Time Scope и наблюдайте DirectDataOut вывод в первой строке. Заметьте, что полученные данные являются на вид случайной формой волны между-1 и 1. Это вызвано тем, что FPGA запускается на намного более быстрой частоте, чем программное обеспечение работает на процессоре ARM. Непосредственно использующий режим external mode, чтобы контролировать быстрые данные о FPGA означает выбирать быструю форму волны синуса на очень низкой скорости, которая генерирует случайную форму волны между-1 и 1.
Теперь дважды кликните переключатель RetrieveData, чтобы включить считывание данных. Переключатель EnableCapture должен быть сохранен. Когда переключатель RetrieveData включен, внутренняя логика, смоделированная в этом примере, отсылает полученные выборки данных один за другим с FIFO на процессор ARM через интерфейс AXI. Эти выборки данных затем отправляются от процессора ARM до Simulink через режим external mode. Заметьте, что поле отображения FIFONumber уменьшается к 0.
Откройте блок Time Scope, вторая и третья строка осциллографа теперь показывает синус и волну косинуса, которую мы получили в FIFO. Следующее изображение показывает формы волны осциллографа.
Этот пример показывает, как использовать функции как режим external mode, интерфейс AXI и HDL блоки FIFO, чтобы зондировать в проект Zynq, соберите быстрые данные о FPGA и получите их назад к Simulink для анализа. Можно также сделать подобный контроль с инструментами поставщика FPGA как ChipScope™ или SignalTap™. Но сила этого подхода - то, что можно извлечь всю пользу визуализации из Simulink, как различные блоки осциллографа, и можно также создать собственные средства управления, триггеры или спецификаторы в Simulink.