Что делает декодер
Декодер преобразует двоичный код в «one-hot»-сигнал: при N входных битах он активирует ровно один из 2^N выходов — тот, чей индекс совпадает с двоичным значением входов. Декодер 2:4 имеет 2 входа и 4 выхода; декодер 3:8 — 3 входа и 8 выходов.
Построение декодера 2:4 из вентилей
При входах A и B каждый выход — это просто AND соответствующей комбинации A, B и их инверсий:
- Out0 = ¬A·¬B (активен при A=0, B=0)
- Out1 = ¬A·B (активен при A=0, B=1)
- Out2 = A·¬B (активен при A=1, B=0)
- Out3 = A·B (активен при A=1, B=1)
Что делает энкодер
Энкодер — зеркальное отражение: при 2^N one-hot входах он выдаёт N-битный двоичный адрес того входа, который активен. Энкодер 4:2 принимает 4 входа и выдаёт 2-битный код, определяющий, какой из них высокий.
Приоритетные энкодеры
Обычный энкодер предполагает, что активен ровно один вход одновременно — если два входа становятся высокими одновременно, выход не определён. Приоритетный энкодер решает это, всегда выдавая код входа с наивысшим приоритетом (обычно с наибольшим индексом), игнорируя входы с меньшим приоритетом. Это ровно то, что делает контроллер прерываний: несколько устройств могут запросить внимание одновременно, и приоритетный энкодер решает, какое из них обслужить первым.
Где они применяются
Декодеры выбирают одну микросхему памяти или одну строку ОЗУ по адресной шине; энкодеры сжимают линии датчиков или прерываний обратно в компактный двоичный код. В Boolflow есть готовые блоки Decoder 2:4 / 3:8, Decoder 2:4+EN, Encoder 4:2 и Priority Encoder 8:3 — загрузите пример декодера и переключайте биты адреса, чтобы увидеть, как загорается ровно один выход за раз.