2. КОМБИНАЦИОННЫЕ СХЕМЫ
В комбинационных схемах логическая функция зависит только от комбинации значений входных переменных.
При описании многих цифровых устройств невозможно обойтись без упорядоченных двоичных наборов входных и выходных сигналов. Эти наборы удобно представлять в тех или иных системах счисления (СС).
2.1 НЕКОТОРЫЕ СИСТЕМЫ СЧИСЛЕНИЯ
В позиционных СС "вес" каждого разряда зависит от его позиции в числе. К числу непозиционных относится "римская" СС, например число - XVII.
Любое неотрицательное n-разрядное целое число C(n-1), C(n-2), ... ,C1,C0 в позиционной системе счисления может быть представлено в виде:
D = Cn-1*bn-1 + Cn-2*bn-2 + ... + C1*b1 + C0*b0 (15)
где D - десятичный эквивалент числа, Ci - значение i-го разряда, b - основание системы счисления, b в степени i - вес (весовой коэффициент) i-го разряда и n число разрядов целой части числа. В цифровой и вычислительной технике наиболее распространены двоичная (BIN), десятичная (DEC), шестнадцатеричная (HEX) и непозиционная двоично-десятичная (BCD) системы счисления. В BCD системе вес каждого разряда равен степени 10, как в десятичной системе, а каждая цифра i-го разряда кодируется 4-мя двоичными цифрами. Восьмеричная СС(OCT) применяется реже. В 16-ной системе счисления цифры от 0 до 9 совпадают с десятичными, а для ЦИФР больше 10 используются буквы латинского алфавита : A(a) = цифра 10, B(b) = 11, C(c) =12, D(d) = 13, E(e) =14. Двоичное число преобразуется в десятичное беззнаковое число по формуле (15), например 10010011 = 1*27 + 1*24 + 1*21 + 1*20 = 147 (DEC). Для перевода числа из двоичной системы в 16 - нулю, его необходимо разбить начиная справа на группы по 4 двоичных цифры и в каждой четверке просуммировать веса (8,4,2,1) соответствующие единичным значениям Ci. Для обратного перевода каждая HEX цифра заменяется четверкой двоичных, незначащие нули слева, если они есть, отбрасываются.
Примеры преобразований:
Найдите десятичное число без знака соответствующее двоичному числу 00111011.
Пояснение: номер разряда 7 6 5 4 3 2 1 0
вес разряда 128 64 32 16 8 4 2 1
значение разряда 0 0 1 1 1 0 1 1
ОТВЕТ : десятичный эквивалент 0 + 0 + 32+ 16+ 8 + 0 + 2 + 1 = 59(DEC)
Найти (HEX)16-ный код приведенного выше двоичного числа 00111011.
Пояснение: номер разряда 3 2 1 0 3 2 1 0
вес разряда 8 4 2 1 8 4 2 1
значение разряда 0 0 1 1 1 0 1 1
ОТВЕТ : 16-ный эквивалент 0 + 0 + 2 + 1 (3) 8 + 0 + 2 + 1 (11) = 3B(HEX)
так как в HEX коде цифра 11 записывается с помощью буквы B.
Двоично-десятичное число можно записывать и десятичными цифрами, например 1998, и двоичными - 0001 1001 1001 1000. Каждое десятичное число можно представить в виде BCD, например 19(DEC) = 19(BCD), но их двоичные представления не равны: 10011(19DEC) не равно 1 1001(19BCD). Не каждая запись из нулей и единиц имеет двоично-десятичный эквивалент. Например, 11001001(BIN) = [C9(HEX),201(DEC)] = ?(BCD), т.к. десятичной цифры 1100=12 не существует.
2.2 ДЕШИФРАТОР
Дешифратор (ДШ) преобразует двоичный код на входах в активный сигнал на том выходе, номер которого равен десятичному эквиваленту двоичного кода на входах. В полном дешифраторе количество выходов m = 2n, где n - число входов. В неполном ДШ m < 2n. По определению полный ДШ должен генерировать 2n выходных ЛФ, определенных на всех наборах из n - входных переменных, т.е. минтермов. Рассмотрим ДШ с n=2 и m=4, называемый также дешифратором "2 в 4" и дополним его входом разрешения выходов OE. Активным уровнем сигнала на прямых входах/выходах будет 1, а на инверсных - 0. По этому определению заполним таблицу истинности, где величина x может принимать любые значения.
INCLUDEPICTURE "D:\\MyDoc\\Komp_El\\KE_Dict\\electron1.files\\kombin.files\\tabl-dc.gif" \* MERGEFORMATINET
Таблица Карно для выхода y0 и 3-х входных переменных будет иметь вид:
INCLUDEPICTURE "D:\\MyDoc\\Komp_El\\KE_Dict\\electron1.files\\kombin.files\\karno-dc.gif" \* MERGEFORMATINET
Прямоугольник, составленный из 1-ных клеток, содержит только одну такую клетку, поэтому логическая функция выхода y0 будет иметь вид: y0 = OE*~a1*~a0. Аналогично получены остальные три уравнения. Преобразуем полученные для yi уравнения с помощью аксиомы двойного отрицания к базису И-НЕ: y0 = ~(~(OE*~a1*~a0)). Решению соответствует схема на рис.13.
Схема обведенная "..." имеет условное обозначение (A), а схема в запятых - обозначение (Б). Возможны также еще 2 комбинации прямых и инверсных входов и выходов В и Г.
INCLUDEPICTURE "D:\\MyDoc\\Komp_El\\KE_Dict\\electron1.files\\kombin.files\\ris13.gif" \* MERGEFORMATINET
Пояснить работу ДШ можно с помощью временных диаграмм для схемы (Б). Во время действия сигнала ~OE=1 на нижних входах элементов И-НЕ(0..3) присутствует OE=0, и независимо от значений a0,a1, выходные значения ~yi=1, а yi=0, что и видно из рис.13. В эти отрезки времени t0..t1 и t2..t3 выходы "запрещены", т.е. на прямых выходах yi устанавливается пассивный уровень "0", а на инверсных выходах пассивная "1". В интервале t1..t2 сигнал ~OE=0(OE=1) и значения yi зависят только от переменных a1,a0. Если код на входах A1A0=10, что соответствует десятичной двойке, на входах второго элемента И-НЕ соберутся 3 логических "1". Сигнал ~y2=0, а y2=1, что видно на диаграмме y2. Вместо инвертора OE, может применяться более сложная схема, показанная на рис.14. Здесь OE=1 в случае, когда ~OE1 = ~OE2 = 0 и OE3 = 1.
INCLUDEPICTURE "D:\\MyDoc\\Komp_El\\KE_Dict\\electron1.files\\kombin.files\\ris14-15.gif" \* MERGEFORMATINET
Такая схема применяется в дешифраторе "3 в 8" типа 1533ИД7(555ИД7), условное обозначение которого приведено на рис.15. Дешифраторы широко применяются в вычислительной технике, как часть больших интегральных схем, для выбора одного из нескольких внешних устройств (ВУ) при обмене данными между ним и микропроцессором. В этом случае на входы ai подаются сигналы, называемые адресом ВУ, а входы называются адресными.
2.3 ДЕМУЛЬТИПЛЕКСОР
Устройство передающее сигнал с информационного входа на один из выходов, причем номер этого выхода равен десятичному эквиваленту двоичного кода на адресных входах, называется демультиплексором (ДМ). В качестве ДМ может использоваться дешифратор, у которого вместо сигнала OE подается информационный сигнал x. Например, если на входы подать код a1a0=10(BIN)=2(DEC), то сигнал x появится на выходе y2, а на остальных выходах yi=0. На рис.16. даны условное обозначение ДМ "1 в 4" и его механический аналог.
INCLUDEPICTURE "D:\\MyDoc\\Komp_El\\KE_Dict\\electron1.files\\kombin.files\\ris16.gif" \* MERGEFORMATINET
2.4 УВЕЛИЧЕНИЕ РАЗРЯДНОСТИ ДЕШИФРАТОРОВ И ДЕМУЛЬТИПЛЕКСОРОВ
На рис.17 показано соединение двух ДШ "3 в 8" для получения одного ДШ "4 в 16", или двух демультиплексоров "1 в 8" для получения одного "1 в 16".
INCLUDEPICTURE "D:\\MyDoc\\Komp_El\\KE_Dict\\electron1.files\\kombin.files\\ris17.gif" \* MERGEFORMATINET
При пассивном значении ~OE=1 сигнал OE=0 (рис.14) и на всех выходах yi будет "1", независимо от значений сигналов ai. Если ~OE=0 (активный уровень), то какой из дешифраторов работает зависит только от сигнала a3. Так если a3=0, то на всех разрешающих входах ДШ (A) будут активные уровни, а на прямом разрешающем входе OE дешифратора (B) сигнал a3 равный нулю переведет все выходы в состояние 1 (см. табл.4), т.е. работоспособным будет ДШ (A). Когда a3=1, наоборот работоспособным становится дешифратор (B), потому что для инверсного входа ~OE дешифратора (A) этот сигнал запрещает его выходы. Комбинации сигналов a3 и a2..a0, это видно из первых колонок таблицы, образуют последовательность двоичного кода 0000 ... 0111 (0 ... 7) для дешифратора (A) и последовательность 1000 ... 1111 (8 ... 15) для ДШ (B). Поэтому нумерация выходов yi, получившегося ДШ "4 в 16" сквозная от 0 до 15. На рис.17, справа приведено условное обозначение, получившегося дешифратора - демультиплексора (в справочниках они так часто и называются и помещаются в один раздел).
INCLUDEPICTURE "D:\\MyDoc\\Komp_El\\KE_Dict\\electron1.files\\kombin.files\\tabl4.gif" \* MERGEFORMATINET
2.5 МУЛЬТИПЛЕКСОР
Мультиплексор передает сигнал с одного из информационных входов xi на единственный выход y, причем номер этого входа равен десятичному эквиваленту двоичного кода на адресных входах ai. Если имеется вход разрешения выхода OE, то "0" на этом входе должен перевести выход в пассивное состояние (последняя строчка таблицы.5). Рассмотрим мультиплексор "4 в 1", имеющий 4 информационных входа и log4 = 2 адресных входов.
INCLUDEPICTURE "D:\\MyDoc\\Komp_El\\KE_Dict\\electron1.files\\kombin.files\\tabl5.gif" \* MERGEFORMATINET
Величина x может принимать любые значения. Количество входных переменных равно 7, и таблица истинности должна иметь 128 строк. В табл.5 в 4-x основных строках упаковано 64 исходных (с учетом значений x0 ... x3) и в последней строке, остальные 64 строчки. Анализ 0 строки, приводит к выводу, что y=x0, если a1=0 И a0=0 И OE=1, независимо от переменных x1 ... x3. Поэтому для этого входного набора можно записать: y=x0*OE*~a1*~a0. Аналогично записывается y для остальных трех наборов переменных. Общее решение тогда будет иметь вид:
y = OE(x0*~a1*~a0 + x1*~a1*a0 + x2*a1*~a0 + x3*a1*a0). (16)
Применяя аксиомы двойного отрицания и двойственности к правой части уравнения получим:
------------------------------------
y = ~(OE*x0*~a1*~a0)+ ... +~(OE*x0*a1*a0).(17)
Выражению (17) соответствует схема, приведенная на рис.18,
INCLUDEPICTURE "D:\\MyDoc\\Komp_El\\KE_Dict\\electron1.files\\kombin.files\\ris18-19.gif" \* MERGEFORMATINET
а ее условное обозначение и механический аналог на рис.19. Если на адресные входы подать комбинацию a1a0 = 11(BIN) = 3(DEC), то к выходу y будет подключен вход D3, при условии, если OE=1. Мультиплекcор может иметь инверсный выход, а также третье состояние этого выхода, которое отмечается на схеме ромбом с поперечной чертой.
Мультиплексоры находят широкое применение в вычислительной технике, например многие выводы у микропроцессоров "мультиплексированы", т.е. к одному выходу подключается несколько внутренних источников различных сигналов. Это могут быть сигналы линий шины данных и шины адреса, передаваемые последовательно во времени, что позволяет сократить общее число выводов микропроцессора. Если сравнить выражения (16) и (12), то можно увидеть их тождественность, при fi = xi и OE = 1. Следовательно, с помощью мультиплексора с "n" адресными входами можно реализовать любую ЛФ с "n" переменными, подавая на информационные входы мультиплексора значения fi.
2.6 ШИФРАТОР
Шифратор (Ш) может быть неприоритетным, если допускается подача только одного активного сигнала и может быть приоритетным, если допускается подача одновременно нескольких активных сигналов на входы. Неприоритетный Ш осуществляет преобразование десятичного номера активного входа в двоичный эквивалент этого номера. Для неприоритетного шифратора "4 в 2" таблица истинности имеет вид (рис.20):
INCLUDEPICTURE "D:\\MyDoc\\Komp_El\\KE_Dict\\electron1.files\\kombin.files\\ris20-21.gif" \* MERGEFORMATINET
В приоритетном Ш производится преобразование максимального десятичного номера активного входа в двоичный эквивалент этого номера. Для такого Ш входные сигналы, лежащие снизу от единичной диагонали, по определению не известны ("x" может быть 0 или 1). Следовательно, полная таблица истинности, вместо нижних трех строчек должна содержать еще 2+4+8=14 строк см. рис.21. Комбинация 0000 на входах не определена.
Для синтеза схемы неприоритетного Ш для каждого выхода составим таблицу Карно. Четыре входных переменных дают 24=16 комбинаций, из которых по определению заданы в таблице только 4. Остальные 12 неопределенных (запрещенных) комбинаций в таблицах Карно отметим символом d. Так как появление этих комбинаций на входах не предусмотрено (по определению), то в соответствующие клетки т. Карно можно подставлять любые значения, в том числе такие, которые позволяют наиболее полно минимизировать ЛФ. Два из четырех вариантов приведены на рис.22. В обоих случаях две величины d доопределены до 1.
INCLUDEPICTURE "D:\\MyDoc\\Komp_El\\KE_Dict\\electron1.files\\kombin.files\\ris22.gif" \* MERGEFORMATINET
Из приведенных таблиц находим y1 и y0:
-- -- ------- -- -- -------
y1 = x0*x1 = x0 + x1 и y0 = x0*x2 = x0 + x2.
INCLUDEPICTURE "D:\\MyDoc\\Komp_El\\KE_Dict\\electron1.files\\kombin.files\\ris23.gif" \* MERGEFORMATINET
Реализация и условное обозначение неприоритетного Ш приведены на рис.23. Переменная x3 оказалась "обделенной", но это произошло из-за того, что если нет сигнала ни на одном из первых трех входов, то он неизбежно должен присутствовать, по определению, на оставшемся, т.е. на третьем. Переменная x3, вместе с остальными может быть использована для формирования функции x0 + x1 + x2 + x3 равной 0, когда не активен ни один из входов, что может сигнализировать, например, о неисправности источников сигналов.
Шифраторы применяются в контроллерах прерываний работы микропроцессора внешними устройствами, в параллельном преобразователе напряжения в код и для кодирования номера клавиши. Последнее применение показано на рисунке. Если нажата клавиша кл3, то на выходе ей будет соответствовать код 11(BIN) = 3(DEC).
2.7 ПРЕОБРАЗОВАТЕЛИ КОДА
Преобразователи кодов (ПК) могут быть весовыми и не весовыми. Весовые ПК преобразуют информацию из одной системы счисления в другую. Основное назначение не весовых - преобразование информации для ее дальнейшего отображения. В качестве примера рассмотрим преобразователь двоично-десятичного кода в код для семисегментных светодиодных индикаторов (рис.24). На рисунке также показан фрагмент подключения одного сегмента к выходу схемы с общим эмиттером и приведены начертания первых пяти цифр.
INCLUDEPICTURE "C:\\Мои документы\\INTERNET\\electron1.files\\sum-cmp.files\\ris24.gif" \* MERGEFORMATINET
Такой преобразователь должен иметь четыре входа, т.к. для кодирования десятичных цифр от 0 до 9 достаточно четырех двоичных, и семь выходов, по одному на каждый сегмент. Таблица истинности преобразователя, она же таблица, в соответствии с которой, например в цифре 0 должны светиться все сегменты за исключением сегмента G. В цифре 1 светятся только два сегмента B и C и т.д. Весовые коэффициенты bi двоично-десятичных разрядов равны 2i (8,4,2 и 1). На рис.25 слева дана таблица истинности. В таблице заполнена только колонка для сегмента A. Нули в ней проставлены для тех цифр, в которых сегмент A не светится.
INCLUDEPICTURE "C:\\Мои документы\\INTERNET\\electron1.files\\sum-cmp.files\\ris25.gif" \* MERGEFORMATINET
В общем случае для синтеза этого ПК требуется составить семь уравнений. Найдем одно, для сегмента A, заполнив сначала для него таблицу Карно. Слева, на рис.25-1 приведена ТК прямого значения функции сегмента A. Когда в таблице нулевых клеток значительно меньше и они компактно сгруппированы, полезнее искать алгебраическое выражение инверсной логической функции, т.е. ~Ya, ее таблица дана справа. Функция при этом может получиться значительно проще, т.е. содержать меньше переменных и слагаемых. Шесть двоичных наборов, начиная с 1010 в таблице не определены из-за отсутствия десятичных цифр больших девятки, поэтому для минимизации выгоднее считать некоторые из них единицами. Из таблицы найдем: ~Ya = x2*~x1*~x0 + ~x3*~x2*~x1*x0.
INCLUDEPICTURE "C:\\Мои документы\\INTERNET\\electron1.files\\sum-cmp.files\\ris25-1.gif" \* MERGEFORMATINET
Тогда искомое выражение будет иметь вид: Ya = ~(x2*~x1*~x0 + ~x3*~x2*~x1*x0). Соответствующая ему реализация на элементе И-ИЛИ-НЕ типа 1533ЛР4 будет одной из самых простых (рис.25.справа). Промышленность выпускает микросхемы преобразователей 514ИД2 с открытым коллектором и 514ИД1 с открытым эмиттером.
2.8 СУММАТОРЫ
Сумматор осуществляет арифметическое суммирование n-разрядных кодов X=(x(n-1),..,x0) и Y=(y(n-1),..,y0). Правила сложения двух одноразрядных двоичных чисел:
0 (+) 0 = 0 0 (+) 1 = 1 (+) 0 = 1 1 (+) 1 = 0 и перенос 1 в старший разряд.
Операция (+) называется - сумма по модулю два (переключательная функция F6). Устройство, реализующее эти правила называется одноразрядным полусумматором и имеет два входа и два выхода. Сложение трех одноразрядных чисел производится следующим образом:
0 (+) 0 (+) 0 = 0 0 (+) 0 (+) 1 = 1 0 (+) 1 (+) 1 = 0 и перенос 1 в старший разряд 1 (+) 1 (+) 1 = 1 и перенос 1 в старший разряд.
Устройство, реализующее эти правила называется одноразрядным полным сумматором (ОПС) и имеет три входа и два выхода. Таблица истинности ОПС приведена на рис.26, слева.
INCLUDEPICTURE "C:\\Мои документы\\INTERNET\\electron1.files\\sum-cmp.files\\ris26.gif" \* MERGEFORMATINET
xi,yi - одноименные двоичные разряды чисел X и Y, ci - перенос из предыдущего разряда, si - частичная сумма по модулю два и c(i+1) - перенос в следующий разряд. Значения c(i+1) совпадают со значениями функции мажоритарности , поэтому воспользуемся готовым решением:
c(i+1) = xi*yi + xi*ci + yi*ci. (18)
Таблица Карно для si приведена на рис.26 справа. Из таблицы находим: si = xi*~yi*~ci + ~xi*~yi*ci + xi*yi*ci+ ~xi*yi*~ci = ~yi(xi*~ci + ~xi*ci) + yi(xi*ci + ~xi*~ci) = ~yi(xi (+) ci) + yi(xi*ci + ~xi*~ci). Выражение в последней скобке необходимо преобразовать, используя соотношение двойственности.
------------------- ------------------
xi*ci + ~xi*~ci = ~(xi*ci) * ~(~xi*~ci) = (~xi+~ci) * (xi+ci) =
--------------------------------- ---------------
~xi*xi + ~xi*ci + ~ci*xi + ~ci*ci = ~xi*ci + xi*~ci =
~(xi (+) ci) = ~F6 = F9.
С учетом последнего выражения
si = ~yi(xi (+) ci) + yi~(xi (+) ci) =
yi (+) (xi (+) ci) = yi (+) xi (+) ci. (19)
Схема одноразрядного полного сумматора соответствующая уравнениям (18) и (19) и ее условное обозначение приведены на рис.27.
INCLUDEPICTURE "C:\\Мои документы\\INTERNET\\electron1.files\\sum-cmp.files\\ris27.gif" \* MERGEFORMATINET
Сумматор с последовательным переносом для сложения n- разрядных двоичных чисел показан на схеме (рис.28.). К его недостатку относится большое время задержки, в наихудшем случае, когда от сложения x0,y0 возникает сквозной перенос через все разряды до выхода s(n-1). При двухъярусной схеме одноразрядного сумматора, задержка сигнала от входов до выходов составит 2tзд.р., если считать задержку в каждом ярусе одинаковой. Суммарная величина задержки будет равна:
tзд.р.посл.сумматора = n*2tзд.р. (20)
При сложении многоразрядных чисел задержка выходного сигнала на выходе последнего разряда становится недопустимо большой.
INCLUDEPICTURE "C:\\Мои документы\\INTERNET\\electron1.files\\sum-cmp.files\\ris28.gif" \* MERGEFORMATINET
В ЭВМ сумматор является центральным узлом арифметико-логического устройства (АЛУ) и от его быстродействия зависит производительность компьютера. Поэтому применяются сумматоры с параллельной схемой переноса. Выражение (18) для младшего разряда можно преобразовать, используя тождество для функции ИЛИ: x + y = ~x*y + x*~y + xy. В правой части равенства СДНФ функции ИЛИ. Тогда
c1 = x0*y0 + x0*c0 + y0*c0 = x0*y0 + c0(x0 + y0) =
x0*y0 + c0(~x0*y0 + x0*~y0 + x0*y0) =
x0*y0(с0 +1) + c0(~x0*y0 + x0*~y0) =
x0*y0 + с0(x0 (+) y0). (21)
Уравнениям (19) и (21) соответствует схема на рис.29.
INCLUDEPICTURE "C:\\Мои документы\\INTERNET\\electron1.files\\sum-cmp.files\\ris29.gif" \* MERGEFORMATINET
Если в каждом разряде сумматора использовать такой одноразрядный сумматор, то никакого выигрыша в скорости не будет. Узел, обведенный точками называется узлом переноса (УП), а функции gi и pi называются функциями генерации переноса и распространения переноса. С учетом этого можно записать:
c1 = g0 + p0*c0, с2 = g1 + p1*c1 = (22)
= g1 + p1*g0 + p1*p0*c0, (23)
с3 = g2 + p2*c2 = (24)
= g2 + p2*g1 + p2*p1*g0 + p2*p1*p0*c0, (25)
......, и так далее. Выражения (22,24) - это еще последовательный сумматор, т.к. c3 зависит от c2,c2 зависит от c1, а c1 зависит от c0. Выражения (23,25) соответствуют уже параллельному сумматору, т.к. величина ci снимается с выхода предыдущего разряда, в котором она формируется параллельно из всех первичных переменных. Схемы узлов переноса УП1 и УП2 приведены на рис.30.
INCLUDEPICTURE "C:\\Мои документы\\INTERNET\\electron1.files\\sum-cmp.files\\ris30.gif" \* MERGEFORMATINET
Из рис.29 и 30 видно, что узел сложения в каждом разряде остается неизменным, а изменяется только узел переноса, причем задержка сигнала от входов xi, yi до c(i+1) остается неизменной и для 3-ярусной схемы равна 3tзд.р.. Суммарная задержка в каждом разряде увеличится на время прохождения сигнала от входа ci до si, т.е. на величину tзд.р., и составит: tзд.р. параллельного сумматора = 4tзд.р. независимо от количества разрядов. За это приходится платить усложнением узла переноса от разряда к разряду.