|
Курсовая: Разработка процессора с плавающей точкой
Регистр микрокоманд
Рис.6.10. Структурная схема БМУ.
VII. Моделирование операций.
1.) Постановка задачи.
Написать программу деления двух чисел в формате 80real на эмуляторе MICRO.
2.) Разработка схемы алгоритма.
1
0
0 1
0
1
3.) Распределение регистров.
AX – Хранит мантиссу делимого.
BX – Старший бит хранит знак делимого, а остальные 15 бит хранят
порядок делимого в смещённой форме.
CX – Хранит мантиссу делителя.
DX – Старший бит хранит знак делителя, а остальные 15 бит хранят порядок
делителя в смещённой форме.
SP – Предназначен для хранения мантиссы частного.
BP – Предназначен для хранения знака и порядка частного. Старший бит – знак,
а остальные 15 бит – порядок в смещённой форме.
SI – Хранит маску: 8000h.
DI – Временный (вспомогательный) регистр.
CS – Временный (вспомогательный) регистр.
4.) Микропрограмма заданного алгоритма (с комментариями).
МК | a | b | ma | mb | mem | src | sh | alu | ccx | f | dst | wm | jfi | cc | cha | const | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 6 | 0 | 1 | 0 | 0 | 2 | 1 | 3 | 001C | 1 | 6 | 7 | 0 | 0 | 0 | 1 | 0 | 6 | 0 | 0 | 4 | 0 | 0 | 0 | 7 | 0000 | 2 | 3 | 7 | 0 | 0 | 0 | 1 | 0 | 9 | 0 | 0 | 4 | 0 | 0 | 0 | 7 | 0000 | 3 | 7 | 5 | 0 | 0 | 0 | 1 | 0 | 6 | 0 | 0 | 4 | 0 | 0 | 0 | 7 | 0000 | 4 | 6 | 7 | 0 | 0 | 0 | 1 | 0 | 6 | 0 | 0 | 4 | 0 | 0 | 0 | 7 | 0000 | 5 | 2 | 7 | 0 | 0 | 0 | 1 | 0 | 9 | 0 | 0 | 4 | 0 | 0 | 0 | 7 | 0000 | 6 | 7 | 5 | 0 | 0 | 0 | 1 | 0 | E | 0 | 0 | 4 | 0 | 0 | 0 | 7 | 0000 | 7 | 3 | 7 | 0 | 0 | 0 | 1 | 8 | 6 | 0 | 0 | 4 | 0 | 0 | 0 | 7 | 0000 | 8 | 2 | 8 | 0 | 0 | 0 | 1 | 8 | 6 | 0 | 0 | 4 | 0 | 0 | 0 | 7 | 0000 | 9 | 8 | 7 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 4 | 0 | 0 | 0 | 7 | 0000 | A | 0 | 7 | 0 | 0 | 0 | 1 | 2 | 4 | 0 | 0 | 4 | 0 | 0 | 0 | 7 | 0000 | B | 0 | 7 | 0 | 0 | 0 | 5 | 0 | 3 | 0 | 0 | 4 | 0 | 0 | 0 | 7 | 3FFF | C | 7 | 5 | 0 | 0 | 0 | 1 | 0 | 3 | 0 | 0 | 4 | 0 | 0 | 0 | 7 | 0000 | D | 0 | 4 | 0 | 0 | 0 | 5 | 0 | 6 | 0 | 0 | 4 | 0 | 0 | 0 | 7 | 0000 | E | 0 | 7 | 0 | 0 | 0 | 1 | 2 | 6 | 0 | 0 | 4 | 0 | 0 | 0 | 7 | 0000 | F | 7 | 7 | 0 | 0 | 0 | 1 | 2 | 6 | 0 | 0 | 4 | 0 | 0 | 0 | 7 | 0000 | 10 | 1 | 8 | 0 | 0 | 0 | 1 | 2 | 6 | 0 | 0 | 4 | 0 | 0 | 0 | 7 | 0000 | 11 | 8 | 8 | 0 | 0 | 0 | 1 | 2 | 6 | 0 | 0 | 4 | 0 | 0 | 0 | 7 | 0000 | 12 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 6 | 000F | 13 | 8 | 7 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 4 | 0 | 0 | 0 | 7 | 0000 | 14 | 7 | 0 | 0 | 0 | 0 | 1 | 0 | 6 | 0 | 1 | 0 | 0 | 2 | 2 | 3 | 0018 | 15 | 0 | 4 | 0 | 0 | 0 | 1 | 8 | 4 | 0 | 0 | 4 | 0 | 0 | 0 | 7 | 0000 | 16 | 0 | 4 | 0 | 0 | 0 | 5 | 0 | 3 | 0 | 0 | 4 | 0 | 0 | 0 | 7 | 0001 | 17 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 4 | 0 | 3 | 001A | 18 | 0 | 4 | 0 | 0 | 0 | 1 | 8 | 4 | 0 | 0 | 4 | 0 | 0 | 0 | 7 | 0000 | 19 | 8 | 7 | 0 | 0 | 0 | 1 | 0 | 3 | 0 | 0 | 4 | 0 | 0 | 0 | 7 | 0000 | 1A | 0 | 7 | 0 | 0 | 0 | 1 | 8 | 4 | 0 | 0 | 4 | 0 | 0 | 0 | 7 | 0000 | 1B | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 4 | 0013 | 1C | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 5 | 0 | 7 | 0000 | 1D | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 6 | 0 | 0 | 0 | 0 | 0 | 0 | 7 | 0000 | 1E | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 6 | 0 | 0 | 0 | 0 | 0 | 0 | 7 | 0000 | 1F | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 6 | 0 | 0 | 0 | 0 | 0 | 0 | 7 | 0000 |
МК 0: IF CX = 0 THEN GOTO МК 1C;
МК 1: DI := SI;
МК 2: DI := DI AND BX;
МК 3: BP := DI;
МК 4: DI := SI;
МК 5: DI := DI AND DX;
МК 6: BP := BP XOR DI;
МК 7: DI := SHL(BX);
МК 8: CS := SHL(DX);
МК 9: DI := DI – CS;
МК A: DI := SHR(DI);
МК B: DI := DI + 3FFF;
МК C: BP := BP + DI;
МК D: SP := 0;
МК E: DI := SHR(AX);
МК F: DI := SHR(DI);
МК 10: CS := SHR(CX);
МК 11: CS := SHR(CS);
МК 12: RACT := F;
МК 13: DI := DI – CS;
МК 14: IF N = 1 THEN GOTO МК 18;
МК 15: SP:= SHL(SP);
МК 16: SP := SP + 1h;
МК 17: GOTO МК 1A;
МК 18: SP := SHL(SP).0;
МК 19: DI := DI + CS;
МК 1A: DI := SHL(DI);
МК 1B: RACT := RACT – 1h; IF RACT ¹ 0 THEN GOTO МК 13;
МК 1C: STOP;
МК 1D: «Пустая» команда;
МК 1E: «Пустая» команда;
МК 1F: «Пустая» команда.
4.) Значение исходных данных и результатов.
В качестве примера работы программы разделим два числа: – 15 и 3. В
результате должны получить – 5.
15 = Fh = 11112-10;
3 = 3h = 00112-10;
5 = 5h = 01012-10.
| | |
Начальное состояние регистров:
AX = F000h; SP = FFFFh; CS = FFFFh; IP = 0000h;
BX = C002h; BP = FFFFh; SS = 0000h; PSW = 0000h;
CX = C000h; SI = 8000h; DS = 0000h; RGK= 0000h;
DX = 4000h; DI = FFFFh; ES = 0000h; RW = 0000h.
| | |
Состояние регистров после выполнения программы деления:
AX = F000h; SP = A000h; CS = 3000h; IP = 0000h;
BX = C002h; BP = C001h; SS = 0000h; PSW = 0000h;
CX = C000h; SI = 8000h; DS = 0000h; RGK= 0000h;
DX = 4000h; DI = 0000h; ES = 0000h; RW = 0000h.
5.) Трасса.
шаг | СМК | AX | BX | CX | DX | SP | BP | SI | DI | CS | 0 | 0 | F000 | C002 | C000 | 4000 | FFFF | FFFF | 8000 | FFFF | FFFF | 1 | 1 | F000 | C002 | C000 | 4000 | FFFF | FFFF | 8000 | FFFF | FFFF | 2 | 2 | F000 | C002 | C000 | 4000 | FFFF | FFFF | 8000 | 8000 | FFFF | 3 | 3 | F000 | C002 | C000 | 4000 | FFFF | FFFF | 8000 | 8000 | FFFF | 4 | 4 | F000 | C002 | C000 | 4000 | FFFF | 8000 | 8000 | 8000 | FFFF | 5 | 5 | F000 | C002 | C000 | 4000 | FFFF | 8000 | 8000 | 8000 | FFFF | 6 | 6 | F000 | C002 | C000 | 4000 | FFFF | 8000 | 8000 | 0000 | FFFF | 7 | 7 | F000 | C002 | C000 | 4000 | FFFF | 8000 | 8000 | 0000 | FFFF | 8 | 8 | F000 | C002 | C000 | 4000 | FFFF | 8000 | 8000 | 8004 | FFFF | 9 | 9 | F000 | C002 | C000 | 4000 | FFFF | 8000 | 8000 | 8004 | 8000 | 10 | A | F000 | C002 | C000 | 4000 | FFFF | 8000 | 8000 | 0004 | 8000 | 11 | B | F000 | C002 | C000 | 4000 | FFFF | 8000 | 8000 | 0002 | 8000 | 12 | C | F000 | C002 | C000 | 4000 | FFFF | 8000 | 8000 | 4001 | 8000 | 13 | D | F000 | C002 | C000 | 4000 | FFFF | C001 | 8000 | 4001 | 8000 | 14 | E | F000 | C002 | C000 | 4000 | 0000 | C001 | 8000 | 4001 | 8000 | 15 | F | F000 | C002 | C000 | 4000 | 0000 | C001 | 8000 | 7800 | 8000 | 16 | 10 | F000 | C002 | C000 | 4000 | 0000 | C001 | 8000 | 3C00 | 8000 | 17 | 11 | F000 | C002 | C000 | 4000 | 0000 | C001 | 8000 | 3C00 | 6000 | 18 | 12 | F000 | C002 | C000 | 4000 | 0000 | C001 | 8000 | 3C00 | 3000 | 19 | 13 | F000 | C002 | C000 | 4000 | 0000 | C001 | 8000 | 3C00 | 3000 | 20 | 14 | F000 | C002 | C000 | 4000 | 0000 | C001 | 8000 | 0C00 | 3000 | 21 | 15 | F000 | C002 | C000 | 4000 | 0000 | C001 | 8000 | 0C00 | 3000 | 22 | 16 | F000 | C002 | C000 | 4000 | 0000 | C001 | 8000 | 0C00 | 3000 | 23 | 17 | F000 | C002 | C000 | 4000 | 0001 | C001 | 8000 | 0C00 | 3000 | 24 | 1A | F000 | C002 | C000 | 4000 | 0001 | C001 | 8000 | 0C00 | 3000 | 25 | 1B | F000 | C002 | C000 | 4000 | 0001 | C001 | 8000 | 1800 | 3000 | 26 | 13 | F000 | C002 | C000 | 4000 | 0001 | C001 | 8000 | 1800 | 3000 | 27 | 14 | F000 | C002 | C000 | 4000 | 0001 | C001 | 8000 | E800 | 3000 | 28 | 18 | F000 | C002 | C000 | 4000 | 0001 | C001 | 8000 | E800 | 3000 | 29 | 19 | F000 | C002 | C000 | 4000 | 0002 | C001 | 8000 | E800 | 3000 | 30 | 1A | F000 | C002 | C000 | 4000 | 0002 | C001 | 8000 | 1800 | 3000 | 31 | 1B | F000 | C002 | C000 | 4000 | 0002 | C001 | 8000 | 3000 | 3000 | 32 | 13 | F000 | C002 | C000 | 4000 | 0002 | C001 | 8000 | 3000 | 3000 | 33 | 14 | F000 | C002 | C000 | 4000 | 0002 | C001 | 8000 | 0000 | 3000 | 34 | 15 | F000 | C002 | C000 | 4000 | 0002 | C001 | 8000 | 0000 | 3000 | 35 | 16 | F000 | C002 | C000 | 4000 | 0004 | C001 | 8000 | 0000 | 3000 | 36 | 17 | F000 | C002 | C000 | 4000 | 0005 | C001 | 8000 | 0000 | 3000 | 37 | 1A | F000 | C002 | C000 | 4000 | 0005 | C001 | 8000 | 0000 | 3000 | 38 | 1B | F000 | C002 | C000 | 4000 | 0005 | C001 | 8000 | 0000 | 3000 | 39 | 13 | F000 | C002 | C000 | 4000 | 0005 | C001 | 8000 | 0000 | 3000 | 40 | 14 | F000 | C002 | C000 | 4000 | 0005 | C001 | 8000 | D000 | 3000 | . | . | . | . | . | . | . | . | . | . | . | 117 | 1C | F000 | C002 | C000 | 4000 | A000 | C001 | 8000 | 0000 | 3000 | 118 | 1D | F000 | C002 | C000 | 4000 | A000 | C001 | 8000 | 0000 | 3000 |
Работа микропрограммы и алгоритма в целом были проверены также и при делении
числа 20 на число 10. В результате деления этих чисел должны были получить
число 2. Точно такой же результат был получен при делении этих чисел по
вышеописанному алгоритму и реализованному в микрокомандах на эмуляторе MICRO.
Отсюда можно сделать вывод, что алгоритм работает правильно, и
микропрограмма написана верно.
Заключение.
Целью данного курсового проекта являлась разработка процессора с плавающей
точкой. В результате проделанной работы процессор был разработан.
Примечания.
В данной пояснительной записке могут встречаться опечатки и неточности, а
также некоторые «лишние» слова и блоки. Вполне вероятно, что в распечатанном
варианте все или почти все опечатки, неточности и ошибки исправлены «от
руки».
При разработке процессора с плавающей точкой использовались лекции по данной
дисциплине, методические указания, а так же примерный вариант данной курсовой
работы.
Данная пояснительная записка имеется также в полной форме в электронном виде.
Тексты, схемы алгоритмов, таблицы, структурные схемы и т. п. были набраны,
нарисованы и начерчены при помощи программы Microsoft Word 97. Никакие другие
программы при написании данной пояснительной записки не использовались.
Микропрограмма написана для эмулятора микропрограммируемого процессора версии
MICRO_BT.
Дата написания: 27 декабря 2002г.
Время: 3:33.
Подпись разработчика:
Страницы: 1, 2, 3
|
|