Этот пример показывает проект подсистемы поиска ячейки NR 5G, оптимизированной для генерации HDL-кода и аппаратной реализации.
Модель Simulink®, описанная в этом примере, является оптимизированной HDL реализацией детектора блока сигнала синхронизации (SSB) для 5G частотный диапазон 1 (FR1) NR. Этим примером является один из связанного набора, которые показывают рабочий процесс для разработки и развертывания поиска ячейки NR 5G и алгоритма восстановления MIB к оборудованию. Полный рабочий процесс показывают.
Каждый шаг в этом рабочем процессе продемонстрирован одним или несколькими связанными примерами.
Золотой Ссылочный шаг Алгоритма MATLAB состоит из Поиска Ячейки NR и MIB и Восстановления SIB1 (5G Toolbox) пример, который показывает золотой ссылочный алгоритм с плавающей точкой.
Шаг Алгоритма Руководства по аппаратным средствам MATLAB состоит из Приемника Нисходящего канала HDL NR Справочный пример MATLAB, который моделирует благоприятные для оборудования алгоритмы и генерирует тестовые формы волны. Этот код MATLAB® работает с векторами и матрицами выборок данных с плавающей точкой и не поддерживает генерацию HDL-кода.
Шаг Модели Реализации Фиксированной точки Simulink состоит из нескольких примеров. Пример Поиска Ячейки HDL NR (этот пример) демонстрирует, что ячейка 5G ищет Подсистему Simulink, которая использует тот же алгоритм в качестве ссылки MATLAB. Пример Восстановления MIB HDL NR добавляет декодирование канала телевизионного вещания и подсистему восстановления MIB. Пример NR HDL SIB1 Восстановления добавляет подсистему, которая восстанавливает сетку ресурса SIB1 и показывает, как декодировать ее выход с помощью кода ссылки MATLAB. Восстановление MIB HDL NR для примера FR2 показывает поиск ячейки и модели восстановления MIB, которые были расширены, чтобы поддержать FR2. Эти модели работают с данными фиксированной точки и оптимизированы для генерации HDL-кода.
Шаг модели развертывания Simulink SoC состоит из Развернуть Примеров готовых узлов HDL NR на примерах SoCs, которые основываются на моделях реализации фиксированной точки и используют пакеты аппаратной поддержки, чтобы развернуть алгоритмы на оборудовании.
Для общего описания того, как MATLAB и Simulink могут использоваться вместе, чтобы разработать развертываемые модели, см. Проект Радиосвязей для FPGAs и ASICs.
Блок-схема детектора SSB показана на рисунке. Детектор выполняет все высокоскоростные задачи обработки сигналов, сопоставленные с алгоритмом поиска ячейки, поэтому хорошо подходит для реализации ASIC или FPGA. Детектор SSB ищет SSBs вовремя при данном смещении частоты и расстоянии между поднесущими. Это спроектировано, чтобы использоваться в качестве части большей системы, которая реализует восстановление смещения несущей частоты и обнаружение расстояния между поднесущими. Контроллер должен использоваться координата полный поиск ячейки как показано в 5G Восстановление MIB NR Используя Аналоговые устройства AD9361/AD9364 (Пакет поддержки Communications Toolbox для Xilinx Находящееся в Zynq Радио) пример.
Детектор SSB выполняет поиск первичной последовательности синхронизации (PSS), демодуляцию ортогонального мультиплексирования деления частоты (OFDM) и поиск вторичной последовательности синхронизации (SSS). Это также включает цифровой вниз конвертер (DDC) для исправления смещений частоты в полученном сигнале. Детектор SSB имеет два режима работы, поиск и демодуляцию, которые продемонстрированы в этом примере. В режиме поиска детектор ищет SSBs и возвращает их параметры. В режиме демодуляции восстанавливается детектор, заданный SSB OFDM-демодулирует свою сетку ресурса и ищет SSS в соответствующих элементах ресурса.
Пример использует эти файлы.
Модели Simulink
nrhdlSSBDetection.slx
: Эта модель Simulink использует nrhdlSSBDetectionFR1Core
модель - ссылка, чтобы симулировать поведение SSB декодирование части процесса восстановления MIB.
nrhdlSSBDetectionFR1Core.slx
: Эта модель - ссылка реализует алгоритм обнаружения SSB.
Словарь данных Simulink
nrhdlReceiverData.sldd
: Этот словарь данных Simulink содержит объекты шины, которые задают шины, содержавшиеся в моделях в качестве примера.
КОД MATLAB
runSSBDetectionModelSearch.m
: Скрипт для выполнения и проверки nrhdlSSBDetection
модель в режиме поиска.
runSSBDetectionModelDemod.m
: Скрипт для выполнения и проверки nrhdlSSBDetection
модель в режиме демодуляции.
nrhdlexamples
: Пакет, содержащий код ссылки MATLAB и служебные функции для проверки моделей реализации.
Этот рисунок показывает nrhdlSSBDetection
модель. Верхний уровень сигналов чтений модели от базового рабочего пространства MATLAB, передает их подсистеме Обнаружения SSB и записывает выходные параметры обратно к рабочей области. Используйте runSSBDetectionModelSearch
и runSSBDetectionModelDemod
скрипты, чтобы запустить модель и постобработать выходные параметры.
Подсистема Обнаружения SSB содержит экземпляр Input Scaling
подсистема и nrhdlSSBDetectionFR1Core
модель - ссылка. Input Scaling
подсистема масштабирует вход на коэффициент 0,875, обеспечивая высоту для последующих этапов обработки. nrhdlSSBDetectionFR1Core
алгоритм описан в следующем разделе.
Входные параметры
dataIn: 14-битный сигнал с комплексным знаком со знаком, произведенный в 61.44 членах Шотландского парламента.
validIn: 1-битный управляющий сигнал подтвердить dataIn.
frequencyOffset: 32-битное значение со знаком, задающее смещение частоты, которое будет откорректировано. Этот сигнал соединяется с NCO с 32-битным аккумулятором. Используйте это уравнение, чтобы преобразовать значение в Гц: frequencyOffset_Hz = frequencyOffset * 61.44e6 / 2^32.
subcarrierSpacing: 2-битное значение без знака, задающее расстояние между поднесущими. Установите этот сигнал на 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. Возвращенная демодулируемая сетка ресурса.
Эта схема показывает верхний уровень nrhdlSSBDetectionFR1Core
модель. Входной сигнал (dataIn) является 16-битными данными с комплексным знаком со знаком, произведенными в 61.44 членах Шотландского парламента. DDC корректирует смещение частоты и десятикратно уменьшает выборки восемь (7.68 членам Шотландского парламента) при помощи фильтров полуполосы. Выход DDC является входом к подсистеме Search и Demod SSB. Блок Detection Status отслеживает прогресс и генерирует состояние выход.
Подсистема Search и Demod SSB выполняет обнаружение 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, соответственно, для каждой выборки. Когда новая операция инициирована входом запуска, Контроллер Запуска записывает время начала и передает время другим ссылкам синхронизации в модели. Этот сигнал говорит другие ссылки синхронизации, когда новое расстояние между поднесущими и соответствующая частота дискретизации применяются. Другие ссылки синхронизации ожидают до времени начала прежде, чем изменить их шаг. Этот проект возможен только потому, что аппаратная задержка означает, что другие ссылки синхронизации отстают от Контроллера Запуска. Эта архитектура позволяет приемнику последовательно следить за ходом времени, даже когда изменение частоты дискретизации происходит.
Подсистема Search и Demod SSB содержит эти основные подсистемы.
Выбор Расстояния между поднесущими: Преобразует вход в два синхронизируемых демонстрационных потока, один в 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, так, чтобы они были все допустимы одновременно.
Блок-схема показывает настройку симуляции этого примера, который реализован в runSSBDetectionModelSearch
и runSSBDetectionModelDemod
скрипты. Функции 5G Toolbox™ используются, чтобы сгенерировать тестовую форму волны, которая применяется к MATLAB и реализациям Simulink детектора SSB в режиме поиска и затем в режиме демодуляции. Ключевые диагностические сигналы от каждого детектора сравнены в терминах их относительной среднеквадратической ошибки (MSE), и окончательные результаты сравнены. Наконец, сетка ресурса, выход модели Simulink декодируется, чтобы показать, что содержимое MIB как ожидалось.
Используйте runSSBDetectionModelSearch
скрипт, чтобы запустить симуляцию режима поиска и проверить результаты. В режиме поиска детектор SSB ищет SSBs и возвращает их параметры. Скрипт отображает свой прогресс окна команды MATLAB. Таблицы показывают параметры каждого SSB, обнаруженного MATLAB и Simulink. Итоговая таблица показывает относительный MSE между MATLAB и Simulink для каждого коррелятора выход и для порога обнаружения. Графики сгенерированы, показав (i) объединенной сетки ресурса всех восьми SSBs в переданной форме волны и (ii) корреляции PSS выходных параметров и порога. Результаты показывают, что MATLAB и реализации Simulink соответствуют очень тесно. Небольшие различия между этими двумя реализациями происходят из-за ошибок квантования. Эти ошибки происходят, потому что ссылка MATLAB использует типы данных с плавающей точкой, и модель Simulink использует типы данных с фиксированной точкой.
runSSBDetectionModelSearch;
Generating test waveform. Selected Simulation case: Simulation Case SSB Pattern Subcarrier Spacing Common PDCCH Config SIB1 SNR dB Strongest SSB index Lmax _______________ ___________ _________________________ _________________ ______ ___________________ ____ "SimCase 1" "Case C" 30 164 50 4 8 Searching for SSBs using the MATLAB reference. Searching for SSBs using the Simulink model. Running nrhdlSSBDetection.slx ### Starting serial model reference simulation build ### Model reference simulation target for nrhdlSSBDetectionFR1Core is up to date. Build Summary 0 of 1 models built (1 models already up to date) Build duration: 0h 0m 0.76282s .......... SSBs found by MATLAB reference: NCellID2 timingOffset pssCorrelation pssEnergy frequencyOffset ________ ____________ ______________ _________ _______________ 0 4416 0.70487 0.77762 5058 0 17568 0.56114 0.61792 4996 0 35136 1.4149 1.5591 5015 0 48288 4.4369 4.8999 5034 0 65856 1.119 1.2328 4934 0 79008 0.99704 1.0975 5003 0 96576 1.7822 1.9614 5014 0 1.0973e+05 0.8866 0.97653 4990 SSBs found by Simulink model: NCellID2 timingOffset pssCorrelation pssEnergy frequencyOffset ________ ____________ ______________ _________ _______________ 0 4416 0.70517 0.77788 5058 0 17568 0.56143 0.61819 4996 0 35136 1.4151 1.5595 5015 0 48288 4.4374 4.901 5034 0 65856 1.1196 1.2332 4934 0 79008 0.99735 1.0978 5003 0 96576 1.7824 1.9619 5014 0 1.0973e+05 0.88665 0.97691 4991 Relative mean-squared error between MATLAB and Simulink in search mode: name relativeMSEdB _____________________ _____________ {'PSS correlation 0'} -66.884 {'PSS correlation 1'} -58.528 {'PSS correlation 2'} -58.627 {'PSS threshold' } -73.727
Используйте Logic Analyzer Simulink, чтобы просмотреть вводы и выводы к подсистеме Обнаружения SSB. Детектор ищет символы PSS в окне времени на 20 мс, которое начинается после того, как импульс на входе запуска инициировал поисковую операцию. Если никакие символы PSS не найдены после того, как 20 мс, детектор устанавливает состояние выход на 2 - указание, что поиск перестал работать. В этом примере детектор находит все восемь SSBs. Состояние выход установлено в 1 во время поиска, и отчет возвращен для каждого SSB путем утверждения сигнала reportValid. Симуляция только запускается для 5 мс однако, если она расширена, чтобы запуститься больше чем для 20 мс, затем состояние выход в конечном счете установлено в 3 - указание, что поиск успешно выполнился.
После выполнения runSSBDetectionModelSearch
, используйте runSSBDetectionModelDemod
скрипт, чтобы запустить симуляцию режима демодуляции и проверить результаты. В режиме демодуляции детектор восстанавливает заданный SSB путем поиска его PSS, OFDM-демодуляции сетки ресурса и поиска SSS в соответствующих элементах ресурса. Скрипт отображает свой прогресс окна команды MATLAB. Отчеты блока SS из MATLAB и Simulink показывают, что оба детектора возвратили подобные параметры и определили ячейку ID правильно как 249. Относительные измерения MSE указывают, что MATLAB и реализации Simulink соответствуют очень тесно. Как итоговый шаг верификации, скрипт декодирует канал телевизионного вещания (BCH) от сетки ресурса Simulink выход. Передачи проверки CRC и содержимое основного блока информации (MIB) совпадают с передачей. Графики сгенерированы, которые показывают PSS и результатам корреляции SSS и сетке ресурса выход. Уровни корреляции PSS более сильны в симуляции режима демодуляции, чем в симуляции режима поиска, потому что смещение частоты корректируется.
runSSBDetectionModelDemod;
Choosing the strongest PSS from the previous search and computing its frequency offset. Strongest PSS index (1 based): 4 Frequency offset (coarse + fine): 5.034 kHz Demodulating the strongest SSBs using the MATLAB reference. Demodulating the strongest SSBs using the Simulink model. Running nrhdlSSBDetection.slx ### Starting serial model reference simulation build ### Model reference simulation target for nrhdlSSBDetectionFR1Core is up to date. Build Summary 0 of 1 models built (1 models already up to date) Build duration: 0h 0m 0.60403s .......... SS block report from MATLAB NCellID2: 0 timingOffset: 48288 pssCorrelation: 4.8510 pssEnergy: 4.8921 NCellID1: 83 sssCorrelation: 4.9502 sssEnergy: 4.9507 NCellID: 249 frequencyOffset: 1 SS block report from Simulink NCellID2: 0 timingOffset: 48288 pssCorrelation: 4.8523 pssEnergy: 4.8941 NCellID1: 83 sssCorrelation: 4.9515 sssEnergy: 4.9525 NCellID: 249 frequencyOffset: 1 Relative mean-squared error between MATLAB and Simulink in demod mode: name relativeMSEdB _____________________ _____________ {'PSS correlation 0'} -65.504 {'PSS threshold' } -67.756 {'SSS correlation' } -68.785 {'Rx resource grid' } -69.161 Decoding BCH from Simulink resource grid output: BCH CRC: 0 Decoded (Rx) MIB NFrame: 0 SubcarrierSpacingCommon: 30 k_SSB: 0 DMRSTypeAPosition: 3 PDCCHConfigSIB1: 164 CellBarred: 0 IntraFreqReselection: 0 Expected (Tx) MIB NFrame: 0 SubcarrierSpacingCommon: 30 k_SSB: 0 DMRSTypeAPosition: 3 PDCCHConfigSIB1: 164 CellBarred: 0 IntraFreqReselection: 0
Используйте Logic Analyzer Simulink, чтобы просмотреть детектор выход, в то время как это прогрессирует через эти шаги.
Детектор устанавливает состояние выход на 4
в то время как это ожидает заданного смещения синхронизации и ищет заданный PSS.
PSS найден. Детектор устанавливает состояние выход на 6
- детектор теперь ищет SSS в сетке ресурса. Четыре демодулировали символы OFDM, выводятся, обозначаются путем утверждения gridValid.
После того, как SSS определяется, детектор утверждает reportValid, чтобы указать, что весь PSS и параметры SSS, включая NCellID, допустим. Состояние вывело изменения в 8
, чтобы указать, что операция завершена и SSS и ячейка ID готовы.
Если PSS не найден при заданном смещении синхронизации, детектор устанавливает состояние выход на 5
и поиск в остановках. Если детектор не может определить SSS, то это устанавливает состояние выход на 7
. В этом примере детектор восстанавливает заданный SSB - SSB с самым сильным PSS от начального поиска.
Чтобы сгенерировать HDL-код для этого примера, у вас должна быть лицензия HDL Coder™. Используйте makehdl
и makehdltb
команды, чтобы сгенерировать HDL-код и испытательный стенд HDL для nrhdlSSBDetection/SSB Detection
подсистема. Получившийся HDL-код синтезировался для оценочной платы Xilinx® Zynq®-7000 ZC706. Таблица показывает место сообщения и результаты использования ресурса маршрута. Проект соответствует синхронизации с тактовой частотой 230 МГц.
Resource Usage _______________ _____ Slice Registers 74934 Slice LUTs 29104 RAMB18 9 RAMB36 1 DSP48 208