Основанный на FPGA моноимпульсный рабочий процесс метода: проект и генерация кода

В этом примере показано, как спроектировать FPGA готовый к реализации Моноимпульсный Метод, чтобы совпадать с соответствующей поведенческой моделью в Simulink® с помощью Phased Array System Toolbox™, DSP System Toolbox™ и Fixed-Point Designer™. Проверять модель реализации функционально правильно, она сравнивает симуляцию, выход модели реализации с выходом поведенческого развертывания термина model.The здесь подразумевает разработку модели, которая подходит для реализации на FPGA. Модель является готовой реализацией, и это будет проверено в примере. Целый рабочий процесс спроектирован в фиксированной точке.

Phased Array System Toolbox™ обеспечивает поведенческую модель с плавающей точкой для моноимпульсного метода через phased.MonopulseFeed Системный объект. Эта поведенческая модель используется, чтобы проверить результаты модели реализации и автоматически сгенерированного HDL-кода также. DSP System Toolbox™ обеспечивает КИХ-фильтр, важный для фильтрации понижающего преобразования.

Fixed-Point Designer™ обеспечивает типы данных и инструменты для разработки фиксированной точки и алгоритмов с одинарной точностью, чтобы оптимизировать эффективность на встроенном оборудовании. Битно-истинные симуляции могут быть выполнены, чтобы наблюдать удар ограниченного диапазона и точности, не реализовывая проект на оборудовании.

Этот пример использует HDL Coder™, чтобы сгенерировать HDL-код из разработанной модели Simulink® и проверяет HDL-код с помощью HDL Verifier™. HDL Verifier™ используется, чтобы сгенерировать cosimulation тестовую модель, чтобы проверить поведение автоматически сгенерированного HDL-кода. Испытательный стенд использует ModelSim® для cosimulation, чтобы проверить автоматически сгенерированный HDL-код.

Моноимпульс является методом, где полученное эхо от различных элементов антенны используется, чтобы оценить направление прибытия (DOA) сигнала. Это в свою очередь помогает оценить местоположение объекта. Пример использует DSP System Toolbox и Fixed-Point Designer, чтобы спроектировать модуль. Этот метод использует четыре луча, которые помогают измерить угловое положение цели. Все четыре луча сгенерированы одновременно и различие азимута, и вертикальное изменение достигается в одном импульсе, следовательно, моноимпульсе имени.

Разработка подсистемы

Алгоритм реализован путем использования блоков Simulink®, которые являются совместимым HDL. Модель, показанная ниже, принимает, что сигнал получен от универсального прямоугольного массива (URA) с 4 элементами. Следовательно начальная точка для модели показывает 4 синусоиды входными параметрами. Принимая URA с 4 элементами, модель состоит 4, получают каналы от каждого из элементов URA. Если сигналы преобразованы в цифровую область, блоки DDC гарантируют, что частота полученного сигнала понижена, поэтому уменьшая частоту дискретизации для обработки. Блок-схема ниже показов подсистема, которая состоит из следующих модулей.

  1. Многоканальный входной сигнал

  2. Цифровое понижающее преобразование

  3. Моноимпульсные каналы суммы и различия

Ниже команда, чтобы открыть модель Simulink

modelname = 'SimulinkDDCMonopulseHDLWorkflowExample';
open_system(modelname);

% Ensure model is visible and not obstructed by scopes.
open_system(modelname);
set(allchild(0),'Visible','off');

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

Заметьте, что существует задержка ($Z^{-220}$) при выходе поведенческой модели. Это необходимо, потому что алгоритм реализации использует 220 задержек, чтобы позволить конвейерно обработать, который создает задержку, которая должна составляться. Эта задержка необходима для времени - выравнивают выход между поведенческой моделью и моделью реализации.

Цифровое понижающее преобразование (DDC)

Подсистема ниже показов, как полученный сигнал в произведенном в несущей частоте почти на 15 МГц и на 80 МГц вниз преобразован в основную полосу через DDC и затем передан моноимпульсной сумме и подсистеме различия. Модуль DDC является комбинацией генератора с программным управлением (NCO) и набором фильтров lowpass. NCO обеспечивает сигнал смешать и демодулировать входящий сигнал. Откройте подсистему, которая выполняет понижающее преобразование

open_system([modelname '/DDC and Monopulse HDL']);

Заметьте, что задержка 215 мс была добавлена к выходу цифрового компаратора в подсистеме реализации, чтобы компенсировать задержку, которая проистекает вниз цепь преобразования.

DDC также содержит набор фильтров lowpass как показано на рисунке. После того, как смешанный, фильтрация lowpass смешанного сигнала требуется, чтобы устранять высокочастотные компоненты. В этом примере мы используем каскадную цепь фильтра, чтобы достигнуть фильтрации lowpass. NCO используется, чтобы сгенерировать высокоточную синусоиду для микшера. Задержка 6 предоставляется оптимизированному HDL блоку NCO. Этот сигнал смешан с входящим сигналом и преобразован от более высокой частоты до относительно более низкой частоты, в то время как это прогрессирует через различные этапы.

open_system([modelname '/DDC and Monopulse HDL/HDL_DDC']);

В этом примере входящий сигнал имеет несущую частоту 15 МГц и производится на уровне 80 МГц. Процесс понижающего преобразования понижает произведенный сигнал до нескольких kHz. Коэффициенты для соответствующих КИХ-фильтров lowpass являются созданными с использованием filterBuilder, один из которых аналогичен описанному ниже. Значения должны быть выбраны, чтобы удовлетворить необходимым критериям полосы пропускания.

После того, как сгенерированный, коэффициенты могут быть экспортированы в оптимизированный блок FIR Filter HDL.

Моноимпульсные каналы суммы и различия

Кроме генерации вниз преобразованного сигнала, другим аспектом для фактора для моноимпульса является держащийся вектор для различных элементов. Держащиеся векторы были сгенерированы для инцидентного угла азимута 30 градусов и вертикальное изменение 20 градусов. Держащиеся векторы передаются цифровому компаратору, чтобы предоставить желаемой сумме и каналу различия выходные параметры. Вниз преобразованный сигнал затем умножается на сопряженные из этих векторов как показано на рисунке ниже. Путем обработки суммы и каналов различия, может быть найден DOA полученного сигнала. Цифровой компаратор, который сравнивает держащиеся векторы для различных элементов антенной решетки, виден:

open_system([modelname '/DDC and Monopulse HDL/DIGITAL COMPARATOR']);

На рисунке выше, цифровой компаратор берет держащиеся векторы и вычисляет сумму и различие различных руководящих векторов sVA, sVB, sVC и sVD соответственно. Можно также вычислить держащиеся векторы при помощи phased.SteeringVector Системного объекта, или можно сгенерировать их метод использования, похожий на один показанный в FPGA Основанный Beamforming в Simulink: Часть 1 - Проект Алгоритма. Однажды сумма и различие различных руководящих векторов, соответствующих каждому элементу массива, был сделан, вычисление суммы и каналов различия для соответствующего азимута, и углы возвышения выполняются. От подсистемы Моноимпульса Суммы и Различия 3 сигнала получены, а именно, сумма, различие в азимуте и различие в вертикальном изменении. Целая арифметика выполняется в фиксированной точке. Моноимпульсная сумма и подсистема канала различия могут быть открыты при помощи команды ниже

open_system([modelname '/DDC and Monopulse HDL/Monopulse Sum and Difference Channel']);

Сравнение результатов модели реализации к поведенческой модели

Чтобы сравнить результаты модели реализации к поведенческой модели, запустите модель, созданную, чтобы отобразить результаты. Можно запустить модель Simulink путем нажатия на кнопку воспроизведения или вызова sim команды на командной строке MATLAB как показано ниже. Используйте блоки Осциллографа, чтобы сравнить выходные системы координат.

sim(modelname);

Графики показывают выход от каналов различия и суммы. Эти каналы могут питаться средство оценки, чтобы указать на угол/направление объекта.

Генерация кода и верификация

Этот раздел покрывает процедуру, чтобы сгенерировать HDL-код для DDC и моноимпульсного метода и проверить, что сгенерированный код функционально правилен. Поведенческая модель вводит ссылочные значения, чтобы гарантировать, что выход от HDL в пределах допуска. На основе настройки модели Simulink, аналогичной описанному выше, моноимпульсный метод созданные с использованием вычисления с фиксированной точкой и генерация HDL-кода поддержек. В качестве альтернативы, если вы начинаете с новой модели, можно запустить hdlsetup (HDL Coder), чтобы сконфигурировать модель Simulink для генерации HDL-кода. Чтобы сконфигурировать модель Simulink для создания испытательного стенда, откройте Настройки Simulink Модели, выберите Test Bench под генерацией HDL-кода в левой панели и проверяйте испытательный стенд HDL и модель Cosimulation в группе Выходных свойств Генерации Испытательного стенда.

Настройки модели

После того, как реализация фиксированной точки проверяется, и модель реализации приводит к тем же результатам как ваша поведенческая модель с плавающей точкой, можно сгенерировать HDL-код и испытательный стенд. Для генерации кода и испытательного стенда, установленного параметры генерации HDL-кода в диалоговом окне Параметров конфигурации. Следующие параметры в Настройках Модели устанавливаются под генерацией HDL-кода:

  • Цель: инструмент синтеза Xilinx Vivado; семейство Virtex7; Устройство xc7vx485t; пакет ffg1761, скорость-1; и целевая частота 300 МГц.

  • Оптимизация: Снимите флажок со всей оптимизацией

  • Глобальные Настройки: Установите тип Сброса на Асинхронный

  • Испытательный стенд: Выберите испытательный стенд HDL, модель Cosimulation и испытательный стенд SystemVerilog DPI

Верификация HDL-кода через Cosimulation

После того, как Настройки Модели Simulink были обновлены, можно использовать HDL Coder, Генерируют HDL-код от Simulink®, чтобы сгенерировать HDL-код для подсистемы Алгоритма HDL. Используйте HDL Verifier, чтобы сгенерировать тестовую модель.

% Uncomment the following two lines to generate HDL code and test bench.
% makehdl([modelname '/DDC and Monopulse HDL']);   % Generate HDL code
% makehdltb([modelname '/DDC and Monopulse HDL ']); % Generate Cosimulation test bench

Поскольку модель составляла конвейеризацию в умножении, и мы сняли флажок со всей оптимизацией, нет никаких дополнительных задержек, добавленных к модели. Мы должны компенсировать эти задержки поведенческой модели с плавающей точкой выход. Это выровняет выход поведенческой модели с моделью реализации, а также cosimulation. Из этих 220 модульных задержек 215 единичных задержек компенсируют задержку в цепи DDC и 5 модулей в моноимпульсной сумме и подсистеме различия.

После генерации HDL-кода и испытательного стенда новая модель Simulink, названная gm _ <modelname> _mq содержащий блок ModelSim Simulator, создается в вашей рабочей директории, которая выглядит так:

% To open the test bench model, uncomment the following lines of code
% modelname = ['gm_',modelname,'_mq'];
% open_system(modelname);

Запустите ModelSim и запустите cosimulation модель, чтобы отобразить результаты симуляции. Можно нажать на кнопку воспроизведения на верхней части холста Simulink, чтобы запустить испытательный стенд, или можно сделать это через командное окно из кода ниже

% Uncomment the following line, to run the test bench.
% sim(modelname);

Тестовая модель Simulink® заполнит Ксту Сима с сигналом модели HDL и Time Scope в Simulink. Ниже примеры результатов в Ксте Симе и Осциллографах Simulink.

Осциллограф Simulink ниже показов действительные и мнимые части и для cosimulation и для Проекта под тестом (DUT), а также ошибки между ними. Осциллографы, сравнивающие результаты cosimulation, могут быть найдены в тестовой модели в Сравнить подсистеме, которая является при выходе DDC и Моноимпульсной подсистемы HDL_mq.

% Uncomment the following line to open the subsystem with the scopes.
% open_system([modelname,'/Compare/Assert_Sum Channel HDL'])

Сводные данные

Этот пример, продемонстрированный, как спроектировать модель Simulink для DDC и моноимпульсной системы канала, проверьте результаты с эквивалентной поведенческой настройкой от Phased Array System Toolbox. Этот пример продемонстрировал, как автоматически сгенерировать HDL-код для фиксированной точки, моноимпульсного метода с вниз цепь преобразования и проверить сгенерированный код в Simulink®. Сгенерированный HDL-код, а также cosimulation испытательный стенд для Подсистемы Simulink был создан с блоками та генерация HDL-кода поддержки. Это показало, как установить и запустить ModelSim к cosimulate HDL-код и сравнить его выход с выходом, сгенерированным моделью реализации HDL. cosimulation выполняется через ModelSim для HDL-кода, и сравните результаты с выходом, сгенерированным моделью HDL.