
- •Двоичная система счисления
- •Преобразование двоичных чисел в десятичные
- •Преобразование десятичных чисел в двоичные
- •Восьмеричная система счисления.
- •Шестнадцатеричная система счисления
- •Практическая работа №2. Арифметическое сложение двоичных чисел в форме с плавающей и фиксированной запятой.
- •Числа с фиксированной и плавающей запятой
- •Числа с фиксированной запятой
- •Числа с плавающей запятой
- •Двоичная арифметика
- •Сложение
- •Вычитание
- •Умножение
- •Деление
- •Прямой, обратный и дополнительный коды
- •Прямой код
- •Обратный код
- •Дополнительный код
- •Сложение и вычитание в дополнительном коде
- •Признак переполнения разрядной сетки
- •Практическая работа №3. Минимизация переключательной функции методом карт Карно.
- •Лабораторная работа №1. Исследование преобразователя двоичного кода.
- •Лабораторная работа № 2. Изучение работы виртуального логического конвертора
- •Теоретические сведения физические основы эвм
- •Решение задач на тему: логические схемы
- •Система electronics workbench
- •Лабораторная работа № 3. Виртуальный генератор слова (word generator). Вычитание
- •Краткая теория
- •Вычитание
- •Лабораторная работа №4. Исследование работы асинхронного и синхронного rs-триггера
- •Краткая теория
- •Краткая теория
- •Лабораторная работа №6. Исследование схемы контроля на четность.
- •Краткая теория
- •Лабораторная работа №7. Изучение кода Хэмминга.
- •Краткая теория.
- •Литература:
Лабораторная работа №6. Исследование схемы контроля на четность.
Цель: Изучение назначения и принцип работы устройства контроля четности.
Оборудование: Электронная лаборатория Electronics Workbench.
Краткая теория
Операция
контроля четности двоичных чисел
позволяет повысить надежность передачи
и обработки информации. Ее сущность
заключается в суммировании по модулю
2 всех разрядов с целью выяснения четности
числа, что позволяет выявить наиболее
вероятную ошибку в одном из разрядов
двоичной последовательности. Например,
если при передаче кода 1001 произойдет
сбой во втором разряде, то на приемном
пункте получим код 1101 – такую ошибку
определить в общем случае затруднительно.
Если же код относится к двоично-десятичному
(способ кодирования десятичных чисел,
при котором каждая цифра представляется
четырьмя двоичными разрядами – двоичной
тетрадой), обнаружение ошибок путем
введения дополнительного бита четности
происходит следующим образом. На
передающей стороне передаваемый код
анализируется и дополняется контрольным
битом до четного или нечетного числа
единиц в суммарном коде. Соответственно
суммарный код называется четным или
нечетным. В случае нечетного кода
дополнительный бит формируется таким
образом, чтобы сумма всех единиц в
передаваемом коде, включая контрольный
бит, была нечетной. При контроле четности
все наоборот. Например, в числе 0111 число
единиц нечетно. Поэтому при контроле
нечетности дополнительный код должен
быть нулем, а при контроле четности –
единицей. На практике чаще всего
используется контроль нечетности,
поскольку он позволяет фиксировать
полное пропадание информации (случай
нулевого кода во всех информационных
разрядах). На приемной стороне производится
проверка кода четности. Если он правильный,
то прием разрешается, в противном случае
включается сигнализация ошибки или
посылается передатчику запрос на
повторную передачу.
Схема формирования бита четности для четырехразрядного кода приведена на рис.18 Она содержит четыре элемента исключающие ИЛИ, выполняющие функции сумматоров по модулю 2 (без переноса) и состоит из трех ступеней. На первой ступени попарно суммируются все биты исходного кода на входах A, B, C, D. На второй ступени анализируются сигналы первой ступени, и устанавливается четность или нечетность суммы входного кода. На третьей ступени полученный результат сравнивается с контрольным сигналом на входе E, задающим вид используемого контроля, в результате чего на выходе F формируется дополнительный пятый бит четности, сопровождающий информационный сигнал в канале передачи.
Рис. 18.
Результаты моделирования приведены на рис. 19.
Р
ис.
19
Контрольные вопросы и задания
Какое назначение имеют формирователи кода четности, где они могут быть использованы?
Постройте схему формирователя бита четности трехразрядного (пятиразрядного) кода.
3. Проанализируйте работу составленных схем формирователей битов четности.
Лабораторная работа №7. Изучение кода Хэмминга.
Цель:
Краткая теория.
Код Хемминга – это блочный код, позволяющий исправлять одиночные и фиксировать двойные ошибки, разработанный Ричардом Хеммингом в сороковых годах прошлого столетия.
Идея кодов Хемминга заключается в разбиении данных на блоки фиксированной длины и вводе в эти блоки контрольных бит, дополняющих до четности несколько пересекающихся групп, охватывающих все биты блока.
Ричард Хемминг рассчитал минимальное количество проверочных бит, позволяющих однозначно исправлять однократные ошибки.
Если длина информационного блока, который требуется закодировать - m бит. Количество контрольных бит, используемых для его кодирования, – k, то закодированный блок будет иметь длину: n = m+k бит. Для каждого блока такой длины возможны n различных комбинаций, содержащих ошибку.
Таким образом, для каждого передаваемого информационного блока может существовать n–блоков, содержащих однократную ошибку, и один блок - без ошибок. Следовательно, максимальное количество различных закодированных блоков, содержащих не больше одной ошибки, будет: 2m(n+1), где n = m+k.
Если для информационных данных длиной m подобрать такое количество контрольных бит k, что максимально возможное количество различных последовательностей длиной m+k будет больше или равно максимальному количеству различных закодированных информационных блоков, содержащих не больше одной ошибки, то точно можно утверждать, что существует такой метод кодирования информационных данных с помощью k контрольных бит, который гарантирует исправление однократной ошибки.
Следовательно, минимальное количество контрольных бит, необходимых для исправления однократной ошибки, определяется из равенства:
2m * (n+1)=2n
Учитывая, что n = m + k, получаем:
k=2k – m – 1
Так как количество бит должно быть целым числом, то k, вычисленное с помощью этого уравнения, необходимо округлить до ближайшего большего целого числа.
Например, для информационных данных длиной 7 необходимо 4 контрольных бита, чтобы обеспечить исправление однократных ошибок, а для данных длинной 128 бит необходимо 8 контрольных бит.
Мало определить минимальное количество контрольных бит, необходимых для исправления ошибки. Необходимо разработать алгоритм проверки данных с помощью этих контрольных разрядов. Ричард Хемминг предложил следующий алгоритм.
Все биты, порядковые номера которых являются степенью двойки, – это контрольные разряды. То есть если порядковый номер бита обозначить символом ‘n’, то для контрольных бит должно быть справедливо равенство: n=2k , где к – любое положительное целое число.
Например, для закодированной последовательности длиной 13 бит проверочными будут: 1, 2, 4 и 8 биты, так как 20 = 1, 21 = 2, 22 = 4, 23 = 8.
Каждый выбранный, таким образом, контрольный бит будет проверять определенную группу бит, т.е. в контрольный бит будет записана сумма по модулю два всех битов группы (дополнение до четного количества единиц), которую он проверяет.
Для того, чтобы определить какими контрольными битами контролируют бит, необходимо разложить его порядковый номер по степени 2. Таким образом, девятый бит будет контролироваться битами 1 и 8, так как 9 = 20 + 23 = 1 + 8.
Рассмотрим пример кодирования бинарной последовательности данных, состоящей из семи элементов: 1001101.
1. Определим необходимое количество контрольных разрядов. Расчет будем вести по формуле: k = 2k – m – 1, где k – количество контрольных разрядов, m – количество информационных разрядов. Так как количество бит должно быть целым числом, то k, вычисленное с помощью этого уравнения, необходимо округлить до ближайшего большего целого числа.
Результат расчета приведен ниже:
Таким образом, число контрольных бит - 4.
2. Определим расположение проверочных бит в результирующей закодированной последовательности. Обозначим информационные биты символом И, а контрольные биты символом П. Индекс около этих символов будет означать их порядковый номер в закодированной последовательности.
Контрольные биты будут занимать четыре позиции с порядковыми номерами, равными степени двойки: 20, 21, 22, 23 => 1,2,4,8.
Размещение информационных и контрольных бит в результирующей последовательности будет следующим:
Осталось определить значения проверочных бит.
3. Определим, какие группы контролируют проверочные биты. Для этого разложим порядковые номера информационных бит по степени двойки:
И3: 3 = 20 + 21 = 1 + 2 => Информационный бит И3 проверяется контрольными битами П1 и П2.
И5: 5 = 20 + 22 = 1 + 4 => Информационный бит И5 проверяется контрольными битами П1 и П4.
И6: 6 = 21 + 22 = 2 + 4 => Информационный бит И6 проверяется контрольными битами П2 и П4.
И7: 7 = 20 + 21 + 22 = 1 + 2 + 4 => Информационный бит И7 проверяется контрольными битами П1, П2 и П4.
И9: 9 = 20 + 23 = 1 + 8 => Информационный бит И9 проверяется контрольными битами П1 и П8.
И10: 10 = 21 + 23 = 2 + 8 => Информационный бит И10 проверяется контрольными битами П2 и П8.
И11: 11 = 20 + 21 + 23 = 1 + 2 + 8 => Информационный бит И11 проверяется контрольными битами П1, П2 и П8.
4. Рассчитаем значения контрольных бит. Для этого определим группы для всех контрольных бит, просуммируем их по модулю два, а результат запишем в соответствующие контрольные биты (дополним группы до четности единиц):
П1 = И3 + И5 + И7 + И9 + И11 = 1 + 0 + 1 + 1 + 1 = 0
П2 = И3 + И6 + И7 + И10 + И11= 1 + 0 + 1 + 0 + 1 = 1
П4 = И5 + И6 + И7 = 0 + 0 + 1 = 1
П8 = И9 + И10 + И11 = 1 + 0 + 1 = 0
Таким образом, закодированная последовательность будет иметь следующий вид:
Сделаем ошибку в разряде И6, инвертировав его значение (0 на 1).
1. Проверим на четность единиц все группы, контролируемые проверочными разрядами:
П1: П1 +
И3 +
И5 +
И7 +
И9 +
И11 =
0 + 1 + 0 + 1 + 1 + 1 = 0
0
П2: П2 +
И3 +
И6 +
И7 +
И10 +
И11 =
1 + 1 + 1 + 1 + 0 + 1 = 1
0
П4: П4 + И5 + И6 + И7 = 1 + 0 + 1 + 1 = 1 0
П8: П8 + И9 + И10 + И11 = 0 + 1 + 0 + 1 = 0 0
Так как проверка четности единиц не прошла для групп контрольных битов П2 и П4, то ошибка содержится в битах, принадлежащих этим группам. Алгоритм Хемминга позволяет исправлять только одну ошибку, поэтому будем искать неисправность, исходя из предположения, что могла произойти только одна ошибка. Если это предположение - неверно, то все попытки исправить данные только привнесут дополнительные искажения информации.
Итак, если ошибка была только одна, то она должна быть в одном из битов, принадлежащих обеим группам. Это биты И6 и И7.
Для того, чтобы уточнить, в каком именно бите произошла ошибка, обратимся к группам, в которых проверка на четность прошла успешно, а, следовательно, в этих группах все биты - корректны. Как видите, к одной из исправных групп принадлежит бит И7, а, следовательно, он верен.
Таким образом, очевидно, что ошибка произошла в бите И6, и, инвертировав его значение, мы восстановим принятые данные.
Таблица исходных данных
№ вар |
Число |
№ разряда с шибкой |
№ вар |
Число |
№ разряда с шибкой |
1 |
25(00011001) |
1 |
16 |
164(10101000) |
8 |
2 |
38(00100110) |
2 |
17 |
171(10101011) |
1 |
3 |
47(00101111) |
3 |
18 |
177(10110001) |
2 |
4 |
56(00111000) |
4 |
19 |
182(10110110) |
3 |
5 |
61(00111101) |
5 |
20 |
186(10111010) |
4 |
6 |
79(01001111) |
6 |
21 |
194(11000010) |
5 |
7 |
85(01010101) |
7 |
22 |
199(11000111) |
6 |
8 |
92(01011100) |
8 |
23 |
206(11001110) |
7 |
9 |
99(01100011) |
1 |
24 |
211(11010011) |
8 |
10 |
103(01100111) |
2 |
25 |
214(11010110) |
1 |
11 |
121(01111001) |
3 |
26 |
221(11011101) |
2 |
12 |
133(10000101) |
4 |
27 |
225(11100001) |
3 |
13 |
148(10010100) |
5 |
28 |
232(11101000) |
4 |
14 |
157(10011101) |
6 |
29 |
244(11110100) |
5 |
15 |
159(10011111) |
7 |
30 |
251(11111011) |
6 |
С О Д Е Р Ж А Н И Е