- •Конспект лекцій з дисципліни “Мікропроцесорні пристрої”
- •1 Основи теорії мікропроцесорних пристроїв
- •Класифікація мікропроцесорів. Варіанти архітектури
- •Базова структура мікропроцесорної системи
- •Основні характеристики мп
- •Типова структура мікропроцесора
- •Система команд мп і режими адресації
- •Організація передачі інформації в мпс. Інтерфейс
- •1.6.1 Способи передачі інформації
- •Методи обміну інформацією в мікропроцесорній системі
- •2 Мікроконтролери
- •Структура мк
- •Процесорне ядро мк
- •Резидентна пам'ять мк
- •Порти уведення/виводу
- •Таймери і процесори подій
- •Аналогово-цифрові й цифро-аналогові перетворювачі
- •Мінімізація споживання енергії в мп-системах
- •Моніторинг напруги живлення мк
- •Апаратні і програмні рішення по підвищенню надійності роботи мк
- •Контролери Intel mcs-51
- •3.1 Структурна організація Intel 8051
- •3.1.1 Арифметично-логічний пристрій
- •Зовнішня пам'ять
- •Пристрій керування і синхронізації
- •Програмна модель омк
- •Система команд Intel 8051
- •Арифметичні операції:
- •Логічні команди:
- •Бітові команди:
- •Периферійні присторої омк
- •Порти введення/виводу
- •Звертання до портів можливе тільки за прямою адресою.
- •Лічильники/таймери
- •Послідовний порт
- •Примітка
- •Мікроконтролер pic16f877
- •Характеристика мікроконтролера
- •Cтруктурна схема мікроконтролера pic16f877
- •Організація пам'яті
- •Пам’ять програм
- •Організація пам'яті даних
- •Регістр стану status
- •Лічильник команд
- •Порти введення/виводу
- •Регістри portа і trisa
- •Регістри portb і trisb
- •Регістри portc і trisc
- •Регістри portd і trisd
- •Регістри porte і trise
- •Таймери
- •Модуль таймера tmr0
- •Модуль таймера tmr1
- •Модуль таймера tmr2
- •Модуль 10-розрядного ацп
- •Adcon0 (адреса 1Fh)
- •Adcon1 (адреса 9Fh)
- •Переривання
- •Сторожовий таймер wdt
- •Біти конфігурації
- •Слово конфігурації (адреса 2007h)
- •Система команд
- •Література
Система команд мп і режими адресації
МП працює в складі МПС, обмінюючись інформацією з пам'яттю й зовнішніми пристроями. В основі роботи МП лежить командний цикл – дії за вибором з пам'яті й виконанням однієї команди. Залежно від типу й формату команди, способів адресації й кількості операндів командний цикл може містити в собі різну кількість звертань до пам'яті й зовнішніх пристроїв й мати різну тривалість.
Будь-який командний цикл (КЦ) починається з добування з пам'яті першого байта команди за адресою, що зберігається в лічільнку команд. Команди можуть мати довжину 1, 2 або 3 байти, причому в першому байті міститься інформація про довжину команди. У випадку 2- або 3-байтової команди реалізуються додаткові звертання до пам'яті за сусідніми (більшими) адресами.
Після зчитування команди починається її виконання, причому в процесі виконання може знадобитися ще одне або кілька звертань до пам'яті або зовнішнього пристрою (читання операнда, запис результату).
Дії МПС з передачі в/із МП одного байта даних/команди називаються
машинним циклом.
Командний цикл являє собою послідовність машинних циклів (МЦ). МЦ обов'язково містить у собі дії з передачі байта інформації. Крім того у деяких МЦ додатково реалізуються дії з пересилання і/або перетворення інформації усередині МП. Тому тривалість МЦ може бути різною: за рахунок різної кількості машинних тактів, що вміщуються в них (T1, T2...).
Машинний такт пов’язаний із сигналами тактового генератора, тому тривалість такту постійна – період тактового генератора.
Таким чином, проглядається ієрархія процедур при роботі мікропроцесора:
Командний цикл Машинний цикл Машинний такт.
Кожному такту відповідає певний стан керуючого автомата. Будь- який МЦ обов'язково містить такти, призначені для передачі байта інтерфейсом. МЦ, у яких здійснюється передача і/або перетворення інформації в МП, містять додатково один або два такти.
Таким чином, у машинному циклі виконуються наступні дії:
видача адреси;
видача інформації про початий МЦ (PSW);
аналіз значення вхідних сигналів;
при необхідності – очікування сигналу READY = 1;
прийом/видача даних;
при необхідності – внутрішня обробка/пересилання даних. При реалізації одного МЦ процесор може:
прийняти з пам'яті байт команди;
прийняти з пам'яті байт даних;
прийняти з ПВВ байт даних;
прийняти зі стека байт даних;
прийняти вектор переривання;
видати на запис байт даних;
видати в стек байт даних;
видати на ПВВ байт даних.
Усі команди являють собою послідовність байт, що містить комбінації 1 і 0. Конструкція команд зі специфікацією різних груп біт називається форматом команди.
Частина команди, що визначає виконувану дію, називається кодом операції (КОП).
Будь-яка адреса, або дані, необхідні для виконання операції, називається операндом.
Найбільш гнучка операція вимагає до 3 операндів.
Якщо байт містить 8 біт, а для завдання адреси потрібно 16 біт, то чотирьохоперандова команда займе 8 байт пам'яті, без коду операції.
Тобто якщо основний критерій – максимальна гнучкість, то виходить повільний МП з величезною пам'яттю, отже, у більшості МП для команди використають не більше 2 операндів. Це досягається:
адреса команди вказується тільки в командах переходу. В інших командах основна команда вибирається з комірок пам'яті;
використання комірки, у якій перебуває один з операндів для запам'ятовування операндів.
Подальше скорочення кількості байт досягається розміщенням одного з них або обох у регістрах ЦП, що мають короткі адреси.
У деяких командах обходяться тільки одним операндом – однооперандні команди.
У двооперандних командах один операнд звичайно змінюється командою, а другий – ні. Тому що інформація береться тільки з одного операнда, цей операнд називається джерелом. Операнд, зміст якого змінюється, називається одержувачем.
Локалізацію й звертання до операнду забезпечують режими адресації. При введенні декількох режимів адресації необхідно відвести в команді біти, що вказують режим адресації для кожного операнда.
У всіх форматах команд перший байт приділяється для коду операції. Інші байти повинні визначати операнди або їхні комірки, і тому вони використовуються для запам'ятовування адреси регістра, адреси пам'яті.
Класифікація команд за основними ознаками подана на рисунку 1.5. Найважливішим структурним елементом формату будь-якої команди є код операції (КОП), що визначає дію, яка має бути виконана. Велика кількість КОП у процесорі дуже важлива, тому що апаратна реалізація команд заощаджує пам'ять і час. Кількість бітів, що відводиться під КОП, є функцією повного набору реалізованих команд. При використанні фіксованої кількості бітів під КОП для кодування всіх команд необхідно в поле КОП виділити достатню кількість двійкових розрядів. Однак, з огляду на обмежену довжину слова МП, різне функціональне призначення команд, джерела й приймачі результатів операцій, а також те, що не всі команди містять адресну частину для звертання до пам'яті й периферійних пристроїв, у МП для кодування команд широко використовується принцип кодування зі змінною кількістю бітів під поле КОП для різних груп команд. Для взаємодії з різними модулями в МПС повинні бути засоби ідентифікації комірок зовнішньої пам'яті, комірок внутрішньої пам'яті, регістрів МП і регістрів пристроїв уведення/виводу. Тому кожній із запам'ятовувальних комірок привласнюється адреса, тобто однозначна
комбінація біт. Кількість біт визначає кількість ідентифікованих комірок.
Рисунок 1.5 – Класифікація команд
Звичайно МП має різні адресні простори пам'яті й регістрів МП, а іноді – окремі адресні простори регістрів пристроїв уведення/виводу й внутрішньої пам'яті. Крім того пам'ять зберігає як дані, так і команди. Тому для МП розроблена безліч способів звертання до пам'яті, називаних режимами адресації.
Режим адресації пам'яті – це процедура або схема перетворення адресної інформації про операнда на його виконавчу адресу.
Усі способи адресації пам'яті можна поділити на:
Неявну адресацію: адреса джерела й приймача зазначені в команді неявно (вони убудовані в команді MOV A, B).
Безпосередню адресацію: адреса команди є безпосередньою частиною самої команди, за кодом операції записані дані, які надає програміст при запису команди.
Пряму адресацію: 1-й байт – код операції, 2-й байт – адреса, звідки беруться дані, 3-й байт – куди записується результат.
Регістрову адресацію: схожа на неявну, де адреси регістрів є частиною команди.
Непряму адресацію: у комірці, адреса якої визначається як частина команди, визначається адреса операнда, комірка може бути регістром, отже, регістр непрямої адресації або комірка пам'яті.
Базову адресацію: адреса утвориться в результаті додавання вмісту комірки пам'яті і регістра з певним числом, використається з непрямою адресацією, застосовна до масивів або для переміщення програми в пам'яті.
Індексну адресацію: декремент адреси, коли МП звертається до суміжних або рівно розподілених адрес, досягається шляхом послідовного зменшення адреси або шляхом додатка до фіксованої адреси числа, на якому відбувається інкремент або декремент; індексування в основному застосовується для послідовної адресації елементів масиву.
Автоінкремент: автоматичне збільшення або зменшення адреси на 1.
Адресацію базової сторінки: різновид непрямої адресації, коли зазначена адреса є адресою комірки в сторінці, а вміст комірки являє собою потрібну адресу.
Відносну адресацію: адреса дорівнює сумі числа й поточного вмісту програмного лічильника, число – адреса операнда щодо команди й звичайно є частиною команди, але може втримуватися в робочому регістрі.
