Высокоскоростной декодер параллельно соединенных сверточных кодов с нерегулярной структурой кодирования
Построение помехоустойчивых кодов, использующих биты стаффинга для увеличения скорости кодирования. Организация памяти кольцевым буфером и двумя поочередно переключающимися линейными буферами. Реализация декодера на логических интегральных схемах.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | статья |
Язык | русский |
Дата добавления | 02.04.2019 |
Размер файла | 162,8 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Высокоскоростной декодер параллельно соединенных сверточных кодов с нерегулярной структурой кодирования
М.А. Засорин
Аннотация
Рассмотрены особенности построения помехоустойчивых кодов, использующих биты стаффинга для увеличения скорости кодирования. Показано, что применение стаффинга приводит к нерегулярной структуре схемы декодирования и затрудняет реализацию такого декодера на логических интегральных схемах. Предложены пути решения данной задачи.
Ключевые слова: стаффинг; ПЛИС; параллельно-соединенные свёрточные коды; помехоустойчивый декодер.
Features of the construction of FEC-codes using stuffing bits for increasing the coding rate are considered. It is shown that the use of stuffing leads to an irregular structure of the decoding scheme and makes it difficult to implement the decoder on logical integrated circuits. The ways of solving this problem are proposed. стаффинг линейный буфер кодирование
Keyword: stuffing; FPGA; parallel concatenated convolutional codes; forward error correction decoder.
Современные телекоммуникационные системы (ТС) характеризуются большим разнообразием объёмов и скоростей передаваемых информационных сообщений и применением сложных сигнально-кодовых конструкций. Поэтому в большинстве существующих систем связи, использующих канальный кодер после кодера источника, имеет место несовпадение между длиной битовой последовательности на выходе кодера источника и длиной битовой последовательности, требуемой на входе канального кодера. Для разрешения этого противоречия, например, в беспроводных сетях WiFi (IEEE 802.11) и Bluetooth [1, 2] на этапе передачи сигнала применяется приём вставки фиктивных (нулевых) бит, которые отбрасываются после декодирования в приёмнике. Такое использование бит заполнения (паддинг, англ., padding) снижает производительность ТС.
В последнее время предпринимаются многочисленные попытки создать эффективные процедуры согласования выходной скорости кодированного потока данных с фиксированной скоростью в линии связи. В частности, для использования в ТС с динамическим изменением скорости данных абонентов режима ACM (англ., Adaptive Coding and Modulation) появились помехоустойчивые коды, которые путём совместного использования стаффинга, паддинга и перфорации обеспечивают инвариантность длины КС (в символах) при различных скоростях кодирования и кратностях модуляции [3]. Индекс децимации в перфораторе для таких кодов не изменяется, а скорость кодирования определяется управлением стаффингом. Применение такого подхода вносит существенную нерегулярность в структуру кода и требует применения в декодере операторов ветвления, так как позиции стаффинг-бит могут использоваться как для информационных, так и для проверочных бит, что затрудняет реализацию декодера указанного кода в ПЛИС.
Целью доклада является повышение скорости декодирования помехоустойчивого кода, относящегося к классу PCCC (параллельно соединённые свёрточные коды), применяемого в реальных линиях связи и построенного с совместным использованием процедур стаффинга и перфорации.
Для достижения поставленной цели решается задача регуляризации структуры декодера, реализации на ПЛИС схемы декодирования PCCC, экономно использующую ресурсы ПЛИС и не использующую операторы ветвления.
Рассмотрим кодер PCCC, формирующий КС фиксированной длины для всех относительных скоростей кодирования.
Кодер содержит преобразователь бит/символ, два перемежителя, два преобразователя параллельного потока в последовательный, два одинаковых ПУ кодера и два перфоратора 1:8, как это показано на рис. 1:
Рис 1. Схема кодера
Ключ K2, изображённый на рисунке справа, обеспечивает управление стаффингом - в зависимости от номера такта и относительной скорости кодирования выбирает, какой бит (информационный или нулевой) подаётся на вход c кодера. Входы схемы a и b всегда соответствуют информационным битам.
Входные биты формируются в группы по 6 бит, после чего преобразуются в два символа akbkck и ak+1bk+1ck+1. Оба символа поступают на перемежители I1 и I2, причем перемежению подвергается только один из пары символов - в I1 четный, в I2 нечетный. Далее перемеженные символы поступают в блоки стаффинга S1 и S2, где формируются группы по 8 бит, поступающие на схемы кодирования E1 и E2. Закодированный поток подвергается постоянной перфорации с коэффициентом 1:8 блоками P1 и P2 и не зависит от относительной скорости кодирования. Ключ К1 выбирает, какой из полученных проверочных бит поступит на ключ K3, где осуществляется выбор третьего бита символа, подлежащего передаче.
Рассмотрим декодер PCCC, экономно использующий ресурсы ПЛИС и не использующий операторы ветвления.
Функциональная схема, приведена на рис. 2:
Рис 2. Схема декодера.
Для декодирования требуется разделить кодовое слово на информационную часть и две проверочных части, соответствующие схемам кодирования E1 и E2. На этом этапе код приводится к регулярной структуре. Для этого формируем и обрабатываем команды управления стаффингом. В результате дестаффинга заполняется три буфера информационный (Channel INF LLR) и два проверочных (Channel Parity LLR 1) и (Channel Parity LLR 2). Данная процедура осуществляется в темпе поступления данных из канала: это не приводит к замедлению работы схемы декодирования и позволяет избежать использования операторов ветвления в отдельно взятом экземпляре декодера.
Далее информационные биты проходят процедуры демультиплексирования в соответствие с текущей полуитерацией, корректировки -- канальные значения суммируются с апостериорной информацией, полученной с блока SISO (заполняется буфер EXT BUF) и перемежения. Полученный вектор данных и соответствующий ему вектор проверки поступают в блок мягкого декодирования. После окончания декодирования обновленные значения информационных бит поступают на демультиплексор. На последней итерации данные поступают на блок оценки мягких решений, где осуществляется принятие решение о значении декодированного бита.
Обеспечение максимальной скорости декодирования требует максимизации числа декодеров, работающих параллельно. Ресурсы, затрачиваемые на один экземпляр декодера, можно оценить по его функциональной схеме, приведённой на рис. 2.
Архитектура декодера параллельно соединенных свёрточных кодов приведена в [4]. Процесс декодирования предусматривает итеративное обновление значений информационной составляющей кодового слова. Обновление происходит в блоке мягкого декодирования SISO (Soft Input Soft Output), реализующего либо алгоритм апостериорного максимума (MAP), либо алгоритм мягкого декодирования Витерби (SOVA).
В начале первой полуитерации данные, содержащиеся в буфере хранения канальных информационных мягких значений поступают на сумматор, где складываются с внешней (extrinsic) информацией, полученной на прошлой полуитерации (на первой итерации внешняя информация равна 0). Результат суммирования записывается в буфер I априорной информации. Оттуда данные поступают на блок мягкого декодирования SISO. Обновленные значения поступают на сумматор с вновь прочитанными канальными значениями. Результат суммирования записывается в буфер II априорной информации, итерация повторяется.
Число декодеров ограничено объемом памяти выбранной ПЛИС. Использование блочных ОЗУ предполагается в блоках хранения канальных ЛЛР, блоках хранения внешних значений и блоке вычисления метрик обратных состояний в блоке мягкого декодирования (таблица 1).
Данные с демодулятора поступают в виде 4-битных логарифмических отношений правдоподобия. Увеличение разрядности даёт незначительный энергетический выигрыш кодирования, но увеличивает требования к памяти. Для хранения канальных информационных значений требуется 7692 элемента - по числу кодируемых бит. В случае кодирования с максимальной для этого кода избыточностью, число проверочных значений не превышает 2564 элементов. В блок SISO данные поступают с сумматора в виде 8_битных значений, решетка содержит 8 узлов, а кодируемый вектор имеет размер 10256 элементов. Прямая реализация одного блока SISO требует 19 блоков памяти, что неприемлемо для выбранной ПЛИС. Для уменьшения объема требуемой памяти применяются оконные методы [5]. В нашем случае размер окна был выбран равным 1282 элементам. Это позволило сократить объем требуемой памяти до 5 блоков. Схема, приведенная в [4], содержит два блока мягкого декодирования, однако решетки в обоих составных кодерах одинаковые, поэтому можно использовать один и тот же блок мягкого декодирования в обеих полуитерациях, внедрив схему арбитража потоков. Полученные на выходе блока мягкого декодирования значения, подвергаются перемежению, поэтому их необходимо хранить в полном объеме - две буфера по 7692 8-битных ячейки, что требует для размещения 4 блока памяти. В итоге один экземпляр декодера для совершения одной полуитерации требует 11 блоков памяти.
Таблица 1. Оценка объема памяти
Назначение блока |
Число блоков для 1 декодера |
|
Хранение канальных информационных значений |
ceil(7692Ч4/36864) = 1 |
|
Хранение канальных проверочных значений |
ceil (2564Ч4/36864) = 1 |
|
Хранение внешних значений |
ceil (7692Ч8Ч2/36864) = 4 |
|
Хранение метрик обратных состояний |
ceil (1282Ч16Ч8/36864) = 5 |
где ceil- процедура округления результата в сторону +?.
Для параллельной работы нескольких декодеров, для каждого из них нужно организовать доступ к участку памяти, содержащему данные для декодирования. Обычно применяется кольцевой буфер (рис. 3, а), содержащий N участков и обеспечивающий доступ для N-1 декодеров. Организация памяти таким образом применяется для стандартизированных кодов, в которых коэффициенты перемежения не хранятся в явном виде, а размер данных кратен степени 2 (это позволяет полностью использовать блочную ОЗУ ПЛИС). В нашем случае перемежитель представляет собой ПЗУ с коэффициентами, поэтому процесс их чтения должен быть синхронизирован для всех работающих в текущий момент времени декодеров. Объем памяти необходимый для хранения кодового слова равен 30768 бит (7692 элементов по 4 бита), а объем одного блока ОЗУ ПЛИС -- 36864 бита, неиспользуемыми остаются 17% объема ОЗУ. В случае применения двух переключающихся линейных буферов (рис. 3, б) можно организовать множественный доступ к коэффициентам перемежения для N/2 декодеров, а также более эффективно использовать блоки ОЗУ: например, для хранения 64 кодовых слов будет использовано 54 блока ОЗУ, что сократит объем неиспользуемой памяти до 1,2%.
Рис 3. Организация памяти кольцевым буфером (а) и двумя поочередно переключающимися линейными буферами (б).
Таким образом, применение двух поочередно переключающихся линейных буферов, оконного метода декодирования и использование одного и того же блока мягкого декодирования позволило более эффективно использовать блочную память, тем самым увеличив число одновременно работающих декодеров, соответственно, увеличив скорость декодирования. Итеративное изменение демпфирующих коэффициентов внешней информации увеличило исправляющую способность декодера на 0,6 дБ. Досрочное завершение декодирования на основе сравнения априорной и апостериорных информаций позволило сократить энергопотребление декодера.
Оценим скорость работы декодера, ведущего 32-канальную обработку. На одну полуитерацию затрачивается 20512 тактов, длина декодируемого вектора равна 10256 бит, вектор читается дважды - при прямой и обратной рекурсиях. Таким образом, одна итерация требует 41024 тактов. При минимально допустимом числе итераций равном 5, необходимо не менее Nd= 205120 тактов. Оценим число тактов затрачиваемых на запись 32 кодовых слов:
Nw = 32Ч2564ЧMЧ(Fd/Fs),
где Fd- тактовая частота декодера, выраженная в МГц, Fs-скорость входного потока выраженная в Мбод/с, М - позиционность модуляции. Для декодирования необходимо выполнение неравенства Nd<Nw, что обеспечивается при скорости входного потока равной 120 Мбод/с, при тактовой частоте декодера равной 300 МГц, что соответствует 350 Мбит/с при использовании модуляции ФМ-8 (М = 3).
Выводы
Декодер по рассмотренной схеме, реализованный на ПЛИС XC7K325T фирмы Xilinx, обеспечивает декодирование цифровых потоков с использованием модуляции ФМ-8 на скорости до 350 Мбит/с для всех относительных скоростей кодирования.
Литература
1. Yoshito Watanabe, Hideki Ochiai. Exploiting padding bits for improvement of channel decoder performance. IEEE 978-1-4799-5952-5/15, 2015.
2. Koji Ishibashi, Hideki Ochiai, Ryuji Kohno. Embedded Forward Error Control (EFECT) for low-rate but low latency communications. IEEE transactions on wireless communications, vol. 7, № 5, p. 1456-1460, 2008.
3. Natasa Zivic. Improvement of concatenated decoding using bit-stuffing. International conference on broadband and wireless computing, communication and application, 2011.
4. Mattew C. Valenti. Iterative detection and decoding for wireless communication. Dissertation submitted to the faculty of the Virginia Polytechnic Institute and State University, 1999.
5. Emmanuel Boutillon, Waren J. Gross, P. Glenn Gulak. VLSI architecture for the MAP algorithm. IEEE transaction on communication, vol. 51, № 2, p. 175-185, 2003.
Размещено на Allbest.ru
...Подобные документы
Определение понятий кода, кодирования и декодирования, виды, правила и задачи кодирования. Применение теорем Шеннона в теории связи. Классификация, параметры и построение помехоустойчивых кодов. Методы передачи кодов. Пример построения кода Шеннона.
курсовая работа [212,6 K], добавлен 25.02.2009Циклические коды как подкласс (подмножество) линейных кодов, пошаговый алгоритм и варианты их кодирования и декодирования. Методика построения интерфейса отладочного модуля. Элементарный план и элементы отладки декодирующего модуля циклических кодов.
лабораторная работа [133,8 K], добавлен 06.07.2009Разработка алгоритма и программы кодирования и декодирования данных кодом Рида-Малера. Понятие избыточных кодов, их применение. Корелляционный код. Особенности построения простых помехоустойчивых кодов Рида-Маллера. Рассмотрение частных случаев.
курсовая работа [31,9 K], добавлен 09.03.2009Исследование принципа действия поэлементной синхронизации с добавлением и вычитанием импульсов. Характеристика кодирования в системах ПДС, классификации кодов, построения кодера и декодера циклического кода. Расчет параметров системы с ОС и ожиданием.
курсовая работа [2,8 M], добавлен 08.12.2011Анализ способов кодирования информации. Разработка устройства кодирования (кодера) информации методом Хемминга. Реализация кодера–декодера на базе ИМС К555ВЖ1. Разработка стенда контроля передаваемой информации, принципиальная схема устройства.
дипломная работа [602,9 K], добавлен 30.08.2010Изучение сущности циклических кодов - семейства помехоустойчивых кодов, включающих в себя одну из разновидностей кодов Хэмминга. Основные понятия и определения. Методы построения порождающей матрицы циклического кода. Понятие открытой системы. Модель OSI.
контрольная работа [99,5 K], добавлен 25.01.2011Порядок и основные этапы построения двоичных неравномерных эффективных кодов с помощью методики Хаффмена. Сравнительная характеристика полученных кодов. Кодирование текста построенными кодами. Разработка марковских процедур для кодирования слов.
лабораторная работа [520,7 K], добавлен 29.09.2011Анализ методов сверточного кодирования. Понятие канала связи и корректирующих кодов, характеристика автомата типа Мура. Особенности сверточного декодирования Витерби. Сущность разработки программного обеспечения системы кодирования сверточным кодом.
дипломная работа [4,9 M], добавлен 11.03.2012Описание системы кодирования, порядка присвоения кодов единицам информации. Изучение этапов создания классификаторов. Штриховое кодирование и особенности его применения. Юридическая сила документа, полученного из автоматизированной информационной системы.
презентация [409,6 K], добавлен 25.06.2013Коды Боуза-Чоудхури-Хоквингема (БЧХ) – класс циклических кодов, исправляющих многократные ошибки. Отличие методики построения кодов БЧХ от обычных циклических. Конкретные примеры процедуры кодирования, декодирования, обнаружения и исправления ошибок.
реферат [158,2 K], добавлен 16.07.2009Основные понятия штрихового кодирования. Общие положения данной технологии. Классификация штриховых кодов. Структура EAN-13 и EAN-8. Штриховой код на печатную продукцию и кодирование в швейном производстве. Эффективность его применения в России.
курсовая работа [1,1 M], добавлен 24.03.2009История применения кодов. Технология применения кодов в современных условиях. Анализ "экстремальных кодов" - кодов, границы параметров которых достигают равенства. Способность кода корректировать ошибки, ее зависимость от величины кодового расстояния.
контрольная работа [164,9 K], добавлен 14.07.2012Выбор и обоснование параметров входа, разработка кодека. Исследование кодов, исправляющих ошибки, которые могут возникать при передаче, хранении или обработке информации по разным причинам. Синтез принципиальной схемы парафазного буфера и декодера.
курсовая работа [582,8 K], добавлен 24.03.2013Понятие и цель применения текстовых данных. Принцип кодирования азбуки Морзе. Основные методы языка высокого уровня C#. Алгоритм работы, листинг, тестирование программы для перевода текста в последовательность кодов азбуки Морзе. Руководство пользователя.
курсовая работа [1,4 M], добавлен 15.01.2013Методы арифметического кодирования. Основные функции программ, реализующие алгоритмы кодирования по методам Хаффмана, Голомба, Фибоначчи и Элиаса. Разработка программно-аппаратных средств оптимального арифметического кодирования и их экономический расчет.
дипломная работа [1,1 M], добавлен 26.05.2012Оптимальное статистическое (экономное) кодирование. Основные понятия и определения теории кодирования. Принципы построения оптимальных кодов. Способность системы осуществлять прием информации в условиях наличия помех. Увеличение мощности сигналов.
реферат [69,3 K], добавлен 09.07.2009Запись кодов команд программы и констант в FlashROM, кодов исходных данных в EEPROM, требуемых значений установочных битов (Fuse Bits) и битов защиты (Lock Bits). Запись и чтение кодов при программировании, способы программирования в микроконтроллерах.
контрольная работа [24,2 K], добавлен 22.08.2010Сущность информации, ее структура и основные компоненты, классификация и разновидности. Методика и назначение обработки и кодирования информации, понятие и виды кодов. Анализ и классификация, использование автоматизированных информационных систем.
реферат [22,9 K], добавлен 29.09.2009Генерация порождающего полинома для циклического кода. Преобразование порождающей матрицы в проверочную и обратно. Расчет кодового расстояния для линейного блокового кода. Генерация таблицы зависимости векторов ошибок от синдрома для двоичных кодов.
доклад [12,6 K], добавлен 11.11.2010Команды вычислительной машины, которые интерпретируются микропроцессором или микропрограммами. Правила для записи чисел цифровыми знаками. Способы кодирования информации. Практическое применение машинных кодов, систем счисления, кодировки информации.
курсовая работа [1,6 M], добавлен 15.03.2015