Этот пример показывает проект подсистемы поиска ячейки NR 5G, оптимизированной для генерации HDL-кода и аппаратной реализации.
Модель, показанная в этом примере, обнаруживает и демодулирует 5G блоки сигнала синхронизации NR (SSBs). Это - оптимизированная реализация HDL поиска PSS, демодуляции OFDM и шагов поиска SSS, показанных в Процедурах Синхронизации NR (5G Toolbox) пример. Модель также включает цифровой вниз конвертер (DDC) для исправления смещений частоты в полученном сигнале. Этот рисунок показывает блок-схему алгоритма. Детектор Блока SS ищет SSBs вовремя при данном смещении частоты и интервале поднесущей. Это спроектировано, чтобы использоваться в качестве части большей системы поиска ячейки, которая реализует восстановление смещения несущей частоты и обнаружение разрядки поднесущей. Контроллер должен использоваться координата полный поиск ячейки как показано в 5G Поиск Ячейки NR Используя Аналоговые устройства AD9361/AD9364 (Пакет Поддержки Communications Toolbox для Xilinx Находящееся в Zynq Радио) пример.
Поиск Ячейки HDL NR Справочный пример MATLAB описывает детектор блока SS и полный алгоритм поиска ячейки. Ссылка MATLAB создается во время разработки ячейки, ищут заявление готовых узлов, чтобы оценить благоприятные для оборудования алгоритмы и проверить реализацию HDL обнаружения блока SS. Этот пример описывает реализацию HDL Simulink детектора блока SS, показывает, как использовать детектор, и как проверить детектор при помощи функций 5G Toolbox™ и кода ссылки MATLAB.
Этот пример использует эти файлы.
nrhdlexamples.runCellSearchModel
: Этот скрипт запускает nrhdlCellSearch
модель путем вызова nrhdlexamples.ssBlockDetectSimulink
функционируйте и проверяет модель при помощи функций 5G Toolbox и Поиска Ячейки HDL NR Ссылка MATLAB.
nrhdlexamples.ssBlockDetectSimulink
: Эта функция запускает модель Simulink и имеет те же аргументы ввода и вывода как nrhdlexamples.ssBlockDetect
функция из ссылки MATLAB.
nrhdlCellSearch
: Эта модель Simulink верхнего уровня является легкой оберткой, которая инстанцирует nrhdlSSBlockDetection
модель - ссылка.
nrhdlSSBlockDetection
: Эта модель - ссылка реализует алгоритм обнаружения блока SS.
Этот пример также использует функции помощника от nrhdlexamples
пакет. Модели Simulink и nrhdlexamples
пакет находится на пути MATLAB. Чтобы открыть одну из моделей, введите его имя в командной строке MATLAB.
nrhdlCellSearch
Открыть функцию или скрипт от nrhdlexamples
пакет, используйте команду редактирования.
edit nrhdlexamples.runCellSearchModel
Этот рисунок показывает nrhdlCellSearch
модель. Верхний уровень сигналов чтений модели от базового рабочего пространства MATLAB, передает их подсистеме Обнаружения Блока SS и записывает выходные параметры обратно к рабочей области. Чтобы запустить модель, вызовите nrhdlexamples.runCellSearchModel
скрипт в MATLAB.
Подсистема Обнаружения Блока SS содержит блок Model, это ссылается на nrhdlSSBlockDetection
модель. В этом разделе описываются вводы и выводы той модели.
Входные параметры
входные данные: 14-битный сигнал с комплексным знаком со знаком, произведенный в 61.44 членах Шотландского парламента.
validIn: 1-битный управляющий сигнал подтвердить входные данные.
frequencyOffset: 32-битное значение со знаком, задающее смещение частоты, которое будет откорректировано. Этот сигнал соединяется с NCO с 32-битным аккумулятором. Используйте это уравнение, чтобы преобразовать значение в Гц: frequencyOffset_Hz = frequencyOffset * 61.44e6 / 2^32;
subcarrierSpacing: 1-битное значение без знака, задающее интервал поднесущей. Установите этот сигнал на 0 выбирать 15 кГц, или 1, чтобы выбрать 30 кГц.
режим: 1-битное значение без знака, задающее режим работы. Установите этот сигнал на 0 для режима поиска, или 1 для demod режима.
timingOffset: 21-битное значение без знака, задающее смещение синхронизации запуска SSB, который будет демодулироваться. Задайте смещение синхронизации в выборках в 61.44 членах Шотландского парламента, от 0 до 1228799. Этот параметр применяется только для demod режима.
NCellID2: 2-битное значение без знака, задающее PSS (0, 1, или 2) SSB, который будет демодулироваться. Этот параметр применяется только для demod режима.
запуск: 1-битный управляющий сигнал раньше запускал операцию поиска или демодуляции. Чтобы запустить операцию, установите frequencyOffset, subcarrierSpacing, режим, timingOffset, и NCellID2 к требуемым значениям и установите, запускаются к 1 (TRUE) для одного или нескольких циклов. Если операция уже происходит, та операция отменяется, когда запуск установлен в 1 (TRUE). Новая операция начинается, когда запуск возвращен в 0 (FALSE).
Выходные параметры
состояние: 4-битное значение без знака, которое указывает на прогресс текущей операции. Смотрите следующий раздел для возможных значений этого сигнала.
pssNCellID2: 2-битное значение без знака, которое является PSS (0, 1 или 2) обнаруженного SSB.
pssTimingOffset: 21-битное значение без знака, которое является смещением синхронизации обнаруженного SSB. Смещение синхронизации находится в выборках в 61.44 членах Шотландского парламента от 0 до 1228799.
pssFrequencyOffset: 32-битное значение со знаком, которое является смещением частоты обнаруженного SSB. Этот сигнал имеет те же модули как вход frequencyOffset.
pssCorrelation: 32-битное значение без знака, которое является силой корреляции PSS.
pssThreshold: 32-битное значение без знака, которое является пороговым значением, когда PSS был обнаружен.
NCellID: 10-битное значение без знака, которое является ячейкой ID демодулируемого SSB. Это значение возвращено только в demod режиме.
sssCorrelation: 32-битное значение без знака, которое является силой корреляции SSS. Этот сигнал возвращен только в demod режиме.
sssThreshold: 32-битное значение без знака, которое является порогом SSS. Это значение возвращено только в demod режиме.
reportValid: 1-битный управляющий сигнал. В режиме поиска этот сигнал подтверждает pssNCellID2, pssTimingOffset, pssFrequencyOffset, pssCorrelation, и pssThreshold для каждого PSS, который обнаруживается. В demod режиме этот сигнал также подтверждает NCellID, sssCorrelation, и sssThreshold. В demod режиме sssCorrelation и sssThreshold только допустимы, если заданный SSB был найден с помощью его PSS, и NCellID только допустим, если SSS был обнаружен.
griddata: 16-битные комплексные числа со знаком, которые являются данными о сетке ресурса. Получатель только возвращает 2-е, 3-и, и 4-е символы сетки ресурса SSB. Значения возвращены один элемент ресурса за один раз. Сетка ресурса только возвращена в demod режиме.
gridValid: 1-битный управляющий сигнал, который подтверждает gridData выход. Данные только возвращены, если заданный SSB был найден с помощью его PSS. Этот сигнал возвращен только в demod режиме.
диагностика: Соедините шиной содержащий диагностические сигналы.
Состояния сигнала состояния
0 Неактивный.
1 Режим поиска - Поиск PSS.
2 Режим поиска - завершенная Операция, никакой PSS не найден.
3 Режим поиска - завершенная Операция, нашел один или несколько PSSs.
4 Режим Demod - Ожидающий заданной синхронизации PSS возмещен.
5 Режим Demod - завершенная Операция, PSS, не найденный.
6 Режим Demod - Найденный заданный PSS. Демодуляция сетки ресурса и поиск SSS.
7 Режим Demod - завершенная Операция, никакой SSS не найден. Возвращенная демодулируемая сетка ресурса.
8 Режим Demod - Операция полный, найденный SSS. Возвращенная демодулируемая сетка ресурса.
Эта схема показывает верхний уровень nrhdlSSBlockDetection
модель. Входной сигнал (входные данные) является 14-битными данными с комплексным знаком со знаком, произведенными в 61.44 членах Шотландского парламента. Вход, Масштабирующий подсистему, увеличивает размер слова до 16 битов расширением знака значения на один бит и добавляющий один LSB. Это увеличение обеспечивает высоту и дополнительную точность для последующих этапов обработки. DDC корректирует смещение частоты и десятикратно уменьшает выборки восемь (7.68 членам Шотландского парламента) при помощи фильтров полуполосы. Выход DDC является входом к подсистеме Блочного сердечника SS. Блок Detection Status отслеживает прогресс и генерирует состояние выход.
Подсистема Блочного сердечника SS выполняет обнаружение блока SS и демодуляцию. Его внутренний уровень выборки варьируется в зависимости от разрядки поднесущей (SCS). Подсистема использует 7.68 членов Шотландского парламента в SCS30 и 3.84 членов Шотландского парламента для SCS15. Поднесущая, располагающая логику выбора с интервалами слева, ответственна за изменение уровня выборки. Уровень может измениться только, когда новая операция инициирована входом запуска.
Получатель имеет внутреннюю синхронизирующую ссылочную систему, которая следит за ходом времени при помощи счетчиков в ключевых пунктах в datapath. Время измеряется в выборках в 61.44 членах Шотландского парламента по модулю 1228800. Поскольку фактический уровень выборки является или 7.84 членами Шотландского парламента или 3.84 членами Шотландского парламента, шагом счетчиков ссылки синхронизации или 8 или 16, соответственно, для каждой выборки. Когда новая операция инициирована входом запуска, Контроллер Запуска записывает время начала и передает время другим ссылкам синхронизации в модели. Этот сигнал говорит другие ссылки синхронизации, когда новый интервал поднесущей и соответствующий уровень выборки применяются. Другие ссылки синхронизации ожидают до времени начала прежде, чем изменить их шаг. Этот проект возможен только потому, что аппаратная задержка означает, что другие ссылки синхронизации отстают от Контроллера Запуска. Эта архитектура позволяет получателю последовательно следить за ходом времени, даже когда изменение уровня выборки происходит.
Подсистема Блочного сердечника SS содержит эти основные подсистемы.
Выбор Разрядки поднесущей: Преобразует вход в два синхронизируемых демонстрационных потока, один в 7.68 членах Шотландского парламента и один в 3.84 членах Шотландского парламента, и выбирает который поток передать последующим этапам обработки согласно интервалу поднесущей.
Обнаружение PSS: Поиски символов PSS в полученном сигнале. Следующий раздел описывает эту подсистему более подробно.
Циклическая Префиксная Корреляция: Вычисляет значения корреляции циклического префикса (CP). Каждый результат усреднен через последние четыре символа OFDM.
Корреляция CP к Частоте: Преобразует значения корреляции CP в прекрасные оценки смещения частоты.
PSS и Выравнивание CP: Совпадает с основанной на CP оценкой частоты каждому экземпляру обнаружения символа PSS. Это выравнивание необходимо, потому что оценка частоты для приведенного примера обнаружения PSS доступна только в конце соответствующего SSB.
Сериализация Информации о PSS: Если PSS обнаруживается больше чем на одном корреляторе PSS выход при том же смещении синхронизации, этот блок сериализирует результаты так, чтобы они были возвращены в детектор по одному.
Синхронизация Данных OFDM: Синхронизирует вход демодулятора OFDM с выходом детектора PSS. Эта синхронизация позволяет детектору PSS инициировать процесс демодуляции OFDM в правильное время.
Демодуляция OFDM: OFDM-демодулирует символы 1, 2, и 3 из заданных SSB.
Обнаружение SSS: Извлекает элементы ресурса SSS из демодулятора OFDM выход и коррелирует их со всеми 336 возможными последовательностями, чтобы определить ячейку ID.
Создайте отчет: Выравнивает все параметры, соответствующие одному обнаружению блока SS, так, чтобы они были все допустимы одновременно.
Эта блок-схема показывает настройку симуляции, реализованную nrhdlexamples.runCellSearchModel
функция. Функция использует функции 5G Toolbox, чтобы сгенерировать тестовую форму волны, которая имеет эти параметры.
Шаблон SSB является случаем B
Интервал поднесущей равняется 30
NCellID 249
Активный SSBs в пакете равняется 8
Смещение частоты составляет 10 кГц
Канал моделируется с AWGN
Функция передает тестовую форму волны MATLAB и реализациям Simulink детектора блока SS в режиме поиска и затем в режиме демодуляции. Ключевые диагностические сигналы от каждого детектора сравнены в терминах их относительной среднеквадратической ошибки (MSE), и окончательные результаты сравнены. Вызовы функции функции 5G Toolbox, чтобы декодировать BCH, восстановите MIB и измерьте EVM сетки ресурса, возвращенной реализацией Simulink.
Чтобы запустить симуляцию, вызовите nrhdlexamples.runCellSearchModel
функция. Эта схема показывает действия, выполняемые скриптом.
Симуляция запускается путем генерации тестовой формы волны, как ранее описано. График показывает объединенную сетку ресурса всех восьми SSBs в переданной форме волны.
В режиме поиска детектор ищет символы PSS в окне времени на 20 мс, которое начинается после того, как импульс на входе запуска инициировал поисковую операцию. Если никакие символы PSS не найдены после того, как 20 мс, детектор установит состояние выход на 2
. В этом примере детектор находит все восемь SSBs. Состояние выход установлено в 1
во время поиска и отчета возвращен для каждого SSB путем утверждения сигнала reportValid. Просмотрите эти сигналы путем открытия инструмента Simulink Logic Analyzer после того, как симуляция режима поиска будет завершена. Симуляция запускается для 5 мс. Если симуляция запустилась больше чем для 20 мс, то состояние выход в конечном счете установлено в 3
.
Скрипт генерирует график, который показывает корреляции PSS выходные параметры и порог обнаружения PSS. Таблицы отображены в командной строке, показывающей параметры каждого SSB. Итоговая таблица показывает MSE между MATLAB и реализациями Simulink для каждого коррелятора выход и для порога обнаружения. Эти результаты показывают, что MATLAB и реализации Simulink соответствуют очень тесно. Небольшие различия между этими двумя реализациями происходят из-за ошибок квантования. Эти ошибки происходят, потому что ссылка MATLAB использует типы данных с плавающей точкой, и модель Simulink использует типы данных с фиксированной точкой.
В режиме демодуляции детектор восстанавливает заданный SSB путем поиска его PSS, OFDM-демодуляции сетки ресурса и поиска SSS в соответствующих элементах ресурса. Если PSS не найден в 20 мс, детектор устанавливает состояние выход на 5
и поиск в остановках.
В этом примере детектор восстанавливает заданный SSB. Испытательный стенд в nrhdlexamples.runCellSearchModel
функция выбирает SSB с самым сильным PSS от начального поиска. Частота возместила измерение от этого SSB, используется в качестве оценки смещения частоты и передается обратно в детектор. Инструмент Simulink Logic Analyzer показывает детектору выход, в то время как это прогрессирует через эти шаги.
Детектор устанавливает состояние выход на 4
в то время как это ожидает заданного смещения синхронизации и ищет PSS.
PSS найден. Детектор устанавливает состояние выход на 6
и возвращается три, демодулировал символы OFDM путем утверждения gridValid. Детектор ищет SSS в сетке ресурса.
После того, как SSS определяется, детектор утверждает reportValid, чтобы указать, что весь PSS и параметры SSS, включая NCellID, допустим. Состояние вывело изменения в 8
, указать, что SSS и ячейка ID готовы.
Если детектор не может определить SSS, то это устанавливает состояние выход на 7
.
Эти графики показывают PSS и сигналы корреляции SSS для обеих реализаций детектора. Уровни корреляции PSS более сильны в demod режиме, чем в режиме поиска, потому что смещение частоты корректируется. Итоговые отчеты отображены в командной строке, показав, что оба детектора возвратили подобные параметры и решили, что ячейка ID 249. Таблица показывает относительный MSE для PSS и сигналов корреляции SSS и сетки ресурса.
График показывает демодулируемые сетки ресурса, возвращенные MATLAB и Simulink. Демодулятор возвращает только символы 1, 2 и 3 из сетки.
Как итоговый шаг верификации, скрипт декодирует BCH от Simulink выход путем вызывания функций 5G Toolbox. Командная строка вывела, отображает измерение EVM, показывает, что проверка CRC передала и подтверждает что соответствия содержимого MIB та из переданной формы волны.
Чтобы сгенерировать HDL-код для этого примера, у вас должна быть лицензия HDL Coder™. Используйте makehdl
и makehdltb
команды, чтобы сгенерировать HDL-код и испытательный стенд HDL для nrhdlCellSearch/SS Block Detection
подсистема. Получившийся HDL-код синтезировался для оценочной платы Xilinx® Zynq®-7000 ZC706. Таблица показывает место сообщения и результаты использования ресурса маршрута. Проект соответствует синхронизации с частотой часов 230 МГц.
Resource Usage _______________ _____ Slice Registers 83300 Slice LUTs 47560 RAMB18 7 RAMB36 1 DSP48 206