РГРТУ / Цифровая связь |
Лабораторная работа №2 по курсу «Цифровая связь».
Канальное кодирование (channel coding) представляет собой класс преобразований сигнала, выполняемых для повышения качества связи, то есть приведения параметров системы к желаемому соотношению между достоверностью передачи и шириной полосы пропускания. В результате кодирования сигнал становится менее уязвим к таким эффектам ухудшения качества передачи, как шум, помехи и замирание. Канальное кодирование стало возможно благодаря использованию больших интегральных схем (БИС) и применению высокоскоростной цифровой обработки сигналов. Данный метод позволяет более чем на 10 дБ повысить производительность кодирования при значительно меньших затратах по сравнению с другими методами, например, методами увеличения мощности передатчика или размера антенны.
Канальное кодирование затрагивает два раздела теоретических основ радиосвязи: кодирование (или обработка) сигнала и структурированные последовательности (или структурированная избыточность). Кодирование сигнала означает преобразование сигнала, позволяющее сделать процесс детектирования преобразованного сигнала менее подверженным ошибкам. Метод структурированных последовательностей заключается в преобразовании последовательности данных в новую последовательность, обладающую структурной избыточностью (содержащую избыточные биты). Избыточные разряды служат для определения и исправления ошибок. За счет избыточности увеличивается длина кодового слова, что зачастую требует увеличения полосы пропускания для сохранения скорости передачи.
Рисунок 1. График вероятности битовой ошибки.
Рисунок 2. График вероятности битовой ошибки с отмеченными точками A, B и C.
В первом случае за счет увеличения мощности снижается отношение энергии бита к спектральной плотности мощности шума Eb/N0 и рабочая точка перемещается из точки А в точку B (Рисунок 2). Достоверность увеличивается. Скорость передачи данных и полоса пропускания остаются прежними, поскольку размер сообщения не изменяется.
Во втором случае при неизменном отношении Eb/N0 вероятность появления битовой ошибки снижается благодаря кодированию. Это соответствует перемещению рабочей точки из A в точку C (Рисунок 2). Кодирование с коррекцией ошибок требует избыточности, по этой причине полоса пропускания расширяется.
Рисунок 3. График вероятности битовой ошибки с отмеченными точками D, E и F.
В первом случае за счет уменьшения мощности снижается отношение энергии бита к спектральной плотности мощности шума Eb/N0 и рабочая точка перемещается из точки D в точку F (Рисунок 3). Достоверность снижается. Скорость передачи данных и полоса пропускания остаются прежними, поскольку размер сообщения не изменяется.
Во втором случае благодаря кодированию возможно уменьшить отношение Eb/N0 с сохранением достоверности. Это соответствует перемещению рабочей точки из D в точку E (Рисунок 3). Полоса пропускания расширяется в связи с избыточностью кодирования.
В контексте данного примера возможно ввести понятие энергетического выигрыша от кодирования (ЭВК). ЭВК определяется как уменьшение отношения Eb/N0, которое достигается при использовании кодирования:
где (Eb/N0)и и (Eb/N0)с – требуемые значения Eb/N0 без кодирования и с кодированием соответственно.
Для рассмотренного примера:
Рассматривается система без кодирования, рабочая точка системы (Eb/N0 = 14 дБ, PB = 10-6) совпадает с точкой D на рисунке (Рисунок 3). По ряду причин необходимо увеличить скорость передачи Скорость передачи R, отношение энергии бита к спектральной плотности мощности шума Eb/N0 и отношение спектральной плотности мощности несущей к спектральной плотности мощности шума Pс/N0 связаны соотношением:
Увеличение скорости передачи вызывает уменьшение отношения Eb/N0 и рабочая точка перемещается из точки D в точку F (Рисунок 3). Достоверность снижается. Использование кодирования позволяет сохранить прежний уровень достоверности за счет расширения полосы пропускания. Это соответствует перемещению рабочей точки из D в точку E (Рисунок 3).
Метод множественного доступа CDMA (Code Division Multiple Access — множественный доступ с кодовым разделением (МДКР)) – это один из стандартов, используемых в сотовой связи. При использовании CDMA все клиенты совместно используют общий спектр частот, каждый клиент является источником помех для других пользователей в той же или соседних ячейках. По этой причине отношение энергии бита к спектральной плотности мощности шума зависит от количества клиентов в ячейке: чем больше клиентов, тем меньше отношение . Использование кодирования в этом случае дает эффект, аналогичный пункту 3.
Рассматривается система без кодирования, рабочая точка системы (Eb/N0 = 14 дБ, PB = 10-6) совпадает с точкой D на рисунке (Рисунок 3). Увеличение пропускной способности ячейки (максимального числа клиентов) вызывает уменьшение отношения Eb/N0 и рабочая точка перемещается из точки D в точку F (Рисунок 3). Достоверность снижается.
Использование кодирования позволяет сохранить прежний уровень достоверности за счет расширения полосы пропускания. Это соответствует перемещению рабочей точки из D в точку E (Рисунок 3).В каждом случае из перечисленных выше предполагается использование «традиционного» кода с избыточными битами и расширение полосы пропускания (для систем связи реального времени). Существуют методы коррекции ошибок, называемые решетчатым кодированием (TCM – Trellis Coded Modulation), которые не требуют увеличения скорости передачи сигналов или расширения полосы частот для систем связи реального времени, однако в данной лабораторной работе они не рассматриваются.
В системах, где не используется связь в реальном времени, применение кодирования с коррекцией ошибок возможно реализовать не за счет расширения полосы пропускания, за счет увеличения задержки при передаче кодового слова большей длины.
Блоковый код состоит из набора векторов фиксированной длины, называемыми кодовыми словами. Длина кодового слова – это число элементов n в векторах. Элементы кодового слова выбираются из алфавита с q элементами. Если алфавит содержит два элемента 0 и 1, код называется двоичным, а элементы любого кодового слова называют битами (двоичными символами). Если элементы кодового слова выбираются из алфавита, имеющего элементов q > 2, код называют недвоичным. Важно отметить, что если q является степенью 2, т.е. q = 2b, где b – положительное целое число, каждый q-й элемент имеет эквивалентное двоичное представление, состоящее из b битов и, таким образом, недвоичные коды длины N возможно отобразить в двоичный код с блоковой длиной n = b · N.
В двоичном блоковом коде длиной n возможно образовать 2n кодовых слов. Из этих 2n кодовых слов необходимо выбрать M = 2kкодовых слов (k < n), чтобы сформировать код. Таким образом, блок из k информационных бит отображается в кодовое слово длиной n, выбираемое из набора M = 2k кодовых слов. Результирующий блоковый код обозначается как (n, k) код, а отношение k/n = R называется скоростью кода.
Рассматривается разработка блочного кода (7,4), для которого количество кодовых слов:
Предел Плоткина:
Формирование кодового слова U производится путем умножения вектора сообщения I на порождающую матрицу G:
При умножении для вычисления значения каждого бита кодового слова вместо обычной операции сложения применяется операция сложения по модулю 2, чтобы результирующее кодовое слово также было двоичным (содержало только 0 и 1).
Для разрабатываемого блочного кода (7,4) порождающая матрица должна иметь 4 строки и 7 столбцов. В силу систематичности кода первые 4 столбца матрицы должны содержать единичную матрицу (чтобы первые 4 бита кодового слова совпадали с соответствующими битами сообщения):
Сообщение | Кодовое слово |
---|---|
0000 | 0000000 |
1000 | 1000101 |
0100 | 0100111 |
0010 | 0010110 |
0001 | 0001011 |
Таким образом возможно записать порождающую матрицу:
Строки матрицы соответствуют кодовым словам из таблицы (Таблица 1). При помощи порождающей матрицы возможно сформировать набор кодовых слов для всех возможных информационных сообщений (Таблица 2).
Сообщение | Кодовое слово | Сообщение | Кодовое слово |
---|---|---|---|
0000 | 0000000 | 1000 | 1000101 |
0001 | 0001011 | 1001 | 1001110 |
0010 | 0010110 | 1010 | 1010011 |
0011 | 0011101 | 1011 | 1011000 |
0100 | 0100111 | 1100 | 1100010 |
0101 | 0101100 | 1101 | 1101001 |
0110 | 0110001 | 1110 | 1110100 |
0111 | 0111010 | 1111 | 1111111 |
Синдромный декодер должен принять искаженное кодовое слово и восстановить исходный вектор информационных бит. Для выявления ошибки используется проверочная матрица H размера (3×7). Строки порождающей матрицы G должны быть ортогональны строкам проверочной матрицы H, то есть:
Если записать порождающую матрицу в виде:
Для разрабатываемого блочного кода (7,4) проверочная матрица имеет вид:
Поскольку любое кодовое слово из разработанного набора (Таблица 2) является линейной комбинацией строк порождающей матрицы G, то произведение любого кодового слова U на транспонированную проверочную матрицу H также равно 0:
Принятое кодовое слово r рассматривается как сумма по модулю 2 вектора кодового слова U и вектора ошибки e:
В результате умножения принятого кодового слова на проверочную матрицу вычисляется синдром S кодового слова, который равен синдрому ошибки:
Для упрощения реализации декодера вычисление синдрома кодового слова производится по следующему алгоритму:
С учетом нулевых элементов матрицы H операция перемножения:
Индексы элементов кодового слова соответствуют расположению ненулевых элементов в строках проверочной матрицы H.
Учитывая вид проверочной матрицы H:
и переходя от произведения матриц к сложению по модулю 2, для первых 4 бит ошибки возможно записать соотношение:
Индексы элементов ошибки соответствуют расположению ненулевых элементов в строках первых 4 столбцов проверочной матрицы H.
Алгоритм вычисления вектора ошибки основывается на допущении, что вектор ошибки имеет только один ненулевой бит. Это позволяет упростить алгоритм, однако декодер, использующий данный алгоритм не сможет устранить ошибки с 2 и более ненулевыми битами. В таком случае для каждого бита ошибки возможно записать соотношение:
Положения отрицаний соответствуют положениям нулей в первых 4 столбцах проверочной матрицы H.
Для устранения ошибки необходимо сложить по модулю 2 принятое сообщение и вычисленный вектор ошибки.
Следует сравнить вероятность ошибки в сообщении для двух каналов связи – обычного и использующего кодирование с коррекцией ошибок. Принимаются следующие характеристики канала передачи данных:
Отношение энергии бита к спектральной плотности мощности шума
Вероятность битовой ошибки:
Вероятность битовой ошибки в канале без кодирования:
Рассматривается система связи реального времени, где задержки недопустимы, а скорость передачи канальных символов, или скорость передачи кодированных битов, в 7/4 раза больше скорости некодированной передачи:
Отношение энергии кодированного бита к спектральной плотности мощности шума:
Для каждого кодового бита значение Ec/N0 меньше, чем в случае с некодированными битами данных. Это объясняется тем, что скорость передачи канальных битов возросла, а мощность передатчика при этом не изменилась.
Вероятность битовой ошибки в канале без учета исправления ошибок:
Вследствие увеличения скорости передачи вероятность битовой ошибки в принятом сообщении увеличилась. Однако благодаря алгоритму коррекции ошибок происходит снижение вероятности символьной ошибки.
Вероятность символьной ошибки вычисляется по формуле:
Суммирование начинается с j = 2, поскольку декодер позволяет исправлять все однобитовые ошибки в блоках из n = 7 бит:
Вследствие применения кода с коррекцией ошибок вероятность символьной ошибки уменьшилась примерно в 3 раза по сравнению с некодированной передачей данных.
Данный пример иллюстрирует типичное поведение систем связи реального времени при использовании кодирования с коррекцией ошибок. Введение избыточности означает увеличение скорости передачи сигналов, уменьшение энергии, приходящейся на канальный символ, и увеличение вероятности битовых ошибок вне модулятора. Преимуществом такого подхода является то, что за счет коррекции ошибок декодер (при разумном значении Eb/N0) позволяет скомпенсировать увеличение вероятности битовых ошибок так, что вероятность символьных ошибок снижается.
Необходимо провести моделирование передачи данных и сравнить результаты моделирования с результатами аналитических расчетов. Для корректности сравнения необходимо разрабатывать модель передачи данных с помехами в соответствии с данными, используемыми для аналитических расчетов.
Приобрести первичные навыки для моделирования помехозащищенной передачи данных через канал связи с использованием модуляции и кодирования в SimInTech.
Разработать модель передачи данных через канал связи с помехами.
Сравнить значения вероятностей битовых и символьных ошибок, полученных в результате моделирования, с результатами аналитического расчета.
Рисунок 4. Главное окно SimInTech c выделенным меню создания нового проекта.
Рисунок 5. Окно проекта «Схема модели общего вида».
В ходе выполнения лабораторной работы будет проведено сравнение вероятности ошибки при передаче данных с использованием кодирования и без него. Для этого необходимо разработать две идентичные модели передачи данных и оценки вероятности ошибки, затем в одну из них будут добавлены модели кодера и декодера.
Рисунок 6. Главное окно SimInTech с выбранной вкладкой «Цифровая связь» в палитре блоков.
Рисунок 7. Главное окно SimInTech с выбранным подменю «Источники» вкладки «Цифровая связь».
Рисунок 8. Окно проекта с добавленным блоком «Цифровая связь – Генератор псевдослучайной битовой последовательности».
После установки блока его можно переместить. Для перемещения блока внутри рабочей области окна проекта необходимо нажать на блок левой кнопкой мыши и, удерживая, переместить.
Рисунок 9. Окно проекта с добавленными блоками.
Перед тем, как приступать к выполнению следующего пункта лабораторной работы, необходимо сохранить проект.
Рисунок 10. Окно проекта с пунктом «Свойства объекта», выбранным в контекстном меню блока.
Рисунок 11. Окно «Свойства» блока «Цифровая связь – Генератор псевдослучайной битовой последовательности» со свойствами по умолчанию.
Рисунок 12. Окно «Свойства» блока «Цифровая связь – Канал с АБГШ» с измененными значениями свойств.
Демодулятору необходимо задать режим «жесткой оценки», для этого в окне свойств блока «Цифровая связь - BPSK демодулятор» для свойства «Тип оценки» в поле «Значение» требуется выбрать «Биты».
Рисунок 13. Окно проекта с пунктом «Копировать», выбранным в контекстном меню блоков.
Рисунок 14. Окно проекта с вставленными блоками.
При использовании кодирования через канал связи будет передаваться кодовое слово, состоящее из 7 бит, вместо 4. По этой причине для вставленного блока «Цифровая связь – Канал с АБГШ» для свойства «Кодовая скорость» в поле «Формула» требуется задать формулу расчета «4/7». После задания формулы произойдет автоматический расчет значения свойства в поле «Значение».
Рисунок 15. Главное окно SimInTech с выделенной кнопкой «Панель примитивов».
Рисунок 16. Окно «Редактирование текста» с выделенной кнопкой «Применить и закрыть».
Рисунок 17. Окно проекта с добавленными примитивами «Текст».
Перед тем, как приступать к выполнению следующего пункта лабораторной работы, необходимо сохранить проект.
Блочный кодер должен сформировать кодовое слово U путем перемножения вектора сообщения I и порождающей матрицы G:
Рисунок 18. Окно текстового файла с заполненными данными.
Рисунок 19. Окно проекта с добавленным блоком «Субмодель».
Рисунок 20. Окно проекта с выделенным блоком «Субмодель».
Рисунок 21. Рабочая область блока «Субмодель».
Рисунок 22. Окно проекта с добавленными блоками.
Вектор сообщения будет передаваться в субмодель при помощи блока «Порт входа». Блок «Таблица данных из файла» будет считывать из текстового файла столбцы порождающей матрицы блочного кода, а блок «Запаковка матрицы» будет формировать из них матрицу.
Перед тем, как приступать к выполнению следующего пункта лабораторной работы, необходимо сохранить проект.
Для корректного считывания данных из текстового файла необходимо настроить свойства блока «Таблица данных из файла». Необходимо открыть окно свойств блока и выполнить следующие действия:
Рисунок 23. Окно свойств блока «Запаковка матрицы» с измененными значениями свойств.
Результирующий вектор, полученный в результате умножения вектора сообщения на порождающую матрицу, в общем случае может содержать элементы, отличные от 0 и 1. Для получения двоичного кодового слова при умножении вектора сообщения на порождающую матрицу вместо обычной операции сложения (для определения значения каждого элемента результирующего вектора) следует использовать операцию сложения по модулю 2. Для того, чтобы получить корректный результат работы кодера без внесения изменений в алгоритм умножения вектора на матрицу, необходимо найти остаток от деления каждого элемента результирующего вектора на 2 (математически это будут две тождественные операции).
Для блока «Целочисленные операции» требуется открыть окно свойств, в поле «Значение» свойства «Тип операции» открыть список доступных операций и выбрать «% (Остаток от деления)».
Для блока «Константа» требуется задать значение свойства «Значение» равным «2».
Перед тем, как приступать к выполнению следующего пункта лабораторной работы, необходимо сохранить проект.
Рисунок 24. Окно проекта с соединенными блоками.
Рисунок 25. Окно проекта с выделенной кнопкой «Возврат из субмодели».
Перед тем, как приступать к выполнению следующего пункта лабораторной работы, необходимо сохранить проект.
Рисунок 26. Окно проекта с добавленным блоком «Субмодель».
Добавленному блоку «Субмодель» необходимо задать подпись «Декодер».
Вычисление синдрома S принятого кодового слова r производится побитно по следующему алгоритму:
Рисунок 27. Окно проекта с добавленными блоками.
Необходимо увеличить число портов блока «Демультиплексор». Для данного блока требуется в поле «Формула» свойства «Массив размерностей выходов» задать формулу «7#1». Данная формула задает массив из семи единиц. После задания формулы произойдет автоматический расчет значения свойства в поле «Значение» и изменится количество портов блока. В ходе моделирования на выходных портах блока будут формироваться соответствующие биты кодового слова, нумерация битов идет сверху вниз.
Каждый бит синдрома определяется как сумма четырех битов по модулю 2. Необходимо увеличить количество портов всех блоков «XOR». Для каждого блока «XOR» требуется задать значение свойства «Количество портов» равным «4».
Рисунок 28. Окно проекта с соединенными блоками.
В ходе моделирования в блоках «XOR» будут вычисляться значения трех битов синдрома кодового слова. Нумерация битов идет слева направо.
Перед тем, как приступать к выполнению следующего пункта лабораторной работы, необходимо сохранить проект.
Вычисление ошибки e производится побитно по следующему алгоритму:
Рисунок 29. Окно проекта с добавленными блоками.
Необходимо увеличить число портов всех блоков «Оператор И», для каждого блока «Оператор И» требуется задать значение свойства «Количество портов» равным «3».
Рисунок 30. Окно проекта с соединенными блоками.
В ходе моделирования в блоках «Оператор И» будут вычисляться значения четырех битов ошибки. Нумерация битов идет сверху вниз.
Перед тем, как приступать к выполнению следующего пункта лабораторной работы, необходимо сохранить проект.
Рисунок 31. Окно проекта с добавленными блоками.
Для формирования вектора сообщения из четырех его битов для блока «Мультиплексор» требуется задать значение свойства «Количество портов» равным «4».
Для каждого блока «Логические операции» требуется открыть окно свойств, в поле «Значение» свойства «Тип операнда» открыть список доступных операций и выбрать «(ИСКЛЮЧАЮЩЕЕ ИЛИ, XOR)».
Для упрощения внешнего вида модели необходимо изменить размер блока «Мультиплексор». Для данного блока на вкладке «Общие» окна свойств требуется задать значение свойства «Высота» равным «128».
Рисунок 32. Окно проекта с соединенными блоками.
Разработка модели синдромного декодера завершена. Следует выйти из рабочей области субмодели одинарным нажатием левой кнопкой мыши по кнопке «Возврат из субмодели», расположенной на панели кнопок окна проекта.
Рисунок 33. Окно проекта с соединенными блоками.
Рисунок 34. Окно проекта с выделенной кнопкой «Параметры расчета».
Рисунок 35. Вкладка «Параметры расчета» окна «Параметры проекта».
Закрыть окно «Параметры расчета», при этом внесенные изменения будут сохранены автоматически.
Перед тем, как приступать к выполнению следующего пункта лабораторной работы, необходимо сохранить проект.
Рисунок 36. Окно проекта с выделенной кнопкой «Пуск».
Рисунок 37. Окно проекта с отображаемыми результатами моделирования.
Рисунок 38. Окно проекта с выделенным блоком «Цифровая связь – Измеритель BER», расположенным в канале связи с подписью «Без кодирования».
Вероятность приема ошибочного кодового слова (WER) при передаче данных без кодирования отображается на схеме в графическом изображении блока «Цифровая связь – Измеритель WER», расположенного в канале связи с подписью «Без кодирования». После окончания процесса моделирования вероятность должна быть равна примерно «4E-5», аналитически вычисленное значение равняется «4.08E-5».
Вероятность приема ошибочного бита при передаче данных с кодированием отображается на схеме в графическом изображении блока «Цифровая связь – Измеритель BER», расположенного в канале связи с подписью «С кодированием». После окончания процесса моделирования вероятность должна быть равна примерно «6.5E-4», аналитически вычисленное значение равняется «6.75E-4».
Вероятность приема ошибочного кодового слова при передаче данных с кодированием отображается на схеме в графическом изображении блока «Цифровая связь – Измеритель WER», расположенного в канале связи с подписью «С кодированием». После окончания процесса моделирования вероятность должна быть равна примерно «1.2E-5», аналитически вычисленное значение равняется «1.59E-5».
Результаты моделирования с достаточной точностью совпадают с результатами аналитических расчетов. Из-за применения кодирования вероятность битовой ошибки значительно увеличилась, но благодаря алгоритму коррекции ошибок вероятность символьной ошибки уменьшилась примерно в 3 раза.
Перед завершением выполнения лабораторной работы необходимо сохранить проект.
ОСШ, дБ | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
PБ | ||||||||||||||||
PC | ||||||||||||||||
PKБ | ||||||||||||||||
PKC |
Здесь PБ – вероятность битовой ошибки без кодирования, PC – вероятность символьной ошибки без кодирования, PKБ – вероятность битовой ошибки с кодированием, PKC – вероятность символьной ошибки с кодированием.
№ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
---|---|---|---|---|---|---|---|---|---|---|
n | 6 | 8 | 8 | 6 | 9 | 7 | 10 | 9 | 10 | 9 |
k | 4 | 3 | 4 | 3 | 4 | 3 | 3 | 3 | 4 | 5 |
В данной лабораторной работе был разработан систематический блочный код, разработаны модели блочного кодера, синдромного декодера и канала передачи данных с BPSK-модуляцией и проведено моделирование передачи данных через зашумленный канал связи без кодирования и с кодированием. Для обоих случаев вероятности приема ошибочных битов и кодовых слов, полученные в результате моделирования, с достаточной точностью совпали с результатами аналитических расчетов.