
- •Курсова робота із дисципліни “Мікропроцесорні пристрої” на тему: «Проектування спеціалізованої мікропроцесорної системи на базі комплекту км1810 »
- •Загальні методичні вказівки
- •1.Функціонально конструктивні елементи.
- •1.1.Мікропроцессор к1810вм86
- •1.1.1. Загальні відомості
- •1.1.2. Призначення виходів мікропроцесора
- •1.1.3. Структура мікропроцесора
- •1.1.4. Адресний простір пам'яті і введення - висновку
- •1.1.5. Організація уведення — виводу.
- •1.1.6. Організація переривань
- •2.2. Контролер системної шини до к1810вг88
- •2.2.1. Загальні відомості
- •2.2.2. Призначення виходів
- •2.2.3. Функціонування
- •2.3. Генератор тактових імпульсів
- •2.4.Буферні регістри кр580ир82
- •2.4.1 Загальні відомості
- •2.4.2.Призначення виходів
- •2.5. Шинний формувач кр580ва86
- •2.5.1. Загальні відомості
- •2.5.2.Призначення виводів шф
- •Література
- •Завдання:
1.1.6. Організація переривань
Мікропроцесор ВМ86 має ефективну систему переривань, у якій кожному, перериванню поставлений у відповідність код (від 0 до 255), що ідентифікує тип переривання. Переривання можуть ініціюватися зовнішніми пристроями (зовнішні переривання) чи і командами програмних переривань, а в деяких ситуаціях – автоматично самим МП (внутрішні переривання). Переривання змушує МП тимчасово припинити виконання поточної програми і перейти до виконання підпрограми обробки переривання, що вважається більш важливою чи терміновою. Поновлення перерваної програми повинно бути зроблено так, начебто переривання було відсутнє.
Для
цього в стеці запам'ятовується адреса
повернення (CS
і IР)
і вміст регістра прапорів F,
а також уміст тих регістрів, що будуть
потрібні для виконання підпрограми
обробки переривання. Уміст регістрів
CS,
IР
і F
запам'ятовується і відновлюється
автоматично, а для запам'ятовування і
наступного відновлення вмісту інших
регістрів МП повинні бути передбачені
команди в початку і кінці підпрограми
обробки преривань. Слід зазначити, що
в стек включається скоректований уміст
покажчика команд ІР, що відповідає
адресі команди, перед якою МП почав
обслуговувати переривання. Необхідність
корекції викликана тим, що ІР адресує
команди з випередженням через існування
внутрішньої черги команд.
Зовнішні преривання. Запити на зовнішні переривання надходять у МП по двох входах: INTR і NME, і самі переривання поділяються відповідно на замасковані і незамасковані. Запити на замасковані переривання від ЗП звичайно надходять на входи програмувального контролера переривань (ПКП) К1810В1159А, що формує сигнал, подаваний на вхід INTR. При роботі з ВМ86 у відповідь на сигнал INТА1 ПКП не видає даних у мікропроцесор і буфер даних ПКП залишається у високоомному стані. По сигналі INTA2 ПКП посилає в мікропроцесор байт, що визначає тип (вектор) переривання. Коли встановлюється сигнал NTR = 1, дії МП залежать від стану прапора ІF дозволу переривань. Сигнал INTR розпізнається тільки при завершенні наступної команди. Префікси повторення, блокування шини і заміни сегмента вважаються частиною команди, тому переривання між префіксом і командою не сприймаємося. Команди пересилання в сегментний регістр МОV sr, src і витягу зі стека в сегментний регістр РОР sr розглядаються аналогічно: переривання не розпізнається до завершення наступної за ними команди. Це необхідно для правильної зміни сегмента, коли здійснюється перезавантаження сегментного регістра і регістра, що визначає зсув у сегменті (наприклад, регістрів SS і SР).
Запит переривання розпізнається під час виконання команди, що відносяться до ланцюгової команди з повторенням і до команди WATT, що можуть виконуватися на протязі значного часу. В цих випадках переривання сприймаються після будь-якої закінченої ланцюгової операції (тобто після чергової операції з елементом ланцюжка) чи після циклу перевірки сигналу на вході ТESТ (кожен цикл перевірки забирає час 5Т).
Якщо IF = 0, тобто переривання по входу INТR заборонені (замасковані), МП ігнорує запит переривання і переходить до наступної команди. Мікропроцесор не запам'ятовує стан сигналу INТR, тому цей сигнал повинний залишатися активним, поки переривающий ЗП не одержить сигналу підтвердження INТА чи саме не зніме запит. Якщо IF = 1, то МП розпізнає запит переривання й обробляє .
Мікропроцесор ВМ86 підтверджує запит переривання, виконуючи два послідовних цикли INТА. Якщо в цих циклах з'являється запит шини по лінії HOLD (у мінімальному режимі) чи RQ - GF(у максимальному режимі), то він не сприймається до завершення обох циклів INТА. У максимальному режимі МП
генеруємо в цих циклах сигнал блокування шини LОСК, щоб інші процесори не намагалися запитувати шину.
Запити
па немасковане переривання надходять
по входу NМ1
і звичайно використовуються для
переривання роботи МП при "катастрофічних"
подіях. Вхід NМ1сприймає
перехід сигналу від низького рівня до
високого (позитивний
фронт), щоб поточна програма не переривалася
від одного сигналу NM
– 1 – І кілька разів. Запити
NМ1
запам'ятовуються в МП і мають більш
високий пріоритет, чим переривання по
входу INТR.
Обробка
немаскованого переривання не залежить
від стану прапора 1F.
Немаскованому перериванню привласнюється
фіксований код типу 2, що автоматично
формується усередині МП. Тому у відповідь
на NМ1
цикли шини підтвердження переривання
INТR
не формуються, що прискорює реакцію МП
на запити немаскованих переривань.
Внутрішні переривання характеризуються типом переривання, що або визначений, або втримується в коді команди, а також тим, що цикли шини підтвердження переривання INTA не формуються й внутрішні переривання не можуть бути заборонені (крім покрокового переривання).
Переривання помилково розподілу (тип 0) генерується мікропроцесором відразу після виконання команд розподілу DIV і IDIV, якщо формат частки перевищує формат одержувача або у випадку розподілу на нуль. Час реакції МП на переривання типу 0 і виконання відповідної підпрограми варто враховувати при оцінці тривалості команди розподілу в найгіршому випадку.
Переривання по переповненню (тип 4) генерується по однобайтовой команді INTO, якщо встановлено прапор OF.
Покрокове переривання (тип 1) виробляється автоматично при TF = = 1 після виконання кожної команди або пари команд, якщо перша команда змінює вміст сегментного регістра. Звичайно це переривання використовується в програмах налагодження для реалізації покомандного виконання програми. При обробці переривання МП включає в стек регістри F, CS і IP, а потім скидає прапори IF і TF. Тому після виклику підпрограми МП працює звичайним образом, а не в покроковому режимі. Підпрограма обробки покрокового переривання звичайно здійснює індикацію внутрішніх регістрів МП і вмісту деяких комірок пам'яті. Коли підпрограма завершується, зі стека витягають колишні стани прапорів і МП знову переводиться в покроковий режим роботи.
Як ми вже відзначали, МП ВМ86 не має команд установки й скидання прапора TF. Відсутні також команди, які дозволили б організувати пересилання між старшим байтом регістра F і загальним регістром МП. Стан прапора TF можна змінювати, впливаючи на нього після включення регістра F у стек. Для включення регістра F у стек і добування його зі стека передбачені відповідно команди PUSHF і POPF. Значення TF=1 установлюється шляхом об'єднання по АБО вмісту регістра з константою 0100, a TF = 0 -шляхом об'єднання по И с константою FEFF. Якщо встановлено ТТ=1, то перше покрокове переривання відбудеться після виконання команди, що випливає за командою повернення з підпрограми обробки покрокового переривання.
У
покроковому режимі МП реагує на зовнішні
й внутрішні переривання. Звичайним
шляхом (із включенням у стек регістрів
CS, IP і F) здійснюється перехід на
підпрограму обробки виниклого переривання.
Однак до
виконання першої команди цієї підпрограми
розпізнається покрокове переривання
й керування передається підпрограмі
обробки покрокового переривання типу
1, після завершення якої МП вертається
до
виконання підпрограми прийнятого раніше
переривання.
Переривання, обумовлене користувачем при складанні програми, здійснюється по двухбайтовой команді INT п, у якій тип переривання
вказується в другому байті команди. Команда INTn викликає необхідну підпрограму, як і команда CALL, однак при переході на підпрограму команда INTn здійснює запам'ятовування не тільки адреси повернення (CS і IP), але й регістра прапорів F. При цьому виконується межсегментний перехід, причому адреса підпрограми розташовується не у форматі команди або в довільній комірці пам'яті, а в спеціально сформованій таблиці.
Процедури програмних переривань зручно застосовувати в системах, де допускається динамічне переміщення програм (процедур) при їхньому виконанні. Оскільки таблиця покажчиків перебуває у фіксованій області пам'яті, процедури можуть викликати один одного через цю таблицю. Цим забезпечується стійка взаємодія, що не залежить від адрес процедур, якщо переміщення процедури в пам'яті супроводжується відповідною модифікацією таблиці покажчиків.
Однобайтовая команда INT3 викликає переривання типу 3, що визначене як переривання контрольної крапки (крапки розриву). Контрольною крапкою може бути будь-яке місце в програмі, де нормальне її виконання переривається й виробляються деякі спеціальні дії. Контрольні крапки звичайно вводяться при налагодженні як засіб індикації вмісту регістрів, комірок пам'яті й портів уведення в критичних місцях програми. Цю команду можна також використовувати, щоб вставити додатковий фрагмент програми без її повторної трансляції.
Процедура обслуговування переривань. Зв'язок між кодом, що визначає тип переривання, і підпрограмою (процедурою) обслуговування переривання встановлюється за допомогою таблиці покажчиків векторів переривань. Повна таблиця займає 1 Кбайт пам'яті і містить 256 елементів, розташованих по адресах О--ЗFF. Кожен елемент в таблиці містить два слова, що визначають початкову логічну адресу підпрограми. Слово з великою адресою містить базова адреса сегмента, а слово з меншою адресою - зсув підпрограми від початку кодового сегмента. При переході на підпрограму зсув завантажується в регістр F, а адреса сегмента завантажується в регістр CS. Тому що розмір кожного елемента таблиці складає 4 Байт, МП обчислює адресу (зсув) необхідного елемента шляхом множення типу переривання на 4.
Коли
здійснюється перехід на підпрограму
обслуговування переривання, вміст
регістра F
(разом із вмістом регістрів СS
і F)
запам'ятовується в стеці прапор 1F
(а також прапор ТF)
скидається. Тим самим автоматично
забороняються зовнішні переривання по
входу NМ1,
що потрібно, наприклад, для захисту
початкової ділянки підпрограми, в плин
якого здійснюється включення до стек
внутрішніх регістрів МП. Потім підпрограма
може дозволити зовнішні переривання
командою SТ1.
Крім того, вона може бути перервана
запитом на вході NМ1
і внутрішніми перериваннями. Наприкінці
підпрограми відновлюють вміст регістрів
МП. Підпрограма обробки переривання
повинна закінчуватися командою повернення
з переривання
IRЕТ,
який передує команда дозволу переривань
SТ1.
Перед виконанням команди IRЕТ
стік повинний бути в тім стані, у якому
він був відразу після виклику підпрограми.
Тоді ця команда витягає три верхні слова
зі стека в регістри IF,
CF
і F,
що забезпечує повернення
до
команди, що виконувалася раніше.