Сборник задач по дисциплине Помехоустойчивое кодирование. Часть 2
.pdf
10
Проверим, делится ли это кодовое слово на образующий полином. Поиск остатка деления осуществляется при декодировании. При отсутствии искаженных бит этот остаток, называемый синдромом ошибок, должен быть равен нулю.
x2 |
x |
| |
x2 x 1 |
|
x2 |
x |
|
| |
|
0 |
остаток |
|
|
|
Допустим, |
произошло искажение второго бита в кодовом слове: |
|||
с=(111010). По таблице поля Галуа находим, что первые два бита теперь
кодируются символом |
2 |
11 . |
|
|
|
|
|
||||||
|
|
|
|
|
|
||||||||
|
|
c |
x |
2 x2 |
x |
|
|
|
|
|
|
|
|
|
|
2 x2 |
x |
|
|
| x2 |
x 1 |
|
|
|
|
|
|
|
|
2 x2 |
2 x |
2 |
|
2 |
|
|
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
|
|||
|
x |
2 |
2 |
|
s(x) |
синдром |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
Сумму |
2 |
найдѐм поразрядным суммированием по модулю два: |
|||||||||
|
|
|
|
||||||||||
|
|
11+01=10 2 |
|
(11) |
(01) |
(10) . |
|
|
|
||||
|
|
Тогда |
синдром |
равен: |
s x |
x |
2 . |
Этот |
синдром соответствует |
||||
|
|
|
|
|
|
|
|
|
2 |
|
|
|
|
ошибке во втором бите. |
|
|
|
|
|
|
|||||||
|
|
Вводя аналогичным образом ошибки в первом бите и в двух первых |
|||||||||||
битах, |
получим |
ещѐ |
два |
синдрома s1 |
x |
и |
s12 x |
, соответственно. Эти |
|||||
синдромы можно записать в таблицу, по которой определяются и исправляются ошибки:
Полином |
синдрома |
Код синдрома |
Вектор ошибки e |
||
s(x) |
|
|
s |
|
|
s |
x |
2 x |
2 |
1111 |
10 |
1 |
|
|
|
|
|
|
|
|
|
|
|
s2 |
x |
x |
2 |
1011 |
01 |
|
|
|
|
|
|
|
|
|
|
|
|
s12 |
x |
x |
|
0101 |
11 |
Для исправления ошибки в информационном символе надо вектор ошибки, найденный по синдрому с помощью данной таблицы, сложить поразрядно по модулю два с корректируемым информационным словом.
Если синдром ошибки ненулевой, но отличный от табличных, то ошибка относится к проверочным символам, а информационные приняты верно. Ошибку в проверочных символах можно не исправлять.
11
18. Задачи по теме «Коды Рида-Соломона» Варианты 1-32. Построить поле Галуа на базе примитивного элемента
10 и неприводимого многочлена G x . Построить на основе этого поля код Рида-Соломона с порождающим многочленом g x и размером кодового
слова n=7 символов, который исправляет t ошибок. |
При формировании |
порождающего полинома использовать корни, начиная с |
l0 . В зависимости |
от условий варианта задачи: закодировать заданное информационное слово b либо найти синдром ошибки для кодового слова c. Исходные данные вариантов задачи приведены в следующей таблице:
|
G(x) |
t |
l0 |
b |
c |
1 |
11 |
1 |
1 |
001 110 001 000 |
- |
2 |
13 |
1 |
1 |
- |
101 010 000 000 001 000 010 |
3 |
11 |
2 |
1 |
001 110 001 000 |
- |
4 |
13 |
2 |
1 |
- |
101 010 000 000 0010 000 010 |
5 |
11 |
1 |
2 |
001 110 001 000 |
- |
6 |
13 |
1 |
2 |
- |
101 010 000 000 001 000 010 |
7 |
11 |
2 |
2 |
001 110 001 000 |
- |
8 |
13 |
2 |
2 |
- |
101 010 000 000 001 000 010 |
9 |
11 |
1 |
3 |
001 110 001 000 |
- |
10 |
13 |
1 |
3 |
- |
101 010 000 000 001 000 010 |
11 |
11 |
2 |
3 |
001 110 001 000 |
- |
12 |
13 |
2 |
3 |
- |
101 010 000 000 001 000 010 |
13 |
11 |
1 |
4 |
001 110 001 000 |
- |
14 |
13 |
1 |
4 |
- |
101 010 000 000 001 000 010 |
15 |
11 |
2 |
4 |
001 110 001 000 |
- |
16 |
13 |
2 |
4 |
- |
101 010 000 000 001 000 010 |
17 |
11 |
1 |
5 |
001 110 001 000 |
|
18 |
13 |
1 |
5 |
- |
101 010 000 000 001 000 010 |
19 |
11 |
2 |
5 |
001 110 001 000 |
|
20 |
13 |
2 |
5 |
- |
101 010 000 000 001 000 010 |
21 |
11 |
1 |
6 |
001 110 001 000 |
|
22 |
13 |
1 |
6 |
- |
101 010 000 000 001 000 010 |
23 |
11 |
2 |
6 |
001 110 001 000 |
|
24 |
13 |
2 |
6 |
- |
101 010 000 000 001 000 010 |
25 |
11 |
1 |
1 |
001 110 001 000 |
|
26 |
13 |
1 |
1 |
- |
101 010 000 000 001 000 010 |
27 |
11 |
2 |
1 |
001 110 001 000 |
|
28 |
13 |
2 |
1 |
- |
101 010 000 000 001 000 010 |
29 |
11 |
1 |
2 |
001 110 001 000 |
|
30 |
13 |
1 |
2 |
- |
101 010 000 000 001 000 010 |
31 |
11 |
2 |
2 |
001 110 001 000 |
|
32 |
13 |
2 |
2 |
- |
101 010 000 000 001 000 010 |
12
19. Турбокоды
Блочный турбокодер кодирует исходные данные согласно следующему алгоритму.
|
n1 |
|
k1 |
|
Информационные |
|
биты |
|
k2 |
n2 |
Биты проверок по |
|
|
|
столбцам |
Биты проверок по строкам
Биты проверок проверочных символов
Информационные биты перед блочным турбокодированием располагаются в блоке-матрице размером k1 k2 . Для каждой строки и для
каждого столбца информационного блока вычисляются проверочные биты.В результате матрица закодированного блока имеет размер n1 n2 . Обычно
k1 k2 , n1 n2 . Биты проверок проверочных символов могут вычисляться либо
нет, если нужно повысить кодовую скорость. Кодирование строк и столбцов может выполняться с помощью обычных блочных кодов.
Пример. Пусть блочный код задан проверочной матрицей:
H(5,3) |
1 |
0 |
1 |
1 |
0 |
|
0 |
1 |
1 |
0 |
1 |
||
|
||||||
|
|
|
|
|
|
Построить на его основе алгоритм турбокодирования и турбодекодирования.
Решение.
Исходная информация (слово источника) для блочного турбокодирования на базе кода (5,3) задаѐтся в виде следующей матрицы размером (3х3):
a11 a12 a13 a21 a22 a23 a31 a32 a33
Закодированная информация (кодовое слово) задаѐтся в виде матрицы
(5х5).
13
a11 |
a12 |
a13 |
p14 |
p15 |
a21 |
a22 |
a23 |
p24 |
p25 |
a31 |
a32 |
a33 |
p34 |
p35 |
p41 |
p42 |
p43 |
p44 |
p45 |
p51 |
p52 |
p53 |
p54 |
p55 |
Кодирование по строкам: pi 4 ai1 ( )ai3
pi5 ai 2 ( )ai3
Здесь операция суммирования двоичных символов по модулю два обозначена в круглых скобках (+), чтобы отличать еѐ от операций обычного арифметического суммирования + и от операций для отношений правдоподобия [+].
Кодирование по столбцам
p4 j |
a1 j ( )a3 j |
p5 j |
a2 j ( )a3 j |
Информационные символы, определяемые через проверочные по строкам:
ai1 |
pi 4 ( )ai3 |
ai3 |
pi 4 ( )ai1 |
ai 2 |
pi5 ( )ai3 |
ai3 |
pi5 ( )ai 2 |
Информационные символы, определяемые через проверочные по столбцам:
a1 j |
p4 j ( )a3 j |
a3 j |
p4 j ( )a1 j |
a2 j |
p5 j ( )a3 j |
a3 j |
p5 j ( )a2 j |
Эти операции для двоичных символов с суммированием по модулю 2: 1(+)1=0; 1(+)0=0(+)1=1; 0(+)0=0. Но для логарифмов отношения
правдоподобия этих символов уравнения похожи, только операция суммирования для бит заменяется операцией вычисления логарифма отношения правдоподобия для суммы по модулю два.
Входные данные на декодер поступают с демодулятора и являются (с коэффициентом 2) отношениями правдоподобия для информационных импульсов.
Для первого символа i-той строки, определяемого через проверочный символ pi 4 :
Lh1 ai1 |
L pi4 [ ] L ai3 L0 ai3 |
L pi4 [ |
]L ai3 |
14
Для информационного символа логарифм отношения правдоподобия состоит из двух слагаемых. Первое – отсчѐт на выходе демодулятора с «мягким решением»; второе – априорное значение логарифма отношения правдоподобия. На первой итерации обработки информационных символов - это логарифм отношения вероятностей передачи нуля и единицы. Обычно эти вероятности равны 0,5, и L0 ai3 0. На последующих итерациях, когда
отсчѐты обрабатываются повторно в качестве априорного значения логарифма отношения правдоподобия берѐтся результат расчѐта на предыдущей итерации.
Операция [+] означает вычисление отношения правдоподобия суммы по модулю два по отношениям правдоподобия слагаемых этой суммы:
L x( ) y L x [ ]L y ln |
exp L |
x |
exp |
L |
y |
|
|
|
|
|
|
1 exp |
L x |
exp |
L |
y |
В частности, для второго символа i-той строки отношение правдоподобия для ai1 имеет два значения: первое, – с выхода
«мягкого» демодулятора, а второе, Lh1 ai1 – из предыдущей формулы. Оба значения суммируются арифметически.
Lh1 ai3 |
L pi4 [ |
] L ai1 |
Lh1 ai1 |
||
Lh1 |
ai2 |
L pi5 [ ] L ai3 |
Lh1 |
ai3 |
|
Lh1 |
ai3 |
L pi5 [ |
] L ai2 |
Lh1 |
ai2 |
Выражения для отношений правдоподобия информационных символов, вычисляемых по столбцам основаны на полученных выше соответствующих проверочных уравнениях:
a1 j |
p4 j ( )a3 j |
Lh1 a1 j |
L p4 j [ ] L a3 j |
Lh1 a3 j |
a3 j |
p4 j ( )a1 j |
Lv1 a3 j |
L p4 j [ ] L a1 j |
Lh1 a1 j |
a2 j |
p5 j ( )a3 j |
Lv1 a2 j |
L p5 j [ ] L a3 j |
Lv1 a3 j |
a3 j |
p5 j ( )a2 j |
Lv1 a3 j |
L p5 j [ ] L a2 j |
Lv1 a2 j |
В результате многократного повторения вычислений определили логарифмы отношения правдоподобия для всех информационных символов
Lv1 aij ,где i, j 1 3 .
Это только первая итерация вычислений логарифма отношения правдоподобия информационных символов. По знаку при этом логарифме можно определить значения принятых бит.
Для достижения большей степени подавления помех проводят повторные вычисления (итерации). Формулы вычисления те же, только в качестве априорной информации используются результаты первой итерации вычислений:
L0 ai2 Lv1 ai2 , L0 ai3 Lv1 ai3
15
В процессе последовательного вычисления отношений правдоподобия для информационных символов погрешности в виде шумовых отклонений,
которые мы сами прибавили после кодирования как помехи, постепенно уменьшаются. Если в процессе итеративных вычислений результат декодирования не изменяется, декодирование завершается.
20.Задачи по теме «Турбодекоды»
20.1.Блочный код задан проверочной матрицей
H(5,3) |
1 |
1 |
0 |
1 |
0 |
|
0 |
1 |
1 |
0 |
1 |
||
|
||||||
|
|
|
|
|
|
Построить алгоритм турбокодирования и турбодекодирования. 20.2 Задан код с проверкой на чѐтность (5,1)
Построить алгоритм турбокодирования и турбодекодирования. 20.3. Блочный код задан проверочной матрицей
H(5,3) |
0 |
1 |
1 |
1 |
0 |
|
1 |
0 |
1 |
0 |
1 |
||
|
Построить алгоритм турбокодирования и турбодекодирования. 20.4. Задан код с проверкой на чѐтность (8,1)
Построить алгоритм турбокодирования и турбодекодирования. 20.5. Блочный код задан проверочной матрицей
H(5,3) |
0 |
1 |
1 |
1 |
0 |
|
1 |
1 |
0 |
0 |
1 |
||
|
||||||
|
|
|
|
|
|
Построить алгоритм турбокодирования и турбодекодирования. 20.6. Блочный код задан проверочной матрицей
|
0 |
1 |
1 |
1 |
1 |
0 |
0 |
H(7,4) |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
|
1 |
1 |
0 |
1 |
0 |
0 |
1 |
|
|
|
|
|
|
|
|
Построить алгоритм турбокодирования и турбодекодирования. 20.7. Блочный код задан проверочной матрицей
H(5,3) |
1 |
1 |
0 |
1 |
0 |
|
1 |
0 |
1 |
0 |
1 |
||
|
||||||
|
|
|
|
|
|
Построить алгоритм турбокодирования и турбодекодирования. 20.8. Задан код с проверкой на чѐтность (7,1)
Построить алгоритм турбокодирования и турбодекодирования. 20.9. Блочный код задан проверочной матрицей
16
H(5,3) |
1 |
0 |
1 |
1 |
0 |
|
1 |
1 |
0 |
0 |
1 |
||
|
||||||
|
|
|
|
|
|
Построить алгоритм турбокодирования и турбодекодирования. 20.10. Задан код с проверкой на чѐтность (4,1)
Построить алгоритм турбокодирования и турбодекодирования. 20.11. Задан код с проверкой на чѐтность (6,1)
Построить алгоритм турбокодирования и турбодекодирования. 20.12. Блочный код задан проверочной матрицей
|
1 |
0 |
0 |
1 |
0 |
0 |
H(6,3) |
0 |
1 |
1 |
0 |
1 |
0 |
|
1 |
0 |
1 |
0 |
0 |
1 |
|
|
|
|
|
|
|
Построить алгоритм турбокодирования и турбодекодирования. 20.13. Блочный код задан проверочной матрицей
|
1 |
0 |
0 |
1 |
0 |
0 |
H(6,3) |
1 |
1 |
1 |
0 |
1 |
0 |
|
1 |
0 |
1 |
0 |
0 |
1 |
|
|
|
|
|
|
|
Построить алгоритм турбокодирования и турбодекодирования. 20.14. Блочный код задан проверочной матрицей
|
0 |
0 |
1 |
1 |
0 |
0 |
H(6,3) |
0 |
1 |
0 |
0 |
1 |
0 |
|
1 |
0 |
1 |
0 |
0 |
1 |
|
|
|
|
|
|
|
Построить алгоритм турбокодирования и турбодекодирования. 20.15. Блочный код задан проверочной матрицей
|
1 |
0 |
0 |
1 |
0 |
0 |
H(6,3) |
0 |
1 |
1 |
0 |
1 |
0 |
|
0 |
0 |
1 |
0 |
0 |
1 |
|
|
|
|
|
|
|
Построить алгоритм турбокодирования и турбодекодирования. 20.16. Блочный код задан проверочной матрицей
|
0 |
0 |
1 |
1 |
0 |
0 |
H(6,3) |
1 |
1 |
1 |
0 |
1 |
0 |
|
1 |
0 |
0 |
0 |
0 |
1 |
|
|
|
|
|
|
|
Построить алгоритм турбокодирования и турбодекодирования.
20.17. Блочный код задан проверочной матрицей
17
|
0 |
1 |
1 |
1 |
0 |
0 |
H(6,3) |
1 |
0 |
1 |
0 |
1 |
0 |
|
0 |
1 |
0 |
0 |
0 |
1 |
|
|
|
|
|
|
|
Построить алгоритм турбокодирования и турбодекодирования. 20.18. Блочный код задан проверочной матрицей
|
0 |
1 |
1 |
1 |
0 |
0 |
H(6,3) |
1 |
1 |
1 |
0 |
1 |
0 |
|
0 |
1 |
0 |
0 |
0 |
1 |
|
|
|
|
|
|
|
Построить алгоритм турбокодирования и турбодекодирования. 20.19. Блочный код задан проверочной матрицей
|
0 |
0 |
1 |
1 |
0 |
0 |
H(6,3) |
1 |
0 |
1 |
0 |
1 |
0 |
|
0 |
1 |
0 |
0 |
0 |
1 |
|
|
|
|
|
|
|
Построить алгоритм турбокодирования и турбодекодирования. Построить алгоритм турбокодирования и турбодекодирования. 20.20. Блочный код задан проверочной матрицей
|
0 |
1 |
1 |
1 |
0 |
0 |
H(6,3) |
0 |
1 |
1 |
0 |
1 |
0 |
|
1 |
1 |
0 |
0 |
0 |
1 |
|
|
|
|
|
|
|
Построить алгоритм турбокодирования и турбодекодирования. 20.21. Блочный код задан проверочной матрицей
|
0 |
0 |
1 |
1 |
0 |
0 |
H(6,3) |
1 |
1 |
1 |
0 |
1 |
0 |
|
0 |
1 |
0 |
0 |
0 |
1 |
|
|
|
|
|
|
|
Построить алгоритм турбокодирования и турбодекодирования. 20.22. Блочный код задан проверочной матрицей
|
1 |
0 |
1 |
1 |
0 |
0 |
H(6,3) |
1 |
1 |
0 |
0 |
1 |
0 |
|
0 |
0 |
1 |
0 |
0 |
1 |
|
|
|
|
|
|
|
Построить алгоритм турбокодирования и турбодекодирования. 20.23. Блочный код задан проверочной матрицей
18
|
1 |
0 |
1 |
1 |
0 |
0 |
H(6,3) |
1 |
1 |
1 |
0 |
1 |
0 |
|
0 |
0 |
1 |
0 |
0 |
1 |
|
|
|
|
|
|
|
Построить алгоритм турбокодирования и турбодекодирования. 20.24. Блочный код задан проверочной матрицей
|
1 |
1 |
1 |
1 |
0 |
0 |
H(6,3) |
1 |
1 |
0 |
0 |
1 |
0 |
|
0 |
1 |
0 |
0 |
0 |
1 |
|
|
|
|
|
|
|
Построить алгоритм турбокодирования и турбодекодирования. 20.25. Блочный код задан проверочной матрицей
|
1 |
0 |
0 |
1 |
0 |
0 |
H(6,3) |
1 |
1 |
0 |
0 |
1 |
0 |
|
0 |
0 |
1 |
0 |
0 |
1 |
|
|
|
|
|
|
|
Построить алгоритм турбокодирования и турбодекодирования. 20.26. Блочный код задан проверочной матрицей
|
1 |
0 |
0 |
1 |
0 |
0 |
H(6,3) |
1 |
1 |
1 |
0 |
1 |
0 |
|
0 |
0 |
1 |
0 |
0 |
1 |
|
|
|
|
|
|
|
Построить алгоритм турбокодирования и турбодекодирования. 20.27. Блочный код задан проверочной матрицей
|
1 |
0 |
1 |
1 |
0 |
0 |
H(6,3) |
1 |
1 |
1 |
0 |
1 |
0 |
|
1 |
0 |
0 |
0 |
0 |
1 |
|
|
|
|
|
|
|
Построить алгоритм турбокодирования и турбодекодирования. 20.28. Блочный код задан проверочной матрицей
|
1 |
0 |
1 |
1 |
0 |
0 |
H(6,3) |
1 |
1 |
0 |
0 |
1 |
0 |
|
1 |
0 |
0 |
0 |
0 |
1 |
|
|
|
|
|
|
|
Построить алгоритм турбокодирования и турбодекодирования. 20.29. Блочный код задан проверочной матрицей
19
|
1 |
0 |
0 |
1 |
0 |
0 |
H(6,3) |
1 |
1 |
0 |
0 |
1 |
0 |
|
1 |
0 |
1 |
0 |
0 |
1 |
|
|
|
|
|
|
|
Построить алгоритм турбокодирования и турбодекодирования. 20.30. Блочный код задан проверочной матрицей
|
1 |
0 |
1 |
1 |
0 |
0 |
H(6,3) |
1 |
1 |
0 |
0 |
1 |
0 |
|
1 |
0 |
1 |
0 |
0 |
1 |
|
|
|
|
|
|
|
Построить алгоритм турбокодирования и турбодекодирования. 20.31. Блочный код задан проверочной матрицей
|
1 |
0 |
0 |
1 |
0 |
0 |
H(6,3) |
1 |
1 |
1 |
0 |
1 |
0 |
|
1 |
0 |
1 |
0 |
0 |
1 |
|
|
|
|
|
|
|
Построить алгоритм турбокодирования и турбодекодирования. 20.32. Блочный код задан проверочной матрицей
|
1 |
1 |
0 |
1 |
1 |
0 |
0 |
H(7,4) |
0 |
1 |
1 |
1 |
0 |
1 |
0 |
|
1 |
0 |
1 |
1 |
0 |
0 |
1 |
|
|
|
|
|
|
|
|
Построить алгоритм турбокодирования и турбодекодирования.
Литература
1.Волков Л.Н., Немировский М.С., Шинаков Ю.С. Системы цифровой радиосвязи: базовые методы и характеристики. Учеб. пособие, - М.: ЭкоТрендз, 2005.
2.Р. Морелос-Сарагоса. Искусство помехоустойчивого кодирования. Пер. с англ. В.Б. Афанасьева. М.: «Техносфера», 2005.
|
Содержание |
|
|
|
Стр. |
15. |
Декодирование свѐрточных кодов………………………………… |
3 |
16. |
Задачи по теме «Декодирование свѐрточных кодов» …………… |
6 |
17. |
Коды Рида Соломона…………………………………………….…. |
7 |
18. |
Задачи по теме «Коды Рида-Соломона»………………………..…. |
11 |
19 |
Турбокоды…………………………………………………………… |
12 |
20.Задачи по теме «Турбокоды»………………………………………. 15
Литература………………………………………………………….. 19
