В этом примере показана конструкция подсистемы поиска ячеек 5G NR, оптимизированной для генерации кода HDL и реализации аппаратных средств.
Модель Simulink ®, описанная в этом примере, представляет собой оптимизированную для HDL реализацию детектора блока сигнала синхронизации (SSB) для 5G NR частотного диапазона 1 (FR1). Этот пример - один из связанного набора, которые показывают технологический процесс для проектирования и развертывания 5G НОМЕР поиска клетки и алгоритма восстановления МИБ к аппаратным средствам. Отображается полный рабочий процесс.

Каждый шаг в этом рабочем процессе демонстрируется одним или несколькими связанными примерами.
Золотой эталонный алгоритм MATLAB: пример поиска ячеек NR и MIB и восстановления SIB1 (5G Toolbox) показывает золотой эталонный алгоритм с плавающей запятой.
Эталонный аппаратный алгоритм MATLAB: NR HDL Cell Search и MIB Recovery MATLAB Reference моделирует аппаратные алгоритмы и генерирует тестовые сигналы. Этот код MATLAB ® работает с векторами и матрицами выборок данных с плавающей запятой и не поддерживает генерацию кода HDL.
Модель реализации Simulink Fixed-Point: пример поиска ячеек NR HDL (этот пример) демонстрирует подсистему поиска ячеек 5G Simulink, которая использует тот же алгоритм, что и ссылка MATLAB. Пример восстановления NR HDL MIB добавляет подсистему декодирования широковещательного канала и восстановления MIB. NR HDL MIB Recovery для FR2 примера показывает модели поиска ячеек и восстановления MIB, которые были расширены для поддержки FR2. Эти модели работают на данных с фиксированной точкой и оптимизированы для генерации кода HDL.
Модель развертывания SoC Simulink: Примеры использования эталонных приложений NR HDL на SoC основаны на моделях реализации с фиксированной точкой и используют пакеты аппаратной поддержки для развертывания алгоритмов на оборудовании.
Общее описание совместного использования MATLAB и Simulink для разработки развертываемых моделей см. в разделе Проектирование беспроводных коммуникаций для FPGA и ASIC.
Блок-схема детектора SSB показана на рисунке. Детектор выполняет все задачи высокоскоростной обработки сигналов, связанные с алгоритмом поиска ячеек, поэтому хорошо подходит для реализации FPGA или ASIC. Детектор SSB выполняет поиск SSB во времени с заданным сдвигом частоты и интервалом между поднесущими. Он предназначен для использования как часть более крупной системы, которая реализует восстановление смещения несущей частоты и обнаружение интервала между поднесущими. Контроллер должен использоваться для координации общего поиска ячеек, как показано в примере 5G Восстановление MIB NR с использованием аналоговых устройств AD9361/AD9364 (пакет поддержки Communications Toolbox для радиоблока на основе Xilinx Zynq).
Детектор SSB выполняет поиск первичной последовательности синхронизации (PSS), демодуляцию с ортогональным частотным разделением каналов (OFDM) и поиск вторичной последовательности синхронизации (SSS). Он также включает в себя цифровой понижающий преобразователь (DDC) для коррекции сдвигов частоты в принятом сигнале. Детектор SSB имеет два режима работы, поиск и демодуляцию, которые показаны в этом примере. В режиме поиска детектор выполняет поиск SSB и возвращает их параметры. В режиме демодуляции детектор восстанавливает заданный 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 содержит блок модели, который ссылается на nrhdlSSBDetectionFR1Core модель. В этом разделе описываются входные и выходные данные этой модели.

Исходные данные
dataIn: 14-битный сигнатурный сигнал с комплексным значением, дискретизированный на 61,44 мс.
validIn: 1-битный управляющий сигнал для проверки dataIn.
frequencyOffset: 32-разрядное значение со знаком, указывающее смещение частоты, которое должно быть исправлено. Этот сигнал подключается к NCO с 32-разрядным накопителем. Это уравнение используется для преобразования значения в Hz: frequencyOffset_Hz = frequencyOffset * 61 .44e6/2 ^ 32.
поднесущие Интервал: 2-разрядное беззнаковое значение, указывающее интервал между поднесущими. Установите для этого сигнала значение 0 для выбора 15kHz или значение 1 для выбора 30kHz.
mode: 1-разрядное неподписанное значение, определяющее режим работы. Установите для этого сигнала значение 0 для режима поиска или значение 1 для режима демодуляции.
timingOffset: 21-битное неподписанное значение, указывающее смещение синхронизации начала демодулируемого SSB. Укажите смещение синхронизации в выборках на 61,44 мс, от 0 до 1228799. Этот параметр применяется только для режима демодуляции.
NCellID2: 2-битовое беззнаковое значение, определяющее PSS (0, 1 или 2) демодулируемого SSB. Этот параметр применяется только для режима демодуляции.
start: 1-битовый управляющий сигнал, используемый для запуска операции поиска или демодуляции. Чтобы начать операцию, установите значения frequencyOffset, subcariveSpacing, mode, timingOffset и NCellID2 для требуемых значений и установите для начала значение 1 (true) для одного или нескольких циклов. Если операция уже выполняется, эта операция отменяется, если для запуска установлено значение 1 (true). Новая операция начинается, когда начало возвращается к 0 (false).
Продукция
status: 4-разрядное неподписанное значение, указывающее ход выполнения текущей операции. Возможные значения этого сигнала см. в следующем разделе.
pssNCellID2: 2-битное беззнаковое значение, которое является PSS (0, 1 или 2) обнаруженного SSB.
pssTimingOffset: 21-битное неподписанное значение, которое является временным смещением обнаруженного SSB. Смещение синхронизации находится в выборках на 61,44 MSp от 0 до 1228799.
pssFrequencyOffset: 32-битовое значение со знаком, которое является частотным смещением обнаруженного SSB. Этот сигнал имеет те же единицы измерения, что и вход frequencyOffset.
pssCorrelation: 32-битное беззнаковое значение, которое является уровнем корреляции PSS.
pssThreshold: 32-битное неподписанное значение, которое является пороговым значением при обнаружении PSS.
NCellID: 10-битное неподписанное значение, которое является идентификатором ячейки демодулированного SSB. Это значение возвращается только в режиме демодуляции.
sssCorrelation: 32-битное беззнаковое значение, которое является уровнем корреляции SSS. Этот сигнал возвращается только в режиме демодуляции.
sssThreshold: 32-разрядное беззнаковое значение, которое является пороговым значением SSS. Это значение возвращается только в режиме демодуляции.
reportValid: 1-битовый управляющий сигнал. В режиме поиска этот сигнал проверяет pssNCellID2, pssTimingOffset, pssFrequencyOffset, pssCorrelation и pssThreshold для каждого обнаруженного PSS. В режиме демодуляции этот сигнал также проверяет NCellID, sssCorrelation и sssThreshold. В режиме демодуляции функция sssCorrelation и функция sssThreshold действительны только в том случае, если указанный SSB был найден с использованием его PSS, а NCellID действителен только в случае обнаружения SSS.
gridData: 16-битные подписанные комплексные значения, которые являются данными сетки ресурсов. Приемник возвращает все четыре символа сетки ресурсов SSB. Значения возвращаются по одному элементу ресурса. Сетка ресурсов возвращается только в режиме демодуляции.
gridValid: 1-битный управляющий сигнал, проверяющий вывод gridData. Данные возвращаются только в том случае, если указанный SSB был найден с использованием его PSS. Этот сигнал возвращается только в режиме демодуляции.
диагностика: Шина, содержащая диагностические сигналы.
Состояния сигнала состояния
0 Неактивно - начальное состояние. Ожидание первого импульса запуска.
1 Режим поиска - Поиск PSS.
2 Режим поиска - операция завершена, PSS не найден.
3 Режим поиска - операция завершена, обнаружен один или несколько PSS.
4 Режим демодуляции - ожидание указанного смещения синхронизации PSS.
5 Режим Demod - работа завершена, PSS не найдена.
6 Режим Demod - найдена указанная основная система 2х2. Демодуляция сетки ресурсов и поиск SSS.
7 Режим демодуляции - операция завершена, SSS не найден. Возвращена демодулированная сетка ресурсов.
8 Режим демодуляции - операция завершена, найден SSS. Возвращена демодулированная сетка ресурсов.
На этой диаграмме показан верхний уровень nrhdlSSBDetectionFR1Core модель. Входной сигнал (dataIn) представляет собой 14-битовые подписанные комплексные данные, дискретизированные на 61,44 мс. Подсистема масштабирования ввода увеличивает длину слова до 16 бит путем расширения значений на один бит и добавления одного LSB. Это увеличение обеспечивает запас и дополнительную точность для последующих этапов обработки. DDC корректирует сдвиг частоты и прореживает выборки на восемь (до 7,68 мс) с помощью фильтров половинной полосы. Выход DDC является входом в подсистему поиска и демодирования SSB. Блок состояния обнаружения отслеживает ход выполнения и генерирует вывод состояния.

Подсистема поиска и демодуляции SSB выполняет обнаружение и демодуляцию SSB. Его внутренняя частота дискретизации изменяется в зависимости от интервала между поднесущими (SCS). Подсистема использует 7,68 Мс для 30kHz SCS и 3,84 Мс для 15kHz SCS. Логика выбора интервала между поднесущими слева отвечает за изменение частоты дискретизации. Скорость может изменяться только при запуске новой операции начальным входом.
Приемник имеет внутреннюю систему опорных синхросигналов, которая отслеживает время, используя счетчики в ключевых точках в канале передачи данных. Опорный синхросигнал отсчитывает периоды 20 мс - предполагаемую периодичность SSB для поиска соты, как определено стандартом 5G NR. Время измеряется в выборках на 61,44 мс по модулю 1228800 для создания периода 20 мс. Поскольку фактическая частота дискретизации составляет либо 7,84 мс, либо 3,84 мс, счетчики опорных синхросигналов увеличиваются на 8 или 16, соответственно, для каждой выборки. Когда новая операция инициируется начальным входом, контроллер запуска записывает время начала и передает время другим опорным синхросигналам в модели. Этот сигнал сообщает другие опорные синхросигналы, когда применяется новый интервал между поднесущими и соответствующая частота дискретизации. Другие опорные синхросигналы ожидают времени начала до изменения их приращения. Эта конструкция возможна только потому, что аппаратная задержка означает, что другие опорные синхросигналы отстают от контроллера запуска. Эта архитектура позволяет приемнику постоянно отслеживать время, даже когда происходит изменение частоты дискретизации.

Подсистема SSB Search and Demod содержит эти основные подсистемы.
Выбор интервала между поднесущими: преобразует входные данные в два синхронизированных потока выборок, один на 7,68 мс и один на 3,84 мс, и выбирает поток для передачи на последующие этапы обработки в соответствии с интервалом между поднесущими.
Обнаружение PSS: поиск символов PSS в принятом сигнале. В следующем разделе эта подсистема описывается более подробно.
Корреляция циклического префикса: вычисляет значения корреляции циклического префикса (CP). Каждый результат усредняется по последним четырем символам OFDM.
CP корреляция с частотой: преобразует значения CP корреляции в точные оценки сдвига частоты.
Выравнивание PSS и CP: соответствует оценке частоты на основе CP с каждым экземпляром обнаружения символа PSS. Это выравнивание необходимо, поскольку оценка частоты для данного экземпляра обнаружения PSS доступна только в конце соответствующего SSB.
PSS Info Serialization: Если PSS обнаруживается на нескольких выходах коррелятора PSS с одинаковым временным смещением, этот блок сериализирует результаты так, чтобы они возвращались с детектора по одному.
Синхронизация данных OFDM: Синхронизирует вход демодулятора OFDM с выходом детектора PSS. Эта синхронизация позволяет детектору PSS инициировать процесс демодуляции OFDM в правильное время. Синхронизированные данные представляют собой один символ OFDM за коррелятором PSS, поскольку обнаружение пика происходит в конце первого символа OFDM, подлежащего демодуляции.
OFDM демодуляция: OFDM демодулирует "четыре символа указанного SSB.
SSS Detection: Извлекает элементы ресурса SSS из выхода демодулятора OFDM и коррелирует их со всеми 336 возможными последовательностями для определения идентификатора ячейки.
Создание отчета: Выравнивает все параметры, соответствующие одному обнаружению SSB, так что все они действительны одновременно.
На блок-схеме показана настройка моделирования в этом примере, которая реализована в runSSBDetectionModelSearch и runSSBDetectionModelDemod сценарии. 5G функции Toolbox™ используются для генерации тестового сигнала, который применяется к реализациям MATLAB и Simulink детектора SSB в режиме поиска, а затем в режиме демодуляции. Сравнивают ключевые диагностические сигналы от каждого детектора по их относительной среднеквадратичной погрешности (MSE) и сравнивают конечные выходы. Наконец, выходной сигнал сетки ресурсов модели Simulink декодируется, чтобы показать, что содержимое MIB является ожидаемым.

Используйте runSSBDetectionModelSearch для запуска моделирования режима поиска и проверки результатов. В режиме поиска детектор SSB выполняет поиск SSB и возвращает их параметры. Сценарий отображает ход выполнения в окне команды MATLAB. В таблицах показаны параметры каждого SSB, обнаруженного MATLAB и Simulink. Окончательная таблица показывает относительный MSE между MATLAB и Simulink для каждого выходного сигнала коррелятора и для порога обнаружения. Генерируются графики, показывающие (i) комбинированную сетку ресурсов всех восьми SSB в передаваемой форме сигнала и (ii) выходные сигналы корреляции PSS и пороговое значение. Результаты показывают, что реализации MATLAB и Simulink очень близко совпадают. Небольшие различия между двумя реализациями обусловлены ошибками квантования. Эти ошибки возникают, поскольку ссылка MATLAB использует типы данных с плавающей запятой, а модель Simulink использует типы данных с фиксированной запятой.
runSSBDetectionModelSearch;
Generating test waveform.
SSB pattern: case B
Subcarrier spacing: 30
NCellID: 249
Number of active SSBs: 8
Frequency offset: 10 kHz
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 1.8465s
..........
SSBs found by MATLAB reference:
NCellID2 timingOffset pssCorrelation pssEnergy frequencyOffset
________ ____________ ______________ _________ _______________
0 6608 0.43616 0.77013 9837
0 15376 0.94287 1.4364 9941
0 32944 0.25739 0.50089 9627
0 41712 4.4661 6.8109 9885
0 68048 0.57172 0.92271 10292
0 76816 1.4557 2.2044 10075
0 94384 0.1859 0.41544 10318
0 1.0315e+05 0.58464 0.93384 10076
SSBs found by Simulink model:
NCellID2 timingOffset pssCorrelation pssEnergy frequencyOffset
________ ____________ ______________ _________ _______________
0 6608 0.4361 0.77034 9837
0 15376 0.94326 1.4367 9941
0 32944 0.25759 0.50106 9628
0 41712 4.4667 6.812 9885
0 68048 0.57174 0.92296 10292
0 76816 1.4563 2.2049 10075
0 94384 0.186 0.4156 10318
0 1.0315e+05 0.58468 0.93403 10076
Relative mean-squared error between MATLAB and Simulink in search mode:
name relativeMSEdB
_____________________ _____________
{'PSS correlation 0'} -66.863
{'PSS correlation 1'} -61.77
{'PSS correlation 2'} -61.542
{'PSS threshold' } -76.821


Используйте Simulink Logic Analyzer для просмотра входов и выходов подсистемы обнаружения SSB. Детектор ищет символы PSS в пределах временного окна 20 мс, которое начинается после того, как импульс на начальном входе запускает операцию поиска. Если символы PSS не найдены после 20 мс, детектор устанавливает выходной сигнал состояния в 2, что указывает на неудачу поиска. В этом примере детектор находит все восемь SSB. Во время поиска выходной сигнал состояния устанавливается в 1, и отчет возвращается для каждого SSB путем подачи сигнала (reportValid). Моделирование выполняется только в течение 5 мс, однако если оно продлевается более чем на 20 мс, то выходной сигнал состояния в конечном итоге устанавливается в 3, что указывает на успешность поиска.

После выполнения runSSBDetectionModelSearch, используйте runSSBDetectionModelDemod сценарий для выполнения моделирования режима демодуляции и проверки результатов. В режиме демодуляции детектор восстанавливает заданный SSB путем поиска его PSS, OFDM-демодуляции сетки ресурсов и поиска SSS в соответствующих элементах ресурсов. Сценарий отображает ход выполнения в окне команды MATLAB. Отчеты блоков SS от MATLAB и Simulink показывают, что оба детектора вернули одинаковые параметры и правильно определили идентификатор ячейки как 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): 9.885 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.42526s
..........
SS block report from MATLAB
NCellID2: 0
timingOffset: 41712
pssCorrelation: 6.5920
pssEnergy: 6.7946
NCellID1: 83
sssCorrelation: 6.6760
sssEnergy: 6.8410
NCellID: 249
frequencyOffset: -1
SS block report from Simulink
NCellID2: 0
timingOffset: 41712
pssCorrelation: 6.5940
pssEnergy: 6.7974
NCellID1: 83
sssCorrelation: 6.6766
sssEnergy: 6.8432
NCellID: 249
frequencyOffset: -1
Relative mean-squared error between MATLAB and Simulink in demod mode:
name relativeMSEdB
_____________________ _____________
{'PSS correlation 0'} -66.962
{'PSS threshold' } -69.199
{'SSS correlation' } -68.706
{'Rx resource grid' } -69.822
Decoding BCH from Simulink resource grid output:
BCH CRC: 0
Decoded (Rx) MIB
NFrame: 105
SubcarrierSpacingCommon: 30
k_SSB: 0
DMRSTypeAPosition: 2
PDCCHConfigSIB1: 0
CellBarred: 0
IntraFreqReselection: 0
Expected (Tx) MIB
NFrame: 105
SubcarrierSpacingCommon: 30
k_SSB: 0
DMRSTypeAPosition: 2
PDCCHConfigSIB1: 0
CellBarred: 0
IntraFreqReselection: 0



Используйте Simulink Logic Analyzer для просмотра выходных данных детектора по мере выполнения этих шагов.
Детектор устанавливает выходной сигнал состояния в 4 пока он ожидает указанного смещения синхронизации и выполняет поиск указанной основной системы 2х2.
PSS найден. Детектор устанавливает выходной сигнал состояния в 6 - детектор теперь ищет SSS в сетке ресурсов. Выводятся четыре демодулированных символа OFDM, указываемые посредством утверждения gridValid.
После того как SSS определен, детектор утверждает, что reportValid, чтобы указать, что все параметры PSS и SSS, включая NCellID, являются действительными. Вывод состояния изменяется на 8, чтобы указать, что операция завершена и SSS и идентификатор соты готовы.
Если PSS не найдена при заданном сдвиге синхронизации, детектор устанавливает выходной сигнал состояния в 5 и прекращает поиск. Если детектор не может определить SSS, то он устанавливает выходной сигнал состояния в 7. В этом примере детектор восстанавливает указанный SSB - SSB с самой сильной PSS из начального поиска.

Для создания кода HDL в этом примере необходимо иметь лицензию HDL Coder™. Используйте makehdl и makehdltb команды для генерации кода HDL и стенда для тестирования HDL для nrhdlSSBDetection/SSB Detection подсистема. Полученный код HDL синтезировали для оценочной платы Xilinx ® Zynq ® -7000 ZC706. В таблице показаны результаты использования ресурсов post place и route. Конструкция отвечает синхронизации с тактовой частотой 230 МГц.
Resource Usage
_______________ _____
Slice Registers 74934
Slice LUTs 29104
RAMB18 9
RAMB36 1
DSP48 208