Лекция 9 Схемы большой степени интеграции Сумматор основа АЛУ

Сумматор предназначен для арифметического сложения двух чисел. Из принципа сложения многоразрядных двоичных чисел следует, что в каждом i-м разряде находится сумма трех чисел по модулю два (слагаемых Ai, Ai и переноса, поступившего из младшего разряда Pi), и формируется сигнал переноса в старший разряд Рi+1 Для примера проанализируем таблицу истинности одноразрядного сумматора и запишем логические выражения для выходных величин
S=A(-B)(-P0)\/(-A)B(-P0)\/(-A)(-B)P0\/ABP0
Pi+1=AB(-P0)\/A(-B)(-P0)\/(-A)BP0\/ABP0

По этим функциям можно построить сумматор на элементах И и ИЛИ Рисунок 1,а. Символическое изображение одноразрядного сумматора приведено на рисунке 1,б. Для сложения двух многоразрядных двоичных чисел используют многоразрядные сумматоры, представляющие собой в простейшем виде последовательное соединение одноразрядных сумматоров рисунок

Сумматор одноразрядный и параллельный

Полусумматор это логическая цепь, которая вырабатывает сигналы суммы (S) и переноса (С) при сложении двух двоичных чисел а и в.

Составим таблицу функционирования.

а в S C
       
       
       
       

Из таблицы получим:

. – сигнал суммы;

- сигнал переноса.

Эти выражения упрощению не поддаются.

Приведем к виду, удобному для реализации на элементах ИЛИ-НЕ.

.

исходя из полученных формул составим схему полусумматора (рис. 2.20, а):

Рис.2.20. Схема полусумматора

Поскольку полусумматор имеет широкое применение и его выпускают в виде отдельной микросхемы, он имеет собственное обозначение (рис. 2.20 б).

Составляя дизъюнктивную нормальную форму для полусумматора, мы получили следующие булевы функции:

и

Следовательно, перенос происходит с помощью функции И, а выработка сигнала суммы (функции неравнозначности) производится элементом ИСКЛЮЧАЮЩЕЕ – ИЛИ. На рис.2.21 показана схема полусумматора, составленная из этих элементов.

Рис. 2.21. Схема полусумматора.

Сумматор. В отличие от полусумматора должен воспринимать 3 входных сигнала: 2 слагаемых и сигнал переноса с предыдущего разряда.

Чтобы понять сущность работы комбинационного сумматора, рассмотрим примеры суммирования двух одноразрядных двоичных чисел:

Из приведенных примеров (1 - 4) видно, что если отсутствует перенос из младшего разряда, то перенос в старший разряд может быть только в одном случае, когда оба числа равны единице. Если же имеется перенос из младшего разряда, то перенос в старший разряд будет всегда, кроме одного случая, когда оба слагаемых равны нулю.

Составим таблицу функционирования:

ai bi Сi Si Сi+1
         
         
         
         
         
         
         
         

Схема сумматора может быть реализована на двух полусумматорах, соединенных как указано на схеме рис. 2.22. В этой схеме выделим промежуточные сигналы Pi, gi, ri. Введем эти сигналы в новую таблицу функционирования. Соответствие работы этой схемы (рис. 2.22) и таблицы фунционирования можно проверить перебором всех возможных вариантов.

Рис. 2.22. Схема полного сумматора

Многоразрядный сумматор с последовательным переносом. Таким образом, в общем случае для каждого разряда необходима логическая схема с тремя входами ai, bi, Ci и двумя выходами Si, Ci+1. Такая схема и есть полный сумматор. Ее можно реализовать с помощью двух полусумматоров.

Входы Промежуточные величины Выходы
ai bi сi Pi gi ri Si Ci+1
               
               
               
               
               
               
               
               

Для сложения двух многоразрядных двоичных чисел на каждый разряд необходим один полный сумматор. Только в младшем разряде можно обойтись полусумматором. На рис. 2.23 приведена схема, предназначенная для сложения двух четырехразрядных чисел А и В. Эта схема выпускается в интегральном исполнении. В ее младшем разряде также используется полный сумматор, чтобы иметь возможность наращивания разрядности схемы.

Рис. 2.23. Сумматор с последовательным переносом

Сумматоры с параллельным переносом. Время выполнения операции в сумматоре с параллельным переносом намного больше времени сложения в одноразрядном сумматоре. Действительно, сигнал переноса С4 только тогда может принять истинное значение, когда будет установлено правильное значение С3. Такой порядок выполнения операций называется последовательным переносом (Ripple Carry).

Чтобы уменьшить время операции сложения многоразрядных чисел можно использовать схемы параллельного переноса (Carry look-ahead). При этом все сигналы переноса вычисляются непосредственно по значениям входных переменных.

Согласно таблице переключений, в общем случае для сигнала переноса любого i-го разряда справедливо соотношение:

. (1)

Величины gi, ri вычисляются в качестве промежуточных результатов и в полном сумматоре. Следовательно, их получение не требует дополнительных затрат. Смысл этих величин объясняется совсем просто. Сигнал gi вырабатывается тогда, когда в данном разряде перенос происходит из-за комбинации входных переменных ai,bi. Поэтому его называют функцией генерации переноса. Сигнал Pi показывает, передается ли полученный в младшем разряде сигнал переноса Ci дальше. Поэтому он называется функцией распространения переноса.

Пользуясь выражением (1), можно вывести следующие формулы для вычисления сигналов переноса:

(2)

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

Схема сумматора с параллельным переносом приведена на рис. 2.24, а. На рис. 2.24, б изображена схема устройства параллельного переноса в группе из четырех разрядов. Эта схема реализует систему уравнений (2).

Рис. 2.24. Схема сумматора с параллельным переносом

Рис. 2.25. Схема ускоренного переноса

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

Сложение чисел, содержащих более четырех разрядов, можно реализовать подключением нескольких четырехразярадных сумматоров.

Арифметико-логическое устройство (АЛУ

АЛУ

Вводная часть

Цифровые микросхемы к настоящему времени достигли впечатляющего быстродействия при приемлемом токе потребления. Наиболее быстрые из цифровых микросхем обладают скоростью переключения порядка 3..5 нс. (серия микросхем 74ALS). В то же время приходится платить за быстродействие микросхем повышеным током потребления. Исключением являются микросхемы, построенные на основе КМОП технологии (например микросхемы серий 1564, 74HC, 74AHC). В этих микросхемах потребляемый ток прямо пропорционален скорости переключения логических вентилей в микросхеме. Т.е. микросхема автоматически увеличивает ток потребления, если от нее требуется большее быстродействие, поэтому в настоящее время подавляющее большинство микросхем выпускается именно по этой технологии. Часто цифровые устройства выполняют достаточно сложные задачи.

Возникает вопрос - раз микросхемы достигли такого высокого быстродействия, то нельзя ли использовать одну и ту же микросхему многократно? Тогда можно будет обменивать быстродействие микросхем на сложность решаемой задачи. Именно этот обмен и позволяют осуществлять микропроцессоры. В этих микросхемах многократно используется одно и то же устройство - АЛУ (арифметическо-логическое устройство). Поэтому возможен обмен предельного быстродействия микроконтроллера на сложность реализуемого устройства. Именно по этой причине стараются максимально увеличить быстродействие микропроцессоров - это позволяет реализовывать все более сложные устройства в одном и том же объеме.

В состав АЛУ входят следующие блоки:

комбинационная схема обработки байтов,

регистры Т,

регистр-аккумулятор А,

схема десятичного корректора и схема формирования признаков.

Аккумулятор используется в качестве регистра операнда и регистра результата. Регистр временного хранения операнда Т1 программно недоступен и используется для временного хранения второго операнда при выполнении двухоперандных команд. Комбинационная схема АЛУ может выполнять следующие операции: сложение байтов с переносом или без него; логические операции И, ИЛИ и исключающее ИЛИ; инкремент, декремент, инверсию, циклический сдвиг влево, вправо через (или минуя) флаг переноса, обмен тетрад в байте; десятичную коррекцию содержимого аккумулятора.

При выполнении операций обработки данных в АЛУ вырабатываются флаги (признаки), которые (за исключением флага переноса С) формируются на комбинационной схеме и не фиксируются на триггерах. К таким флагам относятся флаг нулевого содержимого аккумулятора и флаг наличия единицы в селектируемом бите аккумулятора. Логика условных переходов по указанным флагам позволяет выполнять команды передачи управления (JZ, JNZ, JB0 - JB7) без их фиксации на тригерах.

Флаги переноса и вспомогательного переноса (перенос из младшей тетрады в старшую) фиксируются на триггерах, входящих в состав регистра слова состояния программы (ССП). Формат ССП показан на рис. 2.3 Кроме пере-численных признаков логика условных переходов МК оперирует флагами FO и FI, функциональ-ное назначение которых определяется разработчиком; флагом пе-реполнения таймера TF, сигналами на входах Т0 и Т1. Программистом могут быть также использованы флаги рабочего банка регистров BS и выбранного банка внешней памяти программ МВ. Кроме того, логикой переходов после оконча-ния каждого машинного цикла опрашивается еще один флаг, а именно флаг разрешения/запрета прерывании.

Рис. 2.3 Формат слова состояния программы

Аккумулятор и ССП. Аккумулятор является источником операнда и местом фиксации результата при выполнении арифметических, логических операций и ряда операций передачи данных. Кроме того, только с использованием аккумулятора могут быть выполнены операции сдвигов, проверка на нуль, формирование флага паритета и т.п.

При выполнении многих команд в АЛУ формируется ряд признаков операции (флагов), которые фиксируются в регистре ССП.

Наиболее "активным" флагом ССП является флаг переноса, которые принимает участие и модифицируется в процессе выполнения множеств операций, включая сложение, вычитание и сдвиги. Кроме того, флаг переноса (C) выполняет функции "булевого аккумулятора" в командах, манипулирующих с битами. Флаг переполнения (OV) фиксирует арифметическое переполнение при операциях над целыми числами со знаком и делает возможным использование арифметики в дополнительных кодах. АЛУ не управляет флагами селекции банка регистров (RS0, RS1), и их значение полностью определяется прикладной программой и используется для выбора одного из четырех регистровых банков.

Широкое распространение получило представление о том, что в микропроцессорах, архитектура которых опирается на аккумулятор, большинство команд работают с ним, используя адресацию "по умолчанию" (неявную). В МК51 дело обстоит иначе. Хотя процессор в МК51 имеет в своей основе аккумулятор, однако, он может выполнять множество команд и без участия аккумулятора. Например, данные могут быть переданы из любой ячейки РПД в любой регистр, любой регистр может быть загружен непосредственным операндом и т.д. Многие логические операции могут быть выполнены без участия аккумулятора. Кроме того, переменные могут быть инкрементированы, декрементированы и проверены (test) без использования аккумулятора. Флаги и управляющие биты могут быть проверены и изменены аналогично.

Арифметико-логическое устройство (АЛУ) - это многофункциональное устройство, которое выполняет над входными числами различные арифметические и логические операции. Схемотехнически АЛУ представляется вот так:

Рис. 1 - Арифметико-логическое устройство

АЛУ имеет

входы чисел А0-А3 и В0-В3,

входы управления S0-S3, М,

вход переноса С0,

выход результата F0-F3,

выход переноса С4,

выход равенства кодов К,

выходы Р и G для схемы быстрого переноса.

Работа АЛУ поясняется таблицей функционирования, изображенной ниже. Вход М определяет вид выполняемых операций (при М=1 над А и В выполняется 16 лог. операций, при М=0 выполняются арифметические операции). Знаком \/ обозначается лог. сложение, арифметическое сложение обозначается плюсиком (+), умножение (только логическое) - знаком "х", А1 - число А, сдвинутое на один разряд вправо.

АЛУ может выполнять следующие операции:

Арифметическое суммирование чисел (при М=0 операция №10).

Арифметическое вычитание чисел (при М=0 операция №7).

Сравнение чисел - операция №7 при С0=1. Если А=В, то К=1, если A>B, то С4=0, если A<B, то С4=1.

Формирование модуля числа А. При М=1 на входы S3-S0 параллельно подается знак числа А равный 1 при положительном числе А. Если А отрицательно - 0.

. Также для числа В (11-я и 6-я операции соответственно), но нужно иметь знак и его инверсию.

Мультиплексирование чисел А и В. При М=1 и 16-й операции на выход поступает число А, 11-я операция - число В. 1-я и 6-я операции выполняют мультиплексирование с инверсией.

Увеличение числа А в 1,5 раза - 13 операция.

8-битное АЛУ может выполнять арифметические операции сложения, вычитания, умножения и деления; логические операции И, ИЛИ, исключающее ИЛИ, а также операции циклического сдвига, сброса, инвертирования и т.п. В АЛУ имеются программно недоступные регистры T1 и T2, предназначенные для временного хранения операндов, схема десятичной коррекции и схема формирования признаков.

Простейшая операция сложения используется в АЛУ для инкрементирования содержимого регистров, продвижения регистра-указателя данных и автоматического вычисления следующего адреса РПП. Простейшая операция вычитания используется в АЛУ для декрементирования регистров и сравнения переменных.

Простейшие операции автоматически образуют "тандемы" для выполнения в АЛУ таких операций, как, например, инкрементирование 16-битных регистровых пар. В АЛУ реализуется механизм каскадного выполнения простейших операций для реализации сложных команд. Так, например, при выполнении одной из команд условной передачи правления по результату сравнения в АЛУ трижды инкрементируется СК, дважды производится чтение из РПД, выполняется арифметическое сравнение двух переменных, формируется 16-битный адрес перехода и принимается решение о том, делать или не делать переход по программе. Все перечисленные операции выполняются в АЛУ всего лишь за 2 мкс.

Важной особенностью АЛУ является его способность оперировать не только байтами, но и битами. Отдельные программно-доступные биты могут быть установлены, сброшены, инвертированы, переданы, проверены и использованы в логических операциях. Эта способность АЛУ, оперировать битами, столь важна, что во многих описаниях МК51 говорится о наличии в нем "булевского процессора". Для управления объектами часто применяются алгоритмы, содержащие операции над входными и выходными булевскими переменными (истина/ложь), реализация которых средствами обычных микропроцессоров сопряжена с определенными трудностями.

Таким образом, АЛУ может оперировать четырьмя типами информационных объектов: булевскими (1 бит), цифровыми (4 бита), байтными (8 бит) и адресными (16 бит). В АЛУ выполняется 51 различная операция пересылки или преобразования этих данных. Так как используется 11 режимов адресации (7 для данных и 4 для адресов), то путем комбинирования "операция/ режим адресации" базовое число команд 111 расширяется до 255 из 256 возможных при однобайтном коде операции.

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

Для ускорения этого процесса используются микросхемы, схемами ускоренного переноса (555ИП4, 564ИП4). Одна такая микросхема обслуживает до 4-х АЛУ. Выходы G и Р АЛУ соединяют с аналогичными входами G и Р схемы ускоренного переноса, а выходы переноса соединяем со входами переноса АЛУ. Вход переноса АЛУ младшего разряда подключается к входу переноса микросхемы переноса. При этом объединяются входы М всех АЛУ. Получается 16-ти разрядное АЛУ

№ операции Состояние входов S Состояние входа М
S3 S2 S1 S0 M=1 M=0 (С=0)
          А А\/1
          А+B (А+B)\/1
          А+B (А+B)\/1
             
          А+B (А\/A)x(B\/1)
          B (А+B)\/A(B\/1)
          АxB\/AxB A-B
          AxB AxB
          A+B A\/AxB\/1
          AxB+AxB A\/B\/1
          B (A+B)\/AxB\/1
          AxB AxB
            A\/A\/1
          A+B (A+B)\/A1\/1
          A+B (A+B)\/A\/1
          А A

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: