LTE Turbo Encoder

Закодируйте бинарные выборки с помощью турбо алгоритма

  • Библиотека:
  • LTE HDL Toolbox / Выявление ошибок и Коррекция

Описание

Блок LTE Turbo Encoder реализует турбо энкодер, описанный TS 36.212 [1] стандарта LTE с помощью интерфейса и архитектуры, оптимизированной для аппаратного развертывания и генерации HDL-кода. Энкодер является параллелью конкатенировала сверточный код (PCCC) с двумя составляющими энкодерами с 8 состояниями и внутренним interleaver. Первый энкодер работает с потоком входных данных, и второй энкодер работает с чередованной версией входных данных. Блок отключает каждый энкодер выход с независимыми битами хвоста. Уровень кодирования является 1/3. Закодированные выходные биты для каждого входного бита возвращены как вектор 3 на 1, [S P1 P2]. В этом векторе, S систематический бит и P1 и P2 биты четности от этих двух энкодеров.

Этот блок использует демонстрационный интерфейс потоковой передачи с шиной для связанных управляющих сигналов. Этот интерфейс позволяет блоку действовать независимо от формата кадра и соединиться легко с другими блоками LTE HDL Toolbox™. Блок принимает и возвращает значение, представляющее одну выборку и шину, содержащую три управляющих сигнала. Эти сигналы указывают на валидность каждой выборки и контуры системы координат. Чтобы преобразовать матрицу в демонстрационный поток и эти управляющие сигналы, используйте блок Frame To Samples или ltehdlFramesToSamples функция. Для полного описания интерфейса смотрите Демонстрационный Интерфейс Потоковой передачи.

Блок может принять новые входные данные после того, как предыдущая система координат будет завершена. Примените входные кадры, по крайней мере, с BlockSize + 17 неактивных циклов между ними. Дополнительные 17 циклов задержки должны конвейерно обработать задержки алгоритма и не меняются в зависимости от размера блока. Или, можно использовать выходной сигнал ctrl.end определить, когда блок готов к новому входу.

Эта форма волны показывает входной кадр 40 выборок с 57 неактивными циклами между системами координат. Ввод и вывод шины ctrl расширен, чтобы показать управляющие сигналы. start и end покажите контуры системы координат и valid квалифицирует выборки данных. Дополнительный tail1 и сигналы tail2 указывают на циклы, когда биты хвоста от каждого энкодера допустимы.

Порты

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

развернуть все

Введите выборку, заданную как бинарный скаляр. double и single поддерживаются для симуляции, но не для генерации HDL-кода.

Типы данных: single | double | Boolean | ufix1

Управляющие сигналы, сопровождающие демонстрационный поток, заданный как samplecontrol шина. Шина включает startконец, и valid управляющие сигналы, которые указывают на контуры системы координат и валидность выборок.

  • start — Указывает запускаются входного кадра.

  • end — Указывает на конец входного кадра.

  • valid — Указывает, что данные по порту входа data допустимы.

Типы данных: bus

Размер блока турбокода, заданный как целое число. Это значение должно быть одним из этих 188 значений, заданных в стандарте LTE, от 40 до 6 144 в этих интервалах: [40:8:512 528:16:1024 1056:32:2048 2112:64:6144].

Зависимости

Этот порт появляется, когда вы устанавливаете Block size source на Input port.

Типы данных: single | double | uint16 | fixdt(0,13,0)

Вывод

развернуть все

Закодированный демонстрационный поток, возвращенный как вектор-столбец 3 на 1. Каждая закодированная выборка представлена одним систематическим битом и двумя битами четности.

Тип выходных данных совпадает с типом входных данных.

Типы данных: single | double | Boolean | ufix1

Управляющие сигналы, сопровождающие демонстрационный поток, возвращенный как samplecontrol шина. Шина включает startконец, и valid управляющие сигналы, которые указывают на контуры системы координат и валидность выборок.

  • start — Указывает запускаются выходной системы координат.

  • end — Указывает на конец выходной системы координат.

  • valid — Указывает, что данные по порту выхода data допустимы.

Типы данных: bus

Используйте дополнительный tail1 и выходные порты tail2, чтобы указать на местоположение битов хвоста в потоке выходных данных. Эти сигналы равняются 1 (true) для циклов, которые соответствуют битам хвоста для каждого энкодера.

Блок возвращает биты хвоста в порядке, заданном TS 36.212 [1] стандарта LTE. Каждый энкодер возвращает два цикла закодированных битов хвоста.

Цикл1234
tail11100
tail20011
data[E1inK E1outK E1inK+1] [E1outK+1 E1inK+2 E1outK+2][E2inK E2outK E2inK+1][E2outK+1 E2inK+2 E2outK+2]

Зависимости

Включите эти порты путем выбора Enable trellis termination valid ports.

Типы данных: Boolean

Параметры

развернуть все

Выберите, задаете ли вы размер блока с входным портом или вводите фиксированное значение в качестве параметра. Если вы выбираете Property, параметр Block size появляется. Если вы выбираете Input port, порт blockSize появляется.

Размер блока турбокода, заданный как целое число. Это значение должно быть одним из этих 188 значений, заданных в стандарте LTE, от 40 до 6 144 в этих интервалах: [40:8:512 528:16:1024 1056:32:2048 2112:64:6144]. Это значение указано для каждой системы координат, когда ctrl.start = 1 (true).

Зависимости

Этот параметр появляется, когда вы устанавливаете Block size source на Property.

Когда вы выбираете этот параметр, порты tail1 и tail2 появляются на блоке. Эти порты возвращают управляющие сигналы, которые указывают на циклы, когда выходные выборки являются битами хвоста для каждого энкодера.

Алгоритмы

развернуть все

Для аппаратной реализации хранение индексов чередования не практично. Поддержка 188 размеров блока LTE потребовала бы 4 Мбит памяти. Поэтому алгоритм использует спецификацию чередования, чтобы вычислить индексы из размера блока. Это уравнение задает шаблон чередования:

(i)=(f1i+f2i2)modK

K является размером блока, i = 0, 1, …, (K – 1), и f1 и f2 заданы в TS 36.212 [1] стандарта LTE.

Вычисление индексов упрощено на основе этих уравнений:

π(i+1)={π(i)+g(i)          если π(i)+g(i)<Kπ(i)+g(i)K   в противном случаеπ(0)=0

g(i+1)={g(i)+2f2          , если g(i)+2f2<Kg(i)+2f2K   в противном случаеg(0)=f1+f2

Поэтому блок хранит f1 и f2 в памяти, и использует те две константы и четыре сумматора, чтобы вычислить индексы чередования.

Когда Block size source установлен в Property, блок использует два постоянных коэффициента, чтобы вывести адреса чтения для фиксированного размера блока. Когда Block size source установлен в Input port, алгоритм сохраняет 188 пар коэффициентов в ROM (<5 Кбит). Затем блок читает соответствующую пару во время выполнения, чтобы вывести адреса чтения памяти чередования.

Ссылки

[1] 3GPP TS 36.212. "Мультиплексирование и кодирование канала". Проект Партнерства третьего поколения; Сеть радиодоступа Technical Specification Group; Развитый Универсальный Наземный Радио-доступ (к E-UTRA). URL: https://www.3gpp.org.

Расширенные возможности

Смотрите также

Блоки

Функции

Введенный в R2017b