exponenta event banner

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

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

Введение

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

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

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

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

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

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

Общее описание совместного использования MATLAB и Simulink для разработки развертываемых моделей см. в разделе Проектирование беспроводных коммуникаций для FPGA и ASIC.

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

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

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

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

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

Подсистема обнаружения SSB содержит блок модели, который ссылается на nrhdlSSBDetectionFR1Core модель. В этом разделе описываются входные и выходные данные этой модели.

Исходные данные

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

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

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

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

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

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

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

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

Продукция

  • status: 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 Режим Demod - работа завершена, PSS не найдена.

  • 6 Режим Demod - найдена указанная основная система 2х2. Демодуляция сетки ресурсов и поиск SSS.

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

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

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

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

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

Подсистема поиска и демодуляции SSB выполняет обнаружение и демодуляцию SSB. Его внутренняя частота дискретизации изменяется в зависимости от интервала между поднесущими (SCS). Подсистема использует 7,68 Мс для 30kHz SCS и 3,84 Мс для 15kHz SCS. Логика выбора интервала между поднесущими слева отвечает за изменение частоты дискретизации. Скорость может изменяться только при запуске новой операции начальным входом.

Приемник имеет внутреннюю систему опорных синхросигналов, которая отслеживает время, используя счетчики в ключевых точках в канале передачи данных. Опорный синхросигнал отсчитывает периоды 20 мс - предполагаемую периодичность SSB для поиска соты, как определено стандартом 5G NR. Время измеряется в выборках на 61,44 мс по модулю 1228800 для создания периода 20 мс. Поскольку фактическая частота дискретизации составляет либо 7,84 мс, либо 3,84 мс, счетчики опорных синхросигналов увеличиваются на 8 или 16, соответственно, для каждой выборки. Когда новая операция инициируется начальным входом, контроллер запуска записывает время начала и передает время другим опорным синхросигналам в модели. Этот сигнал сообщает другие опорные синхросигналы, когда применяется новый интервал между поднесущими и соответствующая частота дискретизации. Другие опорные синхросигналы ожидают времени начала до изменения их приращения. Эта конструкция возможна только потому, что аппаратная задержка означает, что другие опорные синхросигналы отстают от контроллера запуска. Эта архитектура позволяет приемнику постоянно отслеживать время, даже когда происходит изменение частоты дискретизации.

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

  • Выбор интервала между поднесущими: преобразует входные данные в два синхронизированных потока выборок, один на 7,68 мс и один на 3,84 мс, и выбирает поток для передачи на последующие этапы обработки в соответствии с интервалом между поднесущими.

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

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

  • CP корреляция с частотой: преобразует значения CP корреляции в точные оценки сдвига частоты.

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

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

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

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

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

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

Настройка моделирования

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

  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 синтезировали для оценочной платы Xilinx ® Zynq ® -7000 ZC706. В таблице показаны результаты использования ресурсов post place и route. Конструкция отвечает синхронизации с тактовой частотой 230 МГц.

       Resource        Usage
    _______________    _____

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

Связанные темы