Что выдаёт компаратор
Компаратор принимает два двоичных числа, A и B, и выдаёт три взаимоисключающих выхода: A>B, A=B и A<B — ровно один из них активен для любой пары входов.
1-битный компаратор из вентилей
Для однобитных A и B все три выхода сводятся к простым булевым выражениям:
- A=B → ¬(A ⊕ B) (XNOR — равенство, когда оба бита совпадают)
- A>B → A · ¬B (равно 1 только когда A=1 и B=0)
- A<B → ¬A · B (равно 1 только когда A=0 и B=1)
Каскадирование битов в 4-битный компаратор
Сравнение многобитных чисел идёт от старшего бита вниз: если старшие биты уже различаются, это одно уже решает результат, независимо от всех младших битов. Только когда старшие биты равны, сравнение должно перейти к следующему биту. 4-битный компаратор соединяет четыре однобитных каскада компаратора с этой приоритетной логикой — тот же принцип каскадирования, что используется в приоритетных энкодерах.
Компаратор против вычитателя
Вычитатель (построенный из полных сумматоров, как в статье «Полусумматор и полный сумматор») тоже может сказать, какое число больше — если A−B уходит в заём, A было меньше — но выделенный компаратор проще и быстрее, когда нужен только результат сравнения, а не сама числовая разность.
Где они применяются
Компараторы управляют условными переходами в процессоре (сравнение регистра с нулём или с другим регистром), логикой проверки границ в контроллерах памяти и обнаружением порога в системах управления. Встроенные блоки Boolflow Comparator (1-бит) и CMP4 (4-бит) реализуют ровно это — загрузите пример компаратора и переключайте входы, чтобы увидеть, как GT/EQ/LT меняются в реальном времени, затем проверьте поведение по таблице истинности.