Реалізація кодерА - декодера на базі ІМС К555ВЖ1
Рис.2.10 — Блок-схема кодера-декодера
32-х бітне слово розділяється на два слова по 16 біт. Далі кожна з половин потрапляє в свій 16-бітный кодер. Генеруються контрольні біти, і на лінію передачі виводяться два 22-х бітних модифікованих кода Хеммінга. На лінії передачі є досить висока вірогідність внести помилку. Далі кожен 22-х бітний код зчитується своїм декодером. Перевіряється на наявність помилок. Якщо знайдені помилки, вони виправляються, і виводяться два слова по 16 біт, які і складають передане 32-х бітне слово.
2.3.1 Цоколевка ІМС К555ВЖ1 (SN74LS630)
Рис.2.11 — Цоколевка ІМС К555ВЖ1 (SN74LS630)
• D0-D15 - входи/виходи даних;
• CB0-CB5 - входи/виходи синдрому;
• S0, S1 - входи керування;
• SEF - прапор помилки;
• DEF - прапор невиправляємої помилки.
• Всі виходи з трьома станами
Схема використовує модифікований код Хеммінга, щоб генерувати 6-бітовий синдром для 16 розрядного слова. Завдяки цьому, одиночні помилки схемою виправляються; подвійні помилки, а також помилки типу всіх нулів або всіх одиниць тільки виявляються, потрійні та більші помилки можуть бути не виявлені. У випадку подвійної помилки, обидва неправильні біта можуть бути в слові пам'яті, обидві в слові синдрому, або по одному біту в слові пам'яті і слові синдрому. Протягом циклу запису, схема формує 6-розрядне перевірочне слово з 16 розрядного слова даних. Корекція помилки виконується ідентифікацією неправильного біта та його інверсією. Коли виправлене слово видається з порту даних, з порту CBi видається синдром, який вказує на неправильний біт.
Табл. 2.2 – Функції схеми виправлення помилок
Цикл пам'яті | Входи керування | Функції ІМС | Шина даних | Шина синдрому | Прапори помилок | ||
S0 | S1 | SEF | DEF | ||||
Write (Запис) | Low (низький) | Low (низький) | Генерувати контрольне слово | Вхідні дані | Вихідне контрольне слово | Low (низький) | Low (низький) |
Read (Зчиту-вання) | High (високий) | Low (низький) | Зчитувати дані та контрольне слово | Вхідні дані | Вхідне контрольне слово | Low (низький) | Low (низький) |
Read (Зчиту-вання) | High (високий) | High (високий) | Замкнути і дозволити прапори | Замкнуті дані | Замкнуте контрольне слово | Дозволено | |
Read (Зчиту-вання) | Low (низький) | High (високий) | Виправляти дані та генерувати синдром | Вихідні виправ-лені дані | Вихідний синдром | Дозволено |
Табл. 2.3 – Таблиця помилок
Контрольне слово | 16-розрядне слово даних | |||||||||||||||
CB0 | ● | ● | ● | ● | ● | ● | ● | ● | ||||||||
CB1 | ● | ● | ● | ● | ● | ● | ● | ● | ||||||||
CB2 | ● | ● | ● | ● | ● | ● | ● | ● | ||||||||
CB3 | ● | ● | ● | ● | ● | ● | ● | ● | ||||||||
CB4 | ● | ● | ● | ● | ● | ● | ● | ● | ||||||||
CB5 | ● | ● | ● | ● | ● | ● | ● | ● |
Табл. 2.4 – Виправлення
Загальне число помилок | Прапори помилок | Виправлення даних | ||
16-бітові дані | 6-бітове контрольне слово | SEF | DEF | |
Low (низький) | Low (низький) | Не застосовується | ||
High (високий) | Low (низький) | Корекція | ||
High (високий) | Low (низький) | Корекція | ||
High (високий) | High (високий) | Переривання | ||
High (високий) | High (високий) | Переривання | ||
High (високий) | High (високий) | Переривання |
Табл. 2.5 – Синдроми помилок
Комірка помилки | Код синдрому помилки | |||||
CB0 | CB1 | CB2 | CB3 | CB4 | CB5 | |
D0 | Low (низький) | Low (низький) | High (високий) | Low (низький) | High (високий) | High (високий) |
D1 | Low (низький) | High (високий) | Low (низький) | Low (низький) | High (високий) | High (високий) |
D2 | High (високий) | Low (низький) | Low (низький) | Low (низький) | High (високий) | High (високий) |
D3 | Low (низький) | Low (низький) | High (високий) | High (високий) | Low (низький) | High (високий) |
D4 | Low (низький) | High (високий) | Low (низький) | High (високий) | Low (низький) | High (високий) |
D5 | High (високий) | Low (низький) | Low (низький) | High (високий) | Low (низький) | High (високий) |
D6 | High (високий) | Low (низький) | High (високий) | Low (низький) | Low (низький) | High (високий) |
D7 | High (високий) | High (високий) | Low (низький) | Low (низький) | Low (низький) | High (високий) |
D8 | Low (низький) | Low (низький) | High (високий) | High (високий) | High (високий) | Low (низький) |
D9 | Low (низький) | High (високий) | Low (низький) | High (високий) | High (високий) | Low (низький) |
D10 | Low (низький) | High (високий) | High (високий) | Low (низький) | High (високий) | Low (низький) |
D11 | High (високий) | Low (низький) | High (високий) | Low (низький) | High (високий) | Low (низький) |
D12 | High (високий) | High (високий) | Low (низький) | Low (низький) | High (високий) | Low (низький) |
D13 | Low (низький) | High (високий) | High (високий) | High (високий) | Low (низький) | Low (низький) |
D14 | High (високий) | Low (низький) | High (високий) | High (високий) | Low (низький) | Low (низький) |
D15 | High (високий) | High (високий) | Low (низький) | High (високий) | Low (низький) | Low (низький) |
CB0 | Low (низький) | High (високий) | High (високий) | High (високий) | High (високий) | High (високий) |
CB1 | High (високий) | Low (низький) | High (високий) | High (високий) | High (високий) | High (високий) |
CB2 | High (високий) | High (високий) | Low (низький) | High (високий) | High (високий) | High (високий) |
CB3 | High (високий) | High (високий) | High (високий) | Low (низький) | High (високий) | High (високий) |
CB4 | High (високий) | High (високий) | High (високий) | High (високий) | Low (низький) | High (високий) |
CB5 | High (високий) | High (високий) | High (високий) | High (високий) | High (високий) | Low (низький) |
Помилка відсутня | High (високий) | High (високий) | High (високий) | High (високий) | High (високий) | High (високий) |