Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МПТ.doc
Скачиваний:
65
Добавлен:
03.11.2018
Размер:
20.52 Mб
Скачать

Адресування пам'яті і організація вводу-виводу

1) Розміщення байтів і слів в пам'яті.

Пам'ять логічно організована як одновимірний масив байтів, кожний з яких має 20-бітову фізичну адресу в діапазоні 00000-FFFFF. Будь-які два суміжних байти в пам'яті можна розглядати як 16-бітове слово. Молодший байт слова має меншу ад­ресу, а старший-більшу. Повна інформація, необхідна для визначення фізичної адре­си, міститься в покажчику адреси. Для запам'ятовування покажчика адреси не­обхідно два слова пам'яті, причому слова з меншою адресою завжди містить зміщення, а з більшою-базову адресу сегмента.

Рисунок 4.28-Розміщення слова в памяті.

2) Сегментація пам'яті і обчислення адреси.

Простір пам'яті в 1 МБайт представляється як набір сегментів, що визначають­ся пограмним шляхом. Сегмент складається з суміжних комірок пам'яті і є незалеж­ною і окремо заадресованою одиницею пам'яті ємністю в 64 КБайт. Кожному сег­менту програмою призначається початкова (базова) адреса, що є адресою першого байта сегмента в просторі пам'яті. Оперативна та постійна пам'ять МП системи на основі МП 86 утворюють єдиний простір пам'яті із спільною адресацією 1048576 8-розрядних комірок від 00000 до FFFFF. Двобайтові операнди займають дві сусідні комірки, причому молодший байт операндa розміщається у комірці з меншою адресою, яка і вважається адресою цілого операндa. Комірки з адресами від 00000 до 003FF, а також від FFFF0 до FFFFF бажано зарезервувати для обслуговування пере­ривань та для початкового встановлення МП системи при включенні живлення. Максимальна ємність кожного з сегментів пам'яті- 64 КБайт, тобто одночасно МП має доступ до 256 КБайт пам'яті. На рисунку 4.29 наведений приклад розміщення сег­ментів у просторі пам'яті МП системи.

При необхідності збільшення об'єму будь-якого з сегментів потрібна зміна початко­вої адреси у відповідному сегментному регістрі. Будь-який з сегментів може бути відсутній, а для нескладних програм, де загальний обсяг оперативної та постійної пам'яті не перевищує 64 КБайт, всі сегменти можна об'єднати (сегментні регістри мають однакову початкову адресу). Початкові адреси чотирьох сегментів записують в регістри СS, DS, SS і ЕS, тим самим фіксуючи біжучі сегменти коду, даних, стеку і додаткових даних. Для звернення до команд і даних, які знаходяться в інших сег­ментах, необхідно змінити вміст сегментних регістрів, що дозволяє використовувати весь простір пам'яті. Сегментні регістри ініціалізуються програмним шляхом при запису в них відповідних констант.

МП ВМ 86 генерує 20-бітову адресу за таким алгоритмом:

фізична адреса=зміщення+16(регістр сегмента).

На рисунку 2.6 поданий приклад обчислення фізичної адреси:

Для обчислення фізичної адреси база сегмента зміщується на 4 біти вліво і сумується зі зміщенням. На малюнку приведені можливі джерела компонентів логічної адреси (ЕА-ефективна адреса, яка обчислюється у відповідності до способу адре­сації).

Джерела логічної адреси для різних типів звернення до памяті приведені в таб­лиці 4.11.

Таблиця 4.11.

Тип звернення до памяті

Сегмент

(без означення)

Варіант

Зміщення

Вибірка команд

СS

Hемає

IP

Стекові операції

SS

Немає

Змінна

DS

СS,SS,ЕS

ЕА

Ланцюжок-джерело

DS

СS,SS, ЕS

SI

Ланцюжок-приймач

ЕS

Нема

DI

ВР як базовий регістр

ЕS

СS,SS, ЕS

EA

Таким чином, команди завжди вибираються із біжучого сегмента коду у відповідності з логічною адресою СS:ІР. Стекові команди завжди звертаються до сегмента стеку за адресою SS:SР. Якщо при обчисленні адреси EА використовується регістр ВР, тоді звернення відбувається до стекового сегмента, але при цьому він функціонує як ОЗП з довільною вибіркою.

2) Організація вводу-виводу

Ввід-вивід даних може здійснюватися двома способами: з використанням ад­ресного простору вводу-виводу і з використанням загального з памяттю адресного простору, тобто відображенням на память.

При першому способі використовуються спеціальні команди IN (ввід) і ОUТ (вивід), які забезпечують передачу даних між акумуляторами АL або АХ і адресова­ними портами. При використанні цих команд генеруються сигнали М/IО=0, які за­безпечують вибір простору вводу-виводу і в сукупності з сигналами WR і RD формуються системні сигнали IOW і IOR для керування операціями запису даних в порт або читання з порта.

Команди ЇN і OUT можуть використовувати пряму адресацію, коли адреса порту представлена константою у другому байті команди і опосередковану, коли ад­реса розмішується в регістрі DХ. В першому випадку можна заадресувати до 256 портів для вводу і виводу даних. В другому забезпечується адресний простір до 64 К 8-бітових портів.

При другому способі адреси портів розміщуються в загальному адресному просторі. Це підвищує гнучкість програмування, оскільки для вводу-виводу можна використати будь-яку команду звернення до памяті.

Організація переривань

Мікропроцесор ВМ 86 має ефективну систему переривань, в якій кожному пе­рериванню поставлений у відповідність код (від 0 до 255). Переривання можуть ініціюватись зовнішніми пристроями (зовнішнє переривання) або командами про­грамних переривань, а також інколи-автоматично самим МП (внутрішнє перериван­ня). Можливі джерела переривань показані на рисунку 4.31.

Рисунок 4.31 -Джерела переривань

Переривання заставляє МП тимчасово зупинити виконання поточної програми і перейти до виконання підпрограми обробки переривань. При цьому в стеці запамятовується адреса повернення (СS і РІ) і вміст регістра індикаторів F, а спеціальними командами на початку і в кінці підпрограми зберігають та відновлюють вміст інших необхідних регістрів.

Зовнішнє переривання. Запит на зовнішнє переривання поступає в МП двома входами: ІNTR і NМІ. Запит на масковані переривання від ЗвП надходять на програ­мований контролер переривань К1810 ВМ59А, який формує сигнал на вхід INTR=1. Дія МП залежить від стану індикатора IF дозволу переривання. Якщо IF=0, перери­вання по входу заборонено (замасковано) і МП переходить до іншої команди. Коли МП відповість на сигнал ІNTR, підтвердженням INТА=1 і ІF=1, то він розпізнає за­пит переривання і обробляє його (в другому такті INТА2, контролер переривань по­силає байт, що характеризує тип переривань). Станом індикатора ІF програміст може керувати при допомозі команди SТІ (установка) і СLI (обнуління).

Запит на немасковані переривання по входу NMI використовуються для пере­ривань роботи МП в аварійних ситуаціях (пропадання живлення, виявлення помилок пам'яті тощо). Перериваня відбуваються за переднім (додатнім) фронтом на вході NМІ, при цьому МП формує код типу 2. Стан індикатора IF не впливає на даний тип переривань.

Внутрішнє переривання характеризується типом переривань, які або передба­чені або містяться в коді команд.

Переривання за помилкою ділення (тип 0) генерується МП після виконання команд ділення DIV і IDIV, якщо результат ділення перевищує формат приймача або при діленні на нуль.

Переривання по переповненню (типу 4) генерується однобайтовою командою INTО, якщо установлений індикатор ОF.

Покрокове переривання (тип 1) генерується автоматично при ТF=1 після вико­нання кожної команди. Стан індикатора ТF можна задати тільки через стек шляхом накладання відповідної маски на вміст регістра F в стеку.

Переривання, яке визначається користувачем при складанні програм, здійснюється двобайтовою командою INТ n в якому тип переривання вказується у другому байті команди. Команда ІNТ n викликає необхідну підпрограму, як і коман­да САLL.

Однобайтова команда INТЗ викликає переривання типу 3, яке визначає пере­ривання контрольної точки. Контрольною точкою може бути будь-яке місце в про­грамі, де відбувається переривання і здійснюються деякі спеціальні дії (індикація вмісту регістрів, памяті і портів при відлагодженні).

Процедура обслуговування переривань. Звязок між кодом, який визначає тип переривання і підпрограмою обслуговування переривань встановлюється при допомозі таблиці вказівників векторів переривань (рисунок 4.32). Повна таблиця займає 1 КБайт памяті і містить 256 елементів. Кожний елемент таблиці містить два слова, які визначають початкову логічну адресу підпрограми. Слово з більшою адресою є базова адреса сегмента, а слово з меншою адресою-зміщення програми від початку кодового сегмента.

Структура підпрограми переривань повинна бути такою:

1) Занести в стек ті регістри МП, які будуть використані в підпрограмі;

2) Дозволити, якщо необхідно, зовнішнє переривання командою STI;

3) Забезпечити заборону повторного переривання за процедурою даного вектора переривань;

4) Основна процедура обслуговування переривань;

5) Заборонити переривання по входу INTR, командою CLI;

6) Відновити вміст регістрів, занесених в стек;

7) Дозволити переривання по входу INTR командою STI;

8) Вихід з підпрограми IRET.

Рисунок 4.32

Функціонування мікропроцесора

Виконання команд можна представити послідовністю циклів шини (циклів обміну), протягом яких МП звертається до памяті за командами або

обмінюється даними з периферійними пристроями. Кожний цикл шини ініціюється пристроєм шинного інтерфейсу і містить чотири обовязкові такти Т1-Т4. В такті Т1 видається адреса на суміщену шину адреси/даних, в такті Т2 здійснюється комутація напрямку передачі, в тактах Т3 і Т4-передача даних.Функціонування МП ВМ86 в мінімальному режимі ілюструється діаграмами на рисунку 4.33.

Рисунок 4.33-Часові діаграми роботи ВМ86 в мінімальному режимі

Цикл починається з формування в такті Т1 сигналу М/IO, який визначає тип пристрою (запамятовуючий пристрій чи зовнішній пристрій), до якого відбувається звернення для пересилки даних. Тривалість сигналу М/IO рівна тривалості циклу шини, і він використовується для селектування адреси пристрою. В такті Т1 і на початку Т2 МП формує адресу запамятовуючого пристрою (ЗпП) на лініях А19-А16 і AD15-AD0 або адресу зовнішнього пристою (ЗвП) на лініях AD15-AD0, а також виробляє сигнал ВНЕ, який сумісно з А0 визначає передачу слова або одного з байтів. Одночасно формується строб адреси ALE, за спадом якого адреса фіксується у внутрішніх регістрах-фіксаторах, на виході яких адреса зберігається протягом всього циклу шини.

В такті Т2 відбувається перемикання шин: на лініях А19/S6-A16/S3 появляються сигнали стану S6-S3, які зберігаються до кінця такту Т4.

В циклі читання в такті Т2 лінії AD15-AD0 переходять в третій стан до появи даних від адресованого пристрою. В такті Т2-Т4 виробляється сигнал читання RD=0, який вказує цьому пристрою на необхідність передачі даних. Для керування буферами даних, які підключені до ліній AD15-AD0, в тактах Т2-Т4 формується сигнал , який дозволяє передачу даних. Напрям передачі даних при читанні визначається сигналом DT/R=0, який діє протягом всього циклу.

Після виконання читання і установлення сигналу RD=1 МП закінчує такт Т4 наступним чином: лінії А15-А0 переходять в третій стан, сигнали М/IO, DE, DT/R, S7-S3 неактивні, буфери даних відключені від каналу.

В циклі запису в такті Т2 адреса на лініях AD15-AD0 замінюється даними, які треба записати в адресований пристрій. Дaні залишаються дійсними до середини такту Т4 і супроводжуються сигналом WR=0, який є стробом запису даних в пристрій. Сигнал DE=0 появляється в такті Т1 і використовується для підготовки буферів до передачі даних.

Сигнал DT/R=1, який перемикає буфери на передачу даних в напрямку до МП, утримується протягом всього циклу запису. Після установки WR=1 такт Т4 закінчуєтся аналогічно до циклу читання.

Таким чином, цикл читання і запису розрізняються не тільки активними значеннями сигналів RD або WR і станом сигналу DT/R, але і тим, що в циклі запису сигнали DE і WR стають активними раніше і мають більшу тривалість, ніж в циклі читання.

Крім основного режиму роботи МП ВМ86 характеризується особливими станами та режимами роботи.

Стан «зупинка» мікропроцесора ініціюється командою HLT, аналогічно до МП КР 580 ИК80. Вихід з цього стану можливий за умови надходження сигналів зовнішніх переривань або сигналу початкової установки.

Початкова установка забезпечується високим рівнем сигналу на вході RESET (CLR) мікропроцесора. При цьому зупиняється виконання всіх внутрішніх операцій і процесор починає процес початкової ініціалізації регістрів, який триває 10 тактів, і полягає у встановленні в нульовий стан індикаторів IF, TF, покажчика команд ІР та сегментних регістрів DS, ES i SS. До кодового сегментного регістру CS заноситься значення FFFF, що призводить до адресації першої команди програми з адресою FFFF0. Як правило, першою командою програми є команда безумовного переходу JMP до початку виконання програми.

Робота МП ВМ86 при виконанні команди WAIT (очікування) забезпечує синхронізацію із зовнішініми процесами. Під час дії команди WAIT стан мікропроцесора буде визначатись сигналом на вході TEST. Якщо на цьому вході високий рівень сигналу МП відключає свої магістральні шини від системи і очікує появи сигналу низького рівня на вході TEST. При появі і підтримці його на даному рівні на протязі шести машинних тактів процес виконання команд продовжується у звичайному порядку.

Режим прямого доступу до памяті аналогічний як і для процесора КР 580 ИК 80. Він ініціюється подачею на вхід HOLD ВМ86 одиничного сигналу запиту. По завершенні поточного машинного циклу МП формує сигнал HLDA підтвердження захоплення і переводить свої шини в третій стан.

Побудова блока центрального процесора

В однопроцесорних мікроЕОМ та мікроконтролерах МП ВМ86 працює в мінімальному режимі (MN/MX=1).При розробці структури блоку центрального процесора (ЦП) (рисунок 4.34) виникають задачі поділу (демультиплексування) шини адреси/даних (ШАД), буферування шин адреси (ША) і шини даних (ШД), а також формування системних керуючих сигналів для блоку памяті і зовнішніх пристроїв.

Перша задача вирішується при допомозі інтегральної схеми (ІС) К1810 ИР 82/83, яка виконує функції адресного фіксатора. Так як сигнал ВНЕ формується в той же інтервал часу, що і адресні сигнали, то його теж необхідно зафіксувати у фіксаторі. Тому на рисунку два 8-бітових регістри К1810 ИР82 забезпечують запамятовування 16 розрядів адреси. Для доступу до памяті ємністю в 1 МБайт необхідно підключити ще один регістр, на який подаються решта старших розрядів AD15, A19/S6-A16/S3.

Друга задача розвязується при допомозі двонаправлених 8-бітових шинних формувачів К1810 ВА86/87, які підсилюють сигнали системної шини даних.

Третя задача може бути розвязана при допомозі комбінаційних логічних схем, які формують необхідні керуючі сигнали на основі сигналів, які виробляє МП. Якщо в системі використовується адресний простір вводу-виводу, ізольований від простору памяті, то доцільно сформувати сигнали при допомозі системного контролера. Ці сигнали керують запамятовуючими

Рисунок 4.34-Структурна схема ЦП на основі ВМ86.

та зовнішніми пристроями. Роль формувачів цих сигналів можуть виконувати (рисунок 4.34) елементи АБО-НІ або дешифратор на три входи (наприклад К155 ИД7). Якщо ж в МПС ввід-вивід організований з відображенням на память, тоді сигнал M/IO не використовується і на ЗпП та ЗвП подаються сигнали RD i WR після підсилення.

Використані підсилювачі і формувачі повинні забезпечувати три вихідних стани для організації прямого доступу до памяті. В цьому випадку після переводу МП в стан захоплення ці підсилювачі переходять в третій стан за сигналом BUSEN від контролера ПДП. Якщо захоплення шин і обмін даними через ПДП не передбачений, то необхідність в такому підключенні відпадає.