В этом примере показано, как спроектировать 5G декодирование блока сигнала синхронизации (SSB) NR и модель восстановления основного блока информации (MIB), оптимизированная для генерации HDL-кода и аппаратной реализации.
Модели Simulink®, описанные в этом примере, являются оптимизированными реализациями HDL фиксированной точки декодирования SSB и восстановления MIB для 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.
Восстановление MIB требует обнаружения SSB, демодуляции и декодирования. Этот пример фокусируется на декодировании SSB. Обнаружение SSB и демодуляция описаны в примере Поиска Ячейки HDL NR. Этот пример вводит SSB декодирование модели Simulink и использует ссылку MATLAB, чтобы сгенерировать тестовое воздействие и проверить поведение модели. Затем пример описывает модель Simulink, которая комбинирует обнаружение SSB, демодуляцию, и декодирующий, чтобы восстановить MIB с основополосной формы волны.
После того, как SSB обнаруживался и демодулировался, он должен декодироваться, чтобы извлечь содержимое MIB. Декодирование SSB требует опорного сигнала демодуляции (DMRS) поиск, оценка канала и эквализация фазы и канал телевизионного вещания (BCH) декодирующие шаги как показано в рисунке ниже.
Этот пример использует эти файлы.
Модели Simulink
nrhdlSSBDecoding.slx
: Эта модель Simulink использует nrhdlSSBDecodingCore
модель - ссылка, чтобы симулировать поведение SSB декодирование части процесса восстановления MIB.
nrhdlMIBRecovery.slx
: Эта модель Simulink комбинирует обработку детектора SSB и декодера SSB в интегрированную модель, иллюстрирующую полный процесс восстановления MIB. Эта модель использует nrhdlSSBDetectionFR1Core
и nrhdlSSBDecodingCore
модели - ссылки.
nrhdlSSBDecodingCore.slx
: Эта модель - ссылка реализует SSB декодирование алгоритма.
nrhdlSSBDetectionFR1Core.slx
: Эта модель - ссылка реализует алгоритм обнаружения SSB.
Словарь данных Simulink
nrhdlReceiverData.sldd
: Этот словарь данных Simulink содержит объекты шины, которые задают шины, содержавшиеся в моделях в качестве примера.
КОД MATLAB
runSSBDecodingModel.m
: Этот скрипт использует ссылку MATLAB, чтобы реализовать алгоритм поиска ячейки, затем запускает nrhdlSSBDecoding
Модель Simulink. Скрипт проверяет операцию модели с помощью тулбокса 5G и кода ссылки MATLAB.
runMIBRecoveryModel.m
: Этот скрипт использует ссылку MATLAB, чтобы выполнить режим поиска алгоритма обнаружения SSB, затем запускает nrhdlMIBRecovery
Модель Simulink. Скрипт проверяет операцию модели с помощью тулбокса 5G и кода ссылки MATLAB.
nrhdlexamples
: Пакет, содержащий код ссылки MATLAB и служебные функции для проверки моделей реализации.
Этот рисунок показывает nrhdlSSBDecoding
модель. Верхний уровень модели читает сигналы из базового рабочего пространства MATLAB, передает их SSB Декодирование подсистемы и записывает выходные параметры обратно к рабочей области. Подсистема ParseMIB берет pbchPayload и интерпретирует битовые поля, чтобы произвести параметр MIB выходные параметры.
SSB Декодирование подсистемы содержит экземпляр nrhdlSSBDecodingCore
модель - ссылка. В этом разделе описываются вводы и выводы той модели.
Входные параметры
startProcessing: 1-битный управляющий сигнал, который указывает, когда все данные были записаны и что заключенный и Lmax допустимы.
NCellID: 10-битный номер без знака, который обеспечивает идентификационный номер ячейки для обнаруженного SSB.
Lmax: 2-битный номер без знака, который указывает на максимальное количество SSBs в пакете. Значение 0 указывает на 4 SSBs, и значение 1 указывает на 8 SSBs.
данные: 16-битный сигнал с комплексным знаком со знаком, несущий 4 символа OFDM SSB.
dataValid: 1-битный управляющий сигнал подтвердить данные.
сброс: 1-битный управляющий сигнал сбросить обработку.
Выходные параметры
pbchStatus: 2-битное значение без знака, указывающее на прогресс PBCH декодирование операции. Смотрите ниже для получения дополнительной информации о возможных значениях этого сигнала.
bchStatus: 3-битное значение без знака, указывающее на прогресс BCH декодирование операции. Смотрите ниже для получения дополнительной информации о возможных значениях этого сигнала.
ssbIndex3Lsb: 3-битное значение без знака, которое является 3 младшими значащими битами индекса SSB, вычисленного процессом поиска DMRS и Lmax.
pbchPayload: 32-битное значение без знака, которое содержит MIB и дополнительный PBCH синхронизация данных.
validOut: 1-битный управляющий сигнал подтвердить ssbIndex3Lsb и pbchPayload.
nextSSB: 1-битный управляющий сигнал указать, когда ядро может начать обрабатывать следующий SSB. Может использоваться, чтобы следовать, входные параметры для компенсационного SSB декодирует.
диагностика: Соедините шиной содержащий диагностические сигналы.
Состояния сигнала состояния PBCH
0: неактивный
1: чтение в данных для сетки SSB
2: выполнение поиск DMRS
3: выполнение демодуляция символа PBCH
Состояния сигнала состояния BCH
0: неактивный
1: выполнение восстановления уровня
2: выполнение полярного декодирования
3: Ошибка CRC (конечное состояние)
4: Передача CRC, MIB, обнаруженный (конечное состояние)
Эта схема показывает верхний уровень nrhdlSSBDecodingCore
модель. Входные данные являются 4 символами OFDM для блока сигнала синхронизации (SSB) со значениями, масштабируемыми в области значений +/-1. Модель начинает обрабатывать, когда все данные SSB были введены к модели, и startProcessing утверждается. Сигнал startProcessing также указывает, что входные параметры NCellID и Lmax допустимы.
PBCH обработка подсистемы выполняет поиск DMRS, оценку канала и эквализацию, демодуляцию символа QPSK и дескремблирование. Выход от PBCH, обработка подсистемы передается BCH обработка подсистемы, которая выполняет восстановление уровня, полярное декодирование и декодирование CRC. Подсистема Создания Шины Диагностики создает шину диагностики путем конкатенации диагностики от PBCH и BCH обработка подсистем.
PBCH обработка подсистемы выполняет поиск DMRS, оценку канала и эквализацию, и демодуляцию QPSK и дескремблирование. Входящие данные хранятся в буфере RAM, где они сохранены, пока startProcessing не утверждается, указывая, что вся запрошенная информация доступна, чтобы запустить процесс поиска DMRS. Поиск DMRS читает символы DMRS из RAM и коррелирует с 8 возможными последовательностями DMRS, выбирая самое сильное значение корреляции, чтобы определить ibar_SSB. Если поиск DMRS был завершен, ibar_SSB используется, чтобы сгенерировать ссылочный DMRS, требуемый для оценки канала. Ссылочный DMRS передан оценке канала + eq подсистема наряду с полученными символами PBCH и сопоставлен DMRS.
Оценка канала + eq подсистема выполняет оценку канала с помощью принятых данных и ссылочного DMRS. Оценка канала применяет линейную интерполяцию между местоположениями DMRS в символе OFDM, но не составляет в среднем через время в случае никакого остаточного смещения несущей частоты. Эквализация фазы символов PBCH затем выполняется, сопровождается демодуляцией QPSK и дескремблированием, с помощью ibar_SSB и Lmax, чтобы вычислить последовательность дескремблирования.
Обработка BCH выполняет восстановление уровня, полярное декодирование и декодирование CRC BCH. Подсистема восстановления уровня включает масштабирование сигнала и wordlength сокращение, чтобы подготовить данные к полярному декодированию. Масштабированные, восстановленные с уровня мягкие биты затем передаются NR Полярный блок Decoder, который также выполняет декодирование CRC. Допускать ошибку выходной порт от NR, на который указывает Полярный блок Decoder, было ли декодирование успешно или столкнулось с какими-либо ошибками. Подсистема полезной нагрузки извлечения выполняет дескремблирование и устранение чередования битов полезной нагрузки.
Блок-схема показывает настройку симуляции, реализованную этим примером. Функции 5G Toolbox™ используются, чтобы сгенерировать тестовую форму волны. Код ссылки MATLAB для детектора SSB затем используется, чтобы искать и демодулировать самый сильный SSB в форме волны. Этот результат обеспечивает тестовое воздействие для SSB, декодирующего этап. Тестовые данные передаются и MATLAB и реализациям Simulink, и выходные параметры сравниваются, проверяют операцию модели Simulink.
Используйте runSSBDecodingModel
скрипт, чтобы запустить SSB декодирование симуляции. Скрипт отображает свой прогресс в командной строке MATLAB. Конечные результаты декодирования SSB в MATLAB и Simulink отображены, показав, что они соответствуют точно. Графики силы корреляции поиска DMRS и компенсируемых символов QPSK PBCH показывают, что сигналы из MATLAB и Simulink соответствуют тесно.
runSSBDecodingModel;
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. Demodulating the strongest SSB using the MATLAB reference. Decoding the SSB using the MATLAB reference. MIB successfully decoded by MATLAB reference Decoding the SSB using the Simulink model. Running nrhdlSSBDecoding.slx ### Starting serial model reference simulation build ### Model reference simulation target for nrhdlSSBDecodingCore is up to date. Build Summary 0 of 1 models built (1 models already up to date) Build duration: 0h 0m 2.3755s .......... MIB successfully decoded by Simulink model MATLAB decoded information pbchPayload: 17637376 ssbIndex: 3 hrf: 0 err: 0 mib: [1×1 struct] Simulink decoded information pbchPayload: 17637376 ssbIndex: 3 hrf: 0 err: 0 mib: [1×1 struct] MATLAB decoded MIB parameters NFrame: 0 SubcarrierSpacingCommon: 30 k_SSB: 0 DMRSTypeAPosition: 3 PDCCHConfigSIB1: 164 CellBarred: 0 IntraFreqReselection: 0 Simulink decoded MIB parameters NFrame: 0 SubcarrierSpacingCommon: 30 k_SSB: 0 DMRSTypeAPosition: 3 PDCCHConfigSIB1: 164 CellBarred: 0 IntraFreqReselection: 0
nrhdlMIBRecovery
модель соединяет эти два образца модели для Декодирования SSB и обнаружения SSB (nrhdlSSBDecodingCore
и nrhdlSSBDetectionFR1Core
) создать полное внедрение системы восстановления MIB. Эта модель может использоваться, чтобы восстановить MIB с основополосных форм волны 5G. Скрипт runMIBRecoveryModel
может использоваться, чтобы запустить эту модель и выдержать сравнение со ссылкой MATLAB. Уменьшать время вычислений потребовало, чтобы часть поиска ячейки алгоритма была выполнена в MATLAB затем, если самый сильный SSB был определен, модель Simulink используется, чтобы повторно получить, демодулировать, и декодировать SSB.
Сигнал состояния от детектора используется, чтобы запустить декодер SSB, когда это достигло состояния 8, указав, что демодуляция завершена, SSS был найден, и демодулируемая сетка была выведена. Когда декодер SSB будет иметь демодулируемую сетку и получил сигнал startProcessing, что это будет декодировать SSB, выводя полезную нагрузку PBCH, которая затем анализируется, чтобы извлечь данные о MIB.
Чтобы сгенерировать HDL-код для этого примера, у вас должна быть лицензия HDL Coder™. Используйте makehdl
и makehdltb
команды, чтобы сгенерировать HDL-код и испытательный стенд HDL для nrhdlSSBDecoding/SSB Decoding
или nrhdlMIBRecovery/MIB Recovery
подсистемы. Получившийся HDL-код синтезировался для оценочной платы Xilinx® Zynq®-7000 ZC706. Таблица показывает место сообщения и результаты использования ресурса маршрута. Проект соответствует синхронизации с тактовой частотой 150 МГц.
Использование ресурса для nrhdlSSBDecoding модели:
Resource Usage _______________ _____ Slice Registers 8297 Slice LUTs 11050 RAMB18 8 RAMB36 4 DSP48 37
Использование ресурса для nrhdlMIBRecovery модели:
Resource Usage _______________ _____ Slice Registers 83231 Slice LUTs 40154 RAMB18 17 RAMB36 5 DSP48 245