Директиви мікроасемблера для блока мікропрограмного управління

LINK – директива встановлення відповідності між входами МУ та логічними умовами

Якщо в системі мікрокоманд ФАМ як умови використовуються L1, L2, …, L6 (або not L1, not L2, …, not L6), то сигнал умови необхідно зв‘язати з одним з входів МУ за допомогою директиви LINK. Під час аналізу Li (i=1¸6) як логічної умови в умовних мікрокомандах ФАМ поле MS мікрокоманди буде містити двійковий код i.

Загальний вигляд директиви:

LINK <ім‘я входу>: <умова>

де замість <ім‘я входу> може бути L1, L2, …, L6.

Приклади директиви LINK:

link l2: rdm

link l3: no

link l4: ct

До входів L1, L2, …, L6 МУ можна під‘єднувати такі сигнали:

ZO, CO, NO, VO, RM_Z, RM_C, RM_N, RM_V, RN_Z, RN_C, RN_N, RN_V, CT, RDM, RDD, INT, IRQ0, IRQ1, IRQ2, IRQ3, IRQ4, IRQ5, IRQ6, IRQ7.

Задання відповідності між входами МУ та умовами за допомогою директиви LINK може здійснюватись як окремо для кожного входу МУ, так і для всіх входів одночасно (за допомогою директиви LINK L), наприклад,

link l: ct, int, irq0, irq2, irq5, irq7

У цьому випадку L1:=CT, L2:=INT, …, L6:=IRQ7.

ACCEPT -директива встановлення в початковий стан ФАМ

Ця директива дозволяє встановити в початковий стан такі вузли ФАМ:

а) покажчик стека (ACCEPT SP),

б) комірки стека (ACCEPT STACK),

в) регістр адреси / лічильник циклів (ACCEPT RAC),

г) лічильник мікрокоманд (ACCEPT PCMK).

Наприклад,

accept sp: 3 \ встановлення покажчика стека

accept stack[2]: 0afdh \ записати в комірку 2 стека значення AFD

accept stack: 0a00h, 0b00h, 0c00h, 2d0h, 0d00h \ 5 значень заносяться

\ в комірки стека

accept rac: 5 \ в РА/ЛЦ записати значення 5

accept rcmk: 10 \ початковий стан ЛМК – 10.

LINK M – директива приєднання Буфера М до ЛШ

Буфер М з‘єднує 16-розрядну ЛШ та 12-розрядну шину адреси розгалуження (рис. 16). Інформацію з ЛШ на ШАР можна подавати у довільному порядку слідування бітів. Директива LINK M задає відповідність між розрядами ЛШ та розрядами Буфера М.

Наприклад,

link m: 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4 \ під‘єднати до Буфера М

\ 12 старших розрядів ЛШ

LINK V – директива настроювання Буфера V

На вхід Буфера V (рис. 17) можна подавати такі сигнали:

· IRQ0, …, IRQ7 – запити на переривання від зовнішніх пристроїв,

· CT – сигнал логічної умови,

· INT – сигнал вимоги загального переривання,



· RDM, RDD – сигнали готовності пам‘яті та зовнішнього пристрою відповідно (у вигляді мнемонік ці сигнали позначаються без інверсії),

· Z, NZ – сигнали “0” та “1”.

Директива LINK V задає відповідність між вказаними сигналами та розрядами Буфера V. Наприклад,

link v: z, nz, irq0, irq1, irq2, irq3, irq4, irq5, irq6, irq7, ct, int \ 12 сигналів.

На основі цих сигналів під час виконання мікрокоманди { cjv cond; } формується початкова адреса мікропрограми в ПМК, яка через Буфер V надходить в ФАМ.

4. РОБОТА З ОПЕРАТИВНОЮ ПАМЯТТЮ

4.1. Організація доступу до оперативної пам‘яті

Ємність оперативної пам‘яті становить 1М 16-розрядних слів. Мінімальна інформаційна одиниця доступу – 16-розрядне слово, доступ до окремого байта слова неможливий.

ОП виконує дві мікрооперації: запис слова за заданою адресою (ініціюється сигналом W (Write)) та читання слова (ініціюється сигналом R (Read)). Мнемонічно позначатимемо ці операції як { w; } та { r; } відповідно.



Рис. 18. Оперативна пам‘ять

Адреса ОП формується з використанням ЛШ. Оскільки ЛШ 16-розрядна, а ША 20-розрядна, то необхідно два такти для формування адреси ОП.

Інформація з ЛШ в регістр адреси (RgA) записується за два прийоми. Для цієї мети використовують два сигнали дозволу запису: EWH (Enable Write High) – дозвіл запису в старшу частину RgA, та EWL (Enable Write Low) – дозвіл запису в молодшу частину регістра адреси. Мнемонічно вони позначаються як

{ ewh; } та { ewl; }.

Поділ RgA на дві частини здійснюється за допомогою директиви

LINK EWH, наприклад,

link ewh: 16 \ молодша частина RgA включає розряди 15…0, старша

\ частина RgA – розряди 19…16

link ewh: 10 \ молодша частина RgA – розряди 9…0, старша частина –

\розряди 19…10.

Спочатку на ЛШ формують, наприклад, молодші розряди адреси пам‘яті, й за допомогою { ewl; } записують в молодшу частину RgA, а потім на ЛШ формують старші розряди адреси й за допомогою { ewh; } записують в старшу частину RgA.

Задача. Встановити в нуль 4 старші розряди RgA й записати в молодші розряди RgA адресу з R9.

Розв‘язування:

link ewh: 16

accept r9: 1234h

{ xor nil, r0, r0; oey; ewh; } \ RgA[19…16]:= 0000

{ or nil, r9, z; oey; ewl; } \ RgA[15…0]:=R9


4.2. Директиви мікроасемблера для оперативної пам‘яті

Крім директиви LINK EWH для роботи з ОП передбачено ще дві директиви мікроасемблера.

DW – директива задання значень в комірках ОП

Загальний вигляд директиви:

DW <адреса>: <значення>

Ця директива (Define Word – визначити слово) дозволяє задати значення в одній або кількох суміжних комірках ОП одночасно.

Наприклад,

dw 0a000h: 36 \ за адресою A000 задати слово 36

dw 2000h: 2, 4, 8, 16 \ за адресами 2000-2003 задати слова

\ 2, 4, 8, 16 відповідно

ACCEPT RDM_DELAY – директива задання швидкодії ОП

Для задання швидкодії ОП в тактах БОД використовують директиву

ACCEPT RDM_DELAY: <кількість тактів>

Наприклад,

accept rdm_delay: 3 \ швидкодія ОП дорівнює 3 тактам

\ роботи БОД

Після завершення циклу роботи (запис або читання слова) ОП формує сигнал RDM (ReaDy Memory – готовність пам‘яті), нульовий рівень якого свідчить про готовність ОП до наступного циклу. Цей сигнал в умовних мікрокомандах ФАМ мнемонічно позначають rdm.

Задача 1. Встановити в нуль 4 старші розряди RgA, а в молодші записати адресу з R14. Зчитати слово з ОП і записати в R10. Швидкодія ОП вдвічі нижча за швидкодію процесора.

Розв‘язуванння:

link l2: rdm \ сигнал RDM подається на вхід 2 МУ

link ewh: 16

accept rdm_delay: 2 \ сигнал RDM формується через 2 такти

\ (затримка пам‘яті)

accept r14: 2468h \ для відлагодження

dw 2468h: 0aaaah \ в ОП за адресою 2468 знаходиться слово AAAA

{ xor nil, r3, r3; oey; ewh; } \ RgA[19…16]:= 0000

{ or nil, r14, z; oey; ewl; } \ RgA[15…0]:=R14

m1 { cjp l2, m1; r; or r10, bus_d, z; } \ R10:=AAAA

{} \ кінець фрагмента

Мікрокоманди, використовувані для формування адреси ОП, можна оформити у вигляді макрокоманд.

Формування старшої частини адреси, яка зазвичай дорівнює нулю:

macro ld_ha: { xor nil, r0, r0; oey; ewh; }

Формування молодшої частини адреси:

macro ld_la source: { or nil, source, z; oey; ewl; }

Задача 2. Виконати операцію 2(R1+R2+R15) і записати результат в ОП за адресою, що зберігається в регістрі АЛП, номер якого знаходиться в RA.

Розв‘язування (із застосуванням двох попередніх макрокоманд):

link l2: rdm

link ewh: 16

accept rdm_delay: 3

accept ra: 3

accept r3: 4

accept r1: 8

accept r2: 16

accept r15: 32

ld_ha \ RgA[19…16]:=0000

ld_la ra \ RgA[15…0]:=R3

{ add r1,r2;} \ R1:=R1+R2

{ add sla r1, r15;} R1:=2(R1+R15)

m1 { cjp l2, m1; w; or nil, r1, z; oey; }

5. РОБОТА З ПРИСТРОЯМИ ВВЕДЕННЯ-ВИВЕДЕННЯ


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



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