В статье описано решение задачи по разработке С и HDL кода под Zynq-7000 и пакета поддержки аппаратуры (драйвера устройств). Результатом стала системная модель, которая позволила проработать различные архитектуры и выбрать вариант с меньшим количеством компонентов под заданные требования (амплитудный детектор реализован в цифровом виде).
Подсистема разведки – это высокочастотное широкополосное радиоустройство. Ограниченные сроки проекта, связанные с датами сдачи его заказчику, глубокое взаимодействие модулей, реализованных на HDL и С кодах, высокочастотная аппаратная обработка сигнала в ПЛИС стали основными трудностями при реализации проекта. Модельно-ориентированное проектирование и консультации инженеров MathWorks позволили выполнить и сдать проект в срок, а за счет проработки архитектуры на системных моделях – улучшить технические характеристики системы.
Проект начался за полгода до обращения в MathWorks, когда, используя классический подход к разработке, уже реализовали одну из двух подсистем. Поскольку было критично сдать проект в установленные сроки, решили подстраховать основную ветвь разработки, инициировав совместный пилотный проект по методике модельно-ориентированного проектирования с использованием генерации кода из моделей Simulink. Так как проект выполнялся в тесном сотрудничестве с MathWorks, удалось сразу применить все преимущества модельно-ориентированного проектирования и наиболее эффективно использовать инструменты MathWorks. Результаты пилотного проекта стали основной ветвью разработки, а время разработки по сравнению с классическим подходом сократилось вдвое.
Применяя системную модель, включающую в себя как РЧ блоки, так и блоки ЦОС, улучшили архитектуру подсистемы разведки. Изначально здесь предполагалось использовать синфазный канал для амплитудного детектирования (отдельная микросхема), а квадратурный канал – для цифровой обработки сигнала. Системная модель показала, что совместное использование каналов для амплитудного детектирования и цифровой обработки сигнала даст прирост в отношении сигнал/шум в 2дБ, а замена отдельной микросхемы амплитудного детектора с передачей её функций блоку ЦОС позволит исключить её из схемы – это повысит надежность системы и сократит количество компонентов.
Широкополосный сигнал обрабатывался на ПЛИС с частотой 125 МГц. Чтобы обеспечить такую пропускную способность, на ПЛИС применили конвейеризацию алгоритмов средствами инструмента HDL Coder. Сгенерированный код алгоритма автоматизировано оборачивался интерфейсами AXI и AXI-Stream, что позволило легко встроить их в общий проект, выполненный в Xilinx Vivado. Сгенерированный HDL код «до такта» и «до бита» соответствует модели, поэтому весь алгоритм отлаживался на моделях с отладкой взаимодействия между модулем, реализованным на языке C. Это значительно упростило процесс, поскольку исключило отладку на уровне HDL кода. Модуль, реализованный на С, получили с помощью генератора кода Embedded Coder, который расширили блоками драйверами к периферии Zynq. Взаимодействие между подсистемами ПЛИС и ARM реализовали по интерфейсу AXI-Stream через модуль DMA, поддержка драйвера которого есть в Embedded Coder.
Задачи:
Результаты: