Таблица истинности
Мы уже определили функционал схемы на словах: преобразование входного сигнала в сигналы для управления сегментным индикатором. Как описать данный функционал более строго?
Здесь на помощь приходит математическая логика. Математическая логика утверждает что и отдельные логические операции, и целые логические функции могут быть описаны с помощью таблиц, в которых сопоставляются входные значения и результат функции. В каждой строке такой таблицы записывается набор значений подаваемых на вход логической функции и результат соответствующий этому набору значений. Для полного описания функции с помощью таблицы необходимо перебрать все возможные наборы входных значений.
Таблицы описывающие логическую функцию как набор входных и соответствующих им выходных значений называются таблицами истинности.
Так как наша схема работает с двоичными сигналами «0» и «1», то и работать мы будем с функциями, которые применимы для двоичной логики. В качестве примера рассмотрим описание в виде таблицы истинности элементарной логической функции, состоящей всего из одной операции «ИЛИ». У этой функции всего два входа, каждый из которых может принимать одно из двух значений: «0» или «1». Число наборов входных значений в этом случае будет равняться двум во второй степени: число доступных значений входа в степени равной числу входов. Таким образом таблица истинности для «ИЛИ» будет содержать всего четыре строки. Она приводится ниже.
A | B | Y |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
В таблице столбцы «A» и «B» обозначают входы функции, а столбец Y ее выход.
По таблице хорошо видно, что функция «ИЛИ» выдает на своем выходе единицу в том случае, когда хотя бы на один из ее входов приходит единица. В этом предложении раскрывается суть функции: как она преобразует входные сигналы в выходные. По такому словесному описанию также легко построить и таблицу истинности. С текущим описанием нашей схемы этот номер не пройдет, так как в нем не говорится какие сигналы функция должна выдавать для отдельных наборов входных значений. Под вопросом и число выходов, как представить функцию возвращающую сразу восемь значений?
Схему возвращающую восемь различных значений для одного набора входных сигналов можно описать как восемь независимых логических функций, каждая из которых будет возвращать результат для одного выхода.
Напоминаю что для отображения каждой десятичной цифры требуется свой уникальный набор сегментов. Изображения этих цифр с указанием соответствующих двоичных кодов приводятся на следующем рисунке.
Опираясь на данный рисунок можно составить таблицу истинности для каждого сегмента индикатора. Для этого выбираем конкретный сегмент, например «A» и смотрим для каких наборов четырехбитных значений он включен, то есть на соответствующий ему выход выдается значение «единица». А для каких — выключен. Полученные наборы входных и выходных сигналов записываем в виде таблицы истинности.
Таблица истинности для сегмента «A» приведена ниже.
Число | I3 | I2 | I1 | I0 | Sa |
0 | 0 | 0 | 0 | 0 | 1 |
1 | 0 | 0 | 0 | 1 | 0 |
2 | 0 | 0 | 1 | 0 | 1 |
3 | 0 | 0 | 1 | 1 | 1 |
4 | 0 | 1 | 0 | 0 | 0 |
5 | 0 | 1 | 0 | 1 | 1 |
6 | 0 | 1 | 1 | 0 | 1 |
7 | 0 | 1 | 1 | 1 | 1 |
8 | 1 | 0 | 0 | 0 | 1 |
9 | 1 | 0 | 0 | 1 | 1 |
Таблица истинности содержит всего десять строк — по одной для каждого двоичного представления десятичных чисел от 0 до 9. Четыре столбца I3-I0 — это соответствующие биты входного четырехбитного сигнала. Столбец Sa – это выход схемы подключенный к сегменту «A» семисегментного индикатора.
Здесь необходимо вспомнить, что с помощью четырех бит можно записать шестнадцать различных двоичных чисел, каждое из которых будет соответствовать десятичным числам от 0 до 15. Какие сигналы подавать на индикатор для чисел больше 9? Предлагаю ничего не выводить на индикатор в этом случае. То есть, для любых чисел больше 9 на все сегменты индикатора будем подавать нулевой сигнал. Тогда таблицу истинности для сегмента «A» нужно переписать с учетом всех возможных комбинаций входных сигналов.
Число | I3 | I2 | I1 | I0 | Sa |
0 | 0 | 0 | 0 | 0 | 1 |
1 | 0 | 0 | 0 | 1 | 0 |
2 | 0 | 0 | 1 | 0 | 1 |
3 | 0 | 0 | 1 | 1 | 1 |
4 | 0 | 1 | 0 | 0 | 0 |
5 | 0 | 1 | 0 | 1 | 1 |
6 | 0 | 1 | 1 | 0 | 1 |
7 | 0 | 1 | 1 | 1 | 1 |
8 | 1 | 0 | 0 | 0 | 1 |
9 | 1 | 0 | 0 | 1 | 1 |
10 | 1 | 0 | 1 | 0 | 0 |
11 | 1 | 0 | 1 | 1 | 0 |
12 | 1 | 1 | 0 | 0 | 0 |
13 | 1 | 1 | 0 | 1 | 0 |
14 | 1 | 1 | 1 | 0 | 0 |
15 | 1 | 1 | 1 | 1 | 0 |
Таким образом полностью описана логическая функция управления сегментом «A» семисегментного индикатора. Сегмент «A» должен быть выключен при выводе цифр один, четыре и всех чисел больше 9. Во всех остальных случаях сегмент будет включен.
Аналогично описываются функции управления остальными сегментами индикатора. Можно составить еще семь различных таблиц истинности, но так как все они будут отличаться лишь выходными значениями, то можно свести их в одну общую таблицу. В этой таблице будет шестнадцать строк, по числу всевозможных наборов входных значений. Тринадцать столбцов — четыре столбца входных значений, плюс восемь выходов и необязательный столбец с десятичными числами. Обобщенная таблица истинности дешифратора сегментного индикатора приводится ниже.
Число | I3 | I2 | I1 | I0 | Sa | Sb | Sc | Sd | Se | Sf | Sg | DP |
0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 |
1 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 |
2 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 0 | 1 | 0 |
3 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 0 |
4 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 0 |
5 | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 0 |
6 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 |
7 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 |
8 | 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
9 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 |
10 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
11 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
12 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
13 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
14 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
15 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |