Турбо энкодер

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

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

Описание

Блок 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, end и управляющие сигналы valid, которые указывают на контуры кадра и валидность выборок.

Типы данных: 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, end и управляющие сигналы valid, которые указывают на контуры кадра и валидность выборок.

Типы данных: 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: http://www.3gpp.org.

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

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

Блоки

Функции

Введенный в R2017b