Поиск ячейки HDL NR

Этот пример показывает проект подсистемы поиска ячейки NR 5G, оптимизированной для генерации HDL-кода и аппаратной реализации.

Введение

Модель Simulink®, описанная в этом примере, является оптимизированной HDL реализацией детектора блока сигнала синхронизации (SSB) для 5G частотный диапазон 1 (FR1) NR. Этим примером является один из связанного набора, которые показывают рабочий процесс для разработки и развертывания поиска ячейки NR 5G и алгоритма восстановления MIB к оборудованию. Полный рабочий процесс показывают.

Каждый шаг в этом рабочем процессе продемонстрирован одним или несколькими связанными примерами.

  1. Золотой Ссылочный шаг Алгоритма MATLAB состоит из Поиска Ячейки NR и MIB и Восстановления SIB1 (5G Toolbox) пример, который показывает золотой ссылочный алгоритм с плавающей точкой.

  2. Шаг Алгоритма Руководства по аппаратным средствам MATLAB состоит из Приемника Нисходящего канала HDL NR Справочный пример MATLAB, который моделирует благоприятные для оборудования алгоритмы и генерирует тестовые формы волны. Этот код MATLAB® работает с векторами и матрицами выборок данных с плавающей точкой и не поддерживает генерацию HDL-кода.

  3. Шаг Модели Реализации Фиксированной точки Simulink состоит из нескольких примеров. Пример Поиска Ячейки HDL NR (этот пример) демонстрирует, что ячейка 5G ищет Подсистему Simulink, которая использует тот же алгоритм в качестве ссылки MATLAB. Пример Восстановления MIB HDL NR добавляет декодирование канала телевизионного вещания и подсистему восстановления MIB. Пример NR HDL SIB1 Восстановления добавляет подсистему, которая восстанавливает сетку ресурса SIB1 и показывает, как декодировать ее выход с помощью кода ссылки MATLAB. Восстановление MIB HDL NR для примера FR2 показывает поиск ячейки и модели восстановления MIB, которые были расширены, чтобы поддержать FR2. Эти модели работают с данными фиксированной точки и оптимизированы для генерации HDL-кода.

  4. Шаг модели развертывания Simulink SoC состоит из Развернуть Примеров готовых узлов HDL NR на примерах SoCs, которые основываются на моделях реализации фиксированной точки и используют пакеты аппаратной поддержки, чтобы развернуть алгоритмы на оборудовании.

Для общего описания того, как MATLAB и Simulink могут использоваться вместе, чтобы разработать развертываемые модели, см. Проект Радиосвязей для FPGAs и ASICs.

Блок-схема детектора SSB показана на рисунке. Детектор выполняет все высокоскоростные задачи обработки сигналов, сопоставленные с алгоритмом поиска ячейки, поэтому хорошо подходит для реализации ASIC или FPGA. Детектор SSB ищет SSBs вовремя при данном смещении частоты и расстоянии между поднесущими. Это спроектировано, чтобы использоваться в качестве части большей системы, которая реализует восстановление смещения несущей частоты и обнаружение расстояния между поднесущими. Контроллер должен использоваться координата полный поиск ячейки как показано в 5G Восстановление MIB NR Используя Аналоговые устройства AD9361/AD9364 (Пакет поддержки Communications Toolbox для Xilinx Находящееся в Zynq Радио) пример.

Детектор SSB выполняет поиск первичной последовательности синхронизации (PSS), демодуляцию ортогонального мультиплексирования деления частоты (OFDM) и поиск вторичной последовательности синхронизации (SSS). Это также включает цифровой вниз конвертер (DDC) для исправления смещений частоты в полученном сигнале. Детектор SSB имеет два режима работы, поиск и демодуляцию, которые продемонстрированы в этом примере. В режиме поиска детектор ищет SSBs и возвращает их параметры. В режиме демодуляции восстанавливается детектор, заданный 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 и служебные функции для проверки моделей реализации.

Модель поиска ячейки HDL NR

Этот рисунок показывает nrhdlSSBDetection модель. Верхний уровень сигналов чтений модели от базового рабочего пространства MATLAB, передает их подсистеме Обнаружения SSB и записывает выходные параметры обратно к рабочей области. Используйте runSSBDetectionModelSearch и runSSBDetectionModelDemod скрипты, чтобы запустить модель и постобработать выходные параметры.

Интерфейс обнаружения SSB

Подсистема Обнаружения SSB содержит экземпляр Input Scaling подсистема и nrhdlSSBDetectionFR1Core модель - ссылка. Input Scaling подсистема масштабирует вход на коэффициент 0,875, обеспечивая высоту для последующих этапов обработки. nrhdlSSBDetectionFR1Core алгоритм описан в следующем разделе.

Входные параметры

  • dataIn: 14-битный сигнал с комплексным знаком со знаком, произведенный в 61.44 членах Шотландского парламента.

  • validIn: 1-битный управляющий сигнал подтвердить dataIn.

  • frequencyOffset: 32-битное значение со знаком, задающее смещение частоты, которое будет откорректировано. Этот сигнал соединяется с NCO с 32-битным аккумулятором. Используйте это уравнение, чтобы преобразовать значение в Гц: frequencyOffset_Hz = frequencyOffset * 61.44e6 / 2^32.

  • subcarrierSpacing: 2-битное значение без знака, задающее расстояние между поднесущими. Установите этот сигнал на 0 выбирать 15 кГц, или 1, чтобы выбрать 30 кГц.

  • режим: 1-битное значение без знака, задающее режим работы. Установите этот сигнал на 0 для режима поиска, или 1 для demod режима.

  • timingOffset: 21-битное значение без знака, задающее смещение синхронизации запуска SSB, который будет демодулироваться. Задайте смещение синхронизации в выборках в 61.44 членах Шотландского парламента, от 0 до 1228799. Этот параметр применяется только для demod режима.

  • NCellID2: 2-битное значение без знака, задающее PSS (0, 1, или 2) SSB, который будет демодулироваться. Этот параметр применяется только для demod режима.

  • запуск: 1-битный управляющий сигнал раньше запускал операцию поиска или демодуляции. Чтобы запустить операцию, установите frequencyOffset, subcarrierSpacing, режим, timingOffset, и NCellID2 к требуемым значениям и установите, запускаются к 1 (TRUE) для одного или нескольких циклов. Если операция уже происходит, та операция отменяется, когда запуск установлен в 1 (TRUE). Новая операция начинается, когда запуск возвращен в 0 (FALSE).

Выходные параметры

  • состояние: 4-битное значение без знака, которое указывает на прогресс текущей операции. Смотрите следующий раздел для возможных значений этого сигнала.

  • pssNCellID2: 2-битное значение без знака, которое является PSS (0, 1 или 2) обнаруженного SSB.

  • pssTimingOffset: 21-битное значение без знака, которое является смещением синхронизации обнаруженного SSB. Смещение синхронизации находится в выборках в 61.44 членах Шотландского парламента от 0 до 1228799.

  • pssFrequencyOffset: 32-битное значение со знаком, которое является смещением частоты обнаруженного SSB. Этот сигнал имеет те же модули как вход frequencyOffset.

  • pssCorrelation: 32-битное значение без знака, которое является силой корреляции PSS.

  • pssThreshold: 32-битное значение без знака, которое является пороговым значением, когда PSS был обнаружен.

  • NCellID: 10-битное значение без знака, которое является ячейкой ID демодулируемого SSB. Это значение возвращено только в demod режиме.

  • sssCorrelation: 32-битное значение без знака, которое является силой корреляции SSS. Этот сигнал возвращен только в demod режиме.

  • sssThreshold: 32-битное значение без знака, которое является порогом SSS. Это значение возвращено только в demod режиме.

  • reportValid: 1-битный управляющий сигнал. В режиме поиска этот сигнал подтверждает pssNCellID2, pssTimingOffset, pssFrequencyOffset, pssCorrelation, и pssThreshold для каждого PSS, который обнаруживается. В demod режиме этот сигнал также подтверждает NCellID, sssCorrelation, и sssThreshold. В demod режиме sssCorrelation и sssThreshold только допустимы, если заданный SSB был найден с помощью его PSS, и NCellID только допустим, если SSS был обнаружен.

  • griddata: 16-битные комплексные числа со знаком, которые являются данными о сетке ресурса. Приемник возвращает все четыре символа сетки ресурса SSB. Значения возвращены один элемент ресурса за один раз. Сетка ресурса только возвращена в demod режиме.

  • gridValid: 1-битный управляющий сигнал, который подтверждает gridData выход. Данные только возвращены, если заданный SSB был найден с помощью его PSS. Этот сигнал возвращен только в demod режиме.

  • диагностика: Соедините шиной содержащий диагностические сигналы.

Состояния сигнала состояния

  • 0: Неактивный - начальное состояние. Ожидание первого импульса запуска.

  • 1: Режим поиска - Поиск PSS.

  • 2: Режим поиска - завершенная Операция, никакой PSS не найден.

  • 3: Режим поиска - завершенная Операция, нашел один или несколько PSSs.

  • 4: Режим Demod - Ожидающий заданной синхронизации PSS возмещен.

  • 5: Режим Demod - завершенная Операция, PSS, не найденный.

  • 6: Режим Demod - Найденный заданный PSS. Демодуляция сетки ресурса и поиск SSS.

  • 7: Режим Demod - завершенная Операция, никакой SSS не найден. Возвращенная демодулируемая сетка ресурса.

  • 8: Режим Demod - Операция полный, найденный SSS. Возвращенная демодулируемая сетка ресурса.

Структура модели - ссылки обнаружения SSB

Эта схема показывает верхний уровень nrhdlSSBDetectionFR1Core модель. Входной сигнал (dataIn) является 16-битными данными с комплексным знаком со знаком, произведенными в 61.44 членах Шотландского парламента. DDC корректирует смещение частоты и десятикратно уменьшает выборки восемь (7.68 членам Шотландского парламента) при помощи фильтров полуполосы. Выход DDC является входом к подсистеме Search и Demod SSB. Блок Detection Status отслеживает прогресс и генерирует состояние выход.

Поиск SSB и структура подсистемы Demod

Подсистема Search и Demod SSB выполняет обнаружение SSB и демодуляцию. Его внутренняя частота дискретизации варьируется в зависимости от расстояния между поднесущими (SCS). Подсистема использует 7.68 членов Шотландского парламента для SCS на 30 кГц и 3.84 членов Шотландского парламента для SCS на 15 кГц. Логика выбора расстояния между поднесущими слева ответственна за изменение частоты дискретизации. Уровень может измениться только, когда новая операция инициирована входом запуска.

Приемник имеет внутреннюю синхронизирующую ссылочную систему, которая следит за ходом времени при помощи счетчиков в ключевых пунктах в datapath. Периоды подсчетов ссылок синхронизации 20 мс - принятая периодичность SSB для ячейки ищет, как задано 5G стандарт NR. Время измеряется в выборках в 61.44 членах Шотландского парламента по модулю 1228800, чтобы создать период на 20 мс. Поскольку фактическая частота дискретизации является или 7.84 членами Шотландского парламента или 3.84 членами Шотландского парламента, шагом счетчиков ссылки синхронизации или 8 или 16, соответственно, для каждой выборки. Когда новая операция инициирована входом запуска, Контроллер Запуска записывает время начала и передает время другим ссылкам синхронизации в модели. Этот сигнал говорит другие ссылки синхронизации, когда новое расстояние между поднесущими и соответствующая частота дискретизации применяются. Другие ссылки синхронизации ожидают до времени начала прежде, чем изменить их шаг. Этот проект возможен только потому, что аппаратная задержка означает, что другие ссылки синхронизации отстают от Контроллера Запуска. Эта архитектура позволяет приемнику последовательно следить за ходом времени, даже когда изменение частоты дискретизации происходит.

Подсистема Search и Demod SSB содержит эти основные подсистемы.

  • Выбор Расстояния между поднесущими: Преобразует вход в два синхронизируемых демонстрационных потока, один в 7.68 членах Шотландского парламента и один в 3.84 членах Шотландского парламента, и выбирает который поток передать последующим этапам обработки согласно расстоянию между поднесущими.

  • Обнаружение PSS: Поиски символов PSS в полученном сигнале. Следующий раздел описывает эту подсистему более подробно.

  • Циклическая Префиксная Корреляция: Вычисляет значения корреляции циклического префикса (CP). Каждый результат усреднен через последние четыре символа OFDM.

  • Корреляция CP к Частоте: Преобразует значения корреляции CP в прекрасные оценки смещения частоты.

  • PSS и Выравнивание CP: Совпадает с основанной на CP оценкой частоты каждому экземпляру обнаружения символа PSS. Это выравнивание необходимо, потому что оценка частоты для приведенного примера обнаружения PSS доступна только в конце соответствующего SSB.

  • Сериализация Информации о PSS: Если PSS обнаруживается больше чем на одном корреляторе PSS выход при том же смещении синхронизации, этот блок сериализирует результаты так, чтобы они были возвращены в детектор по одному.

  • Синхронизация Данных OFDM: Синхронизирует вход демодулятора OFDM с выходом детектора PSS. Эта синхронизация позволяет детектору PSS инициировать процесс демодуляции OFDM в правильное время. Синхронизируемые данные являются одним символом OFDM позади коррелятора PSS, когда пиковое обнаружение происходит в конце первого символа OFDM, который будет демодулироваться.

  • Демодуляция OFDM: OFDM-демодулирует 'четыре символа заданного SSB.

  • Обнаружение SSS: Извлекает элементы ресурса SSS из демодулятора OFDM выход и коррелирует их со всеми 336 возможными последовательностями, чтобы определить ячейку ID.

  • Создайте отчет: Выравнивает все параметры, соответствующие одному обнаружению SSB, так, чтобы они были все допустимы одновременно.

Setup симуляции

Блок-схема показывает настройку симуляции этого примера, который реализован в runSSBDetectionModelSearch и runSSBDetectionModelDemod скрипты. Функции 5G Toolbox™ используются, чтобы сгенерировать тестовую форму волны, которая применяется к MATLAB и реализациям Simulink детектора SSB в режиме поиска и затем в режиме демодуляции. Ключевые диагностические сигналы от каждого детектора сравнены в терминах их относительной среднеквадратической ошибки (MSE), и окончательные результаты сравнены. Наконец, сетка ресурса, выход модели Simulink декодируется, чтобы показать, что содержимое MIB как ожидалось.

Симуляция режима поиска

Используйте runSSBDetectionModelSearch скрипт, чтобы запустить симуляцию режима поиска и проверить результаты. В режиме поиска детектор SSB ищет SSBs и возвращает их параметры. Скрипт отображает свой прогресс окна команды MATLAB. Таблицы показывают параметры каждого SSB, обнаруженного MATLAB и Simulink. Итоговая таблица показывает относительный MSE между MATLAB и Simulink для каждого коррелятора выход и для порога обнаружения. Графики сгенерированы, показав (i) объединенной сетки ресурса всех восьми SSBs в переданной форме волны и (ii) корреляции PSS выходных параметров и порога. Результаты показывают, что MATLAB и реализации Simulink соответствуют очень тесно. Небольшие различия между этими двумя реализациями происходят из-за ошибок квантования. Эти ошибки происходят, потому что ссылка MATLAB использует типы данных с плавающей точкой, и модель Simulink использует типы данных с фиксированной точкой.

runSSBDetectionModelSearch;
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.
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 0.76282s
..........

SSBs found by MATLAB reference:
    NCellID2    timingOffset    pssCorrelation    pssEnergy    frequencyOffset
    ________    ____________    ______________    _________    _______________

       0               4416        0.70487         0.77762          5058      
       0              17568        0.56114         0.61792          4996      
       0              35136         1.4149          1.5591          5015      
       0              48288         4.4369          4.8999          5034      
       0              65856          1.119          1.2328          4934      
       0              79008        0.99704          1.0975          5003      
       0              96576         1.7822          1.9614          5014      
       0         1.0973e+05         0.8866         0.97653          4990      

SSBs found by Simulink model:
    NCellID2    timingOffset    pssCorrelation    pssEnergy    frequencyOffset
    ________    ____________    ______________    _________    _______________

       0               4416        0.70517         0.77788          5058      
       0              17568        0.56143         0.61819          4996      
       0              35136         1.4151          1.5595          5015      
       0              48288         4.4374           4.901          5034      
       0              65856         1.1196          1.2332          4934      
       0              79008        0.99735          1.0978          5003      
       0              96576         1.7824          1.9619          5014      
       0         1.0973e+05        0.88665         0.97691          4991      


Relative mean-squared error between MATLAB and Simulink in search mode:

            name             relativeMSEdB
    _____________________    _____________

    {'PSS correlation 0'}       -66.884   
    {'PSS correlation 1'}       -58.528   
    {'PSS correlation 2'}       -58.627   
    {'PSS threshold'    }       -73.727   

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

Симуляция режима демодуляции

После выполнения runSSBDetectionModelSearch, используйте runSSBDetectionModelDemod скрипт, чтобы запустить симуляцию режима демодуляции и проверить результаты. В режиме демодуляции детектор восстанавливает заданный SSB путем поиска его PSS, OFDM-демодуляции сетки ресурса и поиска SSS в соответствующих элементах ресурса. Скрипт отображает свой прогресс окна команды MATLAB. Отчеты блока SS из MATLAB и Simulink показывают, что оба детектора возвратили подобные параметры и определили ячейку ID правильно как 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): 5.034 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.60403s
..........

SS block report from MATLAB
           NCellID2: 0
       timingOffset: 48288
     pssCorrelation: 4.8510
          pssEnergy: 4.8921
           NCellID1: 83
     sssCorrelation: 4.9502
          sssEnergy: 4.9507
            NCellID: 249
    frequencyOffset: 1

SS block report from Simulink
           NCellID2: 0
       timingOffset: 48288
     pssCorrelation: 4.8523
          pssEnergy: 4.8941
           NCellID1: 83
     sssCorrelation: 4.9515
          sssEnergy: 4.9525
            NCellID: 249
    frequencyOffset: 1


Relative mean-squared error between MATLAB and Simulink in demod mode:

            name             relativeMSEdB
    _____________________    _____________

    {'PSS correlation 0'}       -65.504   
    {'PSS threshold'    }       -67.756   
    {'SSS correlation'  }       -68.785   
    {'Rx resource grid' }       -69.161   

Decoding BCH from Simulink resource grid output:

 BCH CRC: 0

 Decoded (Rx) MIB
                     NFrame: 0
    SubcarrierSpacingCommon: 30
                      k_SSB: 0
          DMRSTypeAPosition: 3
            PDCCHConfigSIB1: 164
                 CellBarred: 0
       IntraFreqReselection: 0

 Expected (Tx) MIB
                     NFrame: 0
    SubcarrierSpacingCommon: 30
                      k_SSB: 0
          DMRSTypeAPosition: 3
            PDCCHConfigSIB1: 164
                 CellBarred: 0
       IntraFreqReselection: 0

Используйте Logic Analyzer Simulink, чтобы просмотреть детектор выход, в то время как это прогрессирует через эти шаги.

  1. Детектор устанавливает состояние выход на 4 в то время как это ожидает заданного смещения синхронизации и ищет заданный PSS.

  2. PSS найден. Детектор устанавливает состояние выход на 6 - детектор теперь ищет SSS в сетке ресурса. Четыре демодулировали символы OFDM, выводятся, обозначаются путем утверждения gridValid.

  3. После того, как SSS определяется, детектор утверждает reportValid, чтобы указать, что весь PSS и параметры SSS, включая NCellID, допустим. Состояние вывело изменения в 8, чтобы указать, что операция завершена и SSS и ячейка ID готовы.

Если PSS не найден при заданном смещении синхронизации, детектор устанавливает состояние выход на 5 и поиск в остановках. Если детектор не может определить SSS, то это устанавливает состояние выход на 7. В этом примере детектор восстанавливает заданный SSB - SSB с самым сильным PSS от начального поиска.

Генерация HDL-кода и результаты реализации

Чтобы сгенерировать HDL-код для этого примера, у вас должна быть лицензия HDL Coder™. Используйте makehdl и makehdltb команды, чтобы сгенерировать HDL-код и испытательный стенд HDL для nrhdlSSBDetection/SSB Detection подсистема. Получившийся HDL-код синтезировался для оценочной платы Xilinx® Zynq®-7000 ZC706. Таблица показывает место сообщения и результаты использования ресурса маршрута. Проект соответствует синхронизации с тактовой частотой 230 МГц.

       Resource        Usage
    _______________    _____

    Slice Registers    74934
    Slice LUTs         29104
    RAMB18                 9
    RAMB36                 1
    DSP48                208

Похожие темы