ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 24.12.2021
Просмотров: 6842
Скачиваний: 22
260
Тим самим доволі просто вдалося в два рази скоротити критичний шлях формування переносу. Цей же підхід можна використати повторно і для прискорення роботи n/2-роз-рядних суматорів, як це показано на рис. 7.21 і т. д.
Часто в комп'ютерах використовується пристрій для накопичення двійкових чисел, тобто для послідовного багатомісного додавання N чисел (рис. 7.22). В такому операційному пристрої є вхідний Рг1 та вихідний Рг2 регістри, а також суматор, причому один з входів суматора з'єднаний з виходом вихідного Рг2 регістра. Для забезпечення коректної роботи пристрою розрядність суматора повинна бути розширеною в сторону старших розрядів на ]log2N[ бітів.
Для прискорення накопичення чисел використовують запам'ятовування не тільки сум з виходу суматора, а й переносів (так звані суматори з запам'ятовуванням переносів). В цьому випадку такт роботи пристрою в режимі накопичення чисел буде визначатися затримкою лише однорозрядного суматора.
Важливим питанням при побудові пристроїв додавання є фіксація переповнення. Для цього аналізується перенос із останнього розряду та знаки операндів. Для спрощення аналізу наявності переповнення використовуються так звані модифіковані коди з двома знаковими розрядами (0-00, 1-11). Незбіжність цих розрядів говорить про наявність переповнення.
Потрібно зауважити, що зазвичай для виконання віднімання використовується додавання, перед яким від'ємник перетворюється в обернений або доповняльний код. Пряме віднімання використовується рідко. Якщо ж така потреба є, то взамін суматора
267
використовується віднімач, правила побудови якого не відрізняються від правил побудови суматора, а для синтезу однорозрядного віднімана використовується залежність між входами та виходами відповідно до табл. 4.6. Якщо виконуються обидві операції - розробляється суматор-віднімач.
7.13.2. Пристрої множення двійкових чисел з фіксованою комою
Послідовне (багатотактове) множення базується на послідовному утворенні суми часткових добутків, використовуючи один або декілька суматорів, і реалізується шляхом послідовного виконання операцій додавання.
Як ми вже бачили в розділі 4, процес множення може починатися з молодших і старших розрядів множника. При цьому повну суму часткових добутків (тобто добуток) можна отримати двома шляхами:
" зсувом множеного на потрібну кількість розрядів і додаванням отриманого чергового часткового добутку до раніше накопиченої суми;
* зсувом суми раніше отриманих часткових добутків на кожному кроці на один розряд і наступним додаванням нерухомого множеного або 0 до зсунутої суми.
Таким чином, існує 4 методи множення двійкових чисел, на основі яких можна побудувати 4 алгоритми ітераційного виконання цієї операції та 4 базових структури багато-тактових АОП множення двійкових чисел:
" множення починаючи з молодших розрядів множника зі зсувом суми часткових добутків вправо;
■ множення починаючи з молодших розрядів множника зі зсувом множеного вліво;
■ множення починаючи
з старших розрядів множника зі зсувом
суми часткових
добутків вліво;
■ множення
починаючи з старших розрядів множника
зі зсувом множеного вправо.
Розглянемо
їх детальніше.
7.13.2.1. Багатотактовий пристрій множення двійкових чисел з молодших розрядів множника при нерухомому множеному з зсувом суми часткових добутків
Алгоритм множення двійкових чисел, який реалізує метод множення починаючи з молодших розрядів множника з зсувом суми часткових добутків вправо, описується наступним ітераційним виразом:
Тут вжито наступні позначення: X, Y, Z - множене, множник і добуток відповідно, Z. - сума часткових добутків на і-му етапі, Y(i) - і-й розряд множника, п - кількість розрядів операндів без врахування знакового розряду.
В кожному циклі множене додається до суми часткових добутків, якщо Yi=0, і не додається, якщо Y. = 0, після чого сума часткових добутків множиться на 2-1тобто зсувається на один розряд вправо. Після закінчення n-го циклу утворюється шуканий добуток, тобто Zn = Z = XY.
Алгоритм можна представити блок-схемою, показаною на рис. 7.23.
262
Приклад:
Необхідно помножити два числа (без знакового розряду):
Х = 0101 0101; Y = 01101011;
Хід операцій проілюстровано в табл. 7.3:
Таблиия 7.3
i |
Zi |
Y (Y(i)) |
X*Y(i) |
Zi+X*Y(i) |
zi+1 |
0 |
0000 0000 0000 0000 |
0110 1011 |
0101 0101 |
010101010000 0000 |
0010 1010 1000 0000 |
1 |
0010 1010 1000 0000 |
0110 1011 |
01010101 |
0111 1111 1000 0000 |
0011 1111 1100 0000 |
2 |
0011 1111 1100 0000 |
0110 1011 |
0000 0000 |
0011 1111 1100 0000 |
0001 1111 1110 0000 |
3 |
0001 1111 11100000 |
0110 1011 |
01010101 |
0111 0100 11100000 |
0011 1010 0111 0000 |
4 |
0011 101001110000 |
0110 1011 |
0000 0000 |
0011 10100111 0000 |
0001 1101 0011 1000 |
5 |
0001 1101 0011 1000 |
0110 1011 |
01010101 |
01110010 0011 1000 |
0011 10010001 1100 |
6 |
0011 10010001 1100 |
0110 1011 |
01010101 |
1000 1110 0001 1100 |
0100 01110000 1110 |
7 |
010001110000 1110 |
0110 1011 |
0000 0000 |
01000111 0000 1110 |
0010 0011 1000 0111 |
Таким чином 0101 0101 .01101011 =0010 0011 1000 0111.
Базова структура багатотактового АОП множення двійкових чисел за описаним методом наведена на рис. 7.24.
Тут СМЧД - суматор часткових добутків. Множник зберігається в регістрі множника, а множене - в регістрі множеного. Обидва ці регістри є n-розрядними. Суматор част-
263
кових добутків є накопичувальним суматором, тобто на його виході є регістр з оберненим зв'язком, як це показано на рис. 7.22. В кожному такті вміст цього регістра та регістра множника зсуваються на один розряд вправо в сторону молодших розрядів. Розряд в крайньому правому тригері регістра множника випадає, а на його місце поміщається наступний розряд множника, який керує операцією СМЧД, тобто вказує, чи є в даному такті додавання, чи його немає. При зсуві молодший розряд СМЧД може випадати, а може і зберігатися, залежно від того, якої розрядності потрібен результат - n-розрядний, чи 2п-розрядний. Завдяки тому, що в даній структурі регістри множеного і множника є n-розрядними, а не 2n-розрядними, як це є в базових структурах АОП множення іншими методами, перший метод множення використовується найчастіше.
7.13.2.2. Багатотактовий пристрій множення двійкових чисел з молодших розрядів при нерухомій сумі часткових добутків з зсувом множеного вліво
Алгоритм множення двійкових чисел, який реалізує цей метод, описується наступними ітераційними виразами:
Тут вжито наступні позначення: X, Y, Z - мгожене, множник і добуток відповідно, Zі - сума часткових добутків на і-му етапі, Y(i) - і-й розряд множника, п - кількість розрядів операндів без врахування знакового розряду.
Алгоритм можна представити блок-схемою, показаною на рис. 7.25.
Приклад:
Необхідно помножити два числа (без знакового розряду):
Х=0101 0101; Y=01101011.
Хід операцій проілюстровано в табл. 7.4.
264
Таблиця 7 A
і |
Zi |
Y (Y(0) |
X |
zi+i=zi+x*Y(i) |
0 |
0000 0000 0000 0000 |
0110 1011 |
0000 0000 0101 0101 |
0000 0000 0101 0101 |
1 |
0000 0000 0101 0101 |
0110 1011 |
0000 0000 1010 1010 |
0000 0000 1111 1111 |
2 |
0000 0000 11111111 |
0110 1011 |
0000 0001 0101 0100 |
0000 0000 1111 1111 |
3 |
0000 0000 11111111 |
0110 1011 |
0000 0010 1010 1000 |
0000 0011 10100111 |
4 |
0000 0011 10100111 |
0110 1011 |
0000 0101 0101 0000 |
0000 0011 10100111 |
5 |
0000 0011 10100111 |
0110 1011 |
0000 1010 1010 0000 |
0000 1110 0100 0111 |
6 |
0000 1110 0100 0111 |
0110 1011 |
00010101 0100 0000 |
00100011 10000111 |
7 |
0010 0011 1000 0111 |
0110 1011 |
0010 1010 1000 0000 |
00100011 10000111 |
Таким чином 0101 0101 .01101011 =0010 0011 1000 0111.
Базова структура багатотактового АОП множення двійкових чисел за описаним методом наведена на рис. 7.26.
Тут СМЧД - суматор часткових добутків. Множник зберігається в регістрі множника, а множене - в регістрі множеного. Перший з цих регістрів є n-розрядним, а другий . - 2n-розрядним. Суматор часткових добутків є накопичувальним суматором, тобто на його виході є регістр з оберненим зв'язком як це показано на рис. 7.22, який також є 2n-розрядним. Перед початком виконання операції множене знаходиться в правій частині регістра множеного. В кожному такті вміст регістра множеного зсувається на один розряд вліво в сторону старших розрядів, а вміст регістра множника в кожному такті зсувається на один розряд вправо в сторону молодших розрядів. Розряд в крайньому правому тригері регістра множника випадає, а на його місце поміщається наступний розряд множника, який керує операцією СМЧД, тобто вказує чи є в даному такті додавання, чи його немає. В порівнянні з попередньою структурою тут регістр множеного та СМЧД обов'язково мають бути 2n-розрядними.
7.13.2.3. Багатотактовий пристрій множення двійкових чисел з старших розрядів при нерухомій сумі часткових добутків з зсувом множеного вправо
Алгоритм множення двійкових чисел, який реалізує цей метод, описується наступними ітераційними виразами: