Загальний алгоритм виконання процесором команди SBR Rm, B

 

Для виконання програми процесор вибирає команди з пам'яті по одній і виконує обумовлені ними дії. Команди вибираються з послідовних адрес пам'яті доти, доки не зустрінеться команда переходу або розгалуження. Для цього в лічильнику команд (PC) відслідковується адреса чергової команди, що підлягає виконанню. Після вибору цієї команди вміст регістра PC змінюється так, щоб він вказував на наступну команду в пам'яті в порядку розташування адрес. Команда розгалуження може завантажити в PC іншу адресу.

Загальний алгоритм роботи процесора можна зобразити наступним чином:

1. Вибірка машинної команди

2. Збільшення лічильника команд на довжину команди

3. Дешифрація команди

4. Вибірка операнду (якщо потрібно)

5. Виконання команди

Команда “SBR Rm, B” — установка бітів регістру Rm згідно з бітовою маскою B.

Алгоритм виконання цієї машинної команди можна зобразити так:

1. Виконати команду логічного „або” над значенням регістру Rm та бітовою маскою.

2. Результат логічної операції записати в регістр Rm.

3. Перейти до вибірки наступної команди



Спрощена мікропрограма та її пояснення

 

Спрощена мікропрограма виконання команди SBR R1, B:

(Примітка: кожен рядок відповідає одному такту процесора)

1. PC_to_MAR, MRead, WMFC

2. MDRout, IRcopin, PCinc

3. PC_to_MAR, MRead, WMFC

4. MDRout, IRoffin, PCinc, IRcopout_mc, дешифрація

5. IRoffout, Yin

6. R1out , Yout, OR, Zin

7. Z out , R1in , End.

Кроки 1 та 2 складають фазу вибірки команди, однакову для всіх команд, кроки 3 та 4 — вибірка операнда та дешифрація.

1. На кроці 1 відбувається пересилка вмісту регістра PC в регістр MAR та ініціюється операція читання з пам'яті. Після отримання від пам’яті сигналу готовності переходимо до 2-го кроку:

2. Пересилка отриманого байту з регістру MDR в регістр IRcop (це перший байт команди – код операції); інкремент адреси, що знаходиться в PC.

3. На 3-му кроці робляться такі ж дії, що і на першому, а саме запит на читання байту з пам’яті за адресою, що в PC.

4. Пересилка отриманого байту з регістру MDR в регістр IRoff (другий байт команди (для команди SBR це бітова маска)); інкремент адреси, що знаходиться в PC; пересилка коду операції з регістру IRcop в блок управління; дешифрація коду операції.

Після вибірки команди і її дешифрації відбувається власне виконання команди (в нашому випадку – SBR R1, B).

5. Пересилка бітової маски, що знаходиться в регістрі IRoff, до регістру Y для подальшого його використання в АЛП в якості операнду.

6. Видача на шину вмісту регістру R1, операція логічного „або” в АЛП, результат помістити в регістр Z.

7. Пересилка значення регістру Z до регістру R1.

Лістинг програми, розбитий по крокам, з коментарями наведений в додатку 3.



ВИСНОВОК

 

Завданням курсової роботи було Розробка структурної схеми процесорного елемента та мікропрограми керування для реалізації команди “SBR Rm, B”. Для його виконання було розглянуто декілька літературних джерел, архітектури різних процесорів та мікроЕОМ. Розроблена в результаті курсової роботи архітектура не претендує на звання кращої, чи оптимальної. Вона проектувалась з боку спрощення, кращої наглядності схеми, для кращого її розуміння. Деякими структурними блоками було знехтувано, про що вказувалось по ходу роботи. При розробці схеми основну увагу приділялось правильному виконанню вказаної в завданні команди.

Розроблена мікропрограма для керування виконанням команди “SBR Rm, B” написана на машинній мові з використанням команд мікроконтроллера сімейства MCS-51. Створена мікропрограма виконується за 7 тактів процесора, з них 4 такти — це вибірка команди (коду операції та операнду), а 3 інших — безпосереднє виконання команди. Це дуже проста команда, що не потребує запитів до пам’яті, тому на її виконання треба всього 3 такти.

В результаті виконання роботи я поглибив свої знання про будову, принципи роботи процесорів та мікропроцесорних систем різних архітектур.



СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ

 

1. Будіщев М.С. Електротехніка, електроніка та мікропроцесорна техніка. – видавництво «Афіша», 2001.–421с.

2. А. Буняк. Електроніка та мікросхемотехніка. – СМП «Астон», 2001.

3. Н. Ершова, О. Ивашенков, С. Курсков, Микропроцессоры, Пособие к курсам "Микропроцессорные средства" и "Автоматизирован­ные системы для научных исследований" — http://dfe3300.karelia.ru/koi/posob/pos.html

4. Система команд AVR-контроллеров — http://ntlib.chat.ru/avr/instr.htm

5. Документація на мікроконтроллери фірми Intel MCS-51/151/251. (каталог pdf файлів) — http://www.intel.com/design/mcs51/docs_mcs51.htm



ДОДАТКИ

Додаток 1

 

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

 



Додаток 2

 

Розшифровка позначень на схемі

 

Таблиця 1

Символьне позначення Опис
R0, R1, R2, R3 Регістри загального призначення, використовуються програмістами для потреб програм.
Z Регістр, призначені для тимчасового збереження результату виконання певної операції арифметико-логічним пристроєм.
Y Регістр для тимчасового збереження операнду, який потрібно обробити в АЛП.
IR (Instruction register) Регістр, в якому зберігається код машинної команди.
ALU (Arithmetical-logical unit) Арифметико-логічний пристрій, АЛП
PC (Program counter) Лічильник команд
MAR (Memory address register) Регістр адрес пам’яті
MDR (Memory data register) Регістр даних пам’яті
PSW (Program status word) Регістр стану


Додаток 3

 

Лістинг мікропрограми

 

consts.inc

 

R0_in EQU p1.0

R0_out  EQU p1.1

R1_in EQU p1.2

R1_out  EQU p1.3

R2_in EQU p1.4

R2_out  EQU p1.5

R3_in EQU p1.6

R3_out  EQU p1.7

 

PC_in             EQU p3.0

PC_out           EQU p3.1

PC_to_MAR  EQU p3.2

MFC      EQU p3.3 

MAR_in         EQU p3.4

MRead            EQU p3.5

MDR_in         EQU p3.6

MDR_out       EQU p3.7

 

IRcop_in         EQU p0.0

IRcop_out_mc EQU p0.1

Y_in      EQU p0.2

Y_out             EQU p0.3

Z_in       EQU p0.4

Z_out    EQU p0.5

CLK      EQU p0.6

PC_inc            EQU p0.7

 

IR EQU p2

 

ALUe0  EQU p4.0

ALUe1  EQU p4.1

ALUe2  EQU p4.2

ALUe3  EQU p4.3

ALUm   EQU p4.4

IRoff_in EQU p4.5

IRoff_out EQU p4.6

 

prog.asm

 

INCLUDE 80512.mc

INCLUDE consts.inc

 

Start:

 

fetch:

; ВИБІРКА КОМАНДИ

   ;...

   ; вибірка команди

   ;...

                  

deshifr:

; ДЕШИФРАЦІЯ КОДУ КОМАНДИ

   ; Розпізнавання команди і перехід на відповідний код її виконання

    MOV A, IR

    ANL A, 11111100b; залишаємо в А лише код операції, без номера регістру

 my_cmd:

    CJNE A, 00000100b, other_cmd

    JMP SBR_Rm_B

 other_cmd:

   ;...

   ;...

   ;...

        

 unknown_code:

    JMP fetch

; ----------------------------------------------------------

        

; ВИКОНАННЯ КОМАНДИ

SBR_Rm_B:

 

   ; IRoff_out, Yin

    SETB IRoff_out      ; Пересилка бітової маски IRoff - > Y             

    SETB Y_in    ;

    SETB CLK    ; Сигнал синхронізації

    CLR CLK           

    CLR IRoff_out

    CLR Y_in

 

   ; Rm_out, Yout, OR, Zin

             ; вибір потрібного регістру для пересилки в Y

              MOV A, IR

              ANL A, 00000011b; залишаємо в А лише сам номер регістра     

              regR0out:

               CJNE A, 00000000b, regR1out

               SETB R0_out

               JMP end_case1

              regR1out:

               CJNE A, 00000001b, regR2out

               SETB R1_out

               JMP end_case1

              regR2out:

               CJNE A, 00000010b, regR3out

               SETB R2_out

               JMP end_case1

              regR3out:

               SETB R3_out

              end_case1: 

    SETB R1_out

    SETB Y_out

    SETB ALUe0          ; Код операції OR - 0001b

    CLR ALUe1            ;

    CLR ALUe2            ;

    CLR ALUe3            ;

    SETB Z_in    ; результат - > Z

    SETB CLK    ; Сигнал синхронізації

    CLR CLK           

    CLR R0_out  ; закриваємо всі регістри

    CLR R1_out  ;

    CLR R2_out  ;

    CLR R3_out  ;

    CLR Y_out

    CLR ALUe0

    CLR Z_in

        

   ; Z out, Rm_in, End

    SETB Z_out            ; пересилка результату в регістр R1

             ; вибір потрібного регістру для пересилки: Z - > Rm

              regR0in:

               CJNE A, 00000000b, regR1in; в А - лише номер потрібного регістра

               SETB R0_in

               JMP end_case2

              regR1in:

               CJNE A, 00000001b, regR2in

               SETB R1_in

               JMP end_case2

              regR2in:

               CJNE A, 00000010b, regR3in

               SETB R2_in

               JMP end_case2

              regR3in:

               SETB R3_in

              end_case2: 

    SETB CLK    ; Сигнал синхронізації

    CLR CLK           

    CLR Z_out

    CLR R0_in; закриваємо всі регістри

    CLR R1_in;

    CLR R2_in;

    CLR R3_in;

    JMP fetch      ; вибираєм наступну команду


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



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