Основные логические операции
Любое преобразование кодов в машине основано на выполнении над ними логических операций. К логическим относятся операции над наборами двоичных (принимающих только значения 0 и 1) аргументов, в результате выполнения которых получают единственное значение: 0 или 1. Логические операции могут быть описаны с помощью специальных функций, принимающих 0 и 1 на наборах двоичных переменных и называемых булевыми функциями. Число всевозможных булевых функций от п переменных равно 2 и, следовательно, растет очень быстро с ростом п. Для двух переменных число всех булевых функций равно 16, а для одной переменной — 4. Функции одной и двух переменных играют важную роль в теории переключательных схем (схем, реализующих логические преобразования дискретных сигналов).
Таблица 3.2
Множество всех булевых функций от и переменных может быть описано конечной таблицей, число строк которой равно 2", а число столбцов — 22. Например, все четыре булевы функции от одной переменной могут быть описаны табл. 3.2. Первые две функции не требуют для своей реализации специальных аппаратурных затрат, так как первая f1 (носящая название "константа 0") соответствует разрыву цепи передачи сигнала, а вторая f2 ("константа 1") — постоянному соединению. Третья функция f3 носит название "функции повторения" (имеется в виду повторение значения аргумента), а последняя f4 — "функции отрицания", или "функции инверсии". В электрических цепях элемент, называемый буфером и служащий для развязки цепей и согласования нагрузок, может реализовывать функцию f3, а так называемый инвертирующий буфер — функцию инверсии f4. Функцию f3 могут выполнить два последовательно включенных инвертора, т. е. элементы, реализующие функцию инверсии сигнала f4. Это свойство инвертора использовано в схеме буфера шины адреса ПМ-ЭВМ (см. §6.3).
Рис. 3.1. Схемные обозначения буфера (а) и инвертора (б) Рис. 3.2. Схемные обозначения: а — элемента И; б — элемента ИЛИ; в - элемента И-НЕ; г -элемента И ЛИ-НЕ; д — элемента ИСКЛЮЧАЮЩЕЕ ИЛИ
Схемное обозначение буфера приведено на рис. 3.1, а, а инвертора — на рис. 3.1,6. Инвертор является весьма распространенным элементом логических схем, поскольку входит в состав других логических элементов, реализующих более сложные булевы функции. На схеме рис. 3.1 приведены по два схемных обозначения буфера и инвертора. Первое обозначение используется в основном в англоязычной литературе, второе — в отечественной и рекомендовано ГОСТ. Среди всех 16 возможных булевых функций от двух переменных наибольшее распространение получили следующие пять функций, описываемые в табл. 3.3. Функция f5 носит название функции логического умножения (конъюнкции), или функции И. Она реализуется с помощью логического элемента, называемого схемой И. Графическое обозначение этого элемента приведено на рис. 3.2,а. К особенностям работы элемента И относится то, что сигнал на его выходе, соответствующий логической единице, появляется только в том случае, если аналогичные сигналы присутствуют одновременно на его двух входах. Если же хотя бы на одном входе элемента И сигнал нулевой, выход также принимает значение 0. Понятие функции (схемы) И естественным образом расширяется на п переменных (входов). Функция f6 носит название функции логического сложения (дизъюнкции), или функции ИЛИ. Она реализуется с помощью логического элемента, называемого схемой ИЛИ. Графическое обозначение элемента ИЛИ приведено на рис. 3.2,6. В отличие от схемы И на выходе элемента ИЛИ единичный сигнал появляется при наличии аналогичного сигнала на любом входе. И только если на обоих входах элемента ИЛИ присутствуют нулевые сигналы, на его выходе формируется тоже нулевой сигнал. Аналогичным образом вводится понятие и-входового элемента ИЛИ.
Таблица 3.3
Значения функции f7 противоположны значениям функции f на одних и тех же наборах входных сигналов. Поэтому функция f7 называется функцией И-НЕ. Графическое обозначение соответствующего элемента дано на рис. 3.2,в. Его название - элемент И-НЕ. Значения функции f8 противоположны значениям функции f6 на одних и тех же наборах. Поэтому функция f8 носит название функции ИЛИ-НЕ. Она реализуется элементом с тем же названием, представленным на рис. 3.2,г. Наконец, последняя функция f9 отличается от функции fб значением выходного сигнала на последнем наборе. Эта функция называется логической неравнозначностью или суммой по модулю 2. Выходной сигнал у соответствующего элемента, реализующего эту функцию (рис. 3.2,д), принимает значение, равное 1, в том и только в том случае, когда сигналы на его входах имеют противоположные значения. Элемент, реализующий функцию сложения по модулю 2, является одним из основных логических элементов схемы микропроцессорного блока микро-ЭВМ, поскольку, как мы увидим в дальнейшем, он является базой построения всех суммирующих схем. Кроме того, если выход элемента, реализующего функцию сложения по модулю 2 (другое название этого элемента - ИСКЛЮЧАЮЩЕЕ ИЛИ), подать на вход инвертора, то на выходе последнего сигнал l будет формироваться только при условии совпадения значений сигналов на входах элемента ИСКЛЮЧАЮЩЕЕ ИЛИ. Такой схемой можно воспользоваться для сравнения значений двух одноразрядных чисел. Эта операция в микро-ЭВМ используется очень часто. Все элементы, реализующие рассмотренные основные функции, обладают одной характерной особенностью. Сигналы на выходах этих элементов полностью определяются входными сигналами, т. е. сигналами, присутствующими в рассматриваемый момент времени на их входах. От сигналов, подававшихся на входы элементов в более ранние моменты времени, выходные сигналы не зависят. Поэтому эти элементы относятся к классу комбинационных схем, или к классу схем, не обладающих памятью.
С помощью комбинационных элементов в ЦГО микро-ЭВМ реализуются все основные логические операции над 8-разрядными словами данных и 16-разрядными словами адресов. К ним относятся операции поразрядного логического умножения (поразрядное И), сложения (поразрядное ИЛИ), инвертирования (поразрядное НЕ), сравнения. С их помощью реализуются арифметические операции (см. § 3.3). Однако многие из этих операций были бы практически невыполнимы, если бы схема обработки двоичных сигналов не содержала специальных устройств для временного хранения данных. К таким устройствам принадлежат регистры. Они состоят из элементов, число которых (или длина регистра) равно числу двоичных разрядов поступающих на них данных. Каждый элемент способен сохранить на своем выходе значение поступившего и затем пропавшего входного сигнала до тех пор, пока не возникнет необходимость сохранения вновь поступившей информации. Эти элементы, называемые триггерами, относятся не к комбинационным схемам, а к схемам с памятью. Триггер — это схема с двумя устойчивыми состояниями: ВКЛЮЧЕНО, обозначаемое 1, и ВЫКЛЮЧЕНО, обозначаемое 0. Распространенным типом триггера является триггер с двумя входами, обозначаемыми R и S. Такой тип триггера носит название RS-триггера. Вход R (Reset — очистка) предназначен для перевода триггера в состояние 0, или, как говорят, для очистки триггера. При появлении сигнала на этом входе триггер переводится в состояние 0, если до этого он находился в состоянии 1, или остается в состоянии 0, если до этого он находился в состоянии 0. Вход S (Set — установка) предназначен для перевода триггера в состояние 1, или, как говорят, для установки триггера.
При появлении сигнала на этом входе триггер переводится в состояние 1, если до этого он находился в состоянии 0, или остается в состоянии 1, если до этого он находился в состоянии 1. Сигнал, переводящий триггер в то или иное состояние, может быть как единичным (в этом случае вход называется прямым) или нулевым (вход называется инверсным). Так, например, в схеме К155ТМ2 (см. гл. 5) сигналы сброса и установки имеют нулевые значения. В этой схеме триггер остается в состоянии 0 и в том случае, если значение сигнала изменится с 0 на 1. Перевести его в состояние 1 можно только подачей сигнала 0 на вход S (Set — установка). Состояние 1 триггер будет также сохранять при изменении значения сигнала на входе S на единичное. Триггер типа RS является далеко не единственным и даже не наиболее применяемым в схемотехнике дискретных устройств. Более распространенным, например, является D-триг-гер. Он имеет два входа: D и С. Вход D является информационным, а С — управляющим. Сигнал со входа D переписывается в триггер только при наличии определенного сигнала на управляющем входе С. Некоторые триггеры, реализованные в виде микросхем, имеют входы, соответствующие как RS-триггеру, так и D-триггеру, и могут быть использованы как триггеры любого из указанных двух типов. Состояние триггера однозначно соответствует сигналу на выходе, который называется прямым выходом. Кроме прямого выхода у триггера имеется так называемый инверсный выход, значение сигнала которого всегда противоположно значению сигнала прямого выхода. Это позволяет, например, иметь на выходах регистра, состоящего из восьми триггеров, одновременно прямой и обратный коды вводимого 8-разрядного двоичного числа. Поскольку все процессы преобразования сигналов в ЭВМ синхронизированы, в схемах регистров используются синхронизируемые триггеры. В таких триггерах кроме информационных входов имеется специальный вход, на который подаются сигналы синхрогенератора. Изменение состояния триггера происходит только во время появления тактового импульса на его синхронизирующем входе. Изменение значений информационных сигналов в период пауз тактовых импульсов на состояние триггера влияния не оказывает. Используемые для одновременного хранения нескольких двоичных разрядов регистры состоят из последовательно соединенных триггеров и управляющих связей между ними, позволяющих организовать последовательную или параллельную подачу запоминаемой информации. С помощью управляющих связей можно сдвигать хранящуюся в регистрах информацию на произвольное число разрядов вправо и влево, а также считывать информацию в последовательной и параллельной формах. Такие регистры называются сдвиговыми регистрами. Они широко используются для реализации арифметических функций, в частности умножения и деления.
Итак, в самом общем случае регистры позволяют осуществить следующее: 1) хранить поступившую на них двоичную информацию в течение необходимого времени; 2) осуществлять преобразование последовательных двоичных кодов в параллельные и обратно; 3) сдвигать при необходимости хранимые данные вправо и влево; 4) пользоваться обратным кодом хранимой информации, имеющимся на инверсных выходах триггеров.
ОСНОВНЫЕ
АРИФМЕТИЧЕСКИЕ ОПЕРАЦИИ
Рассмотренные в предыдущем параграфе логические операции и описываемые ниже арифметические операции реализуются в арифметическо-логическом устройстве (АЛУ) микропроцессора, на котором построена ПМ-ЭВМ. Операции выполняются над 8-разрядными двоичными числами, причем старший (левый) разряд может использоваться для представления знака числа (значение 0 указывает на положительное число, а 1 — на отрицательное). Сложение двоичных чисел производится по тем же правилам, что и сложение десятичных чисел, за исключением того, что перенос в следующий разряд осуществляется при сумме в данном разряде, равной 2, а не 10. Пусть, например, требуется сложить два числа: 00011 010B = 26D + 00001 100 В = 12D 00 100 110B=38D. При сложении крайних правых четырех разрядов имели место все четыре возможные комбинации сложения одноразрядных чисел: 0+0=0, 1 + 0 = 1, 0+1 = 1, 1+1=0. В четвертом разряде сумма равна 2D, или 10 В. Следовательно, необходим перенос единицы из четвертого разряда в пятый. Тогда в пятом разряде опять же 1 + 1 = 0 и после переноса единицы в шестой разряд сумма в шестом разряде будет 1 + 0+0=1. Нетрудно заметить, что реализация этих операций может быть выполнена с помощью всего двух логических элементов: суммы по модулю 2, или ИСКЛЮЧАЮЩЕГО ИЛИ, реализующего функцию f9, соответствующую выходу суммы S, и элемента И, реализующего функцию f5, соответствующую выходу переноса в следующий разряд С (рис. 3.3,с). Эта схема сложения одноразрядных чисел без учета входного переноса из предыдущего разряда называется полусумматором. Рис. 3.3. Одноразрядные суммирующие схемы: а - полусумматор; б - полный сумматор Чтобы реализовать сложение с учетом переноса из предыдущего разряда, необходимо использовать два полусумматора, соединив их так, как показано на рис. 3.3,6. Эта схема носит название полного сумматора, или одноразрядного сумматора. Для сложения двух 8-разрядных двоичных чисел потребуется 8 одноразрядных сумматоров, соединенных таким образом, чтобы сигнал переноса передавался в каждый следующий разряд на вход Св соответствующего полного сумматора. Сигнал переноса из самого старшего разряда запоминается в специальном триггере, называемом триггером флага переноса, для указания переполнения, имевшего место при сложении. Поскольку, как указывалось выше, старший разряд может отводиться под знак числа, с помощью 8-разрядной суммирующей схемы можно оперировать как с любыми целыми положительными числами в диапазоне от 00 000 000 В = OD до 11 111 111 В = 25 5 D, так и с целыми положительными и отрицательными числами в диапазоне от 01 111 111 В = 127D до 10 000 000 В = -128D (в этом случае единица в старшем разряде указывает на отрицательное число, а нуль - на положительное). Для вычитания одного числа из другого используется специальное кодовое представление отрицательных чисел, называемое дополнительным кодом. Дополнительный код (иначе, дополнение до 2) получается прибавлением единицы к младшему разряду инверсного, или обратного, кода числа (дополнения До 1). Сложение уменьшаемого с вычитаемым, представленным в дополнительном коде, приводит к результату, который получился бы при обычном вычитании. Таким образом, не нужно строить специальную схему для операции вычитания, а можно воспользоваться все той же схемой 8-разрядного сумматора. Пусть, например, требуется выполнить вычитание: 38 D — 26 D. Перейдем к дополнительному коду для числа — 26. Инвертируя код числа 26D и прибавляя единицу в младшем разряде, получаем: 00 011 010 — прямой код 11 100 101 — обратный код + 11 100 110 — дополнительный код. Теперь выполним сложение: 00100 110В + 11 100 110В 100001 100 В =12D. В результате получили двоичный код десятичного числа 12 D и перенос из старшего разряда. Этот сигнал может быть использован при выполнении арифметических операций с 16-разрядными числами по частям в одном 8-разрядном сумматоре. При этом сначала производится сложение в дополнительном коде младших разрядов суммируемых чисел и запоминание сигнала (единицы) переноса, а затем сложение старших разрядов с учетом этого сигнала переноса. Для выполнения операций умножения и деления специальных команд в микропроцессоре КР580ИК80А не предусмотрено. Поэтому эти операции в ПМ-ЭВМ выполняются программным путем с использованием операций сложения, сложения с дополнительным кодом числа (вычитания) и сдвига (см. § 9.1). Арифметические операции можно производить также над десятичными числами, закодированными так называемыми двоично-десятичными кодами (двоично-кодированное представление десятичного числа). При таком представлении чисел каждая десятичная цифра кодируется четырехразрядным двоичным кодом (кодом прямого замещения, или кодом 8421). После сложения двух двоично-кодированных чисел для получения правильного результата необходимо выполнить коррекцию результата этой операции. Для этого используется блок десятичной коррекции. Он осуществляет требуемую коррекцию результата путем исполнения специальной команды "десятичной коррекции" DAA (см. список команд в приложении 1), которую необходимо выполнить после команды сложения.
АРХИТЕКТУРА ПМ-ЭВМ И КОМПОНЕНТОВ
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|