Допустим в Logisim ведется проект какого-то 8-битного процессора, в котором необходимо применить защиту от битовых ошибок при сохранении данных в памяти или при передачи через порты. Для этого есть метод с использованием дополнительного бита четности, значение которого является вычислением суммы битов в байтах и определением на чет/нечет.Это метод очень давно применяется в вычислительной технике.Например, 30-и контактные модули памяти SIMM некоторые фирмы выпускали с девятой линией контроля четности. В 72-х контактных модулях SIMM были также образцы с 36-и разрядной шиной.Понятно что последние четыре бита использовались для контроля четности каждого из четырех байтов составляющих ширину 32-х разрядной памяти. Аналогично же что например 168-ми контактный DIMM имеет 72-х разрядную шину, где уже есть восемь битов четности.В нашем проекте, какого-то условно однобайтового(8-ми разрядного) процессора, надо нарисовать схему которая будет суммировать биты с единичным значением и при их четном количестве результат будет положительном.Ну в Logisim заняться определением четности или нечетности какого-нибудь битового слова очень легко. В библиотеке “Элемент” есть два гейта - Even Parity(чет) и Odd Parity(нечет). Посмотрим как они функционируют. Вытащим оба элемента из библиотеки на лист схемы, каждому в его свойствах выберем количество входов равное 8, объединим входы этих элементов поразрядно,подключим к ним 8 входных контактов.Контакты пронумеруем от D0 до D7. К выходам элементов подключим светодиоды из библиотеки “Ввод/Вывод”. Обозначим их соответственно Even parity (Чет) и Odd parity(Нечет).Получится примерно такая схема.
Рис 1.Схема Even parity и Odd Parity
Теперь если менять значения битов на некоторых контактах D0- D7,можно проверить правильность определения четности/нечетности суммы битов.
Кстати, что интересно, если значение байта будет = 00(все биты равны 0), то логика определит это как четность, будет светить светодиод Even Parity. Что 0 - четное число объясняется нескольким способами. Например ИИ утверждает что 0 делиться на 2.Но то что 0 - нечётное число - это точно.
Теперь если подключить к выходу элемента Четности ещё один светодиод, но только через инвертор(элемент “не”), будет наглядно видно при моделировании работы схемы, что инвертированное значение четности равно значению нечетности,так же верно будет и обратное утверждение.
Рис 2.Инверсия четности равна нечетности
Но задача состоит не в использовании элементов с готовыми сложными функциями из библиотек Logisim, а создание схемы определения четности суммы битов на базе элементарных логических вентилей двоичной логики. Те, кто занимается в образовательных, хоббистких или иных целях, моделированием процессорных систем, скорее всего знают как построить такую схем,поэтому сразу вот схема четности выполненная на элементах XNOR(“Исключающее ИЛИ -НЕ”).
Рис 3. Схема четности на элементах XNOR
Как видно схема состоит из семи двухвходовых логических элементов XNOR, включенных параллельно-последовательно. Биты в байте попарно сравниваются элементами XNOR, полученные результаты попарно сравниваются последующими элементами до последнего,на выходе которого появится признак четности.Подправив при необходимости внешний вид схемы,можно будет вставлять ее как условный элемент в другие схемы.,Например можно провести сравнительный демо тест с элементом четности из библиотеки Logisim. Объединяем соответствующие входы,подсоединяем входные контакты, к выходам элементов подсоединяем светодиоды, получаем тестовую схему.
Рис 4. Схема демо теста 1.
Проверить на правильность все комбинации из 256 возможных, вручную, подставляя значения битов на входных контактах, будет довольно долго. Увеличить темп тестирования можно подавая на входы элементов биты с выходов 8 разрядного счетчика. Добавляем в схему теста 8 разрядный счетчик, два шестнадцатеричных индикатора для индикации кодовой комбинации, и две кнопки для тактирования и сброса счётчика.
Рис 5. Схема демо теста 2.
Нажимая на кнопку Такты, мы увеличиваем значение счетчика на 1. За несколько минут можно проверить все 256 комбинаций. Заменив кнопку Такты на тактовый генератор, настроенный на частоту 4Гц например, можно наблюдать за динамической работой схемы.
Допустим есть некая необходимость реализовать схему четности суммы битов в “реальном железе”, на каких-то логических микросхемах. Например в классической TTL-серии есть микросхема 74135, в которая может работать в режиме 4 двухвходовых элемента XNOR.Для однобайтной схемы четности суммы битов понадобились бы две такие микросхемы. Но интереснее будет применить специальную микросхему 74180 - 8-BIT PARITY GENERATOR/CHECKER.На фото аналог микросхемы из серии К155.
Рис 6. К155ИП2
В сети можно найти полный Datasheet на микросхему, здесь приведен только рисунок внутренней принципиальной схемы.
Рис 7. Структурная схема IC 74180
Собственно правая часть схемы, отвечающая за вычисление признака четности суммы битов, построена аналогично на элементах XNOR. К ней в левой части добавлена некоторая схема управления выходами микросхемы.Смоделируем эту схему в Logisim
Рис 8. Смоделированная схема IC 74180
Соберём тестовую схему в Logisim, и разберёмся как она работает.
С выхода счетчика байт данных поступает на битовые входы A,B…H микросхемы.. Если на вход четности IN EVEN (Pin 3) подать напряжение логической 1 , а на вход нечетности IN ODD (Pin 4) — напряжение логического 0, то при четной сумме битовых единиц в байте, на выходе четности Sum EVEN OUT установится логическая 1, а на выходе нечетности Sum ODD OUT - логический 0. Естественно наоборот если IN EVEN=лог.0, а IN ODD=лог.1, то то при четной сумме битовых единиц в байте, на выходе четности Sum EVEN OUT установится логический 0, а на выходе нечетности Sum ODD OUT - логическая 1.
Если на входах IN EVEN и IN ODD присутствуют одновременно логические нули, то на выходах микросхемы будут логические единицы, в независимости от битового значения байта на входах данных. И инверсно, если на управляющих входах будут одновременно логические единицы, то на выходах будут постоянно логические нули