exponenta event banner

Турбокодер LTE

Кодирование двоичных выборок с помощью алгоритма turbo

  • Библиотека:
  • Беспроводная панель инструментов HDL/обнаружение и исправление ошибок

  • LTE Turbo Encoder block

Описание

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

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

Блок может принимать новые входные данные после завершения предыдущего кадра. Примените входные кадры по крайней мере с BlockSize + 16 циклами простоя между ними. 16 циклов состоят из 12 циклов для конвейерных задержек в алгоритме и 4 циклов хвостовых битов. Эта задержка не зависит от размера блока. Кроме того, можно использовать функцию ctrl выходного сигнала.end чтобы определить, когда блок готов к новому вводу.

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

Порты

Вход

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

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

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

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

  • start - Указывает начало входного кадра.

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

  • valid - Указывает, что данные на порте входных данных являются допустимыми

Дополнительные сведения см. в разделе Пример шины управления.

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

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

Зависимости

Этот порт появляется при установке для параметра «» Источник размера блока «» значения Input port.

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

Продукция

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

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

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

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

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

  • start - Указывает начало выходного кадра.

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

  • valid - Указывает, что данные порта выходных данных являются допустимыми

Дополнительные сведения см. в разделе Пример шины управления.

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

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

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

Цикл1234
tail11100
tail20011
данные[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 до 6144 в следующих интервалах: [40:8:512 528:16:1024 1056:32:2048 2112:64:6144]. Это значение регистрируется для каждого кадра при нажатой клавише Ctrl.start = 1 (true).

Зависимости

Этот параметр появляется при установке для параметра «Источник размера блока» значения Property.

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

Совет

Алгоритмы

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

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

(i) = (f1⋅i+f2⋅i2) modK

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

Расчет индексов упрощается на основе следующих уравнений:

pi (i + 1) = {δ (i )  +  g  ( i ) , если δ (i) + g (i) < Kpi (i)  + g (i) − K otherwiseδ (0) = 0

g (i + 1) = {g ( i )  +    2f2  , если g (i) + 2f2 < Kg (i)  +  2f2 − K otherwiseg (0) = f1 + f2

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

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

Ссылки

[1] 3GPP TS 36.212. «Мультиплексирование и канальное кодирование». Проект партнерства 3-го поколения; техническая спецификация на сеть радиодоступа группы; Усовершенствованный универсальный наземный радиодоступа (E-UTRA). URL: https://www.3gpp.org.

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

.

См. также

Блоки

Функции

Представлен в R2017b