Этот пример показывает проект подсистемы поиска ячейки NR 5G, оптимизированной для генерации HDL-кода и аппаратной реализации.
Модель Simulink, описанная в этом примере, является оптимизированной реализацией HDL детектора блока сигнала синхронизации (SSB) для поиска ячейки NR 5G. Этим примером является один из связанного набора, которые показывают рабочий процесс для разработки и развертывания поиска ячейки NR 5G и алгоритма восстановления MIB к оборудованию. Рисунок показывает полный набор примеров и текущего примера в рабочем процессе. Для получения дополнительной информации о полном алгоритме и рабочем процессе, смотрите Поиск Ячейки HDL NR и Восстановление MIB Справочный пример MATLAB. 5G Восстановление MIB NR Используя Аналоговые устройства AD9361/AD9364 (Пакет Поддержки Communications Toolbox для Xilinx Находящееся в Zynq Радио) пример показывает, как развернуть алгоритм в SoC. Для общего описания того, как MATLAB и Simulink могут использоваться вместе, чтобы разработать развертываемые модели, см. Проект Радиосвязей для FPGAs и ASICs.
Блок-схема детектора SSB показана на рисунке. Это выполняет все скоростные задачи обработки сигналов, сопоставленные с алгоритмом поиска ячейки, поэтому хорошо подходит для реализации ASIC или FPGA. Детектор SSB ищет SSBs вовремя при данном смещении частоты и интервале поднесущей. Это спроектировано, чтобы использоваться в качестве части большей системы, которая реализует восстановление смещения несущей частоты и обнаружение разрядки поднесущей. Контроллер должен использоваться координата полный поиск ячейки как показано в 5G Восстановление MIB NR Используя Аналоговые устройства AD9361/AD9364 (Пакет Поддержки Communications Toolbox для Xilinx Находящееся в Zynq Радио) пример.
Детектор SSB выполняет поиск первичной последовательности синхронизации (PSS), демодуляцию ортогонального мультиплексирования деления частоты (OFDM) и поиск вторичной последовательности синхронизации (SSS). Это также включает цифровой вниз конвертер (DDC) для исправления смещений частоты в полученном сигнале.
Этот пример использует эти файлы.
nrhdlexamples.runSSBDetectionModel
: Этот скрипт запускает nrhdlSSBDetection
модель путем вызова nrhdlexamples.ssbDetectSimulink
функционируйте и проверяет модель при помощи функций 5G Toolbox и Поиска Ячейки HDL NR и Восстановления MIB Ссылка MATLAB.
nrhdlexamples.ssbDetectSimulink
: Эта функция запускает модель Simulink и имеет те же аргументы ввода и вывода как nrhdlexamples.ssbDetect
функция из ссылки MATLAB.
nrhdlSSBDetection
: Эта модель Simulink верхнего уровня является легкой оберткой, которая инстанцирует nrhdlSSBDetectionCore
модель - ссылка.
nrhdlSSBDetectionCore
: Эта модель - ссылка реализует алгоритм обнаружения SSB.
Этот пример также использует функции помощника от nrhdlexamples
пакет. Модели Simulink и nrhdlexamples
пакет находится на пути MATLAB. Чтобы открыть одну из моделей, введите его имя в командной строке MATLAB.
nrhdlSSBDetection
Открыть функцию или скрипт от nrhdlexamples
пакет, используйте команду редактирования.
edit nrhdlexamples.runSSBDetectionModel
Этот рисунок показывает nrhdlSSBDetection
модель. Верхний уровень сигналов чтений модели от базового рабочего пространства MATLAB, передает их подсистеме Обнаружения Блока SS и записывает выходные параметры обратно к рабочей области. Чтобы запустить модель, вызовите nrhdlexamples.runSSBDetectionModel
скрипт в MATLAB.
Подсистема Обнаружения Блока SS содержит блок Model, это ссылается на nrhdlSSBDetectionCore
модель. В этом разделе описываются вводы и выводы той модели.
Входные параметры
dataIn: 14-битный сигнал с комплексным знаком со знаком, произведенный в 61.44 членах Шотландского парламента.
validIn: 1-битный управляющий сигнал подтвердить dataIn.
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-битные комплексные числа со знаком, которые являются данными о сетке ресурса. Приемник возвращает все четыре символа сетки ресурса 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. Возвращенная демодулируемая сетка ресурса.
Эта схема показывает верхний уровень nrhdlSSBDetectionCore
модель. Входной сигнал (dataIn) является 14-битными данными с комплексным знаком со знаком, произведенными в 61.44 членах Шотландского парламента. Вход, Масштабирующий подсистему, увеличивает размер слова до 16 битов расширением знака значения на один бит и добавляющий один LSB. Это увеличение обеспечивает высоту и дополнительную точность для последующих этапов обработки. DDC корректирует смещение частоты и десятикратно уменьшает выборки восемь (7.68 членам Шотландского парламента) при помощи фильтров полуполосы. Выход DDC является входом к подсистеме Блочного сердечника SS. Блок Detection Status отслеживает прогресс и генерирует состояние выход.
Подсистема Блочного сердечника SS выполняет обнаружение SSB и демодуляцию. Его внутренняя частота дискретизации варьируется в зависимости от разрядки поднесущей (SCS). Подсистема использует 7.68 членов Шотландского парламента для SCS на 30 кГц и 3.84 членов Шотландского парламента для SCS на 15 кГц. Поднесущая, располагающая логику выбора с интервалами слева, ответственна за изменение частоты дискретизации. Уровень может измениться только, когда новая операция инициирована входом запуска.
Приемник имеет внутреннюю синхронизирующую ссылочную систему, которая следит за ходом времени при помощи счетчиков в ключевых пунктах в datapath. Периоды подсчетов ссылок синхронизации 20 мс - принятая периодичность SSB для ячейки ищет, как задано 5G стандарт NR. Время измеряется в выборках в 61.44 членах Шотландского парламента по модулю 1228800, чтобы создать период на 20 мс. Поскольку фактическая частота дискретизации является или 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 позади коррелятора PSS, когда пиковое обнаружение происходит в конце первого символа OFDM, который будет демодулироваться.
Демодуляция OFDM: OFDM-демодулирует 'все четыре символа заданного SSB.
Обнаружение SSS: Извлекает элементы ресурса SSS из демодулятора OFDM выход и коррелирует их со всеми 336 возможными последовательностями, чтобы определить ячейку ID.
Создайте отчет: Выравнивает все параметры, соответствующие одному обнаружению SSB, так, чтобы они были все допустимы одновременно.
Эта блок-схема показывает настройку симуляции, реализованную nrhdlexamples.runSSBDetectionModel
функция. Функция использует функции 5G Toolbox, чтобы сгенерировать тестовую форму волны, которая имеет эти параметры.
Шаблон SSB является случаем B
Интервал поднесущей равняется 30
NCellID 249
Активный SSBs в пакете равняется 8
Смещение частоты составляет 10 кГц
Канал моделируется с AWGN
Функция передает тестовую форму волны MATLAB и реализациям Simulink детектора SSB в режиме поиска и затем в режиме демодуляции. Ключевые диагностические сигналы от каждого детектора сравнены в терминах их относительной среднеквадратической ошибки (MSE), и окончательные результаты сравнены. Вызовы функции функции 5G Toolbox, чтобы декодировать BCH, восстановите MIB и измерьте EVM сетки ресурса, возвращенной реализацией Simulink.
Чтобы запустить симуляцию, вызовите nrhdlexamples.runSSBDetectionModel
функция. Эта схема показывает действия, выполняемые скриптом.
Симуляция запускается путем генерации тестовой формы волны, как ранее описано. График показывает объединенную сетку ресурса всех восьми 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 не найден при заданном смещении синхронизации, детектор устанавливает состояние выход на 5
и поиск в остановках.
В этом примере детектор восстанавливает заданный SSB. Испытательный стенд в nrhdlexamples.runSSBDetectionModel
функция выбирает SSB с самым сильным PSS от начального поиска. Частота возместила измерение от этого SSB, используется в качестве оценки смещения частоты и передается обратно в детектор. Инструмент Simulink Logic Analyzer показывает детектору выход, в то время как это прогрессирует через эти шаги.
Детектор устанавливает состояние выход на 4
в то время как это ожидает заданного смещения синхронизации и ищет заданный PSS.
PSS найден. Детектор устанавливает состояние выход на 6
- детектор теперь ищет SSS в сетке ресурса. Четыре демодулировали символы OFDM, выводятся, обозначаются путем утверждения gridValid.
После того, как SSS определяется, детектор утверждает reportValid, чтобы указать, что весь PSS и параметры SSS, включая NCellID, допустим. Состояние вывело изменения в 8
, чтобы указать, что операция завершена и SSS и ячейка ID готовы.
Если детектор не может определить SSS, то это устанавливает состояние выход на 7
.
Эти графики показывают PSS и сигналы корреляции SSS для обеих реализаций детектора. Уровни корреляции PSS более сильны в demod режиме, чем в режиме поиска, потому что смещение частоты корректируется. Итоговые отчеты отображены в командной строке, показав, что оба детектора возвратили подобные параметры и решили, что ячейка ID 249. Таблица показывает относительный MSE для PSS и сигналов корреляции SSS и сетки ресурса.
График показывает демодулируемые сетки ресурса, возвращенные MATLAB и Simulink.
Как итоговый шаг верификации, скрипт декодирует BCH от Simulink выход путем вызова nrhdlexamples.ssbDecode
. Выход командной строки показывает, что проверка CRC передала и подтверждает что соответствия содержимого MIB та из переданной формы волны.
Чтобы сгенерировать HDL-код для этого примера, у вас должна быть лицензия HDL Coder™. Используйте makehdl
и makehdltb
команды, чтобы сгенерировать HDL-код и испытательный стенд HDL для nrhdlSSBDetection/SS Block Detection
подсистема. Получившийся HDL-код синтезировался для оценочной платы Xilinx® Zynq®-7000 ZC706. Таблица показывает место сообщения и результаты использования ресурса маршрута. Проект соответствует синхронизации с тактовой частотой 230 МГц.
Resource Usage _______________ _____ Slice Registers 79357 Slice LUTs 37659 RAMB18 7 RAMB36 1 DSP48 208