Читайте также: |
|
Xb = D2Xa + X„
X, = DXh + DXd,
Xd = DXb + DXj,
Xe = D2Xr.
Здесь Xa,..., Xe являются фиктивными переменными неполных путей между промежуточными узлами. Передаточную функцию кода, T(D), которую иногда называют производящей функцией кода, можно записать как T{D) = XJX„. Решение уравнений состояния (7.12) имеет следующий вид [15, 16]:
D
T(D) =
1-2 D
= D5 +2D6 +4D7 +... + 2l Dl + 5 +...
Передаточная функция этого кода показывает, что имеется один путь с расстоянием 5 до нулевого вектора, два пути — с расстоянием 6, четыре — с расстоянием 7. В общем случае существуют 2' пути с расстоянием 1 + 5 до нулевого вектора, причем 1 = 0, 1,
2,.... Просвет df кода является весовым коэффициентом Хэмминга слагаемого, имеющего наименьший порядок в разложении T(D). В данном случае df = 5. Для оценки пространственных характеристик при большой длине кодового ограничения передаточную функцию T(D) использовать нельзя, поскольку сложность T(D) экспоненциально растет с увеличением длины кодового ограничения.
Более того, мы можем ввести множитель N во все ветви переходов, порожденных входной двоичной единицей. Таким образом, после прохождения ветви суммарный множитель N возрастает на единицу, только если этот переход ветви вызван входной битовой единицей. Для сверточного кода, описанного на рис. 7.3, на перестроенной диаграмме состояний (рис. 7.18) показаны дополнительные множители L и N. Уравнения (7.12) теперь можно переписать следующим образом:
Хь = DlLNX„ + LNX„
Xc = DLXb + DLXd,
Xd = DIMXb + DLNXd, (7Л4)
Xe = D2U(c.
Передаточная функция кода такой доработанной диаграммы состояний будет следующей:
d5l3n
1- DL(l+ L)N ~
L?N + D6L4(l + L)N2 + D7L5(1+ l})Nl
I i С I. -5 / ■ 1
= D'
Таким образом, мы можем проверить некоторые свойства путей, показанные на рис. 7.16. Существует один путь с расстоянием 5 и длиной 3, который отличается от нулевого пути одним входным битом. Имеется два пути с расстоянием 6, один из них имеет длину 4, другой — длину 5, и оба отличаются от нулевого пути двумя входными битами. Также есть пути с расстоянием 7, из которых один имеет длину 5, два — длину 6 и один — длину 7; все четыре пути соответствуют входной последовательности, которая отличается от нулевого пути тремя входными битами. Следовательно, если нулевой путь является правильным и шум приводит к тому, что мы выбираем один из неправильных путей с расстоянием 7, то в итоге получится три битовые ошибки.
оо 'ln |
10 \ |
DLN |
Рис. 7.18. Диаграмма состояний с обозначением расстояния, длины и числа входных единиц |
7.4.1.1. Возможности сверточного кода в коррекции ошибок
В главе 6 при изучении блочных кодов говорилось, что способность кода к коррекции ошибок, г, представляет собой количество ошибочных кодовых символов, которые можно исправить в каждом блоке кода путем декодирования по методу максимального правдоподобия. В то же время при декодировании сверточных кодов способность кода к коррекции ошибок нельзя сформулировать так лаконично. Из уравнения (7.11) можно сказать, что при декодировании по принципу максимального правдоподобия код способен исправить t ошибок в пределах нескольких длин
*7 Л ПпПМГТРЯ r'nfarYrrkUiJLJv к'гтгю
кодового ограничения, причем “несколько” — это где-то от 3 до 5. Точное значение длины зависит от распределения ошибок. Для конкретного кода и модели ошибки длину можно ограничить с использованием методов передаточной функции кода. Такое ограничение будет описано позднее.
7.4.2. Систематические и несистематические сверточные коды
Систематический сверточный код — это код, в котором входной &-кортеж фигурирует как часть выходного л-кортежа кодового слова, соответствующего этому ^-кортежу. На рис. 7.19 показан двоичный систематический кодер со степенью кодирования 1/2 и К = 3. Для линейных блочных кодов любой несистематический код можно преобразовать в систематический с такими же пространственными характеристиками блоков. При использовании сверточных кодов это не так. Причина в том, что сверточные коды сильно зависят от просвета', при построении сверточного кода в систематической форме при данной длине кодового ограничения и степени кодирования максимально возможное значение просвета снижается.
Рис. 7.19. Систематический сверточный кодер (степень кодирования 1/2, К = 3) |
В табл. 7.1 показан максимальный просвет при степени кодирования 1/2 для систематического и несистематического кодов с К от 2 до 8. При большой длине кодового ограничения результаты отличаются еще сильнее [17].
Таблица 7.1. Сравнение систематического и несистематического просветов, степень кодирования 1 /2
Длина кодового ограничения Просвет систематического кода Просвет несистематического кода
2 3 3
3 4 5
4 4 6
5 5 7
6 6 8
7 6 10
8 7 10
Источник: A. J. Viterbi and J. К. Omura. Principles of Digital Communication and Coding, McGraw- Hill Book Company, New-York, 1979, p. 251.
7.4.3. Распространение катастрофических ошибок в сверточных кодах
Катастрофическая ошибка возникает, когда конечное число ошибок в кодовых символах вызывает бесконечное число битовых ошибок в декодированных данных. Мэсси
Гnooa V (^аиопиило vr\лмплпаимо1 идгтк О
(Massey) и Сейн (Sain) указали необходимые и достаточные условия для сверточного кода, при которых возможно распространение катастрофических ошибок. Условием распространения катастрофических ошибок для кода со степенью кодирования 1/2, реализованного на полиномиальных генераторах, описанных в разделе 7.2.1, будет наличие у генераторов общего полиномиального множителя (степени не менее единицы). Например, на рис. 7.20, а показан кодер с К = Ъ, степенью кодирования 1/2, со старшим полиномом g](X) и младшим gz(X).
g,(X) = l+X g2(X) = l+X2
Генераторы gi(X) и g2(X) имеют общий полиномиальный множитель 1 + X, поскольку
1 + AT2 = (1 +Х)(1 +Х).
Следовательно, в кодере, показанном на рис. 7.20, а, может происходить распространение катастрофической ошибки.
ю |
Если говорить о диаграмме состояний кода произвольной степени кодирования, то катастрофическая ошибка может появиться тогда и только тогда, когда любая петля пути на диаграмме имеет нулевой весовой коэффициент (нулевое расстояние до нулевого пути). Чтобы проиллюстрировать это, рассмотрим пример, приведенный на рис. 7.20. На диаграмме (рис. 7.20, б) узел состояния а =00 разбит на два узла, а и е, как и ранее. Допустим, что нулевой путь является правильным, тогда неправильный путь a b d d... d с е имеет точно 6 единиц, независимо от того, сколько раз мы обойдем вокруг петли в узле d. Поэтому, например, для канала BSC к выбору этого неправильного пути могут привести три канальные ошибки. На таком пути может появить-
a Q(х) определяется уравнениями (3.43) и (3.44) и приведено в табл. Б.1. Следовательно, для кода со степенью кодирования 1/2 и просветом df= 5, при использовании когерентной схемы BPSK и жесткой схемы принятия решений при декодировании, можем записать следующее:
[1 - 2tx.p(-Eb/2N0)]
7.4.5. Эффективность кодирования
Эффективность кодирования, представленная уравнением (6.19), определяется как уменьшение (обычно выраженное в децибелах) отношения EJN0, требуемого для достижения определенной вероятности появления ошибок в кодированной системе, по сравнению с некодированной системой с той же модуляцией и характеристиками канала. В табл. 7.2 перечислены верхние границы эффективности кодирования. Они сравниваются с некоди- рованным сигналом с когерентной модуляцией BPSK для нескольких значений минимальных просветов сверточного кода. Длина кодового ограничения в гауссовом канале с жесткой схемой принятия решений при декодировании изменяется от 3 до 9. В таблице отражен тот факт, что даже при использовании простого сверточного кода можно достичь значительной эффективности кодирования. Реальная эффективность кодирования будет изменяться в зависимости от требуемой вероятности появления битовых ошибок [20].
Таблица 7.2. Верхние границы эффективности кодирования для некоторых сверточных кодов
|
Источник: V. К. Bhargava, D. Haccoun, R. Matyas and P. Nuspl. Digital Communications by Satellite. John Wiley & Sons, Inc., New York, 1981. |
В табл. 7.3 приводятся оценки эффективности кодов, сравниваемые с некодиро- ванным сигналом с когерентной модуляцией BPSK, реализованной аппаратным путем или путем моделирования на компьютере, в гауссовом канале с мягкой схемой принятия решений при декодировании [21]. Некодированное значение E,/N0 дано в крайнем левом столбце. Из табл. 7.3 можно видеть, что эффективность кодирования возрастает при уменьшении вероятности появления битовой ошибки. Однако эффективность кодирования не может возрастать бесконечно. Как показано в таблице, она имеет верхнюю границу. Эту границу (в децибелах) можно выразить следующим образом:
Здесь г — степень кодирования, a df— просвет. При изучении табл. 7.3 обнаруживается также, что (при рв = 1(Г7) для кодов со степенью кодирования 1/2 и 2/3 более слабые коды имеют тенденцию находиться ближе к верхней границе, чем более мощные коды.
Таблица 7.3. Основные значения эффективности кодирования (в дБ) при использовании мягкой схемы принятия решений в ходе декодирования по алгоритму Витерби
|
Источник: I. М. Jacobs. Practical Applications of Coding. IEEE Trans Inf. Theory, vol. IT20, May 1974, pp. 305-310. |
Как правило, декодирование по алгоритму Витерби используется в двоичном входном канале с жестким или мягким 3-битовым квантованным выходом. Длина кодового ограничения варьируется от 3 до 9, причем степень кодирования кода редко оказывается меньше 1/3, и память путей составляет несколько длин кодового ограничения [12]. Памятью путей называется глубина входных битов, которая сохраняется в декодере. После рассмотрения в разделе 7.3.4 декодирования по алгоритму Витерби может возникнуть вопрос об ограничении объема памяти путей. Из этого примера может показаться, что декодирование кодового слова в любом узле может происходить сразу, как только останется один выживший путь в этом узле. Это действительно так; хотя для создания реального декодера таким способом потребуется большое количество постоянных проверок после декодирования кодового слова. На практике вместо всего этого обеспечивается фиксированная задержка, после которой кодовое слово декодируется. Было показано [12, 22], что информации о происхождении состояния с наименьшей метрикой состояния (с использованием фиксированного объема путей, порядка 4 или 5 длин кодового ограничения) достаточно для получения характеристик декодера, которые для гауссова канала и канала BSC на величину порядка 0,1 дБ меньше характеристик оптимального канала. На рис. 7.21 показаны характерные результаты моделирования достоверности передачи при декодировании по алгоритму Витерби с жесткой схемой квантования [12]. Заметьте, что каждое увеличение длины кодового ограничения приводит к улучшению требуемого значения EJN0 на величину, равную приблизительно 0,5 дБ, при Рв = 10“\
7.4.6. Наиболее известные сверточные коды
Векторы связи или полиномиальные генераторы сверточного кода ббычно выбираются исходя из свойств просветов кода. Главным критерием при выборе кода является требование, чтоб код не допускал катастрофического распространения ошибок и имел максимальный просвет при данной степени кодирования и длине кодового ограничения.
Еь/No (дБ) Рис. 7.21. Зависимость вероятности появления битовой ошибки от EJN0 при степени кодирования кодов 1/2; используется когерентная модуляция BPSK в канале BSC, декодирование согласно алгоритму Витерби и 32-битовая память путей. (Перепечатано с разрешения авторов из J. A. Heller and I. М. Jacobs. “Viterbi Decoding for Satellite and Space Communication”. IEEE Trans. Commun. Technol., vol. COM19, n. 5, October, 1971, Fig. 7, p. 84 © 1971, IEEE) |
Затем при данном просвете df минимизируется число путей или число ошибочных битов данных, которые представляют путь. Процедуру выбора можно усовершенствовать, рассматривая количество путей или ошибочных битов при df + 1, df + 2 и т.д., пока не останется только один код или класс кодов. Список наиболее известных кодов со степенью кодирования 1/2 при К, равном от 3 до 9, и со степенью кодирования 1/3 при К, равном от 3 до 8, соответствующих этому критерию, был составлен Одену- альдером (Odenwalder) [3, 23] и приводится в табл. 7.4. Векторы связи в этой таблице представляют наличие или отсутствие (1 или 0) соединения между соответствующими регистрами сверточного кодера, причем крайний левый элемент соответствует крайнему левому разряду регистра кодера. Интересно, что эти соединения можно обратить (заменить в указанной выше схеме крайние левые на крайние правые). При декодировании по алгоритму Витерби обратные соединения приведут к кодам с точно такими же пространственными характеристиками, а значит, и с такими же рабочими характеристиками, как показаны в табл. 7.4.
Таблица 7.4. Оптимальные коды с малой длиной кодового ограничения (степень кодирования 1/2 и 1/3)
|
Степень кодирования | Длина кодового ограничения | Просвет | Вектор кода |
1/2 | |||
1/2 | |||
1/2 | |||
1/2 | |||
1/2 | |||
1/2 | |||
1/3 | |||
/ | |||
1/3 | |||
1/3 | |||
1/3 | |||
1/3 | |||
1/3 |
Источник: J. P. Odenwalder. Error Control Coding Handbook. Linkabit Corp., San Diego, Calif., July, 15, 1976. |
7.4.7. Компромиссы сверточного кодирования
7.4.7.1. Производительность при когерентной передаче PSK-модулированных сигналов
Возможности схемы кодирования в коррекции ошибок возрастают при увеличении числа канальных символов п, приходящихся на число информационных бит к, или при снижении степени кодирования kin. В то же время при этом увеличивается ширина полосы пропускания канала и сложность декодера. Выгода низких степеней кодирования при использовании сверточного кода совместно с когерентной модуляцией PSK проявляется в снижении требуемого значения E^N0 (для широкого диапазона степеней кодирования), что позволяет при заданном значении мощности осуществить передачу на более высоких скоростях или снизить мощность при заданной скорости передачи информации. Компьютерное моделирование показало [16, 22], что при фиксированной длине кодового ограничения снижение степени кодирования с 1/2 до 1/3 в итоге приводит к уменьшению требуемого значения £*//V0 примерно на 0,4 дБ (сложность декодера при этом возрастает примерно на 17%). Для меньших значений степени кодирования улучшение рабочих характеристик с ростом сложности декодирования быстро убывает [22]. В конечном счете, существует точка, по достижении которой дальнейшее снижение степени кодирования приводит к падению эффективности кодирования (см. раздел 9.7.7.2).
7.4.7.2. Качество при некогерентной ортогональной передаче сигналов
В отличие от модуляции PSK, при некогерентной ортогональной передаче сигналов существует оптимальное значение степени кодирования, приблизительно равное 1/2. Надежность передачи при степени кодирования 1/3, 2/3 и 3/4 хуже, чем при степени кодирования 1/2. При фиксированной длине кодового ограничения и степени кодирования 1/3, 2/3 или 3/4 качество кодирования, как правило, падает на 0,25, 0,5 и 0,3 дБ, соответственно, по сравнению с достоверностью передачи при степени кодирования 1/2 [16].
7.4.8. Мягкое декодирование по алгоритму Витерби
Для двоичной кодовой системы со степенью кодирования 1/2, демодулятор подает на декодер два кодовых символа за раз. Для жесткого (двухуровневого) декодирования каждую пару принятых кодовых символов можно изобразить на плоскости в виде одного из углов квадрата, как показано на рис. 7.22, а. Углы помечены двоичными числами (0, 0), (0, 1), (1, 0) и (1, 1), представляющими четыре возможных значения, которые могут принимать два кодовых символа в жесткой схеме принятия решений. Аналогично для 8-уровневого мягкого декодирования каждую пару кодовых символов можно отобразить на плоскости в виде квадрата размером 8x8, состоящего из 64 точек, как показано на рис. 7.22, б. В этом случае демодулятор больше не выдает жестких решений; он выдает квантованные сигналы с шумом (мягкая схема принятия решений).
Основное различие между мягким и жестким декодированием по алгоритму Витерби состоит в том, что в мягкой схеме не используется метрика расстояния Хэмминга, поскольку она имеет ограниченное разрешение. Метрика расстояний, которая имеет нужное разрешение, называется эвклидовым кодовым расстоянием, поэтому далее, чтобы облегчить ее применение, соответствующим образом преобразуем двоичные числа из единиц и нулей в восьмеричные числа от 0 до 7. Это можно увидеть на рис. 7.22, в, где соответствующим образом обозначены углы квадрата; теперь для описания любой из 64 точек мы будем пользоваться парами целых чисел от 0 до 7. На рис. 7.22, в также изображена точка 5,4, представляющая пример пары значений кодовых символов с шумом. Представим себе, что квадрат на рис. 7.22, в изображен в координатах (*, у). Каким будет евклидово кодовое расстояние между точкой с шумом
5,4 и точкой без шума 0,0? Оно равно ^/(5-О)2 +(4-О)2 =л/41 • А если мы захотим
узнать евклидово кодовое расстояние между точкой с шумом 5,4 и точкой без шума
7,7? Аналогично -^/(5 — 7)2 + (4- 7)2 = VU.
fl О, 0 f2 f1 V41 f2 %-----------------------------------! • * • |
\7,7 \V13
г) Д)
Puc. 7.22. Декодирование Витерби: а) плоскость жесткой схемы принятия решений; б) 8-уровневая плоскость мягкой схемы принятия решений; в) пример мягких кодовых символов; г) секция решетки кодирования, д) секция решетки декодирования
Мягкое декодирование по алгоритму Витерби, по большей части, осуществляется так же, как и жесткое декодирование (как описывалось в разделах 7.3.4 и 7.3.5). Единственное отличие состоит в том, что здесь не используется расстояние Хэмминга. Поэтому рассмотрим мягкое декодирование, осуществляемое с евклидовым кодовым расстоянием. На рис. 7.22, г показана первая секция решетки кодирования, которая вначале имела вид, приведенный на рис. 7.7. При этом кодовые слова преобразованы из двоичных в восьмеричные. Допустим, что пара кодовых символов, поступившая на декодер во время первого перехода, согласно мягкой схеме декодирования имеет значения 5,4. На рис. 7.22, д показана первая
секция решетки декодирования. Метрика (л/41), представляющая евклидово кодовое расстояние между прибывшим кодовым словом 5,4 и кодовым словом 0,0, обозначена сплошной линией. Аналогично метрика (Vl3) представляет собой евклидово кодовое расстояние между поступившим кодовым символом 5,4 и кодовым символом 7,7; это расстояние показано пунктирной линией. Оставшаяся часть задачи декодирования, которая сводится к отсечению решетки и поиску полной ветви, осуществляется аналогично схеме жесткого декодирования. Заметим, что в реальных микросхемах, предназначенных для сверточного декодирования, евклидово кодовое расстояние в действительности не применяется, вместо него используется монотонная метрика, которая обладает сходными свойствами, но значительно проще в реализации. Примером такой метрики является квадрат евклидова кодового расстояния, в этом случае исключается рассмотренная выше операция взятия квадратного корня. Более того, если двоичные кодовые символы представлены биполярными величинами, тогда можно использовать метрику скалярного произведения, определяемую уравнением (7.9). При такой метрике вместо минимального расстояния мы должны будем рассматривать максимальные корреляции.
7.5. Другие алгоритмы сверточного декодирования
7.5.1. Последовательное декодирование
До появления оптимального алгоритма Витерби существовали и другие алгоритмы декодирования сверточных кодов. Самым первым был алгоритм последовательного декодирования, предложенный Уозенкрафтом (Wozencraft) [24, 25] и модифицированный Фано (Fano) [2]. В ходе работы последовательного декодера генерируется гипотеза о переданной последовательности кодовых слов и рассчитывается метрика между этой гипотезой и принятым сигналом. Эта процедура продолжается до тех пор, пока метрика показывает, что выбор гипотезы правдоподобен, в противном случае гипотеза последовательно заменяется, пока не будет найдена наиболее правдоподобная. Поиск при этом происходит методом проб и ошибок. Для мягкого или жесткого декодирования можно разработать последовательный декодер, но обычно мягкого декодирования стараются избегать из-за сложных расчетов и большой требовательности к памяти.
Рассмотрим ситуацию, когда используется кодер, изображенный на рис. 7.3, и последовательность m = 1 1 0 1 1 кодирована в последовательность кодовых слов U = 1 101010001, как было в примере 7.1. Допустим, что принятая последовательность Z является, фактически, правильной передачей U. У декодера имеется копия кодового дерева, показанная на рис. 7.6, и он может воспользоваться принятой последовательностью Z для прохождения дерева. Декодер начинает с узла дерева в момент г, и генерирует оба пути, исходящие из этого узла. Декодер следует пути, который согласуется с полученными п кодовыми символами. На следующем уровне дерева декодер снова генерирует два пути, выходящие из узла, и следует пути, согласующемуся со второй группой п символов. Продолжая аналогичным образом, декодер быстро перебирает все дерево.
Допустим теперь, что принятая последовательность Z является искаженным кодовым словом U. Декодер начинает с узла дерева в момент t\ и генерирует оба пути, выходящие из этого узла. Если принятые п кодовых символов совпадают с одним из сгенерированных путей, декодер следует этому пути. Если согласования нет, то декодер следует наиболее вероятному пути, но при этом ведет общий подсчет несовпадений между принятыми символами и кодовыми словами на пути следования. Если две ветви оказываются равновероятными, то приемник делает произвольный выбор, как и в случае с нулевым входным путем. На каждом уровне дерева декодер генерирует новые ветви и сравнивает их со следующим набором и принятых кодовых символов. Поиск продолжается до тех пор, пока все дерево не будет пройдено по наиболее вероятному пути, и при этом составляется счет несовпадений.
Если счет несовпадений превышает некоторое число (оно может увеличиваться после прохождения дерева), декодер решает, что он находится на неправильном пути, отбрасывает этот путь и повторяет все снова. Декодер помнит список отброшенных путей, чтобы иметь возможность избежать их при следующем прохождении дерева. Допустим, кодер, представленный на рис. 7.3, кодирует информационную последовательность m = 1 1 0 1 1 в последовательность кодовых слов U, как показано на рис. 7.1. Предположим, что четвертый и седьмой биты переданной последовательности U приняты с ошибкой.
Время | h | h | h | и | ts | |
Информационная последовательность: | m | |||||
Переданная последовательность: | Г | |||||
Принятая последовательность: | Z = |
1. В момент времени /, мы принимаем символы 11 и сравниваем их с кодовыми словами, исходящими из первого узла.
2. Наиболее вероятна та ветвь, у которой кодовое слово 11 (соответствующее входной битовой единице или ответвлению вниз), поэтому декодер решает, что входная битовая единица правильно декодирована, и переходит на следующий уровень.
3. В момент t2 на этом втором уровне декодер принимает символы 00 и сравнивает их с возможными кодовыми словами 10 и 01.
4. Здесь нет “хорошего” пути, поэтому декодер произвольно выбирает путь, соответствующий входному битовому нулю (или кодовому слову 10), и счетчик несовпадений регистрирует 1.
5. В момент времени t} декодер принимает символы 01 и сравнивает их на третьем уровне с кодовыми словами 11 и 00.
Дата добавления: 2015-10-28; просмотров: 65 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Основы теории принятая статистических решений 1051 36 страница | | | Основы теории принятая статистических решений 1051 38 страница |