Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Записка Укр - 69 - v1.1 - pass.docx
Скачиваний:
3
Добавлен:
13.09.2019
Размер:
916.79 Кб
Скачать

2.2 Розробка пристрою декодування інформації методом Хемінга

Рис.2.5 — Схема декодера

Схема декодера складається з трьох основних блоків: блоку аналізу, блоку керування і блоку виправлення. Декодер здійснює декодування з виправленням помилки, що сталася.

На шину даних виставляється 32 бітне слово, яке доповнюється 6-ма бітами контрольних розрядів, тобто загалом отримуємо 38 бітний код. Він надходить до блоку аналізу, де пройшовши алгоритми перевірки генерує запит на сингали керування і одночасно надходить до блоку виправлення. Згідно керуючих сингалів у блоці виправлення відбувається декодування коду відносно контрольних розрядів та алгоритму виправлення. Виправлене декодоване слово з розрядністю в 32 біти виставляться на шину даних, таким чином отримавши вхідне слово без пошкоджень.

Рис.2.6 — Схема блоку аналізу

Блок аналізу за допомогою блоків KR1, KR2, KR4, KR8, KR16 і KR32 заново перевіряє парність вище згаданих розрядів і за допомогою шести елементів виключне АБО порівнює їх з контрольними розрядами, що прийшли по шині. Якщо контрольні розряди порушені, то формуються 6 сигналів помилки, які передаються в блок керування. Так само блок аналізу вилучає з 38-ми бітного слова біти парності і передає 32-х бітне слово в блок виправлення.

Рис.2.7 — Схема блоку керування

Блок керування являє собою дешифратор 6/32, зібраний на базі елементів І. Згідно з комбінацією вхідних сигналів, блок управління активує той чи інший керований інвертор блоку виправлення.

Рис.2.8 — Схема блоку виправлення помилок

Блок виправлення безпосередньо проводить виправлення слова, що прийшло із блоку аналізу згідно з сигналами блоку керування. Він являє собою 32-а керованих інвертора, на інформаційні входи яких подається слово з помилкою, а на керуючі входи – код з блоку керування. Згідно з поданим сигналом активується той чи інший інвертор, який і виправляє помилку, і слово виводиться з дешифратора.

Рис.2.9 — Схема керованого інвертора

Керований інвертор зібраний на базі двох елементів НІ, елемента І, та елемента виключне АБО-НІ. Є безпосередньо виконавцем виправлення помилки. Його таблиця істинності наведена нижче.

Табл.2.1 — Таблиця істинності керованого інвертора

Вхід

Сигнал керування

Вихід

0

0

0

0

1

1

1

0

1

1

1

0

2.3 Реалізація кодерА - декодера на базі імс к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-розрядне слово даних

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

CB0

CB1

CB2

CB3

CB4

CB5

Табл. 2.4 – Виправлення

Загальне число помилок

Прапори помилок

Виправлення даних

16-бітові дані

6-бітове контрольне слово

SEF

DEF

0

0

Low

(низький)

Low

(низький)

Не застосовується

1

0

High

(високий)

Low

(низький)

Корекція

0

1

High

(високий)

Low

(низький)

Корекція

1

1

High

(високий)

High

(високий)

Переривання

2

0

High

(високий)

High

(високий)

Переривання

0

2

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

(високий)