Сборник задач по дисциплине Помехоустойчивое кодирование. Часть 2
.pdf
ФЕДЕРАЛЬНОЕ АГЕНСТВО СВЯЗИ Государственное образовательное учреждение высшего профессионального образования
Московский Технический Университет Связи и Информатики
Кафедра радиотехнических систем
Русанов В.Э.
Сборник задач по дисциплине
ПОМЕХОУСТОЙЧИВОЕ КОДИРОВАНИЕ Часть 2
Москва 2011
1
ФЕДЕРАЛЬНОЕ АГЕНСТВО СВЯЗИ Государственное образовательное учреждение высшего профессионального образования
Московский Технический Университет Связи и Информатики
Кафедра радиотехнических систем
«Утвержден на Совете факультета радио и телевидения»
Декан А.В. Пестряков Протокол № 8 от «21» апреля 2011 г.
Сборник задач по дисциплине
ПОМЕХОУСТОЙЧИВОЕ КОДИРОВАНИЕ Часть 2
«Утвержден на заседании кафедры радиотехнических систем Зав. кафедрой Ю.С Шинаков
Протокол № 8 от 20 апреля 2011 г.
Москва 2011
2
УДК 6820.3.042.5 : 6220.39 План подготовки УМД 2011/2012 уч. года
Сборник задач по дисциплине
ПОМЕХОУСТОЙЧИВОЕ КОДИРОВАНИЕ
Предлагаемый сборник задач является учебным пособием по курсу «Помехоустойчивое кодирование». Книга содержит задачи для самостоятельного решения, а также и справочные сведения, необходимые для теоретической подготовки. Книга дополняет ранее изданный сборник задач по тематическим разделам курса: декодирование свѐрточных кодов, коды Рида-Соломона, турбокоды.
Для студентов радиотехнических и телекоммуникационных специальностей.
Составитель: В.Э. Русанов, к.т.н., доцент
Рецензент: В.С. Сперанский, к.т.н., профессор
Издание утверждено Советом факультета радио и телевидения. Протокол №8 от 21 апреля 2011 г.
3
15. Декодирование свёрточных кодов
В свѐрточном коде обрабатывается непрерывный битовый поток, но соседние биты связаны (каждый символ зависит от ряда предыдущих K входных символов передаваемого битового потока
).
Непрерывный битовый поток в свѐрточном коде обрабатывается путѐм умножения выборки входного потока, выделенной скользящим окном, на два (или более) полиномов. Цифровые потоки с выходов перемножителей полиномов объединяются (мультиплексируются) на выходе кодера. Таким
образом, на k0 |
входных символов свѐрточный кодер формирует n0 выходных. |
||||||||
Скорость кода определяется как отношение |
R |
k0 |
|
||||||
n0 |
|||||||||
|
|
|
|
|
|
|
|||
Пример. Построить схему, диаграмму состояний и решетчатую |
|||||||||
диаграмму |
|
сверточного |
кодера с |
порождающими многочленами |
|||||
g x x2 1; |
g |
2 |
x |
x2 x 1. |
Эти многочлены для краткости в справочниках |
||||
1 |
|
|
|
|
|
|
|
||
отображаются |
в |
восмеричной форме: g1 |
58 ; g2 78 . Определить путь на |
||||||
решетчатой диаграмме для информационной последовательности (1000), а также сравнить метрики Хэмминга этого пути с метриками других путей.
Решение.
Схема кодера составляется из регистра сдвига, двух сумматоров (по числу полиномов) и переключателя-мультиплексора, последовательно подающего на выход свѐрточного кодера сигналы с выходов сумматоров. Сигналы на вход сумматоров подаются только с ячеек для тех степеней, которые имеются в порождающих многочленах. В первом многочлене присутствуют только члены младшей (нулевой) и старшей (второй) степени. Поэтому на верхний сумматор подаются сигналы только с ячеек регистра для этих степеней. На нижний сумматор подаются сигналы со всех ячеек регистра, так как во втором многочлене присутствуют слагаемые всех степеней. Информационные символы источника поступают на вход регистра сдвига. Закодированные символы поступают на выход кодера с переключателя мультиплексора. Схема свѐрточного кодера для данного примера имеет следующий вид:
Такт. имп.
|
|
|
|
|
|
|
|
1 |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
X0 |
|
|
X1 |
|
|
|
|
X2 |
|
|
|
|
|
|
|
|
|
|
|
2 |
||||
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|||
Вход |
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4
Допустим, все ячейки находятся в нулевом состоянии, затем на вход подаѐтся напряжение логической единицы «1», а на ячейки регистра сдвига (D-триггеры) синхронно подаются тактовые импульсы (цепь подачи тактовых импульсов на схеме показана пунктиром). Под воздействием на вход D-триггера X 0 сигнала «1» и тактового импульса входное напряжение «переносится» на его выход. На выходах остальных триггеров по-прежнему остаѐтся напряжение логического нуля «0», поскольку до поступления тактового импульса это напряжение было на их входах Оба сумматора сформируют сигналы «1» за счѐт единицы на выходе входной ячейки (см. таблицу ниже, 2-я строка). Дальнейшие изменения при поступлении входных сигналов показаны в последующих строках этой же таблицы.
Вход |
(подача |
Состояние |
Вых. |
Состояние ячеек X 0 , X 1 |
|||
бита |
и |
ячеек |
|
1,2 |
|
|
|
тактового |
регистра |
|
|
|
|
||
импульса) |
X 0 |
X 1 |
X 2 |
|
Было (на пре- |
Стало |
|
|
|
|
|
|
|
дыдущем такте) |
|
|
|
|
|
|
|
|
|
Исх. сост. |
0 |
0 |
0 |
00 |
00 |
00 |
|
1 |
|
1 |
0 |
0 |
11 |
00 |
10 |
1 |
|
1 |
1 |
0 |
10 |
10 |
11 |
1 |
|
1 |
1 |
1 |
01 |
11 |
11 |
0 |
|
0 |
1 |
1 |
10 |
11 |
01 |
1 |
|
1 |
0 |
1 |
00 |
01 |
10 |
0 |
|
0 |
1 |
0 |
10 |
10 |
01 |
0 |
|
0 |
0 |
1 |
11 |
01 |
00 |
Если рассмотреть 4 возможных состояния пары ячеек x0 и x1 (коды в кружках), воздействия на вход регистра (сплошная стрелка «0», пунктирная «1») и выходные биты кодера (надписи возле стрелок), то можно получить следующую диаграмму состояний свѐрточного кодера:
00
00 11
11
00
10
01
11
10
10
11
01
5
На каждый входной бит k0 1 кодер вырабатывает два выходных
n0 2 : сначала с сумматора «1» (верхнее положение переключателя),
затем с сумматора «2» (нижнее).
Решетчатая диаграмма сверточного кода показывает процесс работы кодера во времени и строится на основе диаграммы состояний.
Состояния кодера показаны как горизонтальные линии узлов диаграммы (0=00, 1=10, 2=01, 3=11). Переходы из одного состояние в другое показаны стрелками, причѐм сплошная линия соответствует поступлению на вход «0», пунктирная – «1». Двухразрядный код возле каждой стрелки – пары выходных бит кодера, поступающие на его выход.
Каждой информационной последовательности соответствует свой путь на решетчатой диаграмме. Допустим, входная последовательность а= (1 0 1 1 0), выходная - с= (11 01 00 10 10). Соответствующий путь на решетчатой диаграмме выделен жирными линиями.
Четыре линии узлов 0=00, 1=10, 2=01 ,3=11 соответствуют состоянию двух младших (левых) ячеек регистра. Состояние старшего регистра определяет выходной сигнал только в текущий момент времени. На следующем такте его предыдущее состояние просто стирается и нигде не используется. Поэтому узлы состояний кодера, определяющие возможности его перехода в другие состояния, учитывают только информацию двух младших ячеек.
Алгоритм декодирования Витерби основан на выборе наиболее вероятного пути на решетчатой диаграмме, соответствующего принятой последовательности. По результатам выбора оценивается достоверность принятых бит и исправляются выявленные ошибки.
Критерий, по которому выбираются либо отсеиваются ветви пути на решетчатой диаграмме - это метрика Хэмминга, то есть вес разности (суммы по модулю 2) двух кодов.
Пусть задан код R=1/2 K=3 g1(x)=1+x2 g2(x)=1+x+x2
Пусть передана последовательность 00 00 00 00 00
Принята последовательность |
00 10 00 10 00 |
Метрика ветви считается как |
вес (количество единиц) суммы по |
модулю 2 между принятой парой бит и выходными битами, соответствующими ветви диаграммы, который суммируется (это уже арифметическая сумма) с метрикой, полученной для начала ветви на предыдущем шаге.
Сумма по модулю 2 обозначена символом « (+) »для отличия от арифметической суммы «+», которая здесь также встречается. На двух первых шагах ветви диаграммы с метриками путей выглядят следующим образом:
6
|
10 |
00 |
(принятые биты) |
||||||||
0 =(00) |
00 |
00 |
|
|
|
||||||
|
|
|
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
11 |
|
|
|||
1=(10) |
11 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
2 |
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
01 |
|
|
|
|
|
|
|
|
|
|
|
1=0+[00 (+) 10] |
||
2=(01) |
|
|
|
|
|
|
|
|
1=0+[11 (+) 10] |
||
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
10 |
|
|
|
4=2+[01 (+) 10] |
||||
|
|
|
|
|
|
|
|
|
|
|
|
3=(11) |
2=2+(10 (+) 10) |
На третьем шаге происходит выделение по метрикам наиболее вероятных путей (с меньшими метриками) и отсев менее вероятных путей (по их большим метрикам). Отсеиваемые пути обозначены пунктиром.
00 |
|
|
10 |
|
|
00 |
|
|
|
|
00 |
|
|
00 |
|
|
00 |
|
|
|
|
0 |
|
|
|
|
||||||
|
|
1 |
|
|
1=0+(00 (+) 10) |
|||||
|
|
|
|
|
||||||
0=00 |
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
6=4+(00 (+) 11) |
||
|
|
|
|
|
|
|
|
|
||
11 |
11 |
11 |
|
11 |
|
|
||||
1 |
|
|
|
|
|
|||||
|
|
|
|
|
|
3=1+(00 (+) 11) |
||||
1=10 |
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
4=4+(00 (+) 00) |
||
|
|
|
|
|
|
|
|
00 |
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2=1+(00 (+) 01) |
|
2=01 |
10 |
|
|
|
|
|
|
|||
|
|
|
|
|
|
3=2+(00 (+) 10) |
||||
|
|
|
|
4 |
|
|
|
|||
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
10 |
|
|
|
|
|
|
|
|
|
|
(+) |
|
|
|
3=11 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2=1+(00 (+) 10) |
||
|
|
|
|
|
|
|
|
|
||
2 |
|
3=2+(00 (+) 10) |
|
01 |
|||
|
|||
|
|
||
|
|
|
Выделение путей осуществляется по следующим правилам. Из двух путей, пришедших в узел, сохраняем тот, что с меньшей метрикой. Если оба пути имеют одинаковые метрики, то оставляем любой из них.
16. Задачи по теме «Свёрточное декодирование»
Варианты 1-32. Построить схему, диаграмму состояний и решетчатую диаграмму сверточного кодера с заданными порождающими многочленами g1, g2 . Определить путь на решетчатой диаграмме для информационной
последовательности a , а также сравнить метрики Хэмминга этого пути с метриками других путей. Информационная последовательность и порождающие многочлены для вариантов задачи заданы в таблице в
7
восьмеричной форме. Например, g1 |
|
15; g2 17 |
означает: g1 |
1 101, g2 |
1 111 |
|||||||
или g x |
x3 x2 |
1; g |
2 |
x |
x3 x2 x |
1). |
|
|
|
|
||
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Вариант |
a |
g1 |
|
|
g2 |
|
|
Вариант |
|
a |
g1 |
g2 |
1 |
1000 |
15 |
|
|
17 |
|
|
17 |
|
1110 |
16 |
11 |
2 |
1001 |
15 |
|
|
13 |
|
|
18 |
|
1101 |
12 |
17 |
3 |
1010 |
15 |
|
|
11 |
|
|
19 |
|
1100 |
12 |
15 |
4 |
1011 |
13 |
|
|
17 |
|
|
20 |
|
1011 |
12 |
11 |
5 |
1100 |
13 |
|
|
11 |
|
|
21 |
|
1010 |
6 |
5 |
6 |
1101 |
11 |
|
|
17 |
|
|
22 |
|
1001 |
15 |
7 |
7 |
1110 |
7 |
|
|
17 |
|
|
23 |
|
1000 |
6 |
11 |
8 |
1101 |
7 |
|
|
13 |
|
|
24 |
|
1011 |
12 |
7 |
9 |
1100 |
7 |
|
|
15 |
|
|
25 |
|
1100 |
12 |
5 |
10 |
1011 |
7 |
|
|
11 |
|
|
26 |
|
1101 |
13 |
6 |
11 |
1010 |
5 |
|
|
11 |
|
|
27 |
|
1110 |
15 |
6 |
12 |
1001 |
5 |
|
|
13 |
|
|
28 |
|
1101 |
17 |
5 |
13 |
1000 |
5 |
|
|
15 |
|
|
29 |
|
1100 |
16 |
7 |
14 |
1011 |
16 |
|
|
17 |
|
|
30 |
|
1011 |
12 |
13 |
15 |
1100 |
16 |
|
|
15 |
|
|
31 |
|
1010 |
16 |
5 |
16 |
1101 |
16 |
|
|
13 |
|
|
32 |
|
1001 |
17 |
3 |
17. Коды Рида Соломона
Полем в математике называется множество чисел – элементов поля и правила действий над ними. Поле Галуа в отличие от поля в виде бесконечного ряда натуральных чисел (1, 2, 3, 4,…..) состоит из элементов, не превышающих установленную границу. Поле Галуа можно получить, взяв в качестве первого элемента простое число , называемое примитивном элементом. Последующие числа-элементы поля Галуа можно получать возведением в степень примитивного элемента. В качестве примитивного
элемента желательно взять малое простое число, например |
210 102 . |
Степень 2, вычисляемая по правилам классической арифметики, может превысить любую границу, и мы конечного поля не получим. Но можно применить операцию нахождения остатка от деления арифметической степени на ограничивающее число-порог (это число называется образующим полиномом поля Галуа). При таком определении возведения в степень (и умножения) можно получить бесконечный ряд чисел с ограниченными значениями, не превышающими порога (они будут циклически повторяться). В качестве операций сложения-вычитания для элементов поля Галуа будем применять правило сложения по модулю два. Все элементы поля Галуа мы будем интерпретировать как в виде чисел и кодов, так и в виде полиномов
|
|
|
8 |
(где это окажется более удобным). |
Примитивный элемент |
210 |
102 |
соответствует простейшему полиному |
x. |
|
|
Пример. Построить поле Галуа на базе примитивного элемента |
10 и |
||
неприводимого многочлена x2 x 1. |
Получить на основе элементов |
1, 2 |
|
этого поля порождающий многочлен кода Рида-Соломона с размером
кодового слова n 3 символа. Код должен |
исправлять одну ошибку. |
Закодировать двухбитовое кодовое слово a |
10 . |
Решение.
Установим сначала, какую разрядность будут иметь элементы создаваемого поля. Разрядность ограничивается заданным неприводимым многочленом. Остаток от деления на этот многочлен занимает не более двух разрядов. Следовательно, элементы поля GF(2m ) – двухбитовые, m 2 .
Нулевой элемент поля определяется как |
0 . Единичный элемент |
: 0 1 .Далее следует сам примитивный элемент |
1 10 . Последующие |
элементы – степени примитивного, но взятые по модулю многочлена поля
x2 |
x 1. В нашем |
случае 2 |
|
10 2 mod |
x2 x 1 (100) mod 111 . Найдѐм |
||
остаток деления |
|
|
|
|
|
|
|
100|111 |
|
|
|
|
|
|
|
111 |
- остаток. Следовательно, |
|
11 |
|
|
||
11 |
2 |
|
|
||||
|
|
|
|
|
|
|
|
Следующий элемент |
3 10 3 mod |
x2 |
x 1 |
|
(1000) mod 111 |
||
1000|111 |
|
|
|
|
|
|
|
111 |
|
|
|
|
|
|
|
110 |
|
|
|
|
|
|
|
111 |
|
|
|
01 |
|
|
|
01 - остаток. Следовательно, |
|
3 |
0 |
|
|||
|
|
|
|
|
|
||
Повторение элементов означает, что и далее они повторятся в циклическом
порядке с периодом 3, то есть k 3 |
k . Таблица элементов поля: |
|
|||||
|
|
|
|
|
|
|
|
|
|
0 |
|
|
2 |
3 |
0 |
|
|
|
|
|
|
|
|
|
00 |
01 |
|
10 |
11 |
01 |
|
Определим, какой код можно построить на этом поле, если известно, что он должен исправлять одну ошибку t 1 . Для кода Рида - Соломона одна ошибка – это ошибка в многобитовом символе. В нашем случае ошибочный символ - двухбитовый, сбой может быть либо в одном из бит либо сразу в обоих, но всѐ это считается лишь одной ошибкой.
Найдѐм образующий полином кода с помощью теоремы Безу, задав в качестве его корней элементы полученного поля Галуа GF 4 :
9
|
2t |
|
|
|
|
|
g x |
x i |
x |
x 2 x2 |
2 x x 3 x2 |
2 |
x 1 |
i 1
Возможны и другие комбинации корней при определении образующего полинома кода, например:
x 2 x 0
В общем случае все комбинации могут быть охвачены более общей формулой с учѐтом дополнительного параметра – смещения показателя степени l0 :
|
|
|
2t |
|
i l0 |
|
|
g x |
|
x |
|
|
|
|
|
||
|
|
|
i 1 |
|
|
|
Предыдущая формула – частный случай при l0 0 , а другой возможный |
||||
вариант: l0 |
1 |
|
|
||
|
Все остальные варианты будут повторять предшествующие ввиду |
||||
цикличности следования степеней примитивного элемента. |
|||||
|
Вернѐмся к исходной формуле для образующего полинома и учтѐм, что |
||||
3 |
0 |
1, |
а также, что плюс и минус – одна и та же операция. Сумма |
||
|
|
|
|
||
элементов поля Галуа может быть найдена поразрядным суммированием их
двоичных кодов по модулю два: |
|
|
|
|
|||||||
|
|
2 |
|
=11+10=01=1= 0 |
|
|
|
|
|
||
|
|
В |
результате |
получим |
образующий полином кода Рида-Соломона: |
||||||
g |
x |
x2 |
x |
1 . В двоичном коде – это g |
111 |
|
|
||||
|
|
Образующий полином кода совпал с образующим полиномом поля |
|||||||||
Галуа. Обычно они разные, это просто частный случай. |
|
||||||||||
|
|
Количество проверочных символов равно степени образующего |
|||||||||
полинома, |
то |
есть r 2.Это |
значит, что кодовое слово будет иметь два |
||||||||
двухбитовых |
проверочных |
символа. |
Размер |
информационного |
слова |
||||||
k |
n |
r |
3 |
2 |
1 Таким образом, в кодовом слове один информационный и |
||||||
два проверочных символа. |
|
|
|
|
|
||||||
|
|
Алгоритм |
кодирования. |
Задаѐм |
информационное |
слово |
|||||
a |
10 |
|
x0 |
|
. Это один двухбитовый символ. Сдвигаем его в сторону |
||||||
старших разрядов на r 2 проверочных символа. |
|
|
|||||||||
|
|
a |
xr |
|
x2 |
|
|
|
|
|
|
Делим полученный полином на образующий и находим полином остатка. Делить следует только в полиномиальном виде. Если поделить не полиномы, а соответствующие им двоичные коды, то результат будет неверным.
x2 |
| x2 x |
1 |
|
||
x2 |
|
|
|
|
|
x | |
|
|
|
||
Получили остаток |
|
x =(1010). Это 4 проверочных бита. Всѐ кодовое |
|||
слово: |
|
|
|
|
|
с=(101010) или в полиномиальном виде: c x |
x2 x |
||||
