В этом примере показано, как спроектировать 5G системная модель восстановления сетки ресурса типа 1 (SIB1) блока информации NR, оптимизированная для генерации HDL-кода и аппаратной реализации, и декодировать SIB1 от его выхода.
Модели Simulink®, описанные в этом примере, являются оптимизированными реализациями HDL фиксированной точки восстановления сетки ресурса SIB1 для 5G частотный диапазон 1 (FR1) NR. Этим примером является один из связанного набора, которые показывают рабочий процесс для разработки и развертывания поиска ячейки NR 5G и MIB и алгоритма восстановления SIB1 к оборудованию. Полный рабочий процесс показывают.
Каждый шаг в этом рабочем процессе продемонстрирован одним или несколькими связанными примерами.
Золотой Ссылочный шаг Алгоритма 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.
Восстановление SIB1 требует поиска ячейки, декодирования основного блока информации (MIB), восстановления сетки SIB1 (область сетки ресурса, содержащей CORESET0 и SIB1), и декодирующей PDCCH и PDSCH от сетки SIB1. Этот пример фокусируется на восстановлении сетки SIB1. Процесс восстановления MIB описан в примере Восстановления MIB HDL NR. Итоговые этапы декодирования описаны в Приемнике Нисходящего канала HDL NR Справочный пример MATLAB. Этот пример фокусируется на модели SIB1 Demodulation Simulink и использует ссылку MATLAB, чтобы сгенерировать тестовое воздействие и проверить поведение модели. Как последний шаг, пример показывает модель Simulink что восстановление MIB объединений и демодуляция SIB1, чтобы восстановить сетку SIB1 с основополосной формы волны.
После восстановления MIB содержимое MIB должно анализироваться и использоваться, чтобы определить распределение ресурсов CORESET0 вовремя и частоты. С этим знанием сетка SIB1 может быть OFDM, демодулируемым, когда его случай синхронизации достигнут.
Этот пример использует эти файлы.
Модели Simulink
nrhdlSIB1Demodulation.slx
: Эта модель Simulink использует nrhdlSIB1DemodulationCore
модель - ссылка, чтобы симулировать часть демодуляции сетки SIB1 процесса восстановления SIB1.
nrhdlSIB1GridRecovery.slx
: Эта модель Simulink комбинирует обработку детектора SSB, декодера SSB и демодулятора SIB1 в интегрированную модель, иллюстрирующую полный процесс восстановления сетки SIB1. Эта модель использует nrhdlSSBDetectionFR1Core
, nrhdlSSBDecodingCore
, и nrhdlSIB1DemodulationCore
модели - ссылки.
nrhdlSIB1DemodulationCore.slx
: Эта модель - ссылка реализует алгоритм Демодуляции SIB1.
nrhdlSSBDecodingCore.slx
: Эта модель - ссылка реализует SSB декодирование алгоритма.
nrhdlSSBDetectionFR1Core.slx
: Эта модель - ссылка реализует алгоритм обнаружения SSB.
Словарь данных Simulink
nrhdlReceiverData.sldd
: Этот словарь данных Simulink содержит объекты шины, которые задают шины, содержавшиеся в моделях в качестве примера.
КОД MATLAB
runSIB1DemodulationModel.m
: Этот скрипт использует ссылку MATLAB, чтобы реализовать алгоритм восстановления MIB, затем запускает nrhdlSIB1Demodulation
Модель Simulink. Скрипт проверяет операцию модели с помощью 5G Toolbox™ и кода ссылки MATLAB.
runSIB1GridRecoveryModel.m
: Этот скрипт использует ссылку MATLAB, чтобы выполнить режим поиска алгоритма обнаружения SSB, затем запускает nrhdlSIB1GridRecovery
Модель Simulink, чтобы демодулировать и декодировать SSB, и затем демодулировать сетку SIB1. Скрипт проверяет операцию модели с помощью 5G Toolbox и кода ссылки MATLAB.
nrhdlexamples
: Пакет, содержащий код ссылки MATLAB и служебные функции для проверки моделей реализации.
Этот рисунок показывает nrhdlSIB1Demodulation
модель. Верхний уровень модели читает сигналы из базового рабочего пространства MATLAB, передает их подсистеме Демодуляции SIB1 и записывает выходные параметры обратно к рабочей области.
Подсистема Демодуляции SIB1 содержит экземпляр Input Scaling
подсистема и nrhdlSIB1DemodulationCore
модель - ссылка. Input Scaling
подсистема масштабирует вход на коэффициент 0,875, обеспечивая высоту для последующих этапов обработки. nrhdlSIB1DemodulationCore
алгоритм описан в следующем разделе.
Входные параметры
dataIn: 16-битный сигнал с комплексным знаком со знаком, произведенный в 61.44 членах Шотландского парламента.
validIn: 1-битный управляющий сигнал подтвердить dataIn.
paramsIn: Шина типа SIB1GridParamBus.
запуск: 1-битный управляющий сигнал раньше запускал операцию восстановления сетки SIB1.
clearStatus: Очистите состояние сигнала состояния.
SIB1GridParamBus
ssbFrequencyOffset: 32-битное значение со знаком, задающее смещение частоты, применилось к SSB. Этот сигнал соединяется с NCO с 32-битным аккумулятором. Используйте это уравнение, чтобы преобразовать значение в Гц: ssbFrequencyOffset_Hz = ssbFrequencyOffset * 61.44e6 / 2^32.
ssbTimingOffset: 21-битное значение без знака, которое является смещением синхронизации обнаруженного SSB. Смещение синхронизации находится в выборках в 61.44 членах Шотландского парламента от 0 до 1228799.
scsSSB: 2-битное значение без знака, задающее расстояние между поднесущими (SCS) обнаруженного SSB. Установите этот сигнал на 0 выбирать 15 кГц, или 1, чтобы выбрать 30 кГц.
ssbIndex3Lsb: 3-битное значение без знака, которое является 3 младшими значащими битами индекса SSB.
pbchPayload: 32-битное значение без знака, которое содержит MIB и дополнительный PBCH синхронизация данных.
minChanBW: 2-битное значение без знака, задающее минимальную полосу пропускания канала. Значение 0 указывает, что 5 МГц, 1 указывает, что 10 МГц и 2 указывают на 40 МГц.
ssbPattern: 2-битное значение без знака, задающее шаблон SSB. Значение 0 указывает, что 'Случай', 1 указывает, что 'Случай B', и 2 указывает 'на Случай C'.
Выходные параметры
состояние: 2-битное значение без знака, указывающее на прогресс операции демодуляции SIB1.
выходные данные: 16-битные данные о сетке ресурса SIB1 с комплексным знаком со знаком. Алгоритм выводит 28 символов OFDM сетки SIB1, одного элемента ресурса (RE) на цикл.
validOut: 1-битный управляющий сигнал, который подтверждает выходные данные выход.
coreset0Resources: Шина типа coreset0ResourcesBus.
coreset0Occasion: Шина типа coreset0OccasionBus.
parsedMIB: Шина типа MIBBus.
coreset0ResourcesBus
resourceBlocks: 2-битное значение без знака, задающее количество блоков ресурса. Значение 0 указывает 24, 1 указывает 48, и 2 указывает 96.
ofdmSymbols: 2-битное значение без знака, которое является количеством символов OFDM промежутки CORESET0.
frequencyOffset: 32-битное значение со знаком, задающее относительное смещение частоты от SSB до CORESET0. Этот сигнал соединяется с NCO с 32-битным аккумулятором. Используйте это уравнение, чтобы преобразовать значение в Гц: frequencyOffset_Hz = frequencyOffset * 61.44e6 / 2^32.
coreset0OccasionBus
slotOffset: 5-битное значение без знака, которое является смещением паза от даже голова системы координат к первому проверенному пазу.
firstSymbol: 3-битное значение без знака, задающее первое, заняло символ OFDM в пазе.
MIBBus
sfn: 10-битное значение без знака, которое является системным номером системы координат (SFN).
scsCommon: 1-битное значение без знака, задающее общее расстояние между поднесущими. Значение 0 указывает, что 15 кГц, и 1 указывают на 30 кГц.
Kssb: 5-битное значение без знака, которое является перемещением между SSB и полной сеткой блока ресурса.
drmsTypeAPos: 1-битное значение без знака, задающее положение символа DMRS для типа A выделения PDSCH, где 0 представляет положение 2 и 1, указывает на положение 3.
pdcchConfigSIB1: 8-битное значение без знака, содержащее настройку для CORESET0
cellBarred: 1-битное значение, указывающее, запрещается ли ячейка.
intraFreqReselection: 1-битное значение, указывающее, позволен ли intra повторный выбор частоты.
hrf: 1-битное значение, которое является половиной бита системы координат.
ssbIdx: 3-битное значение, которое является индексом SSB.
Состояния сигнала состояния
0: Начальное состояние. Ожидание импульса запуска.
1: Ожидание случая синхронизации CORESET0.
2: OFDM демодуляция и вывод данных о сетке SIB1.
Эта схема показывает верхний уровень nrhdlSIB1DemodulationCore
модель. Проект работает с данными IQ на уровне 61,44 МГц и требует параметров от успешного восстановления MIB. Сигнал запуска начинает операцию демодуляции SIB1 и может утверждаться, если все входные порты на шине paramsIn допустимы. Необходимо содержать значения на paramsIn константе на время демодуляции.
Первый этап обработки для демодулятора SIB1 является DDC. DDC берет входные данные на уровне 61,44 МГц, выполняет сдвиг частоты, чтобы сосредоточить CORESET0 и затем прореживает к 30,72 МГц с помощью фильтра полуполосы. Выходная частота дискретизации была выбрана, потому что это - минимальная полоса пропускания, требуемая выполнять степень 2 БПФ для максимальных размеров CORESET0 в SCS 15 и 30 кГц.
Демодулятор OFDM берет вход из DDC и выводит сетку SIB1, когда это получает сигнал запуска. Подсистема сконфигурирована, чтобы вычислить переменный БПФ размера с конфигурируемой длиной циклического префикса и защитными поднесущими. Размер БПФ выбран в зависимости от расстояния между поднесущими сетки SIB1. Для SCS 15 используется БПФ с 2048 точками, и для SCS 30 используется БПФ с 1024 точками. Они оба соответствуют частоте дискретизации 30,72 МГц. Длина циклического префикса варьируется во время демодуляции OFDM сетки SIB1 с учетом более длинного циклического подарка символов префикса на контурах полуподкадра. Количество защитных поднесущих используется, чтобы извлечь сетку SIB1 из полной полосы пропускания демодуляции.
DDC и подсистемы демодулятора OFDM требуют, чтобы значения настройки успешно демодулировали сетку SIB1. Эти значения вычисляются из результатов восстановления MIB. Подсистема Config SIB1 создает MIB из полезной нагрузки PBCH и анализирует pdcchSIB1Config
поле, чтобы произвести coreset0Resources
и coreset0TimingOccasion
. coreset0Resources
сигнал содержит смещение частоты от SSB до CORESET0 и полосы пропускания сетки ресурса CORESET0. coreset0TimingOccasion
сигнал содержит смещение паза от даже голова системы координат SFN к первому проверенному пазу т.е. пазу в 2 системных системах координат. Проверенный паз, синхронизирующий подсистему смещения, преобразует coreset0TimingOccasion
смещение паза к подсчету ссылок синхронизации. Шаблон SSB, индекс SSB и SSB, синхронизация ссылки используется для расчета ссылка синхронизации даже голова системы координат SFN, из которой может быть вычислено синхронизирующее ссылочное значение CORESET0. Счетчик ссылки синхронизации, синхронизируемый со ссылками обнаружения SSB, используется, чтобы отследить поток данных SIB1. Если сигнал запуска утверждается, startController ожидает ссылки синхронизации SIB1, чтобы достигнуть целевого смещения, вычисленного проверенным пазом, синхронизирующим подсистему смещения, и затем инициировал демодуляцию OFDM, чтобы начаться. Схема показывает пример ссылок синхронизации для проверенного SSB, даже голова системы координат и случай синхронизации CORESET0. Эти смещения зависят от настройки ячейки передачи.
Блок-схема показывает настройку симуляции, реализованную этим примером. Функции 5G Toolbox используются, чтобы сгенерировать тестовую форму волны. Код ссылки MATLAB затем используется, чтобы выполнить шаги, требуемые для восстановления MIB - поиск SSB, демодуляция и декодирование. Результаты обеспечивают входные данные для этапа демодуляции SIB1. Тот же вход передается и MATLAB и реализациям Simulink демодуляции SIB1, и выходные сетки непосредственно сравнены. simulink сетка проверяется при помощи ссылки MATLAB, чтобы закончить операцию восстановления SIB1 путем декодирования PDCCH и затем PDSCH.
Используйте runSIB1DemodulationModel
скрипт, чтобы запустить симуляцию демодуляции SIB1. Скрипт отображает свой прогресс в командной строке MATLAB и производит графики вводов и выводов для анализа. Испытательный стенд поддерживает несколько случаев симуляции. Полный набор случаев и их параметры, показывают. Этот пример показывает результаты рабочего "SimCase 1". Сетки ресурса, произведенные MATLAB и Simulink, отображены наряду с различием между ними и их относительной среднеквадратической ошибкой (MSE). Это проверяет, что реализация Simulink тесно совпадает со ссылкой MATLAB. Графики сетки помечены, чтобы подсветить декодируемый PDCCH и PDSCH. Заключительный этап скрипта декодирует сетку Simulink SIB1, чтобы гарантировать ее правильность.
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 "SimCase 2" "Case B" 15 100 5 7 8 "SimCase 3" "Case A" 30 4 20 2 8 "SimCase 4" "Case A" 15 84 7 0 4
runSIB1DemodulationModel;
Generating test waveform. Searching for SSBs using MATLAB reference. Demodulating the strongest SSB using MATLAB reference. Decoding the demodulated SSB using MATLAB reference. Demodulating the SIB1 grid using MATLAB reference. Demodulating the SIB1 grid using Simulink model. Running nrhdlSIB1Demodulation.slx ### Starting serial model reference simulation build ### Successfully updated the model reference simulation target for: nrhdlSIB1DemodulationCore Build Summary Simulation targets built: Model Action Rebuild Reason ============================================================================================================== nrhdlSIB1DemodulationCore Code generated and compiled nrhdlSIB1DemodulationCore_msf.mexa64 does not exist. 1 of 1 models built (0 models already up to date) Build duration: 0h 1m 23.925s .......... MATLAB and Simulink grids relative MSE : -60.7415 dB PDCCH RMS EVM: 0.611% DCI successfully decoded from Simulink grid. SIB1 successfully decoded from Simulink grid.
nrhdlSIB1GridRecovery
модель комбинирует модель демодуляции SIB1 (nrhdlSIB1DemodulationCore
) с этими двумя образцами модели для Декодирования SSB и Обнаружения SSB (nrhdlSSBDecodingCore
и nrhdlSSBDetectionFR1Core
) создать полное внедрение системы восстановления сетки SIB1. Эта модель может использоваться, чтобы восстановить сетку SIB1 с основополосных форм волны 5G.
Используйте runSIB1GridRecoveryModel
скрипт, чтобы запустить эту модель и выдержать сравнение со ссылкой MATLAB. Чтобы ускорить симуляцию, часть поиска ячейки алгоритма выполняется в MATLAB. Если самый сильный SSB был определен, simulink модель используется, чтобы повторно получить, демодулировать и декодировать SSB, и затем сетка SIB1 демодулируется.
Сигналы состояния от детектора SSB и декодера используются, чтобы указать значения, требуемые демодулятором SIB1. Когда bchStatus достигает состояния 4, указывая, что успешный MIB декодирует, обработка демодуляции SIB1 запускается. Если случай синхронизации достигнут, сетка SIB1 является демодулируемым OFDM и выход.
Чтобы сгенерировать HDL-код для этого примера, у вас должен быть продукт HDL Coder™. Используйте makehdl
и makehdltb
команды, чтобы сгенерировать HDL-код и испытательный стенд HDL для nrhdlSIB1Demodulation/SIB1 Demodulation
или nrhdlSIB1GridRecovery/SIB1 Grid Recovery
подсистемы. Получившийся HDL-код синтезировался для оценочной платы Xilinx® Zynq®-7000 ZC706. Таблица показывает место сообщения и результаты использования ресурса маршрута. Проект соответствует синхронизации с тактовой частотой 150 МГц.
Использование ресурса для nrhdlSIB1Demodulation модели:
Resource Usage _______________ _____ Slice Registers 11843 Slice LUTs 6877 RAMB18 19 RAMB36 6 DSP48 33
Использование ресурса для nrhdlSIB1GridRecovery модели:
Resource Usage _______________ _____ Slice Registers 94857 Slice LUTs 46916 RAMB18 36 RAMB36 11 DSP48 276
Чтобы развернуть nrhdlSIB1GridRecovery модель в аппаратную платформу и восстановить SIB1 с от воздушных сигналов, см. Развернуть Примеры готовых узлов HDL NR на примере SoCs.