- •Лекція 2 Мікропрцесори та малі електронно-обчислювальні машини (еом) (загальні принципи)
- •Лекція з Структура й архітектура мікропроцесора кр580вм80 (8080)
- •Imc мікропроцесора кр580вм80
- •Лекція 4 Як працює мікропроцесор
- •Лекція 5 Системний контролер. Керуючий пристрій. Мікропрограмування
- •Лекція 6 Організація пам'яті мікропроцесорної системи
- •Лекція 7 Робота із зовнішніми пристроями. Паралельний інтерфейс
- •Лекція 8 Послідовний інтерфейс
- •Лекція 9 Переривання
- •Лекція 10 Прямий доступ до пам'яті (пдп)
- •Лекція 11 Клавіатура та індикація
- •Лекція 12 Мікропроцесор кр1810вм86 (8086)
- •Лекція 13 Система команд та методи адресації в мікропроцесорі кр1810вм86
- •Лекція 14 Мультипроцесорні системи
- •Лекція 15 Робота зі співпроцесором
- •Лекція 16 Тенденції розвитку мікропроцесорної техніки
- •Лекція 17 Деякі принципи роботи сучасних мікропроцесорів та еом
- •Лекція 18 Віртуальна пам'ять. Мікропроцесор 80286
- •Лекція 19 Мікропроцесори 80386 і 80486
- •Лекція 20 Поняття про risc-процесори. Процесори п'ятого та шостого поколінь
- •Лекція 21 Діагностика несправностей у мікропроцесорних системах
Лекція 4 Як працює мікропроцесор
Ієрархія циклів
Весь процес виконання мікропроцесором будь-якої команди складається з ряду окремих елементарних операцій (циклів). Найбільшим у ієрархії циклів є командний цикл, тобто проміжок часу, протягом якого виконується та чи інша команда.
Командний цикл складається з дрібніших операцій - машинних циклів. Машинний цикл є процедура звернення процесора до пам'яті чи зовнішнього пристрою для запису, читання або обробки інформації. Ці цикли виконуються послідовно, один за одним. Так, наприклад, двобайтова команда MVI В, А9 (тобто записати число А9 у регістр В) виконується за два машинні цикли:
1. Звернення до пам'яті за адресою, що міститься в лічильнику команд. Пам'ять виставляє на ШД код команди MVI В - 06 Н = 0000 0110 В. Цей код аналізується мікропроцесором і останній робить висновок, що в команді повинен бути ще один байт - байт даних. Він має адресу на одиницю більшу від попереднього.
2. У другому машинному циклі цей другий байт видобувається з пам'яті й заноситься до робочого регістра В.
Інший приклад - команда SHLD ADR - пересилання вмісту HL-пари до пари суміжних комірок пам'яті за адресою ADR, указаної в команді. Ця команда виконується за п'ять машинних циклів. Перший - видобування з пам'яті коду команди SHLD [23]; наступні два цикли - це видобування вказаних у команді двох байтів адреси. І нарешті, два останні машинні цикли - це пересилання вмісту HL-пари в пам'ять за вказаною адресою.
Машинний цикл, у свою чергу, складається з найдрібніших одиниць - тактів.
Тактові імпульси
Тривалість такту задається тактовими імпульсами, що їх виробляє генератор тактових імпульсів ГТІ, і визначає темп роботи всієї мікропроцесорної системи. У МП-80 тактові імпульси передаються
по лініях F1 і F2 і є прямокутними (точніше, трапецеїдальними) імпульсами, зсунутими один відносно одного на певний проміжок часу. Осцилограму тактових імпульсів зображено на рис. 4.1. На ній указано мінімальну тривапість відповідних проміжків часу.
Мінімальна тривалість періоду тактових імпульсів складає 400 не. Імпульс F1 має
мінімальну тривалість 100 не. У момент його закінчення починається імпульс F2, який триває не менше 200 не. З тактових імпульсів (що мають величину близько 12 В) КП формує керуючі імпульси, які розсилаються до всіх блоків мікропроцесора. Сукупність керуючих імпульсів складає макрокоманду. За один такт виконується одна мікрокоманда, отже, протягом одного такту вся мікропроцесорна система зберігає незмінний стан і змінює його лише від наступної мікрокоманди. Мінімальна тривалість періоду тактових імпульсів визначається тривалістю перехідних процесів логічних елементів, що складають мікропроцесор і для МП-80 не може бути меншою від 400 не.
Процедура введення даних у мікропроцесор (операція читання з пам 'яті)
Розглянемо як приклад часову діаграму процедури введення даних до мікропроцесора (рис. 4.2). Вона полягає в тому, що з деякої комірки пам'яті, адресу якої задано в команді, дані переписуються в акумулятор. Конкретно такою командою є команда LDA ADR [ЗА]. Командний цикл її складається з чотирьох машинних циклів:
- вибірки з пам'яті першого байта команди (коду команди);
- двох циклів вибірки адреси комірки пам'яті, яка містить дані; -вибірки з указаної комірки даних та запис їх до акумулятора.
Кожний машинний цикл складається з кількох тактів, які позначаються як Ть Т2, Tj тощо. Машинні цикли можуть містити від трьох до п'яти тактів. Перші три такти в усіх машинних циклах використовуються для організації обміну з пам'яттю або із зовнішнім пристроєм, такти Т4 та ts (якщо вони є в машинному циклі) - дл виконання внутрішніх операцій у мікропроцесорі. Відлік тактів здійснюється від переднього фронту імпульсів F1.
Отже, першим машинним циклом є вибірка першого байта команди - коду команди. У такті ТІ протягом імпульсу F2 адреса команди, яка міститься в лічильнику команд (туди вона була записана заздалегідь), вистав пяється на ША. Одночасно видається синхронізуючий імпульс SYNC, який указує на початок чергового машинного циклу. Імпульс SYNC триває один такт. Він потрібний для синхронізації роботи мікропроцесора з пам'яттю або зовнішніми пристроями.
Одночасно мікропроцесор виставляє на ПІД слово стану -8-розрядне слово, котрим МП наче "об'являє" про свої наміри - що він буде робити в даному машинному циклі: читати або видавати дані, зв'язуватися з пам'яттю або із зовнішніми пристроями, записувати в стек або обслуговувати переривання. Це потрібно для того, щоб ті пристрої, з якими процесор "виходить на зв'язок", приготувалися до роботи з ним.
Кожний різновид машинного циклу має свій код слів стану. Зі слів стану буде вироблено керуючий сигнал, який приведе в дію відповідні блоки пам'яті або зовнішніх пристроїв. Так, наприклад, якщо в даному машинному циклі передбачається звернення до пам'яті, то на підставі слова стану формується керуючий сигнал, який активізує мікросхеми пам'яті. Слово стану утримується на ПІД протягом одного такту. У нашому випадку слово стану повідомляє про те, що в даному машинному циклі буде відбуватися вибірка першого байту команди. У такому слові стану відмінними від нуля будуть біти D7, D5 та D1, тобто код слова стану є А2.
Наприкінці такту ТІ пам'ять має підтвердити свою готовність до роботи сигналом READY=1. Стан сигналу READY аналізується мікропроцесором протягом такту Т2 і якщо все гаразд, то МП продовжує свою роботу. Наприкінці Т2 пам'ять уже готова видати дані (у нашому випадку - код команди). Мікропроцесор видає підтвердження своєї готовності сприймати ці дані сигналом DBIN=1. Дані з пам'яті виставляються на ПІД і сприймаються буферним регістром команди, після чого вони можуть бути зняті з ШД. Далі код команди аналізується КП, який встановлює, чи будуть у команді ще другий і третій байти (у даному разі в команді LDA вони є). Такий аналіз відбувається протягом такту Т4. На цьому перший машинний цикл закінчується і МП приступає до другого машинного циклу - вибірки з пам'яті першого (молодшого) байта адреси тієї комірки пам'яті, яка містить потрібні дані.
Послідовність мікрооперацій у тактах другого машинного циклу подібна до першого. Спочатку на ША виставляється адреса другого байта команди (вона на одиницю більша за попередню), імпульс SYNC та слово стану. Після перевірки готовності в Т2 у третьому такті Т3 за сигналом DBIN відбувається читання молодшого байта адреси, який спрямовується в молодший байт регістра ША. Аналогічно відбувається читання третього байта команди (старшого байта адреси). Ці машинні цикли відрізняються від першого лише відсутністю такту Т4. У результаті другого та третього машинних циклів у регістрі ША формується повна адреса комірки пам'яті, яка містить бажані дані.
Далі, у останньому - четвертому - машинному циклі за адресою, яку створено в регістрі ША, викликаються дані, які й розташовуються в акумуляторі. Наприкінці розглянутого машинного
циклу в лічильнику команд установлюється ад|>< тій
команди, до виконання якої мікропроцесор переходім І. и закінчення четвертого машинного циклу.
Аналогічно відбувається також процедура запису даних у пам'ять (командою STA ADR). Тільки тут в останньому машинному циклі, коли відбувається власне запис даних, замість сигналу DBIN установлюється сигнал WR ~ 0 (раніше WR знаходився в неактивному стані та дорівнював одиниці) і дані на ПІД виставляє не пам'ять, а мікропроцесор. Зрозуміло, що на початку цього машинного циклу мікропроцесор повідомляє про це відповідним кодом слова стану .
Наприкінці слід скачати кілька слів про деякі особливі випадки, що можуть мати місце. Якщо протягом Т2 пам'ять або зовнішній пристрій не підтвердять своєї готовності сигналом READY = 1, То мікропроцесор зупиняє свою роботу, переходить у режим очікування, видаючи сигнал WAIT = 1, і знаходиться у такому стані аж доки не надійде сигнал готовності.
Наприкінці кожного командного циклу МП перевіряє, чи не з'явився сигнал INT (запит на переривання) або HOLD (запит на захоплення шин). Якщо такі сигнали з'явилися, МП припиняє свою роботу у фоновій програмі й переходить у режим обслуговування переривання або в режим захоплення шин.
Різновиди машинних циклів
Незважаючи на велику різноманітність команд, які може виконувати мікропроцесор КР580ВМ80 (а їх більше ніж 200), усі вони можуть бути здійснені за допомогою лише 10 типів машинних циклів. Ці машинні цикли можна поділити на три групи.
1. Перша група - машинні цикли читання (тобто сприймання інформації мікропроцесором).
МІ - читання першого байту команди. / цьому циклі, з якого починається виконання будь-якої команди, відбувається видобування коду команди з комірки пам'яті за адресою, що міститься в лічильнику команд.
М2 - .читання з пам'яті за адресою, яку вказує мікропроцесор (наприклад, MOV В,М - тут адреса комірки пам'яті має бути в HL-парі, або LDAX В,- адреса в парі ВС).
М4 - читання зі стеку, тут адреса міститься в показнику верхівки
стеку SP.
M6 - читання із зовнішнього пристрою, тобто завантаження акумулятора із зовнішнього пристрою, адреса якого задається мікропроцесором (команда IN та адреса порту).
М8 - читання за переривання, тобто перехід на обслуговування запиту від зовнішнього пристрою.
МІ0 - читання за переривання зі стану зупинки.
2. Друга група - машинні цикли запису.
МЗ - запис у пам'ять інформації, яка міститься в акумуляторі або в робочих регістрах (наприклад, MOV М,В або STAX D). Адреси, потрібні для виконання цих команд містяться в регістрових парах мікропроцесора HL та DE.
М5 - запис у стек (наприклад, PUSH В; адреса міститься в показнику верхівки стеку).
М7 - запис у зовнішній пристрій. Адреса порту міститься в команді (наприклад, OUT FB, де FB - адреса порту).
3. До останньої групи належить лише машинний цикл М9 -команда зупинки мікропроцесора HLT.
Кожний різновид машинних циклів містить у собі певну кількість тактів. Так наприклад, МІ складається з чотирьох тактів, М2 та МЗ -із трьох. Отже, завжди можна підрахувати тривалість виконання окремого машинного циклу, команди та програми в цілому.
Так, наприклад, команда LXI H.D16 (запис до HL-пари 16-розрядного слова) складається з машинних циклів М1,М2'та М2 і виконується за 10 тактів, команда POP В (читання зі стека й запис у пару ВС) - з М1,М4 таМ4 і триває також 10 тактів. А команда STA ADR (запис з акумулятора до комірки пам'яті, адресу якої ADR задано в команді) складається з машинних циклів МІ, М2, М2 та МЗ і потребує 13 тактів: читання коду команди, двох байтів адреси комірки пам'яті та запису до цієї комірки.
Слово стану
Кожному різновиду машинних циклів відповідає своє слово стану. Його виробляє мікропроцесор на початку кожного машинного циклу "повідомляючи" про те, що саме має бути зроблено у цьому циклі. З коду слова стану за допомогою схеми, що має назву системний контролер виробляються керуючі сигнали, які вже безпосередньо керують роботою пам'яті або зовнішніх пристроїв.
Структуру слова стану для кожного виду машинних циклів подано І» таблиці 4.1. Кожний біт слова стану DO - D7 має свій зміст і свою назву. DO (INTA) - підтвердження згоди на переривання.
Dl (WO) - запис у пам'ять або в зовнішній пристрій. Активним рівнем тут є 0. Тобто, якщо WO - 0, то відбувається запис у
пам'ять або виведення даних у зовнішній пристрій. Якщо ж WO ~ 1, то має місце читання.
D2 (STACK) - операції зі стеком. На адресній шині встановлюється адреса верхівки стеку.
D3 (HLTA) - мікропроцесор переводиться в стан зупинки.
D4 (OUT) - виведення даних на зовнішній пристрій.
D5 (МІ) - сприймання першого байта команди (коду команди).
D6 (INP) - уведення даних від зовнішнього пристрою.
D7 (МЕМК) - читання з пам'яті.
Так, наприклад, машинний цикл МІ - вибірка першого байта команди з пам'яті має слово стану 1010 0010 = А2Н, а виведення на зовнішній пристрій 0001 0000 =10Н
Таблиця 4.1, Слово стану мікропроцесора КР580ВМ80
Вид машинного циклу |
Слово стану |
||||||||
D7 MEMR |
D6 inp |
D5 МІ |
D4 OUT |
D3 HLTA |
D2 STACK |
Dl wo |
DO INTA |
||
МІ |
Вибірка першого байта команди (читання коду команди) |
1 |
0 |
1 |
0 |
0 |
0 |
1 |
|
М2 |
Читання з пам'яті |
1 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
МЗ |
Запис у пам'ять |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
М4 |
Читання зі стеку |
1 |
0 |
0 |
0 |
0 |
1 |
і |
0 |
М5 |
Запис у стек |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
М6 |
Читання із зовнішнього пристрою |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
М7 |
Запис у зовнішній пристрій |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
М8 |
Читання з перериванням |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
М9 |
Підтвердження зупинки |
1 |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
М10 |
Переривання зі стану зупинки |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
