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. РОБОТА З ПРИСТРОЯМИ ВВЕДЕННЯ-ВИВЕДЕННЯ