Циклические коды. BCH Codes. Коды Рида-Соломона. Сверточные коды. Комплексные коды. Турбо код
Циклические коды Циклические коды – тип линейного блочного кода с одним дополнительным свойством. В дополнение к свойствам линейных кодов циклический сдвиг любого кодового слова должен быть кодовым словом. Например, код с кодовым словом 1011 должен также содержать кодовое слово 0111. Циклические коды выгоднее нециклических линейных блочных кодов, потому что, из-за свойств их структуры, кодеры могут быть намного проще. Примеры циклических кодов – коды Рида-Соломона и Bose-Chaudhuri-Hocquenghem (BCH).
BCH Codes BCH коды используют теорию поля и полиномы для определения возникновения ошибок. Они могут быть спроектированы для исправления произвольного количества ошибок t и для заданного m, n – k < = m*t. Из-за их реализации в виде шаблонов, существуют таблицы для множества комбинаций n, k, t и m. Также существует эффективное средство декодирования кодов BCH, названное алгоритмом Berlekamp-Massey. Способность настраивать код выбором числа исправляемых ошибок, t, делает их подходящими для приложений, где встречаются пакеты ошибок (много ошибок за относительно короткое время). Однако это достигается за счет низких скоростей передачи кода. В LabVIEW при использовании Modulation Toolkit коды BCH могут быть получены с помощью ВП BCH Encoder и декодированы с помощью ВП BCH Decoder. Коды Рида-Соломона Коды Рида-Соломона - недвоичное подмножество кодов BCH. Обычно кодовые слова составляются из двоичных значений. Они выбираются так, чтобы составить группу q символов, где q = 2k. Определенным наборам k бит ставится в соответствие уникальное значение из группы q символов. Тогда K символов отображаются N символами и преобразуются к исходному набору k бит для передачи. Кодовая скорость этих кодов равна K/N. Коды Рида-Соломона чрезвычайно эффективны при исправлении пакета ошибок.
В LabVIEW при использовании Modulation Toolkit коды Рида-Соломона могут быть получены с помощью ВП Reed Solomon Encoder и декодированы ВП Reed Solomon Decoder.
Сверточные коды Сверточные коды отличаются от линейных блочных кодов тем, что они используют несколько наборов длиной k, чтобы получить единственное кодовое слово длиной n. Их название происходит из того факта, что кодирование приводит к свертыванию входного битового потока с импульсными характеристиками n кодеров. Поскольку выход сверточного кодера зависит от предыдущих входных битов, то говорят, что кодеры имеют память или состояние. Сверточные кодеры сохраняют историю длиной L, состоящую из k входных блоков. Их выход определяется сверткой n линейных комбинаций любого из L* k входных бит. Способ, по которому сверточный кодер определяет выходные значения, называется решетчатая диаграмма. Передаточная функция сверточного кодера определяет все возможные пути, через которые кодер может пройти, выходя из начального нулевого состояния и возвращаясь обратно. Сверточные коды чаще всего декодируются с помощью алгоритма Витерби. Алгоритм Витерби обеспечивает оптимальный способ поиска решетки, представляя эффективное средство восстановления начальных данных. Это достигается сохранением минимального расстояния от правильных путей, но дает ошибки по пути приема данных. В LabVIEW, используя Modulation Toolkit, сверточные коды можно получить с помощью ВП Convolutional Encoder и декодировать с помощью ВП Convolutional Decoder.
Комплексные коды Комплексные коды создаются объединением двух и более базовых кодов, описанных выше. RSV RSV коды используют блочные коды Рида-Соломона после Витерби-декодирования сверточного кода. Минимальное расстояние этого комплексного кода задается выборкой из минимальных расстояний первого и второго кодов, что приводит к превосходному обнаружению и исправлению ошибок. Не смотря на хорошие характеристики, чаще используется Турбо код.
Турбо код Турбо код – это код, который в настоящее время наиболее близко приближается к пределу Шеннона. Передача включает: исходные данные, биты четности, полученные с помощью сверточного кода, и отдельного набора битов четности той же самой длины, полученных с помощью сверточного кодирования переставленных исходных данных. Целостность исходных данных проверяется параллельно каждым набором битов четности, при этом приемник должен знать перестановку, выполненную передатчиком. Результат декодирования в каждом из двух сверточных декодеров - ряд значений, указывающих вероятность быть каждому биту равным 0 или 1. Если результаты этих декодеров отличаются, то кодеры пересчитывают вероятности, принимая во внимание результат другого декодера. Этот процесс выполняется в несколько итераций, пока декодеры не сходятся на одинаковом решении.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|