Цифровой компаратор

Эта статья находится на начальном уровне проработки, в одной из её версий выборочно используется текст из источника, распространяемого под свободной лицензией
Материал из энциклопедии Руниверсалис

Цифрово́й компара́тор логическое устройство с двумя словарными входами, на которые подаются два разных двоичных слова равной в битах длины и обычно с тремя двоичными выходами, на которые выдаётся признак сравнения входных слов, — первое слово больше второго, меньше или слова равны. При этом выходы «больше», «меньше» имеют смысл, если входные слова кодируют числа в том или ином машинном представлении.

Часто цифровые компараторы не имеют выходов «больше», «меньше», а только выход «равно».

Может быть построен на логических элементах, работа которых основана на самых различных физических принципах, но современные компараторы обычно представляют собой полупроводниковые электронные устройства работающие в двоичной логике.

Промышленностью компараторы выпускаются в виде законченных компонентов — микросхем с разной длиной сравниваемых слов и других параметров. Примеры микросхем цифровых компараторов: КМОП-логика — 4063 и 4585, ТТЛ — 7485 и 74682-89 и многие другие.

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

Аналоговым эквивалентом цифрового компаратора является аналоговый компаратор напряжений или токов. Некоторые микроконтроллеры имеют входные встроенные аналоговые компараторы, состояние выходов которых может быть считано программой контроллера или вызывать её прерывание подпрограммой.

Логические функции

Для примера рассмотрим два 4-битных слова [math]\displaystyle{ A }[/math] и [math]\displaystyle{ B }[/math], пусть эти слова представляют собой некоторые натуральные числа, представленные в двоичном виде, причем 3-й разряд будет старшим:

[math]\displaystyle{ A=A_3,A_2,A_1,A_0 }[/math],
[math]\displaystyle{ B=B_3,B_2,B_1,B_0 }[/math]

Здесь каждая буква с нижним цифровым индексом представляет один из битов в числах.

Равенство (эквивалентность)

Двоичные числа [math]\displaystyle{ A }[/math] и [math]\displaystyle{ B }[/math] будут равны, если все пары соответственных битов обоих чисел равны, то есть:

[math]\displaystyle{ A_3=B_3 }[/math], [math]\displaystyle{ A_2=B_2 }[/math], [math]\displaystyle{ A_1=B_1 }[/math] и [math]\displaystyle{ A_0=B_0 }[/math].

В двоичной записи чисел их цифры это или 0, или 1. Булева функция для равенства любых двух цифр [math]\displaystyle{ A_i }[/math] и [math]\displaystyle{ B_i }[/math] (здесь логическая операция «ИЛИ» обозначена символом [math]\displaystyle{ + }[/math], а «И» символом точки) может быть выражена как:

[math]\displaystyle{ x_i= A_i \cdot B_i + \overline{A}_i \cdot \overline{B}_i }[/math].

При этом [math]\displaystyle{ x_i }[/math] равна 1 только если [math]\displaystyle{ A_i }[/math] и [math]\displaystyle{ B_i }[/math] равны.

Для равенства [math]\displaystyle{ A_i }[/math] и [math]\displaystyle{ B_i }[/math], все функции [math]\displaystyle{ x_i }[/math] (для i = 0, 1, 2, 3) должны быть равны 1.

Поэтому признак равенства [math]\displaystyle{ A_i }[/math] и [math]\displaystyle{ B_i }[/math] записывается в виде логической функции как

[math]\displaystyle{ \ (A=B) = x_3 \cdot x_2 \cdot x_1 \cdot x_0 }[/math].

Двоичная функция [math]\displaystyle{ (A=B) }[/math] равна 1 только если все пары цифр двух чисел равны.

Неравенство (неэквивалентность)

Чтобы определить наибольшее из двух двоичных чисел, мы рассмотрим отношение величин пар значащих цифр, начиная со старших битов к младшим битам до нахождения неравенства в некоторой позиции. Когда неравенство найдено, то, если соответствующий бит [math]\displaystyle{ A }[/math] равен 1 и такой же бит [math]\displaystyle{ B }[/math] равен 0, то мы считаем, что [math]\displaystyle{ A\gt B }[/math].

Это последовательное сравнение может быть выражено логическими выражениями как:

[math]\displaystyle{ (A\gt B)=A_3 \cdot \overline{B}_3+x_3 \cdot A_2 \cdot \overline{B}_2+x_3 \cdot x_2 \cdot A_1 \cdot \overline{B}_1+x_3 \cdot x_2 \cdot x_1 \cdot A_0 \cdot \overline{B}_0 }[/math],
[math]\displaystyle{ (A\lt B)=\overline{A}_3 \cdot B_3+x_3 \cdot \overline{A}_2 \cdot B_2+x_3 \cdot x_2 \cdot \overline{A}_1 \cdot B_1+x_3 \cdot x_2 \cdot x_1 \cdot \overline{A}_0 \cdot B_0 }[/math].

[math]\displaystyle{ (A\gt B) }[/math] и [math]\displaystyle{ (A\lt B) }[/math] — выходные двоичные переменные, которые равны 1 когда [math]\displaystyle{ A\gt B }[/math] или [math]\displaystyle{ A\lt B }[/math] соответственно.

Таблицы истинности компаратора

Для примеров приведены таблицы истинности тривиального однобитового и двухбитового компараторов.

Логическая функция однобитового цифрового компаратора описывается таблицей истинности:

Входы Выходы
[math]\displaystyle{ A }[/math] [math]\displaystyle{ B }[/math] [math]\displaystyle{ A\lt B }[/math] [math]\displaystyle{ A=B }[/math] [math]\displaystyle{ A\gt B }[/math]
0 0 0 1 0
0 1 1 0 0
1 0 0 0 1
1 1 0 1 0

Таблица истинности двухбитового компаратора:

Входы Выходы
[math]\displaystyle{ A_1 }[/math] [math]\displaystyle{ A_0 }[/math] [math]\displaystyle{ B_1 }[/math] [math]\displaystyle{ B_0 }[/math] [math]\displaystyle{ A\lt B }[/math] [math]\displaystyle{ A=B }[/math] [math]\displaystyle{ A\gt B }[/math]
0 0 0 0 0 1 0
0 0 0 1 1 0 0
0 0 1 0 1 0 0
0 0 1 1 1 0 0
0 1 0 0 0 0 1
0 1 0 1 0 1 0
0 1 1 0 1 0 0
0 1 1 1 1 0 0
1 0 0 0 0 0 1
1 0 0 1 0 0 1
1 0 1 0 0 1 0
1 0 1 1 1 0 0
1 1 0 0 0 0 1
1 1 0 1 0 0 1
1 1 1 0 0 0 1
1 1 1 1 0 1 0

См. также

Ссылки