Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Сборник задач по дисциплине «Информатика» для ВУЗов. Методические указания к проведению практических занятий по дисциплине «Информатика», для студенто
.pdf
В процесс передачи по каналу связи (или записи в память цифрового
устройства) сформированный код БЧХ v(x) может быть искажён и на приём
поступит код
соответствии со следующим алгоритмом:
1) выполняется деление принятой последовательности
рождающий полином
2) вычисляется вес остатка
3) если
то производится циклический сдвиг влево на один разряд принятой последовательности
сдвига влево эквивалентна операции умножения полинома на х. Если полу-
чается фиктивная переменная х в степени 15, то в младшем разряде полинома нужно записать 1;
4) если
вательности с остатком;
5) производится циклический сдвиг полученной последовательности
вправо на количество разрядов, равное числу сдвигов влево, выполненное в
Решение.
Запишем принятое двоичное число в виде полинома:
Выполним декодирование. Результаты расчётов на каждой итерации
поместим в таблицу. Так как данный код позволяет исправлять две ошибки
. Декодирование полученных данных
)(xf
;
)(xg
w
(количество единиц в остатке);
sw
, где s – число ошибок, исправляемых данным кодом,
)(xf и вновь выполняется шаг 1. Математически операция
, то производится суммирование полученной последо-
sw
процессе декодирования принятой последовательности (в процессе деления).
При описании алгоритма декодирова-
ния использован термин
сдвиг».
в машинном слове на одну и ту же величину.
Следующий рисунок иллюстрирует порядок
перемещения битов при циклических сдвигах
влево и вправо.
– младший значащий разряд (МЗР); MSB –
старший значащий разряд (СЗР).
примере кода, сформированного ранее.
изошло искажение разрядов 13 и 11. В результате на приём поступило двоичное число
111001101101101.
Сдвиг – это изменение позиций битов
На рисунке приняты обозначения: LSB
Рассмотрим процесс декодирования на
Пример 1.
Предположим, что в данных (6) про-
происходит в
)( xf
«циклический
235689121314
.
1)(
xxxxxxxxxxf
на по-
)(xf
51

52
(s = 2), расчёты следует вести до тех пор, пока не будет выполнено условие
w ≤ 2.
Ит. Полиномы Вес
w
1
2
3
4
5
1
)(
xf
1
)(
xC
1
)(
xP 1
2
)(
xf
2
)(
xC
2
)(
xP xxxx
3
)(
xf
3
)(
xC
3
)(
xP 1
4
)(
xf
4
)(
xC
4
)(
xP xxxxx
5
)(
xf
5
)(
xC
5
)(
xP 12x
26
xx
56
24
35
1
xx
356
xxx
346
1
xxx
467
xxx
1
xxx
2456
3567
xxxx
235689121314
1
xxxxxxxxx
4
34679101314
xxxxxxxxx
1
4
24578101114
xxxxxxxxx
1
5
2356891112
xxxxxxxxx
1
5
234679101213
xxxxxxxxxx
2
В таблице использованы такие обозначения:
i
- частное от деления
)(xC
i – той итерации;
i
- остаток от деления
)( xP
i
на порождающий полином
)(xf
i
на порождающий поли-
)(xf
)(xg
на
ном g(x) на i – той итерации.
На пятой итерации вес остатка достиг значения, при котором следует
прекратить дальнейшие расчёты (w = 2). За пять проведённых итераций
было выполнено четыре циклических сдвига влево.
Выполненные операции позволяют наглядно понять, почему этот
код называю циклическим. При выполнении сдвига влево крайний левый
разряд считался соседним с крайним правым разр
итерациях 2, 3, 4 последними слагаемыми полиномов
ядом. По этой причине на
i
являются еди-
)(xf

xxxxxxxxx
53
ницы. Это объясняется тем, что в этих случаях
и единица переходит
114x
в младший разряд последовательности. На пятой итерации полином
не содержит слагаемого, равного 1. Это происходит потому, что на
)(5xf
предыдущей итерации
.
014x
В соответствии с алгоритмом декодирования теперь следует перейти
к шагу 4 и найти сумму полинома и остатка на последней итерации:
55
)()()(
xPxfxR
2234679101213
(7)
1
xxxxxxxxxxx
34679101213
.1
Полученный полином (7) преобразуем в двоичное число:
R(x) = 011011011011011. (8)
В соответствии с шагом 5 алгоритма декодированную последовательность (8) нужно циклически сдвинуть вправо на четыре разряда. Этапы
сдвига показаны в таблице.
Номера сдвигов Числа
R(x) 011011011011011
1 сдвиг 101101101101101
2 сдвиг 110110110110110
3 сдвиг 011011011011011
4 сдвиг 101101101101101
Первые семь битов двоичного числа, полученного после четвёртого
циклического сдвига вправо, являются информационными битами, в которых были исправлены две ошибки.
Таким образом, в результате декодирования получено число
1011011, которое точно совпадает с переданным числом.
Этот пример наглядно демонстрирует возможность автоматического
исправления возникших ошибок.
Заметим, что операцию циклического сдвига вправо можно осуществить с помощ
ью полиномов путём деления на х.

54
4. Задания для выполнения практической работы
«Помехоустойчивый код БЧХ»
4.1. Сформировать помехоустойчивый циклический код БЧХ, у ко-
торого число информационных разрядов k = 7, число контрольных разрядов r = 8, а порождающий полином
Задача Данные Задача Данные
1 1100001 9 1101001
2 1100010 10 1101010
3 1100011 11 1101011
4 1100100 12 1101100
5 1100101 13 1101101
6 1100110 14 1101110
7 1100111 15 1101111
8 1101000 16 1110100
Домашнее задание
Перевести две последние цифры зачётки в двоично-десятичный код
и отбросить младший бит. К полученному числу поразрядно прибавить (по
правилу дизъюнкции) двоичное число 1001010. С помощью получившихся
семи бит сформировать циклический код БЧХ.
4678
.1)(
xxxxxg
Таблица 8.1

55
Практическая работа № 9
«QR-код»
1. Цель работы
Получить представление о новых приложениях, использующих помехоустойчивое кодирование информации.
2. Связь с другими темами практических работ
Данная практическая работа опирается на практические работы
«Системы счисления», «Логические основы работы ЭВМ» и позволяет по-
лучить представление о помехоустойчивом кодировании информации с
помощью графических матриц.
3. Теоретические сведения и расчётные формулы
Информация в QR-матрице кодируется при помощи черных и белых
квадратов (модулей, пикселей), которые после сканирования превращаются в логические единицы и нули.
Формирование изображений матриц ведётся таким образом, чтобы
обеспечить наиболее благоприятные условия для работы сканирующей
аппаратуры. Для этого в процессе кодирования создаётся несколько графических матриц и выбирается лучшая из них. Появляющиеся в процессе
эксплуатации искажения рисунк
ния помехоустойчивого кода Рида-Соломона.
QR-код (англ. quick response — быстрый отклик) — матричный код,
разработанный японской компанией «Denso-Wave» в 1994 году.
Максимальное количество символов, которые можно поместить в
одну матрицу, зависит от вида кодируемой информации (цифры, буквы,
двоичный код, иероглифы), уровня коррекции ошибок и версии используемого QR-код
коррекции ошибок можно разместить 7089 десятичных цифр, либо 4296
букв и цифр, либо 2953 двоичных данных, либо 1817 иероглифов.
абонентов мобильной связи. Пользователь может моментально занести в
свой мобильный телефон (ноутбук) текстовую информацию, контакты в
адресную книгу, перейти по Web-ссылке, от
вировка металлической поверхности позволяет наносить код на детали,
подвергающиеся воздействиям высоких температур, давлений или агрес-
а. Для версии 40 в одной матрице при минимальном уровне
Наибольшее распространение рассматриваемый код получил среди
QR-коды используются для маркировки ответственных деталей. Гра-
а матрицы устраняются путём использова-
править SMS-сообщение и т. д.

56
сивных химических веществ. Данный код имеет высокую помехоустойчивость. Даже при наличии повреждений (искажений) изображения на площади 30% всё ещё есть возможность безошибочно считать информацию.
Три квадрата в углах изображения QR-матрицы позволяют устройству правильно определять его пространственную ориентацию по отношению к матрице. Черные и белые точки изображения преобразуются считывающим устройством в
двоичные числа. Затем производится обработка
цифровой информации. На матрице размещается системная информация,
информационные биты, корректирующие биты.
QR-матрицы можно создавать с различной степенью помехозащищённости. Чем выше помехозащищённость, тем больше избыточной информации содержит матрица и тем меньше остаётся места для информационных битов.
Матрицу можно создать с одним из четырёх ур
овней коррекции
ошибок. Эти уровни определяют долю информации, подлежащую восстановлению за счёт использования корректирующего кода.
Уровень коррекции
ошибок
Код Допустимые
искажения
L 01 7%
M 00 15%
Q 11 25%
H 10 30%
Уровни L и M рекомендуется использовать для печати кодов на пригласительных билетах, объявлениях, визитках, плакатах, рекламных щитах
и т.д. Уровни Q и H применяют для маркировки промышленных деталей,
когда существует высокая вероятность повреждения изображения.
Следующая таблица показывает, как выглядит код слова «Проба»
при различных уровнях коррекции ошибок. Визуально можно заметить, что
с увеличением уровня помехо
устойчивости число элементов в матрице
растёт.
Высокая степень помехоустойчивости QR-кодов подтверждается
экспериментально. Даже на матрицах, перечёркнутых широкой кистью,
есть возможность правильно декодировать информацию. Следует обратить
внимание, что считывание информации прекращается в случаях, когда существенно искажён один из трёх квадратов, отвечающих за определение
ориентации матрицы.
Информационные биты, контрольные биты и системная информаци
располагаются в определённых местах матрицы. Порядок размещения всех
элементов матрицы определены правилами, которые описаны в спецификации [12].
я

57
7%
15%
25%
30%
На каждой матрице имеется три указателя ориентации 1 (УО). Между тремя УО проходят две линии синхронизации 2, которые состоят из че-
редующихся белых и черных модулей (пикселей). Вблизи левого нижнего указателя ориентации размещается чёрный пиксель 3.
В настоящее время создано 40
версий QR-кодов. На матрицах QRкодов, начиная с версии 2, имеются
метки центровки 4. В версии 1 такой
метки нет, но в старших ве
рсиях QRкода можно насчитать 46 таких меток.
В областях 5 для версий старше шестой размещается информация
о версии кода. В четырёх модулях 6
содержится код, которые определяет,
какой вид данных содержится в матрице. Системная информация размещается в областях 7 и 8.
Информация об уровне коррекции ошибок и виде испо
льзованной маски располагается в системной
строке (см. рисунок слева). Разряды
14 и 13 содержат сведения об используемом уровне коррекции ошибок.
Разряды 12, 11 и 10 показывают, какая маска использована для наложения на информационные и корректи-

58
рующие биты. Три бита позволяют сформировать коды для восьми разных
масок.
Системная информация дублируется. Один раз 15 системных битов
размещают в столбце 8 (счёт элементов ведётся, начиная с 0 из левого верхнего угла матрицы). Второй раз системную информацию размещают в
строке 8.
Наиболее просто операция декодирования выполняется с помощью
мобильного телефона или планшета со встроенной фотокамерой и установ-
й программой считывания.
ленно
Существует 40 версий QR-кода. С увеличением номера версии кода
объем помещаемых в матрицу данных увеличивается. Определить, к какой
версии относится данная матрица, можно тремя способами:
подсчитать, какое число пикселей содержит матрица;
определить координаты меток центровки;
для версий старше шестой существуют области на матрице,
где содержится информация об используемой версии.
В таблице приведена информация о числе модулей (пикселей) для
различных версий QR-кодов.
Версия Число модулей
1 21х21
2 25х25
3 29х29
… …
40 177х177
Анализируя, приведённую таблицу, легко заметить линейную закономерность: очередная версия QR-кода отличается от предыдущей версии
тем, что сторона матрицы увеличена на 4 модуля. Подсчитав число модулей, можно определить версию QR-кода для данной матрицы.
В таблице приведены сведения о координатах меток центровки для
версий 2…13
Версия Строки Версия Строки
2 6 18 8 6 24 42
3 6 22 9 6 26 46
4 6 26 10 6 28 50
5 6 30 11 6 30 54
6 6 34 12 6 32 58
7 6 22 38 13 6 34 62
На следующем рисунке для примера показано изображение матрицы
QR-кода версии 7.

59
Из рисунка видно, что шесть меток
центровки расположены на пересечении
строк и столбцов, указанных в предыдущей таблице. Координаты определяются
по чёрному модулю (пикселю), располо-
женному внутри белого квадрата. Метки
центровки не ставятся в местах, где распо-
ложены указатели ориентации (три угла).
На матрицах, начиная с версии 7,
имеются две области, где содержится закодированная и
нформация об использован-
ной версии. Эти области отмечены на рисунке цифрами 1 и 2. В таблице приведены коды некоторых версий QRкода.
Версия Код
7 001010010011111000
8 000111101101000100
9 100110010101100100
10 011001011001010100
11 011011111101110100
12 001000110111001100
13 111000100001101100
Следующие две таблицы показывают, в каком порядке размещаются
биты восемнадцатиразрядного кода, который определяет версию программы.
0 3 6 9 12 15
1 4 7 10 13 16
2 5 8 11 14 17
0 1 2
3 4 5
6 7 8
9 10 11
12 13 14
15 16 17
Рассмотрим, как определить уровень коррекции ошибок. Так как
системная информация дублируется, то сведения о имеющейся корректирующей способности кода можно отыскать в двух местах матрицы. Один
раз 15 бит системной информации помещаются в строке 1 (отсчёт слева
направо), а втор
ой раз - в столбце 2 (отсчёт снизу-вверх). Естественно, что
эти два значения в штатных ситуациях одинаковые. Сведения об уровне

60
коррекции ошибок содержатся в первых двух битах системной информации. Эти два бита расположены в 14 и 13 разрядах системной строки.
На следующем рисунке первые два бита в системной строке равны 1.
Напомним, что логические единицы изображены в виде черных пикселей (модулей), а логические нули – в виде белых. Чтобы определить
уровень коррекции нужно эти два бита сложить по правилу
Исключающее ИЛИ с двоичной маской 10. В результате сложения получим:
.
011011
Код 01 соответствует уровню коррекции
ошибок L (7%).
На следующем рисунке показана матри-
ца, в которой использован иной уровень кор-
рекции ошибок. Первые два бита во втором случае равны 10. Суммирование с маской 10 даёт результат 00. Это говорит о том, что в этой матрице
использован код с уровнем коррекции ошибок М (15%).
Аналогично производятся вычисления для матриц с уровнями кор-
ошибок Q и H. На этих матрицах системная информация начинает-
рекции
ся битами 01 и 00 соответственно. Суммирование с маской 10 даст двоичные коды 11 и 10
соответственно.
Для повышения надёжности сканирования матрицы подвергают дополнительной
обработке. Целью этой обработки является
формирование такого рисунка (конфигурации) графической матрицы, на котором было
бы как можно меньше смежных модулей одинакового цвета. Простыми словами это тр
ебование можно сформулировать так: «Матрица
должна быть пёстрой и на ней должно быть
минимум однотонных сплошных протяжённых участков». Этим облегчается работа сканирующей аппаратуры, например, мобильных телефонов.
Цель достигается следующим образом: формируют 8 матриц с оди-
наковым информационным содержанием, но разного вида (разной фо
рмы).
Для этого используют 8 заранее подготовленных масок, которые суммируют с исходной матрицей по правилу Исключающее ИЛИ. Полученные матрицы поочерёдно подвергают математической обработке, в результате которой выбирают одну матрицу. Отбор матриц осуществляют путём вычисления штрафных баллов. Для оптимальной (наиболее «пёстрой») матрицы
число штрафных баллов будет минимальным сред
и восьми чисел.
Восемь масок кодируются трёхразрядными числами от 000 до 111.
Математически маски описываются формулами, приведёнными в таблице.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
