Помехоустойчивые коды Помехоустойчивые коды в радиотехнике и связи: учебнометодическое пособие / Е.В. Медведева, А.В. Частиков – Киров: ФГБОУ ВПО «ВятГУ», 2014. – 66 с. 1 Основные понятия Помехоустойчивыми или корректирующими называются коды, обладающие свойством обнаруживать и исправлять ошибки, возникающие в процессе передачи или обработки информации за счет вводимых проверочных (корретирующих, избыточных) символов . К блочным относятся коды, в которых каждому символу алфавита сообщений соответствует блок (кодовая комбинация) из 𝑛(𝑖) - элементов, где 𝑖 - номер сообщения. Блочные коды подразделяются на разделимые и неразделимые. В разделимых кодах выделяют информационные и проверочные элементы. В неразделимых кодах отсутствует деление элементов на информационные и проверочные. Код называется равномерным, если 𝑛 𝑖 = 𝑛, т.е. длина блока постоянна и не зависит от номера сообщений. Если длина блока зависит от номера сообщений, то блочный код называется неравномерным. Систематическими называют коды, в которых информационные и корректирующие символы расположены по строго определенной системе и всегда занимают определенные места в кодовых комбинациях. В непрерывных кодах передаваемая информационная последовательность на разделяется на блоки, а проверочные элементы размещаются в определенном порядке между информационными. 2 Классификация помехоустойчивых кодов 3 Основные характеристики помехоустойчивых кодов Основание кода. Коды характеризуются основанием кода 𝑚, т.е. числом символов, или букв, кодового языка. При основании 𝑚 = 2 имеет место двузначный (бинарный) код, при 𝑚 = 3 - трехзначный код и т.д. Разрядность кода 𝑛 - число символов в кодовой комбинации (длина кодового слова). Если длина всех кодовых слов одинакова (𝑛 = 𝑐𝑜𝑛𝑠𝑡), код называется равномерным. Мощность кода - число кодовых комбинаций 𝑁𝑃 , используемых для передачи сообщений, из общего числа всех возможных кодовых комбинаций 𝑁𝑜 = 𝑚𝑛 . Количество запрещенных кодовых комбинаций: 𝑁З = 𝑁𝑜 − 𝑁𝑃 . (1) log 𝑚 𝑁𝑝 𝑘 𝜒=1− =1− . log 𝑚 𝑁𝑜 𝑛 (2) log 𝑚 𝑁𝑝 𝑅= = 1 − 𝜒. log 𝑚 𝑁𝑜 (3) Избыточность кода Скорость кода 4 Кодовое расстояние 𝒅 между двумя кодовыми комбинациями есть число одноименных разрядов в этих кодовых комбинациях с различными символами. Для бинарных кодов кодовое расстояние 𝑑 определяется подсчетом числа единиц суммы по модулю 2 двух кодовых комбинаций. Пример - 1-я кодовая комбинация 0110111 + 1101010 - 2-я кодовая комбинация 1011101 - сумма по модулю 2. Число единиц в сумме (вес суммы) равно кодовому расстоянию 𝑑 = 5. Кодовое расстояние, как правило, между различными кодовыми комбинациями может быть разным. Помехозащищенность кода характеризуется минимальным кодовым расстоянием 𝑑𝑚𝑖𝑛 из всех возможных кодовых расстояний для данного кода. 5 Количество обнаруживаемых ошибок: 𝑡обн.ош. ≤ 𝑑𝑚𝑖𝑛 − 1. (4) Количество исправляемых ошибок: 𝑡и.ош. 𝑑𝑚𝑖𝑛 = − 1, для 𝑑𝑚𝑖𝑛 четного; 2 (5) 𝑡и.ош. 𝑑𝑚𝑖𝑛 − 1 = , для 𝑑𝑚𝑖𝑛 нечетного. 2 Энергетический выигрыш кода (ЭВК). Поскольку помехоустойчивое кодирование позволяет исправлять ошибки, при его применении мощность передатчика можно снизить, оставляя скорость передачи информации неизменной. Энергетический выигрыш определяется как разница отношений с/ш при наличии и отсутствии кодирования. 6 Коды, обнаруживающие ошибки. Код с защитой по паритету (четности, нечетности) В двоичном коде с защитой по четности в кодовые комбинации вводится один защитный разряд, содержимое которого (0 или 1) дополняет число единиц в основных (информационных) разрядах до четности. При приеме сообщения бракуются (т.е. признаются ложными) все комбинации, содержащие нечетное число единиц. Пример. В таблице приведены все рабочие кодовые комбинации двоичного кода с защитой по четности при числе информационных разрядов 𝑘 = 3. 𝑉𝑖 𝑉0 𝑉1 𝑉2 𝑉3 𝑉4 𝑉5 𝑉6 𝑉7 Безызбыточный двоичный код 000 001 010 011 100 101 110 111 Двоичный код с защитой по четности 000 0 001 1 010 1 011 0 100 1 101 0 110 0 111 1 Данный код позволяет обнаружить все ошибки нечетной кратности. 7 Код с простым повторением Содержимое защитных разрядов повторяет содержимое информационных (рабочих) разрядов. Ошибки обнаруживаются путем сравнения содержимого информационных и проверочных разрядов. Пример. В таблице приведены рабочие комбинации кода с простым повторением. Данный код позволяет обнаружить все ошибки нечетной кратности. 𝑉𝑖 Код с повторением 𝑉0 000 000 𝑉1 001 001 𝑉2 010 010 𝑉3 011 011 𝑉4 100 100 𝑉5 101 101 𝑉6 110 110 𝑉7 111 111 Код позволяет обнаружить все ошибки нечетной кратности и значительную часть ошибок четной кратности. 8 Код с повторением и инверсией Содержимое проверочных разрядов совпадает с содержимым информационных разрядов лишь в случае четного числа единиц в информационных разрядах. При нечетном числе единиц в информационных разрядах содержимое проверочных разрядов представляет собой инверсию содержимого информационных разрядов. Пример. 𝑉𝑖 Код с повторением и инверсией 𝑉0 000 000 𝑉1 001 110 𝑉2 010 101 𝑉3 011 011 𝑉4 100 011 𝑉5 101 101 𝑉6 110 110 𝑉7 111 000 Рассматриваемый код по сравнению с кодом с простым повторением является более помехоустойчивым, так как его минимальное кодовое расстояние больше. В рассмотренном примере 𝑑𝑚𝑖𝑛 = 3. 9 Линейные блочные коды Помехоустойчивые коды в радиотехнике и связи: учебнометодическое пособие / Е.В. Медведева, А.В. Частиков – Киров: ФГБОУ ВПО «ВятГУ», 2014. – 66 с. 1 Свойства линейных кодов Линейными блочными кодами называются разделимые (n,k)-коды, в которых проверочные элементы представляют собой линейные комбинации информационных. 4 4. 2 Пример определения свойств линейных кодов 3 a5 a 2 a3 Правило получения порождающей матрицы линейного кода Пример Пусть требуется построить линейный код с 𝑑0 = 3 для передачи восьми сообщений. Необходимое число информационных элементов 𝑘 = log 2 8 = 3. Запишем исходный код в виде единичной матрицы и дополним информационные элементы проверочными элементами, так, чтобы обеспечить 𝑑 0 = 3. 1. Число столбцов матрицы G равно длине кода n k r , а число строк – количеству информационных символов k . 2. Матрица G состоит из двух матриц: единичной матрицы размерности ( k k ) и матрицы С k r . 3. В строке матрицы С k r должно быть не менее чем ( d * -1) единиц, а хэммингово расстояние между строками не менее чем ( d * -2). 1 0 0 1 0 1 G 0 1 0 0 1 1 (1) 0 0 1 1 1 1 4 Правило формирования проверочных элементов a1 a2 a3 a4 a5 a6 1 0 0 1 0 1 G 0 1 0 0 1 1 0 0 1 1 1 1 Обозначим элементы кодовой комбинации кода a1 a2 a3 a4 a5 a6 . Так как в качестве информационной подматрицы берется единичная матрица, то элементы а1 - а3 являются информационными, а а4 - а6 - проверочными. Проверочные элементы могут быть получены путем суммирования по модулю два определенных информационных элементов. Таким образом, a4 a1 a3 ; a5 a 2 a3 (2) 5 Правило проверочной матрицы линейного кода a4 a1 a3 ; a5 a 2 a3 a1 a2 a3 a4 a5 a6 1 0 1 1 0 0 H 0 1 1 0 1 0 1 1 1 0 0 1 1. Число столбцов матрицы H равно длине кода n k r , а число строк – количеству проверочных символов r . 2. Матрица H состоит из двух матриц: Dr k , матрицы транспонированной по отношению к С k r , и единичной матрицы размерности ( r r ). 3. Единицы, расположенные на местах, соответствующих информационным элементам матрицы H , указывают на то, какие информационные элементы должны участвовать в формировании проверочного элемента. Единица на месте, соответствующем (3) проверочному элементу, указывает на то, какой проверочный элемент получается при суммировании по модулю два информационных элементов. Матрицы G и H должны быть взаимно ортогональны, т.е. G H T 0 . 6 Кодер линейного кода Пусть матрица 𝐻 определена следующим образом: 𝐻 0 1 1 1 1 0 0 = 1 1 0 1 0 1 0 , 1 0 1 1 0 0 1 Структурная схема устройства, задаваемого матрицей 𝐻 : кодирующего проверочной Получение кодовых слов: 𝐴𝑛 =AkxGT 7 Понятие синдрома ∗ ∗ ∗ Пусть 𝑎𝑘+1 , 𝑎𝑘+2 , 𝑎𝑘+3 - принятые проверочные элементы; 𝑎𝑘+1 , 𝑎𝑘+2 , 𝑎𝑘+3 ∗ элементы, сформированные на приеме. Последовательность 𝑏1 = 𝑎𝑘+1 ⨁𝑎𝑘+1 , 𝑏2 = ∗ 𝑎𝑘+2 ⨁𝑎𝑘+2 … называется синдромом, элементы которого 𝑏1 , 𝑏2 , 𝑏3 , … , 𝑏𝑟 при отсутствии ошибок равны нулю. Если хотя бы один элемент синдрома не равен нулю, то можно утверждать, что принятая кодовая комбинация содержит ошибки. Операцию нахождения синдрома можно представить как: 𝑆𝑟 = 𝐻 × 𝐴𝑇𝑛 . (4) Вид синдрома будет определяться только вектором ошибок и не зависит от вида переданной кодовой комбинации: 𝐻𝐴𝑇 = 𝐻(𝐴 + 𝐸)𝑇 = 𝐻𝐴𝑇 + 𝐻𝐸 𝑇 = 𝐻𝐸 𝑇 , (5) где 𝐴 = 𝐴 + 𝐸, 𝐸 – вектор ошибок. 8 8 Вычисление синдрома 9 Декодер обнаруживающий ошибки Алгоритм декодирования включает в себя вычисление и анализ синдрома 𝑆(𝑥). Если 𝑆 𝑥 = 0, то принятое кодовое слово считается неискаженным. Если 𝑆 𝑥 ≠ 0, то приемник отвергает принятое кодовое слово. запись 1 2 3 4 5 6 7 синдром 10 Декодер исправляющий ошибки На вход декодера поступает кодовая комбинация. По принятой комбинации вычисляется синдром, который подается на дешифратор «синдром ошибка». При одиночной ошибке на одном из выходов дешифратора появляется «1» (элемент вектора ошибки). Сложение вектора ошибки с принятой комбинацией приводит к исправлению ошибки. 11 Код Хэмминга Параметры кодов Хэмминга при m проверочных символах следующие: - длина слова 𝑛 = 2𝑚 − 1; - длина информационной части 𝑘 = 2𝑚 − 1 − 𝑚; - длина проверочной части 𝑚 = 𝑛 − 𝑘; - минимальное кодовое расстояние 𝑑𝑚𝑖𝑛 = 3. Код Хэмминга строится на основе задания проверочной матрицы. Проверочная матрица содержит m строк и (2𝑚 − 1) столбцов. Столбцы матрицы представляют собой набор двоичных чисел, записанных в возрастающем порядке. При этом столбцы, содержащие в наборе только одну единицу, являются проверочными, а столбцы, имеющие более одной единицы, - информационными. 12 Пример построения кода Хэмминга Пусть 𝑚 = 3, тогда длина слова 𝑛 = 23 − 1 = 7, длина информационной части 𝑘 = 23 − 1 − 3 = 4. Проверочная матрица кода Хэмминга (7,4) с тремя проверочными символами имеет вид: 0 𝐻= 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 . 1 0 1 Если переставить местами третий и четвертый столбцы, то проверочная матрица приобретет каноническую форму и код становится систематическим. Если в кодовой комбинации произошла одна ошибка, то по виду синдрома легко можно определить, в какой позиции кодовой комбинации она произошла. Например, если ошибочно принят 1-й символ, то это будет соответствовать синдрому 001, 2-й символ – синдрому 010… Но в коде Хемминга с кодовым расстоянием 𝑑 = 3 имеется недостаток по виду синдрома нельзя определить, одна или две ошибки имеются в кодовом слове. Например, для двойной ошибки в 1-м и 2-м символах синдром будет иметь вид: 011… 13 Расширенный код Хэмминга (dmin=4) Для получения расширенного кода Хэмминга (dmin=4) в проверочную матрицу простого кода добавляют 1 слобец, заполненный нулями, и 1 строку, заполненную единицами. 0 0 H 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 1 Для ошибки в 1-м символе – синдром 0001. Для ошибки во 2-м символе – синдром 0011. Для ошибок в двух символах 1 и 2 – синдром 0010. Вывод. Для одной ошибки в младшем разряде синдрома – «1», а для двойной ошибки – «0». Т.е. число 0 или 1 в младшем разряде позволяет обнаружить 1 или 2 ошибки в кодовом слове. 14 Характеристики кода Хэмминга Исправляет одиночные и обнаруживает двойные ошибки. Построен применительно к двоичной системе счисления. Используется: В устройствах перемежения символов в сетях ISDN и xDSL; в некоторых прикладных программах в области хранения данных, особенно в RAID 2; - в памяти типа ECC. 1. 2. 3. - 15 Код Рида-Маллера Коды Рида-Маллера являются линейными двоичными блочными кодами. При определенном построении они могут быть систематическими. В общем случае коды Рида-Маллера не являются циклическими. Коды Рида-Маллера задаются следующими параметрами для любых значений 𝑚 и 𝑟, называемого порядком кода, меньшего, чем 𝑚: длина кодового слова 𝑛 = 2𝑚 ; длина информационной части 𝑘 = 1 + 𝐶𝑚1 +. . . +𝐶𝑚𝑟 ; длина проверочной части 𝑛 − 𝑘 = 1 + 𝐶𝑚1 +. . . +𝐶𝑚𝑚 −𝑟−1 ; минимальное кодовое расстояние 𝑑𝑚𝑖𝑛 = 2𝑚 −𝑟 . 16 Код Рида-Маллера Код Рида-Маллера определяется при помощи порождающей состоящей из базисных векторов. Правило построения следующее: матрицы, пусть 𝑉0 - вектор, все компоненты которого равны 1; пусть 𝑉1 , 𝑉2 , … , 𝑉𝑚 - строки матрицы, столбцами которой являются все двоичные наборы длины 𝑚. Код Рида-Маллера -го порядка содержит в качестве базиса векторы 𝑉0 , 𝑉1 , … , 𝑉𝑚 и все покомпонентные произведения 𝑟 или меньшего числа этих векторов. Покомпонентное произведение любых двух векторов 𝑎 = 𝑎1 , 𝑎2 , … , 𝑎𝑛 и 𝑏 = 𝑏1 , 𝑏2 , … , 𝑏𝑛 задается следующим образом: 𝑎𝑏 = 𝑎1 𝑏1 , 𝑎2 𝑏2 , … , 𝑎𝑛 𝑏𝑛 . 17 Пример построения кода Рида-Маллера Для 𝑚 = 4 и r=3 соответственно 𝑛 = 24 = 16 , а порождающая матрица имеет вид: 𝑉0 = (1111111111111111) 𝑉1 = (0000000011111111) 𝑉2 = (0000111100001111) 𝑉3 = (0011001100110011) 𝑉4 = (0101010101010101) 𝑉1 𝑉2 = (0000000000001111) 𝑉1 𝑉3 = (0000000000110011) 𝑉1 𝑉4 = (0000000001010101) 𝑉2 𝑉3 = (0000001100000011) 𝑉2 𝑉4 = (0000010100000101) 𝑉3 𝑉4 = (0001000100010001) 𝑉1 𝑉2 𝑉3 = (0000000000000011) 𝑉1 𝑉2 𝑉4 = (0000000000000101) 𝑉1 𝑉3 𝑉4 = (0000000000010001) 𝑉2 𝑉3 𝑉4 = (0000000100000001) 18 Характеристики кода Рида-Маллера 1. Количество исправляемых/обнаруживаемых ошибок зависит от заданных параметров m и r. 2. Простые алгоритмы кодирования и декодирования. 3. Используется в КС с разной вероятностью ошибки. 19 Сверточные коды 1. Блейхут, Р. Теория и практика кодов, контролирующих ошибки / под ред. К.Ш. Зигангирова. – М.: Мир, 1986. С.401-438. Определение Сверточными называют коды, формирование которых происходит непрерывно. Проверочные символы перемежаются с информационными по всей длине кодовой последовательности, подчиняясь одному и тому же рекуррентному соотношению. Cверточные коды могут быть систематическими и несистематическими и обозначаются как линейные сверточные (n,k)-коды. Систематическим сверточным кодом является такой код, для которого в выходной последовательности кодовых символов содержится без изменения породившая его последовательность информационных символов. В противном случае сверточный код является несистематическим. Примеры схем кодеров для систематического (8,4) и несистематического сверточных (6,3)-кодов приведены на рис. 1 и 2. U fтакт 2fтакт Рис. 1 U fтакт 2fтакт Рис. 2 Способы описания сверточных кодов Сверточный порождающих Порождающие порождающую код требует для своего описания нескольких многочленов – в общем случае k 0 n0 . многочлены могут быть объединены в матрицу G : G gij x . Операцию кодирования можно векторно-матричного произведения c x a xG x , или ko c j x ai x gij x , i 1 где ai x - информационные символы. описать с помощью Параметры сверточных кодов - длина кодового ограничения max deg g ij x , k0 i 1 j где k 0 - входной кадр поступающих символов; deg - функция, определяющая максимальную степень полинома; g ij x - порождающие полиномы; - информационная длина кодового слова k k 0 max deg g ij x 1; i, j - кодовая длина блока n n0 max deg g ij x 1 , i, j где n0 - выходной кадр символов; - свободным кодовым расстоянием d св , которое определяется как суммарное количество единиц в порождающих полиномах. Схема кодера сверточного кода Рассмотрим схему кодера сверточного кода g1 =111, g 2 =101: y1 x0 1 2 x1 x2 y2 Работу кодера таблицы. Х0 Х1 Х2 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 представим в виде У1 0 1 1 0 1 0 0 1 У2 0 1 0 1 1 0 1 0 00 00 00 00 11 11 11 11 10 00 10 10 01 01 11 01 10 01 Построение решетчатой диаграммы Для пояснения процессов кодирования и декодирования используют решетчатую диаграмму. Для диаграммы характерны следующие утверждения: 1) Состоит из узлов и ребер (ветвей). 2) Число ребер, исходящих из узла равно основанию кода. Число узлов - 2 . Выходные символы записываются над ветвями. Надписи около узлов характеризуют логическое состояние кодирующего устройства. Каждой информационной последовательности символов соответствует определенный путь на диаграмме. 7) Процесс кодирования заключается в выборе одного из путей диаграммы. 3) 4) 5) 6) 00 00 00 00 11 11 11 11 10 00 10 10 01 01 11 01 10 01 Методы декодирования сверточных кодов 1. Без вычисления проверочной последовательности 1.1. Декодирование методом Витерби (параллельное декодирование) Процедура декодирования последовательности с двумя ошибками На каждом такте декодер сравнивает вес для пар путей, ведущих в каждый узел, и из каждой пары оставляет путь с наименьшим весом. В момент, когда происходит слияние выживших путей, декодер принимает решение о переданных символах. Характеристики декодера Витерби - простота декодирования при небольших значениях длины кодового ограничения при сохранении высокой помехоустойчивости. - увеличивается сложность реализации декодера с увеличением длины кодового органичения. Так, при = 10 он должен помнить уже не менее 2 = 1024 выживших путей. - перспективен в каналах с независимыми ошибками. Декодирование методом Фано (последовательное декодирование) Последовательный декодер, просмотрев первый кадр, переходит в очередной узел решетки с наименьшей на данный момент расходимостью. Из этого узла он анализирует следующий кадр, выбирая ребро, ближайшее к данному кадру, и переходит в следующий узел и так далее. Если путь выбран верный, то расходимость не увеличивается и декодирование выполняется без ошибки. Если путь выбран неверно, то расходимость (вес) начинает быстро нарастать. В этом случае декодер возвращается на несколько шагов назад и осуществляет поиск по неисследованному пути. Алгоритм Фано Переданная последовательность: a=00 00 00 00 00 … Принятая последовательность: c=01 00 00 00 00 … 00 1 11 1 00 11 00 1 00 1 00 1 00 1 11 11 11 11 11 11 11 11 1 A 10 2 00 10 2 11 00 10 3 01 1 00 11 11 00 1 11 11 00 11 11 5 00 10 00 10 4 01 11 4 2 00 1 00 00 10 00 10 00 10 10 5 01 01 01 01 01 01 3 10 10 10 10 10 10 10 10 Характеристики декодера Фано - проще в реализации, чем Витерби - с увеличением вероятности ошибки в канале значительно возрастает время декодирования. Декодирование с вычислением проверочной последовательности (только для систематических сверточных кодов) (Как для блочных кодов). На приемной стороне из принятых информационных символов формируют проверочные по тому закону, что и на передающей стороне, которые затем сравнивают с принимаемыми проверочными символами. Закон формирования проверочных символов выбирается таким образом, чтобы по структуре проверочной последовательности можно было определить искаженные символы. Код Вайнера-Эша [1,c.418] Это систематический сверточный код, исправляющий одну ошибку. m 12m - длина кода; m 12m 1 - количество информационных символов. Задается, имеющей следующую структуру: Проверочная матрица Порождающая матрица: PT 1 0 0 0 0 0 0 PT 0 PT 1 0 0 0 0 1 H PT 0 PT 0 PT 1 0 1 0 2 T T T PT Pm 0 Pm1 0 Pm2 0 0 где P0T , PmT - матрицы 1 2 m 1 ; 0 0 0 , 1 1 0 G 0 0 P 0 P 0 P 0 1 2 0 1 P 0 P 0 1 0 0 0 1 P 0 0 Pm 0 P m1 , 0 P m 2 0 1 P 0 0 0 0 0 где P0 , Pm - матрицы размера 2 m 1 1; 1 – единичная матрица размера k0 k0 , 0 T P0 представляет собой двоичное число, матрица того же размера, состоящая из все элементы которого равны единице; нулей. T T P1 … Pm представляют собой двоичные числа, записанные в убывающем порядке. 1 - матрица размера 1×1, состоящая из одной единицы, и 0 - матрица размера 1×1, состоящая из одного нуля. Кодер для Вайнера-Эша U 3fтакт m 4fтакт fтакт 16 Декодер для Вайнера-Эша регулирующий буфер U* & r регистр синдрома & S2 & S1 S0 “0” схема синдрома Возможные конфигурации ошибок в первых трех кадрах и соответствующие им первые три бита синдрома Конфигурация ошибок в принятом сегменте 1-й кадр 2-й кадр 3-й кадр 1000 0100 0010 0001 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 1000 0100 0010 0001 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 1000 0100 0010 … Синдром … 111 011 101 001 110 110 010 010 100 100 100 Эффективное кодирование 1. Вернер, М. Основы кодирования: учеб. для вузов / пер. с нем. Д. К. Зигангирова. - М.: Техносфера, 2004. – 286 с. 2. Практикум по теории информации и кодированию в системах связи: учебно-методическое пособие / Е. В. Медведева, А.В. Частиков – Киров: ФГБОУ ВО «ВятГУ», 2018. – 56 с. 1 Эффективное кодирование выполняет кодер источника: 2 Эффективное (оптимальное) кодирование Цель эффективного кодирования заключается в конструировании таких последовательностей символов, которые минимизируют среднее число символов, приходящихся на одно сообщение. Требования к кодам: 1) Должны обеспечивать возможность однозначного декодирования, т.е. позволять по принятой последовательности символов «0» и «1» однозначно восстановить переданное сообщение (букву); 2) На передачу сообщения в среднем должно быть затрачено минимальное число нулей и единиц, что позволит передать за единицу времени максимальное число сообщений. 3 Однозначно декодируемый код Код, обладающий тем свойством, что никакое более короткое слово не является началом другого более длинного слова кода, называют префиксным. Префиксные коды всегда однозначно декодируемы. A Код 1 Код 2 𝑎1 1 0 𝑎2 0 10 𝑎3 01 111 Узлы 3-го порядка Узлы 2-го порядка Узлы 1-го порядка 110 00 01 0 111 1 10 1 0 Код 1: послед-ть 0101 быть декодирована одним из сообщений 𝑎2 𝑎1 𝑎2 𝑎1 ; 𝑎3 𝑎3; 𝑎2 𝑎1 𝑎3 ; 𝑎3 𝑎2 𝑎1 . код неоднозначно декодируемым; Код 2: код однозначно декодируемым 1 Наглядное графическое изображение множества кодовых слов можно получить, установив соответствие между сообщениями и концевыми узлами двоичного кодового дерева. 1 Корень дерева 4 Экономичность кода Под эффективностью кодирования понимают отношение нижней границы H ( A) к средней длине кодового слова: log 2 D Эк H ( A) , где D -число различных символов алфавита, используемого для l log 2 D кодирования. 𝑛 𝑙= 𝑝 𝑎𝑖 𝑙 𝑎𝑖 − средняя длина кодового слова. 𝑖=1 5 ОСНОВОПОЛАГАЮЩИЕ ТЕОРЕМЫ ЭФФЕКТИВНОГО КОДИРОВАНИЯ Неравенство Крафта Теорема Шеннона 1. Для любого однозначно декодируемого кода всегда выполняется неравенство 𝑙 ≥ 𝐻(𝐴) и существует однозначно декодируемый код, для которого выполняется неравенство 𝑙 < 𝐻 𝐴 + 1. Теорема Шеннона 2. При любом сколь угодно малом положительном 𝜀 можно найти натуральное число N, такое, что среднее число символов на одно сообщение 𝑙 при 𝑛 > 𝑁 удовлетворяет неравенству 1 𝑙 < 𝐻 𝐴 + 𝜀, (𝜀 = 𝑛 , n-длина блока). Наоборот невозможно найти натуральное число N и однозначно декодируемый код, такие, чтобы выполнялось неравенство 𝑙<𝐻 𝐴 . 6 Методы эффективного кодирования при известной статистике сообщений 7 Метод Шеннона-Фано 1. Все имеющиеся 𝐾 сообщений располагают в один столбик в порядке убывания вероятностей. 2. Затем упорядоченные сообщения разбивают на две группы (верхнюю и нижнюю) так, чтобы суммарные вероятности этих групп были по возможности ближе друг к другу. 3. Для сообщений верхней группы в качестве первого символа кодового слова используется «1», а для нижней - «0». Далее каждую из полученных групп нужно снова разделить на две части по возможности с близкими суммарными вероятностями. 5. В качестве второго символа кодового слова используется «1» или 4. «0» в зависимости от принадлежности сообщений к верхней или нижней подгруппе и т.д. Данный процесс продолжается до тех пор, пока подгруппа не будет состоять из единственного сообщения. 8 Пример построения кода Шеннона-Фано Пусть даны восемь сообщений (букв), имеющих следующие вероятности: 0,2; 0,2; 0,15; 0,13; 0,12; 0,10; 0,07; 0,03. Построить код Шеннона-Фано. № сообщения Вероятность появления сообщения 1 0,20 2 3 0,20 0,15 4 0,13 5 6 0,12 0,10 7 8 0,07 0,03 Деление сообщений на группы I I I II II I I II II I I II II II Код ШеннонаФано 11 101 100 011 010 001 0001 0000 9 Особенности алгоритма Шеннона-Фано • Средний коэффициент сжатия – 1.5-2. • Если произойдет случайная ошибка, то она распространяется на все последующие сообщения (ошибка синхронизации). • При декодировании необходимо использовать все передаваемые сообщения, что требует при передачи больших массивов данных огромной памяти. • Устарел. Не применяется. 10 Метод Хаффмена 1. Все имеющиеся 𝐾 сообщений располагают в один столбик в порядке убывания вероятностей. 2. Затем два самых маловероятных сообщения 𝑎𝐾−1 , 𝑎𝐾 объединяют в одно сообщение 𝑏, которое имеет вероятность 𝑝𝐾−1 + 𝑝𝐾 . В результате получают сообщения 𝑎1 , 𝑎2 , … , 𝑎𝐾−2 , 𝑏, вероятности которых 𝑝1 , 𝑝2 , … , 𝑝𝐾−2 , 𝑝𝐾−1 + 𝑝𝐾 . Эти сообщения вновь располагают в порядке убывания вероятностей. 3. Далее берут два сообщения, имеющие наименьшие вероятности, объединяют их в одно и вычисляют их общую вероятность. 4. Шаги 2 и 3 повторяют до тех пор, пока не получат единственное сообщение, вероятность которого равна единице. 5. Проводя линии, объединяющие сообщения и образующие последовательные подмножества, получают дерево, в котором отдельные сообщения являются концевыми узлами. Соответствующие им кодовые слова можно построить, приписывая ветви, которые идут вниз - «0», а вверх - «1». 11 Пример построения кода Хаффмана Дискретный источник выдает символы из ансамбля *𝑎𝑖 +, с вероятностями 𝑝(𝑎1 ) = 0,3; 𝑝(𝑎2 ) = 0,15; 𝑝(𝑎3 ) = 0,25; 𝑝(𝑎4 ) = 0,15; 𝑝(𝑎5 ) = 0,1; 𝑝(𝑎6 ) = 0,05. Закодировать символы данного ансамбля кодом Хаффмана. 1 0 0 1 0 0 1 0 0 1 0 0 1 1 0 1 1 0 0,3 0, 25 0, 4 0,15 0,15 0,1 0,15 0, 05 1 0, 6 0,3 1 – большая вероятность; 0– меньшая вероятность. 12 Особенности 1. Коды Хаффмана применяются при кодировании изображений и являются основной частью стандартов JPEG, MPEGx (x=1,2,4) и H.26x (x=1,3,4,5). Кроме этого, они так же используются при оцифровке аудио сигналов. 2. Средний коэффициент сжатия – 2. Эффективнее кода Шеннона-Фано. 3. Эффективен при разной частоте появления данных: 2 2 3 2 2 4 3 2 2 2 4. 4. Различные длины кодовых слов приводят к неравномерным задержкам декодирования. 5. Сжатие данных снижает избыточность и поэтому повышает предрасположенность к распространению ошибок. 6. Кодирование Хаффмана предполагает знание вероятностей событий (знаков), или, по крайней мере, подходящих оценок этих вероятностей. На практике очень часто вероятности событий неизвестны, а их оценки весьма затруднены. 7. Минимальная длина кодового слова не может быть меньше 1, тогда как энтропия сообщения может составлять десятые и сотые значения бит/букву. 13 Арифметическое кодирование При арифметическом кодировании каждый символ исходного текста представляется отрезком на числовой оси с длиной, равной вероятности его появления, и началом, совпадающим с концом отрезка символа, предшествующего ему в алфавите. Пустому слову соответствует весь интервал [0, 1). После получения каждого очередного символа арифметический кодер уменьшает интервал, выбирая ту его часть, которая соответствует вновь поступившему символу. Результатом арифметического кодирования является дробная часть двоичной дроби из интервала для последней буквы, содержащая минимальное количество символов. 14 Пример. Закодировать сообщение «аава». Вероятность р(а)=3/4; р(b)=1/4. Интервал [0, 1) разбивается на части, длина которых пропорциональна вероятностям символов. На первом шаге берутся первые 3/4 интервала, соответствующие символу “а”. На втором шаге от предыдущего интервала оставляют еще 3/4, соответствующие второму символу “а”. После третьего шага от предыдущего интервала останется его правая четверть в соответствии с положением и вероятностью символа ”b”. На четвертом шаге оставляют лишь первые 3/4 от результата. 0,11 1 0 a 3/4 0,1001 b 0 9/16 a 0,011011 0,100100 0 a 27/64 b 36/64 0,01101100 108/256 b 12/16 0,10000111 a b 144/256 135/256 15 Пошаговая демонстрация работы алгоритма: Ша г 0. 1. 2. 3. 4. Просмотренная цепочка “” “a” “aa” “aab” “aaba” Интервал (в дес.ф) [0, 1) [0, 3/4) [0, 9/16) [27/64, 36/64) [108/256, 135/256) Интервал (в дв.ф) [0, 1) [0, 0.11) [0, 0.1001) [0.011011, 0.100100) [0.01101100, 0.10000111) Результатом кодирования является дробная часть числа Х, содержащая мин. количество цифр после запятой: 0.01101100<X<0.10000111. Этому условию удовлетворяет X=0.1, т.е. кодом является «1». Степень сжатия последовательности ааba – 4. 16 Декодирование Арифметический декодер работает синхронно с кодером. Вначале он разделит интервал [0, 1) на [0, 0.11) и [0.11, 1). Поскольку число 0.01 находится в первом из них, можно получить первый символ: “a”. Затем делим первый подынтервал [0, 0.11) на [0, 0.1001) и [0.1001, 0.1100). Опять выбираем первый, так как 0 < 0.1 < 0.1001. Продолжая этот процесс, мы однозначно декодируем все четыре символа. 0<0,01<0,11 a 0<0,0111<0,1001 a 0,011011<0,011100<0,100100 b 0,01101100<0,011100100<0,100100111 a 17 Особенности 1. Применяется для сжатия текстов. Используется в архиваторе LZARI, для сжатия изображений (JPEG). 2. Число двоичных разрядов в КС зависят от ширины конечного интервала. (Чем шире интервал, тем меньше разрядов. Ширина же интервала зависит от распределения вероятностей кодируемых символов – более вероятные символы сужают интервал в меньшей степени и, следовательно, добавляют к результату кодирования меньше бит. 3. Сложнее практическая реализация, чем Ш.-Ф. и Хаффмена. 4. Мин. длина кодового слова может быть <1. 18 Методы эффективного кодирования при неизвестной статистике сообщений (универсальные методы) 19 Словарные методы кодирования. Метод Лемпеля-Зива 1. Последовательность с выхода дискретного источника делятся на блоки переменной длины, которые называются фразами. 2. Каждая новая фраза должна отличаться от всех предыдущих и в одном символе от одной из предыдущих фраз. 3. Все фразы записываются в словарь, который сохраняет расположение существующих фраз. 4. Кодовые слова состоят из двух частей. Первая часть представляет собой номер словаря в двоичной форме предыдущей фразы, которая соответствует новой фразе, кроме последнего символа. Вторая часть – это новый символ, выданный источником. Первоначальный номер ячейки словаря 0000 используется, чтобы кодировать пустую фразу, т. е. «0» или «1». 20 Пример построения кода Лемпеля-Зива Пусть дискретный источник выдает последовательность 1 1 1 0 0 0 1 1 1 1 1 1. Последовательность символов делится на фразы: 1 1 1 0 0 0 1 1 1 1 1 1 0. Номера ячеек словаря, фразы и полученные кодовые слова приведены в таблице. Расположение в словаре 001 010 011 100 101 110 Фразы 1 11 0 00 111 1110 Кодовое слово 000 1 001 1 000 0 011 0 010 1 101 0 21 Особенности 1. Является универсальным, т.к. не требует априорного знания статистики источника. 2. Эффективен для одинаковых подцепочек данных: 2 3 15 40 2 3 15 40, а также при кодировании длинных последовательностей. 3. Применяется при сжатии компьютерных файлов (в программах архивирования текстов compress, lha, pkzip и arj.) 22 Метод Лемпеля-Зива-Велча 1. Входной поток данных разбивается на фразы. Причем каждая новая фраза начинается с последнего символа предыдущей фразы и не должна совпадать ни с одной из предшествующих фраз. Минимальная длина фразы два символа. 2. Фразы закрепляются за определенным номером словаря. 3. Выходной код формируется следующим образом: - если фраза состоит из двух символов, то выходной код соответствует первому символу фразы (левому); - если фразу составляют большее число символов, то выходной код соответствует номеру словаря. 23 Пример. Пусть на вход кодера поступает последовательность символов: 1110001111110. Последовательность символов делится на фразы: 1 1 1 0 0 0 1 1 1 1 1 1 0 . Фразы закрепляются за номером ячейки словаря. Полученные кодовые слова приведены в таблице 2.4. Расположение в словаре Фразы Кодовое слово 001 11 1 010 110 001 011 00 0 100 001 011 101 111 001 110 1111 101 111 10 1 END - 0 24 Декодирование: Последовательность на входе декодера: 1 0 0 1 0 0 1 1 0 0 1 1 0 1 1 0 На выходе декодера: 1 1 1 0 0 0 1 1 1 1 1 1 0 Коэффициент сжатия данных Если для кодирования последовательности 1110001111110 длиной в 13 символов и размером алфавита dim A = 64 нам понадобилось бы 13 • log2 64 = 13х6 = 78 бит, то для кодирования выходной строки кодера 1 001 0 011 001 010 1 0 длиной в 8 новых символов с алфавитом в 64 символа – 8 •6 = 48 бит. Таким образом, коэффициент сжатия будет равен: 78 Kc 1,625 . 48 25 Особенности 1 Преимуществом по сравнению с LZ служит отсутствие в необходимости передачи словаря фраз и кодов для восстановления сжатого файла. 2. Алгоритм LZW обеспечивает больший коэффициент сжатия по сравнению с методом LZ. 3. Реализован в форматах GIF, TIFF. 4. Средний коэффициент сжатия – 4. 1. 26 Выбор алгоритма сжатия определяется типом исходных данных и требованиям к ним. 27 Эффективное кодирование 1. Вернер, М. Основы кодирования: учеб. для вузов / пер. с нем. Д. К. Зигангирова. - М.: Техносфера, 2004. – 286 с. 2. Практикум по теории информации и кодированию в системах связи: учебно-методическое пособие / Е. В. Медведева, А.В. Частиков – Киров: ФГБОУ ВО «ВятГУ», 2018. – 56 с. 1 Эффективное кодирование выполняет кодер источника: 2 Эффективное (оптимальное) кодирование Цель эффективного кодирования заключается в конструировании таких последовательностей символов, которые минимизируют среднее число символов, приходящихся на одно сообщение. Требования к кодам: 1) Должны обеспечивать возможность однозначного декодирования, т.е. позволять по принятой последовательности символов «0» и «1» однозначно восстановить переданное сообщение (букву); 2) На передачу сообщения в среднем должно быть затрачено минимальное число нулей и единиц, что позволит передать за единицу времени максимальное число сообщений. 3 Однозначно декодируемый код Код, обладающий тем свойством, что никакое более короткое слово не является началом другого более длинного слова кода, называют префиксным. Префиксные коды всегда однозначно декодируемы. A Код 1 Код 2 𝑎1 1 0 𝑎2 0 10 𝑎3 01 111 Узлы 3-го порядка Узлы 2-го порядка Узлы 1-го порядка 110 00 01 0 111 1 10 1 0 Код 1: послед-ть 0101 быть декодирована одним из сообщений 𝑎2 𝑎1 𝑎2 𝑎1 ; 𝑎3 𝑎3; 𝑎2 𝑎1 𝑎3 ; 𝑎3 𝑎2 𝑎1 . код неоднозначно декодируемым; Код 2: код однозначно декодируемым 1 Наглядное графическое изображение множества кодовых слов можно получить, установив соответствие между сообщениями и концевыми узлами двоичного кодового дерева. 1 Корень дерева 4 Экономичность кода Под эффективностью кодирования понимают отношение нижней границы H ( A) к средней длине кодового слова: log 2 D Эк H ( A) , где D -число различных символов алфавита, используемого для l log 2 D кодирования. 𝑛 𝑙= 𝑝 𝑎𝑖 𝑙 𝑎𝑖 − средняя длина кодового слова. 𝑖=1 5 ОСНОВОПОЛАГАЮЩИЕ ТЕОРЕМЫ ЭФФЕКТИВНОГО КОДИРОВАНИЯ Неравенство Крафта Теорема Шеннона 1. Для любого однозначно декодируемого кода всегда выполняется неравенство 𝑙 ≥ 𝐻(𝐴) и существует однозначно декодируемый код, для которого выполняется неравенство 𝑙 < 𝐻 𝐴 + 1. Теорема Шеннона 2. При любом сколь угодно малом положительном 𝜀 можно найти натуральное число N, такое, что среднее число символов на одно сообщение 𝑙 при 𝑛 > 𝑁 удовлетворяет неравенству 1 𝑙 < 𝐻 𝐴 + 𝜀, (𝜀 = 𝑛 , n-длина блока). Наоборот невозможно найти натуральное число N и однозначно декодируемый код, такие, чтобы выполнялось неравенство 𝑙<𝐻 𝐴 . 6 Методы эффективного кодирования при известной статистике сообщений 7 Метод Шеннона-Фано 1. Все имеющиеся 𝐾 сообщений располагают в один столбик в порядке убывания вероятностей. 2. Затем упорядоченные сообщения разбивают на две группы (верхнюю и нижнюю) так, чтобы суммарные вероятности этих групп были по возможности ближе друг к другу. 3. Для сообщений верхней группы в качестве первого символа кодового слова используется «1», а для нижней - «0». Далее каждую из полученных групп нужно снова разделить на две части по возможности с близкими суммарными вероятностями. 5. В качестве второго символа кодового слова используется «1» или 4. «0» в зависимости от принадлежности сообщений к верхней или нижней подгруппе и т.д. Данный процесс продолжается до тех пор, пока подгруппа не будет состоять из единственного сообщения. 8 Пример построения кода Шеннона-Фано Пусть даны восемь сообщений (букв), имеющих следующие вероятности: 0,2; 0,2; 0,15; 0,13; 0,12; 0,10; 0,07; 0,03. Построить код Шеннона-Фано. № сообщения Вероятность появления сообщения 1 0,20 2 3 0,20 0,15 4 0,13 5 6 0,12 0,10 7 8 0,07 0,03 Деление сообщений на группы I I I II II I I II II I I II II II Код ШеннонаФано 11 101 100 011 010 001 0001 0000 9 Особенности алгоритма Шеннона-Фано • Средний коэффициент сжатия – 1.5-2. • Если произойдет случайная ошибка, то она распространяется на все последующие сообщения (ошибка синхронизации). • При декодировании необходимо использовать все передаваемые сообщения, что требует при передачи больших массивов данных огромной памяти. • Устарел. Не применяется. 10 Метод Хаффмена 1. Все имеющиеся 𝐾 сообщений располагают в один столбик в порядке убывания вероятностей. 2. Затем два самых маловероятных сообщения 𝑎𝐾−1 , 𝑎𝐾 объединяют в одно сообщение 𝑏, которое имеет вероятность 𝑝𝐾−1 + 𝑝𝐾 . В результате получают сообщения 𝑎1 , 𝑎2 , … , 𝑎𝐾−2 , 𝑏, вероятности которых 𝑝1 , 𝑝2 , … , 𝑝𝐾−2 , 𝑝𝐾−1 + 𝑝𝐾 . Эти сообщения вновь располагают в порядке убывания вероятностей. 3. Далее берут два сообщения, имеющие наименьшие вероятности, объединяют их в одно и вычисляют их общую вероятность. 4. Шаги 2 и 3 повторяют до тех пор, пока не получат единственное сообщение, вероятность которого равна единице. 5. Проводя линии, объединяющие сообщения и образующие последовательные подмножества, получают дерево, в котором отдельные сообщения являются концевыми узлами. Соответствующие им кодовые слова можно построить, приписывая ветви, которые идут вниз - «0», а вверх - «1». 11 Пример построения кода Хаффмана Дискретный источник выдает символы из ансамбля *𝑎𝑖 +, с вероятностями 𝑝(𝑎1 ) = 0,3; 𝑝(𝑎2 ) = 0,15; 𝑝(𝑎3 ) = 0,25; 𝑝(𝑎4 ) = 0,15; 𝑝(𝑎5 ) = 0,1; 𝑝(𝑎6 ) = 0,05. Закодировать символы данного ансамбля кодом Хаффмана. 1 0 0 1 0 0 1 0 0 1 0 0 1 1 0 1 1 0 0,3 0, 25 0, 4 0,15 0,15 0,1 0,15 0, 05 1 0, 6 0,3 1 – большая вероятность; 0– меньшая вероятность. 12 Особенности 1. Коды Хаффмана применяются при кодировании изображений и являются основной частью стандартов JPEG, MPEGx (x=1,2,4) и H.26x (x=1,3,4,5). Кроме этого, они так же используются при оцифровке аудио сигналов. 2. Средний коэффициент сжатия – 2. Эффективнее кода Шеннона-Фано. 3. Эффективен при разной частоте появления данных: 2 2 3 2 2 4 3 2 2 2 4. 4. Различные длины кодовых слов приводят к неравномерным задержкам декодирования. 5. Сжатие данных снижает избыточность и поэтому повышает предрасположенность к распространению ошибок. 6. Кодирование Хаффмана предполагает знание вероятностей событий (знаков), или, по крайней мере, подходящих оценок этих вероятностей. На практике очень часто вероятности событий неизвестны, а их оценки весьма затруднены. 7. Минимальная длина кодового слова не может быть меньше 1, тогда как энтропия сообщения может составлять десятые и сотые значения бит/букву. 13 Арифметическое кодирование При арифметическом кодировании каждый символ исходного текста представляется отрезком на числовой оси с длиной, равной вероятности его появления, и началом, совпадающим с концом отрезка символа, предшествующего ему в алфавите. Пустому слову соответствует весь интервал [0, 1). После получения каждого очередного символа арифметический кодер уменьшает интервал, выбирая ту его часть, которая соответствует вновь поступившему символу. Результатом арифметического кодирования является дробная часть двоичной дроби из интервала для последней буквы, содержащая минимальное количество символов. 14 Пример. Закодировать сообщение «аава». Вероятность р(а)=3/4; р(b)=1/4. Интервал [0, 1) разбивается на части, длина которых пропорциональна вероятностям символов. На первом шаге берутся первые 3/4 интервала, соответствующие символу “а”. На втором шаге от предыдущего интервала оставляют еще 3/4, соответствующие второму символу “а”. После третьего шага от предыдущего интервала останется его правая четверть в соответствии с положением и вероятностью символа ”b”. На четвертом шаге оставляют лишь первые 3/4 от результата. 0,11 1 0 a 3/4 0,1001 b 0 9/16 a 0,011011 0,100100 0 a 27/64 b 36/64 0,01101100 108/256 b 12/16 0,10000111 a b 144/256 135/256 15 Пошаговая демонстрация работы алгоритма: Ша г 0. 1. 2. 3. 4. Просмотренная цепочка “” “a” “aa” “aab” “aaba” Интервал (в дес.ф) [0, 1) [0, 3/4) [0, 9/16) [27/64, 36/64) [108/256, 135/256) Интервал (в дв.ф) [0, 1) [0, 0.11) [0, 0.1001) [0.011011, 0.100100) [0.01101100, 0.10000111) Результатом кодирования является дробная часть числа Х, содержащая мин. количество цифр после запятой: 0.01101100<X<0.10000111. Этому условию удовлетворяет X=0.1, т.е. кодом является «1». Степень сжатия последовательности ааba – 4. 16 Декодирование Арифметический декодер работает синхронно с кодером. Вначале он разделит интервал [0, 1) на [0, 0.11) и [0.11, 1). Поскольку число 0.01 находится в первом из них, можно получить первый символ: “a”. Затем делим первый подынтервал [0, 0.11) на [0, 0.1001) и [0.1001, 0.1100). Опять выбираем первый, так как 0 < 0.1 < 0.1001. Продолжая этот процесс, мы однозначно декодируем все четыре символа. 0<0,01<0,11 a 0<0,0111<0,1001 a 0,011011<0,011100<0,100100 b 0,01101100<0,011100100<0,100100111 a 17 Особенности 1. Применяется для сжатия текстов. Используется в архиваторе LZARI, для сжатия изображений (JPEG). 2. Число двоичных разрядов в КС зависят от ширины конечного интервала. (Чем шире интервал, тем меньше разрядов. Ширина же интервала зависит от распределения вероятностей кодируемых символов – более вероятные символы сужают интервал в меньшей степени и, следовательно, добавляют к результату кодирования меньше бит. 3. Сложнее практическая реализация, чем Ш.-Ф. и Хаффмена. 4. Мин. длина кодового слова может быть <1. 18 Методы эффективного кодирования при неизвестной статистике сообщений (универсальные методы) 19 Словарные методы кодирования. Метод Лемпеля-Зива 1. Последовательность с выхода дискретного источника делятся на блоки переменной длины, которые называются фразами. 2. Каждая новая фраза должна отличаться от всех предыдущих и в одном символе от одной из предыдущих фраз. 3. Все фразы записываются в словарь, который сохраняет расположение существующих фраз. 4. Кодовые слова состоят из двух частей. Первая часть представляет собой номер словаря в двоичной форме предыдущей фразы, которая соответствует новой фразе, кроме последнего символа. Вторая часть – это новый символ, выданный источником. Первоначальный номер ячейки словаря 0000 используется, чтобы кодировать пустую фразу, т. е. «0» или «1». 20 Пример построения кода Лемпеля-Зива Пусть дискретный источник выдает последовательность 1 1 1 0 0 0 1 1 1 1 1 1. Последовательность символов делится на фразы: 1 1 1 0 0 0 1 1 1 1 1 1 0. Номера ячеек словаря, фразы и полученные кодовые слова приведены в таблице. Расположение в словаре 001 010 011 100 101 110 Фразы 1 11 0 00 111 1110 Кодовое слово 000 1 001 1 000 0 011 0 010 1 101 0 21 Особенности 1. Является универсальным, т.к. не требует априорного знания статистики источника. 2. Эффективен для одинаковых подцепочек данных: 2 3 15 40 2 3 15 40, а также при кодировании длинных последовательностей. 3. Применяется при сжатии компьютерных файлов (в программах архивирования текстов compress, lha, pkzip и arj.) 22 Метод Лемпеля-Зива-Велча 1. Входной поток данных разбивается на фразы. Причем каждая новая фраза начинается с последнего символа предыдущей фразы и не должна совпадать ни с одной из предшествующих фраз. Минимальная длина фразы два символа. 2. Фразы закрепляются за определенным номером словаря. 3. Выходной код формируется следующим образом: - если фраза состоит из двух символов, то выходной код соответствует первому символу фразы (левому); - если фразу составляют большее число символов, то выходной код соответствует номеру словаря. 23 Пример. Пусть на вход кодера поступает последовательность символов: 1110001111110. Последовательность символов делится на фразы: 1 1 1 0 0 0 1 1 1 1 1 1 0 . Фразы закрепляются за номером ячейки словаря. Полученные кодовые слова приведены в таблице 2.4. Расположение в словаре Фразы Кодовое слово 001 11 1 010 110 001 011 00 0 100 001 011 101 111 001 110 1111 101 111 10 1 END - 0 24 Декодирование: Последовательность на входе декодера: 1 0 0 1 0 0 1 1 0 0 1 1 0 1 1 0 На выходе декодера: 1 1 1 0 0 0 1 1 1 1 1 1 0 Коэффициент сжатия данных Если для кодирования последовательности 1110001111110 длиной в 13 символов и размером алфавита dim A = 64 нам понадобилось бы 13 • log2 64 = 13х6 = 78 бит, то для кодирования выходной строки кодера 1 001 0 011 001 010 1 0 длиной в 8 новых символов с алфавитом в 64 символа – 8 •6 = 48 бит. Таким образом, коэффициент сжатия будет равен: 78 Kc 1,625 . 48 25 Особенности 1 Преимуществом по сравнению с LZ служит отсутствие в необходимости передачи словаря фраз и кодов для восстановления сжатого файла. 2. Алгоритм LZW обеспечивает больший коэффициент сжатия по сравнению с методом LZ. 3. Реализован в форматах GIF, TIFF. 4. Средний коэффициент сжатия – 4. 1. 26 Выбор алгоритма сжатия определяется типом исходных данных и требованиям к ним. 27 Перемежение кодовых символов в каналах с пакетами ошибок 1.Кларк, Д. Кодирование с исправлением ошибок в системах цифровой связи / Д. Кларк, Д, Кейн; под ред. Б. С. Цыбакова; пер. с англ. С. И. Гельфанда. - М.: Радио и связь, 1987. – 391 с. 2.Думачев, В.Н. Теория информации и кодирования – Воронеж: Воронежский институт МВД России, 2012. – 200 с. 1 Причины пакетов ошибок Причины: замирания, импульсные помехи, организованные помехи. Например, источник ошибок как грозовая молния длится от 10 до 100ms. Если мы используем CDMA на частоте 1.23MHz и скорости 153kbs, то одна вспышка молнии запросто уничтожает от 1.5 до 15kb передаваемых данных [2]. Если вы передаете SMS по сотовому телефону GSM на скорости 9.6 kbs, то можете потерять до 960bt. Поскольку в кодировке UTF16 каждая русская буква занимает 2Bt=16bt, то 960bt - это сообщение из 60 символов. Для защиты от пакетных ошибок в GSM используется алгоритм перемежения, который позволяет преобразовать пакет в независимые ошибки. 2 Перемежение кодовых символов в каналах с пакетами ошибок Эффективный метод борьбы с пакетами ошибок заключается в перемежении кодированных бит таким образом, что канал с пакетами ошибок трансформируется в канал с независимыми ошибками. В результате перемежения-деперемежения пакеты ошибок рассеиваются во времени так, что ошибки становятся независимыми и могут быть исправлены помехоустойчивыми кодами с небольшим кодовым расстоянием. 3 Типы устройств перемежения 1.Периодические - Блоковые - Сверточные 2.Псевдослучайные 4 Блоковый перемежитель Блоковый перемежитель формирует кодированные данные в прямоугольный массив из m строк и n столбцов. Биты считываются по столбцам и передаются по каналу. В приемнике деперемежитель располагает данные в тот же прямоугольный формат, но теперь они считываются по строкам. 5 Сверточные устройства перемежения Свѐрточные устройства [1] реализуются в виде N регистров сдвига разной длины, в которые с помощью коммутатора последовательно записываются данные. Регистры сдвига обеспечивают задержку данных на величину M x n, где n = 0, 1,...N - порядковый номер ветви, M - параметр кодера. Декодер строится аналогичным образом, но с обратным порядком расположения ветвей, и синхронизируется с кодером. В результате пакетная ошибка длительностью менее N символов разбивается на ряд одиночных, разделенных интервалом M символов. Сверточное перемежение требует вдвое меньшего объема памяти, чем блоковое. 6 Псевдослучайные перемежители Псевдослучайные перемежители являются блочными перемежителями, переупорядочивающими последовательность из B-N символов по псевдослучайному закону. Причем, этот закон может меняться. Такой метод перемежения обеспечивает высокую степень устойчивости при изменении параметров пакетов ошибок, однако, его сложность превышает сложность блочного и сверточного устройства перемежения того же объема. Псевдослучайные перемежители используются для защиты от организованных помех. Кроме того, псевдослучайное перемежение является неотъемлемой операцией для турбокодирования. 7 Структурная схема псевдослучайного устройства перемежения Регистр псевдошумовой последовательности Вентиль Счетчик Выбор перестановки Адресное ПЗУ Выбор Ввод символов канала Память устройства перемежения Переставленные символы канала 8 Пример псевдослучайного перемежения a (t ) Информационная последовательность Т p(t ) t Псевдослучайная последовательность t Переставленные символы и t 9 Применение перемежения для различных процессов Тип стирания Случайные одиночные ошибки Известные периодические пакеты Случайные пакеты Организованные помехи Без перемежения да Периодическое перемежение нет Псевдослучайное перемежение нет Да, для умеренных B и Да, для умеренных B и да нет да нет Неустойчиво для некоторых периодических пакетов Иногда память требуется меньше, чем при периодическом Максимальная устойчивость 10 Составные коды 11 Итеративные коды Код получают путем представления последовательности информационных символов в виде двумерного массива. Затем каждая строка массива и каждый столбец кодируются некоторым кодом, причем необязательно одним и тем же. Информационные Проверочные символы символы по строкам Проверочные символы по столбцам Проверка проверок Кодовое расстояние dmin такого кода равно произведению кодовых расстояний используемых итерируемых кодов. 12 Пример итеративного кода Рассмотрим итеративный код с проверкой на четность по каждой строке и каждому столбцу. 1001010 0111010 1110001 1000111 0011001 1 0 0 0 1 1011111 0 Код с проверкой на четность имеет кодовое расстояние dmin=2, соответственно для итеративного кода dmin= dmin1 dmin2=4. Полученный итеративный код исправляет одиночные ошибки и обнаруживает любые комбинации ошибок нечетного веса. 13 Особенности итеративных кодов Достоинствами итеративных кодов являются: 1. высокая корректирующая способность, 2. минимальная сложность аппаратной и программной реализации; Недостатками данных кодов являются: 1. большая избыточность кодов; 2. большая задержка информации при декодировании; В связи с этим в системах связи широкое применение получили каскадные коды, которые являются дальнейшим развитием итеративных кодов. 14 Каскадные коды В каскадных кодах кодирование осуществляется в два уровня. Входные данные сначала кодируются внешним недвоичным кодом (РидаСоломона), а затем внутренним (циклические, сверточные), после чего осуществляется модуляция сигнала. Декодирование происходит в обратном порядке. Искаженные каналом данные с демодулятора поступают сначала на декодер внутреннего кода, а затем на декодер внешнего кода. Достоинство каскадных кодов: - относительно низкая сложность кодирующих и декодирующих устройств; - позволяют реализовать достаточно большое кодовое расстояние, поэтому их применение в каналах с высоким уровнем помех эффективно. 15 Структурная схема системы каскадного кодирования 16 Структура каскадного кода 17 Турбо коды Турбо коды, образуются путем каскадирования двух или более составляющих кодов. В общем случае турбо коды могут получаться как при параллельном (рис.а), так и последовательном (рис.б) соединении кодов, разделенных перемежителем 18 Турбо коды, с параллельным соединении кодов - наилучшими составляющими кодами являются рекурсивные систематические сверточные коды. - Роль перемежителя в турбо кодах состоит в уменьшении корреляции между соседними символами кодового слова, что позволяет на каждой итерации декодирования уменьшать вероятность ошибки. - Наилучшими характеристиками обладают турбо коды с псевдослучайными перемежителями, однако часто они слишком сложны для построения и поэтому на практике приходится использовать перемежители с регулярной структурой. - Применяют в стандартах беспроводной связи, как CCSDS, TIA1008, CDMA2000, UMTS. - относительно высокую сложность практической реализации. 19 Турбо коды, с последовательным соединении кодов (коды произведения -Turbo Product Code – TPC ) - Строятся путем последовательного каскадирования двух или более блоковых кодов. - в качестве составляющих кодов обычно выбираются короткие, легко декодируемые коды, такие как коды с контролем четности, коды Хэмминга, расширенные коды Хэмминга и некоторые другие. - использующие TPC системы передачи данных способны работать при очень низких отношениях сигнал/шум. - хорошая адаптивность к предъявляемым требованиям по корректирующей способности, вносимой избыточности, длинам используемых кодов и др. - примененяются TPC во многих системах передачи данных, например INTELSAT, IEEE 802.16. 20 Выводы На сегодняшний день перспективными являются турбо и низкоплотностные коды, способные работать вблизи пропускной способности канала. Однако для практической реализации декодеров данных кодов требуются значительные аппаратные ресурсы. В результате разработчики кодеков вынуждены или использовать чрезвычайно дорогие аппаратные средства, или идти на упрощение алгоритмов, что приводит к некоторому ухудшению характеристик. 21 Теория информации и кодирования. Основные понятия Медведева Е.В., каф.РЭС, ВятГУ Рекомендуемая литература 1. Вернер, М. Основы кодирования: учеб. для вузов / пер. с нем. Д. К. Зигангирова. М.: Техносфера, 2004. – 286 с. 2. Практикум по теории информации и кодированию в системах связи: учебнометодическое пособие / Е. В. Медведева, А.В. Частиков – Киров: ВятГУ, 2018. – 56 с. 3. Помехоустойчивое кодирование в радиотехнике и свя-зи: учебное пособие / Е.В. Медведева, А.В. Частиков, В.Н. Шакин. - Киров: ВятГУ, 2008. – 68 с. 4. Блейхут, Р. Теория и практика кодов, контролирующих ошибки / под ред. К.Ш. Зигангирова. – М.: Мир, 1986. – 576 с. 2 Понятия: информация, сообщение, сигнал • Информация – это сведения, являющиеся объектом передачи, распределения, преобразования, хранения или непосредственного использования. • Сообщение - форма представления информации, удобная для передачи (речь, музыка, телевизионное изображение, данные на выходе компьютера). М.б. дискретное и непрерывное. • Сигнал - физический процесс, отображающий передаваемое сообщение. 3 Виды сигналов 4 Общая модель системы связи 5 • П-1, П1 - преобразователи сообщения в сигнал и наоборот - сигнала в сообщение. • Кодер источника формирует первичный код, каждое сообщение из ансамбля записывается им в форме двоичного представления. Для представления сообщений наилучшим является обратимый экономный код. • Кодер канала к информационным символам добавляет проверочные символы для повышения достоверности передачи информации. • Модулятор – согласование собщения источника или код. последовательностей со свойствами КС. • Демодулятор – обеспечивает оптимальный прием сигнала на фоне помех. 6 • Линия связи - это материальная среда для передачи сигналов (кабель, радио эфир). • Декодер канала должен обнаружить и по возможности исправить ошибки. • Декодер источника – восстановить исходный сигнал. • Цифровой преобразователь (ЦАП) служит для восстановления сообщения. 7 Виды помех Аддитивная помеха -Флуктуационная помеха порождается различного рода флуктуациями, т. е. случайными отклонениями тех или иных физических величин от их средних значений (н-р, тепловое движение носителей заряда, т.е. «белый шум» ). -Импульсная помеха представляет собой случайную последовательность импульсов, следующих столь редко, что реакция приемника на текущий импульс успевает затухнуть к моменту появления очередного импульса (н-р, атмосферная помеха). -Узкополосная помеха — это помехи, спектральная плотность мощности которых занимает сравнительно узкую полосу частот, существенно меньшую полосы частот сигнала. Чаще всего она обусловлена сигналами посторонних радиостанций, а также излучениями генераторов высокой частоты различного назначения (промышленных, медицинских и т. п.). 8 Основные инф.-техн. хар-ки СПИ • Достоверность передачи информации - степень соответствия принятых сообщений переданным. Зависит от параметров самой системы, степени ее технического совершенства и условий работы. • Помехоустойчивость СПИ - способность системы противостоять вредному действию помех на передачу сообщений. Зависит от способов кодирования, модуляции, метода приема и т. п. • Техническая скорость. Определяется числом символов дискретного сообщения, передаваемых в единицу времени. • Задержка, под которой понимается промежуток времени между подачей сообщения от источника на вход передающего устройства и выдачей восстановленного сообщения получателю приемным устройством. 9 Характеристики сигнала и КС Параметры сигнала 1) Тс - длительность сигнала; 2) Fс – ширина спектра сигнала; 3) Дс =Рс/Pп- динамический диапазон сигнала Параметры канала: 1) Тк > Тc (Тк время безотказной работы канала) 2) Дк >Дс (Дк - динамический диапазон канала) 3) Fк>Fc – (Fk-ширина полосы пропускания канала). 10 Достаточное условие для передачи сигнала через КС Vк ≥ Vc Тк *Дк * Fк = Vк -объем канала связи. 11 Циклические коды 1.Березкин Е.Ф. Основы теории информации и кодирования: Учебное пособие. – М.: НИЯУ МИФИ, 2010. – 312 с. 2. Практикум по теории информации и кодированию в системах связи: учебно-методическое пособие / Е. В. Медведева, А.В. Частиков – Киров: ФГБОУ ВО «ВятГУ», 2018. – 56 с. 3. Медведева, Е.В. Помехоустойчивое кодирование в радиотехнике и свя-зи: учебное пособие / Е.В. Медведева, А.В. Частиков, В.Н. Шакин. - Киров: ВятГУ, 2008. – 68 с. 4. Владимиров, С. С. Математические основы теории помехоустойчивого кодирования : учебное пособие / С. С. Владимиров ; СПбГУТ. — СПб, 2016. — 96 с. https://studfile.net/preview/7238241/ 5. М. Вернер Основы кодирования. Учебник для ВУЗов. Москва: Техносфера, 2004. - 288с. 1 Циклический код — линейный, блочный код, обладающий свойством цикличности, то есть каждая циклическая перестановка кодового слова также является кодовым словом. 2 Математическое введение к циклическим кодам 3 Правила построения циклических кодов Кроме матричного представления коды могут быть построены с использованием полиномиального представления кодового слова. Суть такого представления состоит в том, чтобы считать элементы кодового слова длины 𝑛 коэффициентами некоторого многочлена степени (𝑛 − 1), т.е. кодовое слово будет представляться многочленом: 𝑓 𝑥 = 𝑎0 + 𝑎1 𝑥+. . . +𝑎𝑛−1 𝑥 𝑛−1 . (1) Используя это обозначение, можно определить полиномиальный код как множество всех многочленов степени не большей (𝑛 − 1), содержащих в качестве множителя некоторый фиксированный многочлен 𝑔 𝑥 , который называется порождающим многочленом кода. Степень полинома 𝑔 𝑥 всегда равна значению (𝑛 − 𝑘). Информационные символы представляются при этом также многочленом степени (𝑘 − 1), который имеет вид: 𝑎 𝑥 = 𝑎0 + 𝑎1 𝑥+. . . +𝑎𝑘−1 𝑥 𝑘−1 . (2) 4 Порождающий многочлен циклического кода 5 6 Проверочный многочлен 7 Правило получения порождающей матрицы циклического кода G I способ. Порождающая матрица циклического разделимого (систематического) кода имеет вид G I kTk , Rkr , где I kTk - единичная транспортированная (3) матрица; Rk r - подматрица образованная остатками Ri x ; Ri x получают делением произведения I iT x r на порождающий полином g x . 8 II способ. Порождающая (несистематического) кода Gn,k полинома матрица циклического неразделимого формируется умножением порождающего g x степени r на одночлен x k 1 и последующих k 1 сдвигов полученной комбинации. 𝑔0 𝑔1 𝑔2 0 𝑔0 𝑔1 𝐺= … … … 0 0 0 … 𝑔𝑛 −𝑘 … 𝑔𝑛 −𝑘−1 … … … 0 0 0 𝑔𝑛−𝑘 … 𝑔0 0 … 0 0 … 0 , … … … … 𝑔𝑛−𝑘 (4) где 𝑔0 , … , 𝑔𝑛−𝑘 - коэффициенты порождающего многочлена. 9 Правило получения проверочной матрицы циклического кода H 1 способ (для систематического кода) Построение производится по порождающей матрице G (3), аналогично построению матрицы H для линейных блочных кодов. 2 способ (для несистематического кода) В циклических кодах проверочная матрица H , построенная с помощью проверочного полинома h x , имеет следующей вид: 0 0 H ... hk ... ... ... ... 0 0 ... h0 0 hk ... 0 hk hk 1 ... 0 ... ... ... ... h2 h1 ... 0 h1 h0 ... 0 h0 0 , ... 0 (5) где h0 ,, hk - коэффициенты проверочного многочлена. 10 Получение кодовых комбинаций циклического кода I способ - разделимый код. Кодовую комбинацию Ak x простого кода умножают на одночлен x r и добавляют к этому произведению остаток R х , полученный в результате деления произведения Ak x x r на порождающий полином g x : An x Ak x x r R x . 11 Получение кодовых комбинаций циклического кода II способ – неразделимый код. Кодовую комбинацию Ak x простого кода умножают на порождающий полином: An x Ak x g x . 12 Реализация схем кодирования/декодирования Операции кодирования и декодирования циклических кодов реализуются с помощью линейных переключательных схем или многотактных линейных фильтров. Линейные переключательные схемы состоят из трех элементов: - сумматоров (рис.1). Для бинарных кодов суммирование проводится по модулю два; - умножителей (рис.2). Для бинарных схем умножение по существу означает наличие или отсутствие соединения; - элементов задержки (рис. 3). Предполагается, что многотактный фильтр синхронизируется тактовым задерживается на один такт. a2 a1 + генератором. a a1+a2 a1{0,1} a2{0,1} Рис.1. Сумматор c В элементе задержки информация a·c a{0,1} c{0,1} Рис. 2. Умножитель Рис. 3. Элемент задержки Комбинируя операции умножения, сложения и задержки, можно производить 13 различные действия с полиномами. Схемы умножения/деления Умножение некоторой последовательности символов на порождающий полином 𝑔𝑟 (𝑥) может быть выполнено с помощью схемы, изображенной на рис. 1. 1 2 g0 r-1 g2 g1 gr 2 r gr g r 1 рис. 1 На рис. 2 приведена схема, реализующая деление последовательности символов на полином 𝑔𝑟 (𝑥). 1 g0 2 g1 r-1 g2 gr 2 r g r 1 gr рис. 2 14 Кодер неразделимого кода Пример Получить кодовые комбинации циклического кода (7,4) и построить схемы кодирующего устройства двумя способами, если кодовая комбинация простого кода 𝐴 𝑥 = 𝑥 3 + 𝑥 + 1, порождающий полином 𝑔 𝑥 = 𝑥 4 + 𝑥 + 1. Способ 1. Кодовая комбинация циклического кода равна: 𝐴8 𝑥 = 𝑥 3 + 𝑥 + 1 𝑥 4 + 𝑥 + 1 = 𝑥 7 + 𝑥 5 + 1 → 1010001. Другие кодовые комбинации циклического кода могут быть получены путем циклического сдвига данной кодовой комбинации. Процесс умножения двух полиномов реализуется схемой: 1 g0 1 2 g1 1 3 g2 0 4 g3 0 g4 1 Для двоичных кодов существенны только те цепи умножения, в которых 𝑔𝑖 = 1. 15 Кодер разделимого кода Способ 2 Кодовую комбинацию для получения разделимого кода получают по алгоритму: 1) вычисляют произведение кодовой комбинации простого кода 𝐴 𝑥 на одночлен 𝑥𝑟 : 𝐴 𝑥 𝑥𝑟 = 𝑥3 + 𝑥 + 1 𝑥4 = 𝑥7 + 𝑥5 + 𝑥4. 2) определяют остаток 𝑅(𝑥), полученного в результате деления произведения 𝐴 𝑥 𝑥 𝑟 на порождающий полином 𝑃𝑟 (𝑥): x7 x5 x 4 x7 x 4 x3 x4 x 1 x3 x x5 x3 x5 x 2 x R(x ) x3 x2 3) получают кодовую комбинацию: 𝐴8 𝑥 = 𝐴 𝑥 𝑥 𝑟 + 𝑅 𝑥 = 𝑥 7 + 𝑥 5 + 𝑥 4 + 𝑥 3 + 𝑥 2 → 10111100. 16 Кодер может быть реализован по схеме, изображенной на рис.1. РЗ Вход 1 2 3 4 Выход K1 1 S1 РC 2 S2 3 4 K2 рис.1. Схема кодирующего устройства содержит: регистр задержки РЗ информационной группы на четыре такта; формирователь проверочной группы, включающий в себя регистр сдвига РС и сумматоры по модулю два в цепях обратной связи. Два ключа 𝐾1 и 𝐾2 обеспечивают необходимую последовательность работы схемы. 17 Синдромное декодирование циклического кода - при кодировании 1-м способом декодирование основано на использовании свойства делимости без остатка кодового многочлена на порождающий многочлен. Если R(x)=0, то кодовая комбинация считается неискаженной, если R(x) ≠0, то КК стирается и формируется сигнал «ошибка». - при кодировании 2-м способом декодирование основано на получении контрольного остатка R0(x)= Ak x x r mod g ( x) . Если R0(x)= R(x), то кодовая комбинация считается неискаженной, если R0(x)≠R(x), то есть «ошибка». 18 Декодер для 1-го способа Декодер для циклического кода, заданного порождающим полиномом 𝑔 𝑥 = 𝑥 4 + 𝑥 + 1. ЗУ g0 1 g1 1 g2 0 g3 0 g4 1 1 19 Декодер для 2-го способа К1 Схема деления Ak x x r mod g ( x) ЗУ R0(x) К2 Рг синдрома R0(x) + Рг проверочных элементов R(x) 20 Алгоритмы исправления ошибок в кодовых комбинациях циклического кода I способ. Определяют Ro 0,1 как остаток, полученный от деления E x x n1 на g x . Вычисляют остаток R1 0,1 , полученный от деления Aˆ n 0,1 на g x . Если R1 0,1 Ro 0,1 , то к Aˆ n 0,1 дописывают справа нуль и определяют R2 0,1 . Если R1 0,1 R0 0,1 , то дописывают справа еще нуль и т.д. до тех пор, пока Ri 0,1 Ro 0,1 . Номер ошибочного элемента ai на единицу превышает число приписанных нулей. 21 22 23 Алгоритмы исправления ошибок в кодовых комбинациях циклического кода II способ 1. Принятую комбинацию делят на порождающий полином g x . 2. Сравнивают вес полученного остатка w с числом исправляемых ошибок. 3. Если w > tи , то производят циклический сдвиг принятой комбинации на один разряд влево и снова делят на g x . 4. Если w = tи , то складывают по модулю два последнее делимое с последним остатком. 5. Производят циклический сдвиг полученной кодовой комбинации на n разрядов вправо (т.е. на такое же количество разрядов, на которое сдвигали влево) и получают исправленную кодовую комбинацию. 24 25 26 Декодер Меггитта (Meggitt Decoder) [5] Основан на совпадении синдрома 𝑅0 (𝑥), соответствующего вектору ошибок 𝐸(𝑥) и синдрома 𝑅(𝑥), соответствующего 𝑥𝑅𝑖 𝑥 𝑚𝑜𝑑𝑔 𝑥 , 𝑖 = 2 … 𝑛 . (𝑅1 𝑥 = 𝐴𝑛 𝑥 mod𝑔 𝑥 ). An ()x PгС синдрома детектор ошибки En 1 n разряды БРгС 27 Алгоритм работы: 1) 𝐴𝑛 (𝑥) в течении 𝑛-тактов вводится в БРгС и РгСС; в РгСС вычисляются 𝑅𝑖(𝑥), полученные 2) 𝑅𝑖(𝑥) сравнивается со 𝐴 𝑛 (𝑥) 𝑔(𝑥) . всеми табличными синдромами и в случае совпадения старший разряд БРгС исправляется путем прибавления к его значению единицы. 3) Затем последовательность в БРгС и РгСС сдвигается на один такт (𝑅(𝑥) ∙ 𝑥). 4) Если новый синдром совпадает с одним из табличных, то исправляется очередная ошибка и т.д. 28 Пример декодера Меггитта Пусть 𝐴𝑛 𝑥 = 1001011; 𝐴𝑛 𝑥 = 1011011; 𝑔 𝑥 = 1101. Тогда полином ошибки в старшем разряде: 𝐸 𝑥 = 𝑥 6 = 1000000. 𝑅0 𝑥 = 110. разреш. & An ( x ) x0 детектор ошибки 1 0 1 заполнение 0 сдвиг x1 0 x2 1 2 3 x3 1 n разр. PгС опред. g ( x) детектор ошибки настроен на R ( x) & & 1 1 2 3 4 5 6 7 & 29 Процесс исправления ошибки декодером Меггитта 1) Первые n-тактов заполняется РгС и БРгС. В РгС вычисляется синдром: Aˆ n ( x) , т.е. g ( x) 1 0 11 0 11 11 0 1 11 0 1 11 11 0 0 11 0 1 R( x) 11 1 а) т.к. 𝑅(𝑥) не совпадает с табличным (т.е. с 𝑅0 𝑥 = 110), для 𝐸(𝑥), на выходе детектора – 0, исправление не происходит. б) производится однократный циклический сдвиг принятой последовательности в БРгС 2) однократное деление 𝑥∙𝑅(𝑥) 𝑔(𝑥) и проверка на совпадение синдрома с заданным x R( x) 1 1 1 0 1 1 0 1 11 0 1 011 R( x) R0 ( x) 3) 11 0 11 0 11 0 1 R( x) R0 ( x) на выходе детектора – 1, исправление ошибки символа в n-м разряде БРгС. Исправление ошибок осуществляется за 2n тактов 30 Пояснение к примеру Значение синдрома БРгС 1 такт 1 1 1 1 1 0 1 n 1 0 БРгС 2 такт 0 1 1 1 1 1 0 0 1 n 1 1 БРгС 0 0 n 1 3 такт 4 такт 1 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 Последовательность с исправленным символом Для окончательного восстановления КК еще 4 сдвига 31 Поля Галуа. Основные понятия Для построения циклических кодов используют мат. аппарат полей Галуа. Так как в каналах связи множество передаваемых сигналов всегда конечно, основой теории кодирования являются поля, содержащие конечное число элементов (поля Галуа). Полем Галуа называется конечное коммутативное поле. Конечное поле, это множество из q элементов, в котором определены правила выполнения арифметических операций. Поле Галуа из q элементов обозначают GF (q) . Минимальное поле Галуа из элементов 1 и 0, называется простым и обозначается GF (2) . Поле Галуа GF ( p m ) , состоящие из p элементов называется расширенным (где р - простое, а m = 1,2….). 32 m Свойства поля Галуа 33 Свойства поля Галуа 1. В двоичном поле Галуа (-1)mod2=1, поэтому знак перед единицей не имеет смысла. 2. Определены правила замкнутости, ассоциативности, коммутативности, существование нейтрального (нулевого) элемента, обратного элемента [3,5]. 3. Расширенное поле Галуа строится по неприводимому (примитивному) многочлену степени m. Простое поле Галуа – по примитивному (простому) числу. 34 35 Построение поля Галуа многочлену p(x) 0 0.............01 1 0.............10 .................. m1 1.............00 m p ( x ) pm x m . m m1 x ................... 2m 21 m 2 2 x Поле GF (2 3 ) построено GF ( p m ) 0 по неприводимому 1 0 1 0 2 1 3 0 4 1 5 1 6 1 0 1 0 1 1 1 0 1 0 0 1 0 1 1 по неприводимому многочлену p ( x) x 3 x 1 ( 1011 ). Пример: m 3 1011 1000 011 5 x 4 x( x 2 x) x 3 x 2 . Далее x 3 заменяется на многочлен, соответствующий 3 , т.е. 5 ( x 1) x 2 x 2 x 1 36 Свойства поля Галуа (продолжение) 3. Неприводимый многочлен неразложим на произведение многочленов с коэффициентами из GF(2), но разложим в расширенном поле Галуа. 3 Пример. Многочлен f ( x) x x 1 неприводим над полем GF (2) , но он может быть разложен на множители над полем GF (2 3 ) . Подстановкой можно найти, что является корнем f (x) . Действительно, () = 3 + + 1 = (011) + (010) + (001) = (000) = 0. 4. Многочлен (x7-1) разлагается на множители следующим образом: (x7-1) = (x3+x2+1)(x3+x+1)(x+1). 5. Повышение степеней дает повторение тех же самых корней. 6. Элементам поля Галуа соответствуют минимальные функции (или примитивные многочлены). 37 Примеры полей Галуа Поле Галуа GF (24 ) 1 0 0 2 0 3 1 4 0 5 0 6 1 7 1 8 0 9 1 10 0 11 1 12 1 13 1 14 1 0 0 1 0 0 1 1 0 1 0 1 1 1 1 0 0 1 0 0 1 1 0 1 0 1 1 1 1 0 0 1 0 0 0 1 0 0 1 1 0 1 0 1 1 1 x 1 x4 x 1 x4 x 1 x 4 x3 x 2 x 1 x4 x 1 x2 x 1 x 4 x3 x 2 x 1 Поле Галуа GF (23 ) 0 1 0 1 0 2 1 3 0 4 1 5 1 6 1 0 1 0 1 1 1 0 1 0 0 1 0 1 1 x+1 x3+x+1 x3+x+1 x3+x2+1 x3+x+1 x3+x2+1 x3+x2+1 x 4 x3 1 x4 x 1 x 4 x3 x 2 x 1 x2 x 1 x 4 x3 1 x 4 x3 x 2 x 1 x 4 x3 1 x4 x3 1 38 Коды Боуза-Чоудхури-Хоквингема (БЧХ) Являются циклическими. Представляют большой класс легко строящихся кодов с варьируемыми в широких пределах длиной блока и скоростью. При длинах блока около нескольких сотен элементов многие из кодов БЧХ являются оптимальными среди всех известных кодов с теми же длиной и скоростью. Длина кода: n р m 1, где m - степень многочлена p(x) , образующего поле Галуа GF ( p m ) . Порождающий многочлен определяется как наименьшее общее кратное минимальных функций: g x НОК f m 0 x , f m 01 x , , f m 0 2t 1 x , где f m 0 x , f m 01 x , , f m 0 2t 1 x - набор минимальных функций корней m0 , m01 , , m0 2t 1 . 39 Пример построения кода БЧХ Поле Галуа GF (24 ) 1 0 0 2 0 3 1 4 0 5 0 6 1 7 1 8 0 9 1 10 0 11 1 12 1 13 1 14 1 0 0 1 0 0 1 1 0 1 0 1 1 1 1 0 0 1 0 0 1 1 0 1 0 1 1 1 1 0 0 1 0 0 0 1 0 0 1 1 0 1 0 1 1 1 Над полем Галуа GF (23 ) построить код БЧХ (m=4, tисп.ош =3). x 1 x4 x 1 Решение: x x 1 4 x 4 x3 x 2 x 1 x4 x 1 x2 x 1 x x x x 1 x 4 x3 1 4 3 2 x4 x 1 3 2 x 4 x3 1 x x x x 1 x 4 x3 1 4 3 i соответствующие . Т.е. для i 1,6 1 6 x 4 x 1, x 4 x3 x 2 x 1, x 2 x 1 . 2. x x x x 1 x2 x 1 4 Определяем минимальные функции fi , где i 1,2t , 1. 2 Вычисляем порождающий мн-н: g x x 4 x 1 x 4 x3 x 2 x 1 x 2 x 1 x10 x8 x5 x 4 x 2 x 1 x4 x3 1 40 Коды Рида-Соломона Являются циклическими, недвоичными. подмножеством кодов БЧХ, Длина кода: n р m 1. Порождающий многочлен: g x x j 0 x j 01 x j 0 2t 1 , где j0 - начальная степень поля Галуа. Минимальное расстояние: d min n k 1 . Является кодом с максимальным кодовым расстоянием. Т.е. при фиксированных n и k не существует кода, у которого минимальное код. расстояние больше, чем у кода РС. 41 Пример построения РС кода Определить порождающий полином кода Рида-Соломона с g (x) параметрами: t 2 , n 15 над полем GF (16) ; j 0 =2. Полином имеет вид Поле Галуа GF (24 ) 1 0 0 2 0 3 1 4 0 5 0 6 1 7 1 8 0 9 1 10 0 11 1 12 1 13 1 14 1 0 0 1 0 0 1 1 0 1 0 1 1 1 1 0 0 1 0 0 1 1 0 1 0 1 1 1 1 0 0 1 0 0 0 1 0 0 1 1 0 1 0 1 1 1 x 1 x4 x 1 x4 x 1 g x x 2 x 3 x 4 x 5 x x x x 1 x4 x 1 x 4 x3 2 3 4 5 x2 x 1 x 2 5 6 8 9 x 4 x3 x 2 x 1 x 4 x3 1 x 10 9 11 12 14 4 3 2 x4 x 1 x 4 x3 x 2 x 1 x2 x 1 x 4 x3 1 (0001) x 4 (1001) x3 (0101) x 2 (1100) x1 (1001) x 0 0001 1001 0101 1100 1001 . x 4 x3 x 2 x 1 x 4 x3 1 x4 x3 1 42 Применение кодов БЧХ и РС 1. в цифровом телевидении; 2. при передаче данных по сетям WiMAX, в оптических линиях связи, в спутниковой и радиорелейной связи 3. для защиты памяти в материнских платах компьютеров и т. д. 4. Сложность декодирования кодов БЧХ при большом значении n очень велика, поэтому коды БЧХ небольшой длины в основном применяются в качестве составляющих элементов более эффективных каскадных кодов. 5. Коды РС в двоичном варианте характеризуются относительно невысокой эффективностью по отношению к независимым битовым ошибкам, однако являются чрезвычайно мощными как по отношению к пакетам ошибок, так и к обнаружению ошибок, находящихся на расстоянии, превышающем исправляющую способность кода. 43 CRC коды Длина кода: n р m 1. Длина информационной части: k 2m m 2 . Минимальное кодовое расстояние: d min 4 . Порождающий многочлен: g x 1 x p x , где p x - примитивный многочлен степени m . 44 Применение CRC кодов 45 Циклические коды 1.Березкин Е.Ф. Основы теории информации и кодирования: Учебное пособие. – М.: НИЯУ МИФИ, 2010. – 312 с. 2. Практикум по теории информации и кодированию в системах связи: учебно-методическое пособие / Е. В. Медведева, А.В. Частиков – Киров: ФГБОУ ВО «ВятГУ», 2018. – 56 с. 3. Медведева, Е.В. Помехоустойчивое кодирование в радиотехнике и свя-зи: учебное пособие / Е.В. Медведева, А.В. Частиков, В.Н. Шакин. - Киров: ВятГУ, 2008. – 68 с. 4. Владимиров, С. С. Математические основы теории помехоустойчивого кодирования : учебное пособие / С. С. Владимиров ; СПбГУТ. — СПб, 2016. — 96 с. https://studfile.net/preview/7238241/ 5. М. Вернер Основы кодирования. Учебник для ВУЗов. Москва: Техносфера, 2004. - 288с. 1 Циклический код — линейный, блочный код, обладающий свойством цикличности, то есть каждая циклическая перестановка кодового слова также является кодовым словом. 2 Математическое введение к циклическим кодам 3 Правила построения циклических кодов Кроме матричного представления коды могут быть построены с использованием полиномиального представления кодового слова. Суть такого представления состоит в том, чтобы считать элементы кодового слова длины 𝑛 коэффициентами некоторого многочлена степени (𝑛 − 1), т.е. кодовое слово будет представляться многочленом: 𝑓 𝑥 = 𝑎0 + 𝑎1 𝑥+. . . +𝑎𝑛−1 𝑥 𝑛−1 . (1) Используя это обозначение, можно определить полиномиальный код как множество всех многочленов степени не большей (𝑛 − 1), содержащих в качестве множителя некоторый фиксированный многочлен 𝑔 𝑥 , который называется порождающим многочленом кода. Степень полинома 𝑔 𝑥 всегда равна значению (𝑛 − 𝑘). Информационные символы представляются при этом также многочленом степени (𝑘 − 1), который имеет вид: 𝑎 𝑥 = 𝑎0 + 𝑎1 𝑥+. . . +𝑎𝑘−1 𝑥 𝑘−1 . (2) 4 Порождающий многочлен циклического кода 5 6 Проверочный многочлен 7 Правило получения порождающей матрицы циклического кода G I способ. Порождающая матрица циклического разделимого (систематического) кода имеет вид G I kTk , Rkr , где I kTk - единичная транспортированная (3) матрица; Rk r - подматрица образованная остатками Ri x ; Ri x получают делением произведения I iT x r на порождающий полином g x . 8 II способ. Порождающая (несистематического) кода Gn,k полинома матрица циклического неразделимого формируется умножением порождающего g x степени r на одночлен x k 1 и последующих k 1 сдвигов полученной комбинации. 𝑔0 𝑔1 𝑔2 0 𝑔0 𝑔1 𝐺= … … … 0 0 0 … 𝑔𝑛 −𝑘 … 𝑔𝑛 −𝑘−1 … … … 0 0 0 𝑔𝑛−𝑘 … 𝑔0 0 … 0 0 … 0 , … … … … 𝑔𝑛−𝑘 (4) где 𝑔0 , … , 𝑔𝑛−𝑘 - коэффициенты порождающего многочлена. 9 Правило получения проверочной матрицы циклического кода H 1 способ (для систематического кода) Построение производится по порождающей матрице G (3), аналогично построению матрицы H для линейных блочных кодов. 2 способ (для несистематического кода) В циклических кодах проверочная матрица H , построенная с помощью проверочного полинома h x , имеет следующей вид: 0 0 H ... hk ... ... ... ... 0 0 ... h0 0 hk ... 0 hk hk 1 ... 0 ... ... ... ... h2 h1 ... 0 h1 h0 ... 0 h0 0 , ... 0 (5) где h0 ,, hk - коэффициенты проверочного многочлена. 10 Получение кодовых комбинаций циклического кода I способ - разделимый код. Кодовую комбинацию Ak x простого кода умножают на одночлен x r и добавляют к этому произведению остаток R х , полученный в результате деления произведения Ak x x r на порождающий полином g x : An x Ak x x r R x . 11 Получение кодовых комбинаций циклического кода II способ – неразделимый код. Кодовую комбинацию Ak x простого кода умножают на порождающий полином: An x Ak x g x . 12 Реализация схем кодирования/декодирования Операции кодирования и декодирования циклических кодов реализуются с помощью линейных переключательных схем или многотактных линейных фильтров. Линейные переключательные схемы состоят из трех элементов: - сумматоров (рис.1). Для бинарных кодов суммирование проводится по модулю два; - умножителей (рис.2). Для бинарных схем умножение по существу означает наличие или отсутствие соединения; - элементов задержки (рис. 3). Предполагается, что многотактный фильтр синхронизируется тактовым задерживается на один такт. a2 a1 + генератором. a a1+a2 a1{0,1} a2{0,1} Рис.1. Сумматор c В элементе задержки информация a·c a{0,1} c{0,1} Рис. 2. Умножитель Рис. 3. Элемент задержки Комбинируя операции умножения, сложения и задержки, можно производить 13 различные действия с полиномами. Схемы умножения/деления Умножение некоторой последовательности символов на порождающий полином 𝑔𝑟 (𝑥) может быть выполнено с помощью схемы, изображенной на рис. 1. 1 2 g0 r-1 g2 g1 gr 2 r gr g r 1 рис. 1 На рис. 2 приведена схема, реализующая деление последовательности символов на полином 𝑔𝑟 (𝑥). 1 g0 2 g1 r-1 g2 gr 2 r g r 1 gr рис. 2 14 Кодер неразделимого кода Пример Получить кодовые комбинации циклического кода (7,4) и построить схемы кодирующего устройства двумя способами, если кодовая комбинация простого кода 𝐴 𝑥 = 𝑥 3 + 𝑥 + 1, порождающий полином 𝑔 𝑥 = 𝑥 4 + 𝑥 + 1. Способ 1. Кодовая комбинация циклического кода равна: 𝐴8 𝑥 = 𝑥 3 + 𝑥 + 1 𝑥 4 + 𝑥 + 1 = 𝑥 7 + 𝑥 5 + 1 → 1010001. Другие кодовые комбинации циклического кода могут быть получены путем циклического сдвига данной кодовой комбинации. Процесс умножения двух полиномов реализуется схемой: 1 g0 1 2 g1 1 3 g2 0 4 g3 0 g4 1 Для двоичных кодов существенны только те цепи умножения, в которых 𝑔𝑖 = 1. 15 Кодер разделимого кода Способ 2 Кодовую комбинацию для получения разделимого кода получают по алгоритму: 1) вычисляют произведение кодовой комбинации простого кода 𝐴 𝑥 на одночлен 𝑥𝑟 : 𝐴 𝑥 𝑥𝑟 = 𝑥3 + 𝑥 + 1 𝑥4 = 𝑥7 + 𝑥5 + 𝑥4. 2) определяют остаток 𝑅(𝑥), полученного в результате деления произведения 𝐴 𝑥 𝑥 𝑟 на порождающий полином 𝑃𝑟 (𝑥): x7 x5 x 4 x7 x 4 x3 x4 x 1 x3 x x5 x3 x5 x 2 x R(x ) x3 x2 3) получают кодовую комбинацию: 𝐴8 𝑥 = 𝐴 𝑥 𝑥 𝑟 + 𝑅 𝑥 = 𝑥 7 + 𝑥 5 + 𝑥 4 + 𝑥 3 + 𝑥 2 → 10111100. 16 Кодер может быть реализован по схеме, изображенной на рис.1. РЗ Вход 1 2 3 4 Выход K1 1 S1 РC 2 S2 3 4 K2 рис.1. Схема кодирующего устройства содержит: регистр задержки РЗ информационной группы на четыре такта; формирователь проверочной группы, включающий в себя регистр сдвига РС и сумматоры по модулю два в цепях обратной связи. Два ключа 𝐾1 и 𝐾2 обеспечивают необходимую последовательность работы схемы. 17 Синдромное декодирование циклического кода - при кодировании 1-м способом декодирование основано на использовании свойства делимости без остатка кодового многочлена на порождающий многочлен. Если R(x)=0, то кодовая комбинация считается неискаженной, если R(x) ≠0, то КК стирается и формируется сигнал «ошибка». - при кодировании 2-м способом декодирование основано на получении контрольного остатка R0(x)= Ak x x r mod g ( x) . Если R0(x)= R(x), то кодовая комбинация считается неискаженной, если R0(x)≠R(x), то есть «ошибка». 18 Декодер для 1-го способа Декодер для циклического кода, заданного порождающим полиномом 𝑔 𝑥 = 𝑥 4 + 𝑥 + 1. ЗУ g0 1 g1 1 g2 0 g3 0 g4 1 1 19 Декодер для 2-го способа К1 Схема деления Ak x x r mod g ( x) ЗУ R0(x) К2 Рг синдрома R0(x) + Рг проверочных элементов R(x) 20 Алгоритмы исправления ошибок в кодовых комбинациях циклического кода I способ. Определяют Ro 0,1 как остаток, полученный от деления E x x n1 на g x . Вычисляют остаток R1 0,1 , полученный от деления Aˆ n 0,1 на g x . Если R1 0,1 Ro 0,1 , то к Aˆ n 0,1 дописывают справа нуль и определяют R2 0,1 . Если R1 0,1 R0 0,1 , то дописывают справа еще нуль и т.д. до тех пор, пока Ri 0,1 Ro 0,1 . Номер ошибочного элемента ai на единицу превышает число приписанных нулей. 21 22 23 Алгоритмы исправления ошибок в кодовых комбинациях циклического кода II способ 1. Принятую комбинацию делят на порождающий полином g x . 2. Сравнивают вес полученного остатка w с числом исправляемых ошибок. 3. Если w > tи , то производят циклический сдвиг принятой комбинации на один разряд влево и снова делят на g x . 4. Если w = tи , то складывают по модулю два последнее делимое с последним остатком. 5. Производят циклический сдвиг полученной кодовой комбинации на n разрядов вправо (т.е. на такое же количество разрядов, на которое сдвигали влево) и получают исправленную кодовую комбинацию. 24 25 26 Декодер Меггитта (Meggitt Decoder) [5] Основан на совпадении синдрома 𝑅0 (𝑥), соответствующего вектору ошибок 𝐸(𝑥) и синдрома 𝑅(𝑥), соответствующего 𝑥𝑅𝑖 𝑥 𝑚𝑜𝑑𝑔 𝑥 , 𝑖 = 2 … 𝑛 . (𝑅1 𝑥 = 𝐴𝑛 𝑥 mod𝑔 𝑥 ). An ()x PгС синдрома детектор ошибки En 1 n разряды БРгС 27 Алгоритм работы: 1) 𝐴𝑛 (𝑥) в течении 𝑛-тактов вводится в БРгС и РгСС; в РгСС вычисляются 𝑅𝑖(𝑥), полученные 2) 𝑅𝑖(𝑥) сравнивается со 𝐴 𝑛 (𝑥) 𝑔(𝑥) . всеми табличными синдромами и в случае совпадения старший разряд БРгС исправляется путем прибавления к его значению единицы. 3) Затем последовательность в БРгС и РгСС сдвигается на один такт (𝑅(𝑥) ∙ 𝑥). 4) Если новый синдром совпадает с одним из табличных, то исправляется очередная ошибка и т.д. 28 Пример декодера Меггитта Пусть 𝐴𝑛 𝑥 = 1001011; 𝐴𝑛 𝑥 = 1011011; 𝑔 𝑥 = 1101. Тогда полином ошибки в старшем разряде: 𝐸 𝑥 = 𝑥 6 = 1000000. 𝑅0 𝑥 = 110. разреш. & An ( x ) x0 детектор ошибки 1 0 1 заполнение 0 сдвиг x1 0 x2 1 2 3 x3 1 n разр. PгС опред. g ( x) детектор ошибки настроен на R ( x) & & 1 1 2 3 4 5 6 7 & 29 Процесс исправления ошибки декодером Меггитта 1) Первые n-тактов заполняется РгС и БРгС. В РгС вычисляется синдром: Aˆ n ( x) , т.е. g ( x) 1 0 11 0 11 11 0 1 11 0 1 11 11 0 0 11 0 1 R( x) 11 1 а) т.к. 𝑅(𝑥) не совпадает с табличным (т.е. с 𝑅0 𝑥 = 110), для 𝐸(𝑥), на выходе детектора – 0, исправление не происходит. б) производится однократный циклический сдвиг принятой последовательности в БРгС 2) однократное деление 𝑥∙𝑅(𝑥) 𝑔(𝑥) и проверка на совпадение синдрома с заданным x R( x) 1 1 1 0 1 1 0 1 11 0 1 011 R( x) R0 ( x) 3) 11 0 11 0 11 0 1 R( x) R0 ( x) на выходе детектора – 1, исправление ошибки символа в n-м разряде БРгС. Исправление ошибок осуществляется за 2n тактов 30 Пояснение к примеру Значение синдрома БРгС 1 такт 1 1 1 1 1 0 1 n 1 0 БРгС 2 такт 0 1 1 1 1 1 0 0 1 n 1 1 БРгС 0 0 n 1 3 такт 4 такт 1 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 Последовательность с исправленным символом Для окончательного восстановления КК еще 4 сдвига 31 Поля Галуа. Основные понятия Для построения циклических кодов используют мат. аппарат полей Галуа. Так как в каналах связи множество передаваемых сигналов всегда конечно, основой теории кодирования являются поля, содержащие конечное число элементов (поля Галуа). Полем Галуа называется конечное коммутативное поле. Конечное поле, это множество из q элементов, в котором определены правила выполнения арифметических операций. Поле Галуа из q элементов обозначают GF (q) . Минимальное поле Галуа из элементов 1 и 0, называется простым и обозначается GF (2) . Поле Галуа GF ( p m ) , состоящие из p элементов называется расширенным (где р - простое, а m = 1,2….). 32 m Свойства поля Галуа 33 Свойства поля Галуа 1. В двоичном поле Галуа (-1)mod2=1, поэтому знак перед единицей не имеет смысла. 2. Определены правила замкнутости, ассоциативности, коммутативности, существование нейтрального (нулевого) элемента, обратного элемента [3,5]. 3. Расширенное поле Галуа строится по неприводимому (примитивному) многочлену степени m. Простое поле Галуа – по примитивному (простому) числу. 34 35 Построение поля Галуа многочлену p(x) 0 0.............01 1 0.............10 .................. m1 1.............00 m p ( x ) pm x m . m m1 x ................... 2m 21 m 2 2 x Поле GF (2 3 ) построено GF ( p m ) 0 по неприводимому 1 0 1 0 2 1 3 0 4 1 5 1 6 1 0 1 0 1 1 1 0 1 0 0 1 0 1 1 по неприводимому многочлену p ( x) x 3 x 1 ( 1011 ). Пример: m 3 1011 1000 011 5 x 4 x( x 2 x) x 3 x 2 . Далее x 3 заменяется на многочлен, соответствующий 3 , т.е. 5 ( x 1) x 2 x 2 x 1 36 Свойства поля Галуа (продолжение) 3. Неприводимый многочлен неразложим на произведение многочленов с коэффициентами из GF(2), но разложим в расширенном поле Галуа. 3 Пример. Многочлен f ( x) x x 1 неприводим над полем GF (2) , но он может быть разложен на множители над полем GF (2 3 ) . Подстановкой можно найти, что является корнем f (x) . Действительно, () = 3 + + 1 = (011) + (010) + (001) = (000) = 0. 4. Многочлен (x7-1) разлагается на множители следующим образом: (x7-1) = (x3+x2+1)(x3+x+1)(x+1). 5. Повышение степеней дает повторение тех же самых корней. 6. Элементам поля Галуа соответствуют минимальные функции (или примитивные многочлены). 37 Примеры полей Галуа Поле Галуа GF (24 ) 1 0 0 2 0 3 1 4 0 5 0 6 1 7 1 8 0 9 1 10 0 11 1 12 1 13 1 14 1 0 0 1 0 0 1 1 0 1 0 1 1 1 1 0 0 1 0 0 1 1 0 1 0 1 1 1 1 0 0 1 0 0 0 1 0 0 1 1 0 1 0 1 1 1 x 1 x4 x 1 x4 x 1 x 4 x3 x 2 x 1 x4 x 1 x2 x 1 x 4 x3 x 2 x 1 Поле Галуа GF (23 ) 0 1 0 1 0 2 1 3 0 4 1 5 1 6 1 0 1 0 1 1 1 0 1 0 0 1 0 1 1 x+1 x3+x+1 x3+x+1 x3+x2+1 x3+x+1 x3+x2+1 x3+x2+1 x 4 x3 1 x4 x 1 x 4 x3 x 2 x 1 x2 x 1 x 4 x3 1 x 4 x3 x 2 x 1 x 4 x3 1 x4 x3 1 38 Коды Боуза-Чоудхури-Хоквингема (БЧХ) Являются циклическими. Представляют большой класс легко строящихся кодов с варьируемыми в широких пределах длиной блока и скоростью. При длинах блока около нескольких сотен элементов многие из кодов БЧХ являются оптимальными среди всех известных кодов с теми же длиной и скоростью. Длина кода: n р m 1, где m - степень многочлена p(x) , образующего поле Галуа GF ( p m ) . Порождающий многочлен определяется как наименьшее общее кратное минимальных функций: g x НОК f m 0 x , f m 01 x , , f m 0 2t 1 x , где f m 0 x , f m 01 x , , f m 0 2t 1 x - набор минимальных функций корней m0 , m01 , , m0 2t 1 . 39 Пример построения кода БЧХ Поле Галуа GF (24 ) 1 0 0 2 0 3 1 4 0 5 0 6 1 7 1 8 0 9 1 10 0 11 1 12 1 13 1 14 1 0 0 1 0 0 1 1 0 1 0 1 1 1 1 0 0 1 0 0 1 1 0 1 0 1 1 1 1 0 0 1 0 0 0 1 0 0 1 1 0 1 0 1 1 1 Над полем Галуа GF (23 ) построить код БЧХ (m=4, tисп.ош =3). x 1 x4 x 1 Решение: x x 1 4 x 4 x3 x 2 x 1 x4 x 1 x2 x 1 x x x x 1 x 4 x3 1 4 3 2 x4 x 1 3 2 x 4 x3 1 x x x x 1 x 4 x3 1 4 3 i соответствующие . Т.е. для i 1,6 1 6 x 4 x 1, x 4 x3 x 2 x 1, x 2 x 1 . 2. x x x x 1 x2 x 1 4 Определяем минимальные функции fi , где i 1,2t , 1. 2 Вычисляем порождающий мн-н: g x x 4 x 1 x 4 x3 x 2 x 1 x 2 x 1 x10 x8 x5 x 4 x 2 x 1 x4 x3 1 40 Коды Рида-Соломона Являются циклическими, недвоичными. подмножеством кодов БЧХ, Длина кода: n р m 1. Порождающий многочлен: g x x j 0 x j 01 x j 0 2t 1 , где j0 - начальная степень поля Галуа. Минимальное расстояние: d min n k 1 . Является кодом с максимальным кодовым расстоянием. Т.е. при фиксированных n и k не существует кода, у которого минимальное код. расстояние больше, чем у кода РС. 41 Пример построения РС кода Определить порождающий полином кода Рида-Соломона с g (x) параметрами: t 2 , n 15 над полем GF (16) ; j 0 =2. Полином имеет вид Поле Галуа GF (24 ) 1 0 0 2 0 3 1 4 0 5 0 6 1 7 1 8 0 9 1 10 0 11 1 12 1 13 1 14 1 0 0 1 0 0 1 1 0 1 0 1 1 1 1 0 0 1 0 0 1 1 0 1 0 1 1 1 1 0 0 1 0 0 0 1 0 0 1 1 0 1 0 1 1 1 x 1 x4 x 1 x4 x 1 g x x 2 x 3 x 4 x 5 x x x x 1 x4 x 1 x 4 x3 2 3 4 5 x2 x 1 x 2 5 6 8 9 x 4 x3 x 2 x 1 x 4 x3 1 x 10 9 11 12 14 4 3 2 x4 x 1 x 4 x3 x 2 x 1 x2 x 1 x 4 x3 1 (0001) x 4 (1001) x3 (0101) x 2 (1100) x1 (1001) x 0 0001 1001 0101 1100 1001 . x 4 x3 x 2 x 1 x 4 x3 1 x4 x3 1 42 Применение кодов БЧХ и РС 1. в цифровом телевидении; 2. при передаче данных по сетям WiMAX, в оптических линиях связи, в спутниковой и радиорелейной связи 3. для защиты памяти в материнских платах компьютеров и т. д. 4. Сложность декодирования кодов БЧХ при большом значении n очень велика, поэтому коды БЧХ небольшой длины в основном применяются в качестве составляющих элементов более эффективных каскадных кодов. 5. Коды РС в двоичном варианте характеризуются относительно невысокой эффективностью по отношению к независимым битовым ошибкам, однако являются чрезвычайно мощными как по отношению к пакетам ошибок, так и к обнаружению ошибок, находящихся на расстоянии, превышающем исправляющую способность кода. 43 CRC коды Длина кода: n р m 1. Длина информационной части: k 2m m 2 . Минимальное кодовое расстояние: d min 4 . Порождающий многочлен: g x 1 x p x , где p x - примитивный многочлен степени m . 44 Применение CRC кодов 45 Коды для линий связи Помехоустойчивые коды в радиотехнике и связи: учебно-методическое пособие / Е.В. Медведева, А.В. Частиков – Киров: ФГБОУ ВО «ВятГУ», 2018. – 66 с. Медведева Е.В., каф.РЭС, ВятГУ Искажение импульсов в линии связи При передаче импульсных сигналов по кабельным ЛС искажаются низкочастотные и высокочастотные гармоники, в результате фронты импульсов теряют свою прямоугольную форму. Вследствие этого на приемном конце линии сигналы могут плохо распознаваться. 2 Соответствие между полосой пропускания линии связи и спектром сигнала Если значимые гармоники сигнала попадают в ПП линии, то такой сигнал будет иметь незначительные искажения и приемник сможет правильно распознать сигнал. Ограничение ПП приводит к взаимному наложению сигналов различных символов, называемому межсимвольной интерференцией. Т.е. Чем больше несоответствии между ПП линии и шириной спектра сигналов, тем сигналы больше искажаются и тем вероятнее ошибки в распознавании информации на приеме. 3 Линейное кодирование При передаче данных в основной полосе частот (т.е. В НЧ-области, без модуляции ВЧ несущей), канальный кодер называют линейным кодером, а сигнал на его выходе – линейным кодом. 4 Требования к линейным кодам • минимальную спектральную плотность на нулевой частоте и ее ограничение на нижних частотах; • информацию о тактовой частоте передаваемого сигнала в виде дискретной составляющей, легко выделяемой на фоне непрерывной части спектра; • непрерывный сигнал должен быть достаточно узкополосным для передачи через канал связи без искажений; • малую избыточность; • минимально возможные длины блоков повторяющихся символов ("1" или "0"). • Кроме того, линейный код должен осуществлять контроль за ошибками на уровне физической линии, не должен приводить к размножению ошибок, иметь достаточно простую техническую реализацию. 5 Классификация ЛК 1. Неалфавитные 1.1 Биполярные (2-х уровневые) 1.2 Биимпульсные (3-х уровневые) 2. Алфавитные (для кодирования – несколько алфавитов, частота импульсов в код. послед. меньше, чем в исходной) 3. Многоуровневые 6 Модели сигналов 1. Во временной форме: S (t ) an( k ) S1 (t nT ) , n где n- порядковый номер символа; k an - k-е значение символа; S1 (t ) - функция, описывающая форму импульсов. a (1) Например, для двоичного кода a (k ) принимает два значения 0, a ( 2) 1 ; для троичного сигнала - a (1) 1 / 2, a ( 2) 0, a (3) 1 / 2 . 2. В частотной форме Энергетический спектр определяется структурой импульсной последовательности и выбором импульсов нужной формы. 7 Видеоимпульсы для кодирования 8 Параметры неалфавитных кодов 1. Потенциальной помехоустойчивостью, которая характеризуется эквивалентной мощностью: 1T 2 Pэ [ Si (t ) S j (t )] dt . T 0 S i (t ) и S j (t ) - элементы сигнала, которые используются при передаче "0" и "1" исходной информации. 2. Коэффициент, характеризующий изменение тактовой частоты: pT ( p T p T ) / n , Si где Sj pTS - коэффициент, характеризующий изменение элемента S i ; i pTS - коэффициент, характеризующий изменение элемента S j ; j - количество переданных элементов. 3. Коэффициент, характеризующий устойчивость признаков тактовой частоты: K pT min / pT max . n 9 Код без возвращения к нулю (Non Return to Zero, NRZ) Единица заменяется элементом S1 t , а нулевая посылка – элементом S 2 t . «+» прост в реализации, обладает хорошей распознаваемостью ошибок (из-за двух резко отличающихся потенциалов), «-» - не обладает свойством самосинхронизации (при высоких скоростях обмена данными и длинных последовательностях единиц или нулей небольшое рассогласование тактовых частот генераторов на ПРД и ПРМ может привести к ошибке в целый такт и, соответственно, считыванию некорректного значения бита.), - наличие низкочастотной составляющей, которая приближается к нулю при передаче длинных последовательностей единиц или нулей. Из-за этого многие каналы связи, не обеспечивающие прямого гальванического соединения между приемником и источником, этот вид кодирования не поддерживают. 10 Биполярные коды В биполярных кодах для обеспечения возможности выделения тактовой частоты на приеме, возможности контроля за ошибками используются дополнительные уровни. Недостаток – дополнительный уровень увеличивает избыточность кода. Примеры биполярных кодов: RZ, AMI, ISDN, PST, B3ZS, HDB3, B6ZS. 11 Парноизбирательный троичный код (ПИТ, PST) Мода Двоичный входной сигнал + 1 1 0 0 1 0 1 0 +1 +1 -1 0 0 -1 +1 +1 – 0 +1 -1 -1 -1 -1 +1 0 12 Биимпульсные коды Биимпульсные коды обеспечивают выделение тактовой частоты на приеме за счет расширения полосы пропускания при использовании только 2-х уровней кодирования. Примеры биимпульсных кодов – ABC, OBC, CMI, DMI, H. 13 Код Миллера 14 Алфавитные коды. Код 4В3Т Таблица 2.3 Исходная двоичная кодовая комбинация –1 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 +–+ ++0 0++ 0+0 0–+ ++– 00+ 0+– +–0 +00 –++ –+0 +0+ +0– –0+ +++ Троичная кодовая комбинация 0 +1 +–+ ++0 0++ 0–0 0–+ 00– ––+ 0+– +–0 +–– –00 –+0 +0+ +0– –0+ –+– +–+ 0–– ––0 0+0 0–+ ++– 00– 0+– +–0 +00 –++ –+0 –0– +0– –0+ –+– +2 ––– 0–– ––0 0–0 0–+ 00– ––+ 0+– +–0 +–– –00 –+0 –0– +0– –0+ –+– 15 Энергетические спектры последовательностей в троичных кодах 16 Информационные характеристики источника сообщений и канала связи 1. Вернер, М. Основы кодирования: учеб. для вузов / пер. с нем. Д. К. Зигангирова. - М.: Техносфера, 2004. – 286 с. 2. Практикум по теории информации и кодированию в системах связи: учебно-методическое пособие / Е. В. Медведева, А.В. Частиков – Киров: ФГБОУ ВО «ВятГУ», 2018. – 56 с. 1 Общая модель системы связи 2 Информационные характеристики дискретных источников Дискретный источник без памяти Количество информации определяется выражением независимых I(xi ) log2 1/ p(xi ) log 2 p(x i ) , (бит). символов (сообщений) (1) 3 Поведение информации как функции вероятности 4 Взаимная и условная информация Условная информация события х при условии, что произошло событие у: I ( xi y j ) log 2 p ( xi y j ) . (2) Взаимная информация событий xi и y j : I xi , y j log 2 p( xi y j ) p( xi ) log 2 двух p( yi x j ) , p( yi ) (3) где p xi , y j p( xi ) p( y j xi ) p ( yi ) p ( xi y j ) . Среднее количество взаимной информации между источниками X и Y: 𝐼 𝑋, 𝑌 = − 𝑝(𝑥𝑖 |𝑦𝑗 ) 𝑝(𝑥𝑖 , 𝑦𝑗 ) log 𝑝(𝑥𝑖 ) (4) 5 Граничные случаи взаимной информация 6 Энтропия сообщения В теории информации энтропия неопределенности источника. Безусловная энтропия сообщения: m H ( A) p(ai ) log 2 p(ai ) . определена как мера (5) i 1 Свойства энтропии 1. Для бинарного источника энтропия симметрична (рис.) 2. Энтропия максимальна для равновероятных сообщений. 3. Энтропия минимальна, если известно, что одно событие произойдет, а другое не произойдет. 4. Энтропия всегда положительна. 7 Энтропия источника и энтропия сообщения ИС х0 К х КС 𝑥0 - множество сообщений ИС; 𝑥- множество символов кода. Энтропия сообщения – количество информации, содержащейся в любом усредненном сообщении: 𝑘 𝐻 𝑥0 = − 𝑝(𝑥0𝑖 ) log 𝑃(𝑥0𝑖 ). (6) 𝑖=1 Энтропия источника – количество информации, содержащейся в одном символе сообщения: 𝐻 𝑥 =− 𝑝(𝑥𝑖 ) log 𝑃(𝑥𝑖 ). (7) 8 Энтропия источника и энтропия сообщения Пример 1.1: Передаются 4 равновероятных сообщения двоичным безызбыточным кодом: 00, 01, 10 ,11 𝐻 𝑥0 , 𝐻 𝑥 − ? 2 𝐻 𝑥0 = − 𝑖=1 4 𝐻 𝑥 =− 𝑖=1 1 1 log = 2; 4 4 1 1 log = 1 . 2 2 Т.о. каждый символ несет одну двоичную единицу информации 𝐻(𝑥0 ) (8) = 𝑛, 𝐻(𝑥) где 𝑛 – число элементов в коде. Если (8) соблюдается, то код называется оптимальным (в противном случае возникает избыточность и код будет не оптимальным для канала без шума. Чтобы получить оптимальный код, необходимо, чтобы символы в нем встречались с равной вероятностью). 9 Условная и совместная энтропия Условная энтропия сообщения ансамбля А относительно B : m k H ( A B) p(b j ) p(ai b j ) log 2 p(ai b j ) . (9) i 1 j 1 Совместная энтропия двух ансамблей А и B : m k H ( A, B) p(ai , b j ) log 2 p(ai , b j ) . (10) i 1 j 1 Взаимосвязь информационных характеристик: I ( A, B) H ( A) H ( B) H ( A, B) H ( A B) H ( B A) 10 Избыточность и производительность источника Избыточность источника без памяти: 1 H ( A) / H max ( A) . (11) Избыточность источника с памятью: 1 H ( A B) / H max ( A) . (12) Производительность дискретного источника сообщений: H ( А) H ( А) , (13) где - время передачи одного символа. 11 Модели каналов связи Канал связи произвольного типа можно представить в виде графа (рисунок) или матрицы) x1 y1 xi yj xn ym Рисунок 1.1 – Граф, отображающий КС 𝑃(𝑦1 /𝑥1 ) 𝑃(𝑦2 /𝑥1 ) ⋯ 𝑃 = 𝑃(𝑦1 /𝑥2 ) 𝑃(𝑦2 /𝑥2 ) ⋯ 𝑃(𝑦1 /𝑥𝑛 ) 𝑃(𝑦2 /𝑥𝑛 ) ⋯ 𝑃(𝑦𝑚 /𝑥1 ) 𝑃(𝑦𝑚 /𝑥2 ) . 𝑃(𝑦𝑚 /𝑥𝑛 ) Количество информации, передаваемой через КС: 𝐼 𝑋; 𝑌 = 𝐻 𝑌 − 𝐻(𝑌/𝑋). 12 Модели каналов связи 1. В зависимости от количества символов на входе и выходе канала: а) КС без стирания (𝑚 = 𝑛 - число символов на выходе равно числу символов на входе); б) КС со стиранием (𝑛 < 𝑚, т.е., на выходе формируется дополнительный символ, который называется символом стирания). 2. В зависимости от воздействия шума: а) с шумом (реальные каналы); б) без шума (переходные вероятности = 0). 3. а) КС без памяти (передаваемые символы не зависят от ранее переданных символов); б) КС с памятью (символы зависят от ранее переданных символов). 4. По статистическим свойствам: а) симметричные каналы (𝑃1 = 𝑃2 ); б) несимметричные каналы (𝑃1 ≠ 𝑃2 ). 5. По временным характеристикам: а) стационарные (постоянные во времени параметры); б) нестационарные 13 Информационные характеристики канала связи 1. Скорость передачи информации (рис.): 𝑅 ′ = 𝐼′ 𝐵, 𝐵 = 𝐻 ′ 𝐵 − 𝐻 ′ 𝐵/𝐵 = 𝐻 ′ 𝐵 − 𝐻 ′ (𝐵/𝐵), (14) где 𝐻 ′ 𝐵 - производительность канала, т.е. количество информации в принятом на выходе сигнала в единицу времени; 𝐻 ′ 𝐵/𝐵 - имеет смысл утечки информации из канала (потеря полезной информации в начале с узкой полосой); 𝐻 ′ (𝐵/𝐵) - скорость поступления в канал информации, не имеющей отношение к ожидаемой и создаваемой присутствующими в канале помехами (т.е. в канале с широкой полосой добавляется посторонний сигнал в виде помехи). Информационная модель канала связи 14 Информационные характеристики канала связи 2. Пропускная способность – это максимальное количество передаваемой информации. 𝐶 = 𝐼𝑚𝑎𝑥 𝑋; 𝑌 = 𝐻𝑚𝑎𝑥 𝑌 − 𝐻𝑚𝑖𝑛 𝑌 𝑋 бит/симв; (15) 𝐶 ′ = 𝑚𝑎𝑥𝐼 ′ 𝐵; 𝐵 = 𝑉𝐶 бит/сек, где 𝑉 = 1 𝜏0 – техническая (символьная) скорость. Пропускная способность канала связи без шума: При отсутствии шума 𝐻(𝑌/𝑋) = 0, 𝐻𝑚𝑎𝑥 = log 𝑚, 𝐶 = log 2 𝑚. Пример Определить 𝐶 для оснований кода 2; 4; 8. m 2 4 8 C 1 2 3 (16) c 3 2 1 2 4 8 k Т.о., чем больше основание кода, тем более информативным является код, но усложняет схемная реализация. 15 Теорема Шеннона о кодировании в КС без шума Кодирование, о котором идет речь в этой формулировке, называется эффективным(безызбыточным) кодированием. 16 Пропускная способность канала связи с шумом без стирания (𝐧 = 𝐦 = 𝐤) y (t ) x1 1 p x2 p k 1 y2 xk yk 1 y0 порог срабатывания 0 t y1 Зоны приема для канала без стирания Графическая модель КС без стирания 𝑝 - вероятность трансформации символа. 𝑘 𝑃(𝑦𝑖 /𝑥𝑖 ) = 𝑝; 𝑃 𝑖=1 𝑃(𝑦𝑗 /𝑥𝑖 ) = - вероятность трансформации символа 𝑥𝑖 в 𝑦𝑗 ; 𝑘−1 𝑃(𝑦𝑗 /𝑥𝑖 ) = 1 − 𝑝 - вероятность прохождения символа. 17 Пропускная способность КС с шумом без стирания 𝐶 = 𝐻𝑚𝑎𝑥 𝑌 − 𝐻𝑚𝑖𝑛 (𝑦/𝑥); 𝑘 𝐻𝑚𝑎𝑥 𝑌 = − 𝑘 𝑘 𝑃 𝑦𝑗 log 2 𝑃 𝑦𝑗 ; 𝐻𝑚𝑖𝑛 𝑌|𝑋 = − 𝑗 =1 𝑃(𝑥𝑗 )𝑃(𝑦𝑗 /𝑥𝑖 ) log 𝑃(𝑦𝑗 /𝑥𝑖 ) . 𝑖=1 𝑗 =1 Для 𝑘 = 3: 𝐻𝑚𝑎𝑥 = log 2 𝑘 = log 2 3. x1 1 p y1 x2 p k 1 y2 xk yk (17) 𝐻 𝑌 𝑋 = −(𝑃 𝑥1 𝑃 𝑦1 𝑥1 log 𝑃 𝑦1 𝑥1 + 𝑃 𝑥2 𝑃 𝑦1 𝑥2 log 𝑃 𝑦1 𝑥2 +. .. +𝑃 𝑥𝑘 𝑃 𝑦1 𝑥𝑘 log 𝑃 𝑦1 𝑥𝑘 ) ∗ 𝑘 1 = − 𝑘 1 − 𝑃 log 1 − 𝑃 𝑘 𝑘−1 𝑝 𝑝 +𝑘 log 𝑘−1 𝑘−1 𝑃 = − 1 − 𝑃 log 1 − 𝑃 + 𝑃 log 𝑘−1). (18) 18 Пропускная способность КС с шумом без стирания С учетом (17) и (18), пропускная способность k–значного КС: 𝑝 𝐶 = log 2 𝑘 + (1 − 𝑝) log 1 − 𝑝 + 𝑝 log . 𝑘−1 При соответствующем выборе порога срабатывания можно получить минимальную условную энтропию. Для двоичного симметричного канала (𝑘 = 2) 𝐶 = 1 + (1 − 𝑝) log 1 − 𝑝 + 𝑝 log 𝑝. (19) (20) В реальных КС вероятность ошибки < 10-2. При уменьшении вероятности, пропускная способность (20) уменьшается за счет действия помех менее чем на 10%: p<10-2C=0,92. 19 Основная теорема Шеннона для дискретного канала с помехами Здесь речь идет о помехоустойчивом кодировании. 20 Пропускная способность канала связи с шумом и со стиранием (Binary Erasure Channel, ВЕС - англ.) y (t ) x1 1 p q q 1 y1 p q y3 0 t Зоны приема для канала без стирания q x2 1 p q p y2 Графическая модель КС без стирания 𝑝 - вероятность трансформации; 𝑞 – вероятность попадания зону стирания; (1 − 𝑝 − 𝑞) – вероятность верной передачи. 21 Пропускная способность КС с шумом со стиранием 𝐶 = 𝐻𝑚𝑎𝑥 𝑌 − 𝐻𝑚𝑖𝑛 (𝑦/𝑥); 𝑘 𝑘 𝐻𝑚𝑎𝑥 𝑌 = − 𝑘 𝑃 𝑦𝑗 log 2 𝑃 𝑦𝑗 ; 𝐻𝑚𝑖𝑛 𝑌|𝑋 = − 𝑗 =1 𝑃 𝑥𝑗 𝑃 𝑦𝑗 /𝑥𝑖 log 𝑃 𝑦𝑗 /𝑥𝑖 . 𝑖=1 𝑗 =1 Пусть x1 1 p q q y1 p x2 1 p q = 0,5 1 − 𝑝 − 𝑞 + 0,5𝑝 = 0,5 1 − 𝑞 ; 𝑃 𝑦3 = 𝑃 𝑥3 𝑃 𝑦3 𝑥1 + 𝑃 𝑥2 𝑃 𝑦3 𝑥2 = 0,5 𝑞 + 𝑞 = 𝑞; y3 q 𝑃 𝑦1 = 𝑃 𝑦2 = 𝑃 𝑥1 𝑃 𝑦1 𝑥1 + 𝑃 𝑥2 𝑃 𝑦1 𝑥2 p 𝐻𝑚𝑎𝑥 = − 1 − 𝑞 log 1−𝑞 2 + 𝑞 log 𝑞 ; (21) y2 22 Пропускная способность КС с шумом со стиранием 𝑘 𝑘 𝐻𝑚𝑖𝑛 𝑌|𝑋 = − 𝑃 𝑥𝑗 𝑃 𝑦𝑗 /𝑥𝑖 log 𝑃 𝑦𝑗 /𝑥𝑖 . 𝑖=1 𝑗 =1 x1 2 1 p q q y1 p x2 1 p q 𝐻 𝑌 𝑋 =− 𝑃 𝑥𝑖 𝑃 𝑦𝑗 𝑥𝑖 log 𝑃 𝑦𝑗 𝑥𝑖 = 𝑖=1 𝑗 =1 y3 q 3 p y2 = 𝑃 𝑥1 𝑃 𝑦1 𝑥1 log 𝑃 𝑦1 𝑥1 + + 𝑃 𝑥2 𝑃 𝑦1 𝑥2 log 𝑃 𝑦1 𝑥2 + + 𝑃 𝑥1 𝑃 𝑦2 𝑥1 log 𝑃 𝑦2 𝑥1 + 𝑃 𝑥2 𝑃 𝑦2 𝑥2 log 𝑃 𝑦2 𝑥2 + 𝑃 𝑥1 𝑃 𝑦3 𝑥1 log 𝑃 𝑦3 𝑥1 + + 𝑃 𝑥2 𝑃 𝑦3 𝑥2 log 𝑃 𝑦3 𝑥2 = 0,5 2 1 − 𝑝 − 𝑞 log 1 − 𝑝 − 𝑞 + 2𝑝 log 𝑝 + 2𝑞 log 𝑞 = = 1 − 𝑝 − 𝑞 log 1 − 𝑝 − 𝑞 + 𝑝 log 𝑝 + 𝑞 log 𝑞 . (22) С учетом (21) и (22) пропускная способность КС с шумом и стиранием: 1−𝑞 𝐶 = − 1 − 𝑞 log + 1 − 𝑝 − 𝑞 log (1 − p − 𝑞) + 𝑝 log 𝑝 2 (23) 23 Пропускная способность канала и граница Шеннона Имеется система передачи информации (рисунок). ИС IC IC КС Пр IП 𝐼𝐶 - количество сведений сигнала; 𝐼П - количество сведений помехи. 𝐼𝐶 = 𝐼𝐶 + 𝐼П 24 Пропускная способность канала и граница Шеннона Шенноном получено: 𝐼 = 𝐹𝑘 log 2 𝐴𝑃, где 𝐴 – коэффициент пропорциональности, 𝐹𝑘 - полоса пропускания канала связи. 𝑃 𝐼𝐶 = 𝐼𝐶 − 𝐼П = 𝐹𝑘 log 𝐴 𝑃𝐶 + 𝑃П − log 𝐴𝑃П = 𝐹𝑘 log 2 (1 + 𝑃𝐶 ). П Формула Хартли-Шеннона: 𝐶 = 𝐼𝑚𝑎𝑥 𝑃𝐶 = 𝐹𝑘 log 2 (1 + ). 𝑃П (24) Из (24) следует: 1) При 𝑃𝐶 < 𝑃П передача возможна; 2) Удвоение 𝐶 требует квадратичного увеличения 𝑃𝐶 /𝑃П , т.е. квадрата мощности передатчика при постоянном шуме; 3) Определим 𝐶 при 𝐹𝑘 → ∞: 𝑃П = 𝑁0 𝐹𝑘 , где 𝑁0 - плотность мощности шума. 25 Для упрощения вычисления предела используется ln: С∞ = lim 𝐹𝑘 ln 1 + 𝐹𝑘 →∞ 𝑃𝑐 𝑃𝑐 𝑃𝑐 log 2 𝑒 = lim 𝐹 log 2 𝑒 = 1,44 . 𝐹𝑘→∞ 𝐹 ∙ 𝑁0 𝐹 ∙ 𝑁0 𝑁0 (25) - Граница Шеннона В технике связи для передачи цифровой информации используется относительная величина – энергия сигнала 𝐸𝐶 , приходящаяся на бит переданной информации, к энергетической спектральной плотности шума (N0): 1 𝑃𝐶 𝑁0 𝐸𝐶 = 𝑃𝐶 𝑇𝐶 = 𝑃𝐶 = ; 𝐶∞ 1,44𝑃𝑐 𝐸𝐶 1 = ≈ 0,69 = −1,59 дБ. 𝑁0 1,44 26 𝑃 Наглядно связь между 𝑃 𝐶 , 𝐹𝑘 и битовой скорости R представим в виде П диаграммы: В (24) при С → 𝑅, 𝑃П → 𝑁0 𝐹𝑘 EC [дB] N 0 20 15 10 5 1, 6 0 5 𝑃𝐶 𝑃𝐶 𝑅 = 𝐹𝑘 log 1 + → 𝑁0 𝐹𝑘 𝑁0 𝐹𝑘 𝑅 = |2𝑅/𝐹𝑘 − 1 | ∙ . 𝑅 RC RC RC 0 10 Fk / R,[дВ] 𝑃𝐶 𝐸𝐶 𝐹𝑘 𝐹𝑅 = = 2 𝑘 −1 . 𝑁0 𝑅 𝑁0 𝑅 Диаграмма позволяет оценить эффективность кодирования в реальных системах связи. выбранного метода Расстояние от граничной линии, которая соответствует значению 𝑅 = 𝐶, позволяет оценить потенциальную возможность улучшения выбранного метода кодирования 27