Сумматоры, сравнение кодов и контроль чётности
Цель: Понять работу сумматоров, цифровых компараторов и контроля чётности и уметь строить их из базовых логических функций.
3 часа короткая теория, самостоятельная практика, проверка результата и тест.
Суть темы
Цифровая арифметика реализуется логическими схемами. Полусумматор складывает два бита и выдаёт сумму S и перенос C. Полный сумматор дополнительно принимает входной перенос Cin, что позволяет каскадировать разряды. Компаратор сравнивает двоичные слова, а parity-схема обнаруживает часть ошибок передачи данных.
Эти устройства показывают, как из небольших комбинационных блоков строятся функции более высокого уровня.
- Half adder: S=A XOR B, C=A AND B.
- Full adder учитывает Cin и формирует Cout.
- Ripple-carry adder прост, но перенос проходит последовательно по разрядам и создаёт задержку.
- Компаратор формирует A=B, A>B, A
- Parity bit делает число единиц чётным или нечётным и обнаруживает любое нечётное число инверсий битов.
Ключевые связи и параметры
Сумма n-битных чисел может потребовать n+1 бит из-за переноса. В знаковой арифметике overflow отличается от carry и определяется правилами представления отрицательных чисел.
Parity не исправляет ошибку и не обнаруживает все варианты: две инверсии сохранят чётность. Это простая проверка, а не полноценный код коррекции ошибок.
Half adder: S=A⊕B, C=A·BParity = XOR всех информационных битов (для выбранного соглашения)Разбор примера
1+1 в одном разряде: S=0, C=1. Для 3+5: 0011+0101=1000. При последовательном переносе каждый разряд ждёт результат предыдущего.
Для данных 1011001 число единиц равно 4. При чётном контроле бит чётности равен 0; если один бит случайно инвертирован, общее число единиц станет нечётным и проверка обнаружит ошибку.
Практическая работа и проверка
Постройте полусумматор и полный сумматор сначала по таблице истинности.
- Составьте таблицу half adder.
- Добавьте Cin и получите full adder.
- Соедините два full adder для 2-битного сложения.
- Реализуйте сравнение двух 2-битных чисел в симуляторе.
- Добавьте генератор и проверку even parity для небольшого слова.
Типичные ошибки и диагностика
- Считать XOR и OR взаимозаменяемыми в бите суммы.
- Игнорировать входной перенос в старших разрядах.
- Считать parity механизмом исправления данных.
- Путать числовое сравнение знаковых и беззнаковых кодов.
Ошибка одного разряда сумматора может распространяться через carry. При отладке проверяйте S и Cout каждого stage. Для parity сначала убедитесь, какое соглашение even/odd выбрано.
Связь с реальным устройством
Арифметические и контрольные блоки строятся из той же булевой логики. Их задержки и ограничения становятся заметными при увеличении разрядности и частоты.
Что нужно запомнить
- Half adder использует XOR для суммы и AND для переноса.
- Full adder учитывает Cin.
- Ripple carry создаёт последовательную задержку.
- Компаратор различает =, >, <.
- Parity обнаруживает не все многобитные ошибки.