Рис. 2.1 блок схема кодирования
Рис. 2.2 — Схема кодера
На входы а1,а2…а32 подаётся кодируемое слово. Блоки (элементы) KR1, KR2, KR4, KR8, KR16 и KR32 формируют контрольные разряды (биты чётности). Весь процесс кодирования сводится к формированию контрольных разрядов и сдвигу имеющихся разрядов. Так, 1й бит слова становится 3м битом кода, а 2й – 5м , 1,2,4,8,16,32 биты – контрольные. В результате кодирования 32х битное слово становится 38ми битным.
Рис 2.3 — Схема блоков KR1 – KR32
Блоки KR1, KR2, KR4, KR8, KR16 и KR32 собраны элементах исключающее ИЛИ. Итак:
Блок KR1 формирует 1й контрольный разряд подсчитывая чётность 3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35 и 37 битов, если количество единиц в этих разрядах чётное, то контрольный бит равен нулю, если нечётное – единица.
Аналогично блок KR2 формирует 2й контрольный разряд, подсчитывая чётность 3,6,7,10,11,14,15,18,19,22,23,26,27,30,31,34,35 и 38 битов, если количество единиц в этих разрядах чётное, то контрольный бит равен нулю, если нечётное – единица.
Блок KR4 формирует 4й контрольный бит проверяя 5,6,7,12,13,14,15,20,21,22,23,28,29,30,31,36,37 и 38 биты.
Блок KR8 формирует 8й контрольный бит проверяя 9,10,11,12,13,14,15,24,25,26,27,28,29,30 и 31 биты.
Блок KR16 формирует 16й контрольный бит проверяя 17,18,19,20,21,22,23,24,25,26,27,28,29,30 и 31 биты.
Блок KR32 формирует 32й контрольный бит проверяя 33,34,35,36,37 и 38 биты.
2.2 Разработка устройства декодирования информации методом Хемминга
Рис.2.4 — Схема декодера
Схема декодера состоит из 3х основных блоков: блока анализа, блока управления и блока исправления. Декодер осуществляет декодирование с исправлением произошедшей ошибки.
Рис. 2.5 — Схема блока анализа
Блок анализа с помощью блоков KR1, KR2, KR4, KR8, KR16 и KR32 заново проверяет чётность выше упомянутых разрядов и с помощью 6 и элементов исключающее ИЛИ сравнивает с пришедшими по шине контрольными разрядами. Если контрольные разряды нарушены, то формируются 6 сигналов ошибки, которые передаются в блок управления. Так же блок анализа изымает из 38ми битного слова биты чётности и передаёт 32х битное слово в блок исправления.
Рис. 2.6 — Схема блока управления
Блок управления представляет дешифратор 6/32, собранный на базе элементов И. В соответствии с комбинацией входных сигналов, блок управления активирует тот или иной управляемый инвертор блока исправления.
Рис 2.7 — Схема блока исправления ошибок
Блок исправления непосредственно производит исправление слова пришедшего из блока анализа в соответствии с сигналами блока управления. Он представляет собой 32 управляемых инвертора, на информационные входы которых подаётся слово с ошибкой, а на управляющие код из блока управления. В соответствии с поданным сигналом активируется тот или иной инвертор, который и исправляет ошибку, и слово выводится из дешифратора.
Рис.2.8 — Схема управляемого инвертора
Управляемый инвертор собран на базе 2х элементов НЕ, элемента И, и элемента исключающее ИЛИ-НЕ. Является непосредственно исполнителем исправления ошибки. Его таблица истинности приведена ниже.
Табл. 2.1 — таблица истинности управляемого инвертора
ВХОД | УПР.СИГНАЛ | ВЫХОД |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
2.3 Реализация кодера – декодера на базе ИМС К555ВЖ1
Рис 2.9 — Блок схема
32х битное слово разделяется на два слова по 16 бит. Далее каждая из половин попадает в свой 16битный кодер. Генерируются контрольные биты, и на линию передач выводятся два 22х битных кода Хэмминга. На линии передачи есть возможность внести ошибку. Далее 22х битный код считывается декодером. Проверяется на наличие ошибок. Если найдены ошибки, они исправляются, и выводятся два слова по 16 бит, которые и составляют переданное 32х битное слово.
2.3.1 Цоколёвка ИМС К555ВЖ1 (SN74LS630)
Рис. 2.10 — Цоколёвка ИМС К555ВЖ1 (SN74LS630)
· D0-D15 - входы/выходы данных;
· CB0-CB5 - входы/выходы синдрома;
· S0,S1 - входы управления;
· SEF - флаг ошибки;
· DEF - флаг некорректируемой ошибки.
· Все выходы с тремя состояниями
Схема использует модифицированный код Хэмминга, чтобы генерировать 6-битовый синдром для 16-разрядного слова. Одиночные ошибки схемой исправляются; двойные ошибки только обнаруживаются, ошибки типа всех нулей или всех единиц тоже обнаруживаются, тройные и большие ошибки могут быть не обнаружены. В случае двойной ошибки, оба бита могут быть в слове памяти, обе в слове синдрома, или по одному биту в слове памяти и слове синдрома. В течении цикла записи, схема формирует 6-разрядное проверочное слово из 16-разрядного слова данных. Коррекция ошибки выполняется идентификацией неправильного бита и инверсией его. Когда исправленное слово выдается из порта данных, из порта CBi выдается синдром, указывающий на неправильный бит.
Табл. 2.2 — Функции схемы исправления ошибок
Цикл памяти | Упр S1 S0 | Функция БИС | Шина данных | Шина синдрома | Флаги SEF DEF |
ЗАПИСЬ | L L | Генерировать контрольное слово | Входные данные | Выходное контрольное слово | L L |
ЧТЕНИЕ | L H | Читать данные и контрольное слово | Входные данные | Входное контрольное слово | L L |
ЧТЕНИЕ | H H | Защелкнуть и разрешить флаги | Защелкнутые данные | Защелкнутое контрольное слово | Разрешено |
ЧТЕНИЕ | H L | Корректировать данные и генерировать синдром | Выходные корректированные данные | Выходной синдром | Разрешено |
Табл. 2.3 — Таблица ошибок
Контрольное | 16-разрядное слово данных | |||||||||||||||
слово | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
CB0 | * | * | * | * | * | * | * | * | ||||||||
CB1 | * | * | * | * | * | * | * | * | ||||||||
CB2 | * | * | * | * | * | * | * | * | ||||||||
CB3 | * | * | * | * | * | * | * | * | ||||||||
CB4 | * | * | * | * | * | * | * | * | ||||||||
CB5 | * | * | * | * | * | * | * | * |
Табл. 2.4 — Синдромы ошибок
Ячейка ошибки | Код синдрома ошибки | |||||
CB0 | CB1 | CB2 | CB3 | CB4 | CB5 | |
D0 | L | L | H | L | H | H |
D1 | L | H | L | L | H | H |
D2 | H | L | L | L | H | H |
D3 | L | L | H | H | L | H |
D4 | L | H | L | H | L | H |
D5 | H | L | L | H | L | H |
D6 | H | L | H | L | L | H |
D7 | H | H | L | L | L | H |
D8 | L | L | H | H | H | L |
D9 | L | H | L | H | H | L |
D10 | L | H | H | L | H | L |
D11 | H | L | H | L | H | L |
D12 | H | H | L | L | H | L |
D13 | L | H | H | H | L | L |
D14 | H | L | H | H | L | L |
D15 | H | H | L | H | L | L |
CB0 | L | H | H | H | H | H |
CB1 | H | L | H | H | H | H |
CB2 | H | H | L | H | H | H |
CB3 | H | H | H | L | H | H |
CB4 | H | H | H | H | L | H |
CB5 | H | H | H | H | H | L |
Нет ошибки | H | H | H | H | H | H |
Табл. 2.5 — Исправление
Полное число ошибок | Флаги ошибок | Исправление данных | ||
16-битовые данные | 6-битовое контрольное слово | SEF | DEF | |
0 | 0 | L | L | Не применимо |
1 | 0 | H | L | Коррекция |
0 | 1 | H | L | Коррекция |
1 | 1 | H | H | Прерывание |
2 | 0 | H | H | Прерывание |
0 | 2 | H | H | Прерывание |