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

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

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

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

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

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

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

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

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

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

то, где,$P_{FA}$ Вероятность Ложного Предупреждения,$\alpha$ является Пороговым Фактором,$P_n$ Интерференционный уровень мощности.

Детектор CFAR Усреднения ячейки (CA) В CFAR CA, ячейки вывода и задержки используются, чтобы вычислить оценку interferer. Количество ведущих ячеек совпадает с количеством количества ячеек задержки. 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™ совместимые блоки из библиотеки 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 состоит из двух ветвей от входного блока. Верхняя ветвь является поведенческой моделью с операциями с плавающей точкой phased.CFARdetector Системного объекта. Нижняя ветвь является моделью реализации функционального эквивалента с версией фиксированной точки.

Вход к поведенческой модели (NCell x 1) 1000x1 матрица. Вход передается через Квадратичную подсистему, которая выполняет квадратичную операцию, которая затем передается в поведенческую модель Детектора CFAR.

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

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

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

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

  1. Квадратичный HDL

  2. Альфа-HDL

  3. HDL ядра CFAR

  4. Подтвердить

Квадратичный HDL

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

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

Модель вычисляет квадратичный конверт комплексного входного сигнала.

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

Альфа-HDL

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

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

Блок Alpha HDL использует номер Учебных Ячеек и Вероятность Ложного Сигнального значения, чтобы вычислить пороговый фактор ($$\alpha $$).

Эта подсистема использует Математические блоки 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 циклов. Общая задержка HDL является 125 циклами.

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

  1. Учебный HDL

  2. СОКРАТИТЕ HDL

Учебный HDL

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

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

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

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

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

СОКРАТИТЕ HDL

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

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

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

Подтвердить

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

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

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

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

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

sim(modelname);

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

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

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

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

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

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

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

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

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

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

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

  • Испытательный стенд: Выберите испытательный стенд HDL, Co-имитационную-модель и Систему испытательный стенд DPI Verilog

Верификация HDL-кода через Co-симуляцию

После того, как модель настраивается, HDL Workflow Advisor может быть вызван, чтобы сгенерировать HDL-код с помощью HDL Coder™, также используют HDL Verifier™, чтобы сгенерировать Систему Испытательный стенд DPI Verilog, чтобы протестировать модель. Чтобы вызвать HDL Workflow Advisor щелкают правой кнопкой по подсистеме модели Реализации CFAR и перешли к HDL-коду и щелкают левой кнопкой по HDL Workflow Advisor. Вместо того, чтобы использовать HDL Workflow Advisor следующие строки кода могут также использоваться, чтобы сгенерировать HDL-код и Систему Испытательный стенд 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 содержащий блок Simulator ModelSim®, создается в вашей рабочей директории, которая выглядит так:

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

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

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

Тестовая модель Simulink® заполнит QuestaSim® с сигналом модели HDL и Time Scope в Simulink®.

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

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

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

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

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

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

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

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

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