Поиск HDL-

Камеры NR

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

Введение

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

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

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

  2. MATLAB Оборудования эталонный алгоритм: NR HDL Камеры Search и MIB Recovery MATLAB Образцов модели аппаратно-удобные алгоритмы и генерирует тестовые формы сигналов. Этот код MATLAB ® работает с векторами и матрицами выборок данных с плавающей точкой и не поддерживает генерацию HDL-кода.

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

  4. 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 и служебные функции для проверки моделей реализации.

NR HDL Камеры модель поиска

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

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

Подсистема обнаружения 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. Возвращена демодулированная ресурсная сетка.

Модель-ссылка обнаружения SSB

Эта схема показывает верхний уровень nrhdlSSBDetectionFR1Core модель. Входной сигнал (dataIn) является 14-битными подписанными комплексно-ценными данными, дискретизированными на 61,44 Msps. Подсистема масштабирования входного сигнала увеличивает размер слова до 16 битов, увеличивая значения на один бит и добавляя один LSB. Это увеличение обеспечивает запас и дополнительную точность для последующих этапов обработки. DDC корректирует смещение частоты и децимирует выборки на восемь (до 7,68 Msps) с помощью получастотных фильтров. Выход DDC является входом в подсистему поиска и демодирования SSB. Блок Detection Status отслеживает прогресс и генерирует выход состояния.

Структура подсистемы поиска и демодирования SSB

Подсистема поиска и демодирования 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, так что все они действительны одновременно.

Область Setup

Блоку схема показывает настройку симуляции этого примера, которая реализована в 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, чтобы просмотреть выходы детектора при прохождении этих шагов.

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

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

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

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

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

Чтобы сгенерировать 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

Похожие темы