Далее рассмотрим функциональную схему декодирующего устройства (см. соответствующий рисунок ниже). В ней также используются два регистра на D-триггерах. Один из них содержит переданное слово и имеет разрядность 8 бит, так как
| (**) |
Обозначим буквой
Запишем алгоритм декодирования, пренебрегая возможностью возникновения ошибок кратности 3 и выше.
| | Вывод |
0 | 0 | ошибок нет |
0 | 1 | ошибка в 8-ом разряде |
1 | 0 | двойная ошибка (повторная передача) |
1 | 1 | одиночная ошибка (исправление) |
Принцип работы дешифратора таков. На приёмный регистр поступает кодовая комбинация, которая может содержать ошибку. Сумматор С1 реализует первое равенство из (**), С2 – второе, а С3 – третье. Если ошибок не было, то на выходах этих трёх сумматоров будут нули. Если же имела место ошибка, то в этом случае на выходах сумматоров появится опознаватель ошибки. Этот опознаватель передаётся в дешифратор ошибок ДС, который на основании переданного в него опознавателя выдаёт соответствующий вектор ошибки. Его схема строится по следующей таблице истинности:
Вход (опознаватель) | Выход (вектор ошибки) | ||||||||
1 | 2 | 3 | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
0 | 1 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
1 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
Чтобы восстановить верный сигнал нам необходимо сложить по модулю два сигнал дешифратора с соответствующим разрядом кодовой комбинации. Эта операция выполняется на сумматорах С5-С8. Таким образом мы исправляем одиночные ошибки.
Чтобы обнаружить двойную ошибку, мы предусматриваем следующее. Сумматор С4 проверяет последнее равенство из (**) – на его выходе мы имеем
Функциональная схема кодирующего устройства
Функциональная схема декодирующего устройства
Далее по функциональным схемам строим принципиальные электрические схемы. Для построения принципиальных схем используем программный пакет Multisim.
Начнём со схемы кодирующего устройства. Сначала расположим источник питания и генератор тактовых импульсов. Установим значение напряжения 15В, а частоту импульсов – 1Гц. Затем поместим на схему D-триггеры. Нам требуется 4 триггера на вход и 8 триггеров на выход – всего 12. Мы можем использовать 3 микросхемы 74175N, каждая из которых содержит по 4 D-триггера. Помещаем триггеры на схему, к входу CLR подключаем источник питания, ко входу CLK – генератор тактовых импульсов. Для выходных триггеров сигнал от генератора необходимо пропустить через инвертор, так как для формирования выходных импульсов необходимо время и мы должны «задержать» импульс синхронизации. Далее нам необходимы три трёхвходовых элемента для сложения по модулю два. Эти элементы можно синтезировать с помощью двухвходовых элементов 7486N так, как показано на рисунке. Семивходовый элемент для сложения по модулю два также можно синтезировать с помощью двухвходовых элементов 7486N. Теперь просто соединяем полученные части в соответствии с функциональной схемой. Получаем принципиальную электрическую схему кодирующего устройства. Для проверки правильности работы схемы на вход можно направить данные из WordGenerator’а, который будет по очереди генерировать все 9 слов, а на выходы подключить 8 сигнализаторов. Принципиальную схему смотри на развороте.
Перейдём к схеме декодирующего устройства.
Сначала, так же, как и в схеме кодирующего устройства, располагаем источник питания и генератор. Устанавливаем для них те же параметры. Устанавливаем те же D-триггеры. Здесь нам понадобится 8 триггеров для входа, и 4 для выхода. Также используем 3 микросхемы 74175N, каждая из которых содержит по 4 D-триггера. Триггеры подключаем аналогично. Нам потребуются 3 четырёхвходовых и один восьмивходовый элемент для сложения по модулю 2. Их синтезируем так же, как и при составлении схемы кодирующего устройства. Семивходовый элемент ИЛИ синтезируем по тому же принципу. Теперь по известной нам схеме истинности необходимо синтезировать схему дешифратора ошибок. Её можно синтезировать, используя такой логический элемент, как дешифратор. В нашем случае мы можем использовать микросхему 74154N. Эта схема является дешифратором-мультиплексором с 4-мя входами и 16-ю выходами. Её подключаем так, как показано на рисунке (к выходам подключены инверторы 7404N). При таком подключении мы получим схему дешифратора ошибок. Внимание! Использовать нужно именно те входы, которые показаны на рисунке. Далее просто соединяем полученные части согласно функциональной схеме. Принципиальную схему смотри на развороте.