Реферат: Розробка управляючого і операційног вузлів ЕОМ
--PAGE_BREAK--Питома напруга і сигнали.Системи елементів характеризуються кількістю напруги, що використовуються, і її номінального значення.
Для логічних елементів вказується полярність і рівень вхідного та
вихідного сигналу.
Коефіцієнт з’єднання по входу.Визначає максимально можливе число входів логічних елементів. Збільшення числа входів пов’язане з ускладення схеми елементів і призводить до погіршення інших параметрів.
Коефіцієнт розгалуження по виходу.Показує, на скільки логічних входів може бути одночасно навантажений вихід даного логічного елементу.
Завадостійкість.Завадою називають небажану електричну дію (пульсація напруги живлення, дія паразитних ємностей) на логічний елемент, яка може призвести до спотворення даних. Завадостійкість – це здатність елемента правильно функціонувати при наявності завад; визначається максимально допустимою напругою завади, при якому не настає збій у його роботі.
Швидкодія.Характеризується середнім часом затримки розповсюдження сигналу: <img width=«96» height=«41» src=«ref-1_1963197269-239.coolpic» v:shapes="_x0000_i1042">, де tз1 і tз2 – затримка вихідного сигналу відносно фронту
і спаду вхідного.
2.7 Двійково-десятковий перетворювач
(Чу стр. 75 — 80)
Алгоритм двійково-десяткового перетворювача базується на способі ручного перетворення. Він перетворює 10-бітні цілі двійкові числа в десяткові, причому кожен десятковий розряд кодується десятковим числом. Використовуються такі регістри:
A(4 – 1) регістр розряду 100
B(4 – 1) регістр розряду 101
C(4 – 1) регістр розряду 102
D(0 – 3) лічильник
Q(1 – 12) регістр вихідного числа
T(0 – 2) регістр управління
K(0 – 4) = T декодер
Оператор cor:
X ¬cor X(4 – 1),
IF (X = 5, 6, 7, 8, 9) THEN (X ¬X add 3).
Перетворення відбувається в касрегістрі C – B – A.
<img width=«386» height=«416» src=«ref-1_1963197508-3015.coolpic» v:shapes="_x0000_s1112 _x0000_s1110 _x0000_s1113 _x0000_s1116 _x0000_s1120 _x0000_s1122 _x0000_s1125 _x0000_s1124 _x0000_s1128 _x0000_s1129 _x0000_s1118 _x0000_s1126 _x0000_s1121 _x0000_s1115 _x0000_s1114 _x0000_s1131 _x0000_s1111 _x0000_s1117 _x0000_s1119 _x0000_s1123 _x0000_s1127 _x0000_s1130">
На першому кроці касрегістр встановлюється в 0. Потім вміст касрегістру C – B – A – Q зсуваєтсья на один біт вліво, і тоді в регістр A попадає старший біт числа, що перетворюється. На кроці 3 перевіряєтсья чи потрібна корекція вмісту регістрів A, B, C, тобто чи не містить хоча б один з них числа,
що більше, ніж 4. Описані мікрооперації зсуву вліво і умовної корекції повторюються до тих пір, поки останній біт регістру Q не попаде в регістр A.
A ¬0, B ¬0, C ¬0, D ¬0, FINI ¬OFF, T ¬
C – B – A – Q ¬Shl C – B – A – Q, T ¬1
D ¬countdn D, T ¬2
IF (D = 0) THEN (T ¬4) ELSE (T ¬3),
A ¬cor A, B ¬cor B, C ¬cor C, T ¬
FINI ¬ON
Перетворення з десяткової системи у двійкову є складнішим.Тому ми не будемо його використовувати.
2.8 Структура і мікропрограми АЛП
для ділення чисел з фіксованою крапкою.
(Каган ст. 211, 213-219)
Ділення в ЕОМ звичайно зводиться до виконання послідовності віднімання дільника спочатку з діленого, а потім з утворюючихся в процесі ділення часткових залишків і зсуву часткових залишків.
Реалізувати ділення можна двома основними способами.
1. Ділення з нерухомим діленим і зсуваючим вправо дільником.
Цей спосіб ділення заснований на прямому копіюванні дій при ручному діленні. Структура АЛП для ділення має вигляд, який зображений на
малюнку 6-8, а.
<img width=«319» height=«387» src=«ref-1_1963200523-2566.coolpic» v:shapes="_x0000_s1135 _x0000_s1134 _x0000_s1136 _x0000_s1142 _x0000_s1144 _x0000_s1143 _x0000_s1150 _x0000_s1149 _x0000_s1148 _x0000_s1133 _x0000_s1132 _x0000_s1137 _x0000_s1138 _x0000_s1161 _x0000_s1153 _x0000_s1158 _x0000_s1141 _x0000_s1140 _x0000_s1139 _x0000_s1163 _x0000_s1162 _x0000_s1156"> <img width=«127» height=«175» src=«ref-1_1963203089-758.coolpic» v:shapes="_x0000_s1154 _x0000_s1157 _x0000_s1152 _x0000_s1147 _x0000_s1155 _x0000_s1151 _x0000_s1146 _x0000_s1159 _x0000_s1160 _x0000_s1145">
мал. 6-8 а) (Каган стр. 214)
Початкове ділене X заноситься в PгX, а дільник Y – в старші розряди Pг1Y. Дільник зсувається вправо шляхом косої передачі з Pг1Y в Pг2Y і прямої передачі з Pг2Y в Pг1Y. Віднімання дільника виконується підсумувуванням додаткового коду дільника. Цифри частки залишків, які визначають по знаку часткових залишків, фіксується в регістрі Pг1Z шляхом послідовного занесення їх в молодший розряд Pг1Z і зсуву вмісту Pг1Z з допомогою косої передачі в Pг2Z і прямої з Pг2Z в Pг1Z.
Недоліком такого АЛП є подвійна довжина суматора і його регістрів.
2. Ділення з нерухомим дільником і зсувом вліво діленого.
Цей спосіб дозволяє будувати АЛП з суматором одиночної довжини (малюнок 6-8, б).
<img width=«492» height=«299» src=«ref-1_1963203847-3162.coolpic» v:shapes="_x0000_s1173 _x0000_s1197 _x0000_s1196 _x0000_s1174 _x0000_s1175 _x0000_s1182 _x0000_s1177 _x0000_s1176 _x0000_s1193 _x0000_s1169 _x0000_s1167 _x0000_s1168 _x0000_s1166 _x0000_s1172 _x0000_s1192 _x0000_s1191 _x0000_s1199 _x0000_s1170 _x0000_s1171 _x0000_s1200 _x0000_s1165 _x0000_s1201 _x0000_s1198 _x0000_s1164 _x0000_s1187 _x0000_s1194 _x0000_s1190 _x0000_s1195 _x0000_s1186 _x0000_s1181 _x0000_s1180 _x0000_s1188 _x0000_s1189 _x0000_s1185 _x0000_s1179 _x0000_s1178 _x0000_s1184 _x0000_s1183">
малюнок 6-8, б (Каган стр. 214)
Тут нерухомий дільник Y зберігається в PгY, а ділене X, зсуваючись вліво відносно Y, знаходиться в двох регістрах: старші розряди X – в Pг1X,
а молодші – в Pг2X. Ділення починається з зсуву вліво діленого X шляхом косої передачі його в PгCm і Pг3X і відповідних прямих передач в Pг1X. Далі на вхід суматора подається зсунуте вліво ділене, утворюється частковий залишок шляхом підсумовуванням додаткового коду дільника, і наступна цифра частки заноситься в звільнений при зсуві X розряд Pг2X.
Арифметично-логічний пристрій розглянутого типу широко застосовується для ділення.
Алгоритм ділення з нерухомим дільником з відновленням залишку.
1. Берутся модулі від діленого і дільника.
2. Початкове значення часткового залишку покладається рівним старшим розрядам діленого.
3. Частковий залишок подвоюється шляхом зсуву на один розряд вліво.
При цьому в звільнений при зсуві молодший розряд часткового залишку заноситься наступна цифра діленого.
4. З зсунутого часткового залишку віднімається дільник і аналізується знак результату віднімання.
5. Наступна цифра модуля частки рівна 1, якщо результат віднімання додатній, і 0, якщо від’ємний. В останньому випадку значення остачі відновлюється до того, яке було до віднімання.
6. Пункти 3, 4 і 5 послідовно виконуються для одержання всіх цифр модуля частки.
7. Знак частки плюс, якщо знаки діленого і дільника однакові, в іншому випадку – мінус.
Розглянемо тепер більш детально ділення в АЛП з нерухомим дільником. Структурна схема АЛП дана на малюнку 6-9.
<img width=«550» height=«615» src=«ref-1_1963207009-6363.coolpic» v:shapes="_x0000_s1212 _x0000_s1213 _x0000_s1211 _x0000_s1217 _x0000_s1219 _x0000_s1218 _x0000_s1221 _x0000_s1235 _x0000_s1228 _x0000_s1227 _x0000_s1234 _x0000_s1245 _x0000_s1255 _x0000_s1244 _x0000_s1261 _x0000_s1262 _x0000_s1277 _x0000_s1274 _x0000_s1275 _x0000_s1260 _x0000_s1263 _x0000_s1270 _x0000_s1269 _x0000_s1268 _x0000_s1267 _x0000_s1273 _x0000_s1259 _x0000_s1254 _x0000_s1253 _x0000_s1252 _x0000_s1266 _x0000_s1250 _x0000_s1251 _x0000_s1248 _x0000_s1249 _x0000_s1241 _x0000_s1233 _x0000_s1232 _x0000_s1238 _x0000_s1210 _x0000_s1204 _x0000_s1203 _x0000_s1224 _x0000_s1215 _x0000_s1216 _x0000_s1214 _x0000_s1209 _x0000_s1208 _x0000_s1207 _x0000_s1206 _x0000_s1220 _x0000_s1225 _x0000_s1226 _x0000_s1231 _x0000_s1223 _x0000_s1222 _x0000_s1243 _x0000_s1230 _x0000_s1237 _x0000_s1236 _x0000_s1240 _x0000_s1239 _x0000_s1229 _x0000_s1265 _x0000_s1264 _x0000_s1271 _x0000_s1272 _x0000_s1281 _x0000_s1279 _x0000_s1280 _x0000_s1278 _x0000_s1283 _x0000_s1205 _x0000_s1202 _x0000_s1256 _x0000_s1257 _x0000_s1258 _x0000_s1247 _x0000_s1246 _x0000_s1276 _x0000_s1242 _x0000_s1282 _x0000_s1290 _x0000_s1286 _x0000_s1285 _x0000_s1296 _x0000_s1294 _x0000_s1295 _x0000_s1289 _x0000_s1284 _x0000_s1298 _x0000_s1304 _x0000_s1301 _x0000_s1302 _x0000_s1303 _x0000_s1305 _x0000_s1292 _x0000_s1291 _x0000_s1293 _x0000_s1288 _x0000_s1287 _x0000_s1299 _x0000_s1297 _x0000_s1300">
малюнок 6-9 (Каган стр. 215)
Схема містить: суматор Cm; вхідний регістр Pг1 для збереження дільника; вхідний регістр суматора PгA, в який поступає прямий або зворотній код дільника; вихідний регістр суматора PгCm, в якому утворюється частковий залишок; регістри діленого PгB (старші розряди) і Pг2 (молодші розряди); допоміжний регістр Pг2’ для зсуву діленого, тригери знаків діленого і дільника ТгЗн1 і ТгЗн2; лічильник циклів СчЦ для підрахунку числа одержаних цифр частки. Одержані в процесі ділення цифри частки заносяться в звільнені розряди Pг2’.
Мікропрограма ділення для випадку додатніх чисел приведена на
малюнку 6-10. Пояснемо процедуру відновлення остачі.
<img width=«98» height=«21» src=«ref-1_1963213372-164.coolpic» v:shapes="_x0000_s1306">
<img width=«521» height=«690» src=«ref-1_1963213536-5137.coolpic» v:shapes="_x0000_s1307 _x0000_s1308 _x0000_s1309 _x0000_s1310 _x0000_s1311 _x0000_s1312 _x0000_s1313 _x0000_s1314 _x0000_s1316 _x0000_s1315 _x0000_s1317 _x0000_s1319 _x0000_s1318 _x0000_s1320 _x0000_s1321 _x0000_s1322 _x0000_s1324 _x0000_s1327 _x0000_s1326 _x0000_s1325 _x0000_s1323 _x0000_s1328 _x0000_s1330 _x0000_s1335 _x0000_s1329 _x0000_s1334 _x0000_s1333 _x0000_s1338 _x0000_s1342 _x0000_s1341 _x0000_s1340 _x0000_s1339 _x0000_s1345 _x0000_s1344 _x0000_s1347 _x0000_s1350 _x0000_s1349 _x0000_s1351 _x0000_s1356 _x0000_s1360 _x0000_s1337 _x0000_s1336 _x0000_s1343 _x0000_s1348 _x0000_s1332 _x0000_s1331 _x0000_s1355 _x0000_s1358 _x0000_s1352 _x0000_s1357 _x0000_s1354 _x0000_s1353 _x0000_s1346 _x0000_s1359 _x0000_s1362 _x0000_s1361 _x0000_s1363">
малюнок 6-10 (Каган стр. 217)
Якщо віднімання дає від’ємний результат (См[0] = 1), то попередній частковий залишок, який зберігається в PгB, передається в PгCm, для чого попередньо обнулюється PгA. В PгCm прийом здійснюється з зсувом вліво на
1 розряд. Це забезпечує відновлення попереднього часткового залишку і зміщення його відносно дільника перед наступним відніманням.
Мікропрограма, яку ми розглядаємо, призначена для обробки додатніх чисел. А також її можна легко перетворити для обробки чисел з любими знаками,
які представленні в прямому коді. Для цього треба внести такі зміни:
після прийому операндів в PгB, Pг2 і Pг1 значення знакових розрядів X і Y передаються в тригер знака – відповідно ТгЗн1 і ТгЗн2. Потім в PгB [0] і Pг1 [0] заноситься 0, тобто виконується перехід до модулів X і Y. Розряд знаку частки встановлюється в 0 при ТгЗн1 = ТгЗн2 і в 1 в протилежному випадку.
Розглянутий метод ділення носить назву ділення з відновленням залишку.Недоліком цього методу є необхідність введення спеціального такту для відновлення залишку.
Звичайно в ЕОМ для ділення використовується другий метод – ділення без відновлення залишку.
Алгоритм ділення з нерухомим дільником без відновлення залишку.
Пункти 1-3 співпадають з алгоритмом ділення з відновленням залишку.
4. З зсунутого часткового залишку віднімається дільник, якщо залишок додатній, і до зсунутого часткового залишку додається дільник, якщо залишок від’ємний.
5. Наступна цифра модуля частки рівна 1, якщо результат віднімання додатній, і 0, якщо від’ємний.
Пункти 6, 7 співпадають з попереднім алгоритмом.
Можна показати, що часткові залишки після виконання додавання при діленні без відновлення залишку одержуються такі самі, як і залишки після зсуву відновленного залишку при діленні з відновленням залишку.
Дійсно, оскільки зсув часткового залишку на один розряд вліво є еквівалентом множення його на два, одержимо: 2*a – b = 2*(a – b) + b, (6-5),
де a – частковий залишок; b – дільник.
Аналогічно
2na = {…{[(a – b)*2 + b] + b}*2 + … + b}. (6-6)
Ділення без відновлення залишку завжди потребує для одержання одної цифри частки тільки додавання або віднімання з зсуву часткового залишку.
Мікропрограма ділення цілих додатніх чисел без відновлення залишку у своїй початковій частині співпадає з мікропрограмою ділення без відновлення залишку. Різниця з’являєтья після формування знаку частки. На малюнку 6-11 приведена частина мікропраграми ділення без відновлення залишку після мікрокоманди фіксації знаку частки.
<img width=«559» height=«559» src=«ref-1_1963218673-5158.coolpic» v:shapes="_x0000_s1365 _x0000_s1364 _x0000_s1370 _x0000_s1368 _x0000_s1367 _x0000_s1374 _x0000_s1372 _x0000_s1373 _x0000_s1371 _x0000_s1375 _x0000_s1376 _x0000_s1384 _x0000_s1383 _x0000_s1382 _x0000_s1381 _x0000_s1380 _x0000_s1379 _x0000_s1378 _x0000_s1377 _x0000_s1366 _x0000_s1388 _x0000_s1387 _x0000_s1385 _x0000_s1386 _x0000_s1395 _x0000_s1397 _x0000_s1392 _x0000_s1391 _x0000_s1396 _x0000_s1393 _x0000_s1394 _x0000_s1389 _x0000_s1390 _x0000_s1402 _x0000_s1401 _x0000_s1400 _x0000_s1399 _x0000_s1398 _x0000_s1406 _x0000_s1405 _x0000_s1408 _x0000_s1407 _x0000_s1412 _x0000_s1411 _x0000_s1369 _x0000_s1410 _x0000_s1409 _x0000_s1403 _x0000_s1404">
малюнок 6-11 (Каган стр. 219)
Блок-схема показує, що поки невизначені всі цифри частки (СчЦ <> 0),
в залежності від знаку часткового залишку або підсумовується Y (при См [0] = 1), або віднімається Y (при См [0] = 0). В одержаному новому частковому залишку аналізується знак і в ньому визначається цифра частки. Після завершення всіх циклів ділення (СчЦ = 0) видається реультат. При цьому якщо залишок від’ємний, то він відновлюється шляхом підсумуванням Y.
Ділення чисел, що представленні в залежності від знаку прямим доповнюючим кодом, можна зробити не переходячи до модулів. При цьому алгоритм ділення є подібним до розглянутих.
Відмінності заключаються в наступному (для випадку ділення без відновлення залишку):
1. Так як ділене і дільник можуть мати різні знаки, то дія з частковим залишком (додавання або віднімання Y) залежать від знаку залишку і дільника і визначаються таблицею 6-4.
таблиця 6-4 (Каган стр. 219)
Якщо знак залишку співпадає з знаком дільника, то zi = 1, інакше zi = 0.
2. Якщо X > 0 і Y < 0, то частку необхідно збільшити на одиницю.
Якщо X < 0 і Y > 0, то частку необхідно збільшити на одиницю у випадку залишку від ділення, яке не дорівнює нулю.
Якщо X < 0 і Y < 0, то частку необхідно збільшити на одиницю у випадку залишку від ділення, яка рівна нулю.
Ділення правильних дробів виконується так, як і ділення цілих.
Різниця заключається тільки у тому, що ділене має, як правило, таку ж довжину, як дільник. Але можна допустити, що ділене має ще n молодших розрядів, які рівні нулю. Тоді стає ясно, що алгоритм ділення дробів нічим не відрізняється від алгоритму ділення цілих.
2.8.1 Арифметичний пристрій з фіксованою крапкою (Чу стр. 130-135)
Арифетичний пристрій виконує арифметичні команди, що зберігаютьсяв пам’яті обчислювальної машини. У тому випадку, якщо цей пристрій додає і віднімає додаткові коди паралельно, тобто ми виконуємо арифметичні дії над всіма розрядами одночасно, то це є паралельний арифметичний пристрій.
В такому пристрої є схема паралельного суматора або паралельного віднімання.
Двійкові числа, що представляються знаковим бітом і двійковим модулем числа, в якому, між цілою і дробною частиною розміщені завжди на одному місці, називаються двійковими числами з фіксованою крапкою. Є два способи представлення таких чисел: модуль – ціле число, або модуль – простий дріб. Якщо кома розміщена між знаковим бітом і старшим бітом числа, то будь-яке число в такому форматі є дробовим. Якщо ж кома розміщена справа від молодшого біта значущої частини, то число є цілим.
<img width=«178» height=«55» src=«ref-1_1963223831-479.coolpic» v:shapes="_x0000_s1414 _x0000_s1413">
малюнок 4.1 (Чу стр. 131)
Представимо число у вигляді цілого. Це представлення має вид “знак + модуль”. Нуль в знаковому біті означає, що число додатнє, а одиниця – що воно від’ємне. Для числа, модуль якого дорівнює нулю, в знаковому біті завжди формуєтсья одиниця.
Будемо використовувати регістри AC – накопичуючий регістр,
MQ – регістр частки, SR – запам’ятовуючий регістр, SC – лічильник зсувів. Використовується схема паралельного суматора і регістр DVOV. AS, MQ, SR, складаються з двох частин: в одній зберігається знак, а в другій – модуль числа. Отже, ми використовуємо субрегістри для знаку AS(S), MQ(S), SR(S)
і субрегістри модуля AS(M), MQ(M), SR(M). Субрегістром називається частина регістру, сукупність бітів якої мають особливий зміст. Об’єднання декількох субрегістрів або регістрів при виконанні спеціальної операції в один регістр називається касрегістром.
Регістр DVOV сигналізує про стан переносу при діленні.
Ми не будемо його використовувати.
Структура:
AC(M) = AC(1 – 23),
SR(M) = SR(1 – 23),
MQ(M) = MQ(1- 23).
AC(S, R, Q, 1- 23),
SR(S, 1 — 23),
MQ(1 – 23),
SC(0 – 5),
C.
Паралельний суматор:
ADD(R, Q, 1 – 23) = ADSR(R, Q, 1 – 23) EXOR ADAC(R, Q, 1 – 23)
EXOR C(R, Q, 1 – 23),
C(R, Q, 1 – 22) = ADSR(Q, 1 – 23)*ADAC(Q, 1 – 23) + ADAC(Q, 1 – 23)
*C(Q, 1 – 23) + C(Q, 1 – 23) * ADSR(Q, 1 – 23), C(23) = 0.
Опис виводів Z:
Z(R, Q, 1 – 23) = 0 – 0 – AC(M) add2 0 – 0 – SR(M) – 0.
Опис оператора add2:
W(R, Q, 1 – 23) = X(R, Q, 1 – 23) add2 Y(R, Q, 1 – 24)
C(23) = Y(24),
C(R, Q, 1 – 22) = X(Q, 1 – 23)*Y(Q, 1 – 23) + Y(Q, 1 – 23)*C(Q, 1 – 23) + C(Q, 1 – 23)*X(Q, 1 – 23)
W(R, Q, 1 – 23) = X(R, Q, 1 – 23) EXOR Y(R, Q, 1 – 23) EXOR
C(R, Q, 1 – 23).
Тут в регістрі АС є біт АС(Q), який міститься між знаковим бітом і старшим бітом значущої частини регістру. В цьому біті міститься перенос з старшого біту значущої частини, який утворюється при додаванні або віднімані. Розряд АС(R) містить перенос з біту АС(Q).
В нашій схемі звичайно використовуються однобітні повні суматори,
що мають по три входи і два виходи. На схемі 4.3 i-ий біт першого
доданку – ADAC(i), j – біт другого доданку ADSR(i), i – ий біт переносу – C(i),
(i – 1) – й біт переносу C(i – 1) і i – ий біт суми – ADD(i), де i – номер розряду паралельного суматора.
<img width=«561» height=«192» src=«ref-1_1963224310-3503.coolpic» v:shapes="_x0000_s1429 _x0000_s1431 _x0000_s1428 _x0000_s1430 _x0000_s1436 _x0000_s1435 _x0000_s1440 _x0000_s1439 _x0000_s1438 _x0000_s1434 _x0000_s1433 _x0000_s1432 _x0000_s1437 _x0000_s1427 _x0000_s1426 _x0000_s1423 _x0000_s1417 _x0000_s1418 _x0000_s1419 _x0000_s1415 _x0000_s1425 _x0000_s1424 _x0000_s1422 _x0000_s1421 _x0000_s1416 _x0000_s1420">
малюнок 4.3 та 4.4 (Чу стр. 134)
На малюнку 4.4 входи ADAC(R, Q, 1 – 23) і ADSR(1 — 23) з’єднані з виходами регістрів АС(R, Q, 1 –23) і SR(1 – 23) відповідно. На входи ADSR(R, Q) сигнали з регістру SR звичайно не поступають. Замість цього при необхідності на цих шинах формуються константи 0 або 1. Вхід С(23) на якому повинен бути 0 є входом переносу для крайнього правого біту суматора. Входи
ADD(R, Q, 1 – 23) являють біти суми, а виходи С(R, Q, 1 – 23) – переноси для всіх 26 однобітних повних суматорів. Схема паралельного суматора зображена на малюнку 4.5.
<img width=«263» height=«31» src=«ref-1_1963227813-458.coolpic» v:shapes="_x0000_s1447 _x0000_s1444 _x0000_s1443 _x0000_s1454 _x0000_s1453 _x0000_s1450 _x0000_s1448"> <img width=«262» height=«31» src=«ref-1_1963228271-461.coolpic» v:shapes="_x0000_s1445 _x0000_s1446 _x0000_s1442 _x0000_s1456 _x0000_s1452 _x0000_s1451 _x0000_s1449"> <img width=«12» height=«2» src=«ref-1_1963228732-74.coolpic» v:shapes="_x0000_s1455"> <img width=«12» height=«2» src=«ref-1_1963228806-74.coolpic» v:shapes="_x0000_s1441">
малюнок 4.5 (Чу стр. 134)
В алгоритмі ділення виконується перевірка однієї з спеціальних вихідних шин паралельного суматора. Частина цих шин зв’язана з входами субрегістру АС(M),
а друга – з входами субрегістру SR(M). Це і є виводи Z.
Оператор add2 виконує додавання значущих частин двох 26 – бітних двійкових чисел; у цьому випадку вхідний перенос С(23) = 0. Його зручно використовувати також при додаванні додаткового коду від’ємника з зменшуваного (вілнімання); в такому випадку вхідний перенос С(23) = 1.
Таким чином, вхідний пернос розглядається як додатковий вхід паралельного суматора; потрібна модифікація додавання описується оператором add2.
2.8.1.1 Ділення (Чу стр. 144 – 148)
При діленні чисел, представлених у форматі з фіксованою комою ділене знаходиться в касрегістрі, який додається з регістрів АС і MQ, а дільник – в регістрі SR; частка поміщається в регістр MQ, а залишок – в регістр AC.
Дільник після виконання операції залишається в регістрі SR; ділене в касрегістрі губиться. Алгоритм ділення побудований на основі використання методу порівняння.Його зручно розділити на дві частини: ініціалізація (малюнок 4.11) і відповідно ділення (малюнок 4.12)
<img width=«376» height=«444» src=«ref-1_1963228880-2210.coolpic» v:shapes="_x0000_s1457 _x0000_s1458 _x0000_s1459 _x0000_s1462 _x0000_s1464 _x0000_s1461 _x0000_s1460 _x0000_s1463 _x0000_s1465 _x0000_s1467 _x0000_s1466 _x0000_s1471 _x0000_s1473 _x0000_s1472 _x0000_s1478 _x0000_s1477 _x0000_s1475 _x0000_s1474 _x0000_s1476 _x0000_s1470 _x0000_s1469 _x0000_s1468">
малюнок 4.11 (Чу стр. 144)
<img width=«396» height=«417» src=«ref-1_1963231090-2054.coolpic» v:shapes="_x0000_s1479 _x0000_s1480 _x0000_s1481 _x0000_s1482 _x0000_s1483 _x0000_s1484 _x0000_s1485 _x0000_s1489 _x0000_s1488 _x0000_s1487 _x0000_s1490 _x0000_s1486 _x0000_s1491 _x0000_s1493 _x0000_s1492 _x0000_s1494 _x0000_s1495 _x0000_s1496 _x0000_s1497 _x0000_s1498 _x0000_s1499">
малюнок 4.12 (Чу стр. 145)
При ініціалізації перевіряється чи не буде переповнення, і визначається знак частки. Переповнення при діленні визначається шляхом віднімання діленого з дільника (субрегістри AC(M) і SR(M)). При відніманні до дільника додають ділене з субрегістру AC(M) в оберненому коді. Якщо перевірка показує, що значення на шині суми Z(Q) = 0 то з цього слідує, що ділене з AC(M) більше або дорівнює дільнику з SR(M). При переповненні в регістр DVOV засилається одиниця, і процес ділення завершується. Якщо ж перевірка показує, що Z(Q) = 1, то процес ініціалізації продовжується і визначається знак частки. Знак частки записується як нуль, якщо знакові біти AC(S) і SR(S) співпадають; в іншому випадку в M(Q) засилається одиниця. Потім проводиться запуск процесу ділення.
При діленні значення часткового залишку в субрегістрі AC(M) зберігається в оберненому коді. Процес починається з засилки в регістр лічильника зсувів SC константи 2310. Далі вміст касрегістру AC(M) – MQ(M) зсувається вліво на один біт; одночасно біт MQ(1) інвертується і переміщується в біт AC(23) для того, щоб частковий залишок в субрегістрі AC(M) залишався в оберненому коді. Дільник з субрегістру SR(M) порівнюється з частковим залишком AC(M). Якщо порівняння показує, що Z(Q) = 0, то це означає, що частковий залишок з AC(M) більше дільника з SR(M) або дорівнює йому. В цьому випадку в біт MQ(23) засилається одиниця і одночасно дільник з SR(M) додається до часткового залишку з AC(M). Якщо ж Z(Q) = 1, то це означає, що дільник з SR(M) більше часткового залишку AC(M); у цьому випадку пересилка і додавання не відбуваються. Далі вміст лічильника зсувів SC зменшується на одиницю і перевіряється на нуль. Якщо вміст SC <> 0, то алгоритм продовжується до вичерпання SC. Далі частковий залишок в AC(M) перетворюється в вихідне представлення шляхом інвертування всіх бітів. На цьому процес ділення завершується.
Процедурний опис ділення:
Ділене = + 00001111 = + 1510,
Дільник = — 0011 = — 310,
Частка = — 0101 = — 510,
Залишок = + 0000 = 0.
AC(R, Q, M) ¬0 – 0 – AC(M)’;
IF (Z(Q) = 1) THEN (DVOV ¬1, GOTO C2);
IF (SR(S) = AC(S)) THEN (MQ(S) ¬0) ELSE (MQ(S) ¬1);
SC ¬35;
AC(M) – MQ(M) ¬AC(2 – 35) – MQ(1)’ – MQ(2 – 35) – 0;
IF (Z(Q) = 0) THEN (MQ(35) ¬1, AC(R, Q, M) ¬0 – 0 – AC(M) add2
0 – 0 SR(M) – 0;
SC ¬countdn SC;
IF (SC <> 0) THEN (GOTO C1);
AC(M) ¬AC(M)’
END
2.8.1.2 Мікропрограми арифметичного пристрою
(Чу стр. 177)
Розглянемо тепер відповідність між управляючими сигналами і мікроопераціями. Процес встановлення такої відповідності розпадається на три етапи. На першому етапі вибираються управляючі сигнали для ініціалізації роботи пристрою і запуску генераторів синхро- і управляючих сигналів. Ця група сигналів генерується незалежно від мікропрограми. На другому етапі проходить прив’язка мікрооперацій команд до одної або декількох мікрокоманд, а на третьому встановлюється зв’язок між кожною мікрооперацією, що зустрічається в мікропрограмі і управляючим сигналом для неї. По результатам виконання двох цих результатів будується мікропрограма.
Мікропрограма ділення також додається з чотирьох мікрокоманд: D1, D2, D3, D4. Мікрокоманда D1 пересилає адрес операнду з регістру K в адресний регістр AD і витягує операнд з основної пам’яті.D2 – ініціалізаація; D3 — ділення; D4 – завершення.
F ¬CM(H),
AD ¬K,
SR ¬M(AD),
H ¬countup H.
F ¬CM(H),
AC(R, Q, M) ¬0 – 0 AC(M)’,
IF Z(Q) <> 1) THEN (DVOV ¬1, BR(1) ¬1)
ELSE (BR(2) ¬1),
IF (BR(2) = 1) THEN (MQ(S) ¬SR(S) EXOR AC(S), SC ¬35),
IF(BR(1) = 1) THEN (H ¬F(ADS))
ELSE (H ¬countup H),
IF (BR(1) = 1) THEN (DO DSET),
BR ¬0.
F ¬CM(H),
SC ¬countdn SC,
AC(M) – MQ(M) ¬AC(2 – 35) MQ(1)’ – MQ(2 – 35) – 0,
IF (Z(Q) <> 1) THEN (MQ(35) ¬1,
AC(R, Q, M) ¬0 – 0 – AC(M) add2 0 – 0 SR(M) – 0),
IF (SC = 0) THEN (H ¬countup H).
F ¬CM(H),
AC(M) ¬AC(M)’,
H ¬F(ADS),
DO SET.
2.8.2 Послідовний арифметичний пристрій
(Чу стр. 223 –228)
Арифметичний пристрій здатний виконувати додавання, віднімання, множення і ділення. Ці арифметичні операції можуть виконуватись паралельно, послідовно або змішаним способом. Парлельний арифметичний пристій складує всі цифри двох чисел одночасно, в той час, як послідовний арифметичний пристрій може виконувати додаваннядвох чисел цифра за цифрою при допомозі простого суматора. Паралельний арифметичний пристрій виконує операції скорше, тоді як послідовний арифметичний пристрій дешевше.
Тут описуєтсья послідовні двійково-десяткові арифметичні пристрої. Послідовний двійково- арифметичний пристрій може виконувати додавання одного або декількох бітів одночасно. Для його реалізації потрібно однобітові
(або багатобітові) пристрої додавання-віднімання. Подібним чином пристрій десяткової арифметики може додавати одну або декілька десяткових цифр одночасно, і для його реалізації потрібно однорозрядні або багаторозрядні десяткові суматори. Двійково- арифметичний пристрій використовує однобітовий суматор-віднімач, а десятковий арифметичний пристрій використовує однорозрядний десятковий суматор-віднімач.
2.8.2.1 Представлення чисел
В розглянутому арифметичному пристрою число має довжину 24 біта. Від’ємні числа зображаються в доповнюючому коді. Формат числа показаний на малюнку 6.1. Двійкова кома розміщена між знаковим і старшим бітами; таким чином, число має дробову частину і зображено в двійковій формі.
Додатнє число зображається в вигляді знака і модуля:
<img width=«137» height=«45» src=«ref-1_1963233144-438.coolpic» v:shapes="_x0000_i1044">, де X – число, знак плю зображуєтсья нулем,
а xi – числові біти. Найбільш можливе число рівне 0, 11…1, або 20– 2-23.
Від’ємне число зображається в додатковому коді
<img width=«197» height=«48» src=«ref-1_1963233582-590.coolpic» v:shapes="_x0000_i1045"> (6.2)
Знак мінус зображується одиницею. Так як число в додатковому коді дорівнює сумі одиниць молодшого біта числа і числа в оберненому коді,
формулу (6.2) можна переписати в наступному вигляді:
<img width=«185» height=«48» src=«ref-1_1963234172-575.coolpic» v:shapes="_x0000_i1046"> (6.3)
і <img width=«68» height=«24» src=«ref-1_1963234747-161.coolpic» v:shapes="_x0000_i1047">, де <img width=«17» height=«24» src=«ref-1_1963234908-102.coolpic» v:shapes="_x0000_i1048"> — інверсія xi. Найменш можливе від’ємне число рівне
1, 00…0, або –1.
2.8.2.2 Повний суматор-віднімач
Повний однобітовий сумотор має вигляд логічної схеми з трьома входами і двома виходами. Нехай X, Y, і Wi, представляють собою доданок і вхід переносу відповідно, а виходи Z і W0– суму і результуючий перенос. Однобітовий суматор можна визначити за допомогою наступного опису виводів:
Z = X EXOR Y EXOR Wi, (6.4)
W0= X*Y + Y*Wi + Wi*X.
Однобітовий віднімач має вигляд логічної схеми с трьома входами і двома виходами. Нехай X, Y, Wi, Z і W0– входи і виходи схеми. Однобітовий віднімач можна визначити при допомозі наступного опису вивиодів:
Z = X EXOR Y EXOR Wi (6.5)
W0= X’*Y + Y*Wi + W*X’.
Як видно з привдених вище виразів, вихідний сигнал Z однаковий для обох оисів, хоча Wi в виразі (6.4) означає перенос, а в виразі (6.5) – позика. Вихід W0в двох випадках одинаковий, зи винятком лише того, що X в виразі (6.5) інвертується.
Описаний вище повний суматор і віднімач можна об’єднати в одну схему. Нехай однобітовий регістр N вказує на додавання, якщо його вміст рівний 1, і на віднімання, якщо його вміст рівний 0. Однобітовий суматор можна визначити при допомозі наступного опису виводів:
Z = X EXOR Y EXOR Wi, (6.6)
W0 = (N COIN X)*Y + (N COIN X)*Wi + Y*Wi.
Якщо вміст регістру N дорівнює 1, то вираз (6.6) спіпадає з вираом (6.4); якщо цей вміст дорівнює 0, то з виразом (6.5). Однобітовий суматор-віднімач, описаний виразом (6.6), буде використаний для побудови двійкового послідовного арифметичного пристрою.
2.8.2.3 Структура
Регістр А є накопичуючим регістром, регістр Q – регістр множника-частки, регістр R – регістр операнда, який використовується також в якості буферного регістра пам’яті. Арифметичні операції виконуються в цих трьох регістрах, які сумісно використовуються з суматором-віднімачем.
<img width=«454» height=«449» src=«ref-1_1963235010-3966.coolpic» v:shapes="_x0000_s1507 _x0000_s1508 _x0000_s1512 _x0000_s1509 _x0000_s1522 _x0000_s1521 _x0000_s1517 _x0000_s1520 _x0000_s1519 _x0000_s1526 _x0000_s1528 _x0000_s1530 _x0000_s1518 _x0000_s1511 _x0000_s1516 _x0000_s1501 _x0000_s1529 _x0000_s1500 _x0000_s1531 _x0000_s1510 _x0000_s1515 _x0000_s1524 _x0000_s1506 _x0000_s1505 _x0000_s1504 _x0000_s1503 _x0000_s1502 _x0000_s1514 _x0000_s1513 _x0000_s1536 _x0000_s1537 _x0000_s1543 _x0000_s1549 _x0000_s1548 _x0000_s1551 _x0000_s1550 _x0000_s1523 _x0000_s1547 _x0000_s1546 _x0000_s1545 _x0000_s1542 _x0000_s1538 _x0000_s1544 _x0000_s1541 _x0000_s1534 _x0000_s1533 _x0000_s1532 _x0000_s1527 _x0000_s1525 _x0000_s1535 _x0000_s1540 _x0000_s1539">
<img width=«70» height=«51» src=«ref-1_1963238976-245.coolpic» v:shapes="_x0000_s1553 _x0000_s1552"> <img width=«61» height=«51» src=«ref-1_1963239221-230.coolpic» v:shapes="_x0000_s1554 _x0000_s1555"> <img width=«80» height=«41» src=«ref-1_1963239451-264.coolpic» v:shapes="_x0000_s1556 _x0000_s1557"> <img width=«69» height=«51» src=«ref-1_1963239715-247.coolpic» v:shapes="_x0000_s1560 _x0000_s1559"> <img width=«61» height=«51» src=«ref-1_1963239962-222.coolpic» v:shapes="_x0000_s1561 _x0000_s1558"> <img width=«80» height=«41» src=«ref-1_1963240184-263.coolpic» v:shapes="_x0000_s1562 _x0000_s1563"> <img width=«80» height=«42» src=«ref-1_1963240447-252.coolpic» v:shapes="_x0000_s1565 _x0000_s1566"> <img width=«61» height=«51» src=«ref-1_1963240699-222.coolpic» v:shapes="_x0000_s1567 _x0000_s1564">
малюнок 6.2 Чу стр. 226
R(0 – 23),
A(0 – 23),
Q(0 – 23),
BC(4 – 0),
WC(4 – 0),
E,
C,
AV,
DV,
N,
SUM,
DIF,
DSTEST,
OV,
SA,
SR,
AQE(0 – 48) = A – Q – E,
AQ(0 – 47) = A – Q.
Z = R(23) EXOR A(23) EXOR C,
W = (N COIN A(23))*R(23) + (N COIN A(23))*C + R(23)*C,
AVTEST = N*SA’*SR’*C + N*SA*SR*C’ + N’*SA’*SR*C’ + N’*SA*SR’*C,
DVSTOP = N’*A(0)’*R(0)’*SA*E’ + N’*A(0)*R(0)*SA’ + N*A(0)’*R(0)*
SA*E’ + N*A(0)*R(0)’*SA’.
2.8.3 Ділення двійкових чисел
Ділення двійкових чисел виконується по алгоритму ділення без відновлення залишку, розробленим Берксом, Голдстайном і фон Нейманом.
Нехай X і Y – ділене і дільник відповідно. Частковий залишок віднімається з допомогою рівняння <img width=«135» height=«23» src=«ref-1_1963240921-353.coolpic» v:shapes="_x0000_i1049">. При цьому, якщо знак залишку ri-1 (а не ri) і дільники однакові, біт частки qi равен 1 і частичний залишок утворюється відніманням діленого Y з 2ri – 1. Якщо знаки різні, біт частки qi дорінює 0,
і частковий залишок одержується додаванням дільника Y з 2ri – 1. Частка Q утворюється з бітів qi з відповідністю з наступним правилом:
<img width=«172» height=«45» src=«ref-1_1963241274-570.coolpic» v:shapes="_x0000_i1050">, де (-1 + 2-n) – член корекція, який додається до бітів частки. (Це поянює, чому qi називається бітом псевдочастки).
Початковий залишок дорівнює діленому X. Перевірка знаків залишку ri – 1 і дільника Y, формування біта залишку qi і частки Q, утворення нового залишку,
а також збільшеня і перевірка індекса i входять в склад циклу. Після виходу з циклу к частному Q добавляєтсья коректуючий член і утворюється правильна частка.
2.8.3.1 Умова припинення ділення
Якщо дільник малий порівняно з діленим, частка може показатися дуже великим і не поміститися в регістрі Q. В випадку виникнення такої ситуації, називається переповненням при діленні, частка буде неправильне, і ділення необхідно зупинити.
Раніше було прийнято, що ділене і дільник – дробові числа. Бажано, щоб і частка була дробовим числом, звідки слідує, що ділене повинно бути меншим дільника. Це і є критерій, який дозволяє сформувати умови припинення ділення.
Є чотири випадки, при яких виникає необхідність зупинки ділення.
2.8.3.2 Блок-схема алгоритма
Блок-схема послідовності перевірки переповнення зображена на
малюнку 6.11.
<img width=«386» height=«544» src=«ref-1_1963241844-3157.coolpic» v:shapes="_x0000_s1572 _x0000_s1571 _x0000_s1570 _x0000_s1569 _x0000_s1575 _x0000_s1574 _x0000_s1573 _x0000_s1577 _x0000_s1578 _x0000_s1582 _x0000_s1581 _x0000_s1580 _x0000_s1579 _x0000_s1568 _x0000_s1576 _x0000_s1590 _x0000_s1587 _x0000_s1583 _x0000_s1589 _x0000_s1584 _x0000_s1592 _x0000_s1593 _x0000_s1586 _x0000_s1585 _x0000_s1588 _x0000_s1591 _x0000_s1594 _x0000_s1595 _x0000_s1596 _x0000_s1597 _x0000_s1599 _x0000_s1598 _x0000_s1600 _x0000_s1602 _x0000_s1603 _x0000_s1601 _x0000_s1605 _x0000_s1606 _x0000_s1608 _x0000_s1604 _x0000_s1609 _x0000_s1610 _x0000_s1611 _x0000_s1612 _x0000_s1607">
малюнок 6.11 Чу стр. 243
Як видно з цієї блок-схеми, алгоритм знаходиться в циклі очікування, неперервно провіряючи стан регістра DSTEST. Коли вміст регістра DSTEST стає рівним 1, починається виконання основної частини алгоритма. Регістри BC, C і E скидуються в 0, регістр N встановлюється в 1 (при додаванні) або скидується в 0 (при відніманні). Потім починається цикл послідовного додавання (або віднімання). Під час циклу додавання (або віднімання) біт переноса (або позики) запам’ятовується в регістрі C, але біт суми (різниці) ігнорується, так як він не використовується, за винятком випадку переносу з самого лівого біта, який запам’ятовується в регістрі SA. Вміст регістра SA використовуєтсья оператором DVSTOP. Крім цього, під час додавання (віднімання) в регістрі E запам’ятовується результат логічної операції OR над бітом суми (або різниці) і E; тому якщо вміст регістра Е; тому якщо вміст регістра E дорівнює 0, то це означає, що модуль суми (різниці) дорівнює 0. Цикл виконуєтсья 24 рази. Після виходу з циклу перевіряється DVSTOP. Якщо виникло переповнення, регістр DV встановлюється
в 1. На цьому виконання алгоритму закінчується, і регістр DSTEST встановлються в 0, щоб забезпечити повернення до алгоритму ділення.
Після повернення з перевірки регістра DV починається послідовність ділення. Якщо вміст цього регістру дорівнює 1, виконання ділення припиняється.
В протилежному випадку починається цикл ділення. В цьому циклі виконується шість мікрооперацій, а саме встановлення біта Q(23) в 1 або 0, зсув вмісту касрегістра AQ вліво, звернення до послідовності SUM – DIF, скидання регістра OV в 0, а також збільшення лічильника WC і його перевірка. Якщо вміст регістра WC не дорівнює 23, цикл повторюється. Вихід з циклу здійснюється при WC, рівним 23. Тоді вміст регістру Q зсувається вліво на 1 біт, а частка коректується. Корекція додається в інвертуванні біта Q(0) і встановленні біта Q(23) в 1. На цьому виконання послідовності ділення закінчується.
2.8.4 Алгоритм десяткового ділення
Десяткове ділення засновано на використанні алгоритма ділення з відновленням залишку. Початкове ділення знаходиться в масиві регістрів R,
а 16-розрядне ділене – в касрегістрі AQ. Після виконання операції ділення частка розміщується в масиві регістрів Q, а залишок – в масиві регістрів A; ділене губиться. Переповнення індикується вмістом регістру DV.
На малюнку 6.20 і 6.21 приведені блок-схеми алгоритма ділення десяткових чисел.
<img width=«444» height=«681» src=«ref-1_1963245001-4547.coolpic» v:shapes="_x0000_s1614 _x0000_s1615 _x0000_s1618 _x0000_s1620 _x0000_s1617 _x0000_s1619 _x0000_s1622 _x0000_s1616 _x0000_s1621 _x0000_s1626 _x0000_s1627 _x0000_s1625 _x0000_s1624 _x0000_s1623 _x0000_s1628 _x0000_s1629 _x0000_s1633 _x0000_s1632 _x0000_s1640 _x0000_s1634 _x0000_s1635 _x0000_s1639 _x0000_s1638 _x0000_s1652 _x0000_s1646 _x0000_s1644 _x0000_s1641 _x0000_s1650 _x0000_s1649 _x0000_s1643 _x0000_s1642 _x0000_s1648 _x0000_s1645 _x0000_s1651 _x0000_s1647 _x0000_s1637 _x0000_s1636 _x0000_s1653 _x0000_s1654 _x0000_s1658 _x0000_s1655 _x0000_s1657 _x0000_s1656 _x0000_s1661 _x0000_s1660 _x0000_s1659 _x0000_s1662 _x0000_s1663 _x0000_s1667 _x0000_s1665 _x0000_s1669 _x0000_s1670 _x0000_s1673 _x0000_s1668 _x0000_s1674 _x0000_s1677 _x0000_s1676 _x0000_s1664 _x0000_s1672 _x0000_s1671 _x0000_s1666 _x0000_s1630 _x0000_s1631 _x0000_s1675 _x0000_s1613">
малюнок 6.20 Чу стр. 265
<img width=«333» height=«428» src=«ref-1_1963249548-2347.coolpic» v:shapes="_x0000_s1679 _x0000_s1680 _x0000_s1682 _x0000_s1685 _x0000_s1686 _x0000_s1687 _x0000_s1691 _x0000_s1690 _x0000_s1689 _x0000_s1688 _x0000_s1694 _x0000_s1693 _x0000_s1692 _x0000_s1678 _x0000_s1681 _x0000_s1684 _x0000_s1683 _x0000_s1696 _x0000_s1699 _x0000_s1695 _x0000_s1697 _x0000_s1698 _x0000_s1701 _x0000_s1702 _x0000_s1705 _x0000_s1704 _x0000_s1703 _x0000_s1706 _x0000_s1709 _x0000_s1708 _x0000_s1707 _x0000_s1711 _x0000_s1710 _x0000_s1712 _x0000_s1713 _x0000_s1714 _x0000_s1700 _x0000_s1715">
малюнок 6.21 Чу стр. 266
Додовання і віднімання, які використовуються цим алгоритмом, виконуються підпослідовністю SUM – DIF, а перевірка переповнення – з допомогою підпослідовності DSTEST. З малюнку 6.20 видно, що ділення починається з скидання регістру WC в 0 і звернення до підпослідовності DSTEST з цілью перевірки можливості переповнення при діленні. Підпослідовніст DSTEST, зображена в виді блок-схеми на малюнку 6.21, в свою чергу починається з звернення до підпослідовності SUM – DIF; останні здійснює віднімання дільника, який знаходиться в масиві регістрів R, з старшої частини діленого, який знаходиться в масиві регістрів A. Різниця залишається в масиві регістрів A.
Потім виконується перевірка, яка дозволяє встановити, чи не містить регістр OV позики. Якщо регістр OV містить 0, значить місце переповнення при діленні немає, і ділене відновлюється шляхом звернення до підпослідовності SUM – DIF, здійснюється додавання дільника з масива регістрів R і різниці масива регістрів A. В цей момент виконання підпослідовності DSTEST закінчується скидуванням регістра DSTEST в 0.
Після повернення з підпослідовності DSTEST до підпослідовності ділення виконується перевірка регістра DV на рівність 1. Випадок рівності DV одиниці вказує на переповнення при діленні, що викликає припинення операції ділення. Якщо ж в індикаторі переповнення DV міститься нуль, ділення продовжується. Так як успішний вихід перевірки умови переповнення при діленні означає, що вміст масива регістрів A менше дільника, який знаходиться в масиві регістрів R, ділене в масиві регістрів A множиться на 10 шляхом зсуву на одну десяткову цифру вліво.
Як видно з малюнка 6.20, в алгоритмі є два цикла – внутрішній і зовнішній. Внутрішній цикл починаєтсья з встановлення лічильника DVC в 0. Потім починається внутрішній цикл додавання-віднімання. В внутрішньому циклі виконується звертання до підпослідовності SUM –DIF, яка здійснює додавання або віднімання, а також перевірки виникнення позики при відніманні.Якщо позики немає, лічильник DVC збільшується на 1, і керування передається до початку внутрішнього циклу. Цикл віднімання повторюється до тих пір, поки не виникне позика, на чому виконання циклу закінчується. Наявність позики означає, що вміст лічильника DVC є цифра частки; значення вмісту DVC пересилається в субрегістр Q(,8). Лічильник WC збільшується на 1, після чого його нове значення порівнюється з константою 8. Якщо вміст WC дорівнює 8, касрегістр A зсувається вліво на одну десяткову цифру, і управління передається до початку зовнішнього циклу. Зовнішній цикл повторяється до тих пір, поки лічильник WC на стане рівним 8. В цей момент визначаються знаки частки і залишку, які поміщаються в регістри SA і SQ відповідно. На цьому виконання операції ділення закінчується.
2.9 КМОН
З багатьох серій цифрових мікросхем на польових транисторах найбільше використання одержали серії мікросхем КМОП.
Скорочено КМОП – це початкові букви чотирьох слів з повного визначення: комплементарні польові транзистори з структурою металл – окисел – напівпровідник. Слово комплементарний переводиться як взаємно доповнюючий. Так називаються пару транзисторів, які подібні по абсолютним значенням параметрів, але з напівпровідниковими структурами, взаємно відображені як би в вигляді негатива і позитива. В біполярній схемотехніці – це транзистори n-p-n і p-n-p, в польовій p-канальні і n-канальні. Тут p – перша буква від слова positive,
n – negative.
Цікаво, що на перших етапах розвитку біполярних цифрових мікросхем пророкували широке розповсюдження комплементарних біполярних логічних елементів на n-p-n і p-n-p транзисторах. Для прикладу, якщо в ТТЛ вдалось би замінити вихідний каскад на двохтактний комплементарний, принципово збільшилась би економічність елемента. Але біполярна комплементарна транзисторна логіка не прижилась через труднощі виготовлення на кристалі великої кількості компактних по площині і високоякісних по параметрах інтегральних p-n-p транзисторів.
Нагадаємо, що в аналоговій схемотехніці, де p-n-p транзистори просто необхідні як для спрощення схемотехніки, так і для покращення властивостів підсилювачів, проблема створення добрих p-n-p транзисторів для технологів все ж таки існує. Тому реально біполярні мікросхеми ТТЛмають на виході так називаємі квазікомплементарний каскад. На кристалі роблять тільки n-p-n транзистори. Ця компромісна схема елемента ТТЛ вийшла оптимальною і перспектвною на багато десятеліть.
Перші спроби випускати серії простих польових елементів, подібний по схемі з РТЛ, до успіху не привели. Логічні елементи виходили малошвидкодіючі, оскільки внутрішній опір канала у польового транзистора на порядок більше,
чим опір між колектором і емітером насиченого біполярного транзистора. Однополярні мікросхеми МОП не відрізнялись успіхом ні перешкодостійкістю,
ні малою потребуючою силою. Добрі результати дало використання двополярного інвертора, який побудований на комплементарній польовій парі.
Тепер можна конкретно вибрати необхідні елементи КМОН для реалізації даної схеми, хоча при проектуванні постійно перевірялася можливість втілення схем за допомогою стандартних мікросхем серій КМОН.
2.10 Мікросхеми
Отже:
— як D-тригери беремо мікросхему К176ТМ2
<img width=«182» height=«187» src=«ref-1_1963251895-1115.coolpic» v:shapes="_x0000_s1825 _x0000_s1826 _x0000_s1827 _x0000_s1828 _x0000_s1829 _x0000_s1830 _x0000_s1831 _x0000_s1832 _x0000_s1833 _x0000_s1834 _x0000_s1835 _x0000_s1836 _x0000_s1837 _x0000_s1838 _x0000_s1839 _x0000_s1840 _x0000_s1841 _x0000_s1842 _x0000_s1843 _x0000_s1844">
Ця мікросхема містить два D-тригера і є корисна тим, що має інверсні виходи, а також має входи скидання (Reset).
Довжина тактового імпульсу не повинна бути меншою 100 нс.
Час встановлення виходів – не менше 25 нс.
Логічні мікросхеми також легко підібрати.
К561ЛА7 К561ЛА8 К561ЛА9 К561ЛИ2
<img width=«40» height=«127» src=«ref-1_1963253010-303.coolpic» v:shapes="_x0000_s1845 _x0000_s1846 _x0000_s1847 _x0000_s1848"> <img width=«59» height=«140» src=«ref-1_1963253313-371.coolpic» v:shapes="_x0000_s1849 _x0000_s1850"> <img width=«50» height=«152» src=«ref-1_1963253684-363.coolpic» v:shapes="_x0000_s1851 _x0000_s1852 _x0000_s1853"> <img width=«40» height=«145» src=«ref-1_1963254047-322.coolpic» v:shapes="_x0000_s1854 _x0000_s1855 _x0000_s1856 _x0000_s1857 _x0000_s1858 _x0000_s1859">
Хоча мікросхеми серії К561 і підтримують напругу живлення до 15 Вольт (чим більша напруга, тим більша швидкодія) але ми змушені використовувати мікросхеми старішої серії К176, максимальна напруга живлення яких – 9 Вольт. Тому напруга живлення всього автомата не повинна перевищувати 9 Вольт,
а в ідеальному випадку бути рівною цьому значенню.
3. Розробка графу
Будується на основі автомату Мура, що використовує алгоритм двійкового ділення (паралельний пристрій). Хоча за умовою я повинна розробити пристрій для ділення десяткових чисел, але, враховуючи, що блок-схема десяткового ділення складніша у два рази (Каган) та маючи КМОН, яка є повільною, я буду використовувати двійковий алгоритм (Чу, 23) та шифратори і дешифратори. Модифікований алгоритм приведе до такого графа:
CM – дозвіл
___
CM – логічна операція множення
X0: SR(M) <= AC(M)
X1: SR(S) = AC(S)
X2: SC = 23
Стани в автоматі Мура відповідають таким мікрокомандам:
Z0: SM ¬1
Z1: AC(M) ¬– AC(M)’
Z2: MQ(S) ¬
Z3: MQ(S) ¬1
Z4: SC ¬
Z5: AC(M) – MQ(M) ¬AC(1 – 22) – MQ(23)’ – MQ(1 – 22)
Z6: MQ(22) ¬1
AC(M) ¬AC(M) add SR(M)
Z7: SC ¬countup SC
Z8: AC(M) ¬AC(M)’
В цифровому автоматі Мура в якості запам’ятовуючих елементів використовується двохтактні тригери, що дає можливість уникнути ефекту гонок. Виберемо D – тригери.
<img width=«45» height=«171» src=«ref-1_1963254369-546.coolpic» v:shapes="_x0000_s1716 _x0000_s1767 _x0000_s1768 _x0000_s1775 _x0000_s1777">
<img width=«45» height=«366» src=«ref-1_1963254915-942.coolpic» v:shapes="_x0000_s1769 _x0000_s1770 _x0000_s1771 _x0000_s1772 _x0000_s1773 _x0000_s1774 _x0000_s1778 _x0000_s1779 _x0000_s1780 _x0000_s1781 _x0000_s1782"> продолжение
--PAGE_BREAK--
еще рефераты
Еще работы по коммуникациям
Реферат по коммуникациям
Корреляционный обнаружитель одиночных сигналов известной формы
1 Сентября 2013
Реферат по коммуникациям
Микропроцессоры и основные понятия
1 Сентября 2013
Реферат по коммуникациям
Аналоговые системы мини АТС
1 Сентября 2013
Реферат по коммуникациям
Акустичний мікшерний пульт
1 Сентября 2013