В этом примере показано, как смоделировать поиск ячейки NR 5G и аппаратный алгоритм восстановления MIB в MATLAB как шаг к разработке реализации HDL Simulink. Используйте эту ссылку MATLAB, чтобы проверить модели Simulink в Поиске Ячейки HDL NR и примерах Восстановления MIB HDL NR.
Поиск Ячейки HDL NR и Восстановление MIB, которое Справочный пример MATLAB устраняет разрыв между математическим алгоритмом и его аппаратной реализацией путем обеспечения модели MATLAB алгоритмов, которые реализованы в оборудовании. Ссылка MATLAB создается, чтобы оценить благоприятные для оборудования алгоритмы и сгенерировать тестовые векторы для проверки реализации HDL Simulink. Эти связанные примеры показывают рабочий процесс для разработки и развертывания поиска ячейки 5G и алгоритма восстановления MIB к оборудованию.
Поиск Ячейки NR и MIB и Восстановление SIB1 (5G Toolbox): MATLAB золотая ссылка алгоритма с плавающей точкой.
Поиск Ячейки HDL NR и Восстановление MIB Ссылка MATLAB (этот пример): руководство по аппаратным средствам MATLAB, которое моделирует благоприятные для оборудования алгоритмы и генерирует тестовые формы волны. Этот код MATLAB работает с векторами и матрицами выборок данных с плавающей точкой и не поддерживает генерацию HDL-кода.
Поиск Ячейки HDL NR: модель Simulink ячейки 5G ищет подсистему, которая использует тот же алгоритм в качестве ссылки MATLAB. Эта модель работает со скалярными данными фиксированной точки и оптимизирована для генерации HDL-кода.
Восстановление MIB HDL NR: Добавляет восстановление MIB к модели поиска ячейки с помощью того же алгоритма в качестве ссылки MATLAB. Эта модель работает со скалярными данными фиксированной точки и оптимизирована для генерации HDL-кода.
5G Восстановление MIB NR Используя Аналоговые устройства AD9361/AD9364 (Пакет Поддержки Communications Toolbox для Xilinx Находящееся в Zynq Радио): модель Simulink, которая сконфигурирована для развертывания на SoC.
Для общего описания того, как MATLAB и Simulink могут использоваться вместе, чтобы разработать развертываемые модели, см. Проект Радиосвязей для FPGAs и ASICs.
Блок-схему поиска ячейки и алгоритм восстановления MIB показывают. Алгоритм обнаруживает, демодулирует и декодирует 5G блоки сигнала синхронизации NR (SSBs) и является благоприятной для оборудования версией соответствующих шагов в Поиске Ячейки NR и MIB и Восстановлении SIB1 (5G Toolbox) пример. В верхнем уровне алгоритм состоит из Поискового Контроллера, Детектора SSB и Декодера SSB. Этот пример объясняет каждый из этих блоков более подробно и демонстрирует соответствующие функции ссылки MATLAB, которые используются, чтобы исследовать алгоритмы для аппаратной реализации и проверить модели Simulink фиксированной точки потоковой передачи.
Поиск ячейки состоит из восстановления несущей частоты, поиска Первичного сигнала синхронизации (PSS), демодуляции OFDM и поиска Вторичного сигнала синхронизации (SSS). Поисковый Контроллер и Детектор SSB работают совместно, чтобы выполнить эти шаги обработки. Детектор SSB выполняет все высокоскоростные задачи обработки сигналов, делание его хорошо подошло для реализации ASIC или FPGA. Поисковый Контроллер координирует поиск и действует под низкий процент, делание его хорошо подошло для реализации программного обеспечения встраиваемому процессору.
Алгоритм начинает при помощи PSS искать SSBs с интервалами поднесущей 15 кГц и 30 кГц через область значений крупных смещений частоты. Интервал поднесущей и крупные области значений поиска смещения частоты конфигурируемы. Если SSBs обнаруживаются, приемник OFDM демодулирует сетку ресурса SSB с самым сильным PSS и определяет его ячейку ID с помощью SSS. Остаточное прекрасное смещение частоты корректируется во время фазы демодуляции OFDM.
Детектор SSB: Поиски и OFDM-демодулируют SSBs при данном смещении несущей частоты и интервале поднесущей и измеряют остаточное прекрасное смещение несущей частоты.
Цифровой вниз конвертер (DDC): Выполняет перевод частоты, чтобы откорректировать смещения частоты в полученной форме волны и затем десятикратно уменьшает сигнал от 61.44 членов Шотландского парламента 7.68 членам Шотландского парламента.
Поиск PSS: Поиски символов PSS в форме волны.
Демодуляция OFDM: OFDM-демодулирует сетку ресурса SSB.
Поиск SSS: Поиски SSS и определяют полную ячейку ID.
Поисковый Контроллер: Координирует поиск ячейки путем направления Детектора SSB, чтобы искать символы PSS при различных крупных смещениях частоты и интервалах поднесущей и демодулировать SSB с самым сильным PSS.
В ссылке MATLAB, nrhdlexamples.cellSearch
функционируйте реализует алгоритм поиска ячейки. Эта функция реализует Поисковый Контроллер, показанный в схеме, и вызывает nrhdlexamples.ssbDetect
функция, которая реализует Детектор SSB. Пример Поиска Ячейки HDL NR показывает фиксированной точке потоковой передачи реализацию HDL Simulink Детектора SSB. В 5G Восстановление MIB NR Используя Аналоговые устройства AD9361/AD9364 (Пакет Поддержки Communications Toolbox для Xilinx Находящееся в Zynq Радио) пример, Детектор SSB реализован в программируемой логике, в то время как Поисковый Контроллер реализован в программном обеспечении в интегрированной системе обработки.
Поисковый Диспетчер ответственен за координирование полного поиска. Алгоритм выполняет эти шаги.
Для каждого интервала поднесущей продвиньтесь посредством каждого крупного смещения частоты и используйте Детектор SSB, чтобы искать SSBs, пока один или несколько не будет обнаружен. Крупный размер шага смещения частоты является половиной интервала поднесущей. Когда SSBs обнаруживаются на данной частоте, записывают остаточное прекрасное смещение несущей частоты самого сильного SSB, который возвращен.
Переместитесь в следующий крупный шаг частоты и ищите SSBs снова. Если поиск обнаруживает SSBs, выберите крупное смещение частоты, которое привело к самому маленькому прекрасному измерению смещения частоты. В противном случае выберите последнее крупное смещение частоты.
Вычислите общую частоту, возмещенную путем добавления крупных и прекрасных смещений частоты вместе.
Используйте Детектор SSB, чтобы откорректировать смещение частоты и выполнить еще один поиск SSBs.
Выберите SSB с самой сильной корреляцией PSS. Используйте Детектор SSB в режиме демодуляции, чтобы найти и демодулировать SSB и определить его ячейку ID.
Эти схемы показывают структуру Детектора SSB и параметры, и данные передали и от Поискового Диспетчера. Детектор SSB подразделен на две функции: DDC Детектора SSB (nrhdlexamples.ssbDetectDDC
) и SSB Detection Search и Demod (nrhdlexamples.ssbDetectSearchDemod
). DDC принимает выборки в 61.44 членах Шотландского парламента и выполняет сдвиг частоты, сопровождаемый децимацией на коэффициент 8 полуленточных фильтров использования. Смещение частоты, в Гц, обеспечивается поисковым контроллером и используется алгоритмом, чтобы компенсировать и крупные и прекрасные смещения частоты.
SSB Detection Search и Demod принимает выборки в 7.68 членах Шотландского парламента. Для интервала поднесущей на 30 кГц это использует выборки на этом уровне. Для интервала поднесущей на 15 кГц это десятикратно уменьшает вход на коэффициент два, действующий в 3.84 членах Шотландского парламента. SSB Detection Search и Demod имеет два режима работы: поиск и демодуляция.
В режиме поиска функция ищет SSBs при заданной разрядке поднесущей с помощью PSS и возвращает список обнаруженных. Для каждого SSB, который найден, функция возвращает эти параметры:
NCellID2: Указывает, какая из трех возможных последовательностей PSS (0,1, или 2) была обнаружена.
синхронизация смещения: смещение синхронизации от запуска формы волны к запуску SSB.
прекрасная частота возместила: остаточное прекрасное смещение частоты в Гц, измеренном при помощи циклических префиксов всех четырех символов OFDM в SSB.
сила корреляции: измеренный уровень корреляции PSS.
энергия сигнала: полная энергия в выборках, в которых был обнаружен PSS.
В режиме демодуляции функция пытается найти определенный SSB при помощи своего смещения синхронизации и NCellID2. Если функция находит заданный PSS, приемник OFDM демодулирует сетку ресурса SSB и пытается обнаружить свой SSS. В режиме демодуляции функция возвращает эти результаты.
Обновленные параметры только для заданного SSB, если PSS найден.
Демодулируемая сетка ресурса SSB, если PSS найден.
Ячейка ID, если SSS найден.
Демодулятор OFDM использует БПФ с 256 точками, чтобы демодулировать сетку ресурса SSB, которая содержит 240 активных поднесущих.
Использование алгоритма поиска ячейки, синхронизирующее смещения, чтобы идентифицировать положения в полученной форме волны и промежуточных сигналах. Смещение синхронизации является количеством выборок от запуска формы волны к данной позиции, таких как запуск SSB. Синхронизирующие смещения даны в выборках в 61.44 членах Шотландского парламента и переносят каждые 20 мс, или 1 228 800 выборок. В 5G NR UEs может принять, что пакетная периодичность SS составляет 20 мс или меньше в целях поиска ячейки, следовательно причина этого выбора синхронизации ссылочной периодичности.
Рисунок показывает две формы волны 5G с различными пакетными периодичностями SS (5 мс и 20 мс) и ссылка синхронизации приемника. Ссылка MATLAB может обнаружить SSBs в любом положении в полученной форме волны. Однако, если форма волны более длинна, чем 20 мс, неоднозначность в возвращенных смещениях синхронизации существует, потому что ссылка синхронизации переносит каждые 20 мс. Кроме того, приемник может демодулировать только SSBs, которые начинаются в первых 20 мс формы волны.
Схема показывает структуру декодера SSB, который реализован nrhdlexamples.ssbDecode
функция. Алгоритм берет сетку ресурса SSB из фазы демодуляции OFDM детектора SSB, обрабатывает его через PBCH и декодирование BCH, и параметры выходных параметров MIB и время выполнения PBCH.
Декодирующий PBCH берет демодулируемые символы OFDM сетки ресурса и процессов с помощью этих шагов:
Поиск DMRS: Поиски индекса использовали для символа ссылки демодуляции (DMRS) генерацию
Оценка канала: Вычисляет оценку канала с помощью DMRS
Эквализация канала: Компенсирует полученные данные с помощью оценки канала
Символ Demod: Выполняет демодуляцию QPSK, чтобы получить мягкие биты PBCH
Дескремблирование: Дескремблирует мягкие биты
BCH Декодируют, затем обрабатывает дескремблированные мягкие биты, чтобы восстановить данные о MIB с помощью этих шагов:
Восстановление уровня: Объединения повторили, что мягкие биты затем выполняют масштабирование и квантование
Полярное Декодирование + CRC: Выполняет полярное декодирование, чтобы заставить биты сообщения и декодирование CRC проверять ошибки
Синтаксический анализ сообщения MIB: Интерпретирует декодируемые биты сообщения, чтобы произвести параметр MIB выходные параметры
Этот раздел показывает, как использовать функции ссылки MATLAB, чтобы искать SSBs в форме волны.
Используйте nrhdlexamples.generateSSBurstWaveform
функция, чтобы сгенерировать пакетную форму волны SS. Эта функция основана на Блоках Сигнала Синхронизации и Пакетах (5G Toolbox) пример. Пакет имеет эти параметры.
Шаблон SSB является случаем B
Интервал поднесущей составляет 30 кГц
NCellID 249
Активный SSBs в пакете равняется 8
rng('default');
[rxWaveform,txGrid,txMIB] = nrhdlexamples.generateSSBurstWaveform();
Постройте сетку ресурса пакетной формы волны. Амплитуда каждого элемента ресурса обозначается его цветом. График показывает восемь SSBs. SSBs сгенерированы с различными уровнями мощности к модели, что обычно получает UE.
figure(1); clf; imagesc(abs(txGrid)); colorbar; axis xy; xlabel('OFDM symbol'); ylabel('Subcarrier'); title('SS Burst - Block Pattern Case B');
Используйте nrhdlexamples.ssbDetect
функционируйте, чтобы найти SSBs в форме волны путем поиска символов PSS. Этот пример вызывает функцию с крупной оценкой смещения несущей частоты нуля и интервалом поднесущей 30. Функция корректирует крупное смещение частоты и измеряет остаточное прекрасное смещение частоты каждого SSB. Ввод и вывод смещения частоты, дают в Гц. Функция возвращает список обнаруженных символов PSS как массив структур. Отобразите содержимое массива структур путем преобразования его в таблицу.
FoCoarse = 0; scs = 30; [pssList,diagnostics] = nrhdlexamples.ssbDetect(rxWaveform,FoCoarse,scs); disp(struct2table(pssList));
NCellID2 timingOffset pssCorrelation pssEnergy frequencyOffset ________ ____________ ______________ _________ _______________ 0 6608 0.69435 0.70703 7 0 15376 1.3933 1.4119 -51 0 32944 0.43994 0.44712 -207 0 41712 7.1226 7.2182 -154 0 68048 0.84535 0.88463 204 0 76816 2.1805 2.245 140 0 94384 0.2794 0.28375 488 0 1.0315e+05 0.8552 0.89668 132
nrhdlexamples.ssbDetect
функционируйте также возвращает структуру, содержащую диагностические сигналы. Используйте этот выход, чтобы построить результаты корреляции PSS. Каждый пик в корреляторе вывел показанный, соответствует записи в списке PSS.
figure(2); clf;
nrhdlexamples.plotUtils.PSSCorrelation(diagnostics,'PSS Correlation');
Используйте nrhdlexamples.ssbDetect
функция, чтобы OFDM-демодулировать один из SSBs и делать попытку обнаружения SSS. Для этой операции вызовите функцию с дополнительным 4-м аргументом, который задает смещение синхронизации и NCellID2 желаемого SSB. Этот пример выбирает PSS с самой высокой метрикой корреляции, однако можно выбрать любой из обнаруженных SSBs. Откорректируйте частоту, возмещенную путем передачи в сумме крупных и прекрасных оценок смещения частоты.
[~,maxCorrIdx] = max(vertcat(pssList.pssCorrelation)); chosenPSS = pssList(maxCorrIdx); FoFine = chosenPSS.frequencyOffset; FoEst = FoCoarse + FoFine; [ssBlockInfo,ssGrid,diagnostics] = nrhdlexamples.ssbDetect(rxWaveform,FoEst,scs,chosenPSS);
В режиме демодуляции функция возвращает три выходных параметра вместо два. ssBlockInfo
структура содержит более подробную информацию SSB, такую как сила корреляции SSS и полная ячейка ID. ssGrid
выход является матрицей, содержащей демодулируемые символы OFDM. Отобразите информацию SSB, чтобы подтвердить, что ячейка ID правильно декодируется.
disp(ssBlockInfo);
NCellID2: 0 timingOffset: 41712 pssCorrelation: 7.1219 pssEnergy: 7.2185 NCellID1: 83 sssCorrelation: 7.1383 sssEnergy: 7.1743 NCellID: 249 frequencyOffset: 0
Отобразите получившуюся сетку ресурса.
figure(3); clf; imagesc(abs(ssGrid)); colorbar; axis xy; xlabel('OFDM symbol'); ylabel('Subcarrier'); title('Rx Resource Grid');
diagnostics
выведите включает результаты корреляции SSS для всех 336 возможных последовательностей. Постройте результаты корреляции SSS.
figure(4); clf;
nrhdlexamples.plotUtils.SSSCorrelation(diagnostics,'SSS Correlation')
Этот раздел показывает, как использовать nrhdlexamples.cellSearch
функционируйте, чтобы искать и демодулировать SSBs, когда смещение частоты и интервал поднесущей не будут известны. Аналогичный описанному ранее, nrhdlexamples.cellSearch
функция основывается на nrhdlexamples.ssbDetect
функция путем добавления поискового контроллера, который ищет SSBs при различных интервалах поднесущей и смещениях частоты.
Примените смещение частоты, чтобы протестировать крупную и прекрасную функциональность восстановления частоты.
Fo = 10000; t = (0:length(rxWaveform)-1).'/61.44e6; rxWaveformFo = rxWaveform .* exp(1i*2*pi*Fo*t);
Задайте конечные точки частотного диапазона и поднесущую, располагающую пространство поиска с интервалами, и вызовите nrhdlexamples.cellSearch
функция. Функциональная информация об отображениях о поисковом прогрессе, когда это запускается. Конечные точки частотного диапазона должны быть множителями половины максимального интервала поднесущей.
frequencyRange = [-30 30]; subcarrierSpacings = [15 30]; [ssBlockInfo,ssGrid] = nrhdlexamples.cellSearch(rxWaveformFo,frequencyRange,subcarrierSpacings,struct(... 'DisplayPlots',false,... 'DisplayCommandWindowOutput',true));
Searching for PSS (subcarrierSpacing: 15 kHz, frequencyOffset: -30 kHz) Searching for PSS (subcarrierSpacing: 15 kHz, frequencyOffset: -22.5 kHz) Searching for PSS (subcarrierSpacing: 15 kHz, frequencyOffset: -15 kHz) Searching for PSS (subcarrierSpacing: 15 kHz, frequencyOffset: -7.5 kHz) Searching for PSS (subcarrierSpacing: 15 kHz, frequencyOffset: 0 kHz) Searching for PSS (subcarrierSpacing: 15 kHz, frequencyOffset: 7.5 kHz) Searching for PSS (subcarrierSpacing: 15 kHz, frequencyOffset: 15 kHz) Searching for PSS (subcarrierSpacing: 15 kHz, frequencyOffset: 22.5 kHz) Searching for PSS (subcarrierSpacing: 15 kHz, frequencyOffset: 30 kHz) Searching for PSS (subcarrierSpacing: 30 kHz, frequencyOffset: -30 kHz) Searching for PSS (subcarrierSpacing: 30 kHz, frequencyOffset: -15 kHz) Searching for PSS (subcarrierSpacing: 30 kHz, frequencyOffset: 0 kHz) ... PSS detected. Searching for PSS (subcarrierSpacing: 30 kHz, frequencyOffset: 15 kHz) ... PSS detected. Found PSS with (subcarrierSpacing: 30 kHz, frequencyOffsetEstimate: 9846 Hz) Correcting frequency offset and searching for PSS again. Found the following PSS symbols: NCellID2 timingOffset pssCorrelation pssEnergy frequencyOffset ________ ____________ ______________ _________ _______________ 0 6608 0.69422 0.70705 161 0 15376 1.3933 1.412 103 0 32944 0.43981 0.44714 -53 0 41712 7.1219 7.2185 0 0 68048 0.84567 0.88466 358 0 76816 2.1812 2.2451 294 0 94384 0.2793 0.28376 642 0 1.0315e+05 0.85524 0.89673 286 Strongest PSS: NCellID2: 0 timingOffset: 41712 pssCorrelation: 7.1219 pssEnergy: 7.2185 frequencyOffset: 0 Attempting to reacquire strongest PSS and demodulate the corresponding SS block. NCellID2: 0 timingOffset: 41712 pssCorrelation: 7.1219 pssEnergy: 7.2185 NCellID1: 83 sssCorrelation: 7.1383 sssEnergy: 7.1743 NCellID: 249 frequencyOffset: 9846 subcarrierSpacing: 30 Cell search summary: Subcarrier spacing: 30 kHz Frequency offset: 9846 Hz Timing offset: 41712 NCellID: 249
Как показано в сводных данных, приемник возвратил правильный интервал поднесущей 30 кГц, ячейку ID 249, и измеренное смещение частоты близко к ожидаемому значению 10 кГц.
Используйте nrhdlexamples.ssbDecode
функционируйте, чтобы декодировать сетку ресурса и восстановить MIB. nrhdlexamples.ssbDecode
функция основана на BCH декодирование этапов Поиска Ячейки NR и MIB и Восстановления SIB1 (5G Toolbox) пример.
[mibInfo,decodeDiags] = nrhdlexamples.ssbDecode(ssGrid,ssBlockInfo.NCellID,8);
Постройте peaks корреляции для поиска DMRS. Поиск DMRS выполняется, чтобы определить ibar_ssb и индекс SSB.
figure(5); clf; plot(0:7,decodeDiags.dmrsCorr); title('DMRS Search Correlation'); xlabel('ibar ssb'); ylabel('Correlation strength');
Постройте созвездие QPSK PBCH после эквализации фазы.
figure(6); clf; plot(decodeDiags.qpskSymb,'o'); title('PBCH Symbol Constellation'); xlabel('In-phase'); ylabel('Quadrature');
Отобразите декодируемую информацию и сравните переданные и полученные структуры MIB. Они заканчиваются, показывают, что информация успешно декодировалась.
disp(['BCH CRC: ' num2str(mibInfo.err) newline]); disp('Decoded information'); disp(mibInfo); disp('Decoded MIB'); disp(mibInfo.mib); disp('Expected MIB'); disp(txMIB);
BCH CRC: 0 Decoded information pbchPayload: 218103952 ssbIndex: 3 hrf: 0 err: 0 mib: [1x1 struct] Decoded MIB NFrame: 105 SubcarrierSpacingCommon: 30 k_SSB: 0 DMRSTypeAPosition: 2 PDCCHConfigSIB1: 0 CellBarred: 0 IntraFreqReselection: 0 Expected MIB NFrame: 105 SubcarrierSpacingCommon: 30 k_SSB: 0 DMRSTypeAPosition: 2 PDCCHConfigSIB1: 0 CellBarred: 0 IntraFreqReselection: 0