Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Алгоритм сложения ДДК

Текущему значению суммы частичных произведений добавляется множимое, если соответствующий разряд равен «1» и далее суммы частичных произведений сдвигаются вправо и т.д. Перенеся условную точку вправо через (n-1) разряд мы получим результат.

Алгоритм операции умножения.

Будем считать, что операнды представлены прямым кодом, т.е. старший разряд знаковый, остальные – числовые.

  1. Берутся модули от сомножителей;
  2. Сумма частичных произведений полагается равной нулю;
  3. Анализируется младший разряд множителя, если значение «1», то к текущему значению суммы частичных произведений добавляется множимое;
  4. Содержимое регистра множителя и сумматора частичных произведений сдвигается вправо на одно деление;
  5. п.3 и п.4 повторяются для всех разрядов множителя.
  6. Для окончательного размещения результата в двоичном виде производят сдвиг вправо на 1 разряд.
  7. Знак результата полагается «0», если сомножители имеют одинаковый знак и «1» (отрицательный результат), если сомножители имеют разные знаки. Операция не производится, если один из «0», и результат равен «0».

 

 

Основа для алгоритма является: Z=X (множимое) *Y (множитель)

Y – представим как соответствующие степени

Y=±yn-2 2n-2 + yn-32n-3+ y0 20, тогда

Z=x*(yn-2 2n-2 + yn-32n-3+y0 20) =x*2n-1(yn-2 2-1 + yn-32-2+ y0 2 -- (n--1))=

=2n-1((..(0+x* y0)z--1 + x* y1)* 2--1 +…+x*y n-1) 2-1 =A*2n-1.

 

 

               
   
 
 
 
   
 
   

 

 


Рг1 для приёма множимого; Рг2 для приёма множителя. Входной РгА сумматора для размещения в нём очередной добавляемой компоненты к сумме частичных произведений. Входной РгБ См используется для размещения текущего значения суммы частичных произведений. Рг2' используется для формирования сдвига множителя вправо по разрядной сетке. Выходной РгСм, в котором формируются текущее значение суммы частичных произведений. Счётчик циклов используется для отображения количества обрабатываемых разрядов множителя.

На 1-м этапе выполняется размещение множимого в Рг1. Множимое может передаваться в РгА в прямом или инверсном кодах. На 2-м этапе в Рг2 размещается множитель, поступающий по ШД. Обнуляется содержимое РгВ, используемое вы качестве начального значения суммы частичных произведений. Далее анализируется младшая цифра множителя в Рг2. Если она =1, то в РгА передаётся содержимое Рг1 и на выходе См формируется текущее значение суммы частичных произведений. Одновременно передают множитель для анализа очередной цифры. Для этого его содержимое передаётся в Рг2' с сдвигом вправо на 1 по разрядной сетке. В свободный разряд Рг2' помещается младший разряд со входа См. Остальные разряды См предаются в РгСм со сдвигом вправо на 1 разряд. После этого значение РгСм размещается в РгВ. Содержимое Рг2' размещается в Рг2 и значение СчЦ уменьшается на 1 по отношению к первоначальному значению, равному количеству числовых разрядов.

Процесс продолжается для следующей цифры множителя. Когда содержимое СчЦ становится =0, процесс анализа завершается с получением в РгСм старших разрядов и в Рг2 младших разрядов произведения. После этого выполняется ещё 1 цикл с 0 значением РгА для правилного размещения результата в разрядной сетке двойного слова.

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

 

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

1. Фиксируется знак сомножителей в специальных триггерах.

2. Сумма частичных произведений полагается =0.

3. Анализируется младшая цифра множителя. Если она =1, то к сумме частичных произведений добавляется множимое в том коде, в котором оно представлено. Если она =0, то добавление не производится.

4. Выполняется сдвиг вправо суммы частичных произведений на 1 разряд, причём, если значение суммы ≥0, то производится обычный сдвиг. Если текущее значение суммы частичных произведений <0, то производится модифицированный сдвиг с занесением 1 в знаковый разряд.

5. Пункты 3 и 4 повторяются для всех числовых разрядов множителя.

6. Если множитель ≥0, то текущее значение суммы частичных произведений представляет собой результат в прямом коде для положительного значения и в дополнительном коде для отрицательного значения. Если множитель <0, то к текущему значению суммы частичных произведений необходимо добавить множимое с обратным знаком.

7. Размещение результатов в формате двойного слова путём сдвига суммы частичных произведений вправо на 1 разряд.

Z = X * Y, Y > 0

Алгоритм тот же, за исключением модифицированного сдвига. При этом может возникнуть следующее: если младший разряд множителя =0, а множимое <0, то нет необходимости выполнять модифицированный сдвига (нельзя), поскольку сумма частичных произведений =0, а нуль в дополнительном коде знака не имеет. И лишь только с появлением отрицательного значения суммы частичных произведений сдвиг должен быть модифицированным.

Y < 0

Yдоп = 2n - |Y|

Весовой коэффициент: 2n-1. Поэтому, если вычислить псевдопроизведение:

Z' = X * (2n-1 - |Y|) = -X * |Y| + X * 2n-1

Z' больше истинного значения на величину множимого, поэтому на завершительном этапе перед размещением результатов в формате двойного слова перед последним сдвигом необходимо из результата вычесть множимое. Поэтому при СчЦ = 0 к текущему значению суммы частичных произведений добавляют множимое с обратным знаком.

Особенности АЛУ с двоично-десятичными кодами (ДДК)

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

Пример: 37=

АЛУ, построенное для обработки ДДК базируется на традиционном двоичном сумматоре с выполнением дополнительных корректирующих действий. Основная идея корректирующих механизмов заключается в том, что при обработке десятичных разрядов переносы в смежные разряды возникают при значениях, превышающих число 10, а при сложении ДДК перенос в смежный разряд возникает при превышении в разряде 16. Единицей данных при обработке ДДК является т. наз. тетрада, представляющая собой 4 последовательных бита. Для компенсации искажений, возникающих при сложении ДДК, формируют операнд, каждая цифра которого имеет избыток, равный 6. В таком случае:

z[i]=x[i]+y[i]+P[i]

Если при обработке i-того разряда десятичного кода при сложении i-того разряда первого операнда, i-того разряда второго операнда и входного переноса в i-тый разряд, значение превышает 10, то в i-том разряде остается

z[i]=x[i]+y[i]+P[i]-10

P[i+1]=1

Формируется сигнал переноса в следующий разряд. Поэтому при сложении операндов с избытком в (х6) получаем:

zt=x6+Y

В таком случае в i-том разряде zt будет такое значение:

тогда zt$16. В таком случае в i-том разряде zr будет:

zr[i]=6+x[i]+y[i]+P[i]-16=x[i]+y[i]+P[i]-10=z[i]

P[i+1]=1 –перенос в следующий разряд

При получении псевдосуммы zt обнаруживается ситуация, когда разряды (тетрады), из которых был перенос в старший разряд, содержат правильное значение цифры этого разряда. Разряды, из которых не было переносов в старший разряд, содержат цифру с избытком, равным 6. Поэтому полученное значение требует корректировки. Она может быть проведена путем вычитания из разрядов, из которых не было переносов, значения 6. На практике, вместо вычитания к этим разрядам добавляют значение равное 10 и блокируют межтетрадные переносы:

Упрощенная схема АЛУ

1. РгВ принимает первый операнд, затем в РгА формируют числосо значением 6 в каждой тетраде.

2. В РгСм формируется код первого операнда с избытком 6, который принимается в РгВ.

3. В РгА принимается второй операнд. Сумматор формирует значение zr=x6+y. При этом тетрады, из которых не возникли сигналы переноса, фиксируются.

4. В ргА формируется операнд, в тетрадах которого размещено число 10, если в соответствующих тетрадах zr не возникал сигнал переноса. zr из РгСм передается в РгВ.

5. Корректировка zr путем добавления операнда с 10 в РгА с блокировкой межтетрадных переносов. Полученный результат передается на выходную шину данных.

Для вычитания ДДК производятся такие действия:

1. Второй операнд Yпреобразуют в обратный код инвертированием каждого бита, при этом получается обратный код с избытком 6, т.к. каждая тетрада является дополнением до 15.

2. Выполняется суммирование . Если из старшей тетрады zr при формировании был перенос, то получено положительное значение результата. Если переноса не было из старшей тетрады, то результат является отрицательным в дополнительном коде. При этом дополнительный код инвертируется и добавляется 1 к младшему разряду. Полученное значение требует корректировки. Если при получении zr из тетрады был перенос, то в последствии к этой тетраде надо добавить 10 с блокировкой межтетрадных переносов.

3. Опции с ДДК со знаками сводятся к определению реальных опций, которые затем выполняются по приведенным схемам.

<== предыдущая лекция | следующая лекция ==>
Арифметико - логические устройства | Деление ДДК
Поделиться с друзьями:


Дата добавления: 2013-12-12; Просмотров: 746; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.013 сек.