88
Поволжский Государственный Университет Телекоммуникаций и Информатики Факультет ИСТ Кафедра ИВТ Компьютерное моделирование цифровых устройств Конспект лекций Автор-составитель: Акчурин Э.А. д.т.н., профессор Рецензент Тарасов В.Н. д.т.н., профессор Самара 2012

Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

Embed Size (px)

Citation preview

Page 1: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

Поволжский Государственный Университет

Телекоммуникаций и Информатики

Факультет ИСТ

Кафедра ИВТ

Компьютерное моделирование цифровых устройств

Конспект лекций

Автор-составитель: Акчурин Э.А. д.т.н., профессор

Рецензент Тарасов В.Н. д.т.н., профессор

Самара

2012

Page 2: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

2

Факультет информационных систем и технологий

Кафедра «Информатика и вычислительная техника»

Автор - д.т.н., профессор Акчурин Э.А.

Другие материалы по дисциплине Вы найдете на сайте

www.ivt.psati.ru

Page 3: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

3

Содержание

Введение .............................................................................................. 5 1. MATLAB ............................................................................................. 6

1.1. Основы .......................................................................................................... 6 1.2. Применяемые в курсе компоненты MATLAB ............................................. 7 1.3. Операционная среда системы MATLAB ..................................................... 9 1.4. Окна MATLAB ................................................................................................ 9

1.4.1. MATLAB, главное окно ....................................................................... 10 1.4.2. Command Window (Командное окно) ................................................ 12 1.4.3. Command History (История команд) .................................................. 12 1.4.4. Workspace (Рабочая область) ........................................................... 13 1.4.5. Current Directory (Текущий каталог) .................................................. 14 1.4.6. Profilier (профилировщик) .................................................................. 14 1.4.7. Help – Справка .................................................................................... 15 1.4.8. Редактор, отладчик М-файла ............................................................ 17 1.4.9. Figure (Графическое окно) ................................................................. 17 1.4.10. Model (Модель Simulink) .................................................................. 18

2. Simulink ........................................................................................... 20 2.1. Введение ..................................................................................................... 20 2.2. Свойства блоков Simulink .......................................................................... 21 2.3. Основные библиотеки Simulink ................................................................. 27

3. Логические операции ......................................................................... 33 4. Переключатели ................................................................................. 33 5. Управление передачей данных ........................................................... 34 6. Счетчики .......................................................................................... 34 7. Триггеры .......................................................................................... 34

7.1. SR триггер ................................................................................................... 34 7.2. D триггер...................................................................................................... 35 7.3. JK триггер .................................................................................................... 37 7.4. T триггер ...................................................................................................... 37

8. Фильтры .......................................................................................... 38 КИХ ........................................................................................................... 38 БИХ........................................................................................................... 38

9. Модемы ........................................................................................... 39 10. Кодеки ........................................................................................... 40

10.1. Кодирование канала ................................................................................. 40 10.2. Коды с контролем четности ..................................................................... 46 10.3. Блочные коды ........................................................................................... 48 10.4. Линейные блочные коды ......................................................................... 48 10.5. Код Хэмминга ............................................................................................ 53 10.6. Циклические блочные коды ..................................................................... 56

Page 4: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

4

10.7. Несистематический циклический код ..................................................... 58 10.8. Коды Боуза-Чоудхури-Хоквингема (BCH) ............................................... 63 10.9. Коды Рида-Соломона (RS) ...................................................................... 66 10.10. Сверточные коды ................................................................................... 68

11. Инструмент BERTool ........................................................................ 77 11.1. Канал связи ............................................................................................... 77 11.2. Имитация каналов связи в MATLAB........................................................ 77 11.3. Инструмент BERTool ................................................................................ 78 11.4. Треллис-модуляция .................................................................................. 82 11.5. Синхронизация ......................................................................................... 83 11.6. Уплотнение и множественный доступ .................................................... 86

Page 5: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

5

Введение

Дисциплина «Компьютерное моделирование цифровых устройств» (КМЦУ) для направления 200600

Неделя Лекции ПЗ ЛР КР Контроль

1 4

2 4 2

3 4

4 2 2

5 2

6 2 2

7 2

8 2 2

9 2

10 2 2 ПК

11 2

12 2 2

13 2

14 2 2

Итого 34 14 Экзамен

КМЦУ – это дисциплина, в которой изучаются методы компьютерного модели-рования телекоммуникационных систем и их узлов.

Литература

1. Дьяконов В. MATLAB 6/6.1/6.5. Simulink 4/5. Основы применения. – М.: СОЛОН-Пресс, 2004, 7680 с.

2. Дьяконов В. Mathcad 2001. – СПб.: Питер, 2002, 832 с. 3. Акчурин Э. "Программирование в системе MATLAB".Часть 1. Использова-

ние MATLAB и Simulink. МУ к ЛР. Самара: ПГАТИ, 2004, 51 с. 4. Акчурин Э. "Программирование в системе MATLAB".Часть 3. Разработка

программ для ЦСП. МУ к ЛР. Самара: ПГАТИ, 2004, 31 с.

Инструментарий

Для анализа и моделирования телекоммуникационных систем употребляется программный инструментарий. Это системы компьютерной математики (СКМ) Mathcad, Maple, Mathematica, MATLAB. Наибольшее распространение в России имеют:

Mathcad для математических расчетов.

MATLAB для моделирования. Содержит много встроенных пакетов расши-рения для работы в конкретных предметных областях, а также пакет имита-ционного моделирования Simulink. Мы будем широко использовать эту СКМ.

Page 6: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

6

СКМ MATLAB содержит четыре группы компонент:

Продукты MATLAB. Это ядро системы и наборы универсальных функций.

Toolboxes – инструментальные пакеты для MATLAB (универсальные и спе-циализированные). Каждый набор содержит встроенные функции для опре-деленной предметной области. Мы будем использовать пакеты расширения для телекоммуникационных систем.

Продукты Simulink. Это программа имитационного моделирования блочно организованных систем и поддерживающие ее средства.

Blocksets – наборы блоков для имитационной модели Simulink. Каждый на-бор содержит блоки для определенной предметной области. Мы будем использовать блоки телекоммуникационных систем.

1. MATLAB

1.1. Основы

MATLAB - одна из старейших, тщательно проработанных и проверенных вре-менем СКМ, построенная на расширенном представлении и применении мат-ричных операций. Это нашло отражение в названии системы - MATrix LABora-tory (матричная лаборатория). Однако эта ориентация почти не ощущается теми пользователями, которых не интересуют непосредственно матричные вычисления.

Матрицы широко применяются в сложных математических расчетах, например при решении задач линейной алгебры и математического моделирования ста-тических и динамических систем и объектов. Они являются основой автомати-ческого составления и решения уравнений состояния динамических объектов и систем. Примером может служить расширение MATLAB - Simulink.

В настоящее время MATLAB стала одной из наиболее мощных универсальных интегрированных СКМ. Слово «интегрированная» указывает на то, что в этой системе объединены удобная оболочка, редактор выражений и текстовых комментариев, вычислитель и графический программный процессор. В ней используются такие мощные типы данных, как многомерные массивы, массивы ячеек, массивы структур, массивы Java и разреженные матрицы, что открыва-ет возможности применения системы при создании и отладке новых алгорит-мов матричных и основанных на них параллельных вычислений и крупных баз данных.

MATLAB - это уникальная коллекция реализаций современных численных ме-тодов компьютерной математики. Она вобрала в себя и опыт, правила и мето-ды математических вычислений, накопленные за тысячи лет развития матема-тики. Это сочетается с мощными средствами графической визуализации и анимационной графики. Систему с прилагаемой к ней обширной документаци-

Page 7: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

7

ей (на английском и частично японском языках) можно рассматривать как фун-даментальный многотомный электронный справочник по математическому обеспечению ЭВМ.

Система MATLAB была разработана Молером (С. В. Moler) и с конца 70-х гг. широко использовалась на больших ЭВМ. В начале 80-х гг. Джон Литл (John Little) из фирмы MathWorks разработал версии MATLAB для компьютеров клас-са IBM PC, VAX и Macintosh. В дальнейшем были созданы версии для рабочих станций Sun, компьютеров с операционной системой UNIX и многих других типов больших и малых ЭВМ. Сейчас свыше десятка популярных компьютер-ных платформ могут работать с системой MATLAB. К расширению системы были привлечены крупнейшие научные школы мира в области математики, программирования и естествознания.

Возможности MATLAB весьма обширны, а по скорости выполнения задач сис-тема нередко превосходит своих конкурентов. Она применима для расчетов практически в любой области науки и техники. Этому способствует расширен-ный набор матричных и иных операций и функций, наличие десятков пакетов расширений (toolbox) для различных предметных областей, а тособенно паке-та Simulink, специально предназначенного для решения задач блочного моде-лирования динамических систем и устройств.

В MATLAB содержатся специальные средства для электротехнических и ра-диотехнических расчетов (операции с комплексными числами, матрицами, векторами и полиномами, обработка данных, анализ сигналов и цифровая фильтрация), обработки изображений, реализации нейронных сетей, а также средства, относящиеся к другим новым направлениям науки и техники. Они иллюстрируются множеством практически полезных примеров. К разработкам расширений для системы MATLAB привлечены многие научные школы мира и руководящие ими крупные ученые и педагоги университетов.

Важными достоинствами системы являются ее открытость и расширяемость. Большинство команд и функций системы реализованы в виде текстовых m-файлов на языке MATLAB (с расширением .m) и файлов на языке C, причем все файлы доступны для модификации. Пользователю дана возможность соз-давать не только отдельные файлы, но и библиотеки файлов для реализации специфических задач.

1.2. Применяемые в курсе компоненты MATLAB

MATLAB состоит из следующих частей:

MATLAB Prod-ucts

Продукты MATLAB. Содержат наборы универсальных функ-ций.

Toolboxes Инструментальные пакеты - расширения MATLAB. Наборы функций для предметной области.

Page 8: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

8

Продукты Simu-link

Продукты Simulink. Содержат наборы универсальных бло-ков, методов и функций.

Blocksets Наборы компонент Simulink - расширения Simulink. Это бло-ков для предметных областей.

Документация

Ядро MATLAB имеет следующие средства:

Desktop Tools and De-velopment Environment

Инструменты рабочего стола и среды разработки.

Mathematics Математические операции и анализ данных.

Programming Программирование. Язык MATLAB и инструкции.

Graphics Графика.

3-D Visualization Трехмерная визуализация.

Creating Graphical User Interfaces (GUI)

Создание графического пользовательского интерфейса.

Function Функции по категориям или по алфавиту.

Handle Graphics Property Browser

Браузер свойств дескрипторов графических объек-тов.

External Interfaces Внешние интерфейсы.

MATLAB Release Notes Новые особенности и проблемы в текущей версии.

Printing the Documenta-tion Set

Документация для печати.

Инструментальные наборы Toolboxes

Communications Toolbox Телекоммуникации

RF Toolbox Радиочастотные методы

Signal Processing Toolbox Обработка сигналов

Продукты Simulink

Simulink Система имитационного моделирования Simulink

Embedded Target for the TI TMS320C2000 DSP

Встроенный объект для ЦСП TI TMS320C2000

Embedded Target for the TI TMS320C6000 DSP

Встроенный объект для ЦСП TI TMS320C6000

Simulink Fixed Point Фиксированная точка в Simulink

Наборы блоков Blocksets

Communications Blockset Телекоммуникации

RF Blockset Радиочастотные компоненты

Signal Processing Blockset Обработка сигналов

Embedded Target for the TI Встроенный объект для ЦСП TI

Page 9: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

9

TMS320C2000 DSP TMS320C2000

Embedded Target for the TI TMS320C6000 DSP

Встроенный объект для ЦСП TI TMS320C6000

1.3. Операционная среда системы MATLAB

Информационная среда системы MATLAB включает в себя:

Диалог с пользователем через командное окно.

Просмотр рабочей области и путей доступа.

Редактор/отладчик М-файлов.

Работа с файлами.

Экспорт и импорт данных.

Интерактивный доступ к справочной информации.

Динамическое взаимодействие с внешними системами.

Традиционный интерфейс Windows. Сеанс работы с MATLAB называется - сессия. Сессия начинается работой в окне командного режима. Возможны файлы:

.m М-файл Функция MatLab

.mex Script-файл Из других языков

.mat Mat-файл Workspace

.txt Фрагмент сессии

Форма представления сессии – текстовый редактор. В его строках могут нахо-диться:

Приглашение для ввода >>.

Вывод результата.

Сообщение об ошибке.

Сессия – текущий документ MATLAB. Для сохранения результатов использу-ются:

Команда Что? Файл?

save сохранить .mat

load загрузить .mat

diary дневник .txt

1.4. Окна MATLAB

В MATLAB определены окна:

Окно Назначение

MATLAB Главное окно системы. Док, может включать окна 2...7

Page 10: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

10

Command Window Командное окно

Command History История команд

Current Directory Текущий каталог – менеджер файлов

Workspace Рабочая область

Help Справка

Profilier Профилировщик для оптимизации М-файлов

M-File Редактор/отладчик М-файла

Figure # Графическое окно, # - номер окна от 1

Model Окно модели Simulink

Simulink Library Browser Браузер библиотек компонент Simulink

GUI – Graphic User Inter-face

Графический пользовательский интерфейс

1.4.1. MATLAB, главное окно

При старте пользователь видит док - главное окно 1, в котором размещаются до 5 дочерних окон (2...5, 7), число и список которых можно регулировать. До-черние окна отображаются в панелях дока (их до 4). Если число окон в доке больше 4, то используются вкладки в панелях. Меню и содержание панели инструментов дока совпадает с меню и панелью инструментов окна, выбранно-го пользователем для работы. Каждое из дочерних можно выделить из дока, как автономное, и разместить произвольно.

Page 11: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

11

Page 12: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

12

1.4.2. Command Window (Командное окно)

В этом окне обычно начинается работа в MATLAB. В окне выводится пояс-няющий текст для пользователя и символ приглашения продолжить, за кото-рым пользователь должен писать командную строку, исполняемую после на-жатия клавиши Enter.

1.4.3. Command History (История команд)

В этом окне отображается история команд в сеансе. Для каждой команды ука-зываются дата и имя.

Page 13: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

13

1.4.4. Workspace (Рабочая область)

Это окно используется для отображения переменных в рабочей области. Для каждой переменной указываются:

Name – имя.

Value – значение.

Size – размер массива.

Bytes – размер в байтах.

Class – класс (тип).

Если сеанс не начинался, переменных нет, и окно пустое.

При создании новой переменной из меню MATLAB командой File=>New=>Variable в этом окне появляется новая переменная с именем un-named (безимянная).

Page 14: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

14

1.4.5. Current Directory (Текущий каталог)

Это окно используется для отображения файлов в текущей папке. Для каждого файла указываются:

MATLAB Files. Имя файла.

File Type/ Тип файла.

Last Modified. Дата и время последней модификации.

Description. Описание.

1.4.6. Profilier (профилировщик)

Это окно используется для профилирования файла. Профилировщик анализи-рует свойства файла с целью определения путей его улучшения по используе-мой памяти и быстродействию. При запуске в окне выводится инструкция по работе с профилировщиком.

Page 15: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

15

1.4.7. Help – Справка

Окно справки имеет сложную структуру и поэтому выводится командой Help главного меню MATLAB всегда в автономном окне. Окно справки содержит два поля:

Help Navigator - Навигатор справки слева. Эта панель содержит 4 кнопки для выбора режима навигации (содержание, индексы, поиск, фавориты).

Информация справа.

Page 16: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

16

Page 17: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

17

1.4.8. Редактор, отладчик М-файла

Используется для создания или редактирования М-файлов. Для вызова окна используется команда меню MATLAB File=>New=>M-file.

1.4.9. Figure (Графическое окно)

В MATLAB графики отображаются в автономных окнах. Для вызова окна ис-пользуется команда меню MATLAB File=>New=>Figure. Окно содержит:

Панели инструментов.

Объект Axes (Оси) с графиками

Page 18: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

18

1.4.10. Model (Модель Simulink)

В MATLAB встроена система имитационного моделирования блочно организо-ванных систем Simulink. Модель создается в автономном окне, для вызова которого используется команда меню MATLAB File=>New=>Model. Генерирует-ся пустое окно.

Модель составляется из заранее запрограммированных блоков путем их пере-носа из библиоеки в окно модели. Доступ к библиотекам обеспечивается браузером, окно которого вызывается командой Library Browser из меню моде-ли.

Page 19: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

19

Окно браузера содержит две панели:

В левой панели находится оглавление библиотек.

В правой панели - содержимое выбранного раздела.

После заполнения блоками окно модели имеет вид подобный этому:

Page 20: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

20

Модель содержит функциональные блоки, соединенные линиями связи и вспомогательгые фрагменты

2. Simulink

2.1. Введение

Пакет расширения Simulink служит для имитационного моделирования систем, состоящих из блоков с заданными свойствами (параметрами). Компоненты моделей, в свою очередь, являются графическими блоками и моделями, кото-рые содержатся в ряде библиотек (имена библиотек имеют постфикс Blockset) и с помощью мыши могут переноситься в основное окно и соединяться друг с другом необходимыми связями. В состав моделей могут включаться источники сигналов различного вида, виртуальные регистрирующие приборы, графиче-ские средства анимации. Двойной щелчок мышью на блоке модели выводит окно со списком его параметров, которые пользователь может менять. При

Page 21: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

21

прогоне модели обеспечивается ее математическое моделирование с нагляд-ным визуальным представлением результатов.

Модель создается путем переноса блоков из библиотеки компонентов в окно редактирования создаваемой пользователем модели. Затем пользователь может задать параметры блоков модели и запустиь ее на выполнение. Воз-можно моделирование сложных систем, состоящих из множества подсистем. Система Simulink автоматически составляет и решает уравнения состояния модели и позволяет подключать в нужные ее точки разнообразные виртуаль-ные измерительные приборы.

В последних версиях Simulink изменен набор и размещение доступных пользо-вателю компонент:

Часть компонент, имеющих аналоги в других библиотеках, удалена.

Компоненты разных библиотек сгруппированы в подбиблиотеки по функ-циональному назначению.

Добавлены новые библиотеки. Для телекоммуникационных систем это на-бор радиочастотных блоков - RF Blockset.

Из компонент сходного назначения выбраны наиболее современные.

2.2. Свойства блоков Simulink

В Simulink определены блоки разного типа:

обычные,

подсистемы, включающие в себя вложенные блоки.

управляемые подсистемы, поведение которых задается внешним воздейст-вием.

Обычные. Отображение обычного блока иллюстрируется рисунком. Обычный блок отображается в модели как прямоугольник, у которого:

Внутри отображается надпись, описывающая выполняемую им функцию.

Входы блока помечаются стрелками, входящими в блок.

Выходы блока помечаются стрелками, исходящими из блока.

Page 22: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

22

Обычный блок имеет свойства и методы, влияющие на его представление:

Внешняя надпись (имя), описывающая блок.

Функция «Показать имя» (или «Скрыть имя»)..

Функция «Переместить имя». Она меняет расположение имени, когда оно отображается.

Функция «Перевернуть блок». Она меняет местами расположение входов и выходов блока.

Функция «Повернуть блок». Она поворачивает блок на 900..

Параметры блока, определяющие правила его работы и задающие количе-ственные значения. Их можно регулировать в окне параметров, которое вы-зывается двойным щелчком левой кнопки мыши по блоку.

Подсистемы. Отображение подсистемы:

Page 23: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

23

Подсистема отображается в модели как прямоугольник, у которого в отличие от обычного блока внутри отображается маска, скрывающая внутреннюю структуру и описывающая выполняемую ей функцию. Маску можно создавать. Как и для обычного блока для подсистемы можно регулировать параметры. Для работы с внутренней структурой подсистемы предназначена функция «Посмотреть под маской» (―Look under mask‖). После этого в индивидуальном окне отображается структура подсистемы. Подсистемы могут быть иерархиче-ски организованными, когда они вкладываются друг в друга

Управляемые подсистемы. У управляемых подсистем поведение задается внешним воздействием. Определены три управляемые подсистемы:

Е-подсистема. Эта подсистема управляется введенным в нее блоком Ena-ble (Разрешение). Этот блок воспринимает управляющий сигнал на входе Enable и разрешает или запрещает работу подсистемы. На рисунке ниже – верхняя строка.

Т-подсистема. Эта подсистема управляется введенным в нее блоком Trig-ger (Переключение). Этот блок разрешает работу подсистемы только во время заданного события на управляющем входе Trigger. На рисунке ниже – средняя строка.

Page 24: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

24

ЕТ-подсистема. Эта подсистема управляется введенными в нее блоками Enable и Trigger. Она является комбинацией двух первых управляемых под-систем. На рисунке ниже – нижняя строка.

Подсистемыс переключением обозначаются специальным значком, который подсказывает правило срабатывания подсистемы. В строках рисунка слева направо показаны подсистемы, в которых работа разрешается при перепаде вверх, перепаде вниз и при любом перепаде.

Е-подсистема. При создании Е-подсистемы в пустую подсистему заносится блок Enable, который ни с чем не соединяется, так как он только разрешает, или запрещает работу внутренних блоков подсистемы. Визуально Е-подсистема отображается специальным значком. Е-подсистема может быть и без иных внутренних блоков, тогда она работает, как управляемый переключа-тель

Page 25: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

25

.Поведение Е-подсистемы можно изменить в окне параметров блока Enable.

В нем определена реакция подсистемы на управляющий сигнал:

held (сохранение)– использовать предыдущее состояние (разрешить рабо-ту),

reset (сброс) – использовать начальное состояние (не работать).

Т-подсистема. При создании Т-подсистемы в пустую подсистему заносится блок Trigger, который ни с чем не соединяется, так как он только разрешает работу внутренних блоков подсистемы при перепаде сигнала на управляющем входе.

Page 26: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

26

Поведение Т-подсистемы можно изменить в окне параметров блока Trigger.

В нем определена реакция подсистемы на управляющий сигнал:

rising (рост)– разрешить работу при перепаде вверх,

Page 27: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

27

falling (спад) – разрешить работу при перепаде вниз,

either (оба) разрешить работу при любом перепаде,

function-call (вызов функции) - разрешить работу по логике функции.

ЕТ-подсистема. При создании ЕТ-подсистемы в пустую подсистему заносятся блоки Enable и Trigger. Приоритетным является вход Enable. С блоками Enable и Trigger ЕТ-подсистемы можно работать независимо друг от друга.

2.3. Основные библиотеки Simulink

В пакете Simulink используются две основные библиотеки: Главная – Simulink, Библиотека расширений - Simulink Extras.

На рисунке показано окно браузера (обозревателя) главной библиотеки Simu-link. Оно состоит из двух панелей. В левой панели отображается иерархически организованное оглавление библиотеки. Оно отображается в традиционном стиле: значок «+» слева от имени компонента означает, что внутри есть вло-женные компоненты. При открытии компонента (щелчком мыши по нему) ниже отображается список вложенных компонентов. Значок при этом меняется на «-». Выбор компонента в левой панели щелчком мышью по нему приводит к вы-

Page 28: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

28

делению этого компонента цветом и отображению в правой панели компонент, входящих в его состав. Компоненты в правой панели отображаются текстовы-ми именами и значком слева от имени, который внешним видом подсказывает функциональное назначение компонента. Компонент в правой панели можно выбрать аналогично. В поле над полями выводится текстовое описание вы-бранного компонента. Компоненты из библиотеки можно мышью переносить в окно модели.

Page 29: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

29

Page 30: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

30

Основная библиотека Simulink

Подбиблиотека Назначение

Commonly Used Blocks Обычно используемые блоки

Continuous Непрерывные компоненты

Discontinuous Дискретные (линейные) компоненты

Discrete Дискретные компоненты

Logic and Bit Operation Логические и битовые операции

Lookup Tables Просмотр таблиц

Math Operations Математические операции

Model Verification Верификация модели

Model-Wide Utilities Утилиты расширения модели

Ports & Subsystems Порты и подсистемы

Signal Attributes Атрибуты сигнала

Signal Routing Маршрутизация сигнала

Sinks Регистрирующие устройства

Sources Источники сигналов и сообщений

User-Defined Functions Функции, определяемые пользователем

Additional Math & Discrete Дополнительные математические и дискретные

При выборе в левой панели браузера конкретной подбиблиотеки в правой па-нели отображается ее содержимое. Для иллюстрации приведено окна браузе-ра для подбиблиотеки Continuous основной библиотеки Simulink.

Page 31: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

31

В подбиблиотеки основной библиотеки Simulink входят разнообразные компо-ненты, каждую из которых можно использовать.

Библиотека расширений Simulink Extras. Окно браузера (обозревателя) библиотеки расширений Simulink Extras. Для определенности отображено содержимое подбиблиотеки дополнительных получателей.

Page 32: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

32

Page 33: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

33

Компоненты телекоммуникационных систем. Дополнительно для модели-рования телекоммуникационных систем можно применить компоненты, кото-рые содержатся в наборах (Blocksets) разного назначения:

Communications Blockset – компоненты телекоммуникационных систем.

Signal Processing Blockset – компоненты для обработки сигналов.

Simulink Fixed Point – компоненты сдля работы в форматах с фиксирован-ной точкой.

RF Blockset – компоненты для радиочастотных цепей.

CDMA Reference Blockset – компоненты для систем с кодовым разделением каналов.

Embedded Target for TI С2000, Embedded Target for TI С6000– компоненты для работы с цифровыми сигнальными процессорами (ЦСП) компании Tex-as Instruments.

Embedded Target for Motorola MPC555, Embedded Target for Motorola HC12 - компоненты для работы с микроконтроллерами и ЦСП компании Motorola.

SimPowerSystem - компоненты энергетических систем.

Подбиблиотеки наборов Blockset включают подбиблиотеки, в которых компо-ненты сгруппированы по функциональному назначению.

3. Логические операции

Блок логических операций Logical Operator. Этот блок позволяет выполнить любую из известных базовых логических операций. Могут быть заданы следующие логические операции:

AND – логическое умножение (операция И).

OR – логическое сложение (операция ИЛИ).

NAND – операция НЕ- И.

NOR – операция НЕ – ИЛИ.

XOR – операция Исключающее ИЛИ.

NXOR – операция НЕ - Исключающее ИЛИ.

NOT – операция логического отрицания (НЕ).

4. Переключатели

Переключатели используются для изменения путей передачи данных. В Simu-link определены блоки:

Управляемый переключатель Switch – это переключающее устройство с тремя входами: двумя крайними для данных и одним (средним) для сигнала управления. Первый вход выбирается, когда сигнал управления больше по-рога. В противном случае выбирается второй сигнал.

Page 34: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

34

Ручной переключатель Manual Switch – это переключающее устройство с двумя входами для сигналов данных. Управление осуществляется пользователем двойным щелчком мыши по переключателю.

Многопортовый переключатель Multiport Switch - это переключающее уст-ройство с множеством входов сигналов. Управление осуществляется сиг-налом управления, который задает номер выбираемого вход, можно ис-пользовать для моделирования шифратора и дешифратора.

Шифратор. Из множества входов выбирает вход с заданным номером.

Дешифратор. Передает вход на выход с заданным номером.

5. Управление передачей данных

Для управления передачей данных используются:

Дешифратор преобразует номер канала, в код с 1 в позиции номера. На-пример, 4 => [1 0 0 0]. Используется для формирования сигнала разрешения канала с выбранным номером.

Шифратор. Работает обратно дешифратору, формируя номер канала, на котором обнаружен код 1. Например, [1 0 0 0] => 4. Используется для фор-мирования сигнала разрешения работы для устройств канала с выбранным номером.

Мультиплексер объединяет сигналы разных линий на одну линию.

Демультиплексер разводит сигнал одной линии на разные линии

6. Счетчики

Счетчик меняет свое состояние под действием входного сигнала Inc. Различа-ют счетчики:

Суммирующий. В нем состояние увеличивается от 0 до максимально воз-можного значения Max.

Вычитающий. В нем состояние уменьшается от Max до 0.

С автосбросом. В нем при достижении предельного значения восстанавли-вается исходное состояние.

Со сбросом по внешнему сигналу Rst. В нем исходное состояние устанав-ливается внешним сигналом.

С формированием сигнала Hit при достижении промежуточного значения. Сброс счетчика в исходное состояние может осуществляется сигналом Hit.

7. Триггеры

7.1. SR триггер

Имеет два информационных входа:

S (Set – установка),

Page 35: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

35

R (Reset – сброс).

Реализации RS триггера, условное графическое обозначение при исполнении в виде интегральной схемы и таблица переходов^

S R Выход Q Инверсия Q Режим

0 0 Q(n-1) Инверсия Q(n-1) Хранение

1 0 1 0 Запись 1

0 1 0 1 Сбос в 0

1 1 0 0 Запрет

7.2. D триггер

D триггер имеет один информационный вход D (Delay – задержка или Data - данные) и вход синхронизации С (Clock). Значение D запоминается по сигналу C=1. Условное графическое изображение и таблица переходов:

Page 36: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

36

C D Выход Q Режим

0 0 Q(n-1) Хранение

0 1 Q(n-1) Хранение

1 0 0 Сбос в 0

1 1 1 Запись D

JK триггер имеет 2 информационных входа J (Jump – прыжок) и К (Kill – убить), вход синхронизации С (Clock). Если С=0, то триггер находится в режиме хране-ния. При С=1 триггер работает как RS триггер за исключением J=K=1. В этом случае происходит инверсия предыдущего состояния (режим счета). Условное графическое обозначение и таблица переходов JК триггера.

C J K Выход Q Режим

0 0 или 1 0 или 1 Q(n-1) Хранение

1 0 0 Инверсия Q(n-1) Хранение

1 1 0 1 Запись 1

1 0 1 0 Сбос в 0

1 1 1 Инверсия Q(n-1) Счет

Page 37: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

37

7.3. JK триггер

JK триггер имеет 2 информационных входа J (Jump – прыжок) и К (Kill – убить), вход синхронизации С (Clock). Если С=0, то триггер находится в режиме хране-ния. При С=1 триггер работает как RS триггер за исключением J=K=1. В этом случае происходит инверсия предыдущего состояния (режим счета). Условное графическое обозначение и таблица переходов JК триггера.

C J K Выход Q Режим

0 0 или 1 0 или 1 Q(n-1) Хранение

1 0 0 Инверсия Q(n-1) Хранение

1 1 0 1 Запись 1

1 0 1 0 Сбос в 0

1 1 1 Инверсия Q(n-1) Счет

7.4. T триггер

Т триггер имеет единственный вход Т, на который поступают тактовые импуль-сы. Поскольку Т триггеры работают только в режиме счета, Т-вход называют счетным входом триггера. Счѐтным называется режим, при котором триггер с каждым активным синхросигналом (тактовым импульсом) переключается в противоположное состояние.

Условное графическое обозначение и таблица переходов Т триггера:

Page 38: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

38

Вход T Выход Q Режим

0 Q(n-1) Хранение

1 Инверсия Q(n-1) Счет

В интегральном исполнении Т триггеры не выпускаются, поскольку легко могут быть построены на основе D или JK триггеров.

8. Фильтры

В фильтрах, реализованных в Simulink, возможны 4 типа:

Lowpass – фильтр нижних частот.

Highpass – фильтр верхних частот.

Bandpass – полосно-пропускающий фильтр.

Bandpass – полосно-пропускающий фильтр.

Для каждого аналогового фильтра возможны методы расчета, использующие математические формулы:

Batterworth. АЧХ плоская в полосе пропускания.

Chebyshev 1. АЧХ с пульсациями в полосе пропускания.

Chebyshev 2. АЧХ с пульсациями в полосе задерживания.

Elliptic. АЧХ с пульсациями и в полосе пропускания,.и в полосе задержива-ния.

Цифровой фильтр реализуется с помощью ЦОС. По сравнению с аналоговыми фильтрами в цифровых фильтрах могут использоваться более сложные алго-ритмы для получения наилучших характеристик.

В цифровых фильтрах реализуются две структуры:

КИХ – с конечной импульсной характеристикой. Реализуется в виде кас-кадно-включенных элементов задержки, выходы которых умножаются на коэффициенты фильтра и суммируются. Импульсная характеристика ко-нечна, потому что в фильтре нет обратных связей.

БИХ – с бесконечной импульсной характеристикой. Такой фильтр реали-зуется в виде каскадно-включенных элементов задержки, выходы которых умножаются на коэффициенты фильтра и суммируются. Дополнительно

Page 39: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

39

в фильтре есть обратные связи. Импульсная характеристика бесконечна, потому что в фильтре есть обратные связи, приводящие к бесконечной циркуляции данных по петле обратной связи.

9. Модемы

Физические свойства реального канала связи предъявляют требования к па-раметрам передаваемого по ним сигнала. Многие каналы связи (например, радиоканалы) имеют полосу пропускания, не совпадающую со спектром пер-вичного сигнала. Например, для передачи речевого сигнала со спектром до 3,4 кГц с помощью радиоволн потребуется антенна размером около 25 км. Если же использовать передачу на частотах около 300 МГц потребуется антенна размерами меньше 1 м.

По этой причине при передаче спектр первичного сигнала должен быть пере-несен в полосу пропускания канала, а при приеме извлечен оттуда. Первая операция называется модуляцией (ее выполняет модулятор), вторая - демо-дуляцией (ее выполняет демодулятор). Кроме того, применение модуляции позволяет передавать по одному и тому же каналу связи множество сигналов на разных несущих. Совокупность модулятор/демодулятор – это модем.

При передаче сигналов по линиям связи прямая передача не всегда возможна, так как физическая среда распространения не согласуется с сигналом. Поэто-му для передачи используется боле высокочастотное колебание – переносчик (несущая - carrier). Параметры переносчика меняются по закону первичного сигнала. Процесс изменения называется модуляцией.

В зависимости от того, какой параметр несущей модулируется, различают ам-плитудную (АМ), частотную (ЧМ) и фазовую (ФМ) модуляцию. Устройство, ис-полняющее этот процесс, называется модулятором.

При приеме первичный сигнал извлекается из принятого сигнала. Процесс извлечения называется демодуляцией. модуляцию. Устройство, исполняющее этот процесс, называется демодулятором.

Модулятор и демодулятор образуют комплекс, который называется модемом. Известны аналоговые и цифровые модемы.

Цифровые ФM (PSK = Phase Shift Keying) модемы используют фазовую моду-ляцию с несколькими значениями фазы. Применяются разновидности PSK:

BPSK (Binary PSK). Использует 2 фазы. Кодовая комбинация, передавае-мая на одном такте - 1 бит со значениями 0 или 1. Это означает самую низ-кую скорость передачи, но самую высокую помехозащищенность.

QPSK (Quadro PSK). Использует 4 фазы. Кодовая комбинация, передавае-мая на одном такте - 2 бита со значениями 0 или 1. Скорость передачи в 2 раза выше, чем для BPSK, но помехозащищенность ниже..

Page 40: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

40

MPSK (Multiple PSK). Использует M фаз.. Кодовая комбинация, передавае-мая на одном такте, имеет длину К, зависящую от М (М=2К). При M>4 ско-рость передачи выше, чем для BPSK или QPSK, но помехозащищенность ниже..

Для каждого метода возможны 2 реализации модема:

Обычная (BPSK, QPSK, MPSK). В них кодовым словом определяется значе-ние фазы передаваемого сигнала. В демодуляторе нужна начальная фаза, иначе возможна «обратная работа», когда все принятые биты инвертирова-ны.

дифференциальная.(DBPSK, DQPSK, DMPSK). В них кодовым словом оп-ределяется приращение фазы передаваемого сигнала.

Цифровой модем Rectangular_QAM использует квадратурную амплитудную модуляцию (КАМ). Модулированный сигнал содержит квадратурные компонен-ты. Это косинусная (или синфазная) и синусная (или противофазная). При их суммировании получается амплитудно-фазовая модуляция.

На каждом такте передаваемый сигнал можно представить как вектор опреде-ленной амплитуды и фазы. Концы векторов могут попадать в точки, которые образуют созвездие. Количество точек в созвездии M=2K, K – длина кодовой комбинации (KK).

Длина кодовой комбинации K, передаваемой на одном такте, зависит от числа точек в созвездии M=2K. Например, при K=4 M=16. Скорость передачи в моде-ме КАМ выше, чем в модемах QPSK и BPSK, так как у них М выше.

Помехозащищенность зависит от расстояния между точками в созвездии. На-пример, при одном и том же высоком М, КАМ лучше, чем M-PSK, так как точки в созвездии более разнесены.

Наиболее распространен модем Rectangular_QAM, в котором созвездие –набор точек на прямоугольной решетке.

10. Кодеки

10.1. Кодирование канала

Под кодированием понимается процедура сопоставления дискретному сооб-щению c алфавитом А (например, буквы латиницы) кодовой последовательно-сти В, представляющих собой комбинации из элементов алфавита В (напри-мер, символы 0 и 1). С помощью кодирования решаются следующие задачи:

Согласование алфавита источника сообщений с алфавитом канала, для этого используются примитивные коды.

Уменьшение или полное устранение избыточности, содержащейся в сооб-щении («сжатие» информации). Для этого предназначены экономные коды.

Page 41: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

41

Обнаружение или исправление ошибок, возникающих в канале связи из-за помех и искажений сигнала. Для этого используются помехоустойчивые (или канальные) коды. В них в сообщение вносится избыточность (прове-рочные символы) с целью повышения помехозащищенности. Передаваемый код содержит две части - информационную и проверочную

Кодер может быть составным и содержать каскадное соединение относитель-но простых кодеров, решающих свои задачи.

При передаче данных с кодированием данные от источника (примитивный код) передаются кодеру источника, который осуществляет их преобразование, ис-пользуя экономные коды. Полученный код передается в кодер канала, который осуществляет помехоустойчивое кодирование, добавляя в код проверочные символы. Сформированный код направляется передатчику, который передает данные через канал связи приемнику. В канале связи на сигнал налагаются помехи, которые могут вызвать ошибки. Приемник выделяет из сигнала код и направляет его декодеру канала, который осуществляет обнаружение и ис-правление ошибок. Затем код передается декодеру источника, в котором осу-ществляется операция, обратная кодеру источника. Восстановленное сообщение адресуется получателю.

Примитивные коды. Пример примитивного кода - ASCII (American Standard Code for Information Interchange) – американский стандартный код обмена информацией. Каждый символ кодируется 8-разрядной комбинацией двоичных чисел. Все комбинации являются разрешѐнными, их общее число 28=256.

Процедура кодирования проста: символы нумеруются от 0 до 255, а номер записывается в двоичной системе счисления.

Так как в примитивном коде все комбинации разрешены, любая одиночная ошибка приводит к новой разрешѐнной комбинации и поэтому не может быть обнаружена или исправлена.

Экономные коды. Известны следующие основные экономные коды:

Page 42: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

42

Шеннона-Фано и Хаффмена. В этих кодах применяется перекодирование, при котором часто встречающимся символам присваиваются коды меньшей длины. Обычно для этих кодов учитывается частота появления букв в языке сообщения, часто встречающимся буквам соответствуют коды меньшей длины. Коды отличаются алгоритмами реализации идеи.

Зива-Лемпела. Используется в архиваторах Winzip и WinRar. Основан на алгоритмах, разработанных математиками Зивом и Лемпелом из Израиля. Программный код создан программистом из США Велчем. В них слова пе-редаваемого сообщения анализируются для формирования словаря, в ко-тором обнаруженным словам присваиваются кодовые номера. В канал свя-зи передаются коды слов и сам словарь, по которому в точке приема исход-ный код восстанавливается.

Помехоустойчивое кодирование. Проблема повышения верности передачи информации обусловлена несоответствием между требованиями, предъяв-ляемыми к точности данных и качеством реальных каналов связи. В сетях пе-редачи данных требуется обеспечить верность не хуже 10-6 - 10-9, а при ис-пользовании реальных каналов связи и простого кода она не превышает 10-2 - 10-5.

Существуют два способа борьбы с помехами:

Кодирование для обнаружения ошибок – приемник обнаруживает ошибку и по каналу обратной связи направляет запрос на повторную передачу дан-ных. Метод применяется для каналов с малой вероятностью ошибок.

Кодирование для исправления ошибок – приемник обнаруживает и исправ-ляет ошибку. Метод применяется для каналов с высокой вероятностью ошибок. Использование даже простейших кодов с исправлением ошибок по-зволяет уменьшить вероятность ошибок в тысячи раз.

Одним из путей решения задачи повышения верности в настоящее время яв-ляется использование специальных процедур, основанных на применении помехоустойчивых (корректирующих) кодов. Примеры систем, где в настоящее время оно используется:

Накопители данных на носителях с высокой плотностью (магнитные носи-тели, CD-ROM, DVD).

Системы передачи с ограниченной мощностью сигнала (спутниковая и мо-бильная связь).

Системы передачи по сильно зашумленным каналам (мобильная связь, высокоскоростные линии связи).

Каналы связи с повышенными требованиями к надежности информации (вычислительные сети, линии со сжатием данных).

Page 43: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

43

Принципы построения кода. В простых кодах для передачи информации используются все кодовые слова (комбинации), количество которых равно N=qn (q - основание кода, а n - длина кода). Кодовые слова отличаются друг от друга одним символом, поэтому даже один ошибочно принятый символ приво-дит к замене одного кодового слова другим и, следовательно, к неправильному приему сообщения в целом.

Помехоустойчивыми называются коды, позволяющие обнаруживать и (или) исправлять ошибки в кодовых словах, которые возникают при передаче по каналам связи. Эти коды строятся таким образом, что для передачи сообще-ния используется лишь часть кодовых слов, которые отличаются друг от друга более чем в одном символе. Эти кодовые слова называются разрешенными. Остальные кодовые слова относятся к числу запрещенных и могут появиться при декодировании из-за наложения помех в канале связи.

Применение помехоустойчивых кодов для повышения верности передачи дан-ных связанно с решением задач кодирования и декодирования:

Задача кодирования заключается в получении при передаче для каждой k - элементной комбинации из множества qk соответствующего ей кодового слова длиною n из множества qn. Обязательно k<n.

Задача декодирования состоит в получении k - элементной комбинации из принятого n - разрядного кодового слова при одновременном обнаружении или исправлении ошибок.

Основные параметры помехоустойчивых кодов. В помехоустойчивых (или канальных) кодах в сообщение U с целью повышения помехозащищенности вносится избыточность, добавляются проверочные символы. Основные параметры кодов:

Длина кодового слова – n.

Длина информационной последовательности (message - сообщение) – k.

Длина проверочной последовательности (parity - проверка) – r = n-k.

Кодовое расстояние Хэмминга D - это число позиций, в которых два разре-шенных кодовых слова отличаются друг от друга.

Кодовое расстояние Dmin - это наименьшее D между различными парами кодовых слов.

Кратность обнаруживаемых ошибок TО. Обнаруженная ошибка может ис-правляться или «стираться». Стиранием называется "потеря" значения пе-редаваемого символа в некоторой позиции кодового слова, которая извест-на.

Кратность исправляемых ошибок TИ.

Кратность исправлений стиранием TС. В этом случае при обнаружении ошибки код сообщения делается «неизвестным»

Page 44: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

44

Требуемое кодовое расстояние D определяется способом обработки ошибок:

D ≥TО+1, если ошибки только обнаруживаются,

D ≥ TО + TИ +1, если часть ошибок исправляется, а часть только обнаружи-вается (приTО>TИ),

D ≥2TИ +TС, если часть ошибок исправляется, а часть стирается,

Код с неупорядоченным размещением символов называется несистематиче-ским. Код, в котором каждое кодовое слово начинается с информационных символов и заканчивается проверочными символами, называется системати-ческим. Систематические коды проще в реализации и поэтому используются чаще.

Различают классы помехоустойчивых кодов:

Коды с контролем четности. В них в кодовом слове V контролируется чет-ность или нечетность количества 1.

Линейные блоковые. В этих кодах размеры информационной и управляю-щей частей фиксированы. Передача в канал связи осуществляется блока-ми. Символы в коде могут иметь разную размерность (например, двоичный символ может иметь значения 0 или 1).

Сверточные. В них выходной код генерируется и передается в канал связи посимвольно. В точке приема декодирование осуществляется по алгоритму Витерби.

В технике кодирования используется модульная арифметика. Для двоичных кодов определены два правила:

Сложение Умножение

0 0 = 0 0 0 = 0

0 1 = 1 0 1 = 0

1 0 = 1 1 0 = 0

1 1 = 0 1 1 =1

Отличие от обычной арифметики – игнорирование единиц переноса.

При кодировании пространство сообщения U отображается в пространство кодовых слов V. Например, для 8-и битового сообщения возможно K=28=256 значений.

Наборы значений U и V определяют их векторные пространства, размеры ко-торых определяются значениями n, k. Например, для кода (n=10, k=8) размеры пространства сообщения K=28=256 и кодовых слов N=210=1024. Всегда N>K, поэтому в пространстве V есть неиспользуемые значения (их количество опре-деляет исправляющую способность кода). Значения V в окрестности разре-шенных образуют области решений. Декодер возвращает разрешенный код области, в которую попадает принятый код R.

Page 45: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

45

Различие кодовых слов V1 и V2 оценивается расстоянием Хэмминга D(V1,V2), которое равно числу неодинаковых символов. Например:

V1 100101101

V2 011110100

D(V1,V2) 6

Для множества векторов существует минимальное расстояние Dmin. Оно оп-ределяет помехозащищенность кода. Если, например, Dmin=1, то даже оди-ночная ошибка превратит кодовое слов в другое разрешенное. Если же, на-пример, Dmin=4, то даже тройная ошибка может быть обнаружена. Вообще, кратность обнаруживаемой ошибки TО=Dmin-1.

Для иллюстрации определения и исправления ошибок в коде с Dmin=5 показа-ны области для разрешенных кодов V1 (слева) и V2 (справа). Стрелками пока-заны разрешенные значения V1 и V2, а точками неразрешенные значения V. При декодировании возможны разные ситуации:

Если передавался код V1 и R=V1, то ошибок нет.

Если передавался код V1 и R=V2, то ошибка есть, но она не обнаруживает-ся.

Если передавался код V1, R≠V1 и R попадает в область V1, то ошибка об-наруживается и исправляется (для R1 и R2).

Если передавался код V1, R≠V1 R≠V2 и R попадает в область V2, то ошиб-ка обнаруживается, но не исправляется (для R3 и R4).

Page 46: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

46

Для определения максимального числа гарантированно обрабатываемых од-нократных ошибок в одном кодовом слове:

в режиме обнаружения TО=Dmin-1,

в режиме исправления TИ=ceil((Dmin-1)/2).

Если Dmin=1, то TО =0, TИ =0. Разрешены все V, ошибки приводят к возникно-вению только разрешенных V и поэтому не обнаруживаются. Нельзя в частно-сти обнаружить ошибки в примитивном коде.

Если Dmin=2, то TО =1, TИ =0. Разрешенные V отличаются в двух битах, между соседними разрешенными V есть одно не разрешенное. Однократная ошибка превращает разрешенное V в неразрешенное и может быть обнаружена. Од-нако исправить такую ошибку нельзя.

Если Dmin=5, то TО =4 и TИ =2. Исправляются однократные (R1) и двукратные (R2) ошибки. Ошибки с большей кратностью (R3 и R4) можно только обнару-жить.

10.2. Коды с контролем четности

В этих кодах в V добавляются биты четности p, которые определяют количест-во 1 в V. Возможны коды с проверкой на четность (even parity) или нечетность (odd parity). При контроле четности p=0, если в U число 1 четное, и p=1, если оно нечетные. При, контроле нечетности наоборот.

Известны коды с контролем четности:

Код с одним битом проверки на четность.

Матричный код (прямоугольный), в нем используется несколько битов чет-ности.

Код с одним битом проверки четности. В этом коде V=U+p, p – бит контроля четности. Для определенности рассмотрим код с контролем четности. В нем p=0, когда число 1 в U четное, и p=1 в противном случае. В итоге V общее число единиц должно быть четным. Если при приеме четность нарушена, то обнаруживается ошибка, но исправить ее невозможно.

В качестве примера рассмотрим код с проверкой на чѐтность (9,8). В нем к 8 информационным разрядам добавляется девятый. Общее число комбинаций равно N=29=512, из них K=28=256 разрешѐнные, а остальные N−K=256 – за-прещѐнные. Девятый символ – проверочный, он получается из 8 информаци-онных разрядов сложением по модулю 2:

b8=b0b1b2b3b4b5b6b7.

Если число единиц в информационных символах нечетное, то результат равен 1, добавляется проверочный символ 1, и общее число символов 1 делается

Page 47: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

47

четным. Комбинации, содержащие нечѐтное число единиц, являются запре-щѐнными, их ровно половина. Это означает, что Dmin=2, TО =1, TИ =0.

Если в канале связи произойдут ошибки нечѐтной кратности (1, 3, 5, 7, 9) в одной кодовой комбинации, то число единиц в комбинации станет нечѐтным. Появление на приѐме запрещѐнной комбинации – признак ошибки. Если же в канале произойдут ошибки чѐтной кратности (2, 4, 6, 8), число единиц останет-ся чѐтным, и такая ситуация окажется незамеченной декодером.

Возможно и ложное обнаружение ошибки, когда она происходит в проверочном символе.

Матричный код. Матричный код (n,k) содержит n разрядов, из которых k – информационные. Он используется не только для обнаружения ошибок, но и для исправления одиночных ошибок. Рассмотрим его принцип на примере кода (25,16). Из 25 двоичных разрядов 16 являются информационными. Сле-довательно, из общего числа N=225=33554432 возможных комбинаций K =216 = 65536 являются разрешѐнными, а остальные N-K=33554432-65536=33488896 запрещѐнными.

Код строится следующим образом. Из 16 информационных символов строится матрица размерностью 4x4 (выделена рамкой). Затем к каждой строке и к каж-дому столбцу информационной матрицы добавляется один символ проверки на чѐтность (выделены цветом) с помощью операции сложения по модулю 2.

Последний элемент с номером 24 (выделен полужирным шрифтом) представ-ляет собой символ проверки на чѐтность всех информационных элементов. Его также можно получить путѐм сложения по модулю 2 проверочных элемен-тов либо в столбце 4, либо в строке 4.

№ 0 1 2 3 4

0 b0 b1 b2 b3 b4

1 b5 b6 b7 b8 b9

2 b10 b11 b12 b13 b14

3 b15 b16 b17 b18 b19

4 b20 b21 b22 b23 b24

В канал передаются 25 символов, из которых 9 проверочные. При приеме про-верочные символы анализируются, по их значениям принимается решение. Матричный код может использоваться в двух режимах: обнаружения и исправ-ления.

В режиме исправления матричный код позволяет гарантированно исправить одну одиночную ошибку. Она приводит к нарушению чѐтности в некоторой

Page 48: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

48

строке и столбце. Их перекрестие точно указывает на ошибочный элемент, который для исправления нужно инвертировать.

В режиме обнаружения матричный код позволяет гарантированно обнаружить все ошибки нечѐтной кратности, а также большинство ошибок чѐтной кратно-сти.

Возможно и ложное обнаружение ошибок, когда они происходят в проверочных символах.

10.3. Блочные коды

Это коды, в которых кодовое слово V имеет фиксированную длину (n). Вектор V содержит информационную часть (k позиций) и контрольную часть (r=n-k позиций). Информационная часть включает слово источника информации. Кон-трольная часть включает значение, которому можно поставить в соответствие обнаруживаемую ошибку.

Различают две структуры блочного кода:

Систематический код. В нем биты проверки p1,p2,…pr размещаются в левой части слова V, а информационные биты m1,m2,…mk - в правой час-ти слова V в инверсном порядке.

U V

m1, m2,…mk p1, p2,…pr mk,…m2, m1

Несистематический код. В нем биты проверки p1,p2,…pr размещаются в правой части слова V, а информационные биты m1,m2,…mk - в левой час-ти слова V.

U V

m1,m2,…mk m1, m2,…mk p1,p2,…pr

10.4. Линейные блочные коды

Это коды, в которых кодовое слово V имеет фиксированную длину (n). Резуль-татом сложения по модулю 2 двух его кодовых слов является кодовое слово этого же кода. Вектор V содержит информационную (k позиций) и контрольную (r=n-k позиций) части. Пространство контроля включает 2r значений, каждому из которых можно поставить в соответствие обнаруживаемую ошибку. В каче-стве примера рассмотрим код (n=4, k=2).

Линейный блочный код (4,2). Кодер преобразует сообщение источника U с k=2 в кодовое слово V с n=4. Пространство U включает (2k=22=4) кода сообще-ний (двоичные числа 00, 01, 10, 11). Им нужно поставить в соответствие столь-ко же кодовых слов длиной (2n=24=16) бит в пространстве V. Целесообразно выбрать кодовые слова, максимально удаленные друг от друга, чтобы увели-чить Dmin. В примере они выделены цветом, Dmin=2.

Page 49: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

49

Вектор V содержит (r=n-k=2) старших позиций и k=2 младших позиций. сооб-щению U слева добавлены особым образом сформированные 3 бита провер-ки, являющиеся номером подпространства. Пространство V включает 2n=24=16. Из него нужно для каждого U выбрать значения. Пусть сделан выбор, при котором:

U 00

01

01

11

V r 00

00

00

00

01

01

01

01

10

10

10

10

11

11

11

11

k 00

01

10

11

00

01

10

11

00

01

10

11

00

01

10

11

Порождающая матрица. Сообщение источника U преобразуется в кодовое слово V умножением на порождающую матрицу G

GUV .

Матрица G имеет размерность (k, n). Она содержит k линейно независимых строк, которые могут порождать все кодовые слова V. В примере их 3 - G1, G2, G3. Матрицу G можно представить, как совокупность двух подматриц: прове-рочной P и единичной I. Подматрица I размером (k, k) обеспечивает перенос в код V сообщения U (это обеспечивает формирование систематического кода). Подматрица P размером (k, n-k) формирует проверяющие биты. В ее столбцах размещены линейно независимые векторы из списка синдромов (см. ниже). В примере в подматрице P произвольно выбраны 3 вектора из 8 возможных (100, 010, 001), при таком выборе в векторе V . Матрица G:

2,4

1 1010 10 10

2 0101 01 01

GG P I

G

.

Покажем, как происходит формирование кодового слова V для U=110:

1010(11) 1 (1010) 1 (0101) (1111)

0101V

.

Синдромное декодирование. При приеме осуществляется синдромное деко-дирование. В медицине синдром – это признак болезни. По аналогии при деко-дировании обнаружение синдрома – это поиск ошибки по признаку. Синдром имеет уникальное значение из (n-k) бит. Каждому синдрому ставится в соот-ветствие обнаруживаемая ошибка, искажающая принимаемый код.

В примере таблица синдромов имеет 2(n-k)=22=4 значений: одно для отсутствия ошибки, 3 для однобитовых ошибок, одно для произвольно назначенной двух-битовой ошибки. Ошибка E – код длиной n с 1 в одном бите для одиночных ошибок.

Page 50: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

50

Синдром S Ошибка E Комментарий

00 000000 Ошибки нет

01 100000 Ошибка в бите 0

10 010000 Ошибка в бите 1

11 001000 Ошибка в бите 2

В таблице ниже в строке, выделенной цветом, показаны возможные правиль-ные значения V (выбраны 7=n-1 произвольных комбинаций), для них помеха и синдром равны нулю. Для других синдромов в строках представлены коды помехи и коды, получающиеся из-за ее наложения (в позиции, где символ кода помехи равен 1, происходит инверсия бита кодового слова).

Синдром S Помеха E Кодовые слова

00 0000 0000 0101 1010 1111

01 1000 1000 1101 0010 0111

10 0100 0100 0001 1110 1011

11 0010 0010 0111 1001 1101

Легко убедиться в том, что сложение по модулю 2 кода с ошибкой и кода поме-хи приводит к исправлению ошибки. Код помехи может быть получен из таб-лицы синдромов по значению S. В декодере синдром должен быть вычислен.

Проверяющая матрица. Для вычисления синдрома S в декодере используется проверяющая матрица H, формируемая из порождающей матрицы G. Она имеет строки, ортогональные строкам матрицы G и состоит из двух подматриц: единичной I размером (k, n-k) и проверяющей PT размером (k, k), которая пред-ставляет собой транспонированную подматрицу P из G. В примере проверяю-щая матрица H имеет вид:

2,4

10 10 1010

01 01 0101

TH I P

.

В декодере принятый код R умножается на матрицу HT, которая получается транспонированием проверочной матрицы H, и образуется синдром S

THRS .

Если для принятого кодового слова S=0, то ошибки нет или она не обнаружи-вается. В противном случае по значению S из таблицы синдромов определяет-ся код ошибки E, который вычитается из R сложением по модулю 2.

В примере транспонированная проверяющая матрица

Page 51: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

51

10

01

10

01

TH

.

Теперь вычислим S. Если U=11, V=1111, E=1000, то будет принят R=0111 c ошибкой, ее синдром S=01.

10

01(0111) 0 (10) 1 (01) 1 (10) 1 (01) (10)

10

01

S

.

Для S=01 из таблицы синдромов находится E=1000, сложение которого с R по модулю 2 восстанавливает код V:

0111 1000 1111V R N .

Из исправленного слова V выделяем в правых позициях U=11.

Моделирование в MATLAB. В примере программы демонстрируется исполь-зование встроенных функций MATLAB для анализа линейного блочного кода (6,3) В программе использованы имена переменных, совпадающие со справ-кой MATLAB. В программе:

выбирается блочный код (6,3),

создается и отображается порождающая матрица genmat,

из genmat определяется и отображается проверяющая матрица parmat,

по parmat строится и отображается таблица синдромов trt, при ее создании автоматически создаются синдромы всех одиночных ошибок и сколько мож-но двойных (о чем сообщается на английском языке),

задается и отображается матрица сообщений msg,

для msg генерируются и отображаются коды code,

задается и отображается передаваемое сообщение msgT,

для msgT генерируется и отображается передаваемый код codeT,

задается принимаемый код codeR с одиночной ошибкой,

для codeR вычисляется синдром S, значения которого выводятся в деся-тичной и двоичной формах,

по значению S из таблицы синдромов trt извлекается код ошибки E для кор-рекции,

с помощью E генерируется скорректированный принятый код codeC.

Листинг программы:

Page 52: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

52

Результаты работы программы, выводимые в командное окно MATLAB:

genmat = 1 0 1 0 0 1 0 1 parmat = 1 0 1 0 0 1 0 1 Single-error patterns loaded in decoding table. 1 rows remaining. 2-error patterns loaded. 0 rows remaining. trt =

Page 53: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

53

0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 0 msg = 0 0 0 1 1 0 1 1 code = 0 0 0 0 0 1 0 1 1 0 1 0 1 1 1 1 msgT = 1 1 codeT = 1 1 1 1 codeR = 0 1 1 1 S = 2 (decimal), 1 0 (binary) E = 1 0 0 0 codeC = 1 1 1 1

Данные совпадают с результатами ручного расчета. Получены же они очень быстро и без ошибок. Используйте MATLAB!

10.5. Код Хэмминга

Код Хемминга(n,k) использует n=2r -1 разрядов, из которых r проверочные и k=n-r информационные. Код имеет Dmin=3, TО=2, TИ=1. Он гарантировано об-наруживает и исправляет однократные ошибки и обнаруживает двукратные ошибки.

Для этого кода матрица генератора кода G определена автоматически.

Для иллюстрации правил построения рассмотрим код Хэмминга(7,4) с n=7, k=4, r=3. Из семи двоичных разрядов 4 информационных, следовательно, число разрешѐнных комбинаций K=24=16. Общее число комбинаций N=27=128 , число

Page 54: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

54

запрещѐнных комбинаций N-K=112. Три проверочных разряда получаются из информационных разрядов, например, по выражениям:

b4=b0 b1 b2,

b5=b1 b2 b3,

b6=b0 b2 b3.

Таким образом, каждый из 7 символов участвует хотя бы в одной проверке (символ b2 участвует в трѐх проверках). Эти же равенства используются как проверочные при приѐме кодовой комбинации. Если в одном из разрядов со-держится ошибка, то те равенства, в которых он участвует, не соблюдаются. Так как проверяются 3 равенства, то возможны 23=8 вариантов ситуаций.

В ситуации, когда все равенства выполняются, кодовая комбинация или приня-та безошибочно, или в канале произошли ошибки, приведшие к новой разре-шѐнной кодовой комбинации, т.е. ошибка в кодовой комбинации не обнаруже-на.

В другом случае в зависимости от того, какая из оставшихся семи ситуаций имеет место в конкретном опыте, декодер определяет, какой из семи элемен-тов принят неверно. Например, если не выполняются все 3 проверки, то это указывает на b2, а если не выполняется только одна проверка, например, для b4 , то это указывает на то, что произошла ошибка в самом проверочном сим-воле, в данном случае это b4.

Таким образом, одиночные ошибки не только обнаруживаются, но и могут быть исправлены путѐм замены значения ошибочного элемента. Двойные ошибки обнаруживаются, но не исправляются. Код Хемминга может использоваться в двух режимах:

исправления (гарантировано исправляются все одиночные ошибки в кодо-вой комбинации),

обнаружения ошибок (гарантированно обнаруживаются двойные ошибки).

Моделирование в MATLAB. С использованием встроенных функций MATLAB написана программа, в которой:

выбирается код Хэмминга (7,4), для него m=3,

с помощью функции hamgen(m) определяется и отображается проверочная матрица parmat,

по parmat строится и отображается таблица синдромов trt,

задается и отображается передаваемое сообщение msgT,

для msgT генерируется и отображается передаваемый код codeT,

задается принимаемый код codeR с одиночной ошибкой,

для codeR вычисляется синдром S, значения которого выводятся в деся-тичной и двоичной формах,

по S из таблицы синдромов trt извлекается код ошибки E,

Page 55: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

55

с помощью E генерируется скорректированный принятый код codeC.

Листинг программы:

Результаты работы программы, выводимые в командное окно:

parmat = 1 0 0 1 0 1 1 0 1 0 1 1 1 0 0 0 1 0 1 1 1 trt = 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 msgT = 0 0 1 codeT = 1 1 1 0 0 1 0 codeR =

Page 56: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

56

1 1 1 0 1 1 0 S = 3 (decimal), 0 1 1 (binary) E = 0 0 0 0 1 0 0 codeC = 1 1 1 0 0 1 0

10.6. Циклические блочные коды

При использовании линейных блокчных кодов для защиты данных с большим информационным словом технические затраты непомерно велики. Например, протокол передачи данных ISDN предусматривает сообщение длиной в 2128 бит. Для него линейный блочный код с 16 проверяющими битами потребует порождающей матрицы G размером 2112х2128 и проверяющей матрицы H размером 16х2128. В этом случае предпочтительны циклические коды.

В циклических кодах его разрешенные кодовые слова порождаются друг из друга с помощью циклических сдвигов. Для циклического кода вместо порож-дающей и проверяющей матриц требуется только порождающий многочлен, который используется и при кодировании, и при декодировании. Структура порождающего многочлена определяется тем, что он должен порождать не любой код, а именно циклический.

Размеры памяти для циклического кода невелики. Кроме того кодер и декодер могут быть реализованы аппаратно с использованием регистров сдвига.

Структура кода. Циклический код - это линейный блочный код, к словам кото-рого предъявляются особые требования. Циклический сдвиг разрешенного слова дает другое разрешенное слово этого же кода. Кодовые слова V длиной (n) с номерами символов 0...n-1 представляется многочленами степени (n-1).

01

2

2

1

1 ...)( vxvxvxvxV n

n

Все многочлены делятся без остатка на некоторый многочлен g(x) степени (r=n-k), являющийся сомножителем двучлена Xn+1. Он называется порождаю-щим многочленом. Для конкретного кода g(x) может быть несколько, выбирает-ся любой.

Код может строиться над полем Галуа GF(2n), где n – число двоичных разрядов в символе кода (определяет символы, используемые в коде). Если код постро-ен над полем Галуа GF(21), то код называется двоичным, коэффициенты мно-гочлена v принимают значения двоичной системы счисления V=0, 1. Если код построен над полем Галуа GF(8=23), то код называется восьмеричным, коэф-фициенты многочлена v принимают значения восьмеричной системы счисле-ния v=0, 1, 2, 3, 4, 5, 6, 7.

Page 57: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

57

Примеры:

Двоичный код над полем GF(2=21), возможны значения v=0, 1. При n=6 ко-довому слову V=101101 соответствует многочлен V(x)= x5+x3+x2+1.

Восьмеричный код над полем GF(8=23), возможны значения v=0, 1, 2, 3, 4, 5, 6, 7. При n=6 кодовому слову V=107502 соответствует многочлен V(x)= x5+7x3+5x2+2.

При циклическом сдвиге слова влево все его символы сдвигаются на один разряд влево, освободившийся правый разряд занимает самый левый символ исходного кода. При циклическом сдвиге слова вправо все его символы сдви-гаются на один разряд вправо, освободившийся левый разряд занимает самый правый символ исходного кода. Циклический код реализуется с помощью реги-стра сдвига c обратной связью. В примере представлено слово из 4-ех симво-лов b0, b1, b2, b3.

Для циклического кода используется целочисленная модульная математика. В ней определены операции сложения и умножения по модулю, в которых игно-рируется перенос.

Порождающий и проверяющий многочлен. Кодовое слово V длиной (n) раз-рядов получается из многочлена V(x), который для сообщения U длиной (k) формируется из многочлена U(x) умножением по модулю 2 на порождающий многочлен g(x) порядка (n-k):

Page 58: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

58

)()()( xgxUxV .

Многочлен g(x) строит несистематический код. Для построения систематиче-ского кода нужна порождающая матрица Gn,k , которую можно получить из g(x). Каждая строка в Gn,k - произведение g(x) и xk-1.

Для работы с систематическим кодом используется проверяющая матрица Hn,k, которую можно получить из проверяющего многочлена h(x). Многочлен h(x) в свою очередь формируется из двучлена xn+1 делением на g(x). Каждая строка Hn,n-k - произведение h(x) и xn-k-1.

10.7. Несистематический циклический код

Порождающий и проверяющий многочлен. Кодовое слово V длиной (n) раз-рядов получается из многочлена V(x), который для сообщения U длиной (k) формируется из многочлена U(x) умножением по модулю 2 на порождающий многочлен g(x) порядка (n-k):

)()()( xgxUxV .

В качестве примера рассмотрим несистематический циклический код (n=7, k=3). Для него g(x)=x3+x+1 =1011.

В таблице показаны:

код U с разрядом m=0 справа,

полином U(x), в котором разряду m соответствует xm,

полином V(x),

несистематический код V (получен с помощью порождающего многочлена),

U U(X) V(X) V, nosys

0000 0 0·(x3+x+1) =0 0000000

1000 x3 x3·( x3+x+1) = x6+x4+x3 1011000

0100 x2 x2·( x3+x+1) = x5+x3+x2 0101100

1100 x3+x2 (x3+x2)·( x3+x+1) =x6+x5+x4+x2 1110100

0010 x x·( x3+x+1) =x4+x2+x 0010110

1010 x3+ x (x3+ x)·( x3+x+1) =x6+x3+x2+x 1001110

0110 x2+x (x2+x)·( x3+x+1) =x5+x4+x3+x 0111010

1110 x3+x2+x (x3+x2+x)·( x3+x+1) =x6+x5+x 1100010

0001 1 1·( x3+x+1) =x3+x+1 0001011

1001 x3+1 (x3+1)·( x3+x+1) =x6+x4+x+1 1010011

0101 x2+1 (x2+1)·( x3+x+1) =x5+x2+x+1 0100111

1101 x3+x2+1 (x3+x2+1)·( x3+x+1) =x6+ x5+ x4+x3+x2+x+1 1111111

0011 x+1 (x+1)·( x3+x+1) =x4+x3+ x2+1 0011101

1011 x3+ x+1 (x3+ x+1)·( x3+x+1) =x6+x2+1 1000101

0111 x2+x+1 (x2+x+1)·( x3+x+1) =x5+x4+1 0110001

Page 59: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

59

1111 x3+x2+x+1 (x3+x2+x+1)·( x3+x+1) =x6+x5+x3+1 1101001

При вычислении произведения многочленов приведение подобных членов осуществляются по правилам модульной арифметики. Так x3+x3=0 по прави-лам арифметики по модулю 2, это подобные члены.

Декодирование. В циклических декодерах применяется детектирование c обнаружением и исправлением ошибок. Принятый код R(x) делится на g(x). Частное - декодированное сообщение U(x) с исправлением ошибки, остаток – ошибка E(x).

Пример.

g(x)=x3+x+1=1011,

U(x)=x3=1000,

V(x)=x6+x4+x3=1011000,

E(x)=x5=100000,

R(x)=V(x)+E(x)=x6+x5+x4+x3=1111000.

При декодировании:

R(x)/g(x) = U(x)+E(x),

Частное U(x)= x3=1000, ошибка исправлена,

Остаток E(x)=x5=100000, ошибка установлена.

Систематический циклический код

В качестве примера рассмотрим систематический циклический код (n=7, k=3). Для него g(x)=x3+x+1 =1011, h(x)= (x7+1)/( x3+x+1)= x4+x2+x+1.

Получим для кода порождающую (разряды в строке начинаются с младшего) и проверяющую (разряды в строке начинаются со старшего) матрицы:

1011000

0101100

0010110

00010111

)1(

)1(

)1(

1

)(

)(

)(

)(

346

235

24

3

33

32

3

3

3

24,7

xxx

xxx

xxx

xx

xxx

xxx

xxx

xx

xgx

xgx

xgx

xg

G.

0011101

0111010

11101001

)1(

)1(

1

)(

)(

)(

2346

235

24

242

24

24

2

3,7

xxxx

xxxx

xxx

xxxx

xxxx

xxx

xhx

xhx

xh

H.

Моделирование в MATLAB. В MATLAB для циклических кодов высокоуровне-вые функции по умолчанию поддерживают систематические коды. С использо-ванием этих функций MATLAB написана программа моделирования кодека с циклическим кодом (n,k):

Page 60: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

60

Результаты, выводимые в командное окно: порождающий многочлен, все со-общения и коды.

Вариант 1. Задана однократная ошибка, которая обнаруживается и исправля-ется. В итоге chk=1, декодирование правильное.

genpoly = 1 0 1 1 msg = 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0

Page 61: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

61

0 1 1 1 1 0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1 code = 0 0 0 0 0 0 0 1 0 1 0 0 0 1 1 1 1 0 0 1 0 0 1 0 0 0 1 1 0 1 1 0 1 0 0 1 1 0 0 1 0 1 1 0 0 0 1 1 0 0 0 1 0 1 1 1 1 1 0 1 0 0 0 0 1 1 1 0 0 1 0 0 1 1 0 1 0 1 0 0 1 0 1 1 1 0 1 1 1 0 0 0 0 0 1 1 0 1 0 1 0 1 1 1 0 1 1 1 1 1 1 1 msgT = 0 1 0 0 1 1 1 0 0 1 1 1 1 0 1 0 codeT = 0 1 1 0 1 0 0 0 1 0 1 1 1 0 0 0 1 0 1 1 1 0 0 1 1 0 1 0 noise = 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 msgR =

Page 62: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

62

0 1 0 0 1 1 1 0 0 1 1 1 1 0 1 0 nerrs = 0 1 0 0 chk = 1

Для сообщения 2 возникла помеха: noise(2)≠0. при декодировании ошибка исправлена: msgR=msgT, nerr(2)=1 (одна ошибка в сообщении 2), chk=1 (деко-дирование правильное).

Вариант 2. Порождающий многочлен, все сообщения и коды не выводятся. Задана двукратная ошибка. Обнаружены две ошибки в сообщении 2. Исправ-ляется только одна nerr(2)=1, вторая остается. В итоге chk=0, декодирование неправильное.

msgT = 1 1 1 0 1 0 1 0 1 1 0 0 0 1 1 1 noise = 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 msgR = 1 1 1 0 1 1 1 0 1 1 0 0 0 1 1 1 nerrs = 0 1 0 0 chk = 0

Page 63: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

63

10.8. Коды Боуза-Чоудхури-Хоквингема (BCH)

Код BCH - двоичный циклический код, позволяющий исправлять множествен-ные ошибки с кратностью T. Коды BCH это обобщение кодов Хэмминга с ис-пользованием математики над полями Галуа, GF(2). В них порождающий мно-гочлен синтезируется по специальной методике. В кодах BCH используется двоичный алфавит, длина кодового слова n=2m-1, где m – целое число, начи-ная с 3.

Разработаны таблицы, позволяющие по значениям m, n, k, T выбрать нужный код BCH. Многочлен g(x) в таблицах отображается набором коэффициентов, начиная с высшей степени. Порядок g(x) равен n-k+1. Для расчета g(x) можно использовать функцию bchgenpoly(n,k) в MATLAB.

Примеры из этих таблиц:

m n k T g(x)

3 7 4 1 1011

4 15 11 1 10011

7 2 111010001

5 3 10100110111

5 31 26 1 100101

21 2 11101101001

16 3 1000111110101111

11 5 101100010011011010101

6 7 11001011011110101000100111

При блоках, длина которых несколько сотен, код BCH превосходит все другие блочные коды с той же длиной и степенью кодирования.

Моделирование в MATLAB. С использованием встроенных функций MATLAB написана программа, в которой моделируется код BCH(n,k), который гаранти-рованно исправляет ошибки с кратностью T. Листинг программы:

Page 64: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

64

Вариант 1. Результаты, выводимые в командное окно при T1=T=3, кратность ошибок не превышает исправляющую способность кода. Все ошибки исправляются.

gp = GF(2) array. Array elements = 1 0 1 0 0 1 1 0 1 1 1 T = 3 msgT = GF(2) array. Array elements = 0 0 0 0 0 1 1 0 1 0 1 0 0 1 1 1 1 1 0 0 codeT = GF(2) array. Array elements = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 1 0 0 1 0 0 0 1 1 1 0 0 1 1 0 1 1 1 0 0 0 0 1 0

Page 65: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

65

1 1 1 0 0 0 0 1 0 1 0 0 1 1 0 T1 = 3 noise = 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 cnoisy = GF(2) array. Array elements = 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 1 1 1 0 0 1 1 1 1 0 1 0 0 1 0 1 0 0 0 1 0 0 0 0 1 0 1 0 0 0 1 0 msgR = GF(2) array. Array elements = 0 0 0 0 0 1 1 0 1 0 1 0 0 1 1 1 1 1 0 0 nerrs = 3 3 3 3 chk = 1

Вариант 2. Результаты, выводимые в командное окно при T1=5, T=3, крат-ность ошибок превышает исправляющую способность кода. В модели приня-тые сообщения могут остаться ошибочными, так как для каждого сообщения T1>T.

gp = GF(2) array. Array elements = 1 0 1 0 0 1 1 0 1 1 1 T = 3 msgT = GF(2) array. Array elements = 1 0 1 1 0 1 1 0 1 1 1 0 1 1 1 1 0 1 0 1 codeT = GF(2) array. Array elements =

Page 66: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

66

1 0 1 1 0 0 1 0 0 0 1 1 1 1 0 1 1 0 1 1 1 0 0 0 0 1 0 1 0 0 1 0 1 1 1 0 0 0 0 1 0 1 0 0 1 1 0 1 0 1 1 0 0 1 0 0 0 1 1 1 T1 = 5 noise = 0 0 0 1 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 0 0 1 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 1 0 0 cnoisy = GF(2) array. Array elements = 1 0 1 0 1 1 1 1 1 0 1 1 1 1 0 1 1 0 1 1 1 1 0 1 0 0 0 0 0 1 1 0 1 0 1 1 1 0 1 0 0 1 0 0 1 1 0 1 0 1 1 1 0 0 0 1 1 0 1 1 msgR = GF(2) array. Array elements = 1 0 1 0 1 1 1 0 1 1 1 0 1 0 1 1 0 1 0 1 nerrs = -1 -1 -1 -1 chk = 0

10.9. Коды Рида-Соломона (RS)

Код RS — это очень эффективный и удобный в реализации (k, N)-блочный код, позволяющий обнаруживать и исправлять ошибки в символах (например, в байтах). Код RS(m,n,k) это подмножество кодов BCH, недвоичный циклический код. Математика кода RS подобна кодам BCH, только в них использованы поля Галуа GF(2m) и коэффициенты в g(x) могут иметь значения компонент этого поля. Например, для m=3 таких компонент 8, это целые числа 0...7.

В полях Галуа определены операции модулярной арифметики (сложение и умножение). Они реализуются в двочных кодах с игнорированием единиц переноса:

6 + 5 = 110 + 101 = 011 = 3. 1. 6 * 5 = 110 * 101 = 100 = 4.

Page 67: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

67

Входным словом для кода RS является сообщение из k символов, выходным — кодовое слово из n символов, состоящее из k исходных и n-k проверочных символов. При этом гарантировано, что при декодировании в кодовом слове будут обнаружены и исправлены T=(n-k)/2 символов независимо от их распо-ложения внутри кодового слова. В спутниковом стандапте DVB k=188, N=204, T=8). Кодер RS реализуется на основе регистра сдвига с 2T байтовыми эле-ментами памяти и обратными связями. Процесс кодирования сводится к опе-рациям сложения и умножения по модулю 256.

Коды RS эффективны при борьбе с импульсными помехами. Например, если m=8 (1 байт), то групповая помеха длиной 8 бит повредит 1 или 2 символа.

Моделирование в MATLAB. С использованием встроенных функций MATLAB написана программа, в которой:

выбирается код RS c 3 битами на символ (значения символов 0...7),

вычисляется и отображается кратность ошибок в канале связи T (это число символов в коде ошибки длиной n),

задается число сообщений nw,

генерируются и отображаются случайные сообщения msgT для передачи,

для msgT генерируются и отображаются коды codeT,

генерируется и отображается шум noise, это наборы символов,

вычисляется и отображается зашумленный код cnoisy=noiseácodeT,

вычисляются и отображаются принятые сообщения msgR и число nerr ис-правленных в них ошибок (если в сообщении остались ошибки, то nerr<0).

выводится результат проверки правильности декодирования chk (1 при пра-вильном и 0, если ошибки остались).

Листинг программы:

m = 3 % Число бит на символ n = 2^m-1 % Длина сообщения k = 3 % Длина кода T = (n-k)/2 % Корректирующая способность nw = 2 % Число сообщений msgT = gf(randint(nw,k,2^m),m) % Случайные сообщения codeT = rsenc(msgT,n,k) % Кодирование noise = (1+randint(nw,n,n)).*randerr(nw,n,T) % Шум с T ошибками cnoisy = codeT + noise % Добавить шум [msgR,nerrs] = rsdec(cnoisy,n,k) % Декодирование chk=isequal(msgR,msgT) % Проверка правильности

При прогоне в командное окно выводится

m = 3

Page 68: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

68

n = 7 k = 3 T = 2 nw = 2 msgT = GF(2^3) array. Primitive polynomial = D^3+D+1 (11 decimal) Array elements = 5 5 0 5 0 2 codeT = GF(2^3) array. Primitive polynomial = D^3+D+1 (11 decimal) Array elements = 5 5 0 1 0 4 1 5 0 2 5 7 7 0 noise = 4 3 0 0 0 0 0 0 6 0 0 0 0 2 cnoisy = GF(2^3) array. Primitive polynomial = D^3+D+1 (11 decimal) Array elements = 1 6 0 1 0 4 1 5 6 2 5 7 7 2 msgR = GF(2^3) array. Primitive polynomial = D^3+D+1 (11 decimal) Array elements = 5 5 0 5 0 2 nerrs = 2 2 chk = 1

10.10. Сверточные коды

Сверточный кодер позволяет кодировать не все сообщение, а его часть (кор-теж), сохраняя сведения о всем сообщении. Это резко снижает требования к

Page 69: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

69

ресурсам. Кроме того, этот кодер позволяет передавать данные в канал связи по мере обработки кортежа.

Сверточный кодер относится к классу конечных автоматов. Его поведение в текущий момент времени зависит от текущего кортежа U и состояния S, в ко-тором он находится. Размер кортежа k называется кодовым ограничением. Для хранения данных о предыдущих кортежах кодер содержит память в виде одно-го или нескольких регистров сдвига. После завершения обработки текущего кортежа данные в регистрах сдвигаются, освобождая место для нового корте-жа. Из содержимого регистров сдвига с помощью набора сумматоров по мо-дулю 2 формируется выходной код длиной n=k+r (r – проверочные символы). Отношение k/n – скорость кодирования. Операция сложения по модулю 2 экви-валентна операции свертки с импульсной характеристикой формирователя. Это и определило название кодера.

Рассмотрим структуру сверточного кодера при k=2, n=3. Кортеж содержит 2 символа U1 и U2. Каждый символ заносится в свой регистр сдвига (при k=2 регистров два). Сумматоры по модулю 2 (+1), (+2), (+3) собирают данные из регистров сдвига и вырабатывают символы выходного кода V1, V2, V3 (при n=3 сумматоров три). На рисунке выходы ячеек регистров, с которых выбира-ется значения на сумматор, помечены символом 1 (другие помечены символом 0).

Выбор ячеек регистров для сумматоров определяется порождающими много-членами g(x), коэффициенты которых задают выборки из регистров. Много-член g(x) записывается со старшими степенями слева, в регистрах сдвига его коэффициентам соответствуют ячейки в том же порядке. В современных коде-рах используются g(x) высокого порядка, их коэффициенты для сокращения записи принято отображать восьмеричными числами. Например, g1(x)=x4+x+1=10011= (010)(011)=238. В примере имеются 4 полинома:

из регистра U1 на сумматор (+1) – g1(x)=x4+x+1=10011=238,

из регистра U1 на сумматор (+2) – g2(x)=x4+x+1=10011=358,

из регистра U2 на сумматор (+2) – g3(x)=x4+x+1=10011=58,

из регистра U2 на сумматор (+3) – g4(x)=x4+x+1=10011=138,

Порождающие многочлены g(x) выбираются уникальными. Кроме того, необ-ходимо, чтобы они не имели общего делителя кроме 1. Если это требование нарушается, то при декодировании будут возникать катастрофические ошибки. Пример несовместимых многочленов: g1(x)=x+1 и g2(x)=x2+1. В модульной арифметике (1+x)*(1+x)= (1+x+x+x2)= 1+x2. Поэтому эти многочлена имеют об-щий делитель (1+x).

Page 70: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

70

Для изучения работы сверточного кодера в деталях рассмотрим простой кодер со скоростью ½. Он содержит регистр сдвига из двух элементов задержки на такт Z-1 и два сумматора по модулю 2 (+1, +2). Формирователь на каждый входной символ U вырабатывает два выходных символа V.

Для описания сверточного кодирования используются:

Page 71: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

71

таблица,

диаграмма состояний,

решетчатая диаграмма.

Табличное описание. В таблице показано поведение кодера. Входной символ U меняет состояние кодера S. Формирователь из выходов сумматоров образу-ет выходной код V (иначе код ветвления). На сообщение U длиной k=1 гене-рируется код V длиной n=2.

S до U S после +1 +2 V

a=00 0 a=00 0 0 00

1 b=10 1 1 11

b=10 0 c=01 1 0 10

1 d=11 0 1 01

c=01 0 a=00 1 1 11

1 b=10 0 1 01

d=11 0 c=01 0 1 01

1 d=11 1 0 10

Диаграмма состояний. Вместо таблицы часто используется диаграмма со-стояний. На ней показаны состояния S кодера a, b, c, d. Состояния связаны ветвями, которые отображены сплошной (U=0) или пунктирной (U=1) линиями. Рядом с ветвями указаны коды ветвей V (они же выходные коды).

Page 72: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

72

Решетчатая диаграмма. Для отслеживания изменения состояний кодера во времени применяется решетчатая диаграмма, или решетка. На решетке узлы отображают состояния кодера. В ячейках (столбцах) решетки отображаются узлы для дискретного времени (t1, t2, t3, t4, t5, t6). Ветви показывают возмож-ные переходы между состояниями, рядом с ветвью отображен ее код V. В за-висимости от значения U, вызывающего переход по ветви, ветви показаны сплошной (U=0) или пунктирной (U=1) линиями.

Совокупность ветвей, по которым осуществляются переходы между узлами во времени, называется путем по решетке. Например, путь при входной последо-вательности U=10100 выделен на рисунке жирными линиями. При кодировании каждый символ U заменяется кодом ветви V на пути, в примере получится вы-ходной код V=11 10 01 10 11.

Декодирование. Декодер сверточного кода использует ту же диаграмму со-стояний, что и кодер. Декодирование основано на критерии максимального правдоподобия, по которому на каждом такте на решетке выбирается наилуч-ший (наиболее правдоподобный) узел. Наилучший узел имеет минимальную метрику пути к нему. Метрика пути это сумма метрик его ветвей. Метрика ветви – это ее расстояние Хэмминга, определяемое сравнением принимаемого сло-ва R с кодом ветви V. Когда R=V метрика D=0. Если же, например, R=01 и V=10, то D=2 (разница в двух символах). Дополнительно отслеживается исто-рия пути, в котором перечисляются его ветви. На каждом такте нужно сравни-вать все пути к узлам такта и выбирать путь, имеющий наименьшую метрику.

Чтобы получить точное декодирование, нужна синхронизация - начальные состояния кодера и декодера одинаковые. В противном случае на начальном

Page 73: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

73

этапе при декодировании возникает много ложных ошибок, однако потом син-хронизация устанавливается автоматически.

Возможно детектирование методом «грубой силы», которое предполагает пе-ребор всех возможных путей. Однако количество путей с течением времени растет экспоненциально. На такте t1 число путей равно числу состояний n2 (в примере 4). Каждое состояние имеет 2k ветвей ( в примере 2), поэтому на каж-дом такте число путей умножается на 2k ( в примере на 2). На втором такте в примере будет 8 путей, на третьем 16 и т.д. Для декодера потребуются огром-ные ресурсы.

Проблема решается использованием алгоритма Витерби, в котором малове-роятные пути отбрасываются. На каждом такте для каждого узла сохраняется путь, имеющий наилучшую метрику (он называются выжившим), и число срав-ниваемых путей во времени не меняется.

Переходы между узлами решетки за один промежуток времени описываются парой ячеек (см. рисунок для примера) - левая до перехода, правая после перехода. Пусть в переходах участвуют два узла слева (a_old, c_old) и два справа (a_new, b_new). Необходимо знать текущие метрики путей, которые привели кодер в эти состояния (Pa, Pc), истории этих путей History и метрики ветвей для узла a_new - D_aa, D_сa и для узла b_new - D_ab, D_сb.

Для выбора пути в узел a_new нужно вычислить Pa_1= Pa+D_aa и Pa_2= Pc+D_сa. Пусть Pa_1<Pa_2. Тогда принимается Pa= Pa_1 и ветвь aa заносит-ся в список истории пути Pa: History_a = History_a+aa.

Для выбора пути в узел b_new нужно вычислить Pb_1= Pa+D_ab и Pb_2= Pc+D_сb. Пусть Pb_1>Pb_2. Тогда принимается Pb=Pb_2 и ветвь cb заносится в список истории пути History_b = History_c+cb.

Page 74: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

74

Посмотрим пример декодирования при наличии ошибки в пятом символе, пе-редан V=10, принят R=11. На решетке для ветвей указаны код V и метрика D, для узлов жирным шрифтом помечены метрики путей к ним P. На каждом такте выбираем узел с наименьшей метрикой, в итоге получаем путь декодирования, выделенный жирными линиями. Видим, что декодированное сообщение UR совпадает с исходным U.

Внимание. На каждом такте используется только один проверяющий символ, но ошибка не только обнаруживается, но и исправляется. В этом сверточный код эффективнее других кодов.

Page 75: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

75

Для решетки определен просвет D. Это минимальная метрика пути от начала до слияния с нулевой линией при R=00. В примере D=5 для пути, кончающего-ся в t4. Число ошибок, которое может исправить декодер t=ceil(D/2). В примере t=2. Такое число ошибок исправляются декодером, если они находятся в пре-делах 3...5 кодовых слов. Групповые ошибки гарантировано не исправляются.

Моделирование в MATLAB. С использованием встроенных функций MATLAB написана программа, в которой:

Задается решетка кодирования для кода 2/3,

Генерируются и отображаются msgT для передачи из 12 единиц,

для msgT генерируются и отображаются коды codeT,

задается глубина отслеживания назад tb=2,

вычисляются и отображаются принятые сообщения msgR.

Листинг программы:

Page 76: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

76

Результаты, выводимые в командное окно:

t = numInputSymbols: 4 numOutputSymbols: 8 numStates: 32 nextStates: [32x4 double] outputs: [32x4 double] msgT = 1 1 1 1 1 1 1 1 1 1 1 1 codeT = 1 1 1 1 0 1 0 0 0 0 1 1 0 1 1 0 1 1 noise = 1 0 0 1 1 1 0 1 0 1 0 1 0 1 1 1 1 1 cnoisy = 1 0 0 1 0 1 0 0 0 0 0 1 0 1 1 0 1 1 msgR = 1 1 1 1 1 1 1 1 1 1 1 1

В канале связи код исказился в позициях 2, 3, 11. Все ошибки исправлены.

Page 77: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

77

11. Инструмент BERTool

11.1. Канал связи

Канал связи (communication link) представляет собой тракт связи, начинаю-щийся от источника информации и завершающийся получателем информации. Канал включает:

Источник информации.

Средства обработки информации при передаче.

Кодеры.

Модулятор.

Физический канал связи (channel).

Демодулятор.

Декодеры.

Средства обработки информации при приеме.

Получатель информации.

Понятие открытого пространства. Понятие открытого пространства (free space) подразумевает канал, свободный от любых помех распространению, таких как поглощение, отражение, преломление, дифракция волн

Снижение достоверности передачи. Существуют две причины снижения достоверности передачи:

Уменьшение отношения сигнал/шум (SNR –Signal to Noise Ratio). SNR - это отношение средней мощности одного бита сигнала Eb к средней мощности шума N0.

Межсимвольная интерференция.

11.2. Имитация каналов связи в MATLAB.

AWGN. В этом канале добавляется белый Гауссовский шум. Сигнал комплекс-ный или вещественный. Величина шума определяется разными способами. Можно задавать:

Eb/No – отношение энергии бита к спектральной плотности шума.

Es/No – отношение энергии сигнала к спектральной плотности шума.

SNR - отношение мощности сигнала к мощности шума.

Variance from masc – вариации из диалогового окна.

Variance from port – вариации из входного порта.

Binary Symmetric. В этом канале добавляются случайные битовые ошибки с заданной вероятностью.

Page 78: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

78

Multipath Rayleigh Fading. Многолучевый канал с федингом по законам Релея. Сигнал комплексный baseband. Задаются допплеровский сдвиг в герцах, вре-мена задержек для каждого луча в секундах, усиление луча в децибелах.

Multipath Rician Fading. Многолучевый канал с федингом по законам Райеса. Сигнал комплексный baseband. Задаются допплеровский сдвиг в герцах для прямого и рассеиваемых каналов, K фактор – число лучей, времена задержек для каждого канала в секундах, усиление луча в децибелах

11.3. Инструмент BERTool

Это инструмент в стиле графического интерфейса пользователя (ГИП). Инст-румент позволяет строить зависимости вероятности ошибок от отношения сиг-нал/шум для выбранной конфигурации канала связи. При активизации отобра-жается окно диалога, которое в порядке сверху вниз включает поля:

Список отображаемых графиков. В нем в поле DER Data Set можно задать легенду каждого графика. По умолчанию легенды просто нумеруются.

Поле закладок. Можно выбирать закладки: Theoretical (Теоретическая), Se-mianalytic (Полуаналитическая), Monte Carlo (в стиле Монте Карло).

Каждая закладка включает поля выбора параметров канала связи.

Закладка Theoretical (Теоретическая) включает поля:

Eb/N0 – диапазон изменении я отношения сигнал/шум в логарифмических единицах (дБ).

Channel type – список выбора типа канала. Список включает AWGN, Binary Symmetric, Multipath Rayleigh Fading, Multipath Rician Fading.

Modulation type – список выбора типа модуляции.

Modulation order – список выбора порядка модуляции.

Demodulation type – ключи выбора типа демодуляции (когерентная или неко-герентная).

Differential encoding – флаг использования дифференциального декодиро-вания.

Channel coding – переключатели использования помехоустойчивого кодека. Возможны: None (кодека нет), Convolution (сверточный кодек), Block (блоч-ный кодек).

Synchronization – выбор типа синхронизации.

Если сделан определенный выбор, то может открыться окно для ввода пара-метров, присущих только сделанному выбору.

После задания всех параметров нажатие кнопки Plot (Рисовать) приводит к отображению графика в отдельном окне. Для сравнения можно в одном окне отображать графики для разных конфигураций.

Page 79: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

79

Первый пример – использования двукратной фазовой модуляции PSK 2 в режимах. Расчеты сделаны для режимов с различными кодеками.

PSK2. Кодека нет

PSK2 + Block + Hard. Кодек блочный, декодирование жесткое.

PSK2 + Block + Soft. Кодек блочный, декодирование мягкое.

PSK2 + Convolution. Кодек сверточный.

Видно, как снижается вероятность ошибок при использовании кодеков. При достотчно большом отношении сигнал/шум особенно эффективен серточный кодек.

Также видно, что сверточный кодек при малом отношении сигнал/шум вероят-ность ошибки увеличивает. Поэтому в плохих каналах целесообразно исполь-зовать вложенные кодеки: внешний блочный, внутренний сверточный.

Page 80: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

80

Второй пример – использования двукратной фазовой модуляции PSK 2 в ка-налах с федингом Релея. Расчеты сделаны для режимов с различным числом каналов разнесенного приема. Видно, как снижается вероятность ошибок при использовании разнесенного приема.

Rayleigh1. Разнесенного приема нет.

Rayleigh2. Разнесенный прием, каналов 2.

Rayleigh3. Разнесенный прием, каналов 5.

Page 81: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

81

Третий пример – использования двукратной фазовой модуляции PSK 2 в ка-налах с федингом Райеса. Расчеты сделаны для режимов с различным числом лучей приема. Видно, как снижается вероятность ошибок при увеличении чис-ла лучей приема.

Rician01. Луч 1.

Rician11. Дополнительных лучей 1.

Rician51. Дополнительных лучей 5.

Page 82: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

82

11.4. Треллис-модуляция

Применение многопозиционной КАМ в чистом виде сопряжено с проблемой недостаточной помехоустойчивости. Поэтому во всех высокоскоростных про-токолах КАМ используется совместно с решетчатым кодированием – специ-альным видом сверточного кодирования. В результате появился новый способ модуляции, называемый треллис-модуляцией (TCM – Trellis Coded Modulation).

В ней число сигнальных точек увеличивается вдвое за счет добавления к каж-дой информационной кодовой комбинации одного избыточного бита, образо-ванного путем сверточного кодирования. Расширенные таким образом данные подвергаются все той же КАМ. В процессе демодуляции принятый сигнал де-кодируется по алгоритму Витерби, который за счет введенной избыточности и знания предыстории процесса приема позволяет по критерию максимального правдоподобия выбрать из сигнального пространства наиболее достоверную точку.

Page 83: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

83

11.5. Синхронизация

Существуют следующие виды синхронизации:

Фазовая синхронизация. Для некоторых видов модуляции в приемнике при демодуляции используются сигналы, синхронизированные с несущей часто-той принимаемого сигнала.

Символьная синхронизация. Чтобы распознать принимаемый символ, при-емник должен знать момент времени, когда принимаемый символ начинает-ся. В противном случае он будет обрабатывать несколько символов.

Кадровая синхронизация. Применяется в системах, где информация дос-тавляется блоками (например, при использовании блочного кодирования). Приемник должен знать момент времени, когда начинается группа прини-маемых символов.

Фазовая синхронизация. Для демодуляции в приемнике нужен автономный сигнал, синхронный с несущей частотой принимаемого сигнала. Этот сигнал может быть сформирован разными способами:

Регенерацией из пилот-сигнала, который передается от мировых центров точного времени. Это очень дорогой способ.

Регенерацией из пилот-сигнала, специально добавляемого в передаваемый сигнал.

Регенерацией из принятого информационного сигнала. Автономное колеба-ние вырабатывается прямо из принятого сигнала путем снятия в нем моду-ляции. Например, при использовании 2-ух фазной ФМ последовательное умножение и деление частоты на 2 снимает модуляцию сигнала и приводит к формированию сигнала, синхронного с несущей.

С использованием автономного генератора с системой фазовой автопод-стройки частоты (ФАПЧ), которая синхронизирует этот генератор с несущей принимаемого сигнала с точностью до фазы.

Система ФАПЧ включает в себя:

Управляемый генератор несущей УГН, вырабатывающий копию несущей G(t).

Фазовый детектор ФД, выход которого E(t) пропорционален разности фаз несущей R(t) и сигнала G(t).

Петлевой фильтр ПФ системы, на выходе которого формируется сигнал Y(t), управляющий частотой УГН.

Page 84: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

84

Символьная синхронизация. Для оптимальной демодуляции цифровые при-емники должны синхронизироваться с моментами границ символов. Известны два класса символьных синхронизаторов:

Без применения данных (NDA – non data aided). В них информация, содер-жащаяся в данных, не используется.

С применением данных (DA – data aided). В них используется информация, специально вводимая в данные для синхронизации.

NDA синхронизаторы. NDA синхронизаторы делятся на две группы:

Разомкнутые синхронизаторы. В них копия тактовых импульсов выраба-тывается напрямую из принимаемого потока данных. Основной недостаток разомкнутых синхронизаторов – наличие неустранимой ошибки сопровож-дения с ненулевым средним значением. Известно несколько реализаций та-ких синхронизаторов. В варианте с задержкой и перемножением (времен-ные диаграммы сигналов справа, границы символов представлены верти-кальными линиями) информационный сигнал S(t) задерживается на поло-вину длины символа T/2. Затем прямой S(t) и задержанный S1(t) сигналы перемножаются, получается сигнал M(t). Видно, что в сигнале M(t) вторая половина символа всегда положительна. Из него полосовым фильтром ПФ выделяется компонент с нужной частотой, из которого блоком взятия знака Sgn формируется сигнал для символьной синхронизации Y(t).

Page 85: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

85

Замкнутые синхронизаторы. Они синхронизируют локальный генератор тактовых импульсов с поступающим сигналом, сличая локальный и посту-пающий сигналы. Достоинство замкнутых синхронизаторов – отсутствие ошибки сопровождения. Эти синхронизаторы точнее, но сложнее и дороже. Известно несколько реализаций таких синхронизаторов. В варианте с опе-режающим и запаздывающим стробированием (временные диаграммы сиг-налов справа, границы символов представлены вертикальными линиями) информационный сигнал S(t) поступает на два интегратора, которые стро-бируются от управляемого генератора символов УГС. Инт1 формирует на интервале времени от d до T сигнал заднего полустроба, который является мерой ошибки заднего фронта символьного импульса. Инт2 формирует на интервале времени от 0 до (T-d) сигнал переднего полустроба, который яв-ляется мерой ошибки переднего фронта символьного импульса. В режиме синхронизации разность этих сигналов равна 0. При наличии ошибки фор-мируется разностный сигнал E(t), который через петлевой фильтр ПФ авто-матически изменяет частоту УГС. На рисунке показаны основные сигналы в режиме синхронизации.

DA синхронизаторы. DA синхронизаторы делятся на две группы:

Page 86: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

86

Cинхронизаторы, использующие настроечные последовательности, вводи-мые в информационный поток.

Синхронизаторы, использующие итеративную процедуру. В них использует-ся обратная связь, по которой решение, принятое на выходе специального декодера Витерби, возвращается для коррекции процесса синхронизации.

Кадровая синхронизация. Практически все потоки цифровых данных исполь-зуют кадровую структуру. Поток данных разбит на группы бит фиксированной длины. Перед группой размещается маркер (кодовое слово фиксированной длины). Приемник для кадровой синхронизации отслеживает появление признака начала кадра.

11.6. Уплотнение и множественный доступ

Ресурс связи (CR – communication resource) – Это время и ширина полосы час-тот, доступные для передачи сигнала в системе. С ресурсом связи ассоциируются два понятия:

Уплотнение (multiplexing). В этом случае требования многих пользователей к общему ресурс постоянны во времени. Пример - стационарные сети связи.

Множественный доступ (multiple access). В этом случае требования многих пользователей к общему ресурс во времени могут изменяться. Пример – спутниковая связь.

Распределение ресурса связи. Для распределения ресурса связи использу-ются следующие способы:

Частотное разделение (FD – frequency division multiplexing). Распределяются определенные поддиапазоны используемой полосы частот. Достоинство метода - не требуется синхронизация потребителей.

Временное разделение (TD – time division). Выделяются периодические временные интервалы. Недостаток метода - требуется синхронизация по-требителей.

Кодовое разделение (CD – code division). Выделяются определенные эле-менты набора кодов, каждая из которых использует весь диапазон частот.

Пространственное разделение (SD – space division). Сигналы разделяются и с помощью направленных антенн направляются в разные стороны. Метод допускает многократное использование одного частотного диапазона.

Поляризационное разделение (PD – polarization division). Для разделения сигналов используется ортогональная поляризация. Метод позволяет использовать один частотный диапазон для двух сигналов.

Частотное разделение. Частотное разделение используется в системах:

Page 87: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

87

FDM – frequency division multiplexing. Система предложена в начале ХХ века. Ресурс связи может содержать несколько сигналов, разнесенных в спектре. Области спектра, находящиеся между используемыми диапазонами, назы-ваются защитными. Их назначение – снизить интерференционные помехи между соседними по частоте каналами. Для переноса спектра сигнала в нужную позицию используется преобразование частоты с использованием генераторов поднесущих.

FDMA – frequency division multiple access. Это вариант системы FDM, ис-пользуется в спутниковых системах связи.

Временное разделение. Временное разделение используется в системах:

TDM – time division multiplexing. Ресурс связи представляется каждому поль-зователю на фиксированный интервал времени (time slot). Промежутки вре-мени, разделяющие используемые интервалы, называются защитными ин-тервалами (guard slot). Их назначение – снизить интерференционные поме-хи между соседними по времени каналами.

TDMA – time division multiple access. Это вариант системы TDM, использует-ся в спутниковых системах связи.

Кодовое разделение. Кордовое разделение используется в системах CDMA – code division multiple access. В них применяются методы расширения спектра (SS – spread spectrum). Известны две категории SS методов:

Метод прямой последовательности (DS – direct sequencing). Используется кодовая последовательность расширения g(t), индивидуальная для каждого пользователя. При передаче информационный сигнал x(t) умножается на g(t), получается сигнал с расширенным спектром, используемый для моду-ляции несущей. При приеме осуществляется демодуляция, затем демоду-лированный сигнал умножается на тот же кодовый сигнал g(t), из произве-дения выделятся низкочастотная компонента, совпадающая с x(t).

Метод скачкообразной перестройки частоты (FH - frequency hopping). Для каждого пользователя на последовательных интервалах времени сигналы передаются на своих частотах, определяемых индивидуальным псевдошу-мовым (PN – pseudonoise) кодом пользователя. PN разных пользователей ортогональны друг другу. Это означает, что на каждом интервале времени нет пользователей, работающих на одной и той же частоте.

К достоинствам CDMA можно отнести:

Использование каждым пользователем всего частотного спектра повышает помехозащищенность. Проблема в некоторой частотной области влияет не всегда, она распределяется между пользователями. Особенно это заметно при искусственно создаваемых помехах.

Конфиденциальность связи.

Page 88: Поволжский Государственный Университет …ivt.psuti.ru/files/Simulink/LK_CompModCU_Akchurin_2012.pdf · Коды Боуза-Чоудхури-Хоквингема

88