Этот пример показывает проект 5G подсистемы поиска камер NR, оптимизированной для генерации HDL-кода и аппаратной реализации.
Модель Simulink ®, описанная в этом примере, является HDL-оптимизированной реализацией детектора блока сигнала синхронизации (SSB) для 5G области значений частотного 1 NR (FR1). Этот пример является одним из связанных наборов, которые показывают рабочий процесс разработки и развертывания 5G алгоритма поиска камеры NR и восстановления MIB на оборудовании. Отображается полный рабочий процесс.
Каждый шаг в этом рабочем процессе демонстрируется одним или несколькими связанными примерами.
Алгоритм Золотой Ссылки MATLAB: Пример Поиска Камеры NR и Восстановления MIB и SIB1 (5G Toolbox) показывает алгоритм Золотой ссылки с плавающей точкой.
MATLAB Оборудования эталонный алгоритм: NR HDL Камеры Search и MIB Recovery MATLAB Образцов модели аппаратно-удобные алгоритмы и генерирует тестовые формы сигналов. Этот код MATLAB ® работает с векторами и матрицами выборок данных с плавающей точкой и не поддерживает генерацию HDL-кода.
Simulink Модель реализации с фиксированной точкой: Пример поиска Камеры HDL NR (этот пример) демонстрирует подсистему Simulink камеры поиска 5G, которая использует тот же алгоритм, что и ссылка MATLAB. Пример восстановления MIB NR HDL добавляет подсистему декодирования широковещательного канала и восстановления MIB. NR HDL MIB Recovery для FR2 примера показывает модели поиска камер и восстановления MIB, которые были расширены для поддержки FR2. Эти модели работают на данных с фиксированной точкой и оптимизированы для генерации HDL-кода.
Simulink SoC Deployment Model: Примеры развертывания Примеров готовых узлов NR HDL на SoCs основаны на моделях реализации с фиксированной точкой и используют пакеты аппаратной поддержки для развертывания алгоритмов на оборудовании.
Общее описание того, как MATLAB и Simulink могут использоваться вместе для разработки развертываемых моделей, смотрите в Wireless Communications Design для FPGA и ASIC.
На рисунке показан блок схема детектора SSB. Детектор выполняет все высокоскоростные задачи обработки сигналов, сопоставленные с алгоритмом поиска камер, поэтому хорошо подходит для реализации FPGA или ASIC. Детектор SSB ищет SSB во времени при заданных смещении частоты и интервалах между поднесущими. Он предназначен для использования в качестве части большей системы, которая реализует восстановление смещения несущей частоты и обнаружение промежутков между поднесущими. Контроллер должен использоваться для координации общего поиска камер, как показано на 5G примере восстановления NR MIB с использованием аналоговых устройств AD9361/AD9364 (Пакет поддержки Communications Toolbox для Xilinx Zynq-Based Radio).
Детектор 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 содержит блок Model, который ссылается на nrhdlSSBDetectionFR1Core
модель. В этом разделе описываются входы и выходы этой модели.
Исходные данные
dataIn: 14-битный сигнал со знаком комплексного значения, дискретизированный в 61,44 Msps.
validIn: 1-битный сигнал управления для проверки данныхIn.
frequencyOffset: 32-битное значение со знаком, определяющее смещение частоты, которое будет исправлено. Этот сигнал соединяется с NCO с 32-разрядным аккумулятором. Используйте это уравнение, чтобы преобразовать значение в Гц: frequencyOffset_Hz = frequencyOffset * 61 .44e6/2 ^ 32.
subcarrierSpacing: 2-битное беззнаковое значение, определяющее интервал между поднесущими. Установите этот сигнал равным 0, чтобы выбрать 15kHz, или 1, чтобы выбрать 30kHz.
mode: 1-битное беззнаковое значение, задающее операцию. Установите этот сигнал равным 0 для режима поиска или 1 для режима демода.
timingOffset: 21-битное беззнаковое значение, задающее смещение синхронизации начала SSB, подлежащего демодуляции. Задайте смещение синхронизации в выборках на уровне 61,44 Msps, от 0 до 1228799. Этот параметр применяется только к режиму демода.
NCellID2: 2-битное беззнаковое значение, задающее PSS (0, 1 или 2) SSB, подлежащего демодуляции. Этот параметр применяется только к режиму демода.
start: 1-битный сигнал управления, используемый для начала операции поиска или демодуляции. Чтобы начать операцию, установите frequencyOffset, subcarrierSpacing, mode, timingOffset и NCellID2 к желаемым значениям и установите начало равным 1 (true) для одного или нескольких циклов. Если операция уже прогресс, эта операция отменяется, если для начала задано значение 1 (true). Новая операция начинается, когда запуск возвращается к 0 (false).
Выходы
состояние: 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
Режим Демод - операция завершена, PSS не найден.
6
Режим Демод - Найден указанный PSS. Демодуляция ресурсной сетки и поиск SSS.
7
Режим Демод - операция завершена, SSS не найден. Возвращена демодулированная ресурсная сетка.
8
Режим Демод - операция завершена, найден SSS. Возвращена демодулированная ресурсная сетка.
Эта схема показывает верхний уровень nrhdlSSBDetectionFR1Core
модель. Входной сигнал (dataIn) является 14-битными подписанными комплексно-ценными данными, дискретизированными на 61,44 Msps. Подсистема масштабирования входного сигнала увеличивает размер слова до 16 битов, увеличивая значения на один бит и добавляя один LSB. Это увеличение обеспечивает запас и дополнительную точность для последующих этапов обработки. DDC корректирует смещение частоты и децимирует выборки на восемь (до 7,68 Msps) с помощью получастотных фильтров. Выход DDC является входом в подсистему поиска и демодирования SSB. Блок Detection Status отслеживает прогресс и генерирует выход состояния.
Подсистема поиска и демодирования SSB выполняет обнаружение и демодуляцию SSB. Его внутренняя частота дискретизации изменяется в зависимости от интервала между поднесущими (SCS). Подсистема использует 7,68 Msps для 30kHz SCS и 3,84 Msps для 15kHz SCS. Логика выбора интервала между поднесущими слева отвечает за изменение частоты дискретизации. Скорость может измениться только, когда новая операция запускается начальным входом.
Приемник имеет внутреннюю систему ссылки синхронизации, которая отслеживает время, используя счетчики в ключевых точках в datapath. Временной ссылкой отсчитывает периоды 20 мс - принятая периодичность SSB для поиска камеры как определено 5G стандартом NR. Время измеряется в выборках в 61,44 Msps по модулю 1228800, чтобы создать период 20 мс. Поскольку фактическая частота дискретизации составляет либо 7,84 Msps, либо 3,84 Msps, счетчики опорной частоты синхронизации увеличиваются на 8 или 16, соответственно, для каждой выборки. Когда новая операция запускается начальным входом, контроллер запуска записывает время запуска и передает время другим ссылкам синхронизации в модели. Этот сигнал сообщает другим ссылкам, когда применяется новый интервал между поднесущими и соответствующая частота дискретизации. Другие ссылки синхронизации ожидают времени начала, прежде чем изменять их шаг. Это проект возможно только потому оборудование что задержка означает, что другие ссылки синхронизации отстают от контроллера запуска. Эта архитектура позволяет приемнику отслеживать время последовательно, даже когда происходит изменение частоты дискретизации.
Подсистема поиска и демодирования SSB содержит эти основные подсистемы.
Выбор интервала между поднесущими: Преобразует вход в два синхронизированных потока сэмплирования, один на 7,68 Msps и один на 3,84 Msps, и выбирает, какой поток передается на последующие этапы обработки в соответствии с интервалом между поднесущими.
PSS Detection: ищет символы PSS в принятом сигнале. Следующий раздел описывает эту подсистему более подробно.
Циклическая префиксная корреляция: вычисляет значения циклической префиксной (CP) корреляции. Каждый результат усредняется по последним четырем символам OFDM.
Корреляция CP к частоте: Преобразует значения корреляции CP в оценки мелкого смещения частоты.
PSS и CP Alignment: Соответствует основанной на CP оценке частоты с каждым образцом обнаружения символов PSS. Это выравнивание необходимо, потому что оценка частоты для данного образца обнаружения PSS доступна только в конце соответствующего SSB.
PSS Info Serialization: Если 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 ищет 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 мс, которое начинается после того, как импульс на стартовом входе запускает операцию поиска. Если через 20 мс не найдены символы PSS, детектор устанавливает выход состояния на 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
пока он ожидает заданного смещения синхронизации и выполняет поиск заданного PSS.
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-код был синтезирован для платы оценки ZC706 Xilinx ® Zynq ® -7000. В таблице показаны результаты использования ресурсов постамата и маршрута. Проект соответствует синхронизации с тактовой частотой 230 МГц.
Resource Usage _______________ _____ Slice Registers 74934 Slice LUTs 29104 RAMB18 9 RAMB36 1 DSP48 208