
- •Оглавление
- •Введение
- •Свёрточное кодирование. Идеи, основные соотношения, алгоритмы. Мягкое или жесткое принятие решений
- •Алгоритм сверточного декодирования Витерби
- •Реализация декодера
- •Мягкое декодирование по алгоритму Витерби
- •Постановка задачи исследования с использованием технологии Matlab
- •Экспериментальные результаты и их исследование
- •Требования к отчету
- •Список рекомендуемой литературы
- •Приложения Приложение 1.
Постановка задачи исследования с использованием технологии Matlab
Для понимания принципов работы сверточного кодирования и декодирования на основе алгоритма Витерби очень важным является возможность наблюдать работу этих блоков на конкретных примерах, то есть иметь возможность пронаблюдать, как и каким образом будет закодирована и декодирована конкретная последовательность, что происходит с ошибками, появляющимися в результате прохождения сигнала через канал с шумом, каким образом и в какой степени возможно исправить эти ошибки.
Таким образом, основная задача исследования – смоделировать систему передачи информации, структурная схема которой изображена на рис. 8.
Рис.8. Структурная схема системы передачи информации.
При этом, в разрабатываемой модели необходимо реализовать возможность кодирования исходного сообщения различными кодерами (например, учебным кодером и кодером, используемым в GSM). Помехи в канале обусловлены аддитивным белым гауссовым шумом. Декодер источника – декодер на основе критерия максимального правдоподобия (Алгоритма Витерби).
В качестве программной платформы для реализации поставленной задачи выбран пакет Matlab.
MATLAB (сокращение от англ. «MatrixLaboratory») — пакет прикладных программ для решения задач технических вычислений и одноимённый язык программирования, используемый в этом пакете. MATLAB используют более 1 000 000 инженерных и научных работников, он работает на большинстве современных операционных систем. Язык MATLAB является высокоуровневым интерпретируемым языком программирования, включающим основанные на матрицах структуры данных, широкий спектр функций, интегрированную среду разработки, объектно-ориентированные возможности и интерфейсы к программам, написанным на других языках программирования.
Экспериментальные результаты и их исследование
Результатом исследования является программа, написанная на языке Matlab, в которой должны быть реализованы все поставленные задачи. Программа обладает удобным и логичным графическим интерфейсом, что упрощает работу с ней. Общий вид программы непосредственно после запуска представлен на рис.9.
Рис.9. Общий вид программы
Длина исходной бинарной последовательности задается в текстовом поле «Длина сообщения», по умолчанию она равна 100 бит. Это число выбрано неслучайно. Во-первых, длина последовательности достаточна для успешной работы декодера, а во-вторых, при такой длине наиболее наглядно будут представлены результаты кодирования и декодирования.
При нажатии на кнопку «Генерировать сообщение», происходит генерация случайной бинарной последовательности, заданной длины. Примеры сгенерированных последовательностей разной длины приведены в табл.1.
Длина сообщения |
Пример последовательности |
5 |
0 1 1 1 0 |
6 |
1 0 0 1 1 0 |
7 |
1 0 1 0 0 0 1 |
8 |
0 0 1 0 0 1 1 1 |
9 |
1 1 1 1 1 0 0 0 1 |
10 |
0 1 1 1 0 1 0 1 1 1 |
11 |
0 1 1 0 0 1 0 1 0 0 1 |
12 |
0 0 1 0 1 1 0 0 1 1 1 0 |
13 |
0 0 0 0 1 1 1 0 0 1 0 1 0 |
14 |
1 1 0 0 1 1 0 1 0 0 1 0 0 1 |
15 |
1 1 1 0 1 1 0 0 1 0 0 0 0 0 1 |
16 |
1 1 0 1 1 1 0 0 0 1 0 1 1 0 1 0 |
17 |
1 0 1 1 0 1 1 1 1 0 0 0 1 1 0 1 1 |
18 |
0 0 0 0 0 0 0 0 1 1 1 0 1 1 1 1 1 0 |
19 |
1 1 1 0 1 1 0 1 1 0 0 0 1 1 0 1 1 0 1 |
20 |
1 1 0 0 1 1 0 0 0 0 0 1 0 1 0 1 1 0 1 0 |
21 |
1 0 1 1 1 1 1 0 1 0 1 0 0 0 0 1 1 0 1 0 0 |
22 |
0 1 1 0 0 0 1 1 1 0 1 1 0 0 0 1 0 1 0 1 0 1 |
23 |
1 1 1 1 0 0 0 1 0 1 0 1 0 0 0 1 0 0 1 1 1 1 0 |
24 |
1 1 0 1 0 0 1 1 1 0 1 0 0 0 0 1 0 1 0 1 0 1 1 1 |
25 |
0 0 0 1 0 1 1 1 0 0 0 1 0 1 1 1 0 0 0 1 0 1 0 0 0 |
26 |
0 1 1 1 0 1 1 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 1 |
27 |
0 0 0 0 0 1 1 1 0 0 0 1 0 0 0 1 1 1 0 1 0 1 0 1 0 0 1 |
28 |
1 0 1 1 0 0 0 0 1 1 1 1 1 0 1 1 0 1 1 1 1 1 0 0 0 0 1 0 |
29 |
0 0 0 0 0 1 0 0 1 1 0 0 0 0 1 0 1 1 0 0 0 0 0 1 0 0 1 0 1 |
30 |
1 0 1 0 0 1 1 1 0 0 1 1 0 0 1 0 1 1 1 0 0 0 1 0 1 0 1 0 1 1 |
Табл.1. Примеры случайных бинарных последовательностей.
Ручной режим ввода последовательности не предусмотрен. После генерации случайная последовательность отображается в текстовом поле «Сообщение». Становятся активными элементы поля «Кодер». Изображение рабочей области программы после генерации сообщения приведено на рис.10. (прим. здесь и далее области программы, на которых акцентируется внимание, будут выделены красным прямоугольником)
Рис.10. Вид программы после генерации сообщения
Для дальнейшей работы программы необходимо выбрать тип используемого в реализуемой модели кодера. Доступны два варианта кодеров, учебный с образующими полиномами q1=1+z2и q2=1+z+z2 и, используемый в GSM, кодер с образующими полиномамиq1=1+z3+z4 иq2=1+z+z3+z4. Оба кодера обладают скоростью кода R=1/2, что соответствует одному входному и двум выходным символам (рис.11).
Рис.11. Поле выбора кодер.
После выбора необходимого кодера программа производит все операции по кодированию/декодированию. Рассмотрим их более подробно.
Исходная последовательность, состоящая из n бит, подвергается свёрточному кодированию образующими полиномами, соответствующими выбранному кодеру. Так как в программе используются коды со скоростью кода R=1/2, кодированная последовательность будет иметь длину 2n. Результат кодирования отображается в текстовом поле «Кодированное» (Рис.12).
Рис.12. Вывод последовательности после свёрточного кодирования.
Кодированная последовательность передается в канал с аддитивным белым гауссовым шумом. В данной модели, для реализации различной помеховой обстановки в канале, доступна возможность устанавливать произвольное соотношение сигнал/шум, или SNR (signal to noise ratio). Это значение задается в текстовом поле «SNR, дБ» и по умолчанию равно 5. Значение задается в децибелах (Рис.13).
Рис.13. Установка соотношения сигнал/шум
После прохождения сигнала через зашумленный канал, в нем появляются ошибки, число которых случайно(!) и меняется при каждом новом эксперименте (смене кодера, генерировании новой последовательности). Путем проведения многочисленных экспериментов было установлено соответствие между средним процентом появляющихся ошибок (ошибочно принятых бит) и соотношением сигнал/шум. Результаты приведены в таблице 2.
SNR |
Nош, % |
0,00 |
15,81 |
1,00 |
13,14 |
2,00 |
10,37 |
3,00 |
7,90 |
4,00 |
5,64 |
5,00 |
3,80 |
6,00 |
2,31 |
7,00 |
1,24 |
8,00 |
0,59 |
9,00 |
0,24 |
10,00 |
0,08 |
Табл.2. Зависимость процента появляющихся ошибок от соотношения сигнал/шум
Кодированная последовательность с появившимися после прохождения через канал ошибками отображается в текстовом поле «С ошибками в канале», при этом ошибочно принятые биты окрашиваются в синий цвет как в текстовом поле «С ошибками в канале», так и в текстовом поле «Кодированное» (Рис.14).
Рис.14. Вывод последовательности с ошибками после канала
Принятая из канала последовательность подается на декодер по алгоритму Витерби сначала с «жестким» решением, затем с «мягким».
Результаты декодирования отображаются в текстовых полях «Жесткое решение» и «Мягкое решение» соответственно. При этом число неверно принятых бит выводится в текстовом поле «Ошибки декодирования» для «жесткого» и «мягкого» решений соответственно, а сами неверно принятые биты окрашиваются в красный цвет (Рис.15).
Рис.15.
Вывод результатов декодирования
Чтобы вернуть все настройки программы на первоначальные, а также очистить все текстовые поля предусмотрена кнопка «Сброс», находящаяся внизу окна (Рис.16).
Рис.16. Кнопка «Сброс»
Особо отметим, что смену кодера можно производить «на лету», не генерируя новую исходную последовательность. Таким образом, возможно увидеть и сравнить кодированную последовательность на выходе двух разных кодеров. Однако следует понимать, что при смене кодера заново симулируется прохождение сигнала через канал, то есть внесенные шумом ошибки будут для разных кодеров разные, и их число соответственно будет также различным. Таким образом, сравнение используемых в программе кодеров возможно производить только статистически, основываясь на большом числе экспериментов.
После работы с программой экспериментально исследована работа системы связи и ее составных частей, таких как источник сообщений, кодер, канал связи, декодер.
Для примера продемонстрируем результаты эксперимента, в котором сравнивалось среднее число неправильно декодированных бит в 6 опытах для различных декодеров (с жестким и мягким решением), а также различных кодеров (учебного и GSM) при изменении соотношения сигнал/шум от 5 до 0 децибел на рис.17.
Рис.17. Результаты эксперимента
В результате эксперимента было подтверждено, что кодер с более мощными образующими полиномами лучше справляется с ошибками и обладает большей способностью по их исправлению, нежели менее мощный. Также эксперименты подтвердили, что жесткое решение алгоритма Витерби способно исправлять одиночные ошибки, в то время как мягкое - двойные, а иногда и большее количество ошибок. В то же время, 100% гарантию правильного приема не может дать ни один из алгоритмов, так как речь идет об алгоритме максимального правдоподобия, то есть вероятностном приеме. Наилучший результат был достигнут при использовании кодера на основе GSM полиномов и мягкой схемы решения алгоритма Витерби. В серии из 6 опытов данная схема позволила получить менее 5% ошибочно принятых битов при соотношении сигнал/шум всего 2 дБ. Для сравнения при использовании учебного кодера и жесткой схемы решения процент ошибочно принятых битов выше в три раза.
С таблицами, содержащими данные эксперимента можно ознакомиться в приложении 1.