bitGateLab Digital · Обучение
Русский
Открыть симулятор

Обучение › Тема 8

Мультиплексоры, дешифраторы и шифраторы: понятное объяснение

8 мин чтения · Команда bitGateLab

Комбинационные узлы средней сложности — это детали, из которых собирается почти любая цифровая система: мультиплексор выбирает одно из нескольких данных, демультиплексор направляет данные к одному из получателей, дешифратор активирует единственную линию в соответствии с двоичным числом, а шифратор делает обратное. Здесь вы увидите их уравнения, таблицы истинности и два применения, которые встречаются на любом экзамене: реализацию логической функции на мультиплексоре и проектирование дешифратора для 7-сегментного индикатора.

Мультиплексор (MUX)

У мультиплексора с 2n входами данных есть n входов выбора и один выход. Двоичное число на линиях выбора указывает, какой вход данных проходит на выход. Самый простой — MUX 2 в 1:

Y = S·I0 + S·I1

При S = 0 выход повторяет I0; при S = 1 повторяет I1. MUX 4 в 1 использует две линии выбора S1 S0, и каждый вход данных умножается на соответствующий ему минтерм сигналов выбора:

Y = S1·S0·I0 + S1·S0·I1 + S1·S0·I2 + S1·S0·I3

S1S0Y
00I0
01I1
10I2
11I3

Каждый член — это AND входа данных с линиями выбора (прямыми или инвертированными), и все они объединяются элементом OR.

Реализация функции на мультиплексоре

Поскольку MUX уже содержит все минтермы своих переменных выбора, он годится в качестве «программируемой функции». На MUX с 2n входами можно реализовать любую функцию n переменных, подав 0 или 1 на каждый вход данных. Более того, на том же MUX можно получить функцию n + 1 переменных, если подключить оставшуюся переменную (или её инверсию) ко входам данных.

Пример: реализуйте F(A, B, C) = Σm(1, 2, 6, 7) на MUX 4 в 1, используя A и B как сигналы выбора (A = S1, B = S0).

  1. Разбейте таблицу истинности на пары строк с одинаковым значением A B и посмотрите, как F зависит от C.
  2. AB = 00: m0 = 0 (C = 0), m1 = 1 (C = 1). F = C, поэтому I0 = C.
  3. AB = 01: m2 = 1 (C = 0), m3 = 0 (C = 1). F = C, поэтому I1 = C.
  4. AB = 10: m4 = 0, m5 = 0. I2 = 0.
  5. AB = 11: m6 = 1, m7 = 1. I3 = 1.

Проверка при A = 0, B = 1, C = 0 (минтерм 2): код выбора 01 выбирает I1 = C = 1. Верно, m2 входит в функцию.

Демультиплексор и дешифратор

Демультиплексор (DEMUX) 1 в 4 принимает данные D и направляет их на один из четырёх выходов в соответствии с S1 S0; остальные остаются равными 0: Y0 = D·S1·S0, Y1 = D·S1·S0, Y2 = D·S1·S0, Y3 = D·S1·S0.

Если в DEMUX зафиксировать D = 1 и назвать этот вход «разрешением», получится дешифратор: n входов и 2n выходов, из которых активен только один — тот, что соответствует числу на входе. Дешифратор 3 в 8 формирует все 8 минтермов трёх переменных. Поэтому любая функция трёх переменных собирается из дешифратора и элемента OR, который объединяет выходы её минтермов.

Пример: полный сумматор на дешифраторе 3 в 8. Входы A, B и Cin.

  • Сумма S = Σm(1, 2, 4, 7): элемент OR с 4 входами, на которые поданы выходы Y1, Y2, Y4, Y7.
  • Перенос Cout = Σm(3, 5, 6, 7): элемент OR с 4 входами, на которые поданы Y3, Y5, Y6, Y7.

Проверьте один случай: A = 1, B = 1, Cin = 0 — это число 110 = 6. Активен только Y6; Y6 не входит в OR для S (S = 0), но входит в OR для Cout (Cout = 1). Действительно, 1 + 1 + 0 = 10 в двоичной системе.

У типичного дешифратора 3 в 8 семейства 74HC выходы имеют активный низкий уровень: выбранный выход переходит в 0, а остальные остаются в 1. В этом случае OR минтермов по закону де Моргана превращается в NAND тех же самых выходов.

Приоритетный шифратор

Шифратор выполняет обратную операцию: из 2n линий он выдаёт n-битное двоичное число — номер активной линии. Трудность в том, что делать, если активны сразу две; практическое решение — приоритетный шифратор, который выдаёт номер самой старшей из активных линий. Для 4 входов от D3 (наивысший приоритет) до D0:

Y1 = D3 + D2, Y0 = D3 + D2·D1, V = D3 + D2 + D1 + D0

Выход V («данные действительны») показывает, что активен хотя бы один вход; без него нельзя было бы отличить «активен D0» от «не активен ни один», потому что в обоих случаях Y1 Y0 = 00. Проверьте при D2 = D1 = 1: Y1 = 1 и Y0 = 0 + 0·1 = 0, то есть 10 = 2. Побеждает D2, как и должно быть.

Дешифратор BCD в 7-сегментный код

a b c d e f g
Названия сегментов 7-сегментного индикатора.

В 7-сегментном индикаторе на каждый сегмент приходится один светодиод. Дешифратор получает цифру в коде BCD (A B C D, где A — старший бит) и зажигает сегменты, из которых складывается эта цифра. Для индикатора с общим катодом 1 означает, что сегмент горит:

ЦифраABCDabcdefg
000001111110
100010110000
200101101101
300111111001
401000110011
501011011011
601101011111
701111110000
810001111111
910011111011

Коды от 1010 до 1111 не являются допустимыми кодами BCD, поэтому на карте Карно их считают безразличными условиями (X). Это сильно упрощает уравнение каждого сегмента.

Сегмент a: равен 0 только для цифр 1 и 4. На карте для 4 переменных, с X в клетках с 10 по 15, самые большие группы таковы: A (8 клеток вместе с X), C (8 клеток), B·D (минтермы 5, 7, 13, 15) и B·D (четыре угла: 0, 2, 8, 10).

a = A + C + B·D + B·D

Проверьте цифру 4 (0100): A = 0, C = 0, B·D = 1·0 = 0, B·D = 0·1 = 0. Результат 0: сегмент a не горит, всё верно.

Если индикатор — с общим анодом, каждый сегмент зажигается уровнем 0, так что все выходы инвертируются.

Типичные ошибки

Попробуйте в симуляторе

Сравните таблицу истинности функции с её реализацией на мультиплексоре.

  1. Создайте таблицу истинности с тремя входами A, B, C и отметьте F = 1 в строках 1, 2, 6 и 7.
  2. Поместите в редакторе мультиплексор 4 в 1 (или соберите его из четырёх AND, двух NOT и четырёхвходового OR) и подключите A и B ко входам выбора.
  3. Подключите ко входам данных C, инверсию C, постоянный 0 и постоянную 1 — именно в таком порядке.
  4. Переберите на входах все восемь комбинаций и убедитесь, что выход совпадает с таблицей.
  5. Повторите то же для сегмента a индикатора: введите его столбец в таблицу для 4 переменных, отметьте строки с 10 по 15 как X и изучите группы, которые предлагает карта Карно.

Упражнения

  1. Реализуйте F(A, B, C) = Σm(0, 3, 5, 6) на MUX 4 в 1, используя A и B как сигналы выбора.
    Ответ

    AB = 00: m0 = 1, m1 = 0, I0 = C. AB = 01: m2 = 0, m3 = 1, I1 = C. AB = 10: m4 = 0, m5 = 1, I2 = C. AB = 11: m6 = 1, m7 = 0, I3 = C. Это функция контроля чётности (равна 1 при чётном числе единиц): F = A ⊕ B ⊕ C.

  2. Сколько линий выбора нужно MUX с 16 входами и сколько переменных, самое большее, может быть у функции, которую он реализует?
    Ответ

    4 линии выбора (24 = 16). Если подключить оставшуюся переменную ко входам данных, он может реализовать любую функцию, у которой до 5 переменных.

  3. Найдите уравнение сегмента e, считая комбинации с 10 по 15 безразличными условиями.
    Ответ

    e = 1 для 0, 2, 6 и 8. Группы: B·D (0, 2, 8, 10) и C·D (2, 6, 10, 14). Результат: e = B·D + C·D = D·(B + C).

  4. Что выдаёт приоритетный шифратор с 4 входами при D3 = 0, D2 = 0, D1 = 1, D0 = 1?
    Ответ

    Y1 = 0 + 0 = 0, Y0 = 0 + 1·1 = 1, V = 1. Выход 01: D1 побеждает D0.