В этом примере показано, как разработать готовый детектор CA-CFAR для реализации FPGA. Чтобы проверить функциональную правильность модели реализации, сравниваем выходные данные моделирования модели реализации с выходными данными поведенческой модели на основе CFAR с помощью Toolbox™ системы фазированных массивов. Термин «развертывание» здесь подразумевает разработку модели, подходящей для реализации на FPGA. Модель готова к внедрению, и это будет проверено в примере. Рабочий процесс ЛПВП разработан в фиксированной точке.
Система фазированных массивов Toolbox™ предоставляет модель поведения с плавающей запятой для детектора CFAR через фазированную. Объект системы CFARDetector. Эта поведенческая модель также используется для проверки результатов реализации модели и автоматически генерируемого кода HDL.
Fixed-Point Designer™ предоставляет типы данных и инструменты для разработки алгоритмов фиксированной и единой точности для оптимизации производительности на встроенном оборудовании. Бит-истинное моделирование может быть выполнено для наблюдения воздействия ограниченного диапазона и точности без реализации конструкции в аппаратном обеспечении.
В этом примере используется Coder™ HDL для генерации кода HDL из разработанной модели Simulink ® и проверки кода HDL с помощью Verifier™ HDL. Verifier™ HDL используется для создания модели испытательного стенда совместного моделирования для проверки поведения автоматически генерируемого кода HDL. Испытательный стенд использует ModelSim ® для совместного моделирования для проверки созданного кода HDL.
В радиолокационной системе обнаружение цели достигается путем сравнения мощности принятого сигнала с глобальным порогом. Если принимаемая мощность превышает пороговое значение, она отмечает наличие цели, в противном случае мишень считается отсутствующей. Это делает выбор порога критической характеристикой. Соответствующее пороговое значение зависит от максимизации обнаружения и минимизации ложного аварийного сигнала.
Порог выбирается на основе априорного знания (оценки) мощности помехи. На мощность помехи влияет множество внешних факторов, следовательно, дисперсия будет большой величиной при глобальном измерении. Когда порог является постоянным, увеличение мощности помехи может привести к увеличению ложных обнаружений и в то же время, если мощность помехи значительно падает, цель может не быть обнаружена.
Детектор CFAR, как предполагает название, поддерживает заданную частоту ложных аварийных сигналов посредством адаптивного порогового значения, при этом пороговое значение вычисляется на основе местоположения тестируемой ячейки (CUT), и это определяет ячейку, для которой требуется обнаружение. Мощность помех соседних ячеек используется для вычисления порога для CUT. Порог обнаружения рассчитывается как

где,
- вероятность ложного аварийного сигнала,
- пороговый коэффициент, -
уровень мощности помех.
Детектор CFAR с усреднением ячеек (CA) В CA CFAR для вычисления оценки помех используются ведущие и запаздывающие ячейки. Количество клеток свинца такое же, как и число клеток запаздывания. CA-CFAR предполагает, что соседние соты к CUT содержат ту же самую статистику помех - однородную интерференцию, и цель присутствует только в одном CUT. Чтобы усилить второе предположение, защитные ячейки помещают сразу после CUT.
Для CA-CFAR с независимой и идентично распределенной (i.i.d) гауссовой помехой (стандартная нормальная мощность) средняя мощность шума - это только среднее значение выходного сигнала детектора квадратного закона всех обучающих ячеек, которое равно

Вот
сигнал из i-ой тренировочной ячейки. Для данной вероятности ложного аварийного сигнала пороговый коэффициент может быть вычислен следующим образом:

Обучающая ячейка и защитная ячейка вместе с CUT называются окном CFAR. На следующем рисунке показано представление окна CFAR.

Модель реализации разработана с использованием HDL Coder™ совместимых блоков из библиотеки Simulink ® HDL Coder™. Для этого примера мы выбрали следующие значения для параметров,
Нет. тренировочных ячеек = 50
Нет. защитных ячеек = 2
Вероятность ложной тревоги = 0,005
Общий номер ячеек = 1000
Следующая команда используется для открытия модели Simulink.
modelname = 'SimulinkCFARHDLWorkflowExample'; open_system(modelname); % % Ensure model is visible and not obstructed by scopes open_system(modelname); set(allchild(0),'Visible','off');

Модель Simulink состоит из двух ответвлений от входного блока. Верхняя ветвь - это поведенческая модель с операциями с плавающей запятой фазированной. Объект системы CFARdetector. Нижняя ветвь является функциональной эквивалентной моделью реализации с версией с фиксированной точкой.
Входными данными для поведенческой модели является матрица (NCell x 1) 1000x1. Вход проходит через подсистему Square-Law, которая выполняет операцию square-law, которая затем направляется в поведенческую модель CFAR Detector.
Вход в модель реализации обеспечивается через буфер, который преобразует многомерный сигнал в одномерный поток данных для развертываемой модели. Входной тип данных затем преобразуется в фиксированную точку с помощью блока квантования. Фиксированная точка имеет длину слова 24 бита и длину дроби 12 битов. Компромисс между различными установками фиксированной точки с использованием ресурсов и точностью рассматривается ниже в этом примере. Затем входные данные передаются в подсистему модели реализации CFAR, которая выполняет обнаружение CFAR.
Выходной сигнал поведенческой модели детектора CFAR пропускают через задержку в 125 циклов, чтобы компенсировать задержку для выходного сигнала модели реализации.
Блок области отображает пороговые значения и выходные данные обнаружения поведенческой модели и модели реализации. Кроме того, вычисляют и строят график ошибки между порогом модели реализации и поведенческой моделью, а также ошибки между обнаружением модели реализации и поведенческой моделью.
Модель внедрения содержит следующие подсистемы:
ЛПВП квадратного закона
Альфа ЛПВП
HDL ядра CFAR
Утвердить
ЛПВП квадратного закона
Следующая команда используется для открытия модели Square-Law HDL подсистемы
open_system([modelname '/CFAR Implementation Model/Square Law HDL']);

Модель вычисляет квадратную огибающую комплексного входного сигнала.
Для модели реализации квадратное право разработано как развертываемая модель с дополнительными конвейерными регистрами. Эта модель реализуется с использованием сумматоров и множителей, на которые приходится задержка 6 циклов.
Альфа ЛПВП
Следующая команда используется для открытия модели подсистемы Alpha HDL
open_system([modelname '/CFAR Implementation Model/Alpha HDL']);

Блок Alpha HDL использует номер обучающих ячеек и значения вероятности ложной тревоги для вычисления порогового коэффициента ().
Эта подсистема использует математические блоки HDL и работает с одной точностью для собственной операции деления с плавающей запятой, которая затем преобразуется в фиксированную точку на выходе. Этот блок имеет задержку конвейера 7 циклов.
HDL ядра CFAR
%The following command is used to open the CFAR Core subsystem model open_system([modelname '/CFAR Implementation Model/CFAR Core']);

Эта подсистема извлекает обучающие ячейки из входного потока и вычисляет мощность шума. Мощность шума затем умножается на альфа для генерации порога, который затем используется в процессе обнаружения. Существует два выхода из этого блока, а именно пороговое значение и обнаружение.
Пороговое значение является прямым выходом блока произведения, в то время как выходной сигнал обнаружения подается через блок сравнения, который сравнивает пороговое значение и значение сигнала CUT и возвращает значение true, если сигнал CUT больше порогового значения.
Эта подсистема учитывает входную задержку потоковой передачи 102 (2 * NumberTrainingCells + NoGuardCells) тактовых циклов с дополнительной задержкой конвейерной передачи еще 23 цикла. Общая задержка ЛПВП составляет 125 циклов.
Этот блок содержит следующие подсистемы:
Обучение ЛПВП
ВЫРЕЗАНИЕ ЛПВП
Обучение ЛПВП
Следующая команда используется для открытия модели подсистемы Training HDL.
open_system([modelname '/CFAR Implementation Model/CFAR Core/Training HDL']);

Подсистема Lead Training HDL извлекает ведущие ячейки CUT и выполняет текущую сумму. В то же время подсистема обучения запаздыванию HDL вытягивает ячейки запаздывания CUT и выполняет текущую сумму с задержкой 8 циклов каждая. Реализация lead training HDL и lag training HDL во многом аналогична фильтру скользящего среднего, разница заключается в том, что вместо среднего мы используем сумму оконных элементов.
Подсистема HDL мощности шума CA суммирует значение мощности вывода и значение мощности запаздывания и оценивает среднюю мощность шума путем деления суммы на 100 (2 * NoTrainingCells). Это блокирует задержку в 3 тактовых цикла.
Выходной сигнал обучающей подсистемы ЛПВП представляет собой мощность шума, которая используется для вычисления порогового значения.
ВЫРЕЗАНИЕ ЛПВП
Следующая команда используется для открытия модели подсистемы CUT HDL
open_system([modelname '/CFAR Implementation Model/CFAR Core/CUT HDL']);

Эта подсистема использует один блок задержки с задержкой 102 (2 * NumberTrainingCells + NoGuardCells) циклами для выравнивания по времени CUT с сгенерированным пороговым значением из обучающего блока HDL. Вышеуказанная задержка представляет собой минимальную задержку, перед которой детектор CFAR может обнаружить цель в первой ячейке.
Утвердить
Следующая команда используется для открытия модели подсистемы проверки
open_system([modelname '/CFAR Implementation Model/Validate']);

Действительный ввод вместе с задержкой используется для проверки достоверности вывода. Если выходные данные недействительны, эта подсистема отправляет в выходные данные ноль.
Модель можно смоделировать, нажав кнопку Play или воспользовавшись командой sim, как показано ниже.
sim(modelname);



Блоки Scope используются для сравнения выходных данных реализации и поведенческой модели. Область отображает обнаружение и пороговое значение как из поведенческой модели, так и из модели реализации, а дополнительная область отображает вычисленную ошибку.
Модель реализации имеет задержку потоковой передачи данных 102 цикла и задержку конвейерной передачи 23 цикла. Это в целом приводит к общей задержке 125 циклов. Чтобы выровнять по времени поведенческую модель с моделью реализации, мы используем дополнительную задержку 125 к выходу поведенческой модели.
С 24-битовой фиксированной точкой длины дроби 12 бит мы имеем ошибку, ограниченную приблизительно 0,006 между поведенческой моделью и порогом модели реализации. Поскольку обнаружение является логическим, мы не имеем существенной ошибки в выходных данных обнаружения.
В этом разделе описывается процедура выполнения кодегенерации HDL для модели реализации. В нем также содержится информация о том, что сгенерированный код является функционально корректным. Поведенческая модель предоставляет ссылочные значения для проверки выходных данных модели HDL.
Если вы начинаете с новой модели, вы можете запустить hdlsetup (HDL Coder™), чтобы настроить модель Simulink для генерации кода HDL. Чтобы настроить модель Simulink для создания тестового стенда, откройте «Настройки модели Simulink», выберите «Тестовый стенд» в разделе «Генерация кода HDL» на левой панели и проверьте тестовый стенд HDL и модель совместного моделирования в группе свойств «Вывод генерации тестового стенда».
После проверки реализации с фиксированной точкой и получения моделью реализации тех же результатов, что и в поведенческой модели с плавающей точкой, можно создать код HDL и тестовый стенд. Для создания кода и тестового стенда установите параметры генерации кода HDL в диалоговом окне Configuration Parameters. В разделе Создание кода HDL (HDL Code Generation) в настройках модели (Model Settings) установлены следующие параметры:
Цель: инструмент синтеза Xilinx Vivado; Virtex7 семья; Устройство xc7vx485t; пакет ffg1761, скорость -1; и целевую частоту 300 МГц.
Оптимизация: Отменить выбор всех оптимизаций
Глобальные настройки: Установите для типа «Сброс» значение «Асинхронный»
Испытательный стенд: Выберите испытательный стенд HDL, модель совместного моделирования и испытательный стенд System Verilog DPI
После настройки модели может быть вызван консультант по рабочему процессу HDL для генерации кода HDL с использованием HDL, Coder™ также использовать Verifier™ HDL для генерации тестового стенда DPI System Verilog для тестирования модели. Чтобы вызвать консультанта по рабочим процессам HDL, щелкните правой кнопкой мыши подсистему модели реализации CFAR и перейдите к коду HDL и щелкните левой кнопкой мыши советника по рабочим процессам HDL. Вместо использования консультанта по рабочим процессам HDL следующие строки кода могут также использоваться для создания кода HDL и тестового стенда System Verilog.
% Uncomment the following two lines to generate HDL code and test bench. % makehdl([modelname '/CFAR Implementation Model']); % Generate HDL code % makehdltb([modelname '/CFAR Implementation Model ']); % Generate Cosimulation test bench
Поскольку все оптимизации не проверены, нам не нужно добавлять дополнительные задержки к поведенческому выходу, кроме ранее добавленной задержки HDL. (Это связано с тем, что все критические пути в модели реализации распределяются вручную).
После создания кода 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 ® и запустите модель совместного моделирования для отображения результатов моделирования. Вы можете нажать кнопку Play в верхней части холста Simulink для запуска тестового стенда или сделать это через командное окно из кода ниже
% Uncomment the following line, to run the test bench. % sim(modelname);
Тестовая модель Simulink ® заполнит QuestaSim ® сигналом модели HDL и временными областями в Simulink ®.
В области Simulink ® отображаются выходные данные обнаружения и пороговые выходные данные для совместного моделирования и испытания конструкции (DUT), а также ошибки между ними. Области, сравнивающие результаты совместного моделирования, можно найти в модели стенда внутри подсистемы сравнения, которая находится на выходе подсистемы CFAR_HDL_mq.


В этом примере для моделирования и реализации используется слово Fixed-Point длиной 24 бита и дроби длиной 12 бит. Следующие рисунки показывают компромисс с выбором более длинной дроби, что повысит точность (уменьшает ошибку), но также увеличит использование ресурсов.
На следующем графике показана длина дроби, связанная с выбранной длиной слова

На следующем графике показана точность относительно выбранной длины слова

На следующем графике показана ошибка относительно выбранной длины слова (точность)

На следующих графиках показано использование LUT/регистров/DSP по отношению к выбранной длине слова


В этом примере показано, как спроектировать модель Simulink для детектора постоянной частоты ложных аварийных сигналов (CA CFAR), проверить результаты с помощью эквивалентной поведенческой настройки из Toolbox™ системы фазированных массивов. В этом примере показано, как автоматически создавать код HDL для эквивалентного алгоритма с фиксированной точкой и проверять созданный код в Simulink ®. Сгенерированный код HDL, а также испытательный стенд совместного моделирования для подсистемы Simulink были созданы с блоками, поддерживающими генерацию кода HDL. В этом примере показано, как настроить и запустить ModelSim для косимуляции кода ЛПВП и сравнения его выходных данных с выходными данными, генерируемыми моделью реализации ЛПВП. Косимуляция выполняется через ModelSim ® для кода ЛПВП и сравнивает результаты с выходными данными, генерируемыми моделью ЛПВП.