Детектор постоянной частоты ложных предупреждений (CA-CFAR) на основе FPGA для усреднения ячеек - проект алгоритма и генерация HDL-кода

Этот пример показывает, как спроектировать реализацию FPGA, готовую CA-CFAR Detector. Чтобы убедиться, что модель реализации функционально верна, мы сравниваем выходы симуляции модели реализации с выходами поведенческой модели на основе CFAR с помощью Phased Array System Toolbox™. Термин развертывание здесь подразумевает разработку модели, которая подходит для реализации на FPGA. Модель готова к реализации, и это будет проверено в примере. Рабочий процесс HDL разработан в фиксированной точке.

Этот Phased Array System Toolbox™ предоставляет поведенческую модель с плавающей точкой для CFAR Detector через фазированную. CFARDetector Системного объекта. Эта поведенческая модель используется, чтобы проверить результаты модели реализации и автоматически сгенерированного HDL-кода.

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

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

Проект алгоритмов

В радиолокационной системе обнаружение цели достигается путем сравнения степени принимаемого сигнала с глобальным порогом. Если мощность приемника больше порога, это помечает наличие цели, которая, как говорят, отсутствует. Это делает выбор порога критической характеристикой. Соответствующее пороговое значение зависит от максимизации обнаружения и минимизации ложного предупреждения.

Порог выбирается на основе знания априори (оценки) степени интерферента. На степень интерферента влияет много внешних факторов, поэтому отклонение будет большим значением при глобальном измерении. Когда порог является постоянным, увеличение степени помехи может привести к увеличению ложных обнаружений и в то же время, если степень помехи значительно падает, цель может не быть обнаружена.

Детектор CFAR, как предлагается в имени, поддерживает заданную частоту ложных предупреждений с помощью Адаптивного Порога, при этом порог вычисляется на основе локальности тестируемой камеры (CUT), и это определяет камеру, для которой требуется обнаружение. Степень интерференции соседних камер используется для вычисления порога для CUT. Порог обнаружения вычисляется как

$$T = -P_n^2.ln(P_{FA}) = -P_n^2\alpha$$

где,$P_{FA}$ - вероятность ложного предупреждения,$\alpha$ - Пороговый коэффициент, -$P_n$ уровень степени интерференции.

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

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

$$\widehat{P_n^2} = \frac{1}{N}\sum\limits_{i=1}^N x_i$$

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

$$\alpha = N.(P_{FA}^{(\frac{-1}{N})} - 1)$$

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

Модель реализации

Модель реализации разработана с использованием HDL Coder™ совместимых блоков из библиотеки Coder™ Simulink ® HDL. В данном примере мы выбрали следующие значения для параметров,

  • Нет. обучающих камер = 50

  • Нет. защитных камер = 2

  • Вероятность ложного предупреждения = 0,005

  • Всего No. от Камер = 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. Вход передается через подсистему Квадратного закона, которая выполняет операцию квадратного закона, которая затем передается в поведенческую модель CFAR Detector.

Вход в модель реализации предоставляется через буфер, который преобразует многомерный сигнал в одномерный поток данных для развертываемой модели. Тип входных данных затем преобразуется в фиксированную точку с помощью блока Quantze. Фиксированная точка имеет размер слова 24 бита и длину дроби 12 бит. Компромисс между различными настройками с фиксированной точкой с использованием ресурсов и точностью обсуждается ниже в этом примере. Затем вход передается в подсистему модели реализации CFAR, которая выполняет обнаружение CFAR.

Выход поведенческой модели CFAR Detector передается через задержку в 125 циклов, чтобы компенсировать задержку для выхода модели реализации.

Блок scope строит графики порога и выходов обнаружения поведенческой модели и модели реализации. В сложение ошибка между порогом модели реализации и поведенческой моделью и ошибка между обнаружением модели реализации и поведенческой моделью также вычисляется и строится график.

Модель реализации содержит следующие подсистемы:

  1. Квадратный закон HDL

  2. Альфа-HDL

  3. CFAR Core HDL

  4. Утвердить

Квадратный закон HDL

Следующая команда используется, чтобы открыть модель HDL подсистемы квадратного закона

open_system([modelname '/CFAR Implementation Model/Square Law HDL']);

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

Для модели реализации квадратный закон разработан как развертываемая модель с дополнительными регистрами конвейеризации. Эта модель реализована с использованием сумматоров и умножителей, которые составляют задержку в 6 циклов.

Альфа-HDL

Следующая команда используется, чтобы открыть модель подсистемы Alpha HDL

open_system([modelname '/CFAR Implementation Model/Alpha HDL']);

Блок Alpha HDL использует значение No. обучающих камер и значение вероятности ложного предупреждения для вычисления порогового коэффициента ().$$\alpha $$

Эта подсистема использует блоки Math HDL и работает с одной точностью для собственной операции деления с плавающей точкой, которая затем преобразуется в фиксированную точку на выходе. Этот блок учитывает задержку трубопровода 7 циклов.

CFAR Core HDL

%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 + NoGuardCell) тактовых циклов с дополнительной задержкой конвейеризации еще 23 циклов. Общая задержка HDL составляет 125 циклов.

Этот блок содержит следующие подсистемы:

  1. Обучение HDL

  2. ВЫРЕЗАНИЕ HDL

Обучение HDL

Следующая команда используется, чтобы открыть модель подсистемы Training HDL.

open_system([modelname '/CFAR Implementation Model/CFAR Core/Training HDL']);

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

Подсистема HDL мощности шума CA суммирует значение степени вывода и значение степени задержки и оценивает среднюю степень шума путем деления суммы на 100 (2 * NoTrainingCell). Этот блок учитывает задержку в 3 такта.

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

ВЫРЕЗАНИЕ HDL

Следующая команда используется, чтобы открыть модель подсистемы CUT HDL

open_system([modelname '/CFAR Implementation Model/CFAR Core/CUT HDL']);

Эта подсистема использует один блок задержки с задержкой 102 (2 * NumberTrainingCells + NoGuardCell) цикла, чтобы выровнять во времени CUT с сгенерированным пороговым значением из обучающего HDL-блока. Вышеуказанная задержка является минимальной задержкой, необходимой перед тем, как детектор CFAR может обнаружить цель в первой камере.

Утвердить

Следующая команда используется, чтобы открыть модель валидации подсистемы

open_system([modelname '/CFAR Implementation Model/Validate']);

Допустимый вход вместе с задержкой используется для проверки валидности выхода. Когда вывод недопустим, эта подсистема отправляет нуль в выход.

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

Модель может быть симулирована нажатием кнопки Play или с помощью команды sim, как показано ниже,

sim(modelname);

Блоки Возможностей используются для сравнения выхода реализации и поведенческой модели. Область возможностей отображает обнаружение и порог как из модели поведения, так и из модели реализации, а дополнительные возможности отображают вычисленную ошибку.

Модель реализации имеет задержку потоковой передачи данных 102 цикла и задержку конвейеризации 23 цикла. Это в общей сложности составляет общую задержку 125 циклов. Чтобы согласовать поведенческую модель с моделью реализации, мы используем дополнительную задержку 125 для выхода поведенческой модели.

С 24-битной фиксированной точкой длины дроби 12 бит у нас есть ошибка, ограниченная приблизительно 0,006 между поведенческой моделью и порогом модели реализации. Поскольку обнаружение является логическим, у нас нет существенной ошибки в выходе обнаружения.

Генерация

кода

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

Если вы начинаете с новой модели, можно запустить hdlsetup (HDL- Coder™), чтобы сконфигурировать модель Simulink для генерации HDL-кода. Чтобы сконфигурировать модель Simulink для создания испытательного стенда, откройте Simulink's Model Settings, выберите Испытательный Стенд под Генерация HDL-кода в левой панели и проверьте HDL-тестовый стенд и модель Ко-симуляции в группе свойств Испытательный Стенд Generation Oute.

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

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

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

  • Оптимизация: Выключите все оптимизации

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

  • Испытательный стенд: Выберите испытательный стенд HDL, модель Ко-симуляции и System Verilog DPI испытательного стенда

HDL- Верификации кода через совместное моделирование

После настройки модели можно вызвать HDL Workflow Advisor, чтобы сгенерировать HDL-код с помощью HDL, Coder™ также использовать HDL- Verifier™ для генерации DPI- Испытательного стенда System Verilog для тестирования модели. Чтобы вызвать HDL Workflow Advisor, щелкните правой кнопкой мыши подсистему модели реализации CFAR и перейдите к HDL-коду и щелкните слева HDL-консультант по процессу. Вместо использования HDL Workflow Advisor для генерации HDL-кода и System Verilog Test Bench можно использовать следующие строки кода.

% 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-модели и Time Scopes в Simulink ®.

Область возможностей Simulink ® показывает вывод обнаружения и выход порога как для ко-симуляции, так и для проекта (DUT), а также ошибку между ними. Возможности результатов совместного моделирования можно найти в тестовой модели в подсистеме Compare, которая находится на выходе подсистемы CFAR_HDL_mq.

Размеры слова с фиксированной точкой и длины дроби

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

На следующем графике показана длина дроби, связанная с выбранным размером слова

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

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

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

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

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