Text
                    11010111
СХЕМОТЕХНИКА
ЭЛЕКТРОННЫХ
СИСТЕМ

Микропроцессоры
и микроконтроллеры

Особенности архитектуры
и функциональные возможности
В, 16, 32 и 64-разрядных процессоров
Системы команд языка Ассемблер
для разных типов микропроцессоров
Сигнальные и нейропроцессоры

СХЕМОТЕХНИКА ЭЛЕКТРОННЫХ СИСТЕМ Микропроцессоры и микроконтроллеры Санкт-Петербург «БХВ-Петербург» 2004
УДК 681.3(075.8) ББК 32.973-02я73 Б72 Бойко В. И. и др. Б72 . Схемотехника электронных систем. Микропроцессоры и микроконтроллеры/Авторы: В. И. Бойко, А. Н. Гуржий, В. Я. Жуйков, А. А. Зори, В. М. Спивак, Т. А. Терещенко, Ю. С. Петергеря. — СПб.: БХВ-Петербург, 2004. — 464 с.: ил. ISBN 5-94157-467-3 В книге рассматриваются следующие разделы курса: общие принципы построения микропроцессорных систем, однокристальные микропроцессо- ры, однокристальные микроконтроллеры, построение модулей памяти, сис- темы ввода/вывода, сигнальные процессоры и нейронные вычислители. Приведены примеры составления программ, проектирования микропроцес- сорных систем, методы расширения возможностей системы. После каждого подраздела есть контрольные вопросы. Для студентов, преподавателей и специалистов в области электронной и микропроцессорной техники УДК 681.3(075.8) ББК 32.973-02я73 Группа подготовки издания: Главный редактор Зам. главного редактора Зав. редакцией Редактор Компьютерная верстка Корректор Дизайн обложки Зав. производством Екатерина Кондукова Людмила Еремеевская Григорий Добин Анатолий Хрипов Натальи Смирновой Наталия Першакова Игоря Цырульникова Николай Тверских Затверждено ММстерством осв!ти i науки УкраТни як пщручник для студент1в вищих навчальних заклад1в Лицензия ИД Na 02429 от 24.07.00. Подписано в печать 30.09.04. Формат 70x1001/ie. Печать офсетная. Усл. печ. л. 37,41. Тираж 3000 экз. Заказ No 3550 "БХВ-Петербург", 190005, Санкт-Петербург, Измайловский пр., 29. Гигиеническое заключение на продукцию, товар No 77.99.02.953.Д.001537.03.02 от 13.03.2002 г. выдано Департаментом ГСЭН Минздрава России. Отпечатано с готовых диапозитивов в ГУП "Типография "Наука" 199034, Санкт-Петербург, 9 линия, 12 ISBN 5-94157-467-3 ° °МД Групп, 2004 © Оформление, издательство "БХВ-Петербург”, 2004
Содержание Глава 1. Общие принципы построения микропроцессорных систем.......1 1.1. Основные понятия и определения.............................1 Контрольные вопросы...........................................3 1.2. Организация шин............................................3 Контрольные вопросы...........................................5 1.3. Принципы построения микропроцессорных систем...............5 Контрольные вопросы..........................................10 1.4. Архитектура микропроцессора...............................10 Контрольные вопросы..........................................14 1.5. Основы программирования на языке ассемблера...............14 Контрольные вопросы и задания................................34 Глава 2. Однокристальные микропроцессоры.........................37 2.1. Однокристальный 8-разрядный микропроцессор............... 37 Контрольные вопросы и задания................................54 2.2. Однокристальные 16-разрядные микропроцессоры..............55 Контрольные вопросы и задания................................80 2.3. Система команд МП /8086.................................. 81 Контрольные вопросы.........................................117 2.4. Построение модуля центрального процессора на базе i8086. 117 Контрольные вопросы и задания...............................124 Глава 3. Однокристальные универсальные микропроцессоры (старшие модели)................................................125 3.1. Микропроцессор /80286....................................125 Контрольные вопросы и задания...............................140 3.2. Архитектура 32-разрядных микропроцессоров................140 Контрольные вопросы и задания...............................155 3.3. Особенности архитектуры микропроцессоров i386 и i486.... 155 Контрольные вопросы и задания...............................161 3.4. Особенности архитектуры микропроцессоров Pentium.........162 Контрольные вопросы и задания...............................178 3.5. Особенности архитектуры 64-разрядных микропроцессоров....179 Контрольные вопросы и задания...............................181 Глава 4. Построение модулей памяти микропроцессорных систем.....183 4.1. Классификация систем памяти..............................183 Контрольные вопросы и задания...............................186
IV Содержание 4.2. Построение модуля постоянного запоминающего устройства..186 Контрольные вопросы и задания..............................190 4.3. Построение модуля оперативного запоминающего устройства статического типа............................................191 Контрольные вопросы и задания..............................194 4.4. Построение модулей оперативного запоминающего устройства динамического типа.......................................... 195 Контрольные вопросы и задания..............................199 4.5. Принципы организации кэш-памяти.........................199 Контрольные вопросы и задания..............................205 4.6. Принципы организации стековой памяти....................206 Контрольные вопросы и задания..............................209 Глава 5. Интерфейс устройств ввода/вывода......................211 5.1. Функции интерфейса ввода/вывода.........................211 Контрольные вопросы и задания..............................220 5.2. Программируемый параллельный интерфейс..................221 Контрольные вопросы и задания..............................234 5.3. Программируемый интерфейс клавиатуры и индикации........234 Контрольные вопросы и задания..............................249 5.4. Программируемый таймер................................. 249 Контрольные вопросы и задания..............................260 5.5. Архитектура и функциональные возможности контроллера прямого доступа к памяти................................... 261 Контрольные вопросы и задания..............................269 5.6. Программируемый последовательный интерфейс..............270 Контрольные вопросы........................................279 5.7. Программируемый контроллер прерываний...................279 Контрольные вопросы и задания..............................293 5.8. Пример разработки микропроцессорной системы.............293 Глава 6. Однокристальные микроконтроллеры с CISC-архитектурой..301 6.1. Архитектура и функциональные возможности однокристальных микроконтроллеров............................................301 Контрольные вопросы и задания..............................340 6.2. Система команд..........................................341 Контрольные вопросы и задания..............................351 6.3. Расширение возможностей однокристальных микроконтроллеров.352 Контрольные вопросы и задания..............................358 6.4. Применение однокристального микроконтроллера 83C51FA для управления двигателем постоянного тока...................358 Контрольные вопросы и задания..............................363 6.5. Архитектура и функциональные возможности 16-разрядных однокристальных микропроцессоров серии MCS 196/296.............364 Контрольные вопросы и задания................................376
Содержание V Глава 7. Однокристальные микроконтроллеры с RISC-архитектурой....377 7.1. Р1С-контроллеры...........................................377 Контрольные вопросы и задания................................384 7.2. Однокристальные AVR-микроконтроллеры......................385 Контрольные вопросы и задания................................391 7.3. Характеристики AVR-микроконтроллеров......................391 Контрольные вопросы и задания................................397 Глава 8. Сигнальные микропроцессоры..............................399 8.1. Сигнальные процессоры обработки данных в формате с фиксированной запятой........................................400 Контрольные вопросы и задания................................408 8.2. Сигнальные процессоры обработки данных в формате с плавающей запятой............................................409 Контрольные вопросы и задания................................417 8.3. Технические характеристики сигнальных процессоров.........418 Контрольные вопросы и задания................................427 Глава 9. Нейронные вычислители...................................429 9.1. Основные понятия и задачи нейронных вычислителей..........429 Контрольные вопросы и задания................................435 9.2. Основы построения алгоритмов обучения нейронных сетей.....436 Контрольные вопросы и задания................................437 9.3. Аппаратная реализация нейронных вычислителей..............437 Контрольные вопросы и задания................................444 Список литературы и ресурсов Интернета...........................445 К главе 1......................................................445 К главе 2......................................................445 К главе 3......................................................446 К главе 4......................................................446 К главе 5......................................................446 К главе 6......................................................447 К главе 7......................................................447 К главе 8......................................................448 К главе 9......................................................448 Предметный указатель.............................................449
Общие принципы построения микропроцессорных систем 1.1. Основные понятия и определения Микропроцессор (МП) — это устройство, которое осуществляет прием, об- работку и выдачу информации. Конструктивно МП содержит одну или не- сколько интегральных схем и выполняет действия, определенные програм- мой, записанной в памяти. Микропроцессорная система — это вычислительная, контрольно-измери- тельная или управляющая система, основным устройством обработки ин- формации в которой является МП. Микропроцессорная система строится из набора микропроцессорных БИС. Мультимикропроцессорная (или мультипроцессорная) система — система, которая образуется объединением некоторого количества универсальных или специализированных МП, благодаря чему обеспечивается параллельная обработка информации и распределенное управлений. Микропроцессорный комплект (МПК) — совокупность интегральных схем, совместимых по электрическим, информационным и конструктивным па- раметрам и предназначенных для построения электронно-вычислительной аппаратуры и микропроцессорных систем управления. В типичный состав МПК входят: БИС МП (один или несколько корпусов интегральных схем); БИС оперативных запоминающих устройств (ОЗУ); БИС постоянных за- поминающих устройств (ПЗУ); БИС интерфейсов или контроллеров внеш- них устройств; служебные БИС (тактовый генератор, регистры, шинные формирователи, контроллеры шин, арбитры шин). Мйкропроцессоры и МПК классифицируют по таким признакам: назначе- ние; количество БИС; способ управления; тип архитектуры; тип системы команд.
2 Глава 1 По назначению МП разделяют на универсальные и специализированные. Универсальными микропроцессорами являются МП общего назначения, кото- рые решают широкий класс задач вычисления, обработки и управления. Специализированные микропроцессоры предназначены для решения задач лишь определенного класса. К специализированным МП относятся: сигнальные; медийные, мультимедийные МП и транспьютеры. Сигнальные процессоры предназначены для цифровой обработки сигналов в реальном масштабе времени (например, для фильтрации сигналов, вычис- ления свертки, вычисления корреляционной функции, ограничения и пре- образования сигнала, выполнения прямого и обратного преобразования Фурье). К сигнальным процесорам относятся процессоры компаний Texas Instruments — TMS320C80, Analog Devices — ADSP2106x, Motorola — DSP560xx и DSP9600x. Медийные и мультимедийные процессоры предназначены для обработки ау- диосигналов, графической информации, видеоизображений, а также для решения ряда задач в мультимедиакомпьютерах, игровых приставках, бы- товой технике. К медийным и мультимедийным процессорам относятся процессоры компаний MicroUnity — Mediaprocessor, Philips — Trimedia, Cromatic Reserch— Mpact Media Engine, Nvidia — NV1, Cyrix —MediaGX. Транспьютеры предназначены для организации массовых параллельных вычислений и работы в мультипроцессорных системах. Для них характер- ным является наличие внутренней памяти и встроенного межпроцессорного интерфейса, т. е. каналов связи с другими БИС МП. К транспьютерам отно- сятся процессоры компании Inmos — Т-2, Т-4, Т-8, Т9000. По количеству БИС в МПК различают многокристальные МПК и однокри- стальные микроконтроллеры (ОМК). К многокристальным МПК относят МПК с однокристальными и секционными МП. Однокристальный микропроцессор — это конструктивно законченное изделие в виде одной БИС. Другое название однокристальных МП — микропроцессоры с фиксированной разрядностью данных. К этому типу относятся процессоры компаний Intel — Pentium (Р5, Р6, Р7), AMD — К5, Кб, Cyrix — 6x86, Diqital Equipment — Alpha 21064, 21164A, Silicon Graphics — MIPS R10000, Motorola — Power PC 603, 604, 620, Hewlett-Packard — PA-8000, Sun Micro- systems — Ultra SPARC II. В секционных микропроцессорах в одной БИС реализуется лишь некоторая функциональная часть (секция) процессора. Другое название секционных МП — разрядно-модульные микропроцессоры или микропроцессоры с наращи- ванием разрядности. Секционность БИС МП обуславливает значительную гибкость МПС, возможность наращивания разрядности данных, создание
Общие принципы построения микропроцессорных систем 3 специфических технологических команд из набора микрокоманд. К секци- онным относятся МП серий К589, К1804. Однокристальный микроконтроллер представляет собой устройство, выпол- ненное конструктивно в одном корпусе БИС и содержащее все основные составные части МПК. К таким микроконтроллерам относятся ОМК ком- паний Intel — MCS-196/296, MicroChip — PIC 17С4х PIC 17С75х, Mitsubishi Electric — M3820, Motorola —MC33035, MC33039. По способу управления различают МП со схемным и с микропрограммным управлением. Микропроцессоры со схемным управлением имеют фиксирован- ный набор команд, разработанный компанией-производителем, который не может изменяться потребителем. В микропроцессорах с микропрограммным управлением систему команд разрабатывают при проектировании конкрет- ного МПК на базе набора простейших микрокоманд с учетом класса задач, для решения которых предназначен МПК. По типу архитектуры, или принципу построения, различают МП с фонней- мановской архитектурой и МП с гарвардской архитектурой. По типу системы команд различают CISC-процессоры (Complete Instruction Set Computing) с полным набором команд и RISC-процессоры (Reduced Instruction Set Computing) с уменьшенным набором команд. Следует отметить, что многие МПК подпадают под разные классификаци- онные признаки, поскольку способны решать задачи разных классов. Так, существуют универсальные МП с мультимедийным расширением наборов команд, например, Pentium MMX, Pentium П, Cyrix 6х86МХ, AMD Кб, Ultra SPARC. В CISC-процессорах Pentium PRO реализовано ядро с RISC- архитектурой. Контрольные вопросы 1. Назовите составные части МПК. 2. По каким классификационным признакам делятся МП и МПК? 3. На какие задачи ориентированы специализированные МП? 4. Какие преимущества и недостатки имеют секционные МП по сравнению с однокристальными? 1.2. Организация шин Шина — это информационный канал, который объединяет все функцио- нальные блоки МПС и обеспечивает обмен данными в виде двоичных чисел.
4 Глава 1 Конструктивно шина представляет собой п проводников и один общий проводник (земля). Данные по шине передаются в виде слое. которые явля- ются группами бит. - В параллельной шине п бит информации передаются по отдельным линиям одновременно, в последовательной шине — по одной линии последовательно во времени. Параллельные шины выполняют в виде плоского кабеля, а по- следовательные — в виде коаксиального или волоконно-оптического кабе- ля. Коаксиальный кабель используют при передаче данных на расстояние до 100 метров, согласовывая передающие и приемные каскады с волновым сопротивлением линии. Волоконно-оптический кабель используют для пе- редачи на большие расстояния. Все основные блоки МПС соединены с единой параллельной шиной, кото- рая называется системной шиной SB (System Bus). Системная шина содержит три шины: адреса, данных и управления. Шина адреса АВ (Address Bus) явлется однонаправленной. Она предназна- чена для передачи адреса ячейки памяти или устройства ввода/вывода. На- правление передачи по шине адреса — от МП к внешним устройствам. Ва- рианты условных обозначений однонаправленной параллельной шины показаны на рис. 1.1, где стрелка указывает направление передачи. Рис. 1.1. Варианты условных обозначений однонаправленной параллельной 16-разрядной шины Число 16 на рис 1.1 обозначает разрядность шины. Допускается обозначе- ние шин и без указания разрядности. Шина данных DB (Data Bus) является двунаправленной. Она предназначена для передачи данных между блоками МПС. Информация по одним и тем же линиям DB может передаваться в двух направлениях — как к МП, так и от него. Варианты условных обозначений двунаправленной шины показаны на рис. 1.2. Рис. 1.2. Варианты условных обозначений двунапряавленной параллельной 8-разрядной шины
Общие принципы построения микропроцессорных систем 5 Шина управления СВ (Control Bus) предназначена для передачи управляю- щих сигналов. Хотя направление управляющих сигналов может быть раз- ным, однако шина управления не является двунаправленной, поскольку для сигналов разного направления используются отдельные линии. Обозначает- ся эта шина так же, как и однонаправленная (см. рис. 1.1). Контрольные вопросы 1. Укажите назначение и составные части системной шины. 2. Назовите принципы передачи информации по шинам: адреса; данных; управления. 3. Как передается информация по параллельным и последовательным шинам? 1.3. Принципы построения микропроцессорных систем В основу построения МПС-систем положено три принципа: □ магистральности; □ модульности; □ микропрограммного управления. Принцип магистральности определяет характер связей между функциональ- ными блоками МПС — все блоки соединяются с единой системной шиной. Принцип модульности состоит в том, что система строится на основе огра- ниченного количества типов конструктивно и функционально законченных модулей. Каждый модуль МПС имеет вход управления третьим (высокоим- педансным) состоянием. Этот вход называется CS (Chip Select) — выбор кристала, или ОЕ (Output Enable) — разрешение выхода. Действие сигнала CS для триггера показано на рис. 1.3. Выходной сигнал триггера Q появится на выходе лишь при активном (в данном случае — ну- левом) уровне сигнала CS. Если CS = 1, триггер переводится в высокоимпе- дансное состояние. Выход тригера является трехстабильным, т. е. может находиться в одном из трех состояний: логической единицы, логического нуля или высокоимпедансном. В каждый момент времени к системной шине МПС подсоединено лишь два модуля — передающий и принимающий ин- формацию. Остальные модули находятся в высокоимпедансном состоянии.
6 Глава 1 Принципы магистральности и модульности позволяют наращивать управ- ляющие и вычислительные возможности МП путем подсоединения других модулей к системной шине. Принцип микропрограммного управления состоит в возможности осуществле- ния элементарных операций — микрокоманд (сдвигов, пересылок инфор- мации, логических операций). Используя определенные комбинации мик- рокоманд, можно создать технологический язык, т. е. набор команд, который максимально соответствует назначению системы. В секционных процессорах набор микрокоманд можно изменить, используя другие микро- схемы памяти микрокоманд. Обобщенная структурная схема МПС показана на рис. 1.4. В состав МПС входят: □ центральный процессор (ЦП); □ ПЗУ; □ ОЗУ; □ система прерываний; □ таймер; □ устройства ввода/вывода (УВВ). Устройства ввода/вывода подключаются к системной шине через интерфей- сы ввода/вывода. Постоянное и оперативное запоминающие устройства образуют систему памяти, предназначенную для хранения информации в виде двоичных чи- сел. Постоянное запоминающее устройство предназначено для хранения программ управления, таблиц, констант; ОЗУ — для хранения промежуточ- ных результатов вычислений.
Общие принципы построения микропроцессорных систем 7 Память организована в виде массива ячеек, каждая из которых имеет свой адрес и содержит байт или слово. Байтом называется группа из 8 бит, а сло- во может иметь любую длину в битах. Наиболее часто под словом понима- ют двоичное число длиной два байта. Для обращения к ячейке памяти необ- ходимо выдать ее адрес на шину адреса. На рис. 1.5 изображена структура памяти с 8 однобайтными ячейками, где каждому адресу отвечает опреде- ленное содержимое ячейки. Так, ячейка с адресом ООО имеет содержимое 010111112 = 5F16. Рис. 1.4. Обобщенная структурная схема микропроцессорной системы управления Сегментом называется область памяти, которая начинается с любого адреса, кратного 16, и занимает до 64 Кбайт. Существуют три основных сегмента: □ сегмент кодов; □ сегмент данных; □ сегмент стека.
8 Глава 1 Адрес Данные ООО 01011111 001 00010011 010 01110111 011 00001100 100 00000000 101 11111111 110 10101010 111 11110000 Рис. 1.5. Структура памяти из 8 однобайтных ячеек Сегмент кодов содержит коды команд, которые адресуются сегментным ре- гистром кодов CS и регистром — указателем команд IP (Instruction Pointer). Регистр CS определяет начальный адрес сегмента кодов, а регистр IP — смещение в сегменте (расстояние от начала сегмента до ячейки, в которой находится адрес команды). Сегмент данных содержит данные, константы и рабочие области, необхо- димые для выполнения программы. Начальный адрес сегмента данных со- держится в регистре DS, а смещение в сегменте задается командой. Сегмент стека содержит адрес возврата из подпрограмм и данные. Регистр SS содержит начальный адрес сегмента стека, а регистр SP — смещение в сегменте. Некоторые операции используют дополнительный сегмент данных, началь- ный адрес которого задается регистром ES, а смещение в сегменте опреде- ляется командой. Двухбайтное смещение (16 бит) может находиться в пределах от 000016 до FFFFi6. Для обращения к любому адресу в программе выполняется сложе- ние адресов, которые находятся в регистре сегмента и смещения. Например, первый байт в сегменте кодов имеет смещение ноль, второй байт - единицу и т. д. до FFFFi6. Конкретный адрес команды (для сегмента кодов), ячейки памяти (для сег- мента данных и дополнительного сегмента) или ячейки стека (для сегмента стека) определяется результатом сложения адреса сегмента, который нахо- дится в соответствующем регистре, и смещения.
Общие принципы построения микропроцессорных систем 9 Модуль центрального процессора осуществляет обработку данных и управ- ляет всеми остальными модулями системы. Центральный процессор, кроме БИС МП, содержит схемы синхронизации и интерфейса с системной шиной. Он осуществляет выборку кодов команд из памяти, дешифрует их и выпол- няет. В течение времени выполнения команды — командого цикла — ЦП выполняет такие действия: 1. Выставляет адрес команды на шину адреса АВ. 2. Получает код команды из памяти и дешифрует его. 3. Вычисляет адрес операнда и считывает данные. 4. Выполняет операцию, определенную командой. 5. Воспринимает внешние управляющие сигналы, например, запрос преры- ваний. 6. Генерирует сигналы состояния и управления, необходимые для работы памяти и УВВ. Устройства ввода/вывода или внешние устройства — это устройства, пред- назначенные для ввода информации в МП или вывода информации из него. Примерами УВВ являются дисплеи, печатающие устройства, клавиатура, цифро-аналоговый и аналогоцифровой преобразователи, реле, коммутато- ры. Для соединения УВВ с системной шиной их сигналы должны соответст- вовать определенным стандартам, что реализуется с помощью интерфейсов ввода/вывода. Интерфейсы ввода/вывода называют также контроллерами или адаптерами. Микропроцессор обращается к интерфейсам с помощью специальных ко- манд ввода/вывода. При этом МП выставляет на шину адреса АВ адрес ин- терфейса, а по шине данных DB считывает данные с устройства ввода или записывает в устройство вывода. На рис. 1.5 показаны один интерфейс вво- да и один интерфейс вывода. Система прерываний позволяет МПС реагировать на внешние сигналы — запросы прерываний, источниками которых могут быть: сигналы готовно- сти от внешних устройств, сигналы от генераторов, сигналы с выходов дат- чиков. При появлении запроса на прерывание ЦП прекращает выполнение основной программы и переходит к выполнению подпрограммы обслужи- вания запроса прерывания. Для построения системы прерываний МПК со- держат БИС специальных программируемых контроллеров прерываний. Таймер предназначен для реализации функций, связанных с отсчетом вре- мени. После того как МП загружает в таймер число, задающее частоту, задержку или коэффициент деления, таймер реализует необходимую функцию.
10 Глава 1 Контрольные вопросы 1. Назовите принципы построения МПС и охарактеризуйте их. 2. Приведите типовую структуру МПС и объясните назначения функцио- нальных модулей. 3. Объясните назначение входа управления третьим состоянием. 1.4. Архитектура микропроцессора Понятие архитектуры микропроцессора определяет его составные части, а также связи и взаимодействие между ними. Архитектура включает: □ структурную схему МП; □ программную модель МП (описание функций регистров); □ информацию об организации памяти (емкость и способы адресации па- мяти); □ описание организации процедур ввода/вывода. Существуют два основных типа архитектуры — фоннеймановская и гар- вардская. Фоннеймаиовскую архитектуру (рис. 1.6, а) предложил в 1945 году американский математик Джо фон Нейман. Особенностью этой архитекту- ры является то, что программа и данные находятся в общей памяти, доступ к которой осуществляется по одной шине данных и команд. Гарвардская архитектура впервые была реализована в 1944 году в релейной вычислительной машине Гарвардского университета (США). Особенностью этой архитектуры является то, что память данных и память программ раз- делены и имеют отдельные шину данных и шину команд (рис. 1.6, 6), что позволяет повысить быстродействие МП системы. Структурные схемы обоих типов архитектур содержат: процессорный эле- мент, память, интерфейсы ввода/вывода (ИВВ) и УВВ. Память и ИВВ для разных типов МП могут быть как внутренними, т. е. размещаться на том же кристалле, что и процессорный элемент, так и внеш- ними. Процессорный элемент содержит регистры, арифметико-логическое устройство (АЛУ), устройство управления и выполняет функции обработки данных и управления процессами обмена информацией. Память обеспечи- вает хранение данных и кодов команд программы. Интерфейсы вво- да/вывода предназначены для связи с УВВ, например, с клавиатурой, дис- плеем, печатающими устройствами, датчиками. Все элементы структурной схемы соединены с помощью шин.
Общие принципы построения микропроцессорных систем 11 Память Шина j к адреса Шина данных и команд Процессорный элемент Регистры АЛУ Устройство управления Рис. 1.6. Основные типы архитектуры: а — фоннейманвская; б — гарвардская Расширенная структурная схема с процессором фоннеймановской архитектуры показана на рис. 1.7. Схема процессора содержит устройство управления, АЛУ и регистры: адреса, данных, команд, а также состояния, аккумулятор, указатель команд и указатель стека. Устройство управления вырабатывает управляющие сигналы для всех бло- ков структурной схемы МП в соответствии с кодами команд, внешними управляющими сигналами и сигналами синхронизации, а также управляет обменом информацией между МП, памятью и УВВ. Устройство управления реализует такие функции: начальная установка МП, синхронизация, прерыва- ния, согласование быстродействия модулей МПС. Функция начальной установки МП. Внешний сигнал начальной установки процессора RESET формируется при включении источника питания МП или при нажатии кнопки RESET. При появлении этого сигнала устройство управления обеспечивает загрузку нулевого значения в указатель команд, кото- рый инициирует выборку из памяти байта команды с нулевым адресом. В конце выборки содержимое указателя команд увеличивается на единицу, и выбирается байт команды со следующйм адресом. Таким образом выпол- няется вся записанная в памяти программа.
12 Глава 1 Рис. 1.7. Структурная схема МПС с процессором фоннеймановской архитектуры Функция синхронизации. В соответствии с внешними управляющими сигна- лами и сигналами синхронизации устройство управления синхронизирует работу всех блоков МП. Функция прерываний. С поступлением сигнала прерывания устройство уп- равления инициирует выполнение подпрограммы обработки соответст- вующего прерывания. Потребность в реализации функций прерываний воз- никает тогда, когда во время выполнения основной программы надо пере- вести МП на решение другой задачи, например, обработки аварийной ситуации или работы с УВВ. Функция согласования быстродействия модулей микропроцессорной системы. Во время обслуживания памяти и УВВ, быстродействие которых значитель- но меньше, чем у МП, согласование быстродействия реализуется генераци- ей тактов ожидания МП. Во время обслуживания устройств с большим бы- стродействием, чем у МП, используется режим прямого доступа к памяти. Арифметико-логическое устройство представляет собой комбинационную схему на основе сумматора, которая сигналами с выходов устройства
Общие принципы построения микропроцессорных систем 13 управления настраивается на выполнение определенной арифметической или логической операции: сложение, вычитание, логическое И, логическое ИЛИ, логическое НЕ, ИСКЛЮЧАЮЩЕЕ ИЛИ, сдвиг, сравнение, десятич- ная коррекция. Таким образом, АЛУ выполняет арифметические или логи- ческие операции над операндами, которые пересылаются из памяти и/или регистров МП. Операнд — это объект в виде значения данных, содержимого регистров или содержимого ячейки памяти, с которым оперирует команда. На- пример, в команде сложения операндами являются слагаемые. Операнд мо- жет задаваться в команде в виде числа либо находиться в регистре или ячейке памяти. Полученный после выполнения команды в АЛУ результат пересылается в регистр или ячейку памяти. Регистры предназначены для хранения n-разрядного двоичного числа. Они представляют собой п триггеров со схемами управления чтением/записью и выборки. Регистры создают внутреннюю память МП и используются для хранения промежуточных результатов вычислений. Аккумулятор — это регистр, в котором хранится один из операндов. После выполнения команды в аккумуляторе вместо операнда размещается резуль- тат операции. В 8-разрядных процессорах аккумулятор принимает участие во всех операциях АЛУ. В 16-разрядных МП большинство команд выпол- няется без участия аккумулятора, однако в некоторых командах (ввод, вы- вод, умножение, деление) аккумулятор действует так же, как и в 8- разрядных МП, т. е. сохраняет один из операндов, а после выполнения ко- манды — результат операции. Указатель команд или программный счетчик' предназначен для хранения адреса ячейки памяти, которая содержит код следующей команды. Про- грамма действий МП записана в памяти в виде последовательности кодов команд. Для перехода к следующей команде содержимое счетчика увеличи- вается на единицу в момент выборки команды из памяти. Таким образом, в конце выполнения команды в счетчике команд хранится адрес следующей команды. Указатель стека — это регистр, который хранит адрес последней занятой ячейки стека. Стеком или стековой памятью называется область памяти, которая организована по принципу "последним пришел — первым вышел". Регистр команд хранит код команды на протяжении всего времени выпол- нения команды. Регистр адреса и регистры данных предназначены для хранения адресов и данных, используемых во время выполнения текущей команды в МП. 1 В литературе используются два обозначения этого регистра. Обычно в МП используют обозначение IP (Instruction Pointer) — указатель команд, а в однокристальных микро- ЭВМ и микроконтроллерах — PC (Program Counter) — программный счетчик.
14 Глава 1 Регистр состояния или регистр флагов (признаков) предназначен для хра- нения информации о результате операции в АЛУ и представляет собой не- сколько триггеров, выходы которых находятся в единичном или нулевом состоянии. Например, флаг нуля устанавливается в единицу при нулевом результате операции. Контрольные вопросы 1. Дайте определение архитектуры МП. 2. Укажите различия между гарвардской и фоннеймановской архитектурами. 3. Какие функции выполняет устройство управления? 4. Что определяет содержимое счетчика команд? Как оно изменяется? 5. Чем отличается аккумулятор от других регистров МП? 1.5. Основы программирования на языке ассемблера Программа представляет собой последовательность команд, выполнение которых приводит к решению задачи. Команда определяет операцию, которую выполняет МП над данными. Команда содержит в явной или неявной форме информацию о том, где бу- дет помещен результат операции, а также об адресе следующей команды. Код команды состоит из нескольких частей, которые называются полями. Состав, назначение и расположение полей называется форматом команды. В общем случае формат команды содержит операционную и адресную час- ти. Операционная часть содержит код операции (например, сложение, ум- ножение, передача данных). Адресная часть состоит из нескольких полей и содержит информацию об адресах операндов, результата операции и сле- дующей команды. Формат команды, в котором адресная часть состоит из двух полей (признака адресации и адреса операндов), показан на рис. 1.8. Код операции (л? разрядов) Признак адресации (к разрядов) Адреса операндов (л разрядов) Операционная часть Адресная часть Рис. 1.8. Формат команды
Общие принципы построения микропроцессорных систем 15 Поле "признак адресации" определяет способ адресации операнда. Биты полей "Признак адресации" и "Адрес операндов" в совокупности определя- ют ячейки памяти, в которых хранятся операнды. Различают такие группы команд: □ команды передачи данных; □ команды ввода/вывода; □ команды обработки информации (арифметические, логические, сдвиг, сравнение операндов, десятичная коррекция); □ команды управления порядком выполнения программы (переход, вызов подпрограмм, возврат из подпрограмм, прерывания); □ команды задания режимов работы МП. Общее количество бит в коде команды называется длиной формата. Количе- ство двоичных разрядов m в поле "код операции" обеспечивает возможность представления всех операций, которые выполняет МП. Если МП выполняет М разных операций, то количество разрядов m определяется так: т > log 2 М. Если память содержит S ячеек, то количество разрядов п в поле "Адреса операндов", необходимое для записи адреса одного операнда, составляет: т > log 2 S. Длина формата команды определяет скорость выполнения команды и зави- сит от способа адресации операндов. Существуют следующие способы ад- ресации: прямая; косвенная; непосредственная; автоинкрементная (авто- декрементная); страничная; индексная; относительная. □ Прямая адресация. При прямой адресации адрес операнда указан непо- средственно в команде. В качестве примера рассмотрим команду МП К580ВМ80А (i8080) прямой загрузки аккумулятора содержимым ячейки памяти, расположенной по адресу 001216. Формат и схема выполнения этой команды показаны на рис. 1.9. В байте 1 команды (рис. 1.9, а) находится код команды пересылки дан- ных в аккумулятор из ячейки памяти, а в байтах 2 и 3 — адрес ячейки па- мяти. В байте 2 расположен младший (121б), а в байте 3 — старший (001б) байты адреса. На рис. 1.9, б ячейка памяти с адресом 0012|б имеет содержимое 110101112. Содержимое акумулятора до выполнения команды составляет ООООООООг. После выполнения команды значение содержимого ячейки памяти копируется в аккумулятор.
16 Глава 1 Байт 1 Байт 3 Код операции 12,. оо16 Операционная часть Адресная часть а Память Адреса Содержимое ячеек ячеек б Рис. 1.9. Команда прямой загрузки в аккумулятор содержимого ячейки памяти: a — формат команды; б — схема выполнения □ Косвенная адресация. При косвенной адресации в формате команды ука- зывается регистр, в котором хранится адрес ячейки памяти, содержащей операнд. Для хранения 16-разрядного адреса в 8-разрядном процессоре 8-разрядные регистры объединяются в регистровые пары. В первом реги- стре регистровой пары хранится старший байт адреса, а во второй — младший байт. Номер регистровой пары, в которой хранится адрес, яв- ляется двуразрядным двоичным числом, поэтому он размещается в од- нобайтной2 команде вместе с кодом команды. На рис. 1.10 показан пример выполнения команды МП К580ВМ80А кос- венной загрузки в аккумулятор содержимого ячейки памяти с адресом 001216, который хранится в регистровой паре DE. Команда косвенной за- грузки аккумулятора является однобайтной и, кроме кода операции, со- держит номер 01 регистровой пары DE. Старшая часть адреса ячейки па- мяти (001б) хранится в регистре D, а младшая часть (12|б) — в регистре Е. 2 Команда, длина формата которой 1 байт.
Общие принципы построения микропроцессорных систем 17 Содержимое регистровой пары передается в регистр адреса МП, в ре- зультате чего содержимое 110101112 ячейки с адресом 001216 копируется в аккумулятор. □ Непосредственная адресация. В первом байте команды с непосредствен- ной адресацией размещается код операции. Значения операндов заносят- ся в команду во время программирования и находятся во втором или втором и третьем байтах. Этими значениями в основном являются неко- торые константы, заранее известные программисту. В процессе выполне- ния программы значения операндов остаются неизменными, поскольку они вместе с командой размещаются в ПЗУ. Использование такого спо- соба не требует адресов операндов. В качестве примера на рис. 1.11 изображены формат и схема выполнения команды непосредственной загрузки аккумулятора значением 110101 И 2, которое хранится во втором байте команды. После выполнения команды это число копируется в аккумулятор. При каждом очередном обращении к этой команде в аккумулятор записывается такое же число. Код операции 01 a б Рис. 1.10. Команда косвенной загрузки аккумулятора: а — формат команды; б — схема выполнения
18 Глава 1 Рис. 1.11. Команда непосредственной загрузки аккумулятора □ Автоинкрементная (автодекрементная) адресация. При автоинкремент- ной адресации адрес операнда вычисляется так же, как и при косвенной адресации, после чего осуществляется увеличение содержимого регистра: на один — для обращения к следующему байту, на два — для обращения к следующему слову. Размер операнда определяется кодом операции. □ Страничная адресация. Во время использования страничной адресации память делится на ряд Страниц одинаковой длины. Адресация страниц осуществляется по содержимому программного счетчика или отдельного регистра страниц. Адресация памяти внутри страниц осуществляется ад- ресом, который содержится в команде. □ Индексная адресация. Для преобразования адреса операнда к значению ад- ресного поля команды прибавляется значение содержимого индексного регистра, которое называется индексом. □ Относительная адресация. При относительной адресации адрес операнда определяется сложением содержимого программного счетчика или дру- гого регистра с указанным в команде числом. Содержимое программно- го счетчика или другого регистра называется базовым адресом. Для хра- нения базовых адресов в МП могут быть предусмотренны базовые регистры или специально выделенные ячейки памяти. Тогда в адресном поле команды указывается номер базового регистра. В МПС используется программирование на языке ассемблера. Ассемблером называется и язык программирования в мнемокодах команд, и специальная программа-транслятор, которая переводит (транслирует) мнемокоды в ма- шинные коды, считываемые микропроцессором из памяти программ, де- шифрируемые и выполняемые. Процесс перевода в машинные коды называ- ется ассемблированием.
Общие принципы построения микропроцессорных систем 19 Программа на языке ассемблера содержит два типа выражений: □ команды, которые транслируются в машинные коды; □ директивы, которые управляют ходом трансляции. Выражение имеет вид: {(метка)}: (мнемокод) {(операнд)}{,}{( операнд )}{; комментарий}. В фигурных скобках приведены элементы выражения, которых может не быть в некоторых командах. Метка, мнемокод и операнды отделяются хотя бы одним пробелом или табуляцией. Максимальная длина строки составля- ет 132 символа, однако наиболее часто используются строки из 80 символов, что соответствует длине экрана. Примеры команд ассемблера'. Метка Мнемокод Операнд(ы) Комментарии MOV AX, 0 ; команда, два операнда Ml: ADD AX, BX ; метка, команда, два операнда DELAY: MOV CX, 1234 ; метка, команда, два операнда Пример директивы'. Метка Мнемокод Операнд(ы) Комментарии COUNT: DB 1 ; метка, команда, один операнд Метка на языке ассемблера является символическим адресом команды. Метками обозначаются не все команды, а лишь те, к которым надо выпол- нять переход с помощью команд переходов или вызовов подпрограмм. По- сле метки ставится двоеточие. Первым символом в метке может быть буква или один из специальных символов: вопросительный знак точка знак амперсанд подчеркивание "_";знак доллара "$". Вопросительный знак и точка могут занимать только первое место. Максимальная длина метки — 31 символ. Примеры меток: COUNT, PAGE25, $Е10. Рекомендуется использо- вать описательные и смысловые метки. Все метки в программе должны быть уникальными, т. е. не может быть нескольких команд с одинаковыми мет- ками. Нельзя использовать в качестве меток зарезервированные ассембле- ром слова, к которым принадлежат коды команд, директивы, имена регист- ров. Например, имена АХ, DI и AL являются зарезервированными и используются только для указания соответствующих регистров. В командах переходов или вызовов подпрограмм обозначения метки используется как операнд — символический адрес перехода, например: Метка Мнемокод Операнд(ы) Комментарии JMP CALL Ml DELAY ; переход к команде с меткой Ml ; вызов подпрограммы с меткой ; DELAY
20 Глава 1 Мнемокод идентифицирует команду ассемблера. Для мнемокодов исполь- зуют сокращенные или полные английские слова, которые передают значе- ния основной функции команды: ADD — прибавить, SUB (SUBtract) --- вычесть, XCHG (eXCHanGe) — поменять. Операнды отделяются запятыми. Если заданы два операнда, то первый из них всегда является источником, а второй — приемником информации. Команда может содержать различное количество операндов разных типов, например: Метка Мнемокод Операнд(ы) Комментарии RET INC ADD MOV ex AX, 12H BX, [SI] ; возврат (операнды не указанные) ; увеличить СХ (один операнд) ; прибавить 12Н к содержимому АХ ; (два операнда) ; занести в регистр ВХ число из ; ячейки памяти с адресом DS:SI ; (два операнда) Комментарии игнорируются в процессе трансляции и используются для до- кументирования и лучшего понимания содержания программы. Коммента- рий всегда начинается с символа и может содержать любые символы. Комментарий может занимать всю строку или быть расположенным за командой в одной строке, например: Мнемокод Операнд(ы) Комментарии ADD АХ, ВХ ; эта строка является комментарием. ; команда и комментарий в одной строке. Поскольку комментарии не транслируются в машинные коды, то их количе- ство не влияет на эффективность выполнения программы. Программа на языке ассемблера называется начальной программой или на- чальным программным модулем. Ассемблирование или перевод начальной программы в машинные коды выполняет программа-транслятор, например, TASM.CQM. В зависимости от установок, задаваемых пользователем, про- грамма переводит начальный модуль в один из двух программных модулей: командный модуль (файл с расширением СОМ) или объектный модуль (файл с расширением OBJ). Командный модуль содержит машинные коды команд с абсолютными адре- сами и выполняется микропроцессором. Командный модуль целесообразно использовать в тех случаях, когда емкость программы не превышает разме- ра одного сегмента (64 Кбайт). Первым оператором командного модуля яв- ляется директива ORG 100Н (ORIGIN — начало), которая располагает пер-
Общие принципы построения микропроцессорных систем 21 вую команду программы в сегменте кодов со смещением 100Н. Заканчи- ваться программа должна или командой ret, или стандартной процедурой корректного выхода в MS-DOS: Метка Мнемокод Операнд(ы) Комментарии MOV INT АН, 4СН 21Н ; занести в АН число 4СН; (значение ; параметра прерывание INT 21Н) ; вызвать стандартную процедуру ; прерывания 21Н - корректного ; выхода в MS DOS. Последней строкой программы может быть директива end. Объектный модуль содержит машинные коды команд с относительными ад- ресами. Объектный модуль выполняется МП после замены относительных адресов на абсолютные с помощью программы-компоновщика, например, LINK.EXE, которая генерирует модуль с расширением ехе (ЕХЕ-файл или ЕХЕ-программу); ЕХЕ-файл, в отличие от командного модуля, может пре- вышать объем одного сегмента. Однако в этом случае обязательно опреде- лять сегменты с помощью директив ассемблера. Заканчивается ЕХЕ-файл стандартной процедурой корректного выхода в MS-DOS. Программа-компоновщик имеет еще одно назначение — она объединяет объектный модуль с библиотечными модулями, либо несколько отдельных объектных модулей в один ЕХЕ-файл. Библиотечными модулями называ- ются объектные файлы, которые содержат наиболее распространенные подпрограммы. Библиотечные модули размещаются в специальном систем- ном файле — библиотеке (LIBRARY). При ассемблировании программа-транслятор генерирует листинг и файл листинга программы. Листинг — это отображения на дисплее или бумаге текстов начального программного модуля, программного модуля (сом или obj) и сообщений, которые указывают на ошибки программирования, свя- занные с нарушением правил записи выражений (например, нет операнда или неправильный мнемокод команды). Директивы предназначены для управления процессом ассемблирования и формирования листинга. Они действуют только в процессе ассемблирова- ния программы и не переводятся в машинные коды. Язык ассемблера со- держит такие основные директивы: □ начала и конца сегмента segment и ends; □ начала и конца процедуры proc и endp; □ назначения сегментов assume;
22 Глава 1 □ начала org; □ распределения и инициирования памяти db, dw, dd; □ завершения программы end; □ МеТКИ LABEL. Директивы начала и конца сегмента segment и ends предназначены для опи- сания сегментов, используемых программой. Директивы начала и конца сегмента используются вместе, например: Название Мнемокод Операнд DATASG DATASG SEGMENT ENDS {<параметры>} • "1 Другие команды или дирек- ‘ Г тивы сегмента Обе директивы — segment и ends — должны иметь одинаковые названия. Директива segment может содержать три типа параметров: выравнивания, объединения и класса. Параметр выравнивания определяет начальный адрес или границу сегмента, например: PAGE = хххОО, PARA = ххххО (граница по умолчанию), word = ххххе (четная граница), BYTE = ххххх, где х — любая шестнадцатеричная цифра; е — четная шестнадцатеричная цифра. Если параметр выравнивания отсутствует, по умолчанию использу- ется параметр para, что указывает на то, что сегмент располагается в начале параграфа, а начальный адрес сегмента является кратным 16. Параграфом называется область памяти размером 16 байт, начальный адрес которого кратный 16, т. е. имеющий в двоичном представлении четыре нулевых младших разряда. Значения параметра объединения указывают на способ обработки сегмента при компоновке нескольких программных модулей: □ none — значение по умолчанию. Сегмент может быть логически отде- ленным от других сегментов, хотя физически он может располагаться ря- дом. Предполагается, что сегмент имеет собственный базовый адрес; □ public — данные сегменты с одинаковым названием и классом загру- жаются в соседние области и имеют один базовый адрес;
Общие принципы построения микропроцессорных систем 23 □ stack — назначение аналогично параметру public. В любой программе может быть определен по крайней мере один сегмент stack. Если опре- делено больше одного сегмента stack, то указатель стека SP (Stack Pointer) устанавливается на начало первого стека; □ common — для сегментов common с одинаковым названием и классом ус- танавливается один общий базовый адрес. Во время выполнения про- граммы осуществляется наложение второго сегмента на первый. Размер общей области определяется наиболее длинным сегментом; □ АТ-параграф следует определять заранее. Этот параметр обеспечивает определение меток и переменных по фиксированным адресам в фиксиро- ванных рбластях памяти; □ 'Класс' — этот параметр может иметь любое корректное название, ко- торое размещается в одинарных кавычках. Параметр используется для обработки сегментов, которые имеют одинаковые названия и классы. Типичными являются классы "stack"’ и '"code"’, например: Название Мнемокод Операнд STACKSG SEGMENT PARA STACK 'STACK’ В случае, если программа не должнаюбъединяться с другими программами, параметр объединения не указывается. Директивы начала и конца процедуры proc и endp используются для опреде- ления подпрограмм в сегменте кодов и имеют следующий формат: <Название> PROC {<тип процедуры>}. Возможны два типа процедур: □ near — процедура находится в одном и том же сегменте, что и команды, которые ее вызывают; □ far — процедура находится за пределами сегмента. По умолчанию используется тип процедуры near. Сегмент кодов может содержать несколько процедур. Описание сегмента кодов, который содержит только одну процедуру, имеет вид: Название Мнемокод Операнд Имя_сегмента Имя_процедуры SEGMENT PROC PARA FAR Имя_процедуры RET ENDP Имя сегмента ENDS
24 Глава 1 Имя процедуры должно присутствовать обязательно и совпадать с именем в директиве endp, которая определяет конец процедуры. Директива назначения сегментов assume используется для установки соот- ветствия между сегментами и сегментными регистрами и имеет следующий формат: ASSUME <сегментный регистр>: <имя> {, Например, запись 35:им_стек указывает, что имя стека определяется со- держимым регистра SS. Одна директива assume может назначать до четырех сегментных регистров в любой последовательности, например: Мнемокод Операнд(ы) ASSUME 33:им_стек, DS:им_данные, CS:им_код, ES:hm дополнительные данные Для отмены любого назначенного ранее директивой assume сегментного регистра используется слово nothing: Мнемокод Операнд(ы) ASSUME ES:NOTHING Если программа не использует какой-либо сегмент, то соответствующий ему операнд можно опустить или указать слово nothing. Директива org используется для изменения содержимого программного счетчика без команд условного или безусловного перехода. Чаще всего эту директиву используют для установки начального адреса программы: На- пример, директива org юон устанавливает программный счетчик на сме- щение 100Н относительно начала сегмента кодов. Операнд со знаком дол- лара "$" имеет текущее значение программного счетчика. Например, директива org $+юн увеличивает адрес, загруженный в программный счетчик, на ЮН. Директивы распределения и инициирования памяти используются для опреде- ления содержимого и резервирования ячеек памяти. Директива имеет формат: { <имя> } Dn {количество повторений DUP}<выражение>, где мнемокод Dn = DB DW DD DQ DT
Общие принципы построения микропроцессорных систем 25 указывает на длину данных: db — байт; dw — слово (два байта); dd — двойное слово; dq — четыре слова; dt — десять байтов. Если в формате имеется имя, то далее в программе оно может использоваться для обозначения ячейки памяти. <выражение> в формате директивы содержит одну или несколько констант для задания начальных значений содержимого ячеек памяти или знак "?" для неопределенного значения содержимого. Например, директива ALPHA DB 34 означает, что ячейка памяти с именем alpha содержит число 34. В ходе вы- полнения программы содержимое ячейки может быть изменено. Директива BETA DW ? определяет, что ячейка с именем beta имеет разрядность 16, но содержимое ячейки является неопределенным. Директива может содержать несколько констант, разделенных запятыми и ограниченных лишь длиной строки. На- пример, выражение ARRAY DB 01, 02, 11, 12, 21, 22 определяет 6 констант в виде последовательности соседних байтов. Ссылка на ячейку с именем array указывает на первую константу (01), с именем array + 1 — на вторую (02), с именем array + 2 — на третью (И) и т. д. Запись MOV AL, ARRAY + 4 загружает в регистр al значение 21. Одна директива может определить несколько ячеек памяти. В этом случае директива имеет вид: { <имя> } Dn {количество повторений} DUP <выражение> Например, директива, которая определяет 5 байт, содержащих число 21, записывается следующим образом: DB 5 DUP (21) Директива завершения программы end является последней в программе и имеет формат: END {<стартовый адрес>) Параметр «стартовый адрес> используется лишь при создании ЕХЕ- файлов. Директива метки label предназначена для установления соответствия ме- жду именем и типом переменных. Она имеет формат: <имя> LABEL {<тип>} В качестве типа могут использоваться слова byte, word, dword, определяю- щие длину данных: байт, слово или двойное слово. Директива label пере- определяет параметры процедур near или far.
26 Глава 1 Например, директива TOS LABEL WORD присваивает ячейке памяти имя tos и указывает, что ее содержимое является словом. Примеры написания простых программ. Простые программы целесообразно оформлять в виде командных файлов. Первой директивой таких программ является директива org юон, последней — end. Пример 1.1. Написать программу сложения содержимого двух 8-разрядных ячеек памяти, которые находятся в сегменте данных ds со смещениями 1000Н и 1001Н соответственно. Результат разместить в ячейке памяти с ад- ресом DS.1002H. В этом примере для простоты не будем учитывать возможность возникно- вения переносов. Программа имеет вид: Мнемокод Операнд(ы) Комментарии ORG юон ; Начало программы MOV AL, [ЮООН] ; AL <Г DS: [ЮООН] ; Переслать в 8-разрядный регистр AL ; содержимое ячейки памяти с адресом ; DS:1000H ADD AL, [Ю01Н] ; AL <r AL + DS: [1001Н] - ; Прибавить к содержимому AL содержимое ; ячейки DS:[1001Н] MOV END. [1002Н], AL ; DS:[1002Н] <- AL ; Переслать содержимое AL в ячейку ; DS:[1002H] ; Завершение программы Отметим, что запись mov al, [ЮООН] равнозначна записи mov al, ds: [ЮООН], поскольку сегмент DS принят по умолчанию. Пример 1.2. Написать программу, которая обеспечивает разделение содер- жимого 16-разрядной ячейки памяти с адресом ES:[2000H] на четыре тетра- ды. Тетрады должны быть записаны в младшие части четырех последова- тельных 8-разрядных ячеек памяти, начиная с адреса DS:1000H, причем старшая тетрада должна быть записана в ячейку со старшим адресом. В этом примере для записи результата удобно использовать косвенную ад- ресацию.
Общие принципы построения микропроцессорных систем 27 Программа имеет вид: Мнемо- код Операнд(ы) Комментарии ORG 100H ; Начало программы MOV AX, ES:[2000H] ; AX <- ES: [2000H] ; Переслать содержимое 16-разрядной ; ячейки ES:[2000H] в 16-разрядный ; регистр АХ MOV DX, AX ; DX <- АХ ; сохранить начальное число в DX AND AX, 000FH ; АХ<—АХ л 0000 0000 0000 1111 ; Выделить младшую тетраду (сбросить все ; разряды АХ, кроме четырех младших) MOV SI, 1000H ; SI <- 1000Н ; Записать в SI начальный адрес результата MOV [SI], AL, ; DS: [SI] <- AL ; Переслать содержимое AL в ячейку памяти ; с адресом DS:SI MOV AX, DX ; АХ <— DX ; * Переслать начальное число из DX в АХ AND AX, 00F0H ; АХ<—АХ л 0000 0000 1111 0000 ; Выделить вторую тетраду MOV CL, 4 ; Загрузить в CL число разрядов сдвига ROR AL, CL ; Циклический сдвиг AL на четыре разряда ; вправо, в результате выделенное ; 4-разрядное число переместится в AL INC SI ; si <- si +• 1 ; Увеличить SI для записи второго числа MOV [SI], AL ; DS:[SI] <— AL ; Запомнить вторую тетраду в ячейке ; DS:[SI] MOV AX, DX ; АХ <- DX ; переслать начальное число из DX в АХ AND AX, 0F00H ; АХ <- АХ л 0000 1111 0000 0000 ; Выделить третью тетраду INC SI ; si <- si + 1 ; Увеличить адрес результата MOV [SI], AH ; DS: [SI] <— АН ; Запомнить третью тетраду MOV AX, DX ; АХ<—DX ; Переслать начальное число из DX в АХ AND AX, 0F000H ; АХ<—АХ Л1111 0000 0000 0000 ; Выделить четвертую тетраду INC SI ; Увеличить адрес результата MOV CL, 4 ; Загрузить в CL число разрядов ROR AH, CL ; Циклический сдвиг AL на четыре разряда ; вправо MOV END. [SI], AH ; Запомнить четвертую тетраду ; Завершение программы
28 Глава 1 Чтобы уменьшить громоздкость программы, целесообразно сводить ее к однотипным шагам и использовать циклические операции. Рассмотренный пример можно упростить, если выполнить сдвиг 16-разрядного числа таким образом, чтобы тетрада, которая выделяется, всегда была младшей. Алго- ритм такой программы вместе с командами показан на рис. 1.12. ORG 100Н MOV AX,ES;[2000H] MOV DX,AX MOV S/, 1000H MOV BL,0 MOV BH,4 MV.MOV CL, BL MOV AX,DX ROR AX, CL AND AX.OOOFH MOV [SI], AL DEC BH JZ EN INC SI ADD BL, 4 JMP M1 EN:NOP END Рис. 1.12. Алгоритм решения задачи примера 1.2 Типичные вычислительные процедуры. Алгоритм типичной вычислительной процедуры ЕСЛИ-ТО-ИНАЧЕ показан на рис. 1.13. Эта процедура применяется тогда, когда необходимо реализовать переход до одной из двух вычислительных процедур в зависимости от условия. При написании программ на языке ассемблера алгоритм процедуры выполняет- ся с помощью команд переходов по условиям установки (сброса) флагов.
Общие принципы построения микропроцессорных систем 29 Пример 1.3. Написать программу деления содержимого АХ на содержимое BL. Результат поместить в 8-разрядную ячейку памяти с адресом DS : ЮООН. Остатком от деления пренебречь. Если содержимое BL = 0, то деление не выполнять, а на место результата поместить число 0FFH. Программа имеет вид: Метка Мнемо- Операнд(ы) Комментарии код ORG СМР юон BL, 0 f Начало программы Сравнить содержимое BL с нулем f (команда влияет на установку флага t нуля Z) JZ Ml f Если Z = 1 (BL = 0), то переход на r метку Ml, DIV BL f иначе выполнить деление f AL <— АХ : BL, остаток —» АН JMP М2 f Безусловный переход на метку М2 Ml: MOV AL,OFFH r Занести число 0FFH в AL М2: MOV [1000H],AL f Запомнить AL в ячейке DS : [ЮООН] END. r Завершение программы Рис. 1.13. Алгоритм процедуры ЕСЛИ-ТО-ИНАЧЕ Процедура ЕСЛИ-TO (рис. 1.14) является частным случаем процедуры ЕСЛИ-ТО-ИНАЧЕ и используется в том случае, когда необходимо реа- лизовать одну вычислительную процедуру в зависимости от условия.
30 Глава 1 Рис. 1.14. Алгоритм процедуры ЕСЛИ-ТО Процедура ДЕЛАЙ-ПОКА (рис. 1.15) используется для повторения одно- типных действий до момента выполнения условия окончания цикла. Рис. 1.15. Алгоритм процедуры ДЕЛАЙ-ПОКА Пример 1.4. Написать программу сложения по модулю 256 массива с 100Н байт, расположенных по начальному адресу 7000Н : 3000Н. Результат в виде одного байта записать в ячейку с адресом 7000Н : 5000Н. Программа имеет вид: Метка Мнемо- код Операнд(ы) Комментарии ORG 100Н ; Начало программы MOV АХ,7000Н ; Загрузить в АХ адрес сегмента MOV DS, АХ ; Загрузить в DS адрес сегмента
Общие принципы построения микропроцессорных систем 31 (окончание) MOV SI,3000H z z Загрузить в SI смещение первого элемента массива MOV CX,101H / 9 Загрузить в счетчик СХ, число на 1 большее, чем длина массива MOV AL,[SI] f ; Загрузить в AL первый элемент массива Ml: LOOP MO 9 9 Уменьшить содержимое СХ на 1, если СХ 0, то перейти на метку МО, MOV [5000H], AL 9 9 иначе запомнить результат в DS:[5000Н] JMP EXIT 9 Перейти на выход MO: INC SI 9 SI<—SI+1- адрес следующего элемента ADD AL,[SI] 9 9 Прибавить содержимое DS:SI к предыдущей сумме в аккумуляторе AL JMP Ml 9 9 Перейти на метку Ml для проверки условия выхода из цикла EXIT: NOP END. 9 9 Выход из программы Завершение программы Процедура ПОВТОРЯЙ-ДО-ТОГО-КАК (рис. 1.16) аналогичная предыду- щей, но однотипные действия выполняются перед проверкой условия. Рис. 1.16. Алгоритм процедуры ПОВТОРЯЙ-ДО-ТОГО-КАК Программа выполнения задачи примера 1.4 в соответствии с алгоритмом (1.21) имеет вид: Метка Мнемо- код Операнд(ы) Комментарии ORG 100Н ; Начало программы
32 Глава 1 (окончание) MOV AX,7000H ; Загрузить в AX адрес сегмента MOV DS, AX ; Загрузить в DS адрес сегмента MOV SI,3000H ; Загрузить в SI смещение первого ; элемента массива MOV CX,100H ; Загрузить в счетчик СХ, число на 1 ; большее, чем длина массива MOV AL,[SI] ; Загрузить в AL первый элемент ; массива MO: INC SI ' SI<—SI+1 - адрес следующего элемента ADD AL,[SI] ; Прибавить содержимое DS:SI к ; предыдущей сумме в AL LOOP MO ; Уменьшить содержимое СХ на единицу, '* если СХ^ 0 , то перейти на метку MOV [5000H],AL ; МО,иначе - запомнить результат в ; DS:[5000H] END. ; Завершение программы Написание ЕХЕ-программ. Написание ЕХЕ-программ осуществляется при выполнении следующих условий: □ указания соответствия между сегментами и сегментными регистрами; □ сохранения содержимого DS в стеке; □ записи числа 0 в стек; □ загрузки адреса сегмента данных в регистр DS. Первое требование выполняется с помощью директивы assume, другие — с помощью соответствующих команд ассемблера. Пример 1.5. Написать ЕХЕ-программу .нахождения максимального числа в массиве 8-разрядных беззнаковых чисел. Результат записать в регистр DL. Программа имеет вид: Метка (или имя) Мнемо- код Операнд(ы) Комментарии DATASG SEGMENT PARA ’DATA’ ; Определить сегмент данных MASSIV DATASG DB ENDS 01,02,03,45, 56, 67,78,89,OFE,10 ; Определить в сегменте ; данных 10 значений ; массива MASSIV STACKSG SEGMENT PARA STACK 'Stack' DW 100 DUP (?) ; Определить сегмент стека ; Определить 100 слов
Общие принципы построения микропроцессорных систем 33 (продолжение) TOS STACKSG LABEL ENDS WORD r f Определить имя и формат вершины стека CODESG . SEGMENT PARA ’CODE’ r Определить сегмент кодов BEGIN PROC FAR ! Начало процедуры ASSUME PUSH SS: STACKSG, DS:DATASG, CS: CODESG DS f Загрузить содержимое DS r в стек SUB AX, AX r Установить нулевое r содержимое в АХ PUSH AX f Записать нуль в стек MOV AX,DATASG f Загрузить адрес DATASG f в АХ MOV DS, AX f Записать адрес DATASG f в регистр DS LEA BX,MASSIV r Загрузить в регистр ВХ f адрес первого элемента MOV CX, 10 f Загрузить в СХ длину r массива MOV DL,[BX] r DL<—DS: [ВХ] СОМР: MOV AL,[BX] ! AL<—DS: [ВХ] CMP AL,[BX+1] f Сравнить два соседних • f элемента массива JAE NEXT f Если содержимое r предыдущего элемента f массива [ВХ] больше или f равняется содержимому f Следующего [ВХ +1], то f перейти на метку NEXT, MOV DL,[BX+1] f иначе загрузить в DL
34 Глава 1 (окончание) NEXT: ; значение [ВХ + 1] INC ВХ ; увеличить ВХ для ’ BEGIN CODESG ; адресации следующего ; элемента массива LOOP COMP ; проверка условия выхода ; из цикла RET ; возврат ENDP ; конец процедуры BEGIN ENDS ; конец сегмента кодов END. ; Завершение программы В рассмотренном примере выход в MS-DOS осуществляется командой ret с использованием адреса, записанного в стек в начале программы командой push ds. Иначе можно завершить программу командой int 20Н. Контрольные вопросы и задания 1. Приведите основные характеристики и структурные схемы процессоров с фоннеймановской и гарвардской архитектурой. 2. Укажите назначение регистров МП с фоннеймановской архитектурой. 3. Охарактеризуйте функции устройства управления. 4. Приведите определение и назначение аккумулятора. 5. Объясните работу программного счетчика. 6. Укажите местонахождение операнда с прямой адресацией. 7. Объясните, каким образом определяется адрес операнда с косвенной адресацией. 8. Объясните, как определяется значение операнда с непосредственной ад- ресацией. 9. Объясните, каким образом определяется адрес операнда с относитель- ной адресацией. 10. Напишите программу пересылки содержимого 8-разрядной ячейки па- мяти с адресом 7000Н:1000Н в 8-разрядный регистр AL.
Общие принципы построения микропроцессорных систем 35 11. Напишите программу вычитания содержимого двух последовательных ячеек памяти с адресами DS:35A0H и 35А1Н с записью результата в ячейку с адресом 35А2Н. 12. Напишите программу сложения массивов байтов с адресами 8350:4735Н и 3660:2200Н по правилу "первый с первым, второй со вторым и т. д.". Занести в массив 6250:2400Н адреса тех пар слагаемых, сумма которых равняется нулю. Длина массива 100Н. 13. Выполните деление массива из 25Н слов 5В00:3000Н на массив с 25Н байт 5С00:4000Н по правилу "первый на первый, второй на второй и т. д.". Результаты занести в массив 6000:5000Н. При возникновении необходимости деления на 0 деление не выполнять, а байты результата загрузить числом 1АН.
Глава 2 Однокристальные микропроцессоры 2.1. Однокристальный 8-разрядный микропроцессор Структурная схема обобщенного 8-разрядного однокристального МП по- казана на рис. 2.1. Рис. 2.1. Структурная схема 8-разрядного микропроцессора
38 Гпава 2 Схема имеет единую внутреннюю 8-разрядную шину, по которой передают- ся данные, коды команд и адреса. Структурная схема содержит: устройство управления (УУ), дешифратор команд (ДШК), регистр команд (РК), арифметико-логическое устройство (АЛУ), аккумулятор (А), временной аккумулятор (ВА), временной регистр (ВР), регистр флагов F, блок 8-разрядных регистров общего назначения (РОН), мультиплексор, указатель стека (Stack Pointer SP), указатель команд (Instruction Pointer IP), буферный регистр адреса (БА), буферный регистр данных (БД), схему инкремента/декремента (СИД). Устройство управления (УУ) в соответствии с дешифрованными кодами команд и внешними управляющими сигналами генерирует управляющие сигналы для всех блоков структурной схемы. Дешифратор команд (ДШК) формирует сигналы для устройства управле- ния в соответствии с дешифрованным кодом команды. В 8-разрядном регистре команд (РК) хранится машинный код команды (один байт). Арифметико-логическое устройство (АЛУ) представляет собой комбинаци- онную схему на основе сумматора и логических элементов, которое сигнала- ми с выходов устройства управления настраивается на ту или иную арифмети- ческую или логическую операцию — суммирование, вычитание, И, ИЛИ, "Исключающее ИЛИ", НЕ, сдвиг. Аккумулятор (А) является 8-разрядным регистром, в котором хранится один из операндов в двухоперандных командах, а также результат опера- ции. Например, в команде суммирования ADD В; А+В—>А явным образом указан лишь один операнд — 8-разрядный регистр В. Ре- гистр В — один из РОН. В некоторых МП РОН обозначаются буквами ла- тинского алфавита: В, С, D, Н, L, в других — RO, Rl, R2, ... Вторым опе- рандом является содержимое аккумулятора. Результат суммирования содержимого аккумулятора и регистра В заносится в аккумулятор, что сим- волически записывается в комментарии к команде. Временной аккумулятор (ВА) и временной регистр (ВР) — это 8-разрядные буферные регистры, позволяющие отделить входы АЛУ от его выходов, т. е. исключить гонку сигналов. Регистр флагов (F, Flag), или признаков, представляет собой несколько триггеров (пять или шесть), которые устанавливаются в единичное или сбрасываются в нулевое состояние в зависимости от результата операции в АЛУ. Регистры общего назначения (РОН) — блок 8-разрядных регистров, в кото- рых хранятся данные и промежуточные результаты. Блок РОН можно рас-^
Однокристальные микропроцессоры 39 сматривать как быстродействующее ОЗУ, имеющее наибольшее быстродей- ствие среди ОЗУ различных типов, поскольку оно размещено непосредст- венно на кристалле БИС МП. Некоторые типы 8-разрядных процессоров, кроме 8-разрядных РОН, содержат 16-разрядные индексные регистры для организации косвенной адресации, другие предполагают обращения к паре 8-разрядных регистров как к одному 16-разрядному. Мультиплексор (М) — устройство, соединяющее один из регистров общего назначения с внутренней шиной МП. Указатель стека (SP) — 16-разрядный регистр, в котором хранится адрес последней занятой ячейки стека. Указатель команд (IP) — 16-разрядный регистр, в котором хранится адрес выполняемой команды. После выборки из памяти программ очередного байта команды содержимое IP увеличивается на единицу. Буферный регистр адреса (БА) и буферный регистр данных (БД) — регист- ры с тремя состояниями выхода, предназначенные для формирования сиг- налов на линиях шин адреса и данных соответственно. Схема инкремента/декремента (СИД) — устройство, позволяющее без уча- стия АЛУ увеличить или уменьшить на единицу содержимое одного из ре- гистров РОН, IP или SP. Конструктивно БИС 8-разрядного процессора выполнена в корпусе с 40 выво- дами, из которых 16 приходятся на шину адреса, 8 — на шину данных, 2 (4) — на подключение питания, а все остальные — на линии шины управления. Основные линии шины управления показаны на рис. 2.1: □ Fl, F2 — вход двух неперекрывающихся последовательностей импульсов синхронизации (рис. 2.2); □ RESET — вход сигнала начальной установки (сброса); □ READY — вход сигнала готовности внешнего устройства или памяти к обмену; используется для организации обмена с менее быстродействую- щими (по сравнению с МП) устройствами; □ WAIT — выход сигнала подтверждения ожидания; активный уровень сигнала свидетельствует о том, что процессор перешел в режим ожида- ния и выполняет такты ожидания; □ HOLD — вход сигнала запроса прямого доступа к памяти (ПДП) или запроса захвата шин; используется для организации обмена с устройст- вами, быстродействие которых больше, чем быстродействие процессора; □ HLDA (HoLD Acknowledge) — выход сигнала подтверждения прямого доступа к памяти; активный уровень этого сигнала свидетельствует о том, что процессор перевел свои шины адреса, данных и управления в высокоимпедансное состояние;
40 Гпава 2 Рис. 2.2. Временные диаграммы импульсов синхронизации F\ и F2 □ INT (INTerrupt) — вход сигнала запроса прерывания; □ INTE (INTerrupt Enable) — выход сигнала разрешения прерывания; □ DBIN (Data Bus IN) — выход сигнала чтения; высокий уровень (Н- уровень — уровень логической единицы) этого сигнала свидетельствует о том, что двунаправленная шина данных находится в режиме приема ин- формации; □ WR (WRite) — выход сигнала записи; низкий уровень (L-уровень — уровень логического нуля) этого сигнала свидетельствует о том, что дву- правленная шина данных находится в режиме выдачи информации; □ SYNC (SYNChronization) — выход сигнала синхронизации; высокий уровень этого сигнала свидетельствует о том, что по шине данных пере- дается байт состояния, который используется для формирования некото- рых управляющих сигналов. Схемы конкретных МП отличаются количеством и обозначением регистров, а также некоторыми управляющими сигналами. Например, в МП i8085 вме- сто двух сигналов F1 и F2 используется один сигнал синхронизации CLK (CLocK); вместо сигнала DBIN — сигнал чтения RD(ReaD). Низкий уро- вень этого сигнала свидетельствует о том, что двунаправленная шина дан- ных находится в режиме приема информации. В МП i8085 есть дополни- тельный сигнал М/Ю (Memory/Input-Output) — признак обращения к памяти (логическая единица) или к устройству ввода/вывода (логический ноль), но нет сигнала SYNC. Схема (см. рис. 2.1) работает следующим образом. При включении питания или при формировании сигнала начальной установки RESET содержимое указателя команд IP приобретает нулевое значение и начинается машинный цикл выборки команды из памяти. Содержимое ячейки памяти по нулевому адресу через буферный регистр данных и внутреннюю шину МП поступает в регистр команд, после этого — в дешифратор команд. Соответственно дешифрованным кодам команд и внешним сигналам синхронизации и
Однокристальные микропроцессоры 41 управления устройство управления формирует управляющие импульсы для каждой микрооперации команды. Программной моделью МП называется совокупность программно-доступных регистров, т. е. тех регистров, содержимое которых можно прочитать или изменить с помощью команд. В программную модель МП входят аккумуля- тор, РОН, регистр флагов, указатель стека и указатель команд. Организация памяти. Максимально возможная емкость памяти с прямой ад- ресацией определяется количеством разрядов шины адреса. Большинство 8- разрядных процессоров (i8080, i8085, Z80, Motorola 6800) имеют 16-разрядную шину адреса, т. е. позволяют адресовать 216 = 64 Кбайт памяти. Микропроцессоры с 8-разрядной шиной данных имеют четыре режима ад- ресации операндов. 1. Прямая адресация. В этом режиме второй и третий байты команд содер- жат адрес операнда. 2. Регистровая адресация. В мнемонике команды указывается РОН, в кото- ром находится операнд. 3. Непосредственная адресация. В этом режиме во втором и третьем байтах команды указывается 8- или 16-битовый операнд. Операнд в этом случае находится в памяти программ. 4. Косвенная регистровая адресация. В команде указывается регистр (или пара регистров), содержащий адрес ячейки памяти. Организация ввода/вывода. 8-разрядные МП имеют возможность передать или принять данные из внешних УВВ. Устройства ввода/вывода соединяют- ся с системной шиной МП системы с помощью портов ввода/вывода, кото- рые представляют собой 8-разрядные регистры со схемами выборки и управления чтением/записью. Количество таких устройств определяется разрядностью адресов портов. При 8-разрядном адресе имеется возмож- ность обращения к 28 = 256 портам ввода и 256 портам вывода. В качестве портов ввода могут использоваться буферные регистры, например, КР580ИР82, КР589ИР12 или параллельный интерфейс ввода/вывода КР580ВВ55. Ввод или вывод данных может осуществляться двумя способами: □ С использованием отдельного адресного пространства УВВ. □ С использованием общего с памятью адресного пространства, т. е. с ото- бражением на память. Первый способ разрешает выполнять ввод и вывод данных по командам ввода in и вывода оит. Использование второго способа предусматривает расположение адресов портов в общем с памятью адресном пространстве. При этом операции обращения к портам не отличаются от операций обра- щения к памяти.
42 Гпава 2 Выполнение команд в МП i8080. Каждая команда в МП выполняется на про- тяжении командного цикла. Командный цикл состоит из цикла выборки команды и цикла выполнения команды (рис. 2.3). Цикл выборки Цикл исполнения -= М2 ---------------- Командный цикл ------------------ Рис. 2.3. Пример командного цикла 8-разрядного МП Продолжительность цикла выборки команды зависит от формата команды (количества байт в машинном коде команды). Команды занимают от одно- го до трех байт в программной памяти. Многобайтные команды хранятся в соседних ячейках памяти. Для выборки однобайтной команды (например, сложения содержимого аккумулятора А и регистра B-ADD В) необходимо одно обращение к памяти, для выборки трехбайтной команды (например, вызова подпрограммы по адресу addr — call addr) — три обращения. Продолжительность цикла исполнения команды зависит от способа адреса- ции операндов. Так, при выполнении команд с регистровой адресацией не нужно дополнительное обращение к памяти для чтения операнда, в коман- дах с косвенной адресацией такое обращение необходимо. Поэтому продол- жительность командного цикла в МП i8080 различна для различных команд и определяется количеством обращений к памяти или к внешнему устройству. Интервал, на протяжении которого осуществляется одно обращение про- цессора к памяти или к внешнему устройству, определяется как машинный цикл М. Итак, командный цикл процессора состоит из некоторого количе- ства машинных циклов (в зависимости от типа команды). В приведенном на рис. 2.2 примере цикл выборки состоит из двух машинных циклов (mi и м2), а цикл исполнения — из одного машинного цикла (мз). В команде может быть от одного (для однобайтных команд с регистровой адресацией) до пя- ти (для трехбайтных сложных команд) машинных циклов. Машинный цикл, в свою очередь, разбивается на некоторое количество машинных тактов Г, на протяжении каждого из которых выполняется эле- ментарное действие (микрооперация) в процессоре^ Количество тактов в цикле определяется кодом команды и лежит в пределах от 3 до 5. Продол- жительность такта задается периодом импульсов синхронизации и опреде- ляется как интервал времени между фронтами двух соседних импульсов по- следовательности FI. Таким образом, командный цикл МП i8080 состоит из
Однокристальные микропроцессоры 43 некоторого количества машинных циклов, а каждый машинный цикл — из определенного количества тактов, на протяжении которых выполняются те или иные элементарные действия в процессоре. Для синхронизации процессора с памятью и внешними устройствами, кото- рые характеризуются меньшим быстродействием, для организации работы в режиме прямого доступа к памяти и останова процессора предусмотрены три особых режима: ожидание, захват шин, останов, продолжительность которых имеет произвольную, но всегда кратную продолжительности такта Т величину. В зависимости от действий, выполняемых МП, различают следующие типы машинных циклов: □ ВЫБОРКА (чтение первого байта команды); □ ЧТЕНИЕ ПАМЯТИ (чтение второго и третьего байтов команды, чтение операнда); □ ЗАПИСЬ В ПАМЯТЬ; □ ЧТЕНИЕ СТЕКА; □ ЗАПИСЬ В СТЕК; □ ВВОД данных из внешнего устройства; □ ВЫВОД данных на внешнее устройство; □ ПРЕРЫВАНИЕ; □ ОСТАНОВ; □ ПРЕРЫВАНИЕ ПРИ ОСТАНОВЕ. Первым машинным циклом команды всегда является цикл ВЫБОРКА, на протяжении которого осуществляется выборка из памяти байта кода команды по адресу, определяемому содержимым указателя команд. Содер- жимое указателя в цикле увеличивается на единицу. Для выполнения одно- байтных команд с регистровой адресацией требуется лишь один цикл ВЫБОРКА. Для выборки двух- или трехбайтных команд, кроме цикла ВЫБОРКА, нуж- ны еще один или два машинных цикла для чтения второго или второго и третьего байтов команды. Эти циклы определяются как циклы ЧТЕНИЕ ПАМЯТИ. Цикл ЧТЕНИЕ ПАМЯТИ необходим также для выборки опе- ранда при выполнении команд с косвенной или прямой адресацией. Для записи операндов или сохранения адресов при выполнении команд пересы- лок нужны машинные циклы ЗАПИСЬ В ПАМЯТЬ. В командах с обращением к стеку выполняются циклы ЧТЕНИЕ СТЕКА и ЗАПИСЬ В СТЕК. Адрес памяти определяются указателем стека SP.
44 Гпава 2 Для выполнения команд ввода/вывода выполняются машинные циклы ВВОД и ВЫВОД; для организации прерываний программы и остановки процессора — циклы ПРЕРЫВАНИЕ, ОСТАНОВ, ПРЕРЫВАНИЕ ПРИ ОСТАНОВЕ. Каждый машинный цикл процессора идентифицируется байтом, называе- мым байтом состояния. Байт состояния выдается на шину данных в начале каждого машинного цикла и сопровождается одновременной выдачей сиг- нала SYNC на одноименный контакт БИС МП. Байт состояния несет ин- формацию о последующих действиях процессора. Его можно запомнить по сигналу SYNC и сформировать такие управляющие сигналы, которые не удалось вывести в явном виде на контакты БИС МП из-за ограниченного количества контактов микросхемы. Байты состояния для процессора i8080 приведены в табл. 2.1. Таблица 2.1. Байты состояния для различных типов машинных циклов Разряд шины данных Тип машинного цикла ВЫБОРКА ЧТЕНИЕ ПАМЯТИ ЗАПИСЬ В ПАМЯТЬ ЧТЕНИЕ СТЕКА ЗАПИСЬ В СТЕК ввод вывод ПРЕРЫВАНИЕ ОСТАНОВ ПРЕРЫВАНИЕ ПРИ ОСТАНОВЕ DO 0 0 0 0 0 0 0 1 0 1 D1 1 1 0 1 0 1 0 1 1 1 D2 0 0 0 1 1 0 0 0 0 0 D3 0 0 0 0 0 0 0 0 1 1 D4 0 0 0 0 0 0 1 0 0 0 D5 1 0 0 0 0 0 0 1 0 1 D6 0 0 0 0 0 1 0 0 0 0 D7 1 1 б 1 0 0 0 0 1 0
Однокристальные микропроцессоры 45 Рис. 2.4. Цикл ВЫБОРКА (ЧТЕНИЕ ПАМЯТИ) 71 72 Ты 73 74 75 F1 F2 А 15-ДО D7-D0 SYNC READY WR WAIT Р"^ п _п_ _п_ _п_ Адрес х_ L- состояние - - СТОЯНИЯХ Л Данные - у i i У i i \ / i Рис. 2.5. Цикл ЗАПИСЬ В ПАМЯТЬ
46 Гпава 2 Временная диаграмма машинного цикла ВЫБОРКА (ЧТЕНИЕ ПАМЯТИ) для процессора i8080 показана на рис. 2.4, а цикла ЗАПИСЬ В ПАМЯТЬ — на рис. 2.5. Такты отсчитываются по передним фронтам последовательно- сти F1, а микрооперации в каждом такте определяются передним фронтом последовательности F2. При тактовой частоте 2 МГц продолжительность такта равна 0,5 мкс. Сигналы на линиях шин А15—АО (D7—D0) изображены на рис. 2.4 на од- ной временной диаграмме в виде линий L- и Н-уровней одновременно. Та- ким образом на диаграмме указан лишь тип информации на шине, напри- мер — присутствие на ней адреса или данных. Пунктирной линией обозначено высокоимпедансное состояние линий шин (z-состояние). В первом машинном такте Т1 на шину адреса (линии А15—АО) выдается адрес — содержимое указателя команд IP, если выполняется цикл ВЫБОРКА, или содержимое регистра-указателя адреса — если выполняется цикл ЧТЕНИЕ ПАМЯТИ. Вместе с тем на шину данных (линии D7—D0) выдается байт состояния, а также формируется сигнал SYNC на одноимен- ном выводе БИС МП. Во втором такте Т2 заканчивается поступление байта состояния и сигнала SYNC, продолжительность которых равняется одному такту. В машинном цикле ВЫБОРКА содержимое IP увеличивается для адресации следующе- го байта команды или следующей команды. В этом же такте устройство управления МП производит анализ сигналов на входах READY и HOLD, а также контроль выполнения команды останова нът. Если память или внешнее устройство не готовы к обмену (READY = 0) вследствие того, что поступил запрос ПДП (HOLD = 1) или выполняется команда останова ньт, то обмен данными осуществляться не может, и процессор переходит в один из режимов — ожидание, захват шин или останова. В этих режимах осуществляется ожидание сигнала на протяжении нескольких тактов ожи- дания Ги., количество которых определяется внешними сигналами. На рис. 2.4 в такте Т2 сигнал READY равняется логическому нулю, а в такте Г„ — логической единице. В такте ТЗ в зависимости от типа машинного цикла осуществляется обра- щение к памяти, стеку или внешнему устройству. В результате в МП вводит- ся (см. рис. 2.4) или из него выводится (см. рис. 2.5) байт команды, адреса или данных. В зависимости от типа команды машинный цикл может содер- жать такты Т4 и Т5 (например, если для выполнения команды нужна обра- ботка операндов). В последнем такте команды (ТЗ, Т4 или Т5) анализирует- ся наличие сигнала запроса прерывания INT. Если прерывание разрешено, то процессор переходит к машинному циклу ПРЕРЫВАНИЕ.
Однокристальные микропроцессоры 47 Т4 Байт состояния Содержимое IP D7-DO А15-А0 а б Код команды в Рис. 2.6. Выполнение команды add в по микрооперациям: а, б, в, г, д — TI, Т2, ТЗ, Т4, Т5 соответственно д В качестве примера рассмотрим выполнение команды add в по микроопе- рациям. Команда содержит один машинный цикл ВЫБОРКА, который вы- полняется за четыре такта, а необходимая для выполнения команды мик- рооперация пятого такта выполняется в такте Т2 следующей команды. На рис. 2.6, а—д показаны действия МП в каждом такте машинного цикла. В такте Т1 (рис. 2.6, б?) на шину адреса выдается содержимое указателя ко- манд IP, которое в такте Т2 (рис. 2.6, б) увеличивается на единицу для адре-
48 Гпава 2 сации следующей команды. Команда выбирается из памяти в такте ТЗ (рис. 2.6, в). В такте Т4 (рис. 2.6, г) осуществляется подготовка операндов к суммированию: содержимое регистра В по внутренней шине пересылается во временной регистр, а содержимое аккумулятора А — во временной ак- кумулятор. В пятом такте, который для увеличения быстродействия совме- щен с тактом Т2 следующей команды, выполняется суммирование операн- дов. Результат суммирования запоминается в аккумуляторе. Особые режимы работы МП i8080. Микропроцессор i8080 имеет следующие особые режимы работы: прерывание, ожидание, захват шин при прямом доступе к памяти, которые инициируются внешними сигналами управле- ния, останов (переход к этому режиму осуществляется программно). Прерывание. В микропроцессоре i8080 существуют средства обработки за- просов прерываний восьми уровней. Если одно из внешних устройств, со- единенных с системой прерывания МП, инициирует запрос прерывания, то система формирует сигнал Н-уровня на выводе INT МП. Одновременно система прерывания посылает на шину данных код команды rst v (прерывание по вектору v). Вектор v представляет собой код, который ука- зывает адрес начальной команды в подпрограмме обслуживания данного запроса прерывания. Последовательность действий МП в режиме прерывания следующая: 1. Прием запроса прерывания и блокирование входа запроса прерывания. 2. Прием команды rst v. 3. Сохранение адреса возврата (содержимого указателя команд) в стеке. 4. Формирование адреса подпрограммы обслуживания запроса. Запросы прерывания МП i8080 принимаются со входа INT МП триггером прерываний, которым управляет триггер разрешения прерываний. В свою очередь, триггер разрешения прерываний можно программным способом установить в логическую единицу или ноль. Состояние логической единицы триггера разрешения прерываний разрешает прием прерывания от входа INT, состояние нуля — запрещает. Система прерывания может установить активный уровень сигнала на линии INT в любой момент выполнения про- граммы, однако прием его синхронизируется следующим образом. При на- личии сигнала разрешения прерывания (триггер разрешения прерываний установлен в единицу) триггер прерываний устанавливается в последнем такте последнего машинного цикла команды, на протяжении выполнения которого поступил запрос. Это дает возможность процессору завершить выполнение команды, прежде чем начнется обработка прерывания. Если прерывание не разрешено (триггер разрешения прерываний сброшен в ноль), запрос прерываний по входу INT игнорируется. Временная диаграм- ма работы процессора показана на рис. 2.7, а, б.
Однокристальные микропроцессоры 49 После приема сигнала запроса прерывания процессор переходит к выпол- нению цикла ПРЕРЫВАНИЕ, который состоит из трех машинных циклов. Первый из них — mi (рис. 2.7, а) — предназначен для приема команды rst v, а два других — м2 и мз — для сохранения адреса возврата в стеке (рис. 2.7, б). В первом такте Т1 цикла mi в байте состояния формируется сигнал подтверждения прерывания, который используется для управления чтением команды rst v. В такте ТЗ процессор принимает по шине данных байт команды rst v, формируемой системой прерываний. В тактах Т4, Т5 цикла ПРЕРЫВАНИЯ формируется адрес первой ячейки стека, отведенной для хранения адреса возврата из подпрограммы обслуживания запроса прерывания. В циклах м2 и мз осуществляется запись адреса возврата (содержимого указателя команд) в стек. В следующем цикле выбирается первая команда подпро- граммы обслуживания прерывания по адресу, определяемому командой rst v. Рис. 2.7. Цикл ПРЕРЫВАНИЕ: a — Ml
50 Гпава 2 Рис. 2.7. Цикл ПРЕРЫВАНИЕ: б — М2 и М3; ТгП — триггер прерывания В частном случае с помощью подпрограммы осуществляется хранение со- держимого основных рабочих регистров процессора, управление триггером разрешения прерывания, восстановление содержимого регистров и возврат в основную программу (восстановление содержимого указателя команд). Захват шин или прямой доступ к памяти ПДП. Режим захвата шин или ПДП используется для организации выполнения операций прямого досту- па к памяти. Для этого МП имеет вход HOLD запроса захвата шин и вы- ход HLDA подтверждения захвата. Внешнее устройство запрашивает ре- жим прямого доступа к памяти сигналом высокого уровня на линии HOLD. При этом процессор останавливает выполнение операций и отсо- единяется от внешних шин данных и адреса. Линии шин переходят в высо- коимпедансное состояние. Процессор подтверждает принятие запроса прямого доступа к памяти уста- новкой Н-уровня на выходе подтверждения захвата HLDA. Пока действует сигнал на входе HOLD, шины процессора находятся в распоряжении внеш- него устройства, которое послало запрос прямого доступа к памяти. Сигна- лы управления обменом информацией между внешним устройством и памя-
Однокристальные микропроцессоры 51 тью формируются специальной БИС — контроллером прямого доступа к памяти. Временная диаграмма работы процессора в режиме захвата шин или прямо- го доступа к памяти в цикле ЧТЕНИЕ ПАМЯТИ изображена на рис. 2.8. Сигнал HOLD воспринимается процессором в такте Т2. Если на входе READY присутствует Н-уровень сигнала, то на входе внутреннего триггера захвата также устанавливается Н-уровень, благодаря чему по фронту сле- дующего импульса F1 выходной сигнал HLDA переключается в состояние логической единицы. При выполнении циклов чтения или ввода процессор подтверждает захват в начале такта ТЗ по окончани чтения. В циклах запи- си и вывода это осуществляется в такте, следующем за ТЗ, по окончании за- писи. В обоих случаях шины процессора переводятся в высокоимпедансное состояние по фронту импульса F2, следующего за импульсом F1, за кото- рым выполнялось переключение выхода HLDA. 71 Т2 Tw ТЗ 74 75 7 71 72 Рис. 2.8. Цикл ЧТЕНИЯ ПАМЯТИ в режиме ПДП
52 Гпава 2 Процессор выходит из режима захвата следующим образом. После оконча- ния сигнала запроса захвата на входе HOLD импульсом F2 сбрасывается триггер захвата, благодаря чему по переднему фронту импульса F1 на вы- ходе HLDA подтверждения захвата формируется сигнал низкого уровня. Процессор переходит к выполнению следующего машинного цикла. Останов, Процессор входит в режим останова при выполнении команды остановки hlt. Выполнение действий МП иллюстрируется временными диаграммами на рис. 2.9. Переход в режим останова выполняется за два машинных цикла. В первом машинном цикле ВЫБОРКА осуществляется считывание из памяти первого байта команды ньт. Во втором машинном цикле ОСТАНОВ после окончания такта Т2 процессор переходит в режим останова, при котором шины данных и адреса переходят в высокоимпе- дансное состояние, а процессор выполняет такты ожидания Tw. Режим оста- нова подтверждается битом D3 в байте состояния, которое выдается также в такте Т2 (см. табл. 2.1). Рис. 2.9. Цикл ОСТАНОВ
Однокристальные микропроцессоры 53 Выход из режима останова можно осуществить тремя способами: □ подачей сигнала на линию RESET (при этом указатель команд IP приобретает нулевое значение, и процессор переходит к машинному циклу ВЫБОРКА команды по нулевому адресу); □ подачей сигнала на вход HOLD, благодаря чему процессор переходит к выполнению цикла ЗАХВАТ. После окончания этого сигнала процессор входит в режим останова по переднему фронту импульса F1; □ подачей сигнала прерывания (при наличии сигнала разрешения преры- ваний на выходе INTE), благодаря чему процессор по фронту импульса F1 переходит в режим Т1 машинного цикла ПРЕРЫВАНИЕ. Для реали- зации этой возможности необходимо перед началом режима останова обеспечить установление триггера разрешения прерываний путем вы- полнением команды разрешения прерывания ei. Обработка запросов захвата шин и прерывание при останове иллюстрируется рис. 2.10. Пусть процессор находится в режиме ОСТАНОВ, тогда линии шин адресов и данных находятся в высокоимпедансном состоянии, и про- цессор выполняет такты Tw. С поступлением запроса захвата шин HOLD в следующем такте устанавли- вается триггер захвата. Затем процессор выдает сигнал подтверждения за- хвата HLDA и осуществляет прямой доступ к памяти. Если выполняется последовательность действий в режиме ПДП, то запросы прерывания не воспринимаются процессором до окончания обмена. Если прерывания раз- решены и поступил запрос прерывания INT, то после окончания режима ПДП МП переходит к машинному циклу ПРЕРЫВАНИЕ ПРИ ОСТАНОВЕ. Если в этом цикле поступил запрос захвата HOLD, он игно- рируется МП до завершения выполнения цикла чтения команды rst. По- том МП переходит к режиму ПДП. Действия МП в режиме прерывания за- вершаются по окончании режима ПДП. Включение микропроцессора. С подачей напряжения питания процессор на- чинает функционировать. Напряжение питания МП необходимо включать вместе с подачей сигнала на линию RESET. Продолжительность этого сиг- нала должна быть не менее трех периодов импульсов синхронизации. По сигналу RESET содержимое указателя команд приобретает нулевое значе- ние, и процессор начинает выполнять действия, соответствующие машин- ному циклу ВЫБОРКА. В результате начинает выполняться команда, код которой расположен в нулевой ячейке памяти. Таким образом, запуск про- граммы начинается по сигналу на линии RESET. Первой командой про- граммы должна быть команда безусловного перехода jmp adr, которая осуществляет переход к команде, расположенной в произвольном месте па- мяти, указанном как adr. Содержимое регистров общего назначения и реги- стра флагов остается неопределенным, пока его не установят команды про- граммы.
54 Гпава 2 Рис. 2.10. Циклы ЗАХВАТ ШИН и ПРЕРЫВАНИЕ при ОСТАНОВЕ Контрольные вопросы и задания 1. Укажите назначение: регистра команд; аккумулятора; блока РОН. 2. Укажите назначения флагов в МП. 3. Какие управляющие сигналы используются для обеспечения работы с устройствами, быстродействие которых меньше быстродействия микро- процессора? 4. Какие управляющие сигналы используются для обеспечения работы с устройствами, быстродействие которых больше быстродействия микро- процессора? 5. Какие действия выполняет процессор по сигналу RESET? 6. Из чего состоит командный цикл?
Однокристальные микропроцессоры 55 7. Какие режимы адресации используются в 8-разрядных МП? 8. Какую информацию несет байт состояния? 9. Какие действия происходят в тактах Т1 и Т2 любого машинного цикла? 10. Назовите возможные типы машинных циклов. 11. Назовите последовательность действий процессора в машинном цикле ПОДТВЕРЖДЕНИЕ ПРЕРЫВАНИЯ. 12. Какие действия выполняет МП при поступлении запроса прерывания в режиме прерывания? 13. Какие действия выполняет МП после включения напряжения питания? 14. Назовите возможные способы выхода из режима останова. 2.2. Однокристальные 16-разрядные микропроцессоры К 16-разрядным МП первого поколения принадлежат МП i8086/i8088 и i80186/i80188, к МП второго поколения — i80286. Большая интегральная схема МП i8086 с геометрическими размерами 5,5x5,5 мм имеет 40 контак- тов, содержит около 29 000 транзисторов и потребляет 1,7 Вт от источника питания +5 В, тактовая частота — 5; 8 или 10 МГц. Микропроцессор выполняет операции над 8- и 16-разрядными данными, представленными в двоичном или двоично-десятичном виде, может обраба- тывать отдельные биты, а также строки или массивы данных. Он имеет встроенные аппаратные средства умножения и деления, форматы данных и выполняемые операции приведены в табл. 2.2 Микропроцессор имеет внутреннее сверхоперативное запоминающее уст- ройство (СОЗУ) емкостью 14x16 байт. Шина адреса является 20-разрядной, что позволяет непосредственно адресовать 220= 1 048 576 ячеек памяти (1 Мбайт). Пространство адресов ввода/вывода составляет 64 Кбайт. В БИС i8086 реа- лизована многоуровневая векторная система прерываний с количеством векторов до 256. Предусмотрена также организация прямого доступа к па- мяти, по которому МП прекращает работу и переводит шины адреса, дан- ных и управления в высокоимпедансное состояние. Среднее время выполнения команды занимает 12 тактов. Особенностью МП i8086 является возможность частичной реконфигурации аппаратной части для обеспечения работы в двух режимах — минимальном и максимальном. Режимы работы задаются аппаратно. В минимальном режиме, используемом
56 Глава 2 для построения однопроцессорных систем, МП самостоятельно формирует все сигналы управления внутренним системным интерфейсом. В максималь- ном режиме, используемом для построения мультипроцессорных систем, МП формирует на линиях состояния двоичный код, который зависит от ти- па цикла шины. В соответствии с этим кодом системный контроллер К1810ВГ88 формирует сигналы управления шиной. Контакты, которые ос- вободились в результате кодирования информации, используются для управления мультипроцессорным режимом. При использовании арифмети- ческого сопроцессора необходимо выбирать максимальный режим. Таблица 2.2. Форматы данных и операций, которые выполняются МП 18086 Тип данных Формат Диапазон Операции Байт без знака 7 6 5 4 3 2 10 0—255 Сложение, вычитание, умножение, деление Старший значащий разряд * Байт со знаком 7 6 5 4 3 2 10 -128... 4-127 н Старший значащий разряд Знаковый разряд Слово без знака 15 14 0 0—65535 II Старший значащий разряд
Однокристальные микропроцессоры 57 Таблица 2.2 (окончание) Тип данных Формат Диапазон Операции Слово со знаком 111 0 5 4 3 -32768... +32767 — — Старший значащий разряд Знаковый разряд Упакованное двоично- десятичное число 7 6 5 4 3 2 10 0—99 Сложение, вычитание с коррекцией 0 ? 9 0 ? 9 Старшая Младшая тетрада тетрада Распакованное двоично- десятичное число 7 6 5 4 3 2 10 0—9 Сложение, вычитание, умножение, деление с коррекцией 0 0 0 0 0 ? 9 Старшая Младшая тетрада тетрада Примечание. Знаковые числа представляются в дополнительном коде. Структурная схема микропроцессора i8086. В МП i8086 применена конвей- ерная архитектура, которая позволяет совмещать во времени циклы испол- нения и выборки из памяти кодов последующих команд. Это достигается параллельной работой двух сравнительно независимых устройств — опера- ционного устройства и шинного интерфейса. Структурная схема МП i8086 показана на рис. 2.11. Операционное устройство выполняет команду, а
58 Гпава 2 шинный интерфейс осуществляет взаимодействие с внешней шиной — вы- ставляет адреса, считывает коды команд и операнды, записывает результа- ты вычислений в память или устройства ввода/вывода. Рис. 2.11. Структурная схема микропроцессора i8086 Операционное устройство состоит из РОН, предназначенных для хранения промежуточных результатов вычислений — данных и адресов; АЛУ с бу- ферными регистрами; регистра флагов; схемы управления и синхронизации, которая дешифрует коды команд и генерирует управляющие сигналы для всех блоков схемы МП. Шинный интерфейс состоит из шестибайтной реги- стровой памяти, которая называется очередью команд, четырех сегментных регистров: CS, DS, ES, SS, указателя команд IP, сумматора, а также вспомо- гательных регистров связи и буферных схем шин адреса/данных. Очередь команд работает по принципу FIFO (First Input — First Output, т. e. "первый пришел — первый вышел") и сохраняет на выходе порядок поступ- ления команд. Длина очереди — 6 байт. Если операционное устройство за- нято выполнением команды, шинный интерфейс самостоятельно иницииру- ет опережающую выборку кодов команд из памяти в очередь команд. Выборка из памяти очередного командного слова осуществляется тогда, когда в очереди обнаруживаются два свободных байта. Очередь увеличива-
Однокристальные микропроцессоры 59 ет быстродействие процессора в случае последовательного выполнения ко- манд. При выборке команд переходов, запросов и возвращений из подпро- грамм, обработки запросов прерываний очередь команд сбрасывается, и выборка начинается с нового места программной памяти. 17 NMI INTR CPU ADO AD1 AD2 AD3 AD4 AD5 AD6 AD7 AD8 AD9 AD10 AD11 AD12 AD13 AD14 A16/S73 A17/ST4 A18/ST5 A19/ST6 BHE/ST7 RD< 16 15 4 A 1 Q 13 CLK RESET READY 12 21 11 10 9 8 22 23 6 5 4 3 2 TEST MN/MX HLDA RQIGT1 HOLD RQ/GTQ GND GND Ucc 39 38 37 36 33 30 31 35 34 32 29 28 1 WR(LOCK) MIIO[ST2) DTIR(STl) DEN (STO) < ALE(QSQ) INTA(QS1) 20 40 c { 26 25 24 Рис. 2.12. Графическое изображение БИС МП 18086
60 Гпава 2 Еще одной задачей шинного интерфейса является формирование физиче- ского 20-разрядного адреса из двух 16-разрядных слов. Первым словом является содержимое одного из сегментных регистров CS, SS, DS, ES, а второе слово зависит от типа адресации операнда или кода команды. Суммирование 16-разрядных слов происходит со смещением на 4 разряда и осуществляется с помощью сумматора, который входит в состав шинно- го интерфейса. Назначение контактов. Условное графическое изображение МП приведено на рис. 2.12. Назначение контактов БИС зависит от режима работы МП. Восемь контактов имеют двойное обозначение, причем обозначения в скоб- ках соответствуют максимальному режиму. В табл. 2.3 приведены назначе- ния контактов МП, одинаковые для обоих режимов, в табл. 2.4 — назначе- ние контактов, которые используются только в минимальном режиме, в табл. 2.5 — назначение контактов, которые используются только в макси- мальном режиме. Буквой z обозначены трехстабильные выходы, которые переводятся в высокоимпедансное состояние при переходе МП в режим за- хвата; в скобках приведены альтернативные обозначения контактов, кото- рые встречаются в литературе. Таблица 2.3. Назначение контактов МП 18086 для минимального и максимального режимов Обоз- начение Назначение Тип 1 2 3 AD15—АО Address/data — мультиплексная двунаправленная шина адреса/данных (ADB — Address Data Bus), по которой с разделением во времени передаются адреса и данные. Ад- реса передаются в первом такте цикла шины и сопровож- даются сигналом ALE, а данные — во второй половине цикла шины и сопровождаются сигналом DEN Вход/ выход (Z) BHE/ST7 Byte High Enable/Status 7 — выходной сигнал разрешения старшего байта/сигнал состояния. В первом такте цикла одновременно с адресной информацией передается сигнал ВНЕ. Активный (L) уровень ВНЕ означает, что по стар- шей половине AD15—AD8 шины адреса/данных переда- ются 8-разрядные данные. Сигнал ВНЕ используется для разрешения доступа к старшему банку памяти или к внеш- нему устройству с байтовой организацией, подключенно- му к старшей половине шины данных. В других тактах формируется сигнал состояния ST7 Выход (?) RD Read — выходной сигнал чтения. Указывает на то, что МП выполняет цикл чтения Выход (?)
Однокристальные микропроцессоры 61 Таблица 2.3 (окончание) Обоз- начение Назначение Тип 1 2 3 READY Ready — входной сигнал готовности, подтверждающий, что ячейка памяти или устройство ввода/вывода, адресуе- мое в команде, готово к взаимодействию с МП при пере- даче данных Вход INTR Interrupt Request — входной сигнал запроса (при Н-уров- не) маскированного прерывания. Если прерывания разре- шены, МП переходит к подпрограмме обработки преры- вания, в противном случае игнорирует этот сигнал Вход RESET (CLR) Reset (Clear) — сигнал аппаратного сброса (при Н-уровне). Переводит МП в начальное состояние, при котором сброшены сегментные регистры (кроме CS, все разряды которого устанавливаются в единичное состояние), указа- тель команд IP, все флаги, регистры очереди команд и все внутренние триггеры устройства управления. Сигнал RESET не влияет на состояние РОН. Во время действия сигнала RESET все выходы, имеющие три состояния, пе- реводятся в высокоимпедансное состояние; выходы, кото- рые имеют два состояния, становятся пассивными. Мини- мальная продолжительность сигнала RESET при первом включении МП составляет 50 мкс, а при повторном запус- ке — четыре такта синхронизации, т. е. 0,8 мкс при такто- вой частоте 5 МГц. После окончания сигнала RESET на- чинается цикл выборки из памяти команды с адресом 0FFFFH:0000 Вход TEST Test — входной сигнал проверки. Сигнал используется вместе с командой ожидания WAIT, выполняя которую, МП проверяет уровень сигнала TEST. Если TEST =0, МП переходит к выполнению следующей после WAIT ко- манды. Если TEST = 1, МП находится в состоянии ожи- дания, выполняет холостые такты и периодически, с ин- тервалом 5TCLK, проверяет значение сигнала TEST Вход CLK, (CLC) Clock — входные тактовые импульсы, обеспечивающие синхронизацию работы МП Вход MN/MX Minimum/maximum — вход сигнала выбора минимального или максимального режимов. Определяет режим работы МП: при 1 — минимальный, при 0 — максимальный Вход
62 Глава 2 Таблица 2.4. Назначение контактов МП i8086 в минимальном режиме Обозначение Назначение Тип 1 2 3 INTA Interrupt Acknowledge — выходной сигнал подтверждения прерывания, определяющий чтение вектора прерывания Выход ALE Address Latch Enable — выходной сигнал разрешения фик- сации адреса; выдается в начале каждого цикла шины и ис- пользуется для записи адреса в регистр-фиксатор Выход DEN (DE) Data Enable — выходной сигнал разрешения данных, кото- рый определяег появление данных на шине адреса/данных Выход (z) DT/R (OP/IP) Data Transmit/Receive (Output-Input) — выходной сигнал передачи/приема данных; определяет' направление передачи данных по ADB. Предназначен для управления шинными формирователями и действует на протяжении всего цикла шины Выход (Z) м/io Memory/Input-Output — выходной сигнал признака обра- щения к памяти (М/1О=1) или внешнему устройству (M/IO = 0). Используется для распределения адресного про- странства памяти и устройст в ввода/вывода Выход (?) WR Write — выходной сигнал записи. Указывает на то, что МП выполняет цикл записи в память или внешнее уст- ройство, и сопровождает данные, которые выдаются МП на шину данных Выход (Z) HOLD Hold — входной сигнал запроса захвата шин от внешнего устройства или контроллера прямого доступа к памяти Вход HLDA Hold Acknowledge — выходной сигнал подтверждения за- хвата. Сигнал указывает на то, что МП перевел свои шины адреса/данных, адреса/состояния и управления в z-состояние Выход Таблица 2.5. Назначение контактов МП i8086 в максимальном режиме Обозначение Назначение Тип 1 2 3 ST2—ST0 (S2—S0) Выходные сигналы линий состояния. Характеризуют тип выполняемого цикла шины; используются для фор- мирования управляющих сигналов Выход (Z)
Однокристальные микропроцессоры 63 Таблица 2.5 (окончание) Обозначение Назначение Тип 1 2 3 RQ/GT0 RQ/GT1 (RQ/E0) (RQ/E1) Request/Grant (Request/Enable) — два входных/выход- ных сигнала запроса/предоставления локальной шины; используются для связи с другими процессорами, в ча- стности, с арифметическим сопроцессором. Линия RQ/GT1 имеет меныний приоритет Вход/ выход LOCK Lock — выходный сигнал блокировки (занятости) шины — сигнал монополизации управления шиной; формируется во время выполнения команды с префиксом LOCK и информирует другие процессоры и устройства о том, что они не должны запрашивать системную шину Выход QS1.QS0 Queue Status — два выходных сигнала состояния очере- ди; идентифицируют состояние внутренней шестибайт- ной очереди команд и действуют на протяжении такта синхронизации после выполнения операции над очере- дью. Сигналы QSI, QS0 предназначены для сопроцессо- ра, который контролирует шину адреса/данных, фикси- рует момент выборки из памяти программ пред- назначенной для него команды с префиксом ESC, а по- сле этого следит за очередью команд и определяет мо- мент, когда эта команда должна выполняться Выход Линии состояния. Линии ST2—STO — выходы сигналов состояния — иден- тифицируют тип цикла шины, который выполняется в соответствии с табл. 2.6. Таблица 2.6. Идентификация типа цикла шины * Линии состояния Тип цикла шины ST2 ST1 ST0 0 0 0 ПОДТВЕРЖДЕНИЕ ПРЕРЫВАНИЯ (INTA) 0 0 1 ВВОД (чтение внешнего устройства) 0 1 0 ВЫВОД (запись во внешнее устройство) 0 1 1 1 ОСТАНОВ 1 0 0 ВЫБОРКА команды
64 Гпава 2 Таблица 2.6 (окончание) Линии состояния Тип цикла шины ST2 ST1 ST0 1 0 1 ЧТЕНИЕ ПАМЯТИ 1 1 0 ЗАПИСЬ В ПАМЯТЬ 1 1 1 Цикла шины нет Циклом шины называют обращение к ячейке памяти или внешнему устрой- ству. Это определение совпадает с определением машинного цикла для 8- разрядных процессоров (см. разд. 2.1). Однако в 16-разрядных процессорах цикл шины может инициировать не только МП, но и арифметический со- процессор или специализированный процессор ввода/вывода. Начало цикла определяется переходом линий состояния ST2—ST0 из пассивного состоя- ния (111) в активное, а конец — обратным переходом в пассивное состоя- ние. Сигналы ST2—ST0 подаются на входы контроллера шины i8288, кото- рый дешифрирует их и формирует сигналы управления системной шиной Tor , IOW, MEMR , MEMW , INTA , ALE , DEN . Сигнал ST2 является логическим эквивалентом сигнала M/IO, а сигнал ST1 — эквивалентом сигнала DT/R (см. разд. 2.1). Сигналы ST4, ST3 определяют, какой сег- ментный регистр используется в данном цикле (табл. 2.7). Таблица 2.7. Идентификация сегментного регистра ST4 ST3 Сегментный регистр 0 0 ES 0 1 SS 1 0 CS 1 1 DS Сигналы ST4 и ST3 также могут использоваться для расширения адресного пространства системы. В этом случае отдельный банк памяти емкостью 1 Мбайт выделяется любому из четырех сегментов. К выводам S4 и S3 под- ключают дешифратор, который выбирает соответствующий банк памяти. Такой прием обеспечивает расширение адресной памяти до 4 Мбайт и за- щиту от ошибочной записи в сегмент, который перекрывается с другими сегментами.
Однокристальные микропроцессоры 65 Сигнал ST5 соответствует состоянию флага разрешения прерываний IF: "О" — прерывание запрещено, "1" — прерывание разрешено. Сигналы ST6, ST7 не используются и зарезервированы для последующих моделей МП. Идентификация состояния очереди команд осуществляется с помощью сиг- налов QS1, QS2 (см. табл. 2.5). Значение этих линий определяет операцию над очередью команд в соответствии с табл. 2.8. Таблица 2.8. Идентификация состояния очереди команд QS1 QS0 Операция над очередью 0 0 Операции нет, в последнем такте не было выборки из очереди 0 1 Из очереди выбран первый байт команд 1 0 Очередь пуста; была опустошена командой передачи управления 1 1 Из очереди выбран следующий байт команды Линии запроса/предоставления локальной шины. Двунаправленные линии RQ/GTO ,RQ/GT1 используются для передачи импульсных сигналов за- проса/разрешения доступа к локальной шине (каналу). Процесс доступа к шине осуществляется в таком порядке: сначала устройство, которое под- ключено к локальной шине и требует доступа к общим ресурсам, формирует импульс продолжительностью один такт; после этого в конце текущего цикла МП выдает соответствующий импульс, подтверждающий возмож- ность доступа к локальной шине. В следующем такте МП переводит шины адреса/данных и управления в высокоимпедансное состояние и отключается от канала. По окончании работы с каналом устройство выдает в ту же ли- нию третий импульс, который указывает на окончание захвата канала. В следующем такте МП восстанавливает управление шиной и продолжает вычисления. Все три импульса имеют одинаковую продолжительность и низкий активный уровень. Сигналы на линиях независимы, однако при од- новременном поступлении запросов линия RQ/GT0 имеет более высокий приоритет, чем линия RQ/GT1. Любая из двух рассмотренных линий ис- пользуется для установления режцма захвата шин и эквивалентна паре HOLD и HLDA МП i8086 в минимальном режиме (см. разд. 2.1). Организация памяти. Память представляет собой массив емкостью 1 Мбайт, т. е. 220 8-разрядных ячеек (рис. 2.13).
66 Гпава 2 00000 35 00001 4Д 00002 78 I I I 1 1 1 FFFFE FFFFF Рис. 2.13. Программная модель памяти В памяти хранятся как байты, так и 16-разрядные слова. Слова располага- ются в двух соседних ячейках памяти: старший байт хранится в ячейке со старшим адресом, младший — в ячейке с младшим адресом. Адресом слова считается адрес его младшего байта. На рис. 2.13 показан пример, когда по адресу 00000 хранится байт 35Н, а по адресу 00001 — слово 784АН. Началь- ные (00000Н—003FFH) и конечные адреса (FFFF0H—FFFFFH) зарезерви- рованы для системы прерываний и начальной установки соответственно. Организация памяти, при которой каждому адресу соответствует содержи- мое одной ячейки памяти (см. рис. 2.13), называется линейной. В МП i8086 ис- пользуется сегментная организация памяти, которая характеризуется тем, что программно доступной является не вся память, а лишь некоторые сег- менты, т. е. области памяти. Внутри сегмента используется линейная адре- сация. Введение сегментной организации можно объяснить следующим образом. Микропроцессор i8086 представляет собой 16-разрядный процессор, т. е. имеет 16-разрядную внутреннюю шину, 16-разрядные регистры и суммато- ры. Стремление разработчиков БИС адресовать по возможности больший массив памяти обусловило использование 20-разрядной шины данных. Для сравнения: 16-разрядная шина адреса разрешает адресовать 216= 64 Кбайт; 20-разрядная — 220= 1 Мбайт. Для формирования 20-разрядного адреса в 16-разрядном процессоре ис- пользуют информацию двух 16-разрядных регистров. В МП i8086 20- разрядный адрес формируется из двух 16-разрядных адресов, которые называ-
Однокристальные микропроцессоры 67 ют логическими. Первый логический адрес, дополненный справа четырьмя нулями, представляет собой начальный адрес сегмента емкостью 64 Кбайт. Второй логический адрес определяет смещение в сегменте, т. е. определяет расстояние от начала сегмента до адресованной ячейке. Если это расстояние равно 0000, то адресуется первая ячейка сегмента, если FFFFH — послед- няя. Таким образом, логическое адресное пространство разделено на блоки соседних адресов емкостью 64 Кбайт, т. е. сегменты. Такой подход к организации памяти удобен еще и потому, что память обычно логически делится на области кода (программной памяти), данных и стека. Физический 20-разрядный адрес ячейки памяти формируется из двух 16-разрядных адресов — адреса сегмента Seg и исполнительного адреса ЕА (Executive Address), которые суммируются со смещением на четыре раз- ряда (рис. 2.14). Рис. 2.14. Формирование физического адреса Смещение адреса сегмента на 4 разряда влево эквивалентно его умножению на 24. Следовательно, физический адрес равняется 16 х Seg + ЕА. В качестве первого логического адреса Seg используется содержимое одного из четы- рех сегментных регистров: CS (Code Segment — сегмент кодов), DS (Data Segment — сегмент данных), ES (Extended Segment — дополнительный сег- мент данных), SS (Stack Segment — сегмент стека). Второй логический адрес ЕА, или смещение, зависит от сегмента. Так, в сегменте кодов ЕА использу- ется содержимое указателя команд IP, в сегментах данных значение ЕА за- висит от средства адресации операнда, в сегменте стека для указания второ- го логического адреса используются регистры SP или ВР. Преобразование логических адресов в физические всегда однозначно, т. е. паре Seg и ЕА отвечает единственный физический адрес. Обратное преобра- зование не является однозначным: физический адрес можно представить с
68 Гпава 2 помощью 64 Кбайт / 16 = 4096 пар логических адресов. В дальнейшем будем обозначать физический адрес в виде Seg:EA, где вместо Seg и ЕА могут ис- пользоваться как обозначения регистров, так и 16-разрядные данные. Пример 2.1. Найти значение физического адреса по двум значениям логиче- ских адресов CS:IP. Пусть содержимое сегментного регистра CS — число 2002Н, содержимое указателя команд IP — 3175Н. Прибавим к значению CS четыре нуля с пра- вой стороны: CS(0000) = 0010 0000 0000 0010 0000В = 20020Н. Выполнив операцию суммирования этой величины с содержимым регистра IP, получим физический адрес: 0010 0000 0000 0010 0000 + ООН 0001 0111 0101 0010 0011 0001 1001 0101 = 23195Н. Таким образом, запись CS:IP при CS = 2002Н, IP = 3175Н соответствует фи- зическому адресу 23195 Н. Пример 2.2. Найти значение двух логических адресов, которые соответст- вуют физическому адресу 23195Н и не равняются логическим адресам при- мера 2.1. Значение физического адреса 23195Н можно получить суммированием двух других логических адресов 2100Н:2195Н: 0010 0001 0000 0000 0000 + 0010 0001 1001 0101 0010 0011 0001 1001 0101 = 23195Н. Емкость памяти 1 Мбайт, начиная с нулевого адреса, разбивается на пара- графы по 16 байт. Сегмент может начинаться только на границе параграфа, т. е. в адресе сегмента младшие четыре бита — нулевые. Размещение сегмен- тов в памяти произвольное: сегменты могут частично или полностью пере- крываться либо не иметь общих областей. Изменяя значения первого и вто- рого логических адресов, можно адресовать любую ячейку из общей памяти емкостью 1 Мбайт. На рис. 2.15, а показано расположение в пространстве 1 Мбайт четырех сегментов по 64 Кбайт без перекрытия. Начальные адреса сегментов опре- деляются содержимым 16-разрядных сегментных регистров, которые до-
Однокристальные микропроцессоры 69 полнены справа четырьмя нулевыми битами. Смещение в сегменте кодов определяется содержимым регистра IP, смещение в сегменте данных и до- полнительном сегменте данных — эффективным адресом ЕА, который ука- зывается в команде, смещение в сегменте стека — содержимым регистра SP. 1 Мбайт < Рис. 2.15. Расположение сегментов в пространстве памяти I Мбайт: a — без перекрытия; б — с частичным перекрытием В сегментах кодов расположены коды команд, т. е. программа в машинных кодах; в остальных сегментах — данные. Программа может обращаться только к данным в сегментах, которые обозначены на рис. 2.15 серыми пря- моугольниками. Изменяя содержимое сегментных регистров, можно передвигать сегменты в границах всей памяти 1 Мбайт. На рис. 2.15, б показано расположение сег- ментов кодов, данных, стека и дополнительного сегмента с частичным пе- рекрытием. Такой случай возникает тогда, когда содержимое сегментных регистров отличается менее чем на 64 Кбайт / 16 = 4096 байт. Программная модель. Программная модель МП i8086 (рис. 2.16) состоит из РОН, сегментных регистров, указателя команд и регистра флагов. Регистры общего назначения делятся на регистры данных и регистры- указатели. К регистрам данных относятся четыре 16-разрядных регистра: АХ, ВХ, СХ, DX. Любой из этих регистров состоит из двух 8-разрядных ре- гистров, которые можно независимо адресовать символическими именами АН, ВН, CH, DH (старшие байты — High) и AL, BL, CL, DL (младшие бай- ты — Low). Регистры-указатели SP (Stack Pointer, указатель стека), BP (Base Pointer, базовый регистр, SI (Source Index, индекс источника), DI (Desti-
70 Гпава 2 nation Index, индекс назначения) являются 16-разрядными и предназначены, как правило, для хранения адресов операндов при косвенной адресации. Рис. 2.16. Программная модель МП i8086 Все РОН можно использовать для хранения данных, но в некоторых ко- мандах допускает использование определенного регистра по умолчанию: АХ — при умножении, делении, вводе и выводе слов; AL — при умноже- нии, делении, вводе и выводе байтов, десятичной коррекции, преобразо-
Однокристальные микропроцессоры 7/ вании байтов (команда XLAT); АН — при умножении и делении байтов; ВХ — при трансляции; СХ — как счетчик циклов и указатель длины строк в строчных командах; CL — для хранения числа сдвигов в командах; DX — при умножении и делении слов, вводе и выводе с косвенной адреса- цией; SP — при операциях со стеком; SI, DI — при строковых операциях. В отличие от 8-разрядных МП, в регистре SP 16-разрядных процессоров хранится смещение последней занятой ячейки стека относительно начала сегмента стека, а полный адрес стека определяется как SS:SP. Сегментные регистры CS, DS, ES, SS определяют начальные адреса четырех сегментов памяти. Использование сегментных регистров определяется типом обра- щения к памяти (табл. 2.9). Таблица 2.9. Использование регистров при адресации памяти Тип обращения к памяти Сегментный регистр Смещение по умолчанию альтернативный Выборка команд CS Нет IP Стековые операции SS Нет SP Адресация переменной DS CS, ES, SS ЕА Строка-источник* DS CS, ES, SS SI Строка-приемник* ES Нет DI Использование ВР при об- ращении к стеку при чте- нии/записи данных SS CS, ES, DS ЕА Примечание. Строка-источник и строка-приемник — это строки данных (мас- сивы), которые принимают участие в строковых командах. Для некоторых типов обращений допускается замена сегментного регистра по умолчанию на альтернативный, что осуществляется использованием префиксов CS:, DS:, SS:, ES:. Пример 2.3. Переслать содержимое ячейки памяти с адресом DS:1000H в регистр-аккумулятор AL. Для того чтобы переслать содержимое ячейки памяти в аккумулятор, надо использовать команду пересылки, где после записи мнемоники команды mov записывается операнд-назначение, а потом через запятую — операнд- источник: MOV dst, src;
72 Гпава 2 После операндов через точку с запятой может записываться комментарий к команде. Операндом назначения dst (destination) является регистр AL, а операндом источника информации src (source) — ячейка памяти. Содер- жимое ячейки памяти обозначается квадратными скобками, внутри кото- рых записывается смещение в сегменте, т. е. второй логический адрес. Пер- вый логический адрес по умолчанию является содержимым регистра DS. Таким образом, по команде MOV AL, [1000Н] ; AL<-DS:[1000Н] в регистр AL пересылается байт из ячейки памяти с адресом DS:1000H. Заметим, что перед использованием этой команды содержимое регистра DS должно быть определено. Пример 2.4. Переслать содержимое ячейки памяти с адресом ES:1000H в ре- гистр-аккумулятор AL. По команде с префиксом es MOV AL, ES: [1000H] ; AL <- ES:[1000H] в AL пересылается содержимое ячейки памяти с адресом ES:1000H. В отличие от 8-разрядных МП, в указателе команд IP 16-разряДных процес- соров хранится смещение в сегменте кодов текущей команды. Регистр флагов хранит признаки результатов выполнения арифметических и логических операций и управляющие признаки. Последние можно устано- вить или сбросить программно. Типы флагов представлены в табл. 2.10. Таблица 2.10. Назначение флагов Обоз- начение Назначение Разрядность операнда 8 16 AF Auxiliary Flag — флаг вспомогательного переноса/ заема из младшей тетрады в старшую (из разряда D3 в разряд D4). Используется в командах обработки дво- ично-десятичных чисел + — CF Carry Flag — флаг переноса/заема. Устанавливается при выходе результата суммирования (вычитания) без- знаковых операндов за границу диапазона. В командах сдвига флаг CF фиксирует значение старшего бита + 4- OF Overflow Flag — флаг переполнения, устанавливается при выходе знакового результата за границы диапазона + +
Однокристальные микропроцессоры 73 Таблица 2.10 (окончание) Обоз- начение Назначение Разрядность операнда 8 16 SF Sign Flag — флаг знака. Дублирует значение старшего бита результата. SF = 0 для положительных чисел и SF = 1 — для отрицательных + + PF Parity Flag — флаг паритета (четности). Устанавливает- ся при четном количестве единиц в результате + - ZF Zero Flag — флаг нулевого результата. Устанавливает- ся при нулевом результате операции + + DF Direction Flag — флаг управления направлением обра- ботки массивов данных в строковых командах. При DF = 1 индексные регистры SI, DI, которые принимают участие в строковых командах, автоматически декре- ментируются на количество байтов операнда, при DF = 0 — инкрементируются IF Interrupt-enable Flag — флаг разрешения прерывания. При IF = 1 разрешается выполнение маскированных аппаратных прерываний - - TF Trap Flag — флаг трассировки (пошагового режима). При его установке после выполнения каждой команды вызывается внутреннее прерывание 1 (INT 1) - - Пример 2.5. Определить значения флагов после выполнения команды ADD AL, BL (суммирование содержимого 8-разрядных регистров AL, BL; ре- зультат передается в AL), если в регистре AL находится число 49Н, а в реги- стре BL — 68Н. После выполнения команды суммирования флаги установятся следующим образом: AF =1, CF = 0, OF =1, SF = 1, PF =1, ZF = 0. Объясним установку флагов. Результат операции суммирования — не нуле- вой, поэтому флаг ZF сброшен, т. е. ZF = 0. Старший разряд результата ра- вен единице, поэтому SF = 1. Количество единиц в результате равно 4, т. е. четное число, поэтому PF = 1. В результате суммирования возникло пере- полнение из младшей тетрады в старшую (AF = 1) и в знаковый разряд (OF = 1). Переполнения разрядной сетки нет, поэтому CF = 0.
74 Гпава 2 Адресация портов ввода/вывода. Пространство адресов портов ввода/вывода не сегментировано, занимает 64 Кбайт и адресуется 16 младшими разрядами 20-разрядной шины адреса. Порты могут быть как 8-, так и 16-разрядными. Любые два смежных 8-разрядных порта можно рассматривать как 16-раз- рядный порт аналогично слову в памяти. При этом для обмена с 8-раз- рядными портами используется регистр AL, а с 16-разрядными — регистр АХ. Первые 256 портов (с номерами 0-0FFH) можно адресовать с помощью прямой адресации. Все 64 Кбайт портов адресуются косвенно — с помощью регистра DX. Пример 2.6. Ввести информацию из 8-разрядного порта с адресом 56Н в ре- гистр-аккумулятор AL. Для того чтобы передать информацию из 8-разрядного порта с адресом 56Н в аккумулятор AL, надо выполнить команду ввода IN. Первым операндом команды является 8-разрядный аккумулятор AL, если вводится байт ин- формации, или 16-разрядный АХ, если вводится слово. В этом случае надо использовать операнд AL. Вторым операндом является номер порта 56Н. Таким образом, по команде IN AL, 56Н ; AL <- Р8(56Н) производится ввод информации из 8-разрядного порта с адресом 56Н в ак- кумулятор. Заметим, что допускается обозначение адреса порта в квадратных скобках: IN AL, t56H] ; AL <- P8(56H). Пример 2.7. Вывести информацию из регистра-аккумулятора АХ в 16-раз- рядный порт с адресом 34Н. Для того чтобы вывести информацию из аккумулятора АХ в 16-разрядный порт с адресом 34Н, надо выполнить команду вывода оит. Первым операн- дом команды является номер порта 34Н, вторым — аккумулятор AL, если выводится байт информации, или АХ, если выводится слово. В этом случае надо использовать операнд АХ. Таким образом, по команде OUT 34Н, АХ ; АХ -» Р16(34Н) производится вывод информации из регистра АХ в 16-разрядный порт с адресом 34Н. Пример 2.8. Ввести информацию из 8-разрядного порта с адресом, который содержится в регистре DX, в регистр-аккумулятор AL. Для того чтобы ввести информацию, надо выполнить команду ввода in, первым операндом которой является аккумулятор AL, а вторым — регистр DX. Таким образом, по команде IN AL, DX ; AL <- P8(DX) '
Однокристальные микропроцессоры 75 состоится ввод информации в аккумулятор AL из 8-разрядного порта с ад- ресом, который находится в регистре DX. Содержимое регистра DX должно быть определено к моменту выполнения команды ввода. Допускается запись команды с косвенной адресацией в виде IN AL, [DX]. Типы адресации операндов. В МП i8086 используются те же основные типы адресации (прямая, регистровая, непосредственная и косвенная), что и для 8- разрядных процессоров (см. разд. 2.1), однако косвенная адресация имеет следующие разновидности: базовая; индексная; базово-индексная. Базовая адресация. Эффективный адрес операнда ЕА вычисляется суммиро- ванием содержимого базовых регистров ВХ или ВР и смещения (8- или 16- разрядного знакового числа). В частном случае смещения может не быть. Пример 2.9. Переслать в регистр-аккумулятор АХ содержимое ячейки памя- ти, которая расположена в сегменте данных и имеет эффективный адрес (смещение в сегменте), равный сумме содержимого регистра ВХ и числа 2000Н. Для того чтобы переслать содержимое ячейки памяти в аккумулятор, надо использовать команду пересылки mov dst, src, где операндом назначения dst (destination) является регистр АХ, а операндом источника информации src (source) — ячейка памяти. Содержимое ячейки памяти обозначается квадратными скобками, в которых записывается значение эффективного адреса, т. е. ВХ + 2000Н. Таким образом, по команде MOV АХ, [ВХ + 2000Н] ; АХ <— DS:[ВХ + 2000Н] в регистр АХ пересылается байт из ячейки памяти с адресом DS: ВХ + 2000Н. Заметим, что перед использованием этой команды содержимое регистров DS и ВХ определяется заранее. Индексная адресация. При индексной адресации в качестве адреса смещения используется сумма содержимого индексных регистров SI или DI и смеще- ния в виде числа. Пример 2.10. Переслать в регистр-аккумулятор АХ содержимое ячейки па- мяти, расположенной в сегменте данных с эффективным адресом (смещение в сегменте), равным сумме содержимого регистра SI и числа 5000Н. По команде MOV АХ, [SI + 5000Н] ; АХ <- DS: [SI + 5000Н] в регистр АХ пересылается байт из ячейки памяти с адресом DS:SI + 5000Н.
76 Гпава 2 Перед использованием этой команды содержимое регистров DS и SI опре- деляется заранее. Базово-индексная адресация. Эффективный адрес операнда ЕА равен сумме содержимого базовых регистров ВХ или ВР, индексных регистров SI или DI и смещения — некоторого числа, задаваемого в команде. Заметим, что чи- словое смещение может отсутствовать. Пример 2.11. Переслать в регистр-аккумулятор АХ содержимое ячейки па- мяти, расположенной в сегменте данных и имеющей эффективный адрес, равный сумме содержимого двух регистров SI и ВХ. По команде MOV АХ, [SI + ВХ] ; АХ <- DS: [SI + ВХ] в регистр АХ пересылается байт из ячейки памяти с адресом DS:SI + ВХ. Перед использованием этой команды содержимое регистров DS, SI и ВХ определяется заранее. Базовая и индексная адресации применяются для обращения к элемен- там одномерного массива, базово-индексная — к элементам двумерного массива. Циклы шины процессора. На протяжении цикла шины МП выставляет адрес ячейки памяти или УВВ в шину адреса, формирует управляющие сигналы чтения/записи, а после этого считывает или записывает данные. Кроме цик- лов ЧТЕНИЕ и ЗАПИСЬ в память или УВВ, существуют циклы ПОДТВЕРЖДЕНИЕ ПРЕРЫВАНИЯ и ЗАХВАТ ШИН. Цикл шины может инициировать не только независимый процессор i8086, но и арифметиче- ский сопроцессор или сопроцессор ввода/вывода. Различают циклы шины в минимальном и максимальном режимах. Временные диаграммы циклов ЧТЕНИЕ и ЗАПИСЬ в минимальном режиме показаны на рис. 2.17. Цикл шины состоит, как минимум, из четырех тактов. Такт определяется как промежуток времени между задними фронтами двух соседних импуль- сов CLK. Любой цикл шины может быть неограниченно растянут с помощью сигнала готовности READY; при. этом процессор выполняет необязатель- ные такты ожидания Tw. Циклы обращения к портам отличаются от циклов обращения к памяти тем, что старшие разряды шины адреса имеют нулевое значение (при кос- венной адресации с помощью DX сигналы на линиях А19—А16 имеют L- уровень; при прямой адресации L-уровень приобретают сигналы на линиях А19—А8). На линиях в первом случае и А15—АО и А7—АО во втором — устанавливается адрес порта.
Однокристальные микропроцессоры Цикл ПОДТВЕРЖДЕНИЕ ПРЕРЫВАНИЯ формируется аналогично циклу ЧТЕНИЕ порта, но вместо активного сигнала IOR активным является сиг- нал INTA , а шина адреса процессором не управляется. Рис. 2.17. Циклы ЧТЕНИЕ и ЗАПИСЬ МП i8086 в минимальном режиме Типы прерываний. Процессор i8086 может обрабатывать до 256 типов пре- рываний. Каждому прерыванию соответствует свой вектор — двойное сло- во, которое содержит адрес CS:IP вызываемой подпрограммы. Под векторы прерываний в общем пространстве адресов памяти отводится 1 Кбайт, на- чиная с нулевого адреса (рис. 2.18). При переходе к подпрограмме обработки прерываний int п (и — тип пре- рывания) процессор перемещает в стек содержимое регистров IP, CS, реги- стра флагов F, сбрасывает флаг разрешения прерывания IF; вычисляет ад- рес 4хп, первое слово по этому адресу перемещает в IP, а второе — в CS. Последовательность этих действий эквивалентна командам: □ PUSHF; Запоминание флагов в стеке О CALL FAR и_ргос_4п ; Дальний вызов подпрограммы обработки пре- рывания
78 Гпава 2 INTO IN Т 225 00000 00001 00002 00003 003FCH 003FDH 003FEH 003FFH Рис. 2.18. Карта векторов прерываний Сброс флага прерывания IF не разрешает прерывать выполнение подпро- граммы обработки прерывания до ее завершения или выполнения команды разрешения sti. Последней командой подпрограммы обработки прерыва- ния является команда iret. По этой команде процессор выбирает из стека адрес возврата (адрес команды, следующей за командой int) и содержимое регистра флагов. Типы прерываний показаны на рис. 2.19. Система прерываний IRQO IRQl IRQ7 Запросы прерываний Внешние Внутренние Рис. 2.19. Типы прерываний
Однокристальные микропроцессоры 79 Прерывания делятся на внешние аппаратные и внутренние. Запросы преры- ваний IRQ (Interrupt Request) внешних аппаратных прерываний поступают в систему прерываний или на линию немаскированного прерывания NMI МП. Система прерывания формирует сигнал INTR маскированного прерывания МП. Заметим, что маскированное прерывание отличается от немаскирован- ного тем, что первое может быть запрещено программно — командой сброса флага разрешения прерываний IF. В этом случае при поступлении запросов прерывания они будут игнорироваться. Внутренние прерывания процессора разделяют на программные и аппарат- ные. Источниками внутренних программных прерываний (см. рис. 2.19) яв- ляются: ошибка деления (тип 0); пошаговый режим (тип 1); команда into (тип 4). Внутренние программные прерывания int п и int з выполняются по ко- манде прерывания и разрешают вызывать подпрограммы обработки пре- рываний (например, сервисные подпрограммы BIOS и DOS) без применения дальних вызовов подпрограмм. В отличие от int п, прерывание int з явля- ется однобайтной командой и обычно используется для передачи управле- ния подпрограмме-отладчику. Выполнение программных прерываний не зависит от флага разрешения прерывания IF. Внутренние аппаратные прерывания процессора возникают в следующих случаях: □ при делении на ноль (тип 0); □ при установленном флаге трассировки (тип 1). В этом случае прерывание происходит после выполнения каждой команды; □ после команды into (тип 4), если установлен флаг переполнения OF. Аппаратные прерывания возникают при активном уровне сигналов на вы- водах NMI (немаскированное прерывание — тип 2) и INTR (маскиро- ванные, типы 5-255). Маскированные прерывания выполняются при уста- новленном флаге IF. При переходе к подпрограмме обработки аппаратного прерывания процессор последовательно формирует два цикла подтвержде- ния прерывания, в которых генерируется сигнал INTA . После второго им- пульса INTA контроллер прерываний передает по шине данных номер век- тора прерывания п. Далее действия процессора аналогичны выполнению программного прерывания. Обработка текущего прерывания может быть прервана немаскированным прерыванием или другим маскированным пре- рыванием высшего приоритета в том случае, если подпрограмма-обра- ботчик установит флаг разрешения прерывания IF. Немаскированное пре- рывание выполняется независимо от состояния флага IF.
80 Гпава 2 Микропроцессор i8088 отличается от МП i8086 тем, что имеет внешнюю 8- разрядную шину данных при внутренней 16-разрядной шине. Уменьшение разрядности шины данных упрощает построение блоков памяти интерфейса с внешними устройствами, но производительность процессора снижается на 20—30%. Структурная схема i8088 аналогична схеме МП i8086, однако дли- на очереди команд сокращена до 4 байт, а опережающая выборка кодов команд выполняется при наличии одного свободного байта. Эти свойства оптимизи- руют конвейер с учетом разрядности шины. С программной точки зрения процессоры идентичны, их система команд и набор регистров одинаковы. Так же как и МП i8086, МП i8088 выполняет 8- и 16-разрядные логические и арифметические операции, включая умножение и деление в двоичном и двоично-десятичном кодах, операции со строками, поддерживает режимы прерывания, прямого доступа к памяти, операции с портами. Расположение и назначение выводов МП i8086 и i8088 совпадает, за исключением того, что в i8088 линии AD15—AD8 используются только для адреса, а линия ВНЕ заменена линией состояния ST0. Сигналы STO, DT/R и Ю/М могут ис- пользоваться для идентификации цикла шины в соответствии с табл. 2.6. Микропроцессоры i80186(i80188) программно совместимы с МП i8086. Раз- рядность шины адреса — 20, внешней и внутренней шины данных — 16 и 8 соответственно. Процессоры имеют встроенные периферийные контролле- ры прерываний, прямого доступа к памяти, трехканальный таймер и такто- вый генератор. Микропроцессоры i80C186/i80C188 имеют средства управления энергопо- треблением. Есть модификации со встроенным последовательным портом и контроллерами динамической памяти. Контрольные вопросы и задания 1. Укажите характерные особенности минимального и максимального ре- жимов работы МП i8086. 2. Укажите существующие форматы данных МП i8086. 3. Приведите примеры упакованного и распакованного двоично-десятич- ных чисел. 4. Каким образом в МП представляются отрицательные числа? 5. Объясните принцип конвейерной архитектуры. 6. Укажите функции операционного устройства и шинного интерфейса. 7. Каким образом определяются тип, начало и конец цикла шины с помо- щью линий состояния?
Однокристальные микропроцессоры 81 8. Какие блоки МП принимают участие в формировании 20-разрядного физического адреса? 9. Вычислите 20-разрядный физический адрес DS:SI, если DS= 1234H, SI = 5678Н. 10. Подберите две пары 16-разрядных логических адресов, которые явля- ются эквивалентными физическому адресу 12008Н. 11. Какие группы регистров входят в программную модель МП? 12. Какие сегментные регистры по умолчанию адресуют начало сегментов кодов, стека, данных? 13. Укажите назначения регистра флагов. 14. Приведите пример выполнения команды, после которой устанавливает- ся а) флаг знака; б) флаг паритета; в) флаг нулевого результата. 15. Приведите примеры команд ввода/вывода с прямой адресацией 8- разрядных портов. 16. Какие существуют типы адресации операндов в памяти? 17. Каким образом вычисляется эффективный адрес операнда при разных типах адресации? 18. Назовите и охарактеризуйте существующие типы циклов шины. 19. Какие действия выполняет МП при переходе к подпрограмме обработ- ки прерываний? 20. Назовите и охарактеризуйте существующие типы прерываний МП i8086. 2.3. Система команд МП !8086 Система команд МП i8086 (табл. 2.11) содержит 91 мнемокодов. Все коман- ды МП можно разделить на пять групп: □ команды передачи информации (пересылка, работа со стеком, команды ввода/вывода); □ команды обработки информации (арифметические, логические, команды сдвига); □ строковые команды; □ команды передачи управления, включая команды прерываний; □ команды управления состоянием МП. В табл. 2.11 используются такие обозначения: src — операнд-источник; dest — операнд-назначение;
82 Глава 2 reg — 8 /16-разрядный РОН; reg8 — 8-разрядный РОН; regl6 — 16-разрядный РОН; sr — сегментный регистр; mem— 8/16-разрядная ячейка памяти; mem8 — 8-разрядная ячейка памяти; memi6 — 16-разрядная ячейка памяти; r/m — 8/16-разрядный регистр или ячейка памяти; г/т/и — 8/16-разрядный регистр, ячейка памяти или непосредственный опе- ранд; immed — непосредственный операнд; disp — 8/16-разрядное смещение при задании адреса; disp8 — 8-разрядное смещение; dispi6 — 16-разрядное смещение; target — метка, к которой осуществляется переход; seg target — первый логический адрес (сегментный адрес) метки target; offset target — второй логический адрес (смещение в сегменте) метки target; А — аккумулятор AL или АХ; m[disp] — ячейка памяти с эффективным адресом ЕА = disp. Таблица 2.11. Система команд микропроцессора 18086 Мнемокод команды Описание команды Алгоритм команды Количест- во байт Количест- во тактов 1 2 3 4 5 КОМАНДЫ ПЕРЕДАЧИ ИНФОРМАЦИИ Команды пересылки MOV dest, src X Пересылка данных из регистра, ячейки памяти или пере- сылка непосредст- венного операнда в регистр или ячейку памяти reg <— reg 2 2
Однокристальные микропроцессоры 83 Т абл ица 2.11 ( продолжение ) Мнемокод команды Описание команды Алгоритм команды Количест- во байт Количест- во тактов 1 2 3 4 5 КОМАНДЫ ПЕРЕДАЧИ ИНФОРМАЦИИ Команды пересылки sr <— reg 2 2 reg <— sr 2 2 mem’<— reg 2-4» 9 + EA reg <— mem 2-4» 8 + EA mem <— sr 2-4') 9 + EA sr <— mem 2-4'> 8 + EA a <— mem 3 11 mem <— a 3 11 mem8 <— immed 3-52> 10 + EA meml6 <— immed 4-63> 10 + EA reg8 <— immed 2 4 regl6 <— immed 3 4 XCHG r/m, reg Обмен данными между регистрами или регистром и памятью reg <—> reg 2 4 mem <—> reg 2-4') 17 + EA A <—> reg 1 3 XLAT Замена содержимого AL значением ячей- ки памяти с адресом ES: [ВХ + (AL)] AL <— ES:[BX + + (AL)] 1 11 LEA regl6, mem Загрузка эффективно- го адреса ячейки па- мяти mem в регистр reg <- EA 2-4» 2 + EA LDS regl6, mem t Загрузка в регистр regl6 слова из ячей- ки памяти по адресу [mem], в DS — сле- дующего слова из ячейки по адресу [mem + 2] reg <— [mem] DS <— [mem+2] 2-4» 16 + EA
84 Гпава 2 Таблица 2.11 (продолжение) Мнемокод команды Описание команды Алгоритм команды Количест- во байт Количест- во тактов 1 2 3 4 5 КОМАНДЫ ПЕРЕДАЧИ ИНФОРМАЦИИ Команды пересылки LES regl6, mem Загрузка в регистр regl6 слова из ячейки памяти по адресу [mem], в ES — следующего слова из ячейки по адресу [mem + 2] reg <— [mem] ES <— [mem + 2] 2-4'0 16 + EA LAHF Загрузка младшего байта регистра фла- гов FL в АН АН <- FL 1 4 SAHF Сохранение АН в младшем байте ре- гистра флагов FL FL <- AH 1v 4 Команды работы со стеком PUSH r/m/sr Пересылка слова из регистра или из памяти в стек SP <— SP — 2 [SS:SP] <- r/m 2-4') 11/(16+ EA) SP <— SP — 2 [SS:SP] <- sr 1 10 PUSHF Пересылка в стек содержимого реги- стра флагов SP <— SP — 2 [SS:SP] <— F 1 10 POP r/m/sr Пересылка слова из стека в регистр или память r/m <- [SS:SP] SP <— SP + 2 2-4‘) 8/(16+ EA) sr <- [SS:SP] SP <— SP + 2 1 8 POPF Пересылка слова из стека в регистр фла- гов F <- [SS:SP] SP <— SP + 2 1 8
Однокристальные микропроцессоры 85 Таблица 2.11 (продолжение) Мнемокод команды Описание команды Алгоритм команды Количест- во байт Количест- во тактов 1 2 3 4 5 КОМАНДЫ ПЕРЕДАЧИ ИНФОРМАЦИИ Команды ввода/вывода IN AL, Р8 IN AL, DX Ввод в аккумулятор AL байта из 8- разрядного порта с адресом Р8 или с адресом, который находится в DX AL <- Порт (Р8) AL «- Порт (DX) 2 1 10 8 IN AX, P8 IN AX, DX Ввод в аккумулятор АХ слова из 16- разрядного порта с адресом Р8 или с адресом, который находится в DX АХ <- Порт (Р8) АХ «- Порт (DX) 2 1 10 8 OUT P8, AL OUT DX, AL Вывод байта из ак- кумулятора AL в 8- разрядный порт с адресом Р8 или с адресом, который хранится в DX1 Порт (Р8) <— AL Порт (DX) <— AL 2 1 10 8 OUT P8, AX OUT DX, AX Вывод слова из ак- кумулятора АХ в 16- разрядный порт с адресом Р8 или с адресом, который хранится в DX Порт (Р8) АХ Порт (DX) <— АХ 2 1 10 8 КОМАНДЫ ОБРАБОТКИ ИНФОРМАЦИИ Арифметические команды ADD г//гл, r/m/i Сложение двух опе- рандов r/reg <— r/reg + reg reg <— reg + r/m reg8 <— reg8 + immed 2 2-4» 2-4» 3 16 + ЕА 9 + ЕА
86 Гпава 2 Таблица 2.11 (продолжение) Мнемокод команды Описание команды Алгоритм команды Количест- во байт Количест- во тактов 1 2 3 4 5 КОМАНДЫ ОБРАБОТКИ ИНФОРМАЦИИ Арифметические команды - regl6 +- regl6 + immed mem8 <— mem8 + immed mem!6 <— mem!6 + immed AL AL + immed AX AX + immed 3 4 3-52) 2 3 4 4 17 + EA 4 4 ADC r/m, r/m/i Сложение двух опе- рандов и флага пе- реноса CF от пре- дыдущей команды. Флаг переноса сум- мируется с младшим битом результата reg <— reg + reg + CF mem <— mem + reg + CF reg <— reg + mem + CF reg8 <— reg8 + immed + CF regl6 +- regl6 + immed + CF mem8 <— mem8 + immed + CF meml6 <— meml6 + immed + CF AL AL + immed + CF AX <— AX + immed + CF 2 2-4'> 2-4') 3 4 3-52) 4-6’) 2 3 ADD г 3 16 + EA 9 + EA 4 4 17 + EA 17 + EA 4 4 INC r/m Инкремент (сложе- ние с единицей). Команда не воздей- ствует на флаг CF reg8 +- reg8 + 1 regl6 <— regl6 + 1 mem <— mem +1 2 1 2-4» 3 2 15 + EA
Однокристальные микропроцессоры 87 Таблица 2.11 (продолжение) Мнемокод команды Описание команды Алгоритм команды Количест- во байт Количест- во тактов 1 2 3 4 5 КОМАНДЫ ОБРАБОТКИ ИНФОРМАЦИИ Арифметические команды ААА Коррекция после сложения распакован- ных двоично-десятичных чисел 1 4 DAA Коррекция после сложения упакованных двоично-десятичных чисел 1 4 SUB r/m, r/m/i Вычитание двух операндов reg <— reg — reg mem <— me — reg reg <— reg — mem reg8 <— reg — immed regl6 <— regl — immed mem8 <—4 mem — immed meml6 <— meml — immed AL <— A — immed AX <— A — immed 2 2-4» 2-4') 3 4 3-52) 4-63) 2 3 3 16 + ЕА 9 + ЕА 4 4 17 + ЕА 17 + ЕА 4 4 SBB r/m, r/m/i Вычитание байта и флага заема CF из предыдущей опера- ции. Флаг заема вы- читается из младше- го бита результата reg <— reg — reg - CF 2 3 mem <— mem — reg - CF < 2-4» 16 + ЕА reg <— reg — mem - CF 2-4') 9 + ЕА reg8 <— reg8 — immed — CF 3 4 regl6 +- regl6 — immed — CF 4 4 mem8 <— mem8 — immed — CF 3-52) 17 + ЕА
88 Гпава 2 Таблица 2.11 (продолжение) Мнемокод команды Описание команды Алгоритм команды Количест- во байт Количест- во тактов 1 2 3 4 5 КОМАНДЫ ОБРАБОТКИ ИНФОРМАЦИИ Арифметические команды meml6 <— meml6 — immed — CF 4-63> 17 + EA AL <— AL — immed - CF 2 4 AX <— AX — immed - CF 3 4 DEC r/m Декремент (вычитание едини- цы). Команда не влияет на флаг CF reg8 <— reg8 — 1 regl6 <- regl6 — 1 mem <— mem — 1 2 1 2-4») 3 2 15 + EA NEG r/m Изменение знака операнда reg <— — reg mem <— — mem 3 2-4’) 3 16 + EA CMP r/m, r/m/i Сравнение двух опе- рандов — установка содержимого реги- стра флагов F по. результату вычита- ния (без сохранения результата вычита- ния) F <= reg — reg F <= mem — reg F <= reg — mem F <= reg8 - immed F <= regl6 — immed F <= mdm8 — immed F <= meml6 — immed F <= AL — immed F <= AX — immed 2 2-4'> 2-4» 3 4 3-52> 4-6’> 2 3 3 9 + EA 9 + EA 4 4 1 + EA 1 +EA 4 4 AAS Коррекция после вычитания распакован- ных двоично-десятичных чисел 1 4 DAS Коррекция после вычитания упакованных двоично-десятичных чисел 1 4 MUL r/m Умножение AL (АХ) на беззнаковое значение r/m AX «—AL•reg8 2 70 — 77
Однокристальные микропроцессоры 89 Таблица 2.11 (продолжение) Мнемокод команды Описание команды Алгоритм команды Количест- во байт Количест- во тактов 1 2 3 4 5 КОМАНДЫ ОБРАБОТКИ ИНФОРМАЦИИ Арифметические команды (DX, АХ) <—АХ- regl6 АХ AL •mem8 (DX, АХ) <- АХ • meml6 2 2-4» 2-4» 118—133 76 — 83 + + EA 124—139 + + EA IMUL r/m Умножение AL (АХ) на знаковое значение r/m АХ 4— AL • reg8 (DX, АХ) «—АХ • regl6 АХ «— AL • mem8 (DX, AX) «- AX • meml6 2 2 2-4» 2-4» 80 — 98 128— 154 96— 104 + + EA 134—160 + + EA АДМ Коррекция после умножения ^распакован- ных двоично-десятичных чисел 2 83 DIV r/m Деление содержимого ак- кумулятора на беззнако- вое число (деление на нуль вызывает прерывание INT 0) AX : reg8 -> AL (остаток в AH) (DX, AX) : regl6 —> AX (остаток bDX) AX : mem8 -> AL (остаток в AH) 2 2 2-4» 80 — 90 144— 162 86 — 96 + + EA
90 Гпава 2 Т а блица 2.11 ( продолжение ) Мнемокод команды Описание команды Алгоритм команды Количест- во байт Количест- во тактов 1 2 3 4 5 КОМАНДЫ ОБРАБОТКИ ИНФОРМАЦИИ Арифметические команды (DX, АХ) : meml6 —> АХ (остаток в DX) 2-4» 150 — 168 + + ЕА IDIV r/m Деление содержимого ак- кумулятора на целое 8- или 16-разрядное число (деление на ноль вызывает прерывание int 0) АХ : reg8 AL (остаток в АН) (DX, АХ) : гед16 —> АХ (остаток в DX) АХ : mem8 -> AL (остаток в АН) DX, АХ : meml6 —» АХ (остаток в DX) 2 2 2-4» 2-4» 101 112 165—184 144 — 168 + + ЕА 166 - 190 + + ЕА AAD Коррекция перед делением распакован- ных двоично-десятичных чисел 2 60 CBW Преобразование байта AL в слово АХ (повторение содержимого знакового разряда (AL.7) регистра AL во всех разрядах реги- стра АН) АН <- (AL.7) 1 2 CWD Преобразование слова АХ в двойное слово DX, АХ (повторение содержимого знакового разряда (АХ. 15) регистра АХ во всех раз- рядах регистра DX) DX <г- (АХ.15) 1 5
Однокристальные микропроцессоры 91 Таблица 2.11 (продолжение) Мнемокод команды Описание команды Алгоритм команды Количест- во байт Количест- во тактов 1 2 3 4 5 КОМАНДЫ ОБРАБОТКИ ИНФОРМАЦИИ Логические команды NOT r/m Инверсия (инверсия всех бит операнда) reg <— reg mem <— mem reg <— reg a reg mem <— mem a reg reg +- reg a mem reg8 <— reg8 a immed regl6 +- regl6 a immed mem8 <— mem8 a immed meml6 <— meml6 a immed AL AL a immed AX b AX a immed 2 2-4') 2 2-4') 2-4» 3 4 3-52) 4-63) 2 3 3 16 + EA 3 16 + EA 9 + EA 4 4 17 + EA 17 + EA 4 4 AND r/m, r/m/i Логическое И двух опе- рандов OR r/m, r/m/i Логическое ИЛИ двух операндов reg <— reg v reg mem <— mem v reg reg <— reg v mem reg8 <— reg8 v immed regl6 +- regl6 v immed 2 2—4’> 2—4’> 3 4 3 16 + EA 9 + EA 4 4
92 Гпава 2 Таблица 2.11 (продолжение) Мнемокод команды Описание команды Алгоритм команды Количест- во байт Количест- во тактов 1 2 3 4 5 КОМАНДЫ ОБРАБОТКИ ИНФОРМАЦИИ Логические команды mem8 <— mem 8 v immed 3-52) 17 + EA meml 6 <— meml6 v immed 4-63> 17 + EA AL Ь AL v immed 2 4 AX AX v immed 3 4 XOR r/m, r/m/i ИСКЛЮЧАЮЩЕЕ ИЛИ двух операндов reg <— reg © reg 2 3 mem <— mem © reg 2-4'» 16 + EA reg <- reg © mem 2-4» 9 + EA reg8 <— reg8 © immed 3 4 regl6 «— regl6 © immed 4 4 mem8 <— mem8 © immed 3-5» 17 + EA meml 6 <— meml6 ® immed 4-6» 17 + EA AL AL © immed 2 4
Однокристальные микропроцессоры 93 Таблица 2.11 (продолжение) Мнемокод команды Описание команды Алгоритм команды Количест- во байт Количест- во тактов 1 2 3 4 5 КОМАНДЫ ОБРАБОТКИ ИНФОРМАЦИИ Логические команды AX <- AX ® immed 3 4 TEST r/m, r/m/и Проверка (логическое И без записи результата и установка флагов соот- ветственно результату) F <= reg a reg 2 3 F <= mem a reg1 2-40 9 + EA F <= reg a mem 2-40 9 + EA F <= reg8 a immed 3 4 F <= regl6A immed 4 4 F <= mem8 a immed 3-52> 10 + EA F <= meml6A immed 4-63> 10 + EA F <= AL a immed 2 4 F <= AX a immed 3 4 Команды сдвигов Циклический сдвиг влево/ вправо с вклю- чением бита CF в цепь сдвига RCL/RCR г, 1 - на одну позицию влево: D7—> CF, CF—> DO, Di—> Di+i впаво: DO—> CF, CF—> D7, Di+i—> Di 2 2
94 Гпава 2 Таблица 2.11 (продолжение) Мнемокод команды Описание команды Алгоритм команды Количест- во байт Количест- во тактов 1 2 3 4 5 КОМАНДЫ ОБРАБОТКИ ИНФОРМАЦИИ Команды сдвигов RCL/RCR 1 m, 2-4» 15 + ЕА RCL/RCR r,CL - на CL позиций 2 8 + 4CL RCL/RCR m, CL 2-4') 20 + ЕА + + 4CL Циклический сдвиг влево/вправо (выдвигаемый разряд устанавливает флаг CF). ROL/ROR 1 r, - на одну позицию влево: D7—> DO и CF, Di—> Di+| 2 2 вправо: DO—> D7 и CF, Di+i—> Di ROL/ROR 1 m, 2-4» 15 + ЕА ROL/ROR r,CL - на CL позиций 2 8 + 4CL ROL/ROR m, CL 2-4» 20 + ЕА+ + 4CL Арифметический сдвиг влево/вправо SAL/SAR 1 r, - на одну позицию влево: D7—> CF, 0—> DO, Di—> Di+i вправо: DO—> CF, D7—> D7, Di+i—> Di 2 2 SAL/SAR 1 m, 2-4» 15 + ЕА SAL/SAR CL r, - на CL позиций 2 8 + 4CL SAL/SAR CL m, 2-4' 20 + ЕА+ + 4CL Логический сдвиг вправо4)
Однокристальные микропроцессоры 95 Таблица 2.11 (продолжение) Мнемокод команды Описание команды Алгоритм команды Количест- во байт Количест- во тактов 1 2 3 4 5 КОМАНДЫ ОБРАБОТКИ ИНФОРМАЦИИ Команды сдвигов SHR г, 1 SHR ш, 1 SHR г, CL SHR m, CL - на одну позицию вправо: 0—» D7, Di+i—> Di, DO—> CF - на CL позиций 2 2-4» 2 2-41 2 15 + ЕА 8 + 4CL 20 + ЕА+ + 4CL Строковые команды REP Префикс повторения строковых команд до обнуления СХ (СХ декрементируется после выполнения каждой строковой ко- манды) 1 — REPE (REPZ) Префикс условного повторения — повто- рение при ZF = 1, или до обнуления CF 1 - REPNE (REPNZ) Префикс условного повторения — повто- рение при ZF = 0, или до обнуления CF 1 - MOVSB Копирование байта из ячейки памяти с адре- сом DS:[SI] в ячейку ES:[DI] ES:[DI]«— DS:[SI] SI<- SI ± 17) DI <— DI ± 17) 1 185> 9+ 17СХ6> MOVSW Копирование слова из DS:[SI] в ES:[DI] ES:[DI] <- DS:[SI] SI <— SI ± 271 DI <— DI ± 27) 1 18s) 9+ 17СХ«> LODSB Копирование байта из DS:[SI] в AL AL <- DS:[SI] SI<- SI ± l71 1 115) 9+ 10 СХ6) LODSW Копирование слова из DS:[SI] в АХ AX <— DS:[SI] SI <— SI ± 27) 1 IP) 9+10СХ6) STOSB Запись байта из AL в ES:[DI] ES:[DI] «—AL DI «— DI ± l71 1 115) 9+ 10СХ6>
96 Гпава 2 Т абл ица 2.11 (продолжение) Мнемокод команды Описание команды Алгоритм команды Количест- во байт Количест- во тактов 1 2 3 4 5 КОМАНДЫ ОБРАБОТКИ ИНФОРМАЦИИ Строковые команды STOSW Запись слова из АХ в ES: [DI] ES:[DI] «- АХ DI <— DI ± 271 I IP 9+ 10 CX6> CMPSB Сравнение байт DS:[SI] и ES:[DI] с за- писью результата сравнения в регистр флагов F <= ES:[DI] - DS: [SI] SI <- SI ± I7’ DI <— DI ± 17) 1 22» 9 + 22 CX«) CMPSW Сравнение слов DS:[SI] и ES:[DI] с записью результата сравнения в регистр флагов F <= ES:[DI] - DS:[SI] SI <- SI ± 271 DI <— DI ± 27’ 1 22» 9 + 22 CX6> SCASB Сравнение байта DS:[SI] и AL с записью результата сравнения в регистр флагов F Ф= (DS:SI) -AL SI <— SI ± l71 1 155) 9+ 15 CX6> SCASW Сравнение слова DS:[SI] и АХ с записью результата сравнения в регистр флагов F <= [DS:SI] - AX SI <— SI ± 27) 1 155> 9+ I5CX6> КОМАНДЫ ПЕРЕДАЧИ УПРАВЛЕНИЯ JMP targetl6 JMP NEAR targets JMP reg JMP mem Внутрисегментный безусловный переход к целевому адресу target (переход в границах сегмента длиной 64 Кбайт) IP <— IP + displ6 IP <— IP + disp8 IP <— IP + reg IP <— IP + mem 3 2 2 2-4» 15 15 2 18 + EA JMP FAR target Межсегментный без- условный переход к целевому адресу target (переход в границах всей памяти емкостью 1 Мбайт) IP <— offset target CS <— seg target 5 2-4') 15 24 + EA
Однокристальные микропроцессоры 97 Таблица 2.11 (продолжение) Мнемокод команды Описание команды Алгоритм команды Количест- во байт Количест- во тактов 1 2 3 4 5 КОМАНДЫ ПЕРЕДАЧИ УПРАВЛЕНИЯ JMP FAR mem IP <— [mem] CS <— [mem + 2] JCX target Переход, если СХ = 0 2 18/6») LOOP target Цикл: СХ <— СХ — 1 и переход, если СХ*0 2 16/4») LOOPE (LOOPZ) target СХ <— СХ — 1 и переход, если СХ # 0 и ZF = 1 2’ 18/6») LOOPNE (LOOPNZ) target СХ <— СХ — 1 и переход, если СХ * 0 и ZF = 0 2 19/58> JA (JNBE) target Переход, если первый беззнаковый опе- ранд больше, чем второй (CF = ZF = 0) 2 16/4«> JAE (JNB) target Переход, если первое беззнаковое число не меньше, чем второе (CF = 0) 2 16/4»> JB (JC) target Переход, если первое беззнаковое число меньше, чем второе (CF = 1) 2 16/4»> JE (JZ) target Переход, если числа равны (ZF = 1) 2 16/4«> JG (JNLE) target Переход, если первое больше, чем второе знаковое число (SF = (ZF&OF)) 2 16/4»> JGE (JNL) target Переход, если первое знаковое число больше или равно второму (SF = OF) 2 16/4») JL (JNGE) target Переход, если первое знаковое число меньше, чем второе (SF # OF) 2 16/4») JLE (JNG) target Переход, если первое знаковое число меньше или равно второму (SF # OF или ZF = 0) 2 16/4») JNC (JAE/JNB) target Переход, если нет переноса (CF = 0) 2 16/4») JNE (JNZ) target Переход, если числа не равны (ZF = 0) 2 16/4»)
98 Гпава 2 Т абл ица 2.11 (продолжение) Мнемокод команды Описание команды Алгоритм команды Количест- во байт Количест- во тактов 1 2 3 4 5 КОМАНДЫ ПЕРЕДАЧИ УПРАВЛЕНИЯ JNO target Переход, если нет переполнения (OF = 0) 2 16/4«> JNP (JPO) target Переход, если паритет нечетный (PF = 0) 2 16/48> JNS target Переход при положительном результате (SF = 0) 2 16/4») JO target Переход, если есть переполнение (OF = 1) 2 16/4») JP (JPE) target Переход, если паритет четный (PF = 1) 2 16/4») JS target Переход при отрицательном результате (SF = 1) 2 16/4») CALL NEAR target Внутрисегментный вызов процедуры (вызов в границах сегмента длиной 64 Кбайт) SP <— SP — 2 [SS:SP] <- IP IP <— target 3 19 CALL NEAR reg IP <— reg 2 16 CALL NEAR mem IP <— mem 2-4» 21 + ЕА CALL FAR target Межсегментный вы- зов процедуры (вызов в границах всей памяти емко- стью 1 Мбайт) SP <— SP — 2 [SS.-SP] <- CS SP <— SP — 2 [SS:SP] <- IP CS, IP <— target 5 28 CALL FAR mem IP <— [mem] CS <— [mem + 2] 2-4» 37 + ЕА RET RET NEAR Возврат из внутри- сегментной проце- дуры. Необязатель- ный параметр п задает коррекцию значения указателя стека IP <- [SS:SP] SP <— SP + 2 1 8
Однокристальные микропроцессоры 99 Таблица 2.11 (продолжение) Мнемокод команды Описание команды Алгоритм команды Количест- во байт Количест- во тактов I 2 3 4 5 КОМАНДЫ ПЕРЕДАЧИ УПРАВЛЕНИЯ RET (п) RET NEAR (n) SP <—SP 4- п 3 12 RET FAR Возврат из межсег- ментной процедуры. Необязательный параметр п задает коррекцию значения указателя стека IP <- [SS:SP] SP <-SP + 2 CS <r- [SS:SP] 1 18 RET FAR (П) SP <— SP + n 3 17 Команды прерываний INT n Выполнение про- граммного прерыва- ния SP <— SP — 2 [SS:SP] <- F SP«- SP - 2 [SS:SP] <- CS SP <— SP — 2 [SS:SP] <- IP IP <- [0000:4n] CS <- [0000:4n + + 2] 2 51 INT 3 Выполнение программного прерывания 3 I 52 INTO Выполнение прерывания 4, если флаг OF = 1 1 53/49> IRET Возврат из прерыва- ния IP <- [SS:SP] SP <- SP+2 CS <- [SS:SP] SP <— SP + 2 F <- [SS:SP] SP <— SP + 2 I 24 КОМАНДЫ УПРАВЛЕНИЯ СОСТОЯНИЕМ МП CLC Сброс флага переноса CF <— 0 1 2 CMC Инверсия флага пе- реноса CF <— CF 1 2
100 Гпава 2 Таблица 2.11 (окончание) Мнемокод команды Описание команды Алгоритм команды Количест- во байт Количест- во тактов 1 2 3 4 5 КОМАНДЫ УПРАВЛЕНИЯ СОСТОЯНИЕМ МП STC Установка флага переноса CF <— 1 1 2 CLD Сброс флага на- правления DF <— 0 1 2 STD Установка флага направления DF <— 1 1 2 CLI Запрет маскирован- ных аппаратных прерываний IF «— 0 1 2 STI Разрешение маски- рованных аппарат- ных прерываний IF <- 1 1 2 HLT Останов МП 1 2 WAIT Ожидание сигнала на линии TEST 1 3 ESC ms k/mem Передача кода команды ms к или кода и операнда mem арифметическому сопро- цессору 2 2—4'> 2 8 + ЕА LOCK Префикс блокирования шины на время выполнения следующей команды в мак- симальном режиме 1 2 NOP Нет операций 1 2 □ Команда занимает два байта, если при адресации ячейки памяти не ис- пользуется смещение, т. е. disp = 0, например, обозначение ячейки памя- ти mem соответствует обозначению [SI]; команда занимает три байта, ес- ли используется 8-разрядное смещение disp8, например, [SI + 25Н]; команда занимает четыре байта, если смещение 16-разрядное — dispie, например, [SI + 1000Н]. □ Команда занимает три байта при disp = 0, четыре байта при disp8 и пять байт при displ6. □ Команда занимает четыре байта при disp = 0, пять байт при disp8 и шесть байт при displ6.
Однокристальные микропроцессоры 101 □ Логический сдвиг влево совпадает с арифметическим сдвигом влево. До- пускается вместо обозначения SAL использовать обозначение SHL. □ Приведено время выполнения строковой команды без префикса повто- рения. □ Приведено время выполнения строчной команды с префиксом повторе- ния. В регистре СХ записано количество повторений. □ При установленном флаге направления (DF =1) — операция суммиро- вания, в противном случае — вычитание. □ mln — при выполнении перехода команда выполняется за m тактов, в противном случае — за п тактов. □ При установленном флаге (OF = 1) команда выполняется за 53 такта, в противном случае — за 4 такта. Значение количества тактов ЕА, необходимое для вычисления эффективно- го адреса, зависит от способа адресации операнда (табл. 2.12). Таблица 2.12. Вычисление эффективного адреса ЕА Адресация Способ вычисления Количество тактов Прямая [disp] 6 Косвенная [ВХ], [BP], [SI], [DI] 5 Базовая или индексная [ВХ + disp], [BP + disp], [SI + disp], [DI + disp] 9 Базово-индексная без смещения [BP + DI], [BX + SI], [BP + SI], [BX + DI] 7 8 Базово-индексная со смещением [BP + DI + disp], [BX + SI + disp], [BP + SI + disp], [BX + DI + disp] и и 12 12 Влияние команд на состояние флагов иллюстрирует табл. 2.13, в которой обозначено: "+" — команда влияет на флаг; — не влияет; "1" — устанав- ливает флаг в единицу; "О" — сбрасывает флаг в ноль; "?" — состояние не- определенное (зависит от конкретных значений операндов).
102 Гпава 2 Таблица 2.13. Установка флагов Операция Команды Флаги OF CF AF SF ZF PF DF IF TF Суммирование, вычитание ADD, ADC, SUB, SBB + + 4- 4- 4- 4- - - - CMP, NEG, CMPS, SCAS + + 4- 4- 4- 4- - - - INC, DEC 4- - 4- 4- 4- 4- - - - Умножение MUL, IMUL + + ? ? ? ? - - - Деление DIV, IDIV ? ? ? ? ? ? - - - Десятичная коррекция DAA, DAS, ? 4- 4- 4- 4- 4- - - - AAA, AAS ? 4- 4- ? ? ? - - - AAM, AAD 9 ? ? 4- 4- 4- - - - Логические команды AND, OR, XOR, TEST 0 0 ? 4- 4- 4- - - - Сдвиг RCL, RCR, ROL, ROR dest — dest, CL + ? 4- 4- ? ? - - - - - - SHL, SHR dest — dest, CL + ? 4- 4- ? ? 4- 4- 4- 4- 4- 4- - - - SAR 0 4- ? 4- 4- 4- - - - Восстановление флагов POPF, IRET + 4- 4- 4- 4- 4- 4- 4- 4- SAHF - 4- 4- 4- 4- 4- - - - Прерывание INT, INTO - - - - - - - 0 0 Управление флагами STC - 1 - - - - - - - CLC - 0 - - - - - - - CMC - CF - - - - - - - STD - - - - - - 1 - -
Однокристальные микропроцессоры 103 Таблица 2.13 (окончание) Операция Команды Флаги OF CF AF SF ZF PF DF IF TF CLD - - - - - - 0 - - STI - - - - - - - 1 - CLI - - - - — - - 0 - Рассмотрим примеры выполнения группы команд передачи информации. К этой группе команд относятся команды пересылки данных из регистров в регистры, из регистров в память, из памяти в регистры, из памяти в память, в том числе в стек и из стека. Пример 2.12. Переслать данные из регистра CL в регистр BL. До выполне- ния команды регистр BL содержит число 101011111, a CL — 00001111. По команде MOV BL,CL ; BL <- CL (MOVe — передвинуть) содержимое регистра CL пересылается в регистр BL. После выполнения команды содержимое регистра BL равно 00001111, содержимое CL не изменится, т. е. в МП содержимое двух регистров станет одинаковым: BL = 00001111, CL = 00001111. Пример 2.13. Переслать содержимое ячейки памяти DS:[100EH] в регистр СХ. По команде MOV СХ, [00EH] ; СХ <- DS:[100ЕН] содержимое 16-разрядной ячейки памяти с адресом DS:[100EH] пересылает- ся в 16-разрядный регистр СХ. Пусть до выполнения команды содержимое регистра СХ равно 1234Н, т. е. 0001001000110100г, а в памяти по указанному адресу находится слово 5678Н, причем младший байт слова 78Н располо- жен по адресу DS:[100EH], старший байт 56Н — по адресу DS:[100FH]. По- сле выполнения команды младший байт слова в памяти перепишется в младшую часть регистра СХ, т. е. в CL, а старший байт — в старшую часть, т. е. в СП. В результате содержимое СХ будет 5678Н, а информация в памя- ти останется неизменной (рис. 2.20). Заметим, что в двухоперандных командах типа MOV dest, src
104 Глава 2 один из операндов может быть содержимым регистра: MOV rl, r2 ; rl <- г2 MOV m, г ; m <— г MOV г, m ; г <— ш. Рис. 2.20. Выполнение команды MOV [100ЕН], сх Пример 2.14. Загрузить сегментный регистр DS начальным значением 4000Н. Поскольку команды mov sr, immed не существует, то для того, чтобы за- грузить в сегментный регистр какое-то значение, надо записать его в РОН, а потом переслать его в сегментный регистр, т. е. использовать две команды: MOV АХ, 4000Н ; АХ «- 4000Н MOV DS, АХ ; DS <— АХ Пример 2.15. Осуществить обмен содержимого двух регистров BL и CL. По команде XCNG BL,CL ; BL <---> CL (eXChaNGe — обмен) содержимое регистров BL и CL обменивается мес- тами. Пусть значение регистров BL = 10101111, CL = 00001111. После выполне- ния команды содержимое регистров будет BL = 00001111, CL = 10101111. Заметим, что при выполнении этой команды, кроме регистров, принимаю- щих участие в выполнении команды, используются буферные регистры МП, в которых хранятся промежуточные данные.
Однокристальные микропроцессоры 105 Пример 2.16. Пусть в таблице с начальным адресом ES : ВХ последовательно расположены байты семисегментного кода цифр от 0 до 9 (рис. 2.21). Заменить значение содержимого регистра AL на соответствующий семисегментний код. Для решения задачи воспользуемся командой XLAT ; AL ES: [ВХ + AL] ES.BX “0” ES.BX+1 “1” ES:BX+2 “2” ES.BX+3 -3" ES.BX+9 “9" Рис. 2.21. Таблица семисегментных кодов в памяти где xlat (XLAT, indeX Load Accumulator from Table) — индексная (при кос- венной адресации) загрузка аккумулятора данными из таблицы (рис. 2.21), которая заменяет содержимое AL на содержимое ячейки памяти, располо- женной в сегменте ES со смещением ВХ + AL. Эта команда используется для перекодировки символа, который находится в AL, в байт из таблицы перекодировки. Для корректной работы команды нужно, чтобы таблица была расположена по определенному адресу, а именно по начальному адре- су ES.BX. Длина таблицы не должна превышать 256 байт. Если в регистре AL до выполнения команды находится, например, число 3, то после выполнения в AL будет семисегментний код числа 3. Команду xlat целесообразно использовать для замены аргумента значени- ем функции, а значение функций заранее записывать в таблицы. Пример 2.17. Запомнить в стеке содержимое 16-разрядного регистра общего назначения. По команде PUSH АХ ; SP «— SP — 2, АХ <— SS : [SP] (PUSH — втолкнуть) содержимое указателя стека SP уменьшается на два, т. е. sp «- sp - 2, для адресации верхней свободной ячейки стека. После этого содержимое регистра АХ запоминается в 16-разрядной ячейке стека с адресом SS : SP. Выполнение команды проиллюстрировано на рис. 2.22.
106 Гпава 2 Команды записи в стек и считывания со стека могут оперировать лишь с 16- разрядными операндами. Рис. 2.22. Выполнение команды PUSH АХ Операции со стеком являются более быстродействующими по сравнению с обращениями к памяти с произвольной выборкой благодаря тому, что ад- рес ячейки стека формируется автоматически. Программист должен лишь инициировать вершину стека в начале программы, т. е. записать в регистры SS и SP начальные значения: MOV АХ, 7000H ; AX <- 7000H MOV SS, AX ; SS <- AX MOV SP, 4000H ; SP <-4000H Начальным адресом стека в этом примере является 7000Н:4000Н. Рассмотрим примеры выполнения арифметических, логических команд и команд сдвигов. Пример 2.18. Сложить содержимое двух регистров: CL и DL. До выполне- ния команды содержимое регистров: CL = 10011100, DL = 11000101. По команде ADD CL,DL ; CL «— CL + DL (ADD — сложить) суммируются два операнда; при этом результат записы- вается на место первого операнда. После выполнения команды в регистре CL будет значение 01100001: строка переносов 1 11 10011100 + 11000101 01100001
Однокристальные микропроцессоры 1 07 Все арифметические команды влияют на флаги. Так, после выполнения этой команды установились: □ в единичное состояние: • AF — флаг переноса из разряда D3 в разряд D4; • CF — флаг переноса из разряда D7; • OF — флаг переполнения (в результате суммирования двух знаковых отрицательных чисел получен положительный результат); □ в нулевое состояние: • ZF — флаг нуля (результат ненулевой); • PF — флаг паритета (число единиц в результате нечетное); • SF — флаг знака (знаковый разряд в результате равняется нулю). Пример 2.19. Выполнить суммирование 4-байтных операндов, размещенных в соседних ячейках памяти с начальными адресами DS:1000H и DS:2000H. Результат запомнить в регистрах СХ, DX. Для выполнения этой задачи необходимо переслать содержимое младшего слова первого слагаемого в регистр СХ и сложить с младшим словом вто- рого слагаемого с помощью команды ADD: MOV СХ,[1000Н] ; СХ <- DS:[1000Н] ADD СХ, [2000Н] ; СХ <— СХ + DS:[2000Н] Для того чтобы учесть перенос, который может возникнуть при сложении младших слов, необходимо выполнить сложение следующих слов операндов с помощью команды ADC, которая предусматривает сложение значения бита CF с полученной суммой. Если CF = 0, сумма не изменяется. Таким образом, необходимо переслать содержимое старшего слова первого слагаемого в регистр DX и сложить со старшим словом второго слагаемого с помощью команды ADC: MOV DX,[1002Н] ; DX <- DS:[1002H] ADC DX, [2002H] ; DX <- DX+ DS:[2002H] + бит CF Заметим, что, поскольку слова занимают в памяти две соседние ячейки, то для адресации старшего слова слагаемого адрес нужно увеличить на два. Алгоритм команды сложения с учетом переноса adc (Add with Carry — сло- жить с переносом) показан на рис. 2.23.
108 Глава 2 Рис. 2.23. Выполнение команды ADC DX, [2002Н] Сложение следующих байтов многобайтных операндов выполняется сле- дующим образом: младшие байты операндов суммируются по команде ADD, а все остальные — по команде ADC. Пример 2.20. Выполнить вычитание из содержимого регистра АХ числа 5000Н. По команде SUB АХ,5000Н ; АХ <— АХ — 5000Н , sub (SUBtract — вычесть) разность АХ - 5000Н пересылается в аккумуля- тор АХ. Пример 2.21. Выполнить вычитание содержимого ячейки памяти с адресом DS:1000H и числа 35Н с учетом заема от предыдущей операции. Для того, чтобы учесть заем, необходимо выполнить вычитание с помощью команды sbb, которая предусматривает вычитание бита CF от полученной разности [DS:1000H] - 35Н. Если CF = 0, то результат вычитания останется неизменным: SBB [1000Н],35Н ; [DSrlOOOH] <- [DS:1000Н]-35Н-бит CF Команду sbb используют для вычитания многобайтных операндов с учетом заема из предыдущих операций. Вычитание многобайтных операндов осу- ществляется таким образом: младшие байты вычитаются по команде sub, а все остальные — по команде sbb . Пример 2.22. Определить дополнительный код операнда, размещенного в регистре ВХ. По команде NEG ВХ ВХ <— ВХ +1
Однокристальные микропроцессоры 109 (NEGative) выполняется перевод числа в дополнительный код, т. е. сначала осуществляется его побитовая инверсия, а потом добавление единицы. Пример 2.23. Сравнить значение содержимого аккумулятора и регистра СХ. По команде СМР АХ, СХ ; АХ - СХ => F смр (СоМРаге — сравнить) вычитает из содержимого АХ содержимое СХ. При этом разность нигде ни фиксируется, но в соответствии с ней устанав- ливаются флаги. Так, флаг нуля ZF устанавливается в единицу, если числа в АХ и СХ равны. Если значение АХ по модулю меньше, чем СХ, устанавли- вается флаг заема CF. Пример 2.24. Найти произведение двух беззнаковых 8-разрядных операндов, расположенных в регистрах DL и AL. В команде умножения беззнаковых чисел mul (MULtiplay — умножить) ука- зывается лишь один операнд — DL, поскольку второй сомножитель по умолчанию находится в аккумуляторе. Результат умножения байтов разме- щается в 16-разрядном регистре АХ: MUL DL ; AL X DL —> АХ Пример 2.25. Найти произведение двух беззнаковых 16-разрядных операн- дов, расположенных в регистрах СХ и АХ. При умножении двухбайтовых операндов в мнемонике команды mul указы- вается лишь один операнд СХ. Второй операнд по умолчанию находится в аккумуляторе АХ. Младшая часть произведения хранится в АХ, старшая — в DX. Результат размещается в регистрах АХ и DX: MUL СХ ; АХ X СХ Ч (DX, АХ) Пример 2.26. Найти результат деления содержимого аккумулятора АХ на содержимое регистра CL. По команде DIV CL ; АХ: CL —> AL, остаток —> АН (Divide — поделить) содержимое АХ делится на содержимое CL, результат записывается в AL, остаток от деления — в АН. Пример 2.27. Выполнить команду деления двойного слова, расположенного в регистрах DX и АХ, на слово в регистре СХ. При делении двойного слова на слово в мнемонике команды div указывает- ся лишь делитель, который находится в регистре СХ. Младшая часть дели-
110 Гпава 2 мого по умолчанию находится в регистре АХ, старшая часть — в регистре DX. Результат размещается в регистрах АХ и DX: DIV СХ ; (DX, АХ) : СХ —> АХ, остаток -> DX. Пример 2.28. Выполнить команду десятичной коррекции результата сложе- ния двух упакованных двоично-десятичных чисел, расположенных в регист- рах AL = 25Н, BL = 37Н. Команду сложения записать так, чтобы после ее выполнения результат был размещен в регистре AL. Команда DAA (Decimal correction of Accumulator at Addition — десятичная коррекция ак- кумулятора при сложении) используется после команды сложения и пре- вращает результат сложения двоично-десятичных чисел в двоично-деся- тичное число. Коррекция состоит в согласовании переносов при сложении десятичных и шестнадцатеричных чисел. Такая коррекция необходима, по- скольку при поразрядном сложении десятичных чисел перенос выполняется, если результат превышает 9, а при поразрядном сложении шестнадцатерич- ных чисел — если результат превышает F = 15ю. Алгоритм десятичной коррекции следующий: 1. Если флаг AF = 1 или младшая тетрада AL > 9, то AL <- AL + 06, AF 1; 2. Если флаг CF = 1 или старшая тетрада AL > 9, то AL <— AL + 60Н, CF <— 1. После выполнения команды ADD AL,BL содержимое регистра AL определяется так: 00100101 + 00110111 01011100 = 5СН. Это число содержит буквы, т. е. не является двоично-десятичным числом, поэтому йосле команды add выполняется команда daa, в результате выпол- нения которой результат сложения изменяется. Значение младшей тетрады результата больше 9. В соответствии с алгоритмом 01011100 011000102-ю = 62 Действительно, 25 + 37 = 62. Результат сложения 62 есть двоично- десятичное число.
Однокристальные микропроцессоры 111 Пример 2.29. Совершить поразрядную операцию "логическое ИЛИ" над числами, расположенными в регистрах BL =11011010 и CL = 10001001. Команда OR BL, CL ; BL«—BL v CL (OR — или) выполняет операцию ИЛИ, результат которой размещается на месте первого операнда. После выполнения команды BL = 11011011. Так же поразрядно действуют логические операции and, xor, not. Логические команды влияют на флаги следующим образом: флаги CF и OF сбрасываются в ноль, значение флага AF не определено, флаги ZF, SF, PF устанавливаются соответственно результату (см. табл. 2.10). После выпол- нения команды флаги приобретают значения: ZF = 0, SF = 1, PF = 1. Пример 2.30. Установить флаги соответственно результату операции "логи- ческое И" над числом 38Н, расположенным в регистре CL, и числом 35Н. По команде TEST CL,35Н ; CL л 35Н => F (TEST — проверка) осуществляет конъюнкция (логическое И) операндов, после результата устанавливаются флаги, но результат операции не фикси- руется. После выполнения команды 00111000 Л 00110101 00110000 флаги приобретают значения соответственно результату операции: ZF = 0, PF = 1, SF = 0, CF = 0, OF = 0, состояние флага AF не определено. Пример 2.31. Выполнить циклический сдвиг содержимого регистра ВХ вле- во на один разряд. По команде ROL ВХ, 1 ИЛИ ROL ВХ, CL (ROtate shift Left — циклический сдвиг влево) осуществляется циклический сдвиг содержимого регистра ВХ влево соответственно на один или CL раз- рядов (рис. 2.24). По результатам операции изменяются значения флагов CF, SF, ZF, PF. Команда сдвига на один разряд изменяет также флаг OF — он устанавливается в единицу при соответствующем изменении знакового разряда.
112 Гпава 2 Рис. 2.24. Выполнение команды ROL ВХ, 1 Рассмотрим примеры выполнения группы строковых команд. Строковые команды оперируют с массивами данных — строками. По умолчанию один из массивов — источник информации — находится в сегменте данных DS с начальным адресом, который определяется содержимым регистра SI, вто- рой массив — приемник информации — находится в дополнительном сег- менте данных ES с начальным адресом, который определяется содержимым регистра DI. Элементами строк являются слова или байты. Направление обработки информации в строках определяется флагом направления DF. При DF = 0 обработка информации начинается с младших адресов, при DF =1 — со старших адресов. Пример 2.32. Переслать содержимое 8-разрядной ячейки памяти с адресом DS:SI в ячейку памяти с адресом ES:DI. Для выполнения этой задачи используется команда movsb (MOVe Serial Byte — переместить последовательность байтов), которая пересылает байт или последовательность байтов из одной области памяти в другую. Если в мне- монике команды используется префикс повторения rep, то пересылается последовательность байтов, при этом количество байтов в последовательно- сти задается содержимым регистра СХ. Если в мнемонике команды префикса rep нет, то пересылается содержимое одной ячейки памяти. По умолчанию при выполнении команды movsb пересылается содержимое ячейки памяти с адресом DS:SI в ячейку памяти с адресом ES:DI. Пример 2.33. Переслать слово, младший байт которого находится в ячейке памяти с адресом DS:SI, а старший байт — в ячейке с адресом DS:SI + 1, в ячейку памяти с адресом ES:DI. По команде MOVSW (MOVe Serial Word — переместить последовательность слов) выполняется пересылка слова (по умолчанию используются те же адреса ячеек, что и в примере 2.32). Пример 2.34. Переслать массив, который состоит из 100 слов; из области памяти, которая имеет начальный адрес DS:SI (DS = 2000Н, SI = ЮООН), в область памяти, которая имеет начальный адрес ES:DI (ES = 3000Н, DI = 4000Н).
Однокристальные микропроцессоры 113 По команде REP MOVSW (REPeat MOVSW — повторить перемещение последовательности слов) вы- полняется пересылка слов, количество которых хранится по умолчанию в регистре СХ. Пересылка массива осуществляется выполнением следующей последова- тельности команд: 1. MOV СХ,100 ; Занести в СХ значение длины массива 2. CLD ; Сбросить флаг направления для автоинкрементации ; адресов массивов 3. MOV АХ,2000Н ; Занести в регистры DS и SI адреса сегмента и 4. MOV DS,AX ; смещения источника данных 5. MOV SI, 1000H 6. MOV АХ,3000Н ; Занести в регистры ES и DI адреса сегмента 7. MOV ES,AX ; и смещения приемника данных 8. MOV DI, 1000H 9. REP MOVSW ; Переслать последовательность слов Рассмотрим примеры выполнения группы команд передачи управления. Команды передачи управления обычно изменяют содержимое указателя команд IP, а некоторые — и содержимое регистра сегмента команд CS. С помощью этих команд можно изменить последовательность выполнения команд в программе, поскольку регистр CS содержит базовый адрес теку- щего сегмента команд, из которого выбираются команды, а регистр IP — адрес, который задает смещение команды относительно начала сегмента команд. После выполнения команды передачи управления устройство управления МП, используя новое содержимое регистров CS и IP, выбирает из памяти следующую команду. Таким образом выполняется переоформле- ние очереди команд, которые поступают в блок операционного устройства (см. рис. 2.11). К этой группе команд относятся: команды безусловного и условного пере- ходов; команды вызовов подпрограмм и возвращений из подпрограмм; ко- манды циклов; команды прерываний. Пример 2.35. Выполнить безусловный внутрисегментный переход. По команде JMP NEAR LABEL ИЛИ JMP LABEL
114 Гпава 2 (JuMP NEAR — прыжок недалеко) осуществляется переход к выполнению команды, находящейся в текущем сегменте кодов и обозначенной меткой label, т. е. в пределах 64 Кбайт. Если тип перехода не указан, по умолчанию выполняется тип near. При переходе в пределах сегмента изменяется содер- жимое программного счетчика ip<-'label’, где label — символический адрес или метка, а ’ label’ — смещение в сегменте кодов этой метки. Пример 2.36. Выполнить безусловный межсегментный переход. По команде JMP FAR LABEL (JuMP FAR — прыжок далеко) осуществляется переход к выполнению ко- манд, первая из которых обозначена меткой label. Эта метка находится в пределах всей памяти емкостью 1 Мбайт. При межсегментном переходе из- меняется как содержимое программного счетчика IP, так и содержимое сег- ментного регистра кодов CS в соответствии с меткой label. Пример 2.37. Выполнить условный переход в зависимости от состояния флага CF. По команде JC LABEL (Jump if Carry — прыжок, если есть перенос) осуществляется переход вы- полнения команд на метку label лишь в том случае, если флаг CF = 1. Ина- че, если CF = 0, осуществляется переход к выполнению команды, следую- щей после команды условного перехода. Пример 2.38. Вызвать подпрограмму, расположенную в некотором месте памяти емкостью 1 Мбайт с символическим адресом name. Для перехода к выполнению подпрограммы используют команду call. При выполнении команды call изменяются значения регистров CS и IP. Перед выполнением команды запоминаются значения этих регистров, чтобы после выполнения подпрограммы можно было возвратиться к выполнению ос- новной программы. Запоминание значений регистров происходит в стеке. По команде CALL FAR NAME (CALL — вызов) вызывается подпрограмма с адресом name: □ содержимое SP уменьшается на 2; □ в ячейку памяти с адресом SS:SP пересылается содержимое регистра CS; □ содержимое SP уменьшается на 2;
Однокристальные микропроцессоры 115 □ в ячейку памяти с адресом SS.SP пересылается содержимое регистра IP; □ в IP и CS загружаются новые значения, которые соответствуют символи- ческому адресу name. В результате этих действий в стеке запоминается содержимое регистров CS и IP, т. е. полный адрес CS:IP той команды, которую надо будет выполнить после окончания подпрограммы name. Последней командой вызываемой подпрограммы является команда ret far. По этой команде из стека извле- каются два слова, которые были записаны при вызове подпрограммы, и за- носятся в регистры CS и IP, т. е. восстанавливается текущий адрес CS:IP ко- манды основной программы. Пример 2.39. Выполнить последовательность команд 100 раз. Для повторения выполнения последовательности команд 100 раз необходи- мо в регистре СХ задать количество повторений: MOV СХ,100 Потом записывается последовательность команд, первая из которых обо- значается меткой: Ml: споследовательность команд> и выполняется команда LOOP Ml (LOOP — петля). Команда loop mi уменьшает содержимое СХ на единицу, а потом сравнивает его с нулем. Если СХ^О, то осуществляется переход к выполнению команды с меткой mi. Если СХ = 0, то выполняется команда, следующая за loop mi (выход из цикла). К командам циклов принадлежат: LOOPE Ml (LOOP if Equal — петля, если равняется) и LOOPNE Ml (LOOP if Not Equal — петля, если не равняется). Эти команды реализуют выход из цикла при выполнении одного из двух условий: 1) если СХ = 0 или 2) если выполняется дополнительное условие: значение флага ZF = 1 (для команды loope) либо ZF = 0 (для команды loopne). Флаг ZF может быть установлен или сброшен в результате выполнения одной из команд цикла. Пример 2.40. Перейти к подпрограмме обработки прерывания типа п = 8. Микропроцессор i8086 может обрабатывать 256 типов прерываний. В карте векторов прерываний, расположенной по начальному адресу 0000:0000, за- писаны точки входов в подпрограммы обработки прерываний. По адресу
116 Гпава 2 0000:4 х <номер прерывания> хранятся значения IP, по адресу 0000:4 х х <номер прерывания> + 2 хранятся значения CS. Новые значения CS:IP определяют адрес первой команды подпрограммы обработки прерывания. Команда INT 8 инициирует следующие действия: 1. Сбрасываются флаги IF и TF, что запрещает прерывания и покомандную работу МП. 2. Содержимое SP уменьшается на 2. 3. В ячейку памяти с адресом SS:SP пересылается содержимое регистра флагов F. 4. Содержимое SP уменьшается на 2. 5. В ячейку памяти с адресом SS:SP пересылается содержимое регистра CS. 6. Содержимое SP уменьшается на 2. 7. В ячейку памяти с адресом SS:SP пересылается содержимое регистра IP. 8. Номер прерывания умножается на 4:4 х 8 = 20Н. 9. В IP и CS загружаются новые значения из карты векторов прерываний (начальный адрес 0000Н): IP «- [0000:0020Н] CS <- [0000:0022Н] В результате этих действий осуществляется межсегментный косвенный вы- зов подпрограммы обработки прерывания, причем адрес подпрограммы однозначно определяется номером прерывания. Таким образом, по команде int 8 в стек будет записано содержимое реги- стров IP, CS и F, а потом в регистры IP и CS запишутся новые значения из карты векторов прерываний; МП перейдет к выполнению подпрограммы обработки прерывания с номером 8. Выполнение команды int п может быть инициировано как программно, так и аппаратно. В первом случае машинный код команды int считывается из программной памяти, во втором — машинный код формируется на шине данных системой прерываний. Рассмотрим примеры выполнения группы команд управления состоянием МП. К этой группе относятся команды: сброс; установка; ин- версия флагов; esc (переключение на сопроцессор); lock (захват шины); nop (нет операции); ньт (остановка); wait (ожидание).
Однокристальные микропроцессоры 117 Пример 2.41. Сбросить флаг направления DF в состояние логического нуля. По команде CLD ; DF О (CLear DF — очистить DF) флаг DF сбрасывается в состояние логического нуля. Пример 2.42. Установить флаг направления DF в состояние логической еди- ницы. По команде STD ; DF <— 1 (Set DF — установить DF) флаг DF устанавливается в состояние логической единицы. Контрольные вопросы и задания 1. На какие группы делятся команды МП i8086? 2. Какие группы команд не влияют на флаги? 3. Укажите значения флагов, которые устанавливаются при сложении чисел 25Н и 97Н? 4. Какие действия выполняет МП при вызове процедуры типа far; типа NEAR? 5. Какие флаги изменяются при вызовах прерываний? 2.4. Построение модуля центрального процессора на базе i8086 Для построения модуля ЦП необходимо обеспечить синхронизацию работы системы и согласование работы ЦП с системной шиной. Схема синхронизации. В схеме синхронизации используется генератор так- товых импульсов i8284 (рис. 2.25), который генерирует сигналы синхрони- зации для центрального процессора и периферийных устройств, а также синхронизирует внешние сигналы готовности READY и начальной уста- новки RESET с тактовыми сигналами МП. Генератор тактовых импульсов содержит задающий генератор (ЗГ), делите- ли частоты на 3 и на 2 и логику управления сигналов сброса и готовности. Работа ЗГ стабилизируется кварцевым резонатором, который подсоединен
118 Гпава 2 ко входам XI, Х2. Вход TANK используется для дополнительного подсое- динения параллельного резонансного LC-контура, что позволяет работать на высших гармониках кварцевого резонатора. При этом опорная частота ЗГ определяется параметрами контура и равняется ---7=. Вход 2nVLC F/C позволяет выбрать внешний (F/C = 1) или внутренний (F/C =0) генера- тор. В случае выбора внешнего генератора с частотой импульсов Fefi его подключают к входу EFI. * Рис. 2.25. Структурная схема БИС генератора i8284 Схема формирования тактовых импульсов формирует сигналы: CLK — так- товой частоты Fclk для ЦП, PCLK — тактовой частоты Fpclk для управле- ния периферийными БИС, OSC — тактовой частоты ЗГ, которые необхо- димы для управления устройствами и контроля частоты. Частоты этих сигналов связаны соотношениями: Fosc = 3Fclk = 6Fpclk, в режиме внут- реннего генератора и Fefi = 3Fclk = 6Fpclk в режиме внешнего генератора.
Однокристальные микропроцессоры 119 Выходной сигнал CLK формируется одним из трех способов: □ из колебаний основной частоты кварцевого резонатора, подсоединенно- го ко входам XI и Х2; □ из третьей гармоники кварцевого резонатора, которая выделяется LC- фильтром, соединенным со входом TANK; П от внешнего генератора, подключенного ко входу EFI. Схема формиро- вания тактовых импульсов имеет вход внешней синхронизации CSYNC, с помощью которого можно синхронизировать работу нескольких генера- торов тактовых импульсов. Сигнал CSYNC влияет также на делитель частоты на 2: при CSYNC = 0 работа делителя останавливается, при CSYNC = 1 — возобновляется. Выходной сигнал READY используется для подтверждения готовности к обмену. Высокий уровень этого сигнала указывает на наличие данных на шине DB. Схема формирования сигнала READY построена так, чтобы уп- ростить включение системы в интерфейсную шину стандарта Multibus, и содержит две идентичных пары сигналов RDY1, AEN1 и RDY2, AEN2, объединенных схемой ИЛИ. Сигналы RDY1 и RDY2 формируются элемен- тами, которые входят в состав системы, и свидетельствуют об их готовности к обмену. Сигналы AEN1 и AEN1 разрешают формирование сигнала READY по сигналам RDY1 и RDY2, подтверждая адресацию элементов. Схема формирования выходного сигнала сброса RESET имеет на входе триггер Шмитта, а на выходе — триггер, формирующий фронт сигнала RESET по срезу сигнала CLK. Обычно ко входу RES подсоединяется RC- цепь, обеспечивающая автоматическое формирование сигнала при включе- нии источника питания. Графическое обозначение микросхемы генератора иллюстрирует рис. 2.26. Интерфейс ЦП с системной шиной выполняет следующие функции. □ Демультиплексирование шины адреса/данных (распределение ее на шину адреса АВ и шину данных DB). □ Буферизация шин (увеличение нагрузочной способности линий шин, обеспечение возможности их перехода в третье состояние). □ Формирование сигналов управления. Выполнение первой функции осуществляется с помощью регистров-защелок, например, буферных регистров i8282, i8283. Обобщенная структурная схема регистра-защелки (рис. 2.27) содержит восемь D-триггеров с выходными схемами SW, имеющими три состояния.
120 Гпава 2 Рис. 2.26. Графическое обозначение БИС генератора i8284 Рис. 2.27. Структурная схема буферного регистра Сигналы записи информации STB и разрешения выборки ОЕ являются общими для всех триггеров БИС. В буферном регистре i8282 (рис. 2.28) к схемам SW подсоединены прямые выходы D-триггеров, а в буферном реги- стре i8283 (рис. 2.29) — инверсные выходы. Если сигнал имеет высокий уро- вень, то на входе STB состояние входных линий DI7—DI0 передается на выходные линии DO7—DOO. Запись информации в D-триггерах осуществ- ляется по срезу сигнала STB. Маленький входной и довольно большой вы-
Однокристальные микропроцессоры 121 ходной токи позволяют использовать БИС буферных регистров в качестве регистров-защелок или шинных формирователей. 1 RG 19. 2 DIO DOO 78 j DI1 DO1 17_ DI2 DO2 2 DI3 DO3 16 5 DI4 DO4 15 J DI5 DO5 14 2 DI6 DO6 13 J DI7 DO7 12 11 STB 20 9 Ucc 10 ’ ОЕ GND Рис. 2.28. Графическое обозначение буферного регистра 18282 2 2 11 9 3 4 5 6 7 8 DIO DI1 DI2 DI3 DI4 DI5 DI6 DI7 RG DOO | DO1 | DO2 1 DO3 A DO4 1 005 I 006 Д 007 < STB OE Ucc GND 10 19 18 17 16 15 14 13 12 Рис. 2.29. Графическое обозначение буферного регистра /8283 При использовании буферных регистров в качестве шинных формировате- лей вход STB соединяется с выводом питания +5 В через резистор сопро- тивлением 1кОм,авход ОЕ —с общей шиной. Для увеличения нагрузочной способности (вторая функция) двунаправлен- ной шины данных используют 8-разрядные шинные формирователи i8286, i8287. Формирователь i8286 не инвертирует данные, a i8287 — инвертирует. Структурная схема шинного формирователя (рис. 2.30) содержит восемь одинаковых функциональных блоков с тремя состояниями и общими сигна-
122 Глава 2 лом управления направлением передачи Т и сигналом разрешения переда- чи ОЕ. При низком уровне сигнала Т (Т = 0) осуществляется передача данных из линий В7—ВО в линии А7—АО, при высоком уровне сигнала (Т = 1) — пе- редача из линий А7—АО в линии В7—ВО. При ОЕ = 0 передача разрешена, при ОЕ = 1 — запрещена. Рис. 2.30. Структурная схема шинного формирователя Графические обозначения формирователей i8286, i8287 показаны на рис. 2.31 и 2.32 соответственно. ДО А 1 Д 2 Д 3 А 4 Д 5 А 6 А 7 RG ВО В 1 В2 ВЗ 84 В5 86 ₽7 1 T9" 2 ТТ 3 ТТ 4 Гб" "5 15 "6 Г4“ 7 13 8 Г2" Т 75Е Ucc 71 20" 9 ] 1 10 Рис. 2.31. Графическое обозначение шинного формирователя i8286
Однокристальные микропроцессоры 123 Рис. 2.32. Графическое обозначение шинного формирователя 18287 Третья функция реализуется с помощью дополнительных логических эле- ментов, формирующих сигналы шины управления из выходных сигналов БИС МП. На рис. 2.33 показан пример функциональной схемы модуля ЦП для однопро- цессорных систем. Микропроцессор i8086 включен в минимальном режиме. Рис. 2.33. Функциональная схема модуля центрального процессора
124 Гпава 2 Схема синхронизации реализована на базе БИС тактового генератора i8284, на вход RDY1 которого подается сигнал готовности внешних устройств или памяти к обмену. В минимальном режиме используется одна шина, поэтому вход RDY2 соединен через резистор с выводом питания. Демультиплекси- рование шины адреса/данных и шины адреса/состояния на две шины осуще- ствляется с помощью трех буферных регистров i8282. Отметим, что сигнал разрешения старшего байта ВНЕ , который появляется вместе с адресом, также фиксируется в одном из разрядов регистров-защелок. Сигналы ВНЕ и АО используются для выборки банков системы памяти. Формирователь 16-разрядной шины данных выполнен на двух БИС шинных формировате- лей i8286. В минимальном режиме процессор формирует управляющие сигналы шин формирователей и регистров-защелок, а также сигналы М/Ю,RD, WR, из которых с помощью логических элементов формируются четыре сигнала управления чтением/записью для памяти и УВВ. Шины адреса, данных и управления переводятся в третье состояние сигналом BUSEN, который формируется контроллером прямого доступа к памяти. Контрольные вопросы и задания 1. Объясните назначение входных и выходных сигналов схемы синхро- низации. 2. Опишите функции БИС генератора i8284. 3. Опишите функции интерфейса центрального процессора с системной шиной. 4. Объясните принцип функционирования схемы буферного регистра. 5. Объясните принцип функционирования шинного формирователя.
Глава 3 Однокристальные универсальные микропроцессоры (старшие модели) 3.1. Микропроцессор /80286 Микропроцессор i80286 принадлежит ко второму поколению 16-разрядных МП. Он выполнен по технологии 1,5 мкм, содержит 134 000 транзисторов и работает с тактовой частотой 12,5 МГц. За счет усовершенствованной архи- тектуры быстродействие МП i80286 в шесть раз выше, чем МП i8086 с так- товой частотой 5 МГц. Разрядность регистров равна 16. Шина адреса 24- разрядная, что позволяет адресовать 224= 16 Мбайт памяти. Пространство адресов ввода/вывода составляет 64 Кбайт. Система команд содержит все команды i8086, несколько новых команд общего назначения и группу команд управления защитой данных. Микропроцессор i80286 имеет специ- альные средства для работы в системах с многими пользователями и в много- задачных режимах. Его наиболее существенным отличием от МП серии i8086/88 является механизм управления адресацией памяти, который обеспе- чивает четырехуровневую систему защиты данных и поддержку виртуальной памяти. Специальные средства предназначены для поддержки механизма пе- реключения задач. Микропроцессор i80286 имеет средства контроля перехода через границу сегмента, работающие в реальном режиме. Микропроцессор может работать в двух режимах: □ 8080 Real Address Mode (или Real Mode) — режим реальной адресации или реальный режим. В этом режиме МП i80286 фактически представляет собой высокоскоростной МП i8086 и адресует 1 Мбайт памяти. □ Protected Virtual Address Mode (или Protected Mode) — защищенный режим виртуальной адресации, или защищенный режим. В этом режиме МП ад- ресует до 16 Мбайт памяти, а при использовании механизма страничной адресации — до 1 Гбайт виртуальной памяти каждой задачи.
126 Гпава 3 Переключение в защищенный режим осуществляется быстро — одной командой (с заранее подготовленными таблицами дескрипторов), а в режим реальной адресации — медленно — лишь через аппаратный сброс процес- сора. В MS-DOS используется реальный режим. Защищенный режим ис- пользуется в операционных системах типа XENIX, UNIX, OS/2, NetWare286, MS Windows. Для процессора i80286 существуют 256 разнообразных типов прерываний. Система прерываний отличается от МП i8086 прерыванием при возникно- вении особых условий в ходе выполнения команд (например, при размеще- нии двухбайтного операнда в последней ячейке сегмента данных со смеще- нием FFFFH). Такое прерывание называется особым случаем, или исклю- чением. В отличие от прерываний после обработки исключений (кроме исключения 9, которое касается работы сопроцессора) управление переда- ется снова той же команде (включая все префиксы), которая вызвала преры- вание. После устранения условий, вызвавших исключение, происходит по- вторное выполнение команды. Организация памяти. В реальном режиме адресация памяти преимущественно такая же, как и в МП i8086. Отличие состоит в возможности использования дополнительного блока памяти емкостью 64 Кбайт. Если в ходе выполне- ния команды при вычислении адреса ячейки памяти возникает переполне- ние в двадцатый разряд шины адреса А20, процессор начинает работать с ячейками памяти, адреса которых лежат в диапазоне 100000Н—10FFFFH. Пример 3.1. Найти значение физического адреса операнда в реальном ре- жиме при выполнении команды пересылки в регистр AL содержимого ячей- ки памяти с адресом DS:SI MOV AL, [SI] если содержимым сегментного регистра DS является число 0F802H, содер- жимым регистра SI — 0В175Н. Для вычисления физического адреса прибавим к значению DS четыре нуля справа: DS(OOOO) = 1111 1 000 0000 0010 0000В = 0F8020H. Выполнив операцию сложения полученной величины с содержимым реги- стра SI, получим физический адрес: 11111 11 — строка переносов + 1 111 1000 0000 0010 0000 1011 0001 0111 0101 1 0000 0011 0001 1001 0101 = 103195Н.
Однокристальные универсальные микропроцессоры (старшие модели) 127 Таким образом, при вычислении физического адреса полученное единичное значение разряда А20 означает, что операнд будет расположен во втором мегабайте физической памяти. Еще одной особенностью реального режима i80286 является возможность контроля перехода за пределы сегмента. При адресации слова со смещением 0FFFFH генерируется исключение 13 (Segment Overrun Exception). При по- пытке выполнения команды ESC с операндом памяти, который не умещает- ся в сегменте, генерируется исключение 9 — Processor Extension Segment Overrun Interrupt. В защищенном режиме также используется сегментная адресация; количест- во сегментов может быть от 1 до 16 М, длина сегментов задается и может варьироваться от 1 до 64 Кбайт, задаются атрибуты или права доступа к сегменту (разрешение записи или только чтение, равные привилегии и т. п.). Каждый сегмент характеризуется 8-разрядной структурой данных — деск- риптором сегмента, содержащим информацию о базовом адресе сегмента, его пределе и атрибутах. Дескрипторы размещаются в специальных табли- цах GDT (Global Descriptor Table — глобальной дескрипторной таблице) или LDT (Local Descriptor Table — локальной дескрипторной таблице), ко- торые хранятся в ОЗУ. Независимо от уровня привилегии программа не может обращаться к сегменту до тех пор, пока он не описан в дескриптор- ной таблице. В защищенном режиме содержимое сегментных регистров называется селекторами сегментов. Они используются для поиска базового (начально- го) адреса сегмента в одной из дескрипторных таблиц. Формат селектора показан на рис. 3.1. 15 3 2 1 0 INDEX Г V1 I RPL Рис. 3.1. Формат селектора сегмента Селекторы, которые загружаются в 16-разрядные сегментные регистры CS, DS, SS, ES, имеют три поля: □ RPL (Requested Privilege Level) (биты 0 и 1) — запрашиваемый уровень привилегий сегмента; □ TI (Table Indicator) (бит 2) — индикатор использования таблицы деск- рипторов (при TI = 1 используется глобальная таблица, при TI = 0 — ло- кальная); □ INDEX (биты 3—15) — номер дескриптора в таблице.
128 Глава 3 Глобальная дескрипторная таблица единственная. Она содержит дескрип- торы для всех задач, выполняемых МП в многозадачном режиме. Локаль- ных дескрипторных таблиц может быть несколько — для каждой задачи можно задать свою локальную дескрипторную таблицу. Физический 24-разрядный адрес операнда определяется сложением началь- ного 24-разрядного адреса сегмента из дескрипторной таблицы и адреса- смещения, который указан в команде. Формирование физического 24- разрядного адреса в защищенном режиме иллюстрирует рис. 3.2. 23 о Рис. 3.2. Формирование физического 24-разрядного адреса в защищенном режиме Пример 3.2. Найти значение физического адреса ячейки памяти [DS:SI], если базовый адрес сегмента данных равняется 456789Н, а содержимое регистра SI — 1234Н. Выполнив операцию сложения 24-разрядного базового адреса с адресом- смещением, т. е. с содержимым регистра SI, получим физический адрес: 01000101 01100111 1000 1001 + 0001 0010 0011 0100 0100 0101 0111 1001 1011 1101 = 4579ВВН. Таким образом, физический адрес равен 4579ВВН. Программная модель. В программную модель МП i80286 (рис. 3.3) входят 19 программно-доступных регистров и 6 недоступных (теневых). Из 19 программно-доступных регистров МП i80286 14 повторяют регистры процессора i8086 (см. разд. 3.5). Пять новых регистров следующие: □ 40-разрядный регистр (GDTR, Global Descriptor Table Register) — ре- гистр глобальной дескрипторной таблицы. Предназначен для задания расположения глобальной дескрипторной таблицы в памяти. Регистр GDTR непосредственно содержит базовый адрес таблицы и предел, за-
Однокристальные универсальные микропроцессоры (старшие модели) 129 дающий ее размер: размер таблицы на единицу больше, чем значение предела; 15 0 63 О LDTR TR Селектор LDT Селектор сегмента состояния задач Права I Базовый адрес I Предег доступа J LDT | Р 71гмХ^рес I предал (доступа I сегмента I i—ee I состояния задач! в Рис. 3.3. Программная модель МП i80286 □ 16-разрядный регистр (LDTR, Local Descriptor Table Register) — регистр- селектор локальной дескрипторной таблицы. Регистр LDTR является 16- разрядным в отличие от 40-разрядного регистра GDTR. Он не содержит
130 Гпава 3 всей информации о сегменте, как GDTR. Регистр LDTR является селек- тором — его содержимое указывает, где в глобальной дескрипторной таблице находится информация о начальном адресе, пределе и праве доступа к локальной таблице. Эта информация переписывается в теневой программно-недоступный регистр; □ 40-разрядный регистр (IDTR, Interrupt Descriptor Table Register) — ре- гистр дескрипторной таблицы прерываний. Благодаря этому регистру в МП i80286 появилась возможность размещать таблицу векторов преры- ваний в произвольном месте ОЗУ, а не с нулевого адреса, как в МП i8086. Регистр IDTR по структуре аналогичен регистру GDTR; □ 16-разрядный регистр (TR, Task Register) — регистр задачи — селектор сегмента состояния текущей задачи (TSS, Task State Segment). Такие сег- менты ассоциируются с каждой задачей. Они предназначены для сохра- нения контекста задачи во время переключения задач; □ 16-разрядный регистр (MSW, Machine State Word) — регистр слова со- стояния машины, который управляет режимом процессора и содержит биты, как на рис. 3.4: 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 TS ЕМ МР РЕ Рис. 3.4. Регистр слова состояния машины MSW • разрешение защиты (РЕ, Protection Enable). Установка этого бита пе- реводит процессор в защищенный режим. Возврат к реальному ре- жиму возможен только по сигналу RESET; • наличие сопроцессора (MP, Monitor Processor Extension). Если с про- цессором i80286 соединен арифметический сопроцессор i80287, то при инициализации операционная система должна установить этот бит в состояние логической единицы. Тогда при выполнении команды WAIT, а также при выполнении команды ESC и значении TS =1 МП будет генерировать исключение 7; • эмуляция сопроцессора (ЕМ, Processor Extension Emulated). Установка этого бита вызовет исключение 7 при выполнении каждой команды арифметического сопроцессора, что позволяет осуществлять его про- граммную эмуляцию; • переключение задач (TS, Task Switch). При установке этого бита сле- дующая команда, относящаяся к сопроцессору вызовет исключение 7.
Однокристальные универсальные микропроцессоры (старшие модели) 131 Это позволяет программно определить относится ли контекст сопро- цессора к текущей задаче. Теневые регистры играют роль сверхоперативной памяти. Они предназна- чены для повышения быстродействия работы МП. На рис. 3.3 теневые реги- стры показаны пунктиром. Кроме того, в программной модели, в отличие от МП i8086, добавлены но- вые биты в регистре флагов и изменено использование сегментных регист- ров в защищенном режиме. В регистре флагов бит 14 определен как NT (Nested Task Flag, флаг вложенной задачи), а биты 13—12 — как двухбайт- ное поле IOPL (Input/Output Privilege Level, уровень привилегий ввода/ вывода). Эти флаги действуют только в защищенном режиме. Флаг NT ус- танавливается в единицу при переключении задач с помощью команды CALL. При выполнении команды IRET проверяется состояние флага NT. Если NT = 1, то осуществляется переключение, если нет — выполняется обычный возврат из прерывания. Поле IOPL указывает уровень привилегии текущей задачи, при котором разрешается выполнение определенных опе- раций. Сегментные регистры CS, SS, ES и DS определяют начальные адреса сег- ментов. В реальном режиме 20-разрядный начальный адрес сегмента опре- деляется как содержимое 16-разрядного сегментного регистра, дополненно- го справа четырьмя нулевыми битами. В защищенном режиме начальный 24-разрядный базовый адрес сегмента находится в дескрипторной таблице в ОЗУ, а содержимое сегментных регистров является селекторами, которые указывают на тип таблицы и номер записи в таблице (см. рис. 3.1). Во время загрузки нового значения селектора дескрипторы считываются из ОЗУ и запоминаются во внутренних программно-недоступных или теневых регистрах процессора. Это позволяет повысить быстродействие процессора, поскольку значения базовых адресов сегментов изменяются сравнительно редко. Регистры GDTR, LDTR, IDTR задают расположение дескрипторных таб- лиц в памяти (рис. 3.5). На рис. 3.5 показано, что глобальная дескрипторная таблица содержит N + 1 дескрипторов, локальная — К+ 1, дескрипторная таблица прерыва- ний — М + 1. Начальный адрес глобальной дескрипторной таблицы опре- деляется битами 39—16 регистра GDTR, конечный — вычисляется сложе- нием значений начального адреса и предела таблицы (биты 15—0). Аналогично начальный и конечный адреса таблицы прерываний определя- ются содержимым регистра IDTR. Для адресации дескрипторов локальной таблицы используют содержимое регистра LDTR, который является селек- тором. Он указывает на номер дескриптора в глобальной дескрипторной таблице. Этот дескриптор загружается в теневой регистр (на рис. 3.5 пока-
132 Гпава 3 зан пунктиром). Первый и последний адреса локальной дескрипторной таб- лицы определяются содержимым этого регистра. Рис. 3.5. Расположение дескрипторных таблиц в памяти Пример 3.3. Найти значение, которое надо загрузить в регистр GDTR, что- бы задать в памяти глобальную дескрипторную таблицу из 21 дескриптора с начальным адресом 0001 ООН. Биты 39—16 регистра GDTR задают начальный 24-разрядный адрес, следо- вательно, должны равняться 0001 ООН. Каждая запись в таблице занимает 8 байт, значит, адрес 21 дескриптора определяется как 0001 ООН + 20 • 8 = = 0001А0Н. В битах 15—0 регистра GDTR надо разместить число 0A0H. Таким образом, содержимое регистра GDTR равно ОООЮООАН. Отметим, что команды загрузки регистров таблиц GDTR, LDTR, IDTR — lgdt, lldt, lidt — являются привилегированными и выполняются в про- граммах с высшим уровнем приоритета. Адресное пространство портов ввода/вывода. Адресное пространство пор- тов МП i80286 такое же, как и МП i8086, т. е. составляет 64- 210 однобайт- ных или 32-210 двубайтных портов. Дополнительные строковые команды rep insb/insw, rep outsb/outsw (табл. 3.1) обеспечивают блочную обра- ботку со скоростью, которая превышает аналогичные операции в режиме
Однокристальные универсальные микропроцессоры (старшие модели) 133 ПДП. В защищенном режиме команды являются привилегированными, т. е. могут выполняться только с определенным уровнем привилегий, которая определяется полем IOPL регистра флагов. В противном случае будет вы- звано исключение 13 — нарушение защиты. Система команд. В систему команд МП i80286 входят все команды i8086 и ряд дополнительных (табл. 3.1). В табл. 3.1 использованы те же обозначе- ния, что и в табл. 3.11. Таблица 3.1. Дополнительные команды МП i80286 Мнемокод Описание 1 2 КОМАНДЫ РАБОТЫ СО СТЕКОМ PUSH immed Пересылка непосредственных данных immed в стек PUSHA Пересылка в стек содержимого регистров АХ, ВХ, СХ, DX, SI, DI, BP, SP РОРА Пересылка данных из стека в регистры АХ, ВХ, СХ, DX, SI, DI, BP, SP Арифметические команды IMUL regl6, r/m Умножение содержимого regl6 на содержимое r/m (16 бит) IMUL regl6, r/m, immed Умножение содержимого r/m на 16-разрядный непосред- ственный операнд и перемещение результата в reg!6 Строковые команды [REP] INSB ( [REP] INSW) Ввод 6aftTa-(INSB) либо слова (INSW) в ячейку памяти ES:[DI] из порта с адресом DX с автоинкрементированием (при DF = 0) или авто декрементированием (при DF = 1) адреса. При использовании префикса REP операция по- вторяется СХ раз [REP] OUTSB ([REP] OUTSW) Вывод байта (OUTSB) либо слова (OUTSW) из ячейки памяти DS:[SI] в порт с адресом DX с автоинкрементиро- ванием (при DF = 0) или автодекременти-рованием (при DF = 1) адреса. При использовании префикса REP опера- ция повторяется СХ раз Команды прерываний BOUND reg!6, Imts Проверка границ массива — если знаковое число в regl6 не находится в заданных пределах, выполняется int 5. Границы задаются в двух смежных словах памяти по адресу Imts
134 Гпава 3 Таблица 3.1 (окончание) Мнемокод Описание 1 2 КОМАНДЫ ПОДДЕРЖКИ ПРОЦЕДУР ENTER frmsiz, frms Подготовка блока параметров процедур (frmsiz — ко- личество байт для переменных процедуры, frms — уро- вень вложения процедур) LEAVE Отмена действия ENTER (восстанавливает значение со- держимого регистров SP и ВР) Команды управления состоянием МП CLTS Сброс флага переключения задач SEG Префикс замены сегмента Команды управления защитой LGDT src Загрузка GDTR из памяти (6 байт)* SGDT dest Сохранение содержимого GDTR в памяти (6 байт)* LIDT src Загрузка IDTR из памяти (6 байт)* SIDT dest Сохранение содержимого IDTR в памяти (6 байт)* LLDT src Загрузка LDTR из регистра или памяти reg/meml 6 SLDT dest Сохранение содержимого LDTR в reg/meml 6 LMSW src Загрузка MSW из регистра или памяти reg/meml6 SMSW dest Сохранение MSW в reg/meml6 LTR src Загрузка регистра задачи с reg /meml 6 STR dest Сохранение содержимого регистра задачи в reg/meml6 LAR dest, src Загрузка старшего байта dest байтом прав доступа деск- риптора src LSL dest, src Загрузка dest пределов сегмента, дескриптор которого задан src ARPL reg/meml6, regl6 Выравнивание RPL в селекторе до наибольшего значения из двух значений: текущего уровня и заданного операндом VERR seg Верификация чтения: установка флага ZF в состояние ло- гической единицы (ZF = 1) для разрешения чтения в сег- менте seg VERW seg Верификация записи: установка ZF = 1 для разрешения записи в сегмент seg
Однокристальные универсальные микропроцессоры (старшие модели) 135 Примечание. Команды LGDT, LIDT загружают в 40-разрядные регистры GDTR, IDTR пять байт, но при выполнении команды передаются шесть байт: первые пять из них пересылаются в регистры, а шестой (с наибольшим адресом) игнорируется. Однако для совместимости с будущими разработками МП он дол- жен иметь нулевое значение. Команды SGDT, SIDT передают содержимое регист- ров GDTR, IDTR в память, при этом передаются шесть байтов: в пяти находится содержимое регистра, а шестой — неопределен. Пример 3.4. Написать программу перевода МП в защищенный режим. Для перевода МП в защищенный режим надо установить бит РЕ — млад- ший бит регистра MSW. Однако перед установкой этого бита нужно задать начальные значения регистров таблиц GDTR, LDTR, IDTR, а также значе- ния элементов дескрипторных таблиц в ОЗУ. Как правило, таблицы перепи- сывают из ПЗУ в ОЗУ. Отметим, что таблицы должны находиться в ОЗУ, поскольку при выполнении программы их содержимое может модифициро- ваться. Программа перевода МП в защищнный режим имеет вид: SMSW ВХ ; Сохранение MSW в ВХ ОВХ, 0001Н ; Установка младшего бйта в состояние ; логической единицы LMSW ВХ ; Загрузка MSW JMP Ml ; Сброс очереди команд Ml: ; Начало работы в защищенном режиме Переход jmp mi на следующую команду в рассмотренном примере нужен для сброса очереди команд. В МП i80286 существует опережающая выборка команд. Если МП выполнил команду lmsw, которая перевела его в защи- щенный режим, а в очереди команд остались команды, которые долж- ны были выполняться в реальном режиме, то после перевода процессора в защищенный режим команды реального режима будут декодированы не- верно. Циклы шины. Микропроцессор i80286 содержит шинный интерфейс с 6- байтной очередью команд, которая обеспечивает конвейерную адресацию (РА, Pipelined Addressing). Это обеспечивает выборку кодов команд или данных из памяти с опережением, что дает возможность начать фазу иден- тификации или адресации нового цикла, не дожидаясь окончания преды- дущего. Различают шесть типов циклов шины: □ ЧТЕНИЕ ПАМЯТИ; □ ЗАПИСЬ В ПАМЯТЬ; □ ЧТЕНИЕ ПОРТА;
136 Гпава 3 □ ЗАПИСЬ В ПОРТ; □ ПОДТВЕРЖДЕНИЕ ПРЕРЫВАНИЯ; □ СТОП/ОСТАНОВ. Отметим, что слово с нечетным адресом передается за два цикла шины, с четным — за один. На рис. 3.6 показаны циклы шины ЧТЕНИЕ и ЗАПИСЬ слова в ячейку памяти с четным адресом. Считывание слова из ОЗУ осуще- ствляется как минимум за четыре периода тактовых импульсов CLK или за два состояния процессора (без учета сигнала готовности READY). Каждое состояние МП длится два такта CLK. Во время первого состояния, обозна- ченного Ts, процессор выставляет на шину адреса значение адреса ячейки памяти, с которой будет считываться слово. Благодаря конвейерной адре- сации адрес ячейки выставляется с некоторым опережением, однако он не сохраняется на шине адреса на протяжении цикла. Для совместимости с шиной ISA сигналы шины адреса запоминаются в регистрах-фиксаторах по стробу ALE. Управляющие сигналы чтения памяти MRDC и адресный строб ALE формируются системным контроллером 82288 в начале второго состояния Тс. Сигналы управления и адреса обрабатываются схемой управ- ления памятью, в результате чего, начиная с середины второго состояния Тс, на шине данных появляется слово из ОЗУ, и процессор считывает его из шины данных. Продолжительность цикла ЧТЕНИЕ с четным адресом со- ставляет два состояния. Рис. 3.6. Циклы шины ЧТЕНИЕ и ЗАПИСЬ слова в ячейку памяти с четным адресом
Однокристальные универсальные микропроцессоры (старшие модели) 137 При считывании слова с нечетным адресом в первом цикле пересылается байт из старшей половины шины данных D15—D8, во втором — байт из младшей половины D7—DO. Длительность цикла шины ЗАПИСЬ В ПАМЯТЬ с четным адресом также равна продолжительности двух состоя- ний. В первой половине цикла Ts выставляются адрес и данные, во второй — происходит запись в ОЗУ. Выполнение циклов шины ЧТЕНИЕ ПОРТА и ЗАПИСЬ В ПОРТ анало- гично рассмотренным выше циклам ЧТЕНИЕ ПАМЯТИ и ЗАПИСЬ В ПАМЯТЬ, однако в этом случае на шину А15—АО выставляется адрес пор- та и вместо сигналов чтения или записи памяти генерируются сигналы IOR — для чтения портов ввода/вывода, или IOW — для записи в порты ввода/вывода. Цикл шины ПОДТВЕРЖДЕНИЕ ПРЕРЫВАНИЯ (рис. 3.7) выполняется при возникновении аппаратного прерывания (наличие активного уровня на выводе INTR). Цикл состоит из двух процессорных циклов, разделенных тремя тактами ожидания Tw. Первый цикл Такты ожидания Второй цикл CLK D7-D0 Вектор прерывания Рис. 3.7. Цикл шины ПОДТВЕРЖДЕНИЕ ПРЕРЫВАНИЯ Каждый процессорный цикл состоит из трех состояний — Ts, Тс, Тс. Это нужно для того, чтобы увеличить длительность сигнала INTA, который поступает на контроллер прерываний 8259А. Первый цикл позволяет веду- щему контроллеру определить, какой из ведомых контроллеров вызвал прерывание. Во втором цикле МП считывает из шины данных вектор пре- рывания, используемый для нахождения адреса в таблице векторов преры- ваний. Цикл шины СТОП/ОСТАНОВ (Halt/Shutdown) возникает либо при
138 Гпава 3 выполнении команды hlt, либо при обработке исключения 8 (табл. 3.2) в защищенном режиме. Типы прерываний. Прерывания и исключения (или особые случаи) в реаль- ном и защищенном режимах приведены в табл. 3.2. Таблица 3.2. Прерывания и исключения МП i80286 Номер преры- вания Адрес возврата Функции Реальный режим Защищенный режим I 2 3 4 0 Первый байт команды Ошибка деления — возникает, если частное слишком велико либо делитель равен нулю I Следующая команда Прерывание пошаговой работы 2 Нет Немаскированное прерывание 3 Следующая команда Контрольный останов (int 3) 4 Следующая команда Особый случай переполнения (into) 5 Первый байт команды Особый случай выхода из диапазона — возникает при выполнении команды bound 6 Первый байт команды Недопустимый код операции — возникает, если встречается недействительный код операции или ко- манда длиной больше 10 байт 7 Первый байт команды Сопроцессор недоступен Сопроцессор недоступен или состоялось переключение задач 8 Первый байт команды - Двойной отказ — ситуация, ко- гда МП выявляет два независи- мых исключения при отработке одной команды. Если во время его обслуживания произойдет исключение, то МП выключится (цикл Shutdown). В этом состоя- нии процессор прекращает свои действия и выводится из него сигналами сброса или немаски- рованного прерывания 9 Не определен Нарушение предела сегмента сопроцессором — воз- никает, если операнд сопроцессора не помещается в сегмент, например, 16-разрядный операнд имеет смещение 0FFFFH
Однокристальные универсальные микропроцессоры (старшие модели) 139 Таблица 3.2 (окончание) Номер преры- вания Адрес возврата Функции Реальный режим Защищенный режим I 2 3 4 Ю Первый байт команды - Недопустимый сегмент состоя- ния задачи II Первый байт команды - Сегмента нет I2 Первый байт команды Нарушение предела сегмента стека Нарушение предела сегмента стека либо его отсутствие 13 Первый байт команды Нарушение преде- ла сегмента дан- ных или кода — возникает, если операнд или код операции не по- мещаются в сег- мент Нарушение защиты — возникает в таких случаях: при выходе за предела таблицы дескрипторов; при нарушениях привилегий; при загрузке недействительного де- скриптора или типа сегмента; при попытке записи в сегмент кода или сегмент данных, пред- назначенных лишь для чтения, при чтении только из выполняе- мого сегмента кодов; при попытке выполнить привилегированные команды, разрешенные лишь при определенных уровнях CPL и IOPL 14 Зарезервирован 15 Зарезервирован 16 Следующая команда ESC или WAIT Особый случай сопроцессора — возникает в МП i80286 при любом немаскированном особом случае в сопроцессоре 17 Зарезервирован 31 Зарезервирован Каждому номеру прерывания соответстсвует элемент в таблице IDT деск- рипторов прерываний, которая содержит векторы прерываний. После сбро- са МП, а также во время работы в реальном режиме таблица векторов IDT размещается, начиная с нулевого адреса, однако командой загрузки регирт-
140 Гпава 3 pa IDTR можно изменить место ее размещения в пределах первого мегабай- та и уменьшить размер таблицы. Пример 3.5. Определить, возникнет ли прерывание во время работы МП в реальном режиме при выполнении команды MOV АХ, [OFFFFH] При выполнении этой команды в аккумулятор АХ пересылается слово из сегмента данных, причем младший байт слова имеет смещение 0FFFFH, а старший — 0000Н. Этот случай является нарушением предела сегмента и возникает прерывание 13. Контрольные вопросы и задания 1. Назовите основные характерные особенности реального и защищенного режимов. 2. Укажите количество линий шины адреса в реальном и защищенном ре- жимах. 3. Укажите максимально возможное количество дескрипторных таблиц, которые могут быть заданы. 4. Чем отличаются теневые регистры от программно-доступных? 5. Какую информацию содержат дескрипторные таблицы? 6. Укажите назначение регистра IDTR. 7. Какие команды необходимо выполнить перед переходом в защищенный режим работы? 8. Дайте характеристику существующих типов циклов шины. 9. Охарактеризуйте понятия "прерывание” и "исключение". 10. Чем отличается обработка прерывания от обработки исключения? 3.2. Архитектура 32-разрядных микропроцессоров Существующие 32-разрядные МП i386, i486, Pentium, Pentium Pro и Pentium II имеют разрядность регистров и шины адреса, равную 32. Шина данных для процессоров i386, i486 является 32-разрядной, а для процессоров Pentium, Pentium Pro и Pentium II — 64-разрядной. Они позволяют адресо- вать 4 Гбайт памяти, имеют средства поддержки сегментной и страничной адресации памяти. Процессоры имеют четырехуровневую систему защиты памяти и портов ввода/вывода, могут работать в многозадачном режиме.
Однокристальные универсальные микропроцессоры (старшие модели)141 К режимам работы МП i80286 добавлен Virtual Real Mode — режим вирту- ального процессора i8086. Допускается параллельная работа нескольких виртуальных процессоров i8086 под управлением операционной системы типа Windows, OS/2, Unix. Процессоры оперируют с битами, полями бит, 8-, 16- и 32-битными операндами, строками битов, байтов, слов (16-разрядных данных) и двойных слов (32-разрядных данных). В архитектуру процессоров введены средства отладки и тестирования. Программная модель. Программная модель 32-разрядного процессора изо- бражена на рис. 3.8. Она содержит следующие группы регистров: регистры общего назначения; указатель команд; регистр флагов; сегментные регист- ры; регистры управления; системные адресные регистры; регистры отладки; регистры тестирования. Регистры общего назначения содержат все регистры данных и регистры- указатели МП i8086 и i80286 и столько же дополнительных 32-разрядных регистров. В обозначении 32-разрядных регистров используется начальная буква Е (Expanded — расширенный). Указатель команд EIP содержит смещение следующей выполняемой коман- ды в сегменте кодов. При 16-разрядных адресах используются младшие 16 разрядов (IP). Регистр флагов EF расширен до 32 разрядов. Младшие 16 разрядов регист- ра EF составляют регистр флагов F 16-разрядного процессора. В регистр EF добавлены новые флаги: □ флаг разрешения команды идентификации (ID, Identification Flag) про- цессора (CPUID, Central Processor Unit Identification) — для Pentium-i-1 и некоторых процессоров типа 486; О виртуальный запрос прерывания (VIP, Virtual Interrupt Pending) — для Pentium+; □ виртуальная версия флага разрешения (VIF, Virtual Interrupt Flag) пре- рывания IF для многозадачных систем (Pentium+); О флаг контроля выравнивания (AC, Alignment Check). Используется толь- ко на уровне привилегий 3. Если ACC = 1 и AM = 1 (AM — бит в регист- ре управления CR0), то в случае обращения к операнду, не выровненному по соответствующему пределу (2, 4, 8)1 2 байт, будет вызвано исключение 17 (для i486+); 1 В дальнейшем обозначения i386+, i486+, Pentium+ означают, что приведенные данные справедливы для указанной модели МП и всех старших моделей. 2 Выравнивание операнда по пределам 2, 4, 8 означает, что адрес операнда является крат- ным, соответственно, 2, 4, 8.
142 Гпава 3 Регистры общего назначения 31 16 15 О АН AXAL ЕАХ BHBXBL ЕВХ СН СХ CL ЕСХ DH DX DL EDX SI ESI DI EDI ВР EBP SP ESP Указатель команд и регистр флагов 31 16 15 0 IP EIR F EF Сегментные регистры 15 О CS Код SS Стек DS ES FS г" Данные GS Управляющие регистры MSW Системные адресные регистры 47 16 15 О Линейный базовый адрес Предел Линейный базовый адрес Предел Системные сегментные регистры 15_________О 2ZZZZZ] tr \LDTR Теневые регистры дескрипторов Права доступа Линейный базовый адрес Предел Права доступа Линейный базовый адрес Предел Регистры тестирования Рис. 3.8. Программная модель 32-разрядного процессора □ флаг (VM, Virtual 8086 Mode) в защищенном режиме включает режим виртуального процессора 8086. Попытка использования привилегиро- ванных команд в этом режиме приведет к исключению 13;
Однокристальные универсальные микропроцессоры (старшие модели) 143 □ флаг возобновления (RF, Resume Flag). В режиме отладки единичное значение RF позволяет осуществить рестарт команды после прерываний. Используется совместно с регистрами точек отладочного останова. Сегментные регистры. Кроме сегментных регистров МП i8086 и i80286 (DS, CS, SS, ES), программная модель содержит два дополнительных сегментных регистра данных: FS и GS. С каждым из шести сегментных регистров связа- ны теневые регистры дескрипторов. В теневые регистры в защищенном ре- жиме переписываются 32-разрядный базовый адрес сегмента, 20-разрядный предел и атрибуты (права доступа) из дескрипторных таблиц. В управляющих регистрах CR0—CR3 (Control Register) хранятся признаки состояния процессора, общие для всех задач. Младшие четыре разряда ре- гистра CR0 содержат биты регистра MSW МП i80286 и некоторые другие биты управления. Регистр CR1 зарезервирован; в CR2 хранится 32- разрядный линейный адрес, по которому получен отказ страницы памяти; в 20 старших разрядах регистра CR3 хранится физический базовый адрес таблицы каталога страниц и биты управления кэш-памятью. Регистр CR4 (Pentium*) содержит биты разрешения архитектурных расширений МП. Системные адресные регистры. В системных регистрах-указателях глобальной дескрипторной таблицы GDTR и таблицы прерываний IDTR — хранятся 32- разрядные базовые адреса и 16-разрядные пределы таблиц соответственно. Системные сегментные регистры задач TR и локальной дескрипторной таб- лицы LDTR являются 16-разрядными селекторами. Им соответствуют тене- вые регистры дескрипторов, которые содержат 32-разрядный базовый адрес сегмента, 20-разрядный предел и байт права доступа. В регистрах отладки DR0—DR3 (Debug Register) содержатся 32-разрядные адреса точек останова в режиме отладки; DR4—DR5 зарезервированы и не используются; DR6 отображает состояние контрольной точки; DR7 — ру- ководит размещением в программе контрольных точек. Регистры тестирования TR (Test Register) входят в группу модельно- специфических регистров, их состав и количество зависят от типа процессо- ра: в МП 386 используются два регистра TR6 и TR7, в Pentium II — TR1— TR12. Эта группа регистров содержит результаты тестирования МП и кэш- памяти. Сегментная организация памяти. В 32-разрядных МП различают три адрес- ных пространства памяти — логическое, линейное и физическое. Логиче- ский (или виртуальный) адрес состоит из селектора и смещения ЕА. Линей- ный адрес получается сложением базового адреса сегмента с эффективным адресом. Физический адрес памяти создается после преобразования линей- ного адреса блоком страничной переадресации.
144 Гпава 3 Организация памяти зависит от режима работы МП. В реальном и вирту- альном режимах i8086 адресация памяти такая же, как в МП i8086. В защи- щенном режиме используется сегментная и страничная организация памяти. Сегментная организация используется на прикладном уровне, а страничная — на системном. Формирование адреса ячейки памяти в защищенном режиме представлено на рис. 3.9. Рис. 3.9. Формирование адреса ячейки памяти в защищенном режиме Блок сегментации преобразует пространство логических адресов в про- странство линейных адресов. Исходными данными для блока сегментации являются смещение ЕА в сегменте и сегментный регистр, которые задаются в команде. Содержимое сегментного регистра в защищенном режиме явля- ется селектором. Он содержит информацию о типе дескрипторной таблицы (глобальной или локальной) и индекс дескриптора (см. рис. 3.1). Индекс де- скриптора является номером дескриптора в таблице. Дескриптор содержит базовый адрес сегмента. Линейный адрес определяется сложением базового и эффективного адресов в соответствии с рис. 3.2. Блок страничной переад- ресации формирует физический адрес памяти. При отключенном блоке ли- нейный адрес совпадает с физическим. Блок вычисления эффективного ад- реса вычисляет смещение операнда в сегменте согласно типу адресации, приведенному в табл. 3.3. Алгоритм вычисления адреса ячейки памяти для разных типов адресации показан на рис. 3.10.
Однокристальные универсальные микропроцессоры (старшие модели)145 Регистры общего назначения МП могут выполнять функции следующих ре- гистров: базового Base, индексного Index, масштабирования множителя Scale и смещения Disp. В табл. 3.4 представлено использование этих регист- ров в зависимости от режимов адресации: 16-разрядной или 32-разрядной. Масштабированные типы адресации возможны только в 32-разрядном ре- жиме адресации. Рис. ЗЛО. Алгоритм вычисления адреса ячейки памяти для различных типов адресации Таблица 3.3. Типы адресации в 32-разрядных процессорах Тип адресации Вычисление ЕА Регистровая ЕА = содержимого РОН Прямая ЕА = Disp
146 Гпава 3 Таблица 3.3 (окончание) Тип адресации Вычисление ЕА Косвенная регистровая ЕА = Base Базовая ЕА = Base + Disp Индексная ЕА = Index + Disp Масштабированная индексная ЕА = Scale х Index + Disp Базовая индексная EA = Base + Index Масштабированная базовая индексная EA = Base + Index x Scale Базовая индексная со смещением EA= Base + Index + Disp Масштабированная базовая индексная со смещением EA = Base + Index x Scale + Disp В реальном режиме по умолчанию используется 16-разрядная адресация, но с помощью префикса изменения разрядности адреса можно переключить на 16-разрядный режим. В защищенном режиме тип адресации зависит от бита D в дескрипторе кодово- го сегмента (при D = 0 используется 16-разрядная адресация, при D = 1 — 32- разрядная). Таблица 3.4. Использование РОН при вычислении эффективного адреса Компонент 16-разрядная адресация 32-разрядная адресация Базовый регистр (Base) ВХ или ВР Любой 32-разрядный РОН Индексный регистр (Index) SI или DI Любой 32-разрядный РОН, кроме ESP Масштаб (Scale) 1 1,2, 4 или 8 Смещение (Disp) 0, 8 или 16 бит 0, 8 или 32 бит Использование сегментных регистров при адресации памяти определяется типом обращения к памяти (табл. 3.5). Для некоторых типов обращений до- пускается замена сегментного регистра, которая производится применением префиксов команд CS:, DS:, SS:, ES:, FS:, GS:, например ADD FS:[ESI],EAX ; [FS:ESI] <—[FS:ESI]+ЕАХ.
Однокристальные универсальные микропроцессоры (старшие модели) 147 Таблица 3.5. Использование сегментных регистров для адресации памяти Тип обращения к памяти Сегментный регистр Смещение по умолчанию альтернативный Выборка команд CS Нет IP, EIP Стековые операции SS Нет SP, ESP Адресация переменной DS CS, ES, SS, FS, GS ЕА Строка-источник DS CS, ES, SS, FS, GS SI Строка-приемник ES Нет DI Использование ВР, ЕВР или ESP как базового регистра SS CS, ES, DS, FS, GS EA Пример 3.6. Определить значение физического адреса операнда в команде пересылки в регистр AL содержимого ячейки памяти MOV AL, [ВХ + 4 . SI + ЮООН] если базовый адрес сегмента данных равен 12456789Н, а содержимое реги- стров ВХ = О ПОН, SI = 1234Н. Блок страничной переадресации отсутствует. Эффективный адрес ячейки памяти ЕА = 0120Н + 4 • 1234Н + ЮООН = 59F0H. Выполнив операцию сложения 32-разрядного базового адреса с эффектив- ным адресом ЕА, получим линейный адрес, который совпадает с физиче- ским адресом: 12456789Н + 59F0H = 1245С179Н. Таким образом, физический адрес равен 1245С179Н. Формирование базового адреса сегмента поясняется рис. 3.11. Поле TI се- лектора сегмента определяет рабочую дескрипторную таблицу (глобальную или локальную), где находится начальный адрес сегмента. Поле RPL определяет запрошенный уровень привилегии сегмента. Поле Index определяет смещение относительно начального адреса таблицы. От- метим, что начальный адрес таблицы хранится либо в регистре GDTR — для глобальной таблицы, либо в теневом регистре. В последнем случае ре- гистр LDTR является, в свою очередь, селектором и указывает, где в гло- бальной дескрипторной таблице находится информация о начальном адресе локальной таблицы. Эта информация переписывается в теневой регистр.
148 Гпава 3 15 О Рис. 3.11. Формирование базового адреса сегмента Формат дескриптора для 32-разрядных процессоров показан на рис. 3.12. Дескриптор МП i80286 содержит ноль в битах 63—48, а поля базового адре- са и предела занимают 24 и 16 бит соответственно. В 32-разрядном МП поле базового адреса занимают второй, третий, четвертый и седьмой байты де- скриптора. В ходе выполнения команды эти байты объединяются в один 32- разрядный базовый адрес. I Права доступа I AR I 63 47 39 32 ————— 1 1 1 1 1 Базовый адрес G D X U 31-24 Предел 19-16 1 1 1 Р DI "Г ГТТТ"”1 3LS Туре А Базовый адрес 23-16 31 15 7 0 Базовый адрес 15-0 Предел 15-0 Рис. 3.12. Формат дескриптора для 32-разрядных процессоров Поле предела занимает байты с номерами 0, 1 и младшие четыре бита шес- того байта дескриптора. Предел задает максимальное смещение в сегменте, т. е. эффективный адрес последнего элемента сегмента. При 20-разрядном пределе максимальное значение адресуемых элементов составляет 220. Тем не менее, поскольку элементом сегмента может быть не только байт, но и страница объемом 4 Кбайт, сегмент может содержать от одного байта до
Однокристальные универсальные микропроцессоры (старшие модели) 149 4 Гбайт. Байт с номером 5 дескриптора содержит права доступа (AR, Access Rights), в частности, следующие биты управления: бит присутствия (Р, Present); поле уровня привилегий сегмента (DPL, Descripter Privilege Level); системный бит (S, System); поле типа сегмента (Туре); бит обращения (A, Accessed). Бит присутствия Р равен единице, если сегмент находится в физической памяти (ОЗУ). В режиме виртуальной памяти операционная система может передавать содержимое некоторых сегментов на жесткий диск, при этом она сбрасывает бит Р в ноль в дескрипторе этого сегмента. Если программа по- сле этого снова обращается к сегменту, возникает исключение 11 отсутствия сегмента. Операционная система ищет свободную область физической па- мяти (при этом, возможно, отправляет на диск некоторый другой сегмент), копирует содержимое запрошенного сегмента из диска в память, записывает в его дескриптор новый базовый адрес и осуществляет перезапуск команды, которая вызвала исключение 11 отсутствия сегмента. Описанный процесс называется свопингом (swapping) или подкачкой. Поле уровня привилегий сегмента DPL содержит 2 бита. Высшему уровню привилегии соответствует значение 0, низшему — значение 3. Системный бит S имеет нулевое значение (S = 0) в дескрипторах сегмента кодов, системных сегментов для хранения локальных таблиц дескрипторов, сегмента состояния задачи TSS (Task State Segment) и в дескрипторах, кото- рые называются вентилями (Gate) или шлюзами. В других случаях S = 1. Вентиль содержит информацию о логическом адресе входа в некоторую системную программу и занимает 8 байт. Формат вентилей показан на рис. 3.13. Вентили предназначены для передачи управления и содержат логический адрес перехода в виде селектора SELECTOR и 32-разрядного смещения OFFSET. Вентили вызова используются для вызовов процедур с изменением
150 Гпава 3 уровня привилегий, вентили задач — для переключения задач, вентили пре- рываний и вентили ловушек — для перехода к процедурам обслуживания прерываний, при этом вентили прерываний запрещают прерывания (сбрасывают флаг IF), а вентили ловушек — не запрещают. Поле WORD COUNT (рис. 3.13) в вентилях вызова определяет количество слов, копируемых из стека одной процедуры в стек другой процедуры. Для других вентилей поле WORD COUNT содержит нулевые значения. Поле типа сегмента Туре занимает три разряда и определяет тип сегмента в соответствии с табл. 3.6. Бит обращения А. В сегментах кода и данных А = 0 означает, что к сегмен- ту не было обращений. В системных объектах поле Туре вместе с битом А определяет тип системного объекта в соответствии с табл. 3.6. Таблица 3.6. Типы сегментов и системных объектов Туре А Тип сегмента Разрешенные операции 1 2 3 4 Сегменты кодов и данных ООО А Данных Только считывание 0 0 1 А Данных Считывание и запись 0 1 0 А Стека Только считывание 0 1 А Стека Считывание и запись 1 0 0 А Кодов Только выполнение 1 0 1 А Кодов Выполнение и считывание 1 1 0 А Подчиненный Только выполнение сегмент кодов 1 1 1 А Подчиненный Выполнение и считывание сегмент кодов Системные сегменты ** ООО 1 Доступный сегмент TSS состояния задачи* i80286 0 0 1 0 Таблица локальных дескрипторов LDT 0 0 1 1 Занятый сегмент TSS состояния задачи i80286 1 0 0 1 Доступный сегмент TSS состояния задачи i386+ 1 0 1 0 Зарезервирован 1 0 1 1 Занятый сегмент TSS состояния задачи* i386+ Вентили
Однокристальные универсальные микропроцессоры (старшие модели) 151 Таблица 3.6 (окончание) Туре А Тип сегмента Разрешенные операции 1 2 3 4 Сегменты кодов и данных 0 1 0 0 Вентиль вызова i80286 (Call Gate) 0 1 0 1 Вентиль задачи i80286 (Task Gate) 0 1 I 0 Вентиль прерывания i80286 (Interrupt Gate) 0 1 1 1 Вентиль ловушки i80286 (Trap Gate) 1 1 0 0 Вентиль вызова i386 + (Call Gate) 1 1 0 1 Вентиль задачи i386 + (Task Gate) 1 1 1 0 Вентиль прерывания i386 + (Interrupt Gate) 1 1 1 1 Вентиль ловушки i386 4- (Trap Gate) Примечание, * На практике такие сегменты стека не используются. ** Другие состояния полей Туре и Л не используются. В старшей тетраде шестого байта дескриптора находятся следующие биты управления: □ бит гранулярности (G, Granularity). При G = 0 единицей памяти в сег- менте является байт, при G = 1 — страница длиной 4 Кбайт; □ бит размера (D, Default size). При D = 0 операнды в памяти считаются 16- разрядными, D = 1 — 32-разрядными. Применяется для совместимости с МП i80286; □ бит пользователя (U, User). Может быть установлен или сброшен про- граммно. Как видно из описания дескриптора, 32-разрядный МП разрешает создание сегментов, с которыми могут быть выполнены операции считывания, чте- ния/записи, выполнения или выполнения/считывания. Для создания харак- терных для МП i8086 сегментов, в которых выполняются одновременно все перечисленные операции, используют перекрытие сегментов памяти, т. е. начальный адрес одного сегмента является адресом другого. Страничная организация памяти. Этот тип организации применяют в ос- новном в системах виртуальной памяти, которые позволяют программисту использовать большее пространство адресов, чем существующая физиче- ская память. Учитывая свойство пространственной локальности кодов и
152 Гпава 3 данных (близкого расположения необходимых ячеек памяти), целесообраз- но оперировать не байтами, а некоторыми небольшими модулями памяти — страницами. При страничном преобразовании все линейное адресное про- странство 32-разрядного МП емкостью 4 Гбайт разбивается на 220 страни- цы по 4 Кбайт. Физическое пространство памяти микропроцессорной сис- темы также разбивается на страницы, причем в физической памяти страниц значительно меньше, чем 220. Например, при объеме памяти 4 Мбайт коли- чество физических страниц (их еще называют страничными кадрами или page frame) равно 210. Отсутствующие в БИС физической памяти страницы сохраняются во внешней памяти (накопителе на жестком магнитном диске) и при необходимости загружаются в физическую память, т. е. происходит процесс свопинга. Прикладные программы могут оперировать со всем про- странством виртуальной памяти — 4 Гбайт. Процесс страничного преобра- зования адреса иллюстрирует рис. 3.14. Линейный адрес Рис. 3.14. Страничное преобразование адреса
Однокристальные универсальные микропроцессоры (старшие модели)153 В процессе преобразования старшие 20 бит 32-разрядного линейного адреса заменяются другим 20-разрядным значением — номером физической стра- ницы в соответствии с механизмом преобразования адреса (рис. 3.14). Ре- гистр управления CR3 (PDBR, Page Directory Base Register) содержит физи- ческий базовый адрес каталога страниц. Каталог страниц находится в физической памяти постоянно и не принимает участие в свопинге. Он со- держит 1024 32-разрядных адреса (PDE, Page Directory Entry). Каждая из них является начальным адресом таблицы страниц. Таблица страниц (РТЕ, Page Table Entry) содержит адреса страничных кадров в физической памяти. Физический базовый адрес каталога страниц формируется из строки табли- цы страниц РТЕ и 12 разрядов смещения линейного адреса. Защита по привилегиям. Система привилегий предназначена для предотвра- щения неразрешенных взаимодействий пользователей, несанкционирован- ного доступа к данным, повреждения программ и данных. Частично эти за- дачи решаются организацией защищенного режима памяти, частично — защитой по привилегиям. 32-разрядные процессоры поддерживают четыре уровня привилегий 0—3, причем уровень 0 является наиболее привилегиро- ванным. Уровень 0 обычно присваивается ядру операционной системы, уровень 1 — системным сервисам, уровень 2 — расширениям операционной системы, уровень 3 — прикладным программам пользователя. Во время вы- полнения программы контролируется, может ли программа: □ выполнять привилегированные команды; □ обращаться к данным других программ; □ передавать управление другой программе с помощью команд передачи управления типа EAR. К привилегированным относятся команды, которые изменяют сегмента- цию, влияют на механизм защиты, модифицируют флаг разрешения преры- ваний IF. При попытке выполнить эти команды на уровнях привилегий 1, 2 или 3 генерируется исключение 13. Для контроля обращения программы к данным других программ использу- ются поля текущего уровня привилегий (CPL, Current Privilege Level или Code Privilege Level); задается полем RPL селектора CS) и дескриптора дан- ных DPL. Доступ к данным разрешается при CPL < DPL. Передача управления программам разных уровней привилегий осуществля- ется с помощью: □ подчиненных сегментов кода (см. табл. 3.6); □ дескрипторов вентилей вызовов (шлюзов).
154 Гпава 3 В подчиненных сегментах выполнение команд возможно, если текущий уровень привилегий (CPL) не ниже уровня привилегий дескриптора (DPL) подчиненного сегмента, у неподчиненных — управление сегмента передает- ся при CPL = DPL. Обычно в подчиненных сегментах кодов размещают библиотеки, к которым могут обращаться программы разных уровней при- вилегий. Использование подчиненных кодовых сегментов не изменяет те- кущий уровень привилегий. Единственным средством изменения уровня привилегий является использование вентилей вызовов. Вентили идентифи- цируют разрешенные точки входа в кодовые сегменты с большим уровнем привилегий. В дескрипторе вентиля задается полный адрес точки входа (селектор:смещение) той процедуры, которой передается управление. Переключение задач. В многозадачных системах и системах с большим коли- чеством пользователей МП выполняет некоторую часть команд программы одной задачи, после этого переключается на выполнение другой задачи. Так продолжается, пока МП снова не возвратится к первой задаче. Для под- держки многозадачного режима в МП существуют следующие средства: □ сегмент состояния задачи TSS; □ дескриптор сегмента состояния задачи; □ регистр задачи TR; О вентиль задачи. Дескриптор сегмента состояния задачи указывает на сегмент, который со- держит полное состояние задачи, а вентиль задачи содержит селектор, ко- торый указывает на дескриптор TSS. Регистр TR является селектором сегмен- та TSS текущей задачи. Каждая задача имеет свой сегмент состояния. В сегменте TSS помещается информация о состоянии процессора на время пе- реключения задач — содержимое почти всех регистров МП, включая ре- гистр флагов, раздельные указатели стеков для уровней привилегий 0, 1, 2 и ссылка на селектор TSS задачи, которая вызвала переключение. Переключение задач осуществляется либо по командам межсегментных пе- реходов jmp far, либо по командам вызовов подпрограмм call far, либо по аппаратным или программным прерываниям и исключениям. В первом случае программа должна ссылаться на сегмент состояния задачи TSS или на дескрипторы вентиля задачи в GDT (LDT), во втором — соответствую- щий прерыванию дескриптор в таблице прерываний IDT может быть деск- риптором вентиля задачи. Во время передачи управления вызванной задаче по команде iret проверя- ется флаг вложенной задачи NT (Nested Task). Если NT = 0, команда iret работает в обычном режиме, оставаясь в текущей задаче. Если NT = 1, ко- манда iret выполняет переключение на предыдущую задачу.
Однокристальные универсальные микропроцессоры (старшие модели) 155 Контрольные вопросы и задания 1. Укажите назначения регистров, которые входят в программную модель 32-разрядного процессора. 2. Укажите назначения флагов, которые входят в программную модель 32- разрядного процессора. 3. Укажите назначения регистров управления и регистров тестирования. 4. Укажите назначения и существующие типы дескрипторных таблиц. 5. Какое значение системного бита определяет тип дескриптора? 6. Дайте определение процесса свопинга и объясните, как он происходит. 7. Объясните принцип страничной организации памяти. 8. Объясните необходимость и принцип функционирования механизма защиты по привилегиям. 9. При каких условиях разрешается считывать (записывать) данные опре- деленного сегмента? 10. Какая информация помещается в вентилях вызовов? 11. Объясните особенности многозадачного режима работы. 12. Укажите назначения регистра TR. 3.3. Особенности архитектуры микропроцессоров i386 и i486 Рассмотрим архитектуру микропроцессоров i386 и i486: Микропроцессор i386. Первый 32-разрядный процессор i386 появился в 1985 году. Он выполнен по 1,5 мкм технологии и содержит 275 тыс. тран- зисторов. Разрядность регистров, шины данных и адреса равна 32. Ем- кость прямо адресуемой памяти составляет — 4 Гбайт. Процессор может работать в трех режимах — реальном, защищенном и режиме виртуально- го процессора 8086 — V86. Возможна параллельная работа нескольких виртуальных процессоров 8086 под управлением операционной системы типа Windows, OS/2, UNIX. Переключение режимов происходит быстрее, чем в МП i80286. Процессор имеет механизмы страничной адресации, ко- торые существенным образом повышают эффективность работы с памя- тью свыше 1 Мбайт. Очередь команд составляет 16 байт. Микропроцессор i80386 имеет модификации: DX — с 32-разрядными регистрами, шинами данных и адреса; SX — с внешней 16-разрядной шиной данных и 24-
156 Гпава 3 разрядной шиной адреса; SL — отличается от модификации SX снижен- ным энергопотреблением и встроенным контроллером внешней кэш- памяти на 16—64 Кбайт. В комплект 386SL входит микросхема 82360SL — набор периферийных контроллеров для ноутбуков. Основные характери- стики процессоров 80x86 сведены в табл. 3.7. Таблица 3.7. Основные характеристики процессоров 80x86 фирм Intel и IBM Про- цессор Разрядность Емкость кэш-памяти, Кбайт Наличие сопроцес- сора Частота процессора, МГц Регист- ры Шина данных Шина адреса 8088 16 8 20 - - • 4,77—8 8086 16 16 20 - - 5 286 16 16 24 - - 6—25 386SX 32 16 24 - - 16—23 386SL 32 16 24 - - 25 386SLC 32 16 24 8 - 25—40 486SLC 32 16 24 16 - 25—40 486SLC2 32 16 24 16 - 40—66 486SLC3 32 16 24 16 - 75 386DX 32 32 32 - - 25—40 486DLC 32 32 32 16 - 25—40 486SX 32 32 32 8 - 16—33 486BL2 32 32 32 16 - 40—66 486BL3 32 32 32 16 - 75—100 486DX 32 32 32 8 + 25—50 487SX 32 32 32 8 + 25—50 486SL 32 32 32 8 + 25—50 486DX2 32 32 32 8/16 + 40—80 486DX4 32 32 32 16 + 75—120
Однокристальные универсальные микропроцессоры (старшие модели) 157 Микропроцессор i486. Процессор появился в 1989 году. Характеризуется значительно более высоким быстродействием по сравнению с i8086. Он вы- полнен по 1 мкм технологии и содержит 1,2 млн транзисторов. Основные особенности МП i486 — наличие внутренней кэш-памяти, встроенного арифметического сопроцессора, совместимого по командам с сопроцессо- ром i387. В МП i486 увеличена очередь команд, ускорено выполнения опе- раций как в целочисленном АЛУ, так и в блоке арифметического сопроцес- сора, используется умножение тактовой частоты системной платы. В модификациях 486DX2 внутренняя частота равна удвоенной внешней, а в процессорах 486DX4 кратность может быть 2; 2,5; 3. В модификациях SX и в некоторых модификациях SL арифметический сопроцессор отсутствует. Процессоры DX4 в зависимости от модификации могут работать при пита- нии 5 В и 3,3 В и имеют режим управления системой (SMM, System Management Mode), что позволяет управлять энергопотреблением. Кроме рассмотренных выше процессоров фирмы Intel (табл. 3.7), существуют аналогичные по техническим характеристикам процессоры, выпускаемые другими фирмами — IBM, AMD, Cyrix, Texas Instruments. Так, процессор 386SLC фирмы IBM представляет собой улучшенный вариант 386SX. Он име- ет внутреннюю кэш-память и характеризуется ускоренным выполнением опе- раций. Микропроцессор 486SLC — вариант процессора i486SX, а процессоры SLC2/SLC3 осуществляют удвоение (утроение) внешней частоты. Процессоры SCL2 и SL характеризуются напряжением питания 3,3 В и сни- женным энергопотреблением. Большинство процессоров фирмы AMD имеют сниженное потребление (буква L в обозначении БИС) и напряжение питания 3,3 В (на сниженное напряжение питания указывает буква V в обо- значении МП), например, процессор AMD 5X-133ADV представляет собой вариант i486 с увеличенной в 4 раза частотой и сниженным напряжением питания. Внутренняя кэш-память. Начиная с МП i486, применяется внутреннее раз- дельное кэширование команд и данных (подробно принципы организации кэш-памяти рассмотрены в разд. 3.5). Если адресуемая область отображена в кэш-памяти (случай попадания — cache hit), то запрос на чтение обслужива- ется только кэш-памятью без обращения к основной памяти. При запросе на запись сначала модифицируется информация в кэш-памяти, а после это- го, в зависимости от типа кэш-памяти, и основная память. В первых процессорах i486 использовался режим сквозной записи Write Through, когда информация одновременно записывается как в буфер, так и в ОЗУ. Более поздние модификации используют режим обратной записи Write Back, который состоит в том, что копия блока записывается в ОЗУ лишь в том случае, если его содержимое изменялось.
158 Гпава 3 Заполнение строки кэш-памяти процессор выполняет наиболее быстрым способом — пакетным циклом с 32-битными передачами. Выбор строки для замещения новыми данными осуществляется на основании анализа бита LRU (Least Recently Used), который выполняется только при кэш-промахах чтения. При кэш-промахах записи заполнения строк не происходит. Пакетный режим передачи данных. Пакетный режим передачи данных (Burst Mode) предназначен для быстрых операций со строками кэш-памяти. При этом содержимое четырех 32-разрядных ячеек основной памяти пересылает- ся в одну строку кэш-памяти или наоборот — содержимое одной стро- ки кэш-памяти пересылается в четыре 32-разрядные ячейки основной па- мяти. Поскольку строка кэш-памяти процессора i486 имеет длину 16 байт (128 бит), то для ее пересылки необходимо четыре 32-разрядных цикла шины, на протяжении каждого из которых происходит пересылка содержимого од- ной 32-разрядной ячейки из основной памяти или 32 бит из кэш-памяти. Рассмотрим случай пересылки содержимого четырех 32-разрядных ячеек основной памяти в одну строку кэш-памяти (рис. 3.15). Рис. 3.15. Диаграмма пересылки содержимого четырех 32-разрядных ячеек памяти
Однокристальные универсальные микропроцессоры (старшие модели)159 При считывании содержимого 32-разрядной ячейки разряды АО и А1 не принимают участия в формировании адресов, поскольку они определяют положение каждого из четырех байтов в 32-разрядной ячейке. Поэтому на рис. 3.15 показаны значения разрядов А31—А2. В первом такте Т1 устанавливается адрес А31—А2, сигналы идентификации типа цикла и формируется строб ADS#. Этот такт выполняется процессо- ром так же, как и при обычной передаче данных. В следующем такте (Т2) передается первое 32-разрядное слово. При этом сигнал BLAST# имеет значение Н-уровня. О завершении пакетного цикла процессор сообщает внешнему устройству сигналом BLAST#, который приобретает значение L-уровня в последнем такте передачи пакета. Если внешнее устройство поддерживает пакетный режим, то генерируется сигнал готовности к пакетной передаче BRDY# (вместо сигнала RDY#). В этом случае процессор продолжит цикл как пакетный, не вводя такты Т1 адреса- ции-идентификации (с сигналом ADS#), а сразу переходя к передаче сле- дующего 32-разрядного слова. Формированием сигнала RDY# вместо BRDY# внешнее устройство может в любой момент прервать пакетную передачу, и процессор продолжит ее обычными циклами. Для передачи 16 байт в пакетном режиме нужно пять тактов шины (без тактов ожидания) вместо восьми тактов при обычном режиме передачи. Объясним чередование адресов 32-разрядных слов в пакетной посылке. Представим адрес слова в виде: А31—А4 АЗ А2 А1 АО произвольные значения номер 32-разрядного слова в пакетной посылке номер байта в 32-разрядном слове Разряды А1 и АО в этом адресе равны нулю. Разряды АЗ, А2 определяют положения каждой из четырех 32-разрядных ячеек в строке кэш-памяти длиной 128 бит. Разряды А31—А4 определяют адрес в основной памяти 32- разрядного слова, которое пересылается в кэш-память. Строка кэш-памяти выровнена по пределу 128-разрядных данных, ее адрес имеет нулевые значения разрядов АЗ—АО. В пакетной передаче всегда счи- тываются данные, которые соответствуют одной строке кэш-памяти, адрес которой кратен 128. Адрес первого 32-разрядного слова пакетной посылки может быть не кратным 128.
160 Гпава 3 При нулевых значениях разрядов А31—А4 и А1, АО адрес первого слова определяется разрядами АЗ, А2: А31—А4 АЗ А2 А1 АО Адрес первого слова в пакетной посылке 0...0 0 0 0 0 0 0...0 0 1 0 0 4 0...0 1 0 0 0 8 0...0 1 1 0 0 с Чередование адресов 32-разрядных слов в пакетной посылке в зависимости от адреса первого слова приведено в табл. 3.8. Таблица 3.8. Последовательность изменения адреса в пакетном цикле Адрес первого слова Адрес второго слова Адрес третьего слова Адрес четвертого слова . 0 4 8 с 4 0 С 8 8 с 0 4 С 8 4 0 Пример, когда первый адрес блока не совпадает с границей строки, а равен 04Н, показан на рис. 3.15. Порядок чередования адреса при этом соответст- вует второй строке табл. 3.8, т. е. равен 04Н, ООН, ОСН, 08Н. Приведенный порядок чередования адреса в пакетной посылке характерен для всех про- цессоров Intel и совместимых с ними, начиная с i486. Буфера отложенной записи. Буфера отложенной записи предназначены для запоминания данных в буфере, если внешняя шина занята. Процессор i486 имеет четыре буфера отложенной записи. Информация в буфер записывает- ся за один такт. После окончания текущего цикла шины информация из бу- феров передается в память или УВВ. Внешние операции записи из буферов выполняются в том же порядке, в котором поступили запросы на запись. Но, если при неосвобожденных буферах все запросы на запись в память свя- заны с кэш-попаданиями, а запрос на чтение связан с кэш-промахом, то операция чтения может выполниться раньше, чем операции записи. Однако
Однокристальные универсальные микропроцессоры (старшие модели) 161 изменять порядок выполнения команд в МП больше, чем один раз, нельзя, поскольку новые прочитанные данные могут заменить модифицированную строку кэш-памяти, из которой возобновленная информация ожидает в бу- фере очереди на запись в основную память. В таком случае вторая попытка изменения последовательности команд может нарушить целостность дан- ных. Для операций ввода/вывода изменение последовательности команд не допускается, т. к. это может нарушить протокол обмена. OverDrive-процессоры предназначены для модернизации микропроцессорной системы или ПЭВМ. Модернизация осуществляется заменой начальной мо- дели МП на новые модели, так называемые OverDrive-процессоры, которые имеют более высокие технико-экономические показатели. Такими моделями для i486 являются Intel DX2 OverDrive, Intel DX4 OverDrive, Pentium OverDrive 63 и 83 МГц. Для модернизации микропроцессорной системы на системной плате, кроме уже установленного процессора, в дополнительный сокет (разъем), обозна- ченный как overdrive, устанавливается OverDrive-процессор в корпусе PGA- 169. OverDrive-процессор специальным выходным сигналом отсоединяет основной процессор, который остается на плате. Режим системного управления 32-разрядных микропроцессоров. Некоторые модификации процессоров i386 и i486, кроме перечисленных режимов (реального, защищенного и V86), имеют режим системного управления SMM (System Management Mode), который предназначен для управления энергопотреблением или выполнения программ, полностью изолированных как от прикладного программного обеспечения, так и от операционной сис- темы. Переключение в режим SMM осуществляется или аппаратно — пода- чей нулевого потенциала на вывод SMI микросхемы процессора, или, в некоторых моделях, программно —по принятию сообщения по шине APIC. При переходе в режим SMM МП выставляет сигнал подтверждения на кон- такте SMIACT . После этого процессор сохраняет свое состояние-----со- держимое почти всех регистров — в специальной области памяти SMRAM. Если режим SMM используется для отключения питания процессора с воз- можностью быстрого включения, память SMRAM должна быть энергонеза- висимой. В этой области памяти находится подпрограмма обработки пре- рывания SMI. Доступ к памяти разрешен только при наличии сигнала SMIACT . Возврат из режима SMM осуществляется как программно, так и по прерыванию. Контрольные вопросы и задания 1. Укажите назначения пакетного режима. 2. Объясните процесс пакетной передачи данных.
162 Гпава 3 3. Укажите назначения буферов отложенной записи. 4. В каких случаях может нарушаться порядок обслуживания запросов на запись и чтение в буферах отложенной записи? 5. Укажите назначения OverDrive-процессоров. 3.4. Особенности архитектуры микропроцессоров Pentium Микропроцессор Pentium представляет собой высокопроизводительный 32- разрядный процессор с внутренней 64-разрядной шиной данных. Процессор является продолжением разработок процессоров i80x86 и программно- совместимых с ними, но имеет ряд особенностей. В МП Pentium впервые применена 0,8 мкм BiCMOS-технология, которая объединяет преимущества двух технологий — быстродействие биполярной и малое энергопотребление CMOS. Использование субмикронной технологии позволило увеличить ко- личество транзисторов до 3,1 млн. Для сравнения: процессор 8086 содержит 29 тыс. транзисторов, а ближайший к Pentium процессор i486 — 1,2 млн транзисторов. Увеличение количества транзисторов (больше, чем в два раза) позволило разместить в одной микросхеме компоненты, которые ра- нее располагались в других микросхемах. Это уменьшило время доступа и увеличило производительность процессора. Высокая тактовая частота, су- перскалярная архитектура, раздельная кэш-память для программ и данных и прочие усовершенствования позволили достичь большей производитель- ности и совместимости с программным обеспечением, разработанным для микропроцессоров фирмы Intel. Микропроцессор Pentium предполагает ис- пользование таких операционных систем, как UNIX, Windows NT, OS/2, Solaris и NEXTstep. Рассмотрим особенности архитектуры. Структурная схема и характеристики. Обобщенная структурная схема МП Pentium (рис. 3.16) содержит: □ ШИ — 64-разрядный шинный интерфейс; □ два 32-разрядных целочисленных АЛУ; □ кэш-память команд; □ кэш-память данных; □ РОН; □ буфера выборки с опережением (БВО); О блок предсказания адреса перехода (БПАП); □ блок конвейерных вычислений с плавающей запятой (БКВПЗ).
Однокристальные универсальные микропроцессоры (старшие модели) 163 Рис. 3.16. Обобщенная структурная схема микропроцессора Pentium Шинный интерфейс предназначен для сопряжения внутренней шины про- цессора с внешней шиной. Расширенная 64-разрядная шина данных. Благодаря этому МП Pentium под- держивает несколько типов циклов шины, включая пакетный режим, при котором 256 бит даннььх передается в кэш-память данных за один цикл. Это существенным образом повышает скорость передачи по сравнению с про- цессором i486DX. Например, МП Pentium с частотой шины 66 МГц имеет скорость передачи 528 Мбайт/с, МП i486 DX с частотой шины 50 МГц 160 Мбайт/с. Расширенная шина данных обеспечивает конвейеризацию циклов шины, что увеличивает пропускную способность шины и позволяет второму циклу начинаться раньше, чем завершился первый. Суперскалярная архитектура. Термин "суперскалярная" означает микро- процессорную архитектуру, которая содержит более чем один вычисли- тельный блок. Процессор Pentium имеет два конвейера, которые могут вы- полнять две команды одновременно — U-конвейер с полным набором и V- конвейер с ограниченным набором команд. На рис. 3.16 конвейеры упро- щенно представлены двумя целочисленными АЛУ, РОН и БВО. Как и в слу-
164 Гпава 3 чае единственного конвейера процессора i486, двойной конвейер процессо- ра Pentium выполняет целочисленные команды в пять этапов (рис. 3.17): 1. Выборка с опережением команды из памяти (предвыборка) PF (PreFetch). 2. Декодирование команды (стадия 1) D1. 3. Декодирование команды (стадия 2) D2. 4. Выполнение команды ЕХ. \ 5. Запоминание результата в буфере отложенной записи WB (см. разд. 3.3). Рис. 3.17. Этапы выполнения целочисленной команды в процессоре Pentium Первый этап выполняется блоком БВО, который имеет четыре 32- разрядных буфера. Две независимые пары буферов выборки работают со- вместно с БПАП, который предсказывает, будет переход или нет. Если пе- реход не предполагается, продолжается выборка, если предполагается — разрешается работа другого буфера, и он начинает опережающую выборку с точки перехода. Если предусмотренный переход не осуществился, конвей- еры команд очищаются, и выборка начинается снова. На второй стадии деко- дирования команды формируются адреса операндов памяти. Каждый конвейер имеет свой 64-разрядный буфер отложенной записи, ко- торые могут заполняться за один такт, например, при одновременных кэш- промахах записи на обоих конвейерах. Никакие запросы на чтение не на-
Однокристальные универсальные микропроцессоры (старшие модели)165 рушают порядка запросов на запись, которые уже находятся в буфере. МП Pentium поддерживает строгий порядок записи. Высокопроизводительный арифметический сопроцессор БКВПЗ содержит 8-тактный конвейер и аппаратные средства реализации арифметических операций — умножения, сложения, деления. Большая часть операций с пла- вающей запятой может выполняться в одном целочисленном конвейере, по- сле чего они поступают в конвейер вычислений с плавающей запятой. Про- изводительность встроенного арифметического сопроцессора Pentium превышает производительность сопроцессора FPU-486 (Floating-Point Unit) в 2—10 раз. Использование двойного конвейера позволяет нескольким командам нахо- диться в разных стадиях выполнения и дополнительно увеличивает произво- дительность МП за счет полного заполнения конвейеров командами. В про- цессоре Pentium используется аппаратное выполнение арифметических операций, что также повышает производительность процессора. Раздельные кэш-памяти команд и данных. Микропроцессор Pentium имеет раз- дельные кэш-памяти команд и данных. Это позволяет избежать конфликтов между процессом выборки для одной команды и доступом к данных для дру- гой, которые могут возникать, например, в процессоре i486. При реализации раздельного кэширования команд и данных обе команды могут выполняться одновременно. Емкость кэш-памяти команд и кэш-памяти данных в процессоре Pentium одинакова и составляет 8 Кбайт. Кэш-память команд и данных выпол- нена по схеме двухвходовой ассоциативной кэш-памяти (см. разд. 4.5). Кэш- память данных имеет два интерфейса (по одному для каждого конвейера), что позволяет обеспечивать данными две отдельные команды на протяжении одно- го машинного цикла. Кэш-память данных работает с отложенной (до освобождения внешней ши- ны) записью и настраивается в режим сквозной или обратной записи. В по- следнем случае данные считываются из кэш-памяти, а после этого записы- ваются в основную память. Такой способ кэширования позволяет увеличить производительность по сравнению с простым кэшированием с непосредст- венной записью, при котором процессор записывает данные одновременно в кэш-память и основную память. Кэш-память данных поддерживает прото- кол MESI. Этот протокол обеспечивает роботу с учетом возможности об- ращения других процессоров к кэш-памяти данных. Название протокола MESI состоит из названий состояний строки кэш-памяти: М (Modified), Е (Exclusive), S (Shared), I (Invalid). Состояния строки кэш-памяти определя- ются следующим образом: □ М-состояние — строка, имеющаяся только в кэш-памяти рассматривае- мого процессора. Строка модифицирована, т. е. отличается от содержи- мого основной памяти. Запись в нее возможна без генерации внешнего (относительно локальной шины) цикла обращения;
166 Гпава 3 □ Е-состояние — строка, имеющаяся только в кэш-памяти рассматривае- мого процессора, но не модифицированная. Запись в строку возможна без генерации внешнего цикла обращения. При записи в строку она пе- рейдет в М-состояние', О S-состояние — строка находится в кэш-памяти рассматриваемого про- цессора и потенциально может находиться в кэш-памяти других процес- соров. Ее чтение возможно без генерации внешнего цикла, а запись должна сопровождаться сквозной записью в основную память, которая вызовет аннулирование соответствующих строк в кэш-памяти других процессоров; О 1-состояние — строка, отсутствующая в кэш-памяти, ее чтение из основ- ной памяти может привести к генерации цикла заполнения строки кэш- памяти. Запись в строку кэш-памяти сквозная с использованием внешней шины. Поддержка мультипроцесорного режима работы. Архитектура Pentium по- зволяет работать двум и больше Pentium-процессорам в мультипроцессор- ных системах. Начиная со второго поколения в МП Pentium реализован ин- терфейс построения двухпроцессорных систем с симметричной архитектурой. Средства задания размера страницы памяти. Pentium-процессор имеет оп- цию (специальный бит управления) для выбора размера страниц памяти — традиционную (4 Кбайт) и расширенную (4 Мбайт). Увеличение размера страницы целесообразно при использовании громоздких графических при- ложений. Средства выявления ошибок и тестирования с помощью функциональной избыточности. С целью повышения надежности в процессоре Pentium предусмотрено выявление ошибок внутренних устройств (внутренний контроль паритета) и внешнего шинного интерфейса, контроль паритета шины адреса и тестирование с помощью функциональной избыточности. Внутреннее выявление ошибок состоит в дополнении кодов команд и дан- ных битом четности, что позволяет определять ошибки незаметно как для системы, так и для пользователя. Тестирование с помощью функциональной избыточности используется в программных приложениях, в особенности критических к достоверности результатов. Тестирование с помощью функциональной избыточности базируется на работе двух Pentium- процессоров в конфигурации главный/контролируещий (mas ter/checker). В такой конфигурации основной процессор работает в обычном однопро- цессорном режиме. Контролируещий процессор выполняет те же опера- ции, но не управляет шиной, и сравнивает выходные сигналы основного процессора с теми сигналами, которые он сам генерирует. В случае рас- хождения полученных результатов формируется сигнал ошибки, который
Однокристальные универсальные микропроцессоры (старшие модели)167 может обрабатываться системой как прерывание. Такой способ позволяет выявить свыше 99% ошибок. Кроме того, средства тестирования преду- сматривают возможность выполнения встроенного теста BIST (Built In Self Test), что обеспечивает выявление ошибок мнемокодов, программи- руемых логических матриц, тестирование кэш-памяти команд и данных, адресных буферов и ПЗУ. В целом самотестирование охватывает свыше 70% узлов процессора. Все процессоры имеют стандартный тестовый порт IEEE 1149.1 для самотестирования с помощью последовательного интер- фейса тестирования цифровых устройств JTAG. Особенностями процессоров Pentium являются: □ наличие нескольких новых команд, в том числе распознавания модели процессора; □ наличие средств управления энергопотреблением; □ применение конвейерной адресации шинных циклов; □ сокращенное время (количество тактов) выполнения команд; □ трассировка команд и мониторинг производительности; □ расширение возможностей виртуального режима — наличие виртуально- го флага прерывания; Реализованы новые дополнительные средства отладки: □ зондированный режим (Probe Mode), обеспечивающий доступ к внутрен- ним регистрам, УВВ и системной памяти процессора. Этот режим позво- ляет проверять и изменять состояние процессора с помощью средств отладки программ с возможностями, подобными возможностям внутри- схемных эмуляторов; □ расширенные отладки (DE, Debug Extensions), которые позволяют уста- навливать контрольные точки по адресам команд ввода/вывода; □ внутренние счетчики, используемые для текущего контроля производи- тельности и учета количества событий; □ пошаговое выполнение с помощью команды cpuid. Расширение архитектуры. Дополнительно к базовой архитектуре 32- разрядных процессоров Pentium имеет набор регистров, специфических для модели — MSR (Model Specific Registers). Состав регистров MSR может быть разным в разных моделях МП (Pentium и Pentium Pro), что приводит к их возможной несовместимости. Программное обеспечение, которое ис- пользует регистры MSR, должно использовать сведения о процессоре, по- лученные с помощью команды cpuid.
168 Гпава 3 В состав регистров MSR входят: □ тестовые регистры TR1—TR12; □ средства мониторинга производительности; □ регистры-защелки адреса и данных цикла, вызвавшего срабатывание контроля машинной ошибки. Тестовые регистры позволяют управлять большинством функциональных узлов процессора, обеспечивая возможность подробного тестирования их работоспособности. С помощью битов регистра TR12 можно запретить но- вые архитектурные свойства (предсказание и трассировку разветвлений, па- раллельное выполнение команд), а также работу кэш-памяти. Средства мониторинга производительности позволяют оптимизировать аппаратное и программное обеспечение благодаря выявлению в про- граммном коде потенциально "узких мест". Разработчик может наблюдать и подсчитывать такты внутренних процессорных событий, которые влия- ют на производительность операций чтения и записи, "удачные" и "неудачные" обращения к кэш-памяти, прерывания, использование шины. Это позволяет оценивать эффективность программного кода и добиваться максимальной производительности программных приложений. Средства- ми мониторинга производительности являются таймер реального времени и счетчики событий. Таймер TSC (Time Stamp Counter) выполнен на базе 64-разрядного счетчика, содержимое которого инкрементируется с каж- дым тактом работы процессора. Для чтения его содержимого предназна- чена команда rdtsc. 40-разрядные счетчики событий CTRO, CTR1 про- граммируются на подсчет событий разных классов, связанных с шинными операциями, выполнением команд, работой конвейеров, кэш-памяти, кон- тролем точек останова и т. п. Шестибитовые поля типов событий позво- ляют каждому из счетчиков независимо подсчитывать события из боль- шого списка. Состояние счетчиков можно предварительно устанавливать и считывать программно. Кроме того, существуют внешние линии РМ1— РМО, которые программируются на указание фактов срабатывания или переполнения соответствующих счетчиков. Названия регистров-защелок адреса и данных цикла, вызвавшего срабатыва- ние контроля машинной ошибки, могут быть несовместимы для разных клас- сов (Pentium и Pentium Pro) или даже для разных моделей процессоров. Программа, которая их использует, должна обратиться к сведениям о про- цессоре по команде cpuid. Процессоры Pentium имеют возможность уменьшать энергопотребление в нерабочем режиме. По сигналу STOPCLK# процессор выгружает буфера отложенной записи и переходит в режим Stop Grant, в котором прекращает- ся тактирование большинства узлов процессора, что приводит к снижению
Однокристальные универсальные микропроцессоры (старшие модели) 169 потребления приблизительно в 10 раз. В этом состоянии МП прекращает выполнение команд и не обслуживает прерывания, однако продолжает на- блюдение за шиной данных. Из этого состояния процессор выходит по окончанию сигнала STOPCLK#. Управление сигналом STOPCLK# с ис- пользованием режима SMM реализует механизм расширенного управления питанием АРМ (Advanced Power Management). Для замедления процессора с пропорциональным снижением потребляемой мощности сигнал STOPCLK# должен быть периодическим импульсным. Скважность импульсов опреде- ляет коэффициент простоя процессора и его производительность. В состояние пониженного энергопотребления Auto HALT PowerDown про- цессор переходит во время выполнения команды halt. В этом состоянии процессор реагирует на все прерывания и также продолжает наблюдение за шиной. В режиме прекращения внешней синхронизации процессор потребляет ми- нимальную мощность, но не выполняет никаких функций. Последующая подача сигнала синхронизации должна сопровождаться сигналом аппарат- ного сброса RESET. Основные технические характеристики процессоров Pentium приведены в табл. 3.9. Процессоры Pentium Р5 с тактовой частотой 60 и 66 МГц имеют напряжение питания 5В и требуют принудительного охлаждения. Эти процессоры вы- пускаются в корпусах PGA-273 (матрица 21x21). Процессоры Pentium Р54 с тактовой частотой 75—200 МГц имеют напряже- ние питания 3,3 В, что снижает мощность тепловыделения. Процессоры со- держат расширенные средства управления энергопотреблением SMM. Средства внутреннего умножения частоты позволяют реализовать работу внешней системной шины на частотах 50, 60 и 66,6 МГц, а ядра процессо- ра — на частотах 75, 90, 100, 120, 133, 150, 166, 200 МГц. Процессоры могут работать в двупроцессорных системах, поддерживая режим SMP (Symmetric Multi-Processing) или тестирования с помощью функциональной избыточ- ности FRC (Functional Redundancy Checking). В режиме SMP каждый про- цессор выполняет свою задачу, но оба используют общие ресурсы компью- тера, включая память и внешние устройства. В каждый момент времени шиной может руководить только один процессор из двух, однако они могут меняться местами. Для реализации двухпроцессорного режима введен рас- ширенный программируемый контроллер прерываний — APIC (Advanced Programmable Interruption Controller). Этот контроллер имеет внешние сиг- налы локальных прерываний LINT [1:0] и трехпроводную интерфейсную шину (PICD [1:0] и PICCLK), по которой оба процессора соединяются с контроллером APIC системной платы. Запросы локальных прерываний об-
170 Гпава 3 служиваются лишь тем процессором, на выводы которого (LINTO, LINT1) поступают их сигналы. Режим обработки аппаратных прерываний APIC разрешается сигналом APICE; в дальнейшем он может быть запрещен про- граммно. Таблица 3.9. Основные технические характеристики процессоров Pentium Процессор Разрядность Емкость кэш- памяти, Кбайт Пред- сказа- ние пе- реходов Под- держка ММХ Частота, МГц 1Pe- гистры Шина дан- ных Шина ад- реса шины процес- сорного ядра I 2 3 4 5 6 7 8 9 Pentium (1 поколение) 32 64 32 L1: 2x8 + - 60 66 60 66 Pentium (2 поколение) .32 64 32 LI: 2x8 + 50 60 66 75 90 100 120 133 150 166 180 200 Pentium OverDrive 32 64 32 L1: 2x8 + - 60 66 120 133 Pentium MMX 32 64 32 Ll:2x 16 + + 66 166 200 233 Pentium Pro 32 64 36 L1: 2x8 L2: 256 (512) + — 50 60 66 150 166 180 200 Pentium II OverDrive 32 64 36 L1: 2х 16 L2: 512 + + 66 333 Pentium II 32 64* 64 36 Ы:2х16 L2: 512 + + 66 100 233 266 300 350 400 450
Однокристальные универсальные микропроцессоры (старшие модели) 171 Таблица 3.9 (продолжение) Процессор Разрядность Емкость кэш- памяти, Кбайт Пред- сказа- ние пе- реходов Под- держка ММХ Частота, МГц Ре- гистры Шина дан- ных Шина ад- реса шины процес- сорного ядра I 2 3 4 5 6 7 8 9 Pentium III 32 64* 64 36 L1 2х 16, L2 256 (512) + + 100 (133) 450 500 533 550 600 650 667 700 733 750 800 850 866 933 1000 ИЗО Pentium II Xeon 32 64* 64 36 Ы:2х16, L2: 512 (1024) + + 66 100 233 266 300 350 400 Pentium III Xeon 32 64* 64 36 Ы:2х 16, L2: 256 (1 Мбайт) (2 Мбайт) 4- + 100 (133) 550 600 650 667 700 733 750 800 866 933 1000
172 Гпава 3 Таблица 3.9 (продолжение) Процессор Разрядность Емкость кэш- памяти, Кбайт Пред- сказа- ние пе- реходов Под- держка ММХ Частота, МГц Ре- гистры Шина дан- ных Шина ад- реса шины процес- сорного ядра I 2 3 4 5 6 7 8 9 Celeron 32 64* 64 36 L1: 2х х 16, L2: 128** + + 66 233 266 300 350 400 450 500 533 566 600 633 667 700 AMDK5 32 64 32 L1:16/8 + 50 60 66 75 90 100 120 133 166 AMD К6-2 32 64 36 Ы:2х х 32 + + 3DNow! 66 100 200 300 333 350 366 400 450 475 500 550 AMD К6-2+ 32 64 36 Ы:2х х 32, L2: 128 + + 3DNow! 66 100 450— 550 AMD K6-II1 32 64 36 Ll:2x х 32, L2: 256 + + 3DNow! 66 100 350— 475
Однокристальные универсальные микропроцессоры (старшие модели) 173 Таблица 3.9 (окончание) Процессор Разрядность Емкость кэш- памяти, Кбайт Пред- сказа- ние пе- реходов Под- держка ММХ Частота, МГц Ре- гистры Шина дан- ных Шина ад- реса шины процес- сорного ядра 1 2 3 4 5 6 7 8 9 Cyrix 6 х 86МХ 32 64* 64 36 L1: 16 + + 60 66 75 83 166 200 233 266 Cyrix 6 х 86MIIxxxGP 32 64* 64 36 L1: 16 + + 66 75 83 300— 433 VIA Cyrix III 32 64* 64 36 L1: 2x64 + + 3DNow! 66 100 133 500— 600 Примечание. * Разрядность 64 имеют только регистры ММХ. ** Celeron 266 и 300 кэш-памяти уровня L2 не имеют. Первый уровень Ы— раздельная кэш-память команд и данных. Pentium OverDrive-процессоры с частотами 120 и 133 МГц — варианты про- цессоров Pentium второго поколения со сниженным энергопотреблением и удвоением частоты; предназначены для замены процессоров Pentium первого поколения. Эти процессоры дороже, чем обычные Pentium 120 или 133 МГц. Их применение целесообразно лишь тогда, когда по какой-то причине невозможно заменить системную плату, а производительность Pentium 60 или 66 МГц недостаточна. Pentium OverDrive 125, 150 и 166 МГц предназначены для замены процессоров первого поколения с частотами 75, 90 и 100 МГц. Процессор Pentium Pro (Р6). В этом процессоре применено динамическое выполнение команд, т. е. комбинация средств предсказания множественных ветвлений, анализа прохождения данных и виртуального выполнения, при котором в процессоре команды могут выполняться не в таком порядке, как предусмотрено программным кодом. При этом команды, которые не зави- сят от результатов предыдущих операций, могут выполняться в измененном порядке, но последовательность записи результатов в память и порты будет
174 Гпава 3 соответствовать начальному программному коду. Возможность выполне- ния команд с опережением (спекулятивное выполнение), переупорядочива- ние команд в случае, если команда в одном конвейере будет выполнена бы- стрее, чем предшествующая во втором конвейере, и предсказание переходов при динамическом выполнении повышает производительность вычислений. Процессор поддерживает режим тестирования с помощью функциональной избыточности FRC. Архитектура процессора позволяет объединение в сим- метричную мультипроцессорну систему до четырех процессоров на одной шине. Суммарная пропускная способность повышена за счет двойной неза- висимой шины. Одна шина (системная) выполняет функцию взаимодейст- вия ядра процессора с основной памятью и интерфейсными устройствами, вторая — исключительно функцию обмена с кэш-памятью. Первая шина работает на тактовой частоте процессора, вторая — на частоте системы. Такое разделение шин позволяет в три раза ускорить обмен процессора с памятью. Благодаря этому отпадает необходимость отдельной внешней кэш-памяти. Микропроцессор содержит раздельные кэш-памяти первого уровня (L1) для данных и команд емкостью 8 Кбайт каждая и объединенную кэш-память второго уровня (L2). Кэш-память данных первого уровня под- держивает одну операцию чтения и одну операцию записи за такт. Интер- фейс кэш-памяти второго уровня работает с тактовой частотой процессора и может передавать 64 бит за один такт. Емкость кэш-памяти второго уров- ня составляет 256 Кбайт (при технологии 0,6 мкм) и 512 Кбайт (при техно- логии 0,35 мкм). Процессоры Pentium MMX (Р55С) — это процессоры, ориентированные на мультимедийное, 2D- и ЗВ-графическое и коммуникационное применения. В архитектуру Pentium MMX дополнительно введены: □ восемь 64-разрядных MMX-регистров, расположенных в 64 младших разрядах 80-разрядных регистров стека блока вычислений с плавающей запятой;ы □ четыре новых типа данных (упакованные байты — 8 байт в 64-разрядном пакете; упакованные слова — четыре 16-разрядных слова в 64-разрядном пакете; упакованные двойные слова — два 32-разрядных двойных слова в 64-разрядном пакете; 64-разрядные слова); □ 57 дополнительных команд, которые делятся на следующие группы: об- мен данными между регистрами ММХ и целочисленными регистрами или памятью, арифметические (сложение и вычитание в разных режимах, умножение, комбинации умножения и сложения), сравнение, преобразо- вание форматов, логические, сдвиг (логический и арифметический), очи- стка регистров ММХ; □ удвоенные емкости кэш-памяти команд и кэш-памяти данных (16 Кбайт);
Однокристальные универсальные микропроцессоры (старшие модели) 175 □ улучшенная логика предсказания переходов; □ расширенная конвейеризация; □ более глубокая буферизация памяти (удвоенный размер буфера отло- женной записи). Арифметические и логические операции в процессоре Pentium ММХ вы- полняются параллельно над каждым байтом слова или двойного слова, рас- положенного в 64-разрядном MMX-регистре. Таким образом реализуется SIMD-модель обработки (Single Instruction — Multiple Data). В SIMD- командах обрабатывается одновременно 64 разряда, которые в зависимости от MMX-команды трактуются как восемь однобайтных операндов, четыре 2-байтных, два 4-байтных или один 8-байтный операнд. SIMD-обработка существенно ускоряет выполнение мультимедийных алгоритмов, для кото- рых характерным является выполнение идентичных операций над больши- ми массивами однотипных данных (например, 16-разрядными отсчетами оцифрованного звука, 8-разрядными кодами цвета пиксела и др.). Исполь- зование MMX-команд позволяет повысить скорость выполнения мультиме- дийных операций на 60% по сравнению с процессором Pentium первого по- коления при одинаковых тактовых частотах. В других командах обеспечивается совместимость с Pentium. Команды ММХ не влияют на фла- ги, не вызывают прерываний и исключений и доступны для любого режима работы процессора. Улучшенная логика предсказания переходов обеспечивается увеличенным количеством буферов выборки команд с опережением (БВО). Pentium ММХ имеет четыре 16-разрядных БВО. Расширенная конвейеризация обеспечивается увеличением этапов выполне- ния целочисленных программ в конвейере (см. рис. 3.17) до шести за счет прибавления этапа выборки (F) между этапами предвыборки (PF) и декоди- рования команды (D1). На этапе выборки выполняется декодирование дли- ны команды, которое в предшествующих моделях Pentium выполняется на этапе D1. Pentium ММХ имеет удвоенный по сравнению с Pentium размер обоих час- тей кэш-памяти L1 и L2. Однако в процессоре Pentium ММХ нет режима тестирования с помощью функциональной избыточности FRC. В двупро- цессорных системах поддерживается лишь режим SMP. Pentium® OverDrive® ММХ процессоры — вариант процессоров Pentium ММХ с тактовыми частотами 150, 166, 180 и 200 МГц для замены обычных (без расширения ММХ) процессоров Pentium 75—200 МГц. Они отличаются фиксированным коэффициентом умножения частоты (3) и отсутствием дву- процессорных режимов. Процессоры Pentium для мобильных применений (блокнотных персональных компьютеров) имеют сниженное энергопотребление вследствие снижения
176 Глава 3 напряжения питания ядра процессора. Они характеризуются более высокой допустимой температурой, что дает возможность использовать их в более жестких условиях эксплуатации. Эти процессоры не поддерживают двупро- цессорный режим, не имеют расширенного программируемого контроллера прерываний APIC и соответствующих внешних выводов. Процессор Pentium II имеет 36-разрядную шину адреса, что позволяет адре- совать физическую память емкостью 64 Гбайт. Частота ядра процессора составляет 233, 266, 300 и 450 МГц, частота шины — 66,66 и 100 МГц. Высо- кая производительность процессора достигается применением в нем дина- мического выполнения команд, расширения ММХ и двойной независимой шины. Кэш-память первого уровня (L1) увеличена до 32 Кбайт (16 Кбайт — кэш- память команд, 16 Кбайт — кэш-память данных). Кэш-память второго уровня (L2) расположена на одной плате с процессором. Процессор Pentium III выполнен по технологии SSE (Streaming SIMD Extensions). В Pentium III реализовано 70 новых SIMD-команд, которые оперируют с 128-разрядными регистрами XMM0—ХММ7. Таким образом, выполняя операцию над двумя регистрами, SSE фактически оперирует четырьмя парами чисел. Благодаря этому процессор может выполнять до четырех операций одновременно, что является полезным в таких примене- ниях: □ трехмерная графика и моделирование с использованием вычислений в формате с плавающей запятой; □ обработка сигналов и моделирование процессов с широким диапазоном изменения параметров; □ генерация трехмерных изображений в программах реального времени; □ алгоритмы кодирования и декодирования видеосигналов с блочной об- работкой; □ числовые алгоритмы цифровой фильтрации, которые работают с пото- ками данных. Кроме рассмотренных процессоров фирмы Intel, существуют процессоры других компаний, аналогичные по производительности Pentium — AMD (AMD К5 PR 75/90/100, AMD Кб), CYRIX (Cx86 (Ml), CYRIX 6x86, P120+, P133+, P150+, P166+, P200+, CYRIX 6x86MX, CYRIX MediaGX), Hewlett Packard (Merced (P7), PA RISC, PA-8000), DEC (Alpha 21068, 21164, 21264). Процессоры AMD K5 PR75/90/100/120/133/166 выполнены по гибридной CISC/RISC-архитектуре и имеют усложненный конвейер с пятью блоками обработки, функционирующими параллельно. В отличие от Pentium, в этих процессорах могут одновременно выполняться команды с плавающей запя-
Однокристальные универсальные микропроцессоры (старшие модели) 177 той, загрузки (хранения) и перехода. Большой набор и возможность дина- мического переименования регистров и наличие блока загрузки (хранения) позволяют выполнять две операции за один цикл выборки из памяти. В процессоре используется предсказание ветвлений и изменения порядка выполнения команд. Кэш-память команд имеет емкость 16 Кбайт; кэш- память данных — 8 Кбайт. Процессоры AMD-Кб ММХ имеют раздельные кэш-память данных и команд первого уровня емкостью по 32 Кбайт. Кэш-память данных поддерживает обратную запись. Кэш-память команд имеет дополнительную область для предварительно декодированных команд. Каждая команда имеет биты пе- редекодирования, которые указывают на смещение начала следующей ко- манды в кэш-памяти. Внутренней кэш-памяти второго уровня нет. Процес- сор поддерживает логику предсказания ветвлений, используя таблицу истории ветвлений из 8192 элементов; кэш-память адресов перехода и стек возврата, которые обеспечивают вероятность правильного предсказания перехода свыше 95%. В отличие от процессоров Intel Р54 и Р55, процессор AMD-Кб ММХ не имеет встроенных средств поддержки мультипроцессорных систем, включая APIC. В нем нет сигнала проверки шинных операций (BUSCHK) и зондиро- ванного режима, а также не выводятся сигналы точек останова и мониторин- га производительности. В процессоре используется спекулятивное выпол- нение с изменением последовательности команд, предварительная пересылка данных, переименование регистров. Процессоры AMD-K6-2 с технологией 3DNow! выполнены по 0,25 мкм техно- логии. Они характеризуются быстродействующей встроенной кэш-памятью второго уровня емкостью 256 Кбайт и кэш-памятью первого уровня емкостью 64 Кбайт. Процессор имеет^ эффективную RISC-архитектуру и улучшенный блок вычислений с плавающей запятой. Частота ядра процессора составляет от 300 до 400 МГц. Частота шины — 100 МГц. Процессоры Cyrix 6x86 (Ml) имеют возможность динамического переиме- нования регистров, изменения порядка выполнения команд, спекулятивное выполнение, предсказание переходов. Процессоры содержат две кэш- памяти: унифицированную кэш-память емкостью 16 Кбайт, используемую как для команд, так и для данных, и дополнительную 256-байтную кэш- память команд. Отдельная кэш-память команд позволяет устранить кон- фликты при обращении к данным и командам в общей кэш-памяти. Процес- сор способен одновременно выполнять целочисленные команды и команды с плавающей запятой. Этапы цикла выполнения команды: □ выборка команды F; □ декодирование команды (стадия 1) D1;
178 Гпава 3 □ декодирование команды (стадия 2) D2; □ вычисление адреса (стадия 1)АСС1; □ вычисление адреса (стадия 2) АСС2; □ выполнение ЕХ; □ запись результата WB. Этапы декодирования и вычисления адреса конвейеризированы, причем обеспечена возможность переупорядочения команд на этапах ЕХ и WB. Существует версия низковольтных процессоров для мобильных приме- нений. Процессор Cyrix 6х86МХ — усовершенствованный вариант процессора Ml, в который дополнительно введена возможность выполнения набора из 57 мультимедийных команд, совместимых с MMX-расширением, и повышена тактовая частота. Процессор содержит две кэш-памяти: 4-входовую ассо- циативную кэш-память емкостью 64 Кбайт с обратной записью и высоко- скоростную кэш-память команд емкостью 256 байт. Для мобильных приме- нений предусмотрена эффективная система управления энергопотреб- лением. Контрольные вопросы и задания 1. Какие операционные системы могут использоваться в МП Pentium? 2. Назовите назначения основных блоков структурной схемы процессора Pentium. 3. Объясните работу блока предсказания адреса перехода на примере вы- полнения команды JC LABEL. 4. Какой эффект имеет разделение кэш-памяти на кэш-память команд и кэш-память данных? 5. Какие средства выявления ошибок имеет процессор Pentium? 6. В чем состоит принцип тестирования с помощью функциональной из- быточности? 7. Какие функции тестирования имеет процессор Pentium? 8. Укажите назначение и возможности средств мониторинга производи- тельности. 9. Укажите назначение и принцип режима ММХ. 10. Укажите назначение и принцип режима SMM. 11. Как осуществляется переключение в режим сниженного энергопотреб- ления и выход из него?
Однокристальные универсальные микропроцессоры (старшие модели) 179 3.5. Особенности архитектуры 64-разрядных микропроцессоров В 1997 году компании Intel и Hewlett-Packard разработали новую микропро- цессорную архитектуру EPIC (Explicitly Parallel Instruction Computing — явно- го параллельного вычисления инструкций), которая была положена в основу 64-разрядных микропроцессоров IA-64, McKinley, Itanium, Itanium 2. Особенностями архитектуры EPIC являются: □ большое количество регистров общего назначения. МП IA-64 содержит 128 64-разрядных регистров для операций с целыми числами и 12 880 — с дробными; □ поиск зависимостей между командами, причем поиск выполняется не процессором, а компилятором. Команды МП IA-64 группируются ком- пилятором в "связку" длиной в 128 бит. Связка содержит 3 команды и шаблон, в котором указаны зависимости между командами (т. е. опреде- ляется, можно ли команду к2 запустить параллельно команде к1, или же к2 должна выполняться только после к1), а также между другими связка- ми (можно ли с командой кЗ из связки cl запустить параллельно команду к4 из связки с2); □ масштабируемость архитектуры, т. е. приспособление набора команд к большому количеству функциональных устройств. Например, одна связ- ка из трех команд соответствует набору из трех функциональных уст- ройств процессора. Процессоры IA-64 могут содержать разное количест- во таких функциональных устройств, оставаясь при этом совместимыми по программному коду, поскольку вследствие того, что в шаблоне указа- на зависимость и между связками, процессору с N одинаковыми блоками из трех функциональных устройств будет соответствовать командное слово из 3N команд (N связок); □ предикация (Predication). Предикацией называется способ обработки ус- ловных разветвлений. Команды из разных ветвей условного ветвления обозначаются предикатными полями (полями условий) и выполняются параллельно, но их результаты не записываются, пока значения преди- катных регистров не определены. Если в конце цикла определяется усло- вие ветвления, один из предикатных регистров, соответствующий "пра- вильной" ветви, устанавливается в единицу, а второй — в ноль. Перед записью результатов процессор проверяет предикатное поле и записы- вает результаты лишь тех команд, предикатное поле которых содержит единицу; □ загрузка по предположению (Speculative loading). Этот механизм предна- значен для снижения простоев процессора, связанных с ожиданием вы-
180 Гпава 3 полнения команд загрузки из относительно медленной основной памяти. Компилятор перемещает команды загрузки данных из памяти так, чтобы они выполнились как можно раньше. Тогда в случае, если для выполне- ния какой-либо команды МП понадобятся данные из памяти, процессор не будет простаивать. Процессор Itanium 2, выполненный по 0,18 мкм технологии, способен выполнять шесть команд за один машинный цикл. В совокупности с повы- шением тактовой частоты и пропускной способности системной шины (6,4 Гб/с, частота шины — 400 МГц, разрядность шины — 128), этот фактор обеспечивает в 1,5—2 раза большую производительность, чем в первом Itanium. Процессор имеет большой объем кэш-памяти третьего уровня (до 3 Мбайт), расположенной на кристалле и работающей на частоте ядра. В 2003 году на рынке появились процессоры, сделанные по 0,12 мкм техно- логии: □ Deerfield, предназначенный для использования в двухпроцессорных сис- темах; □ Madison, ориентированный на мультипроцессорные системы. Следующий процессор, Montecito, будет производиться с использованием 90 нм технологии. 64-разрядные МП семейства Hammer, разработанные фирмой AMD, бази- руются на архитектуре х86-64, которая является расширением архитектуры 32-разрядных процессоров х86-32 (рис. 3.18). Рис. 3.18. Архитектура процессоров х86-64 Program Counter 63 31 0 I
Однокристальные универсальные микропроцессоры (старшие модели) 181 Регистры общего назначения (GPR) дополнены еще 8 регистрами R8—R15, используемыми в 64-разрядном режиме, а существующие EAX, ЕВХ и дру- гие расширены с 32 до 64 разрядов. В блок SSE (Streaming SIMD Extensions) в дополнение к восьми 128-разрядных регистрам ХММО—ХММ7, введены восемь новых регистров ХММ8—ХММ15, что обеспечит поддержку SSE2 путем увеличения SIMD-команд. 63 31 15 J О RAX | EAX 1 АН | | Рис. 3.19. Расширение регистров общего назначения Процессор, построенный на основе х86-64, может выполнять существующие 32-разрядные приложения в отличие от, например, Intel Itanium, в котором систему команд х86-32 необходимо эмулировать. Контрольные вопросы и задания 1. Сравните архитектуры 64-разрядных МП. 2. Объясните положительный эффект предикации. 3. Укажите особенности архитектуры EPIC.
Глава 4 Построение модулей памяти микропроцессорных систем 4.1. Классификация систем памяти Система памяти является функциональной частью МПС, предназначенной для записи, хранения и выдачи информации. Технические средства, реали- зующие функции памяти, называются запоминающими устройствами (ЗУ). Одним из классификационных признаков ЗУ является физическая природа среды, используемой для хранения информации. По этому признаку выде- ляют следующие виды ЗУ: электронные; на устройствах с зарядовой связью (УЗС); магнитные; на цилиндрических магнитных доменах; ультразвуковые линии задержки (магнитострикционные, кварцевые, из специальных сплавов стекла); криогенные; голографические. По скорости обмена информацией с АЛУ различают следующие типы па- мяти (рис. 4.1): сверхоперативное ЗУ (СОЗУ) или регистровая память, внут- ренняя кэш-память, внешняя кэш-память, оперативное ЗУ (ОЗУ), постоян- ное ЗУ (ПЗУ), внешнее ЗУ (ВЗУ). П Сверхоперативное запоминающее устройство, или регистровая память микропроцессора представляет собой совокупность регистров общего на- значения. Обращение к СОЗУ не требует от МП выставления адреса на шину АВ при считывании/записи информации, поэтому операции с этим типом памяти являются наиболее быстродействующими. Время выборки СОЗУ составляет 5—7 нс. Общее количество 8- или 16-разрядных регист- ров в МП обычно составляет от 16 до 128. П Внутренняя кэш-память — это оперативное ОЗУ статического типа ем- костью 1-5-16 Кбайт, встроенное непосредственно в МП. Внутренняя кэш-память работает на тактовой частоте процессора. В моделях i386, i486 кэш-память — общая для данных и команд. В МП Pentium кэш- память состоит из двух блоков — отдельно для команд и данных.
184 Гпава 4 Рис. 4.1. Типы памяти в МПС □ Внешняя кэш-память так же, как и внутренняя, представляет собой ОЗУ статического типа, однако имеет значительно большую емкость. Она ус- танавливается на системной плате и работает на частоте шины. Внешняя кэш-память предназначена для уменьшения количества обращений к другим менее быстродействующим устройствам памяти. Емкость внеш- ней кэш-памяти в современных ПЭВМ составляет обычно 64 Кбайт — 1 Мбайт и имеет тенденцию к увеличению. □ Оперативная память — это ОЗУ статического или динамического типа. В микросхемах статического типа элементом памяти является триггер на биполярных транзисторах или транзисторах со структурой металл- диэлектрик-полупроводник (МДП). В ОЗУ динамического типа элемен- том памяти является конденсатор. Оперативная память предполагает из- менение содержимого в ходе выполнения процессором вычислительных операций с данными и может работать в режиме записи, считывания и хранения информации. Оперативная память предназначена для хранения переменной информации — текущих данных, результатов вычислений. Ее объем составляет 1 + 64 Мбайт, время доступа 70—200 нс. Оператив- ное запоминающее устройство является энергозависимым, поскольку за- писанная в нем информация теряется при отключении питания. □ Постоянное ЗУ представляет собой специальную микросхему, содержа- щую информацию, которая не должна изменяться в процессе выполнения программы. Эта информация заносится в ПЗУ при изготовлении или на этапе его программирования в специальном устройстве — программато- ре, и в процессе работы микропроцессорной системы может только счи-
Построение модулей памяти микропроцессорных систем 185 тываться. Постоянная память в МПС работает в режимах хранения и считывания и используется для хранения таблиц, констант, кодов команд программ, стандартных подпрограмм, например, подпрограмм BIOS, DOS. Как правило, ПЗУ имеет емкость 64 -ь 128 Кбайт. БИС ПЗУ явля- ются энергонезависимым, т. к. записанная в них информация сохраняется и при отключении питания микросхем. □ Внешнее ЗУ реализуется в виде накопителей со сменными и постоянными носителями: на жестких и гибких магнитных дисках, стриммерах, оптиче- ских и лазерных компакт-дисках (CD-ROM). Устройства памяти этого ти- па характеризуются самой малой скоростью обмена информацией, однако обладают наибольшей емкостью. Емкость накопителей на жестких дисках составляет 1 -ь 100 Гбайт. Низкое быстродействие внешних ЗУ на магнит- ных носителях обусловлено наличием электромеханических устройств. Наличие того либо иного типа памяти вне микросхемы МП (см. рис. 4.1) обуславливается функциональным назначением МПС. Запоминающие устройства характеризуются следующими основными пара- метрами: О разрядностью данных (определяется разрядностью ячейки памяти); □ информационной емкостью (определяется количеством единиц информа- ции в битах, которое ЗУ может сохранять одновременно). Информаци- онную емкость часто обозначаютNxn, где п — разрядность шины дан- ных; N—количество n-разрядных слов. Так, запись значения инфор- мационной емкости ЗУ 2048 х 8 или 2К х 8 обозначает, что ЗУ может со- хранять 2048 байт или 16384 бит; □ временем выборки (определяется как интервал от момента выдачи запроса на передачу данных из памяти до момента появления информации на выходе ЗУ); □ продолжительностью цикла обращения (цикла памяти) /ц (определяется минимально допустимым интервалом времени между двумя последова- тельными обращениями к ЗУ); □ напряжением питания £Л1ит> □ мощностью энергопотребления Лот (определяется произведением тока потребления и напряжения источника питания). Для некоторых типов ЗУ приводят два значения мощности энергопотребления — одно для режима обращения, когда осуществляется запись или считывание, другое — для режима хранения. Мощность энергопотребления в режиме хранения, как правило, существенно меньше мощности энергопотребления в режиме обращения; □ удельной стоимостью (определяется отношением стоимости ЗУ к его ин- формационной емкости).
186 Гпава 4 Контрольные вопросы и задания 1 . Дайте определения и приведите примеры энергозависимых и энергоне- зависимых ЗУ. 2 . Назовите типы систем памяти. 3 . Сравните по быстродействию типы систем памяти. 4 . Определите информационную емкость в битах и количество линий шины данных для ЗУ, обозначенных: а) 1024 х 8; б) 4048 х 16. 5 . Как определяется удельная стоимость ЗУ? 4.2. Построение модуля постоянного запоминающего устройства Основной составной частью ПЗУ является элемент памяти, который хранит 1 бит информации. Элементы памяти объединены в матрицу накопителя информации. Совокупность из п элементов памяти, в которой размещается «-разрядное слово, называется ячейкой памяти, при этом величина п опре- деляет разрядность ячейки. Количество ячеек памяти равно 2,п, где т — количество адресных входов, а информационная емкость микросхемы — 2'" х п бит. Каждая ячейка памяти имеет свой адрес. Большинство ПЗУ име- ют словарную организацию, т. е. предполагают параллельное считывание п разрядов слова D,f l—Do. Для считывания информации из ячейки необходимо на адресные входы микросхемы ПЗУ подать разряды кода адреса А„,_|—Ао, которые через де- шифратор строк выбирают соответствующую ячейку. Считывание инфор- мации происходит при активном (нулевом) уровне сигнала CS . При CS = 1 выходы D„_]—Do находятся в третьем (высокоимпедансном) состоянии — z-состоянии. Если ЗУ имеет выходы с тремя состояниями или с открытым коллектором, то выход БИС ПЗУ может быть соединен непосредственно с шиной. Если на выходе БИС ПЗУ нет активных устройств, используют под- тягивающие резисторы, включение которых обеспечивает высокий уровень выходного сигнала. Если ЗУ не имеет выходов с тремя состояниями, то не- обходимо применять микросхемы шинных формирователей, например, БИС i8286 или К580ВА86. По способу программирования, т. е. по способу занесения информации в ЗУ, различают следующие типы ПЗУ: масочные однократно программи- руемые; многократно программируемые с ультрафиолетовым стиранием; многократно программируемые с электрическим стиранием или флэш- память (см. главу 10, том 2 книги ''Цифровые устройства”, В. И. Бойко и др., СПб.: БХВ-Петербург, 2004).
Построение модулей памяти микропроцессорных систем 187 Рассмотрим построение модуля ПЗУ МПС на базе 8-разрядных процессо- ров. Схему (рис. 4.2) модуль ПЗП имеет в том случае, если разрядность ши- ны данных процессора совпадает с разрядностью шины данных ПЗУ, а ин- формационная емкость ПЗУ достаточна для хранения информации. Рис. 4.2. Модуль ПЗУ емкостью 8К х 8 Задачу наращивания емкости ПЗУ рассматривают в тех случаях, если тре- буемая емкость модуля памяти превышает емкость одной БИС ПЗУ. Пример 4.1. Определить информационную емкость, начальный и конечный адреса модуля памяти МПС 8-разрядного МП. Модуль состоит из одной БИС К573РФ6, соединенной с системной шиной в соответствии с рис. 4.2. Поскольку БИС имеет 13 адресных входов и 8 выходов данных, ее инфор- мационная емкость равна 213 х 8 = 8К х 8. Для определения начального и конечного адресов модуля памяти отметим, что считывание информации с ПЗУ будет осуществляться при одновремен- ном действии сигналов CS = 0 и ОЕ=0, при этом будет считано содержи-
188 Гпава 4 мое ячейки с адресом,<поданным на входы А12—АО. Сигнал CS = 0 тогда, когда выполняется цикл шины ЧТЕНИЕ ПАМЯТИ (т. е. MEMR =0). Сиг- нал ОЕ = 0 в диапазоне адресов с единичными значениями разрядов А13, А14, А15. Итак, начальный и конечный адреса модуля памяти определяются следующим образом: начальный: И 10 0000 0000 0000 2 = 0E000H; конечный: 1111 1111 1111 11112 = 0FFFFH. Пример 4.2. Разработать схему модуля ПЗУ с информационной емкостью 32К х 8 и начальным адресом 8000Н на базе БИС К573РФ6. Модуль ПЗУ соединить с системной шиной 8-разрядного МП. Выборку отдельных БИС осуществить с помощью дешифратора. Рис. 4.3. Модуль ПЗУ емкостью 32К х 8 Для обеспечения информационной емкости 32К х 8 схема модуля ПЗУ должна содержать четыре БИС ПЗУ емкостью 8К х 8 каждая (рис. 4.3). По- скольку модуль памяти содержит четыре БИС ПЗУ, для выборки каждой из них нужен дешифратор DC с четырьмя выходами а, 6, с, d. Чтобы началь-
Построение модулей памяти микропроцессорных систем 189 ный адрес модуля ПЗУ равнялся 8000Н, надо обеспечить выборку данных из модуля при единичном значении адресного разряда А15 (8000Н = 1000 0000 0000 ОООО2). При нулевом значении разряда А15 выборка не осуществляется, поэтому значения исходных сигналов дешифратора должны быть единич- ными: a=6 = c = d= 1. Значение разряда А15 поступает на вход разрешения дешифратора Е. При подаче на вход Е нулевого значения А15 ни одна из БИС ПЗУ не выбирается. Для адресации четырех БИС ПЗУ при фиксиро- ванном значении старшего адресного разряда А15 необходимо использо- вать еще два адресных разряда. Для этого используют разряды А14 и А13, которые поступают на адресные входы дешифратора А1 и АО. В таблице соответствия (табл. 4.2) дешифратора DC для этих условий при- ведены значения выходных сигналов а, &, с, D, которые поступают на входы CS четырех БИС для выборки соответствующей БИС, начиная с адреса 8000Н. Символом х в табл. 4.2 обозначено любое значение входного сигна- ла: 0 или 1. Таблица 4.2. Выходы дешифратора А15 А14 А13 а ь с D 0 X X 1 1 1 1 1 0 0 0 1 f 1 1 0 1 1 0 1 1 1 1 0 1 1 0 1 1 1 1 1 1 1 6 Младшие 13 разрядов шины адреса (АВ) подаются на адресные входы А12—АО всех БИС ПЗУ и параллельно адресуют ячейку внутри одной БИС, а два старших разряда А14 и А13 выбирают одну из БИС ПЗУ. Выходы БИС D0—D7 соединены с шиной данных (DB) МПС. Таким образом про- исходит наращивание емкости памяти. Рассмотрим построение модуля постоянной памяти для МПС на базе 16-разрядных процессоров, которые могут оперировать как с 8-, так и с 16-разрядными ячейками памяти. Для использования 8-разрядных БИС в модулях памяти 16-разрядных процессоров, например, с информационной емкостью 1Мх8, постоянная память выполняется в виде двух банков по 512 Кбайт каждый. Один из банков соединяется с младшей половиной ши- ны данных, т. е. к разрядам D7—D0 и называется младшим, второй — со старшей половиной шины данных (разряды D15—D8) и называется стар- шим. Младший банк содержит байты с четными адресами (АО = 0), старший — с нечетными (АО = 1). Для адресации байта внутри банка используют адрес- ные разряды А19—А1. Считывание из ПЗУ организовано таким образом,
190 Гпава 4 что при обращении к ПЗУ на шину данных МП всегда поступают два байта, т. е. считывается содержимое обоих банков одновременно. В случае необходи- мости процессор может выбирать один нужный байт из двух. На рис. 4.4 пока- зана система памяти, выполненная в виде двух банков. Рис. 4.4. Модуль ПЗУ в 16-разрядных МПС Каждый из банков выполнен по структурной схеме модуля ПЗУ для 8- разрядных процессоров, рассмотренной выше. В микропроцессорных системах с 32-разрядной шиной данных модуль ПЗУ выполняется в виде четырех банков. Информация считывается одновремен- но со всех четырех банков, после чего МП выбирает 1-, 2- или 4-байтное слово в зависимости от выполняемой команды. Контрольные вопросы и задания 1. Для чего предназначено ПЗУ? 2. Каким образом выполнены элементы памяти в ПЗУ разных типов? 3. Дайте определение ячейки памяти. 4. Назовите типы ПЗУ.
Построение модулей памяти микропроцессорных систем 191 5. Приведите пример наращивания емкости ПЗУ в 2 раза. 6. Объясните понятие банка памяти. 7. Приведите пример построения модуля ПЗУ в 16-разрядной МПС на базе 8-разрядных БИС ПЗУ. 4.3. Построение модуля оперативного запоминающего устройства статического типа Элементом памяти ОЗУ статического типа является триггер. Каждый эле- мент памяти имеет свой адрес. Для того чтобы считать информацию из эле- мента памяти или записать в него новое значение, его необходимо выбрать подачей на БИС ОЗУ соответствующего адреса А,„ ।—Ао. Часть адресных разрядов поступает на дешифратор строк, а часть — на дешифратор столб- цов, определяя таким образом положение элемента памяти в матрице нако- пителя. Запоминающее устройство предполагает обращение к любому эле- менту памяти в произвольном порядке. Такое ЗУ называют ОЗУ с произ- вольной выборкой (RAM, Random Access Memory). Существуют ОЗУ с информационной емкостью 2'” х 1 бит (серии К541, К132) и с емкостью 2"’х 8 (К537, К581). Для ввода информации в ОЗУ пер- вого типа используют вход DI (Data Input), а для вывода — выход DO (Data Output). БИС ОЗУ второго типа имеют п информационных входов/выходов DIO,, ч—DIOo и предполагают чтение/запись 8-разрядного кода. Управление режимами (запись, чтение, хранение) осуществляется с помощью сигналов CS и W/R. Н-уровень сигнала W/R определяет режим записи информа- ции в память, L-уровень —режим считывания информации из памяти. Рассмотрим построение модуля ОЗУ статического типа для МПС с 8-разрядными процессорами на основе БИС ОЗУ с информационной емко- стью N х 1. Для этого необходимо наращивать разрядность данных. Пример 4.3. Для МПС с 8-разрядным МП разработать схему модуля ОЗУ с информационной емкостью 4К х 8 на базе БИС К537РУ14 с информацион- ной емкостью 4К х 1. Для построения модуля памяти емкостью 4К х 8 нужно восемь БИС ОЗУ К537РУ14. Поскольку такие БИС не имеют входа сигнала ОЕ, т. е. при за- писи информации они не переходят в z-состояние, необходимо использо- вать шинный формирователь. В этом случае будем использовать шинный формирователь КР580ВА86, который соединяет выход БИС с шиной дан- ных при выполнении цикла ЧТЕНИЕ ПАМЯТИ, MEMR =0 (см. рис. 4.5) и
192 Гпава 4 нулевом уровне сигналов на входах W/R и CS. Каждая из БИС ОЗУ со- единена с одной из линий шины данных D7—DO. Для микросхем ОЗУ, в которых при записывании информации выходы пе- реходят в высокоимпедансное состояние, шинный формирователь не ис- пользуется, и выходы БИС непосредственно соединяются с шиной данных. Таким образом, разрядность 'наращивается подсоединением одной БИС ОЗУ к каждой линии шины данных. При этом адресные входы для всех БИС ОЗУ соединяются параллельно. Параллельно соединяются также входы управления и выборки. Наращивание емкости ОЗУ осуществляется аналогично наращиванию емкости ПЗУ. На рис. 4.5 показан один из четырех возможных вариантов подсоеди- нения модуля ОЗУ — к выходу а дешифратора, других трех модулей ОЗУ — к выходам 6, с, d дешифратора. Рис. 4.5. Наращивание разрядности в модуле статического ОЗУ Рассмотрим построение модуля оперативной памяти для МПС на основе 16- разрядных процессоров. Модуль ОЗУ так же, как и ПЗУ, выполняется в виде двух банков, подсоединенных к младшей и старшей половине шины данных соответственно.
Построение модулей памяти микропроцессорных систем 193 Пример 4.4. Разработать схему модуля ОЗУ с информационной емкостью 16К х 16 для МПС с 16-разрядным МП. В схемной реализации модуля ОЗУ должно быть обеспечено чтение/запись как 8-разрядных, так и 16-разрядных данных. Модуль ОЗУ состоит из двух банков — младшего и старшего (рис. 4.6). Адресные разряды А13—А1 со- единены с адресными входами А12—АО обоих банков. Выборка банков осуществляется нулевым значением сигнала на выходе дешифратора DC, сигналами АО для выборки младшего банка или ВНЕ (Bus High Enable — разрешение старшего байта шины) для выборки старшего банка. L-уровень сигнала на выходе DC появляется при поступлении на шину адреса АВ со- ответствующего адреса ОЗУ. Сигналы MEMR или MEMW указывают на выполнение цикла ЧТЕНИЕ ПАМЯТИ или ЗАПИСЬ В ПАМЯТЬ соответ- ственно. Рис. 4.6. Модуль ОЗУ в 16-разрядных МПС Комбинация значений сигналов АО и ВНЕ определяет четыре возможных случая обращения к памяти: □ выборка байта по четному адресу; □ выборка байта по нечетному адресу; □ выборка слова по четному адресу; □ выборка слова по нечетному адресу. При выборке байта по четному адресу АО = О, ВНЕ = 1. Байт с четным адре- сом передается по линиям D7—DO, т. е. осуществляется считывание или за- пись байта. В случае записи байта в младший банк информация в старшем
194 Гпава 4 банке защищена от стирания, т. е. единичное значение сигнала ВНЕ за- прещает обращение в старший банк. При выборке байта по нечетному адресу АО = 1, ВНЕ = 0. Например, по команде MOV BL, BYTE PTR [10001H] содержимое ячейки памяти с адресом DS.10001H пересылается в младшую половину 16-разрядного регистра ВХ — в 8-разрядный регистр BL. При этом содержимое ячейки памяти записывается в разряды D15—D8, т. е. старшую половину шины данных, потом, в процессе выполнения команды, на младшую половину внутренней 16-разрядной шины МП, а после этого — в регистр BL. Этот процесс, который называется маршрутизацией байта, про- исходит автоматически и незаметно для программиста. При выборке слова по четному адресу АО - 0, ВНЕ = 0. В этом случае одно- временно выбираются два банка, и 16-разрядное слово передается по лини- ям D15—D0 за один цикл шины. Если слово имеет нечетный адрес, то его младший байт размещен в старшем банке памяти, старший байт — в млад- шем банке. При выборке слова по нечетному адресу сначала АО = 1, ВНЕ = 0, по линиям шины D15—D8 передается младший байт. После этого генерируются сигна- лы АО =0, ВНЕ=1, осуществляется инкремент (увеличение на единицу) полного адреса А19—АО, старший байт слова передается из младшего бан- ка или в младший банк по линиям шины D7—D0. Таким образом, для вы- борки слова по нечетному адресу необходимо два цикла шины. Поэтому слова целесообразно размещать по четным адресам, особенно при органи- зации операций со стеком. t Контрольные вопросы и задания 1. Что представляет собой элемент памяти статического ОЗУ? 2. Как осуществляется наращивание разрядности в модуле статического ОЗУ? 3. Какие особенности имеет построение модулей оперативной памяти для МПС на базе 16-разрядных процессоров? 4. Какие сигналы используются для выборки банков памяти ОЗУ? 5. Назовите четыре возможных случая обращения к памяти в 16-разрядных процессорах. 6. Что такое маршрутизация байта? 7. Какие рекомендации можно дать относительно расположения данных в стеке?
Построение модулей памяти микропроцессорных систем 195 4.4. Построение модулей оперативного запоминающего устройства динамического типа В микросхемах ОЗУ динамического типа элементом памяти является ем- кость р-п-перехода МДП-транзистора. Заряженное состояние конденсатора считается состоянием логической единицы, разряженное — состоянием ло- гического нуля. Такие элементы памяти не могут продолжительное время сохранять свое состояние и потому требуют дополнительных средств для обеспечения периодического восстановления (регенерации) информации. Время выборки для динамического ОЗУ составляет 70—200 нс. По сравне- нию с ОЗУ статического типа ОЗУ динамического типа характеризуются: большей информационной емкостью, обусловленной меньшим числом ком- понент в одном элементе памяти; меньшим быстродействием (из-за необхо- димости заряда и разряда конденсатора при записи бита информации); меньшей мощностью потребления; меньшей стоимостью. В большинстве случаев модули оперативной памяти современных МПС реализуются на базе БИС ОЗУ динамического типа (см. главу 9, том 2 "Цифровые устройства "). Для обеспечения адресации сравнительно большой емкости динамической памяти используют мультиплексирование адресных сигналов во времени, Сначала на БИС ОЗУ подают m младших разрядов шины адреса, сопрово- ждаемых стробом RAS (Row Address Strobe, строб адреса строки). Затем — т старших, сопровождаемых стробом CAS (Column Address Strobe, строб адреса столбца). Мультиплексирование адресных линий во времени позво- ляет уменьшить число выводов БИС ОЗУ для адреса в 2 раза. Так, для БИС К5656РУ7 с помощью восьми адресных линий А7—АО передаются данные, адресация которых требует 16 адресных линий. Эта БИС имеет информаци- онную емкость 64К х 1 и два вывода, на которые поступают сигналы стро- бов RAS и CAS. Оперативные ЗУ динамического типа работают в таких режимах: записи, считывания, считывания-модификации-записи, страничной записи, стра- ничного считывания, регенерации. Считывание информации осуществляет- ся по заднему фронту сигнала CAS при W/R = l, запись — по заднему фронту сигнала CAS при W/R = I. Режим считывания-модификации-запи- си состоит в считывании информации с дальнейшей записью в тот же эле- мент памяти. Страничные режимы записи и считывания реализуются обра- щением к БИС по адресу строки с выборкой различных элементов памяти этой строки при изменении адресов столбцов. Регенерация информации осуществляется обращением к каждой из строк, при этом формируется ад-
196 Гпава 4 pec строки и сигнал RAS , а сигнал CAS имеет уровень логической едини- цы. Процесс регенерации прекращается при обращении МП к ОЗУ. В этом случае обрабатывается запрос МП, после чего процесс регенерации про- должается с того адреса, на котором он был прекращен. Для управления ОЗУ динамического типа используют контроллеры дина- мической памяти, например, К1810ВТ03, К1810ВТ02, i8207. Контроллер ди- намической памяти i8207 (рис. 4.7) предназначен для управления четырьмя БИС ОЗУ динамического типа емкостью 512 Кбайт каждая. Он состоит из адресных буферов В1 и В2, счетчика строк регенерации (ССР), мультиплек- соров Ml и М2 и системы управления. Система управления анализирует входные сигналы и осуществляет управление всеми блоками контроллера. При выполнении команд чтения/записи памяти контроллер обеспечивает соединение выходов АО8—АОО сначала с младшей, а потом со старшей по- ловинами адреса, формирование стробирующих сигналов RAS и CAS для каждой из четырех БИС памяти, а также сигнала WE (Write Enable, разрешение записи). В режиме регенерации контроллер обеспечивает со- единение с выводами АО8—АОО выходов счетчика строк регенерации и формирования сигнала RAS. Выбор одной из четырех БИС памяти осуще- ствляется сигналами BS1—BS0 соответственно табл. 4.2. Рис. 4.7. Структурная схема контроллера динамической памяти 18207
Построение модулей памяти микропроцессорных систем 197 Таблица 4.2. Выбор БИС динамической памяти BS1 BS0 Блок памяти 0 0 Блок 0 0 1 Блок 1 I 0 Блок 2 I 1 Блок 3 Рис. 4.8. Соединение контроллера динамической памяти с системной шиной Контроллер формирует сигнал ХАСК в конце цикла чтения/записи, что указывает на окончание цикла взаимодействия с центральным процессором, и сигнал SACK в начале цикла обращения к памяти. Использование этих
198 Гпава 4 сигналов показано на примере соединения контроллера i8207 с системной шиной 16-разрядного процессора (рис. 4.8). На выходе SACK формируется сигнал логического нуля в том случае, если контроллер выполняет такты регенерации информации в динамическом ОЗУ. Сигнал ХАСК использует- ся как стробирующий сигнал для управления шинными формирователями модуля памяти. В данном примере использованы два шинных формирова- теля К580ВА86 (i8286), поскольку шина данных является 16тразрядной. Таким образом, контроллер динамической памяти формирует адресные и управляющие сигналы в режимах работы и регенерации, а также осуществ- ляет арбитраж, т. е. разрешение конфликтов между запросами на регенера- цию и обращение к памяти. Контроллер формирует также сигнал готовно- сти блока динамической памяти к обмену. Схема модуля динамической памяти 16-разрядного процессора показана на рис. 4.9. Выборка сигналами АО и ВНЕ Рис. 4.9. Система динамической памяти
Построение модулей памяти микропроцессорных систем 199 Динамическая память организована в виде двух банков, каждый из которых состоит из четырех блоков емкостью по 512 Кбайт. Общая емкость памяти составляет 2 Мбайт. Контроллер динамической памяти фактически выпол- няет роль интерфейса модуля памяти и шины процессора. Шина адреса процессора соединяется с контроллером. Линии А1 и АО подключаются к входам выбора банка BSO, BS1, биты АЗ—Al 1 являются адресом строки, а биты А12—А20 — адресом столбца динамической памяти. Контрольные вопросы и задания 1. Сравните параметры ОЗУ статического и динамического типов. Назови- те недостатки и преимущества ОЗУ динамического типа. 2. Что такое режим регенерации памяти? 3. Какие функции выполняет контроллер динамической памяти? 4. Объясните назначение сигналов RAS и CAS. 4.5. Принципы организации кэш-памяти Увеличение емкости памяти МПС обуславливает снижение быстродействия операций обмена информацией между процессором и модулем памяти. Да- же за время обращения к памяти, равное 70 нс, невозможно получить нуж- ную информацию за один цикл шины. Это приводит к необходимости вы- полнения тактов ожидания в процессе работы процессора для того, чтобы время обращения к памяти было согласовано со временем выполнения команды в процессоре. Повышение быстродействия обмена информацией возможно с помощью организации дополнительной быстродействующей памяти сравнительно небольшой емкости, обращение к которой осуществ- ляется на тактовой частоте процессора. Такая память получила название юш-памяти, или буферной памяти. Кэш-память реализуется на базе БИС ОЗУ статического типа. Информационная емкость и принцип организации кэш-памяти определяют производительность работы МПС. Кэш-п'амять используют не только для обмена данными между МП и ОЗУ, но и для обмена между ОЗУ и внешними накопителями. В основу работы кэш-памяти положены принципы временной и пространственной локально- сти программ. □ Принцип временной локальности состоит в том, что при считывании дан- ных из памяти существует высокая вероятность того, что на протяжении некоторого небольшого промежутка времени программа снова обратит- ся к тем же данным.
200 Гпава 4 □ Принцип пространственной локальности базируется на высокой вероят- ности того, что программа через некоторый небольшой промежуток времени обратится к ячейке памяти, следующей за той, к которой она обращалась перед этим. В соответствии с принципом временной локальности информацию в кэш- памяти целесообразно хранить на протяжении некоторого времени, а прин- цип пространственной локальности указывает на целесообразность разме- щения в кэш-памяти содержимого нескольких соседних ячеек, т. е. опреде- ленного блока информации. Линейные участки программ (без переходов) в большинстве случаев не превышают 3—5 команд, поэтому нецелесообразно использовать блоки информации, емкость которых превышает емкость па- мяти, нужную для хранения 3—5 команд. Как правило, информация из ос- новной памяти загружается в кэш-память блоками по 2—4 слова и хранится там некоторое время. При обращении процессора к памяти сначала проверяется наличие в кэш- памяти запрашиваемых данных, и если их нет, осуществляется загрузка в кэш- память нужной информации. Правильная организация работы кэш-памяти обеспечивает повышение быстродействия системы, поскольку в большинстве случаев происходит обращение процессора к быстрой кэш-памяти, а не к бо- лее медленной основной оперативной памяти. В зависимости от способа отображения информации из основной памяти на кэш-память различают следующие типы кэш-памяти: □ кэш-память с прямым отображением; □ полностью ассоциативная кэш-память; П множественная ассоциативная кэш-память. Кэш-память с прямым отображением является наиболее простым типом кэш-памяти (рис. 4.10). Кэш-память содержит две части — кэш-память дан- ных и кэш-память признаков. Предположим, что емкость ОЗУ МПС со- ставляет 4 Гбайт. Эта емкость разбивается на 64 К равных частей по 64 Кбайт. Блок данных емкостью 4 байт пересылается из каждой части ОЗУ в одну 32-разрядную строку кэш-памяти данных. Емкость кэш-памяти дан- ных составляет 64 Кбайт, поэтому количество строк равно 64 Кбайт/ 4 байт = 16 К. Таким образом, под любую из 64 К частей ОЗУ в кэш-памяти отводится одна строка: 32-разрядный адрес 4-байтного блока в ОЗУ делится на две части. Младшие 16 разрядов адреса А15—АО называют индексом, старшие 16 разрядов А31—А16 — признаком. Признак пересылается в кэш- память признаков, которая содержит 16 К строк и имеет общую емкость 32 Кбайт. Для определения адреса одной строки кэш-памяти данных необходимо 14 адресных разрядов А15—А2, а для определения одного байта в строке — 2 разряда А1, АО.
Построение модулей памяти микропроцессорных систем 201 Рис. 4.10. Структурная схема кэш-памяти с прямым отображением При необходимости считывания данных из памяти процессор обращается сначала к кэш-памяти и проверяет, содержит ли она нужные данные. Этот процесс происходит путем сравнения признака, записанного в кэш-памяти признаков, с 16 старшими разрядами адреса, который процессор выставляет на 32-разрядную шину адреса. Совпадение этих величин означает, что в кэш-памяти хранятся необходимые данные, которые затем и считываются из кэш-памяти. Если величины не совпадают, то выполняется копирование соответствующих данных из оперативной памяти в кэш-память. Преимуществом такого типа кэш-памяти является сравнительно высокое быстродействие, что объясняется необходимостью выполнения лишь одно- го сравнения признака со старшими разрядами адреса ОЗУ. Недостатком кэш-памяти с прямым отображением является возникновение конфликтов в случае, если старшие 16 разрядов адреса ячейки памяти сов- падают с признаком, записанным в кэш-памяти признаков, а индексы необ- ходимого блока и строки в кэш-памяти данных не совпадают. Это означает, что строка в кэш-памяти данных, отведенная для этой части ОЗУ и опреде- ляемая старшими 16 адресными разрядами, уже занята. В таком случае со- держимое строки кэш-памяти данных пересылается назад в ОЗУ, а в строку пересылается новый требуемый 4-байтовый блок. В результате увеличива- ются количество пересылок между кэш-памятью и ОЗУ и время обмена ин- формацией.
202 Гпава 4 Структурная схема полностью ассоциативной кэш-памяти показана на рис. 4.11. Рис. 4.11. Структурная схема полностью ассоциативной кэш-памяти В этой схеме устранен недостаток кэш-памяти с прямым отображением, по- скольку любой блок ОЗУ может отображаться в любой строке кэш-памяти. В кэш-память признаков записывается 30-разрядный признак, т. е. старшие 30 разрядов А31—А2 адреса 4-байтного блока ОЗУ. В строку кэш-памяти данных записывается 4-байтный блок. Если кэш-память не заполнена, блок записывается в любую свободную строку. Если кэш-память заполнена, блок из ОЗУ записывается в ту строку кэш-памяти данных, к которой было наи- меньшее количество обращений. Недостатки кэш-памяти с прямым отобра- жением устраняются за счет дополнительных средств определения блока, к которому было наименьшее количество обращений. При этом также увели- чивается время обработки запросов из-за необходимости сравнения 30- разрядного адреса и признака, записанного в кэш-памяти признаков. Мак- симальное количество таких сравнений составляет 16 К. Множественная ассоциативная кэш-память объединяет преимущества обоих предшествующих типов. Строки этой кэш-памяти объединяются в группы по 2, 4 и более (в соответствии с этим различают 2-входовую, 4-входовую и подобную множественную ассоциативную кэш-память). Структурная схема 2- входовой множественной ассоциативной кэш-памяти показана на рис. 4.12.
Построение модулей памяти микропроцессорных систем 203 Рис. 4.12. Структурная схема 2-входовой множественной ассоциативной кэш-памяти Кэш-память данных состоит из 8 К групп, каждая из которых содержит две строки. Индекс, т. е. 16 младших разрядов адреса ОЗП, адресует байт в кэш- памяти данных (13 разрядов адресуют одну из 8 К групп, 1 разряд — строку в группе и 2 разряда — байт в строке). Признак, т. е. 16 старших адресных разрядов, записывается в строку памяти признаков. Таким образом, для блоков с одним и тем же индексом отводятся две строки кэш-памяти. Сле- довательно, если одна из строк группы занята некоторым блоком, то сле- дующий блок с таким же индексом будет размещен в свободной строке. Внутри группы кэш-память является полностью ассоциативной. Количество сравнений адресов ОЗУ с признаками равняется двум. Возрастание емкости кэш-памяти, т. е. количества строк в группе, увеличи- вает эффективность ее работы, однако при этом возрастает количество сравнений адресов и, следовательно, время обработки запроса ячейки ОЗУ. Эффективность работы кэш-памяти характеризуется коэффициентом удач- ных обращений. Кэш-память с прямым отображением информационной ем- костью Ухи имеет такой же коэффициент удачных обращений, что и 2- входовая множественная ассоциативная кэш-память емкостью (N х п)/2 .
204 Гпава 4 Все рассмотренные типы кэш-памяти имеют свойство хранить отдельные копии информации, которая содержится в основной памяти. Во время запи- си в кэш-память может нарушаться целостность сохраняемых данных, т. е. содержимое кэш-памяти перестанет соответствовать содержимому ОЗУ. Существует несколько способов восстановления информации в ОЗУ, основ- ными из которых являются способ сквозной записи и способ обратной записи. □ Способ сквозной записи состоит в том, что информация записывается как в кэш-память, так и в ОЗУ. □ Способ обратной записи предусматривает запись информации в ОЗУ лишь в том случае, если она изменяется в кэш-памяти. Каждой строке кэш-памяти ставится в соответствие специальный бит — бит записи, ука- зывающий на изменение содержимого строки. При замещении строки кэш-памяти новым блоком информации из ОЗУ проверяется состояние бита записи, и если этот бит установлен, то выполняется перезапись бло- ка из кэш-памяти в ОЗУ. Только после этого в кэш-памяти размещается новый блок из ОЗУ. Этот способ более эффективен, поскольку позволяет уменьшить количество обращений к ОЗУ. Правильное размещение данных в ОЗУ позволяет рационально организо- вать работу программного обеспечения и повысить быстродействие работы МПС по двум причинам. Во-первых, связанные между собой данные целе- сообразно размещать в ближайших ячейках ОЗУ. В этом случае при загруз- ке блока данных в кэш-память существует высокая вероятность того, что после обработки первого слова процессор будет выбирать второе слово из кэш-памяти, а не из ОЗУ, что позволит эффективнее использовать кэш- память. Во-вторых, при записи необходимо выравнивать данные в ОЗУ по границе строки кэш-памяти. Предположим, что программа обрабатывает 3- байтные слова, а длина строки кэш-памяти равна 4 байт. Если разместить слова в ОЗУ подряд (как показано на рис. 4.13), то части некоторых 3- байтных слов, например, слов D2 и D3, будут размещены в соседних стро- ках кэш-памяти. D1 02 я D2 . D3 D3 D4 Рис. 4.13. Размещение 3-байтных слов без выравнивания по границе блока
Построение модулей памяти микропроцессорных систем 205 Без выравнивания данных довольно часто случаются неудачные обращения к кэш-памяти. На рис. 4.14 показана запись 3-байтных слов D1—D4, выров- ненных по границе 4-байтной строки кэш-памяти. D1 к- 4 . -- - . D2 1 D3 D4 Рис. 4.14. Размещение 3-байтных слов с выравниванием по границе 4-байтной строки кэш-памяти Это позволяет значительно уменьшить количество неудачных обращений к кэш-памяти. Контрольные вопросы и задания 1. Приведите определение и назначение кэш-памяти. 2. В чем состоит принцип временной локальности? 3. В чем состоит принцип пространственной локальности? 4. Объясните принцип действия кэш-памяти с прямым отображением. 5. Объясните принцип действия полностью ассоциативной кэш-памяти. 6. Объясните принцип действия множественной ассоциативной кэш- памяти. 7. Сравните два вида кэш-памяти: с прямым отображением и полностью ассоциативную. 8. Сравните полностью ассоциативную кэш-память с множественной ассо- циативной кэш-памятью. 9. Как восстанавливается информация в ОЗУ способом сквозной записи? 10. Как восстанавливается информация в ОЗУ способом обратной записи?
206 Гпава 4 4.6. Принципы организации стековой памяти Стековой памятью, или стеком, называют память, в которой реализован принцип "последний вошел — первый вышел" (LIFO, Last Input First Output), т. e. данные, записанные последними, считываются первыми. В МПС стековая память используется для вызовов подпрограмм, в том чис- ле вложенных, и обработки прерываний. По способу реализации различают аппаратный и аппаратно-программный стеки. □ Аппаратный стек представляет собой совокупность регистров, связь ме- жду которыми организована таким образом, что во время записи и счи- тывания данных содержимое стека автоматически сдвигается. Принцип работы аппаратного 8-уровневого стека иллюстрирует рис. 4.15. Слово 2 Слово 3 Направ- ление Слово 2 Слово 4 Слово 3 Слово 5 переме- щения! Слово 4 t Слово 6 в стеке Слово 5 Слово 7 Слово 6 Слово 1 Слово 8 Слово 7 Слово 1 -► Слово 1 4 Слово 2-> Слово 2 Слово 9 -> Слово 9 Слово 94- Слово 8 Вершина стека Запись Запись Запись Считывание Рис. 4.15. Принцип работы аппаратного стека При записи Слова 1 в стек оно располагается в первой свободной ячейке памяти (в первом регистре) — вершине стека. Следующее слово сдвигает предшествующее на одну ячейку вверх, занимая его место и т. д. Запись Слова 9 приводит к переполнению стека и потере Слова 1. Считывание слов из стека осуществляется в обратном порядке, т. е. сначала считыва- ется Слово 9, которое записано последним, а считывание Слова 6 невоз- можно, пока не будут считаны Слова 7, 8 и 9. Информационная емкость аппаратного стека определяется как N хп, где количество n-разрядных слов N равно количеству регистров и может со-
Построение модулей памяти микропроцессорных систем 207 ставлять несколько десятков. Аппаратные стеки, которые используются, например, в PIC-процессорах, имеют 2, 8 или 16 регистров (N = 2, 8, 16), в которых размещаются 12-, 14- или 16-разрядные слова (п = 12, 14, 16). Основным преимуществом аппаратного стека является высокое быстро- действие, а недостатком — ограниченная информационная емкость. □ Аппаратно-программный стек реализуется путем использования части ОЗУ статического типа и специального регистра SP (Stack Pointer — ука- затель стека), который содержит адрес последней занятой ячейки стека. Принцип работы аппаратно-программного стека для МП микропроцес- соров 80x86 показан на рис. 4.16. В аппаратно-программном стеке физи- ческого сдвига данных при записи и считывании не происходит. Однако автоматическое изменение содержимого SP эквивалентно сдвигу данных, происходящему в аппаратном стеке. 0000 SP-+ 0000 Часть ОЗУ, отведенная под стек SP:=SP-2* 0000 SP-SP^Z* Слово 3 Слово 2 Слово 2 Слово 1 Слово 1 Слово 1 Запись Запись Вершина стека Рис. 4.16. Принцип работы аппаратно-программного стека В начале программы в регистр SP заносят адрес вершины стека. После каждой операции записи (считывания) содержимое регистра SP изменя- ется. Для МП 80x86 одновременно можно записывать в стек или считы- вать из него 2-байтные слова, поэтому SP изменяется на два. Во время записи в стек значение SP уменьшается на два (стек "растет” в область малых адресов), при считывании из стека — увеличивается на два. Таким образом, указатель стека SP всегда содержит адрес ячейки, к которой со- стоялось последнее обращение. В некоторых командах, например, в командах вызовов подпрограмм call, прерываний int, возвращений из подпрограмм ret, обращение к стеку осуществляется автоматически. При вызове подпрограммы (рис. 4.17) в стеке запоминается адрес коман- ды, следующей после команды вызова add, т. е. содержимое программно-
208 Гпава 4 го счетчика PC запоминается в верхней незанятой ячейке стека, а указа- тель стека уменьшается на два. Рис. 4.17. Работа стека при вызове подпрограммы При возвращении из подпрограммы по команде ret содержимое верхней ячейки стека перезаписывается в программный счетчик PC, указатель стека SP увеличивается на два. После этого начинает выполняться ко- манда add. Кроме команд call, int и ret для работы со стеком исполь- зуются также команды push и pop, предназначенные для временного за- поминания в стеке содержимого регистров и восстановления, т. е. пересылки информации из стека в регистры. В МП Intel, начиная с i286, существуют команды pusha и рора (PUSH АП и POP АП), предназначен- ные для временного запоминания в стеке и восстановления содержимого всех регистров МП. К аппаратно-программному стеку можно обратиться так же, как и к ОЗУ с произвольной выборкой. В МП i80x86 для этого используют косвенную адресацию с помощью регистра ВР. Таким обра- зом, в стек можно записать значения параметров подпрограмм перед их вызовом.
Построение модулей памяти микропроцессорных систем 209 Использование стековой памяти позволяет повысить быстродействие МПС, уменьшая время одной из самых медленных операций — обраще- ния к внешней памяти. Контрольные вопросы и задания 1. Дайте определение стековой памяти. 2. Каково назначение стековой памяти? 3. Объясните принцип действия аппаратного стека. 4. Объясните принцип действия аппаратно-программного стека. 5. Дайте сравнительную характеристику аппаратного и аппаратно-прог- раммного стеков. 6. Объясните назначение регистра SP. 7. Какие операции выполняет процессор по командам call, ret, push, POP, PUSHA, POPA?
Глава 5 Интерфейс устройств ввода/вывода 5.1. Функции интерфейса ввода/вывода Одной из важнейших задач проектирования МПС является организация взаимодействия с устройствами ввода/вывода (УВВ) — источниками и при- емниками данных. К устройствам ввода относятся переключатели, клавиа- тура,. аналого-цифровые преобразователи (АЦП), датчики двоичной ин- формации, а к устройствам вывода — индикаторы, светодиоды, дисплеи, печатающие устройства, цифроаналоговые преобразователи (ЦАП), тран- зисторные ключи, реле, коммутаторы. Примерами устройств одновременно и ввода и вывода являются накопители на гибких и жестких магнитных дис- ках. В дальнейшем под устройством ввода/вывода или внешним устройст- вом будем понимать одно из перечисленных выше устройств, т. е. устройство ввода, вывода или ввода/вывода. УВВ различаются: разрядностью данных, быстродействием, управляющими сигналами, типом протокола обмена, т. е. определенным порядком обмена. Данные в УВВ изменяются в произволь- ный или определенный момент времени. Соединение УВВ с системной ши- ной МПС осуществляется с помощью интерфейса ввода/вывода, который согласовывает сигналы УВВ с системной шиной МПС. Как правило, интер- фейс состоит из одного или нескольких портов ввода/вывода и схем управ- ления ими. При проектировании интерфейса ввода/вывода необходимо обеспечить: □ хранение информации, поступающей от УВВ; □ доступ к информации со стороны МП; □ управление обменом; □ преобразование форматов данных. Хранение информации и доступ к ней со стороны МП. Ввод и вывод инфор- мации выполняется с помощью портов ввода/вывода, которые представля- ют собой 8- или 16-разрядные регистры со схемами выборки и управления
212 Гпава 5 чтением/записью. В качестве портов могут быть использованы буферные регистры, например, i8282, i8285, КР580ИР82, КР589ИР12, КР580ВВ55. Ис- пользование регистра КР580ИР82 для соединения с устройством ввода и устройством вывода показано на рис. 5.1, а и б соответственно. Рис. 5.1. Использование регистра КР580ИР82 для сопряжения: a — с устройством ввода; б — с устройством вывода Если регистр используется как порт ввода (рис. 5.1, а), то данные от устрой- ства ввода поступают в регистр по линиям DI7—DI0 и записываются по стробу STB. Выходные данные DO7—DOO порта поступают в МПС систему по шине данных. МП формирует также сигнал управления чтением и вы- боркой порта, который поступает на вход ОЕ . Если регистр используется как порт вывода (рис. 5.1, б), то данные от МП поступают по шине данных на входы DI7-DI0 порта и сопровождаются сигналами управления записью и выборки БИС. Выходные данные DO7-DO0 порта поступают в устройст- во вывода. Ввод или вывод данных можно осуществлять двумя способами: □ с использованием отдельного адресного пространства УВВ; □ с использованием общего с памятью адресного пространства, т. е. с ото- бражением на память.
Интерфейс устройств ввода/вывода 213 В первом случае ввод и вывод данных выполняются по командам in и out (см. табл. 2.11). Пример 5.1. Выполнить вывод данных на 16-разрядный порт с адресом ЮООН. Адрес порта занимает два байта, поэтому для адресации порта надо использо- вать косвенную регистровую адресацию. Для этого надо адрес ЮООН зане- сти в регистр DX, а потом выполнить команду вывода: MOV DX, ЮООН ; Занести в DX число ЮООН OUT DX, АХ ; Вывести содержимое АХ на 16-разрядный порт ; вывода с адресом, который находится в DX, ; т. е. АХ —> P16(DX) При выполнении команды out dx, ах на линиях А15—АО шины адреса по- является адрес порта: А15 А14 А13 А12 All А10 А9 А8 А7 А6 А5 А4 АЗ А2 А1 АО О 0 0 1 0 0 0 000000000 = 1000Н, устанавливается низкий уровень сигнала записи ввода/вывода IOW, и со- держимое аккумулятора АХ передается на 16-разрядную шину данных. Для фиксации данных (т. е. содержимого АХ) надо использовать два 8- разрядных порта, один из которых соединен с младшей половиной шины данных, а второй — со старшей. Сигналы управления записью и выборки подаются параллельно на 2 порта. Пример 5.2. Выполнить ввод данных из 8-разрядного порта с адресом 32Н. Ввод данных осуществляется по команде ввода: IN AL, 32Н ; AL <- Р8(32Н) Действия МП в этом случае аналогичны примеру 5.1. Отличие состоит в том, что активным становится сигнал IOR чтения ввода/вывода, и переда- ча информации осуществляется от порта к МП по младшей половине шины данных D7—D0. Во втором случае адреса портов располагаются в общем с памятью адрес- ном пространстве, и обращение к портам не отличается от обращения к ячейке памяти. Сигналы выборки БИС (рис. 5.1) конкретных портов формируются с помо- щью дешифраторов. Адрес 16-разрядного порта Pj6 должен быть четным, чтобы обращение к нему происходило за один цикл шины. Адреса 8- разрядных портов ввода/вывода Р% могут быть любыми (четными, нечет- ными), но при четном адресе 8-разрядные порты нужно соединить с млад- шей половиной шины данных D7—D0, а при нечетном — со старшей поло- виной D15—D8.
214 Гпава 5 Пример 5.3. Разработать функциональную схему дешифратора на БИС К155ИД7 для адресации восьми 8-разрядных и восьми 16-разрядных пор- тов, причем адреса 8-разрядных портов избрать нечетными, а адреса 16- разрядных — четными. Функциональная схема дешифратора показана на рис. 5.2. Сигналы выборки БИС портов Рис. 5.2. Функциональная схема дешифратора портов Схема содержит две БИС дешифратора DC1 и DC2. С выходов дешифрато- ров сигналы поступают на входы ОЕ соответствующих портов. Таким об- разом, схема (рис. 5.2) позволяет адресовать 16 портов. Все выходные сиг- налы 0—7 БИС имеют Н-уровень, если не обеспечено поступление сигналов L-уровня на инверсные входы разрешения Е1 и Е2 и сигнала Н-уровня на вход ЕЗ. В противном случае сигнал на том выходе DC, двоичный код но- мера которого определяются кодом на информационных входах DC Х2, XI, ХО, является активным, т. е. имеет L-уровень. Сигналы на других выходах имеют Н-уровень. Этот принцип работы DC позволяет в любой момент работы МП обратиться лишь к одному из портов. Определим те- перь адреса портов: Низкие уровни на выходе DC1 появляются при значении сигналов на адрес- ных линиях А4 = 1, АО = 0, и сигнала выборки старшего байта ВНЕ . Сиг- нал на выходе О DC1 будет активным (L-уровень) при адресе А15 А14 А13 А12 All А10 А9 А8 А7 А6 А5 А4 АЗ А2 А1 АО хх х х х xxxxxxlOOOO =0010Н,
Интерфейс устройств ввода/вывода 215 на выходе 1 при адресе ххх хххххххх 10010 = 0012Н, на выходе 2 при адресе ххх х х хххххх 10100 = 0014Н, на выходе 7 при адресе ххх х х хххххх 11110= 001 ЕН. Низкие уровни на выходе DC2 появляются при А4 = 0, АО = 1, ВНЕ = 0. Сигнал на выходе 0 DC2 будет активным (L-уровень) при адресе А15 А14 А13 А12 All А10 А9 А8 А7 А6 А5 А4 АЗ А2 А1 АО х х х х хх х xxxxOOOOl =0001Н, на выходе 1 при адресе х х х х х х ххххх00011= 0003Н, на выходе 7 при адресе хх хх ххххххх01111= 000FH. Укажем, что 8-разрядные порты с нечетными адресами должны быть соеди- нены со старшей половиной шины данных D15—D8. Управление обменом. Существуют три способа управления обменом: □ программный обмен; □ обмен по прерыванию; □ обмен в режиме прямого доступа к памяти. Программный обмен инициируется МП и осуществляется под его управлени- ем. Различают простой и стробированный программный обмен. При про- стом программном обмене считается, что УВВ в любой момент готово к обмену по командам in или out. При стробированном обмене УВВ изве- щает о своей готовности к обмену стробом. Например, выдача 8-разрядных данных сопровождается девятым битом — стробом. При таком обмене схе- ма интерфейса содержит триггер или порт управления для сохранения ин- формации о готовности внешнего устройства к обмену. Процессор опраши- вает соответствующий разряд порта управления для определения состояния внешнего устройства — его готовности к обмену.
216 Гпава 5 Пример 5.4. Разработать функциональную схему ввода и вывода 8-разряд- ных данных по стробу готовности. Адрес порта ввода — 02Н, порта управ- ления — ОЗН, порта вывода — 04Н. Функциональная схема стробированного обмена приведена на рис. 5.3. Схема содержит: устройство ввода, соединенное с портом ввода; устройство вывода, соединенное с портом вывода; порт управления для хранения сигна- лов готовности устройств ввода и вывода. Устройство ввода имеет восемь информационных выходных линий и одну выходную линию строба сопрово- ждения данных. Появление этого строба сигнализирует о том, что данные на информационных линиях являются действительными (корректными). Устрой- ство вывода имеет восемь информационных входных линий и одну выходную линию строба подтверждения приема данных. Появление этого строба сигна- лизирует о том, что данные приняты устройством и МП может передавать новую порцию данных. Порт управления хранит информацию о стробах от двух устройств. Программа стробированного ввода имеет вид: Ml: IN AL, 03 ; AL < порт управления (адрес 03) AND AL, 00000001В ; Маскирование всех разрядов, кроме D0 JZ Ml ; Если DO = 0 (порт не готов), то на ; Ml, IN AL, 02 ; иначе — ввод информации из порта ; ввода (адрес 02)
Интерфейс устройств ввода/вывода 217 Программа стробированного вывода имеет вид: М2: IN AL, 03 ; AL < порт управления (адрес 03) AND AL, 00000010В ; Маскирование всех разрядов, кроме D1 JZ М2 ; Если D1 = 0 (порт не готов), то на ; М2, OUT 04, AL ; иначе — вывод информации на порт ; вывода (адрес 04) Если УВВ имеет встроенное аппаратное средство для определения готовно- сти к обмену, о состоянии устройства свидетельствует флаг готовности READY или флаг готовности/занятости READY/BUSY. Информация о го- товности устройств принадлежит к статусной информации и входит в состав слова состояния устройства. Иногда состояние готовности и занятости идентифицируется отдельными флагами: READY и BUSY. Флаг READY заменяет бит порта управления (см. рис. 5.3). Схема алгоритма программного обмена данными по значению флага READY приведена на рис. 5.4. Рис. 5.4. Алгоритм программного обмена данными по значению флага READY Если УВВ не готово к обмену, то МП находится в режиме программного ожидания готовности внешнего устройства, выполняя команды блоков 1 и 2. После определения готовности УВВ МП передает данные по команде
218 Гпава 5 блока 3, а потом продолжает выполнение основной программы. На чтение статусной информации и ее анализ, МП тратит несколько циклов работы, что приводит к непроизводительным потерям его времени. Недостатками программного стробированного обмена является то, что данный способ обмена информацией не разрешает внешним устройствам инициировать обмен. Преимущество программного обмена состоит в простоте реализа- ции, а также в том, что нет необходимости в дополнительных аппаратных средствах. Программный обмен используется для обмена с УВВ, производительность которых меньше производительности МП. Обмен по прерыванию инициируется УВВ и осуществляется под управлением МП. В этом случае сигнал готовности УВВ к обмену используется как за- прос прерывания и поступает в программируемый контроллер прерываний (ПКП) (рис. 5.5). Ввод или вывод осуществляется в подпрограмме обработ- ки запроса прерывания. Системная шина Рис. 5.5. Схема обмена по прерыванию Программируемый контроллер прерывания (см. рис. 5.5) способен принять 8 сигналов IRQ7—IRQ0. На рис. 5.5 сигнал готовности УВВ поступает на вход IRQ6. Сигнал готовности УВВ представляет собой выходной сигнал триггера, который фиксирует состояние готовности READY. На выходе программного контроллера прерываний асинхронно с действиями МП формируется сигнал INT. Заранее не известно, в какой момент и какие пе- риферийные устройства инициируют прерывания. Реагируя на сигнал int, МП перерывает выполнение основной программы, идентифицирует устрой- ство, вызвавшее прерывание, и переходит к выполнению подпрограммы обслуживания прерывания от этого устройства, а после его завершения вое-
Интерфейс устройств ввода/вывода 219 станавливает выполнение прерванной программы. По команде int содер- жимое программного счетчика и флагов автоматически запоминается в сте- ке. Содержимое аккумулятора и рон необходимо занести в стек с помощью команд push в подпрограмме обработки прерывания. В каждом МП реализована особая структура системы прерываний. Однако общая последовательность обмена по прерыванию включает следующие действия: 1. УВВ генерирует сигнал готовности, вызывающий появление сигнала прерывания INT МП. 2. МП завершает выполнение текущей команды и, если прерывание разре- шено'(не замаскировано), формирует сигнал INTA подтверждения пре- рывания. 3. МП запоминает содержимое аккумулятора, программного счетчика и РОН в стеке. 4. МП идентифицирует устройство, вызвавшее прерывания, и выполняет соответствующую подпрограмму обслуживания прерывания. 5. С помощью команды pop восстанавливаются значения содержимого ак- кумулятора и РОН из стека. 6. По команде ret возврата из прерывания, которая является последней командой подпрограммы обслуживания прерывания, восстанавливаются значения программного счетчика и флагов, и продолжается выполнение прерванной программы. Обмен по прерыванию более производительный, чем программный обмен, поскольку не требует времени для опроса готовности УВВ к обмену. Обмен в режиме ПДП инициируется УВВ и осуществляется под управлением контроллера прямого доступа к памяти (КПДП) без участия МП. При об- мене данными между УВВ и памятью нет необходимости в пересылке дан- ных через МП. Данные с помощью КПДП пересылаются непосредственно из УВВ в память или наоборот. Прямой доступ к памяти при выполнении операций ввода/вывода позволяет значительно увеличить скорость переда- чи данных и повысить эффективность использования средств МП. Схема обмена в режиме ПДП показана на рис. 5.6. Контроллер прямого доступа принимает запрос от УВВ, формирует сигнал запроса захвата шин МП HOLD и, получив от МП разрешение HLDA, формирует адреса памяти и управляющие сигналы MEMR, IOW — в случае чтения памяти, или MEMW , IOR — в случае записи в память. Информацию об области памяти, используемой при обмене в виде началь- ного адреса и длины массива, загружают в КПДП при его программирова-
220 Гпава 5 нии. Производительность обмена в режиме ПДП наиболее высокая из рас- смотренных способов обмена. Рис. 5.6. Схема обмена в режиме ПДП Преобразование форматов данных. Если разрядность данных, с которыми оперирует МП, меньше разрядности данных, с которыми оперирует УВВ, то для согласования разрядности увеличивают число портов ввода/вывода. Если разрядность данных, с которыми оперирует МП, больше разрядности данных, с которыми оперирует УВВ, то для согласования разрядности вы- полняют упаковку данных, полученных из нескольких источников, в одно слово нужной разрядности или используют дополнение нулями. Для преоб- разования последовательного кода в параллельный и наоборот используют контроллер последовательного обмена. Контрольные вопросы и задания 1. Каким образом обеспечивается хранение информации, поступающей от УВВ? 2. Назовите способы адресации портов ввода/вывода. 3. Приведите сравнительную характеристику видов обмена.
Интерфейс устройств ввода/вывода 221 4. Какие существуют типы программного обмена? 5. Приведите структурную схему стробированного обмена. 6. Приведите структурную схему обмена по прерыванию. 7. Приведите структурную схему обмена в режиме ПДП. 8. Каким образом происходит запоминание содержимого аккумулятора, РОН, программного счетчика и флагов при обмене по прерыванию? 9. В каких случаях целесообразно применение прямого доступа к памяти? 5.2. Программируемый параллельный интерфейс Программируемый параллельный интерфейс КР580ВВ55 предназначен для ввода/вывода параллельной информации в 8-битном формате. Он позволяет реализовать большинство известных протоколов обмена по параллельным каналам. БИС программируемого параллельного интерфейса может ис- пользоваться для соединения МП со стандартным периферийным оборудо- ванием (дисплеем, телетайпом, накопителем, и т. п.). Рис. 5.7. Структурная схема БИС КР580ВВ55
222 Гпава 5 Структурная схема БИС показана на рис. 5.7, а ее графическое обозначение — на рис. 5.8. 5 6 35 9 8 34 33 32 31 30 29 28 27 D0 D1 D2 D3 D4 D5 D6 D7 PPI РАО РА1 РА2 РАЗ РА4 РА5 РА6 РА7 АО А1 РВО РВ1 РВ2 РВЗ РВ4 РВ5 РВ6 РВ7 > WR 0 RD ф CS РСО РС1 RESET РС2 РСЗ РС4 РС5 РС6 РС7 ----14 ----15 ----16 ----17 ----13 ---- 12 ----11 ----10 ----4 ----3 ----2 ----1 ----40 ----39 ----38 ----37 ----18 ----19 ----20 ----21 ----22 ----23 ----24 ----25 Рис. 5.8. Графическое обозначение БИС КР580ВВ55 В состав БИС входят (рис. 5.7)' □ двунаправленный 8-разрядный буфер данных (BD, Bufer of Data), соеди- няющий линии данных БИС с системной шиной данных; < □ блок управления чтением/записью (RWCU, Read/Write Control Unit), обеспечивающий управление внешней и внутренней передачей данных и управляющих слов; □ три 8-разрядных порта ввода/вывода (Port A, Port В, Port С) для обмена информацией, причем порт С разделен на два четырехразрядных: С (РС7—РС4) и С”(РСЗ—РСО). Порты А и С’ объединены в группу А, порты В и С” — в группу В.
Интерфейс устройств ввода/вывода 223 Схема БИС содержит также блоки управления группой A Control Unit А (CUA) и группой В (CUB), которые формируют сигналы управления для соответствующих групп. Блок RWCU (Register of Control Word Unit) содержит регистр управляюще- го слова, который хранит управляющие слова, поступающие от МП. Адресные разряды А1, АО позволяют выбрать один из портов А, В, С или регистр управляющего слова RCW (табл. 5.1). Таблица 5.1. Выбор портов БИС КР580ВВ55 А1 АО Порт 0 0 А 0 1 В 1 0 с 1 1 RCW Сигнал управления третьим состоянием шины данных CS, сигнал чтения RD , сигнал записи WR и сигнал сброса RESET подаются на блок RWCU и вместе с сигналами на адресных линиях АО, А1 задают вид выполняемой операции (табл. 5.2). Таблица 5.2. Определение вида операций в зависимости от сигналов управления и адресных разрядов А1, АО Операция CS RD WR Al AO Запись управляющего слова из МП 0 1 0 1 1 Запись данных в порт А 0 1 0 0 0 Запись данных в порт В 0 1 0 0 1 Запись данных в порт С 0 1 0 1 0 Считывание данных из порта А 0 0 1 0 0 Считывание данных из порта В 0 0 1 0 1 Считывание данных из порта С 0 0 1 1 0 Выключение БИС от D7—DO 1 X X X X Примечание, х — любое значение (0 или 1).
224 Гпава 5 Назначение выводов БИС приведено в табл. 5.3. Таблица 5.3. Назначение выводов БИС КР580ВВ55 Обозначение вывода Номер вывода Назначение выводов D7—DO 27; 28; 29; 30; 31; 32; 33; 34 Вход/выход данных RD 5 Чтение; L-уровень сигнала разрешает счи- тывание информации из порта, адресуемого разрядами АО, А1 по линиям D7—D0 WR 36 Запись; L-уровень сигнала разрешает запись информации с шины D7—D0 в порт, адресуе- мый разрядами АО, А1 АО, Al 9; 8 Входы для адресации внутренних регистров БИС RESET 35 Сброс; Н-уровень сигнала сбрасывает ре- гистр управляющего слова и устанавливает все порты в режим ввода CS 6 Вход выборки микросхемы; L-уровень сиг- нала соединяет шину данных D7—D0 БИС с системной шиной PA7—РАО 37; 38; 39; 40; 1; 2; 3;4 Вход/выход порта А PB7—РВО 15; 24; 23; 22; 21; 20; 19; 18 Вход/выход порта В PC7—PCO 10; 11; 12; 13; 17; 16; 15; 14 Вход/выход порта С Ucc 26 Вывод напряжения питания +5 В GND 7 Общий вывод 0 В Функциональная схема соединения БИС с системной шиной МП показана на рис. 5.9. Соответственно схеме рис. 5.9 и табл. 5.2 определяются адреса портов и ре- гистра управляющего слова RCW (табл. 5.4).
Интерфейс устройств ввода/вывода 225 Рис. 5.9. Функциональная схема соединения БИС КР580ВВ55 с системной шиной Таблица 5.4. Адреса портов и регистра RCW Порт А7 А6 А5 А4 АЗ А2 А1 АО Адрес А 0 0 0 0 1 0 0 0 08Н В 0 0 0 0 1 0 1 0 ОАН С 0 0 0 0 1 1 0 0 ОСН RCW 0 0 0 0 1 1 1 0 ОЕН Программирование БИС заключается в загрузке управляющего слова ре- жима при Al = 1, АО = 1. Формат управляющего слова режима показан на рис. 5.10. Управляющее слово определяет один из трех режимов портов па- раллельного интерфейса: режим "0" — основной режим ввода/вывода; ре- жим "1” — режим стробированного ввода/вывода; режим ”2” — режим дву- направленной передачи информации. 07 Об 05 04 ОЗ 02 01 ОО 1 | М1 | МО | /ОД | /ОС* | М | /08 | /ОС | Рис. 5.10. Формат управляющего слова режима
226 Гпава 5 На рис. 5.10 обозначено: □ биты Ml, МО — задают режим группы А. При Ml МО = 00 задается ре- жим 0, при 01 —режим 1, при 10 и 11 —режим 2; □ бит ЮА — задает режим ввода или вывода порта А. При ЮА = 1 осуще- ствляется ввод информации, при значении ноль — вывод; □ бит ЮС — задает режим ввода или вывода порта С (1 — ввод, 0 — вы- вод); □ бит М — задает режим группы В. При М = 0 — режим 0, 1 — режим 1; □ бит ЮВ — задает режим ввода или вывода порта В (1 — ввод информа- ции^— вывод); □ бит ЮС" — задает режим ввода или вывода порта С" (1 — ввод, 0 — вы- вод). Управляющее слово может устанавливать разные режимы работы для каж- дого из портов. Порт А может работать в любом из трех режимов, порт В — в режимах 0 и 1. Порт С можно использовать для передачи данных только в режиме 0, в других режимах его применяют для передачи управляющих сиг- налов, которые сопровождают процесс обмена по портам А и В. Отдельные разряды порта С можно устанавливать или сбрасывать про- граммно с помощью управляющего слова установки/сброса, формат кото- рого показан на рис. 5.11. 07 Об 05 04 ОЗ D2 D1 ОО 0 X X X N2 Л/1 ЛЮ S/R Рис. 5.11. Формат управляющего слова установки/сброса порта С На рис. 5.11 обозначено: □ биты N2, Nl, N0 — задают номер разряда, который надо установить или сбросить. Значение этих бит = 000 — выбирает разряд PC0, 001 — РС1, 010 — РС2, ОН — РСЗ, 100 —РС4, 101 —РС5, НО —РС6, 111 — РС7; □ бит S/R — задает режим установки или сброса разряда порта С, ко- торый выбран значениями N2, Nl, N0. При S/R = 1 происходит установ- ка разряда, при 0 — сброс. Пример 5.5. Сформировать импульс продолжительностью п (мкс). Адрес БИС КР580ВВ55 задан в табл. 5.4.
Интерфейс устройств ввода/вывода 227 Для того чтобы сформировать импульс заданной продолжительности, надо установить разряд РС4 в состояние логической единицы, потом выполнить подпрограмму задержки на п (мкс) и сбросить разряд РС4. Определим управляющие слова для установки и сброса разряда РС4. Управляющее слово установки разряда РС4 в соответствии с рис. 5.11 имеет вид: D7 D6 D5 D4 D3 D2 D1 DO 0 0 0 0 1 0 0 1 В шестнадцатеричной системе исчисления оно равняется 09Н. Управляющее слово сброса разряда РС4 имеет вид: D7 D6 D5 D4 D3 D2 D1 DO 0 0 0 0 1 0. 0 0 В шестнадцатеричной системе исчисления оно равняется 08Н. Программа формирования импульса продолжительности п (мкс) на выходе РС4 порта С: MOV AL, 09 ; формирование управляющего слова OUT 0EH,AL ; установки разряда РС4 ; запись содержимого AL в регистр CALL DELAY ; управляющего слова ; задержка времени на п (мкс). MOV AL, 08 ; формирование управляющего слова OUT 0EH,AL ; сброса разряда РС4 ; вывод в регистр управляющего слова DELAY : MOV । CX,134 ; подпрограмма задержки на п(мкс). ; СХ<—134 (4 такта) D: LOOP D ; СХ<—СХ — 1, если не 0, то переход RET ; на D (при выполнении перехода на ; метку D, команда выполняется за ; 16 тактов, иначе - за 4 такта) ; возврат из подпрограммы (8 тактов) Определим продолжительность задержки в этом примере. В комментарии к командам подпрограммы задержки в скобках запишем время выполнения
228 Гпава 5 команд в тактах (см. табл. 2.11). Общее число тактов, необходимое для вы- полнения подпрограммы delay, равняется: 4+ 134 х 16 + 4 + 8 = 2160. При тактовой частоте 5 МГц продолжительность одного такта равняется 200 нс. Тогда значение п определяется как: « = 0,2x2159 = 431,8 мкс. В каждой группы А или В БИС имеется триггер разрешения прерывания INTE, установка/сброс которого осуществляется управляющим словом ус- тановки/сброса определенного разряда порта С. Если триггер разрешения прерывания соответствующей группы установлен (INTE = 1), то параллель- ный интерфейс может сформировать запрос прерывания при готовности УВВ к обмену. Рассмотрим режимы работы портов программируемого параллельного ин- терфейса. Режим 0 применяется при синхронном обмене или при программной орга- низации асинхронного обмена. В этом режиме БИС представляет собой устройство, которое состоит из четырех портов (два 8-разрядных А, В и два 4-разрядных С, С"), которые могут независимо настраиваться на ввод или вывод информации. Вывод информации осуществляется по команде оит с фиксацией выведенной информации в регистрах портов, а ввод — по команде in без запоминания информации. Пример 5.6. Установить порт А в режим ввода 0, порт В — в режим вывода 0, порт С — в режим ввода 0, порт С" — в режим вывода 0, а потом осуществить ввод и вывод информации через порты А и В соответственно. Управляющее слово режима в этом случае имеет вид: 1 Ml МО ЮА ЮС м ЮВ юс D7 D6 D5 D4 D3 D2 DI D0 ~ Ml МО ЮА ЮС М I ЮВ ЮС 1 0 0 Программа имеет вид: 1 1 0 0 0 = 98Н MOV AL, 98Н Л OUT OEH,AL IN AL,08H OUT 0AH, AL Формирование управляющего в AL Запись в регистр RWC Ввод из порта А Вывод на порт В слова режима 98Н Укажем, что в этом примере адреса портов определяются по схеме рис. 5.9.
Интерфейс устройств ввода/вывода 229 Режим 1 обеспечивает однонаправленный обмен информацией МП с УВВ по стробу готовности. Информация передается по портам А и В, а линии порта С управляют передачей. Работу порта в режиме 1 сопровождают три управляющих сигнала. Если один из портов запрограммирован на режим 1, то оставшиеся 13 линий портов можно использовать в режиме 0. Если оба порта запрограммированы на режим 1, то две оставшиеся линии порта С могут быть запрограммированы на ввод или вывод. Назначение разрядов порта С при вводе данных из портов А и В в режиме 1 показано на рис. 5.12. Группа А Группа В ^PC7 РС6 РС5 РС4 РОЗ РС2 РС1 РСО I lo I lo I IBFA I INTE A I INTRA I INTE В I IBF В I INTR В I Рис. 5.12. Назначение разрядов порта С при вводе данных из портов А и В в режиме 1 На рис. 5.12 обозначено: □ IBF (Input Buffer Full) — выходной сигнал БИС, который сообщает о заполнении входного буфера порта данными; □ INTR (INTeRrupt) — выходной сигнал, который сообщает о завершении приема информации; □ INTE (INTerrupt Enable) — сигнал разрешения прерывания (вход строба приема). Пример схемы соединения устройства ввода с портом А, устройства вывода с портом В в режиме 1 показан на рис. 5.13. Ввод данных в режиме 1 осуществляется по каналу А, а управляющие сиг- налы передаются по линиям РС4 и РС5. Устройство ввода выдает строб приема STB , который указывает на готовность к вводу информации. Этот строб поступает на вход разрешения прерывания от канала А — РС4. Вы- ходной сигнал IBF линии РС5 используется для подтверждения приема. Он формируется по спаду STB и сообщает устройству ввода об окончании приема данных. Кроме показанных на рис. 5.13 сигналов, программируемый параллельный интерфейс формирует также сигнал запроса прерывания INTR, который информирует МП о завершении приема информации. При обмене по пре- рыванию этот сигнал используется в качестве запроса прерывания, а при программном обмене может игнорироваться. Высокий уровень этого сиг- нала устанавливается, если STB , IBF = 1. Нулевой уровень сигнала INTR устанавливается при поступлении сигнала STB при чтении соответствую- щего порта программируемого параллельного интерфейса.
230 Гпава 5 Рис. 5.13. Схема соединения устройства ввода с портом А, устройства вывода с портом В в режиме 1 Назначение разрядов порта С в режиме вывода 1 показано на рис. 5.14. Г руппа А Группа В РС7 РС6 РС5 РС4 РОЗ РС2 РС1 'рсо ~OBF А INTE А /О /О INTRA INTE В OBF В INTR В Рис. 5.14. Назначение разрядов порта С при выводе данных на порты А и В в режиме 1 OBF (Output Buffer Full) — выходной сигнал, который сообщает про за- полненность выходного буфера порта данными. Другие сигналы имеют такой же смысл, что и на рис. 5.12. Пример вывода данных на порт В в режиме 1 показан на рис. 5.13. Для вы- вода данных в этом режиме используются такие управляющие сигналы: OBF — выходной сигнал, который формируется по фронту WR и сообща- ет УВВ о готовности к выводу; АСК — входной сигнал, который подтвер- ждает прием информации от БИС интерфейса; INTR — выходной сигнал БИС, сообщающий МП о завершении вывода. Сигнал INTR устанавлива-
Интерфейс устройств ввода/вывода 231 ется в единицу при OBF = l и АСК = 1, и сбрасывается в нуль сигналом IOW при записи данных в параллельный интерфейс. Разряды РС6, РС7 при вводе (см. рис. 5.12) и РС5, РС4 при выводе (см. рис. 5.14) не участвуют в управлении обменом и могут быть запрограмми- рованы на простой ввод или вывод (I/O). Ввод осуществляется чтением пор- та С, а вывод — записью управляющих слов установки/сброса отдельных разрядов (см. рис. 5.11). Стробированный обмен может осуществляться по прерыванию или по про- грамме. При обмене по прерыванию сигнал INTR поступает в систему пре- рывания и инициирует обмен. При программном обмене готовность портов А или В определяется путем опроса разрядов INTR А или В соответственно. Пример 5.7. Написать программу установки порта А в режим ввода 1 и вве- сти данные по стробу готовности. Адреса порта А определяются по рис. 5.9. Управляющее слово режима в этом случае имеет вид: D7 D6 D5 D4 D3 D2 DI D0 1 Ml МО IOA ЮС М ЮВ ЮС” 1 0 1 1 0 0 0 0 = ОВОН Программа имеет вид: MOV AL, ОВОН ; Формирование управляющего слова режима в AL OUT 0EH,AL ; Запись в регистр RWC БИС КР580ВВ55 MOV AL,09 ; формирование управляющего слова установки ; разряда РС4 — INTE А — разрешение прерываний OUT 0EH,AL ; Запись содержимого AL в регистр управляющего ; слова Ml: IN AL,ОСН AND AL, 00001000В ; JZ Ml IN AL, 08H AL < содержимое порта С Маскирование всех разрядов, кроме РСЗ (INTR А) Если данные не готовые, то на Ml, иначе — ввод информации из порта А Режим 2 обеспечивает двунаправленную передачу информации из порта А во внешнее устройство и наоборот. Процесс обмена сопровождают 5 управ- ляющих сигналов, которые передаются по линиям РС7—РСЗ (см. рис. 5.14). 11 интерфейсных линий, которые остались, могут быть запрограммированы на режим 0 или режим 1. Назначение разрядов порта С в режиме 2 приведе-
232 Гпава 5 но на рис. 5.15, а схема соединения программируемого параллельного ин- терфейса — на рис. 5.16. Назначение управляющих сигналов в режиме 2 аналогично назначению сигналов в режиме 1. Управление формированием внутреннего сигнала INTE для операции ввода осуществляется по линии РС4, для операции вы- вода — по линии РС6. РС7 РС6 РС5 РС4 РСЗ РС2 РС1 РСО OBFA INTE1 IBFA INTE2 INTRA Зависят от режима порта В Рис. 5.15. Назначение разрядов порта С в режиме 2 Рис. 5.16. Схема подключения УВВ к БИС КР580ВВ55 в режиме 2 Вывод БИС INTR А используют как запрос прерывания, как при вводе, так и при выводе информации. Распределение сигналов по интерфейсным лини- ям, управляющее слово режима 2 и временные диаграммы работы иллюст- рирует рис. 5.17. Пример 5.8. Написать программу установки порта А в режим ввода 2, а потом осуществить ввод (вывод) информации через порт А в этом режиме. Управляющее слово режима в этом случае будет равняться ОСОН: D7 D6 D5 D4 D3 D2 D1 DO I Ml МО ЮА юс М ЮВ ЮС" 1 1 0 0 0 0 0 0
Интерфейс устройств ввода/вывода 233 Программа двунаправленного ввода/вывода по стробу готовности должна сначала обнаружить готовность порта к вводу или выводу по единичному состоянию сигнала INTR А (линия РСЗ), а потом установить, какие именно данные готовы — для ввода (единичное состояние линии РС4) или вывода (единичное состояние линии РС6). После этого можно осуществлять обмен данными. а РА7-РА0 <> _____INTRA РСЗ -----► -----$ТВА РС5 -----► IBFA РС6 ( М----АСКА РС7(^----^OBF А РВ7-РВ0 РС2-РС0 » Рис. 5.17. Работа БИС в режиме 2: a — распределение сигналов по интерфейсным линиям; б — временные диаграммы работы Программа имеет вид: MOV AL, ОСОН ; формирование управляющего слова ; режима в AL OUT 0EH,AL ; Запись в регистр RWC БИС КР580ВВ55 Ml: IN AL, OCH ; AL <— содержимое порта С MOV BL,AL ; Сохранение содержимого AL в ; регистре BL AND AL, 00001000B ; Маскирование всех разрядов, кроме ; РСЗ (INTR А) JZ Ml ; Если данные не готовы, то на Ml MOV AL, Bl’ ; AL <— содержимое порта С AND AL, 00010000B ; Маскирование всех разрядов, кроме ; РС4 (INTR А)
234 Гпава 5 JZ М2 ; Если данные готовы не для ввода, IN AL, 08Н ; то переход на М2 ; иначе — ввод информации из порта А JMP М3 М2: OUT 08H,AL ; Вывод информации на порт А М3 : ; Продолжение программы Контрольные вопросы и задания 1. Укажите назначение БИС программируемого параллельного интерфейса КР580ВВ55. 2. Опишите режимы работы программируемого параллельного интерфейса. 3. Назовите возможные комбинации включения портов БИС КР580ВВ55. 4. Какие порты параллельного интерфейса могут работать во всех возмож- ных режимах? 5. Запишите управляющее слово для работы параллельного интерфейса в режиме 0 при настройке портов А и В на вывод, порта С — на ввод. 6. Объясните принцип сброса/установки разрядов порта С. 5.3. Программируемый интерфейс клавиатуры и индикации Программируемый интерфейс клавиатуры и индикации КР580ВВ79 предна- значен для реализации обмена информацией между МП и матрицей клавиш (или датчиков) и блоком индикации — дисплеем до 16 символов. В отличие от БИС параллельного интерфейса КР580ВВ55 (см. разд. 5.2), который мо- жет использоваться для любого устройства, осуществляющего ввод/вывод данных в параллельном формате, программируемый интерфейс клавиатуры и индикации является специализированным и предназначен для обмена ин- формацией лишь с некоторыми типами клавиатуры и индикаторов. Струк- турная схема БИС показана на рис. 5.18. Обозначение выводов приведено в табл. 5.5. Схема содержит: двунаправленный 8-разрядный буфер данных BD, который соединяет линии данных БИС с системной шиной данных; блок RWCU, ко- торый обеспечивает управление внешней и внутренней передачей данных и управляющих слов; блок управления; блок интерфейса индикации; блок ин- терфейса клавиатуры.
Интерфейс устройств ввода/вывода 235 Рис. 5.18. Структурная схема программируемого интерфейса клавиатуры и индикации Таблица 5.5. Назначение выводов БИС КР580ВВ79 Обозначение вывода Номер вывода Назначение выводов 1 2 3 DO—D7 12; 13; 14; 15; 16; 17; 18; 19 Вход/выход данных CLK 3 Вход синхросигналов с частотой не выше 3,2 МГц
236 Гпава 5 Таблица 5.5 (продолжение) Обозначение вывода Номер вывода Назначение выводов 1 2 3 RD 10 Чтение. L-уровень сигнала разрешает считывание ин- формации из регистра, адресуемого разрядом АО и указанный в предшествующем управляющем слове WR 11 Запись. L-уровень сигнала разрешает запись информа- ции с шины D7—D0 в регистр, адресуемый разрядом АО и указанный в предшествующем управляющем слове АО 21 При единице в БИС записывается управляющее слово или считывается слово состояния. При нуле — пере- даются данные RESET 9 Сброс. Н-уровень сигнала сбрасывает БИС интерфей- са в начальное состояние cs" 22 Вход выборки микросхемы; L-уровень сигнала соеди- няет шину данных D7—D0 БИС с системной шиной SO-S3 32; 33; 34; 35 Линии сканирования как клавиатуры (матрицы дат- чиков), так и позиций дисплея могут работать в ре- жиме счетчика или инверсного дешифратора R0-R7 38; 39; 1; 2; 5; 6; 7; 8 Линии возврата. Соединяются с линиями сканирова- ния через клавиатуру (матрицу датчиков). Нажатие клавиши приводит к появлению нуля на одной из ли- ний возврата SHIFT 36 Сдвиг. Состояние этой линии запоминается в коде клавиши и может быть использовано как признак пе- реключения клавиатуры CNTR/STB 37 В режиме клавиатуры используется так же, как и ли- ния SHIFT. В режиме стробированного ввода — вход строба (ввод осуществляется по переднему фронтом STB) Ucc 26 Вывод напряжения питания +5 В GND 7 Общий вывод 0 В ОАО—OA3 OBO—OB3 27; 26; 25; 24; 31; 30; 29; 28 Выходы регистров данных дисплея. Могут быть использованы как один 8-разрядный или два 4-разрядных выхода BD 23 Гашение дисплея при переключении цифр или при подаче управляющего слова очистки дисплея
Интерфейс устройств ввода/вывода 237 Таблица 5.5 (окончание) Обозначение вывода Номер вывода Назначение выводов 1 2 3 Ucc 40 Вывод напряжения питания +5 В GND 20 Общий вывод 0 В Блок управления содержит схему управления и синхронизации и счетчик сканирования СТ. Схема управления и сигнализации формирует сигналы, управляющие всеми блоками БИС, сигналы внутренней синхронизации и сигнал BD для гашения индикатора во время изменения символов. В со- став схемы входит делитель частоты с программируемым коэффициентом деления для генерации внутренних импульсов синхронизации частотой до 100 кГц. Счетчик сканирования формирует коды на линиях S3—S0 для мат- рицы клавиатуры и управления индикацией. При этом в зависимости от управляющих слов на эти линии можно выдавать либо содержимое четырех младших разрядов счетчика, либо выход инверсного 4-разрядного дешиф- ратора. Блок интерфейса индикации содержит ОЗУ индикации RAM 1 с информа- ционной емкостью 16x8, адресный регистр Address RG и выходной регистр Out RG. ОЗУ состоит из двух независимых частей по 16 четырехразрядных слов каждая и сохраняет коды символов для индикации 8 или 16 знакомест. Тип индикации задается соответствующим управляющим словом. Данные из ОЗУ передаются через выходные регистры на выходы ОАЗ—ОАО (старшая часть 8-разрядного слова) и ОВЗ—ОБО (младшая часть). В блок интерфейса клавиатуры входят ОЗУ RAM 2 клавиатуры/датчиков, буфер возврата BR, схема устранения дребезга контактов CU, схема анали- за состояния ОЗУ State RAM. Блок обеспечивает ввод информации через линии возврата (R7—R0) с клавиатуры. Сохранение введенной информации осуществляется в ОЗУ RAM 2, представляющее собой стек емкостью 8 х х 8 бит. Входные линии R7—R0 имеют высокое внутреннее сопротивление, что дает возможность непосредственного подсоединения к ним матрицы клавиатуры или датчиков. Для обеспечения режима ввода данных с датчи- ков по стробу готовности предусмотрена линия CNTL/STB. Выходы буфера BR соединенные с входами схемы CU, выявляющей за- прещенные ситуации при нажатии клавиш и не допускающей повторного ввода кода клавиш из-за дребезга контактов. Схема анализа состояния ОЗУ формирует статусную информацию о работе ОЗУ и сигнал запроса преры- вания IRQ.
238 Гпава 5 Функциональная схема примера соединения БИС с системной шиной МП показана на рис. 5.19. Рис. 5.19. Соединение БИС КР580ВВ79 с системной шиной МПС Программирование микросхемы КР580ВВ79 осуществляется путем записи управляющего слова инициализации клавиатуры и дисплея в регистр управляю- щих слов, входящий в состав блока управления. При записи управляющих слов на вход АО нужно подавать сигнал логической единицы. Формат управ- ляющего слова инициализации клавиатуры и дисплея показан на рис. 5.20. D7 D6 D5 D4 D3 D2 D1 D0 0 0 0 ° 1 ° 1 к I * Рис. 5.20. Формат управляющего слова инициализации клавиатуры и дисплея Разряды D3 и D4 управляющего слова (рис. 5.20) определяют режим работы дисплея: D4 D3 Режим работы дисплея 0 0 Дисплей на 8 символов с вводом слева 0 I Дисплей на 16 символов с вводом слева I 0 Дисплей на 8 символов с вводом справа I I Дисплей на 16 символов с вводом справа
Интерфейс устройств ввода/вывода 239 Разряды D1 и D2 определяют режим работы клавиатуры: D2 D1 Режим работы клавиатуры 0 0 Клавиатура в режиме одиночного нажатия клавиш 0 1 Клавиатура в режиме ^клавишного нажатия 1 0 Сканирование матрицы датчиков 1 1 Режим стробированного ввода Разряд S определяет режим сканирования: при S = 0 — сканирование в ре- жиме 4-разрядного двоичного счетчика; при S = 1 — сканирование в режиме инверсного дешифратора по линиям S3—SO. Если сканирование осуществ- ляется в режиме дешифратора, то дисплей должен содержать не более 4 символов, а клавиатура — не более 8 х 4 = 32 клавиши. В управляющем слове инициализации опорной частоты (рис. 5.21) разряды D4—DO определяют коэффициент РРРРР деления частоты внешнего син- хросигнала CLK для получения внутреннего опорного сигнала с частотой не более 100 кГц. Число РРРРР представляет собой коэффициент деления в двоичном виде. D7 D6 D5 D4 D3 D2 D1 DO |о|о|1|р|р|р|р|р Рис. 5.21. Формат управляющего слова инициализации опорной частоты После сброса БИС сигналом RESET, устанавливается максимальный коэф- фициент РРРРР = 11111, т. е. 31. Пример 5.9. Запрограммировать БИС контроллера клавиатуры и индикации для работы с клавиатурой 8x8 клавиш в режиме N-клавишного нажатия и с дисплеем на 8 символов в режиме ввода слева. В соответствии со схемой подключения (рис. 5.19) БИС КР580ВВ79 имеет адреса ООН для данных и 02Н для записи управляющих слов и чтения статусной информации. Часто- та импульсов на входе CLK — 2 МГц. Определим управляющие слова.
240 Гпава 5 По условию примера и рис. 5.20 управляющее слово инициализации кла- виатуры и дисплея имеет вид: D7 D6 D5 D4 D3 D2 DI D0 0 0 0 0 0 0 1 0 и равняется 02Н. Управляющее слово инициализации опорной частоты (рис. 5.20) имеет вид: D7 D6 D5 D4 D3 D2 DI D0 0 0 1 1 0 1 0 0 и равняется 34Н. Значение РРРРР = 101002 определяет двоичный код коэф- фициента деления импульсов с частотой 2 МГц для обеспечения внутренней частоты 100 кГц (2000/100 = 20 = 101002). Программа инициализации БИС имеет вид: MOV AL, 02 ; Формирование первого управляющего ; слова режима в AL OUT 02, AL ; Вывод на интерфейс MOV AL, 34H ; Формирование второго управляющего ; слова режима в AL OUT 02, AL ; Вывод на интерфейс После такой последовательности команд интерфейс клавиатуры и индика- ции готов к работе в запрограммированном режиме. Соединение БИС интерфейса с клавиатурой и индикацией изображено на рис. 5.22. Пунктиром показано подсоединение внешнего дешифратора DC к БИС. В случае если клавиатура содержит меньше, чем 4x8 клавиш, а число симво- лов дисплея меньше 4, то сигналы на выводах S3—S0 можно непосредственно использовать для управления клавиатурой и индикацией, поскольку на выво- дах S3—S0 формируются сигналы дешифратора с четырьмя выходами. Под- соединение внешнего дешифратора (до 16 выходов) позволяет управлять кла- виатурой 8x8 клавиш и 16 символами дисплея. Функционирование блока интерфейса индикации. После записи управляю- щего слова инициализации клавиатуры и дисплея (см. рис. 5.20) блок ин- терфейса индикации устанавливается в один из четырех режимов, опреде- ляемых разрядами D3 и D4. Во всех режимах для индикации символа
Интерфейс устройств ввода/вывода 241 необходимо загрузить управляющее слово записи в ОЗУ индикации (рис. 5.23) с адресом, в котором АО = 1, а потом загрузить данные при адресе с АО = 1. При индикации данные из ОЗУ передаются на 8 линий ОАЗ—ОАО, ОВЗ— ОВО. Данные могут быть представлены семисегментным кодом при непо- средственном соединении индикаторов с линиями ОАЗ—ОАО, ОВЗ—ОВО или двумя 4-разрядными кодами при подключении внешних дешифраторов. Рис. 5.22. Структурная схема соединения БИС с клавиатурой и индикацией Разряды D3—DO управляющего слова (рис. 5.23) содержат адрес АААА по- зиции дисплея, которая должна быть прочитана. Разряд D4 содержит при- знак автоинкрементной адресации I. Если I = 1, то адрес будет инкременти- роваться после каждой операции чтения. D7 Об D5 D4 D3 D2 D1 DO ° 1 1 1 ' I л А А | А Рис. 5.23. Формат управляющего слова записи в ОЗУ индикации Для считывания данных из ОЗУ индикации необходимо загрузить управ- ляющее слово считывания из ОЗУ индикации (рис. 5.24) при АО = 1, а потом считать информацию из ОЗУ при АО = 0. Назначение разрядов управляющего слова (см. рис. 5.24) аналогично назна- чению разрядов управляющего слова (см. рис. 5.23). Поле АААА определяет адрес позиции в ОЗУ индикации, которая должна быть считана.
242 Гпава 5 D7 D6 D5 D4 D3 D2 D1 DO 1 0 | 0 I / | А | А | А | А | Рис. 5.24. Формат управляющего слова считывания из ОЗУ индикации Если дисплей содержит 8 символов, то блок управления микросхемы КР580ВВ79 сканирует дисплей за 5,1 мс при внутренней частоте 100 кГц, если же 16 символов — то за 10,23 мс. Процесс сканирования дисплея со- стоит в выдаче в выходной регистр индикации OUT RG (см. рис. 5.18) со- держимого каждой ячейки ОЗУ индикации. Функционирование блока ин- терфейса индикации зависит от способа выдачи кодов сканирования S3—S0 (см. рис. 5.18). В процессе сканирования в режиме инверсного дешифратора информация появляется только в первых четырех позициях дисплея, в ре- жиме 4-разрядного двоичного счетчика при использовании внешнего де- шифратора — в 16. Одновременно с изменением состояний счетчика скани- рования и содержимого выходного регистра индикации на выводе BD появляется сигнал логического нуля продолжительностью 150 мкс, что ис- пользуется для гашения индикации с изменением символов. В режимах вывода информации на индикацию при вводе новых символов слева каждой позиции дисплея отвечает один байт в ОЗУ индикации. Ячей- ке ОЗУ с нулевым адресом отвечает крайняя левая позиция, а ячейке с адре- сом 7 (или 15) — крайняя правая. В режимах вывода информации с вводом новых символов справа код нового символа записывается в ячейку ОЗУ с нулевым адресом, при этом ранее записанная информация сдвигается влево. В этом режиме нет прямого соответствия между адресом ячейки ОЗУ и по- зицией дисплея. Программным путем можно запретить выдачу одной или обеих тетрад со- держимого выходных регистров. Вид управляющего слова запрета записи ОЗУ индикаци и гашения показан на рис. 5.25. 07 Об 05 04 ОЗ 02 01 ОО 1 0 1 X IWA | IWB BLA BLB Рис. 5.25. Формат управляющего слова запрета записи в ОЗУ индикации и гашения Байты ОЗУ индикации делят на тетрады: А (старшая), В (младшая). Разряды D3 (IWA) и D2 (IWB) — биты запрета записи информации в тетрады А и В ОЗУ индикации соответственно, разряды DI (BLA) и D3 (BLB) — биты га- шения или бланкирования (установки специального кода, например, кода пробела). Управляющее слово (рис. 5.25) позволяет маскировать одну из
Интерфейс устройств ввода/вывода 243 тетрад в случае двойного четырехпозиционного дисплея. В случае запрета записи в одну из тетрад продолжительность низкого уровня сигнала гаше- ния не меньше 150 мкс, а в случае запрета записи в обе тетрады определяет- ся временем действия управляющего слова. Для установки кода бланкирования, а также сканирования ОЗУ индикации и сброса байта состояния используется управляющее слово, формат которого показан на рис. 5.26. D7 Об D5 04 03 02 01 ОО I 1 I 1 0 CD | ВС1 ВС2 CF СА Рис. 5.26. Формат управляющего слова установки кода бланкирования, сканирования ОЗУ индикации и сброса байта состояния Разряды D3 (ВС1) и D2 (ВС2) позволяют выбрать один из кодов бланкиро- вания: ВС1 ВС2 Коды бланкирования 0 X 00 1 0 20Н (код пробела) 1 1 0FFH С установкой разряда D4 (CD) осуществляется процедура сброса ОЗУ ин- дикации путем заполнения кодами бланкирования. Установка разряда Dl(CF) сбрасывает байт состояния, сигнал прерывания и устанавливает указатель памяти матрицы клавиатуры на нулевую строку. Действие разря- да DO(CA) аналогично одновременному действию разрядов D4 и D1. Пример 5.10. Интерфейс клавиатуры и индикации запрограммирован на ре- жим сканирования 8-символьного дисплея с вводом с левой стороны. К БИС интерфейса подсоединены три семисегментных индикатора в пози- циях 0, 1,2. Привести функциональную схему подсоединения дисплея и на- писать программу выдачи на дисплей содержимого трех 8-битных ячеек па- мяти с начальным адресом DS : SI, в которых записаны семисегментные коды. Адреса БИС контроллера клавиатуры и индикации такие же, как в примере 5.9. Функциональная схема подсоединения дисплея показана на рис 5.27. Дис- плей состоит из трех семисегментных индикаторов типа АЛС321Б. Схема индикатора содержит восемь светодиодов, соединенных по схеме с общим анодом (рис. 5.28, а).
244 Гпава 5 Рис. 5.27. Функциональная схема подключения дисплея Светодиод засвечивается при поступлении на входы a-g сигнала низкого уровня (рис. 5.28, б), а на общий анод — сигнала высокого уровня. Ис- пользование семисегментных индикаторов этого типа требует подачу инверсных семисегментных кодов. Индикаторы гасятся при подаче кода бланкирования 0FFH. г ь °------- 6 с о ( 7 d О-----О--------------О 3 8 8 °-------------°------О 9 10 f О-------[<^]^> О-----О 14 11 9 °-----° 13 h О----- б Рис. 5.28. Семисегментный индикатор АЛС321Б: a — принципиальная схема; 6 — расположение светодиодов
Интерфейс устройств ввода/вывода 245 Программа вывода символрв на индикацию начинается с гашения дисплея записью кода 0FFH в ОЗУ индикации. Управляющее слово установки кода бланкирования, сканирования ОЗУ индикации и сброса байта состояния (рис. 5.26) должно содержать значения CD = 1, ВС1 = ВС2 = 1. Тогда значе- ние управляющего слова равняется 0DCH. Информация на дисплей выводится после загрузки управляющего слова за- писи в ОЗУ индикации (см. рис. 5.25), в котором АААА = 0000,1 = 1. Значе- ние управляющего слова равняется 70Н. Программа имеет вид: MOV AL, 0DCH ; Формирование управляющего слова OUT 02, AL ; установки кода бланкирования, ; сканирования ОЗУ индикации и ; сброса байта состояния ; Вывод на интерфейс CALL DELAY1 ; Задержка на время бланкирования MOV AL, 70H ; Формирование управляющего слова OUT 02, AL ; записи в* ОЗУ индикации ; Вывод на интерфейс MOV CX, 3 ; Загрузка счетчика байт M0: MOV AL, [SI] ; Считывание из ОЗУ индикации OUT 00, AL ; Вывод данных на интерфейс INC LOOP CALL SI M0 DELAY2 ; Увеличение адреса на единицу ; Задержка на время сканирования Поскольку новые значения на индикацию можно передавать лишь после задержки на время сканирования данных в ОЗУ дисплея (5,1 мс), то приве- денная программа содержит подпрограмму временной задержки DELAY2. Функционирование блока интерфейса клавиатуры (датчиков). Все режимы ра- боты блока интерфейса клавиатуры (датчиков), задаваемые разрядами D1 и D2 управляющего слова инициализации клавиатуры и дисплея (см. рис. 5.20), можно разделить на три группы: □ опрос матрицы клавиатуры; О опрос матрицы датчиков; □ стробированный ввод данных.
246 Гпава 5 В режиме опроса матрицы клавиатуры (при DI = D2 = 0 и при DI = 1, D2 = 0) нажатие любой клавиши инициирует генерацию высокого уровня сигнала прерывания на выводе IRQ, а код нажатой клавиши записывается в ОЗУ клавиатуры (датчиков). При опросе матрицы клавиатуры функциони- рует схема устранения дребезга контактов. Обращение к ОЗУ происходит по принципу очереди: код, записанный в ОЗУ первым, считывается с него также первым. Чтобы считать код клавиши из ОЗУ, надо загрузить в ин- терфейс клавиатуры и индикации управляющее слово чтения ОЗУ клавиа- туры (датчиков) (рис. 5.29) при АО = 1, а потом считать данные из ОЗУ при АО = 0. 07 Об 05 04 D3 D2 01 DO О I 1 I О I / I X I А I Д I Д Рис. 5.29. Формат управляющего слова чтения ОЗУ клавиатуры (датчиков) Разряд D4 (см. рис. 5.29) содержит признак автоинкрементной адресации I, разряды D2—DO — адрес ААА байта ОЗУ клавиатуры (датчиков), который должен быть считан. Если бит I установлен, то следующие команды чтения данных будут вызывать автоматическое инкрементирование адреса. Для чтения содержимого всего ОЗУ необходимо загрузить управляющее слово чтения ОЗУ клавиатуры (датчиков) при I = 1, а после этого 8 раз считать данные. Формат данных при чтении ОЗУ клавиатуры (датчиков) показан на рис. 5.30. В разрядах D5—D3 размещается номер строки матрицы нажатой клавиши — значение разрядов S2—SO счетчика сканирования; в разрядах D2—DO помещен номер столбца матрицы нажатой клавиши — значение разрядов R2—R0. Разряды D7—D6 могут использоваться при вводе с рас- ширенной клавиатуры — в них записывается состояние дополнительных клавиш, соединенных с выводами SHIFT и CNTL. 07 D6 05 04 D3 D2 01 DO CNTL SHIFT S2 S1 SO R2 R1 RO Рис. 5.30. Формат данных при чтении ОЗУ клавиатуры (датчиков) При считывании данных из ОЗУ клавиатуры (датчиков) сигнал прерывания IRQ сбрасывается, но в случае, если ОЗУ клавиатуры (датчиков) содержит еще не прочитанные данные, на выводе IRQ снова генерируется сигнал вы- сокого уровня.
Интерфейс устройств ввода/вывода 247 Режим опроса матрицы клавиатуры включает □ режим одиночного нажатия клавиш с запретом ввода кодов при нажатии двух или более клавиш (DI = D2 = 0); □ TV-клавишного нажатия с разрешением ввода кодов при нажатии N кла- виш (DI = l,D2 = 0). В режиме одиночного нажатия, если нажаты две или более клавиши, в ОЗУ клавиатуры (датчиков) записывается код лишь одной из клавиш — первой нажатой или той, которая опрашивается первой. В режиме N-клавишного нажатия в ОЗУ заносятся коды всех нажатых кла- виш в порядке очереди их опроса при сканировании матрицы клавиатуры. В этом режиме можно запрограммировать БИС интерфейса на специальный режим ошибки сканирования клавиатуры установкой единичного значения разряда D4(E) в управляющем слове сброса прерывания/установки режима ошибки сканирования (рис. 5.31). Это управляющее слово также устанавлива- ет L-уровень сигнала прерывания на линии IRQ. D7 D6 D5 D4 D3 D2 D1 DO l1l1l1lElxlxlxlxl Рис. 5.31. Формат управляющего слова сброса прерывания/установки режима ошибки сканирования При одновременном нажатии нескольких клавиш устанавливается флаг ошибки в байте состояния и генерируется высокий уровень сигнала на вы- воде IRQ. Формат байта состояния показан на рис. 5.32. Единичное значе- ние разряда D7(DU) указывает на недоступный дисплей, т. е. на то, что не закончена операция очистки ОЗУ индикации, единичное значение разряда D6(S/E) — на то, что датчик замкнут (в режиме опроса матрицы датчиков) или на ошибку многоклавишного нажатия (в режиме клавиатуры), единич- ное значение разряда D5(O) — на ошибку переполнения. Этот разряд уста- навливается тогда, когда выполняется попытка записи в заполненную па- мять клавиатуры. Единичное значение разряда D4(U) указывает на ошибку опустошения и устанавливается тогда, когда выполняется попытка считы- вания данные из пустого ОЗУ клавиатуры (датчиков). Единичное значение разряда D3(F) указывает на заполненность ОЗУ клавиатуры (датчиков). Разряды D2—DO (N2—NO) определяют количество символов в ОЗУ клавиа- туры (датчиков). В режиме опроса матрицы датчиков изменение состояния одного из датчи- ков инициирует генерацию высокого уровня сигнала на выводе IRQ. При этом значения разрядов R7—R0 непосредственно записываются в ОЗУ кла-
248 Гпава 5 виатуры (датчиков) без передачи управления схеме устранения дребезга контактов. Об 05 04 03 02 О1 ОО DU S/E 0 и 1 F N2 N1 | ЛЮ Рис. 5.32. Формат байта состояния В режиме стробированного ввода значения разрядов R7—R0 записываются в ОЗУ клавиатуры (датчиков), при этом ввод данных происходит по линиям R7—R0 и стробируется сигналом на выводе CNTL/STB. Пример 5.11. Привести функциональную схему соединения БИС с интерфей- сом клавиатуры, которая содержит клавиши 10 цифр и клавишу <Enter>. Определить коды клавиш. Интерфейс клавиатуры и индикации запрограм- мирован на режим опроса матрицы клавиатуры с запретом ввода кодов при нажатии У-клавиш. Функциональная схема соединения БИС с клавиатурой показана на рис. 5.33. Рис. 5.33. Функциональная схема соединения БИС с клавиатурой
Интерфейс устройств ввода/вывода 249 При таком соединении коды клавиш, которые записываются в ОЗУ кла- виатуры, определяются по рис. 5.30. Для цифр от 0 до 9 коды совпадают с цифрами, обозначенными в кавычках (рис. 5.33). Код клавиши <Enter> определяется как 00 001 010 и равняется 0AH. Контрольные вопросы и задания 1. Укажите назначение БИС программируемого интерфейса клавиатуры и индикации. 2. Какое максимальное число клавиш можно соединить с БИС программи- руемого интерфейса клавиатуры и индикации КР580ВВ79? 3. Объясните особенности режима опроса матрицы клавиатуры. 4. Объясните особенности режима опроса матрицы датчиков. 5. Объясните особенности режима ввода по стробу. 5.4. Программируемый таймер Программируемый таймер (ПТ) КР1810ВИ54 предназначен для организа- ции работы МП систем и формирования сигналов с разными временными и частотными характеристиками. Структурная схема БИС показана на рис. 5.34, а условное обозначение — на рис. 5.35. Схема таймера содержит: блок управления чтением/записью RWCU с реги- стром управляющего слова RCW; трехстабильный буфер данных BD; три канала на базе 16-разрядных отрицательных счетчиков СТО—СТ2. Каждый канал содержит счетчик, входные и выходные буферные регистры. Счетчи- ки могут работать в двоичном или двоично-десятичном коде. Максималь- ная частота счетчика составляет 2 МГц для КР580ВИ53 и 5 МГц для КР1810ВИ54. В табл. 5.6 приведены назначения выводов ПТ КР580ВИ54. Таблица 5.6. Назначение выводов БИС таймера КР580ВИ54 Обозначение Номер вывода Назначение I 2 3 D7—D0 1—8 Шина данных CS 21 Выборка кристалла; при CS = 0 разрешена работа БИС
250 Гпава 5 Таблица 5.6 (окончание) Обозна-чение Номер вывода Назначение 1 2 3 RD 22 Чтение. Сигнал RD = 0 настраивает входной буфер на вывод, при котором программированный таймер выдает информацию в МП WR 23 Запись. Сигнал WR = 0 настраивает входной буфер на ввод, при котором программированный таймер принимает информацию от МП АО, Al 19; 20 Адресные входы, по которым происходит адресация к одному из трех каналов таймера CLK2—CLKO 9; 15; 18 Вход тактовых сигналов для управления счетчиком/ таймером. Срез сигнала на входе CLK приводит к уменьшению содержимого счетчика таймера на единицу GATE2--GATE0 11; 14; 16 Входы разрешения счета OUT2—OUTO 10; 13; 17 Выходы счетчика/таймера Рис. 5.34. Структурная схема БИС КР580ВИ54: CLK — входы тактовых (счетных) импульсов; GATE — входы разрешения счета, действие которых зависит от режима работы канала; OUT — выходы счетчиков
Интерфейс устройств ввода/вывода 251 Разряды А1, АО (рис. 5.34) выбирают обращение к счетчикам или к регистру управляющего слова RCW: А1 АО Обращение 0 0 СТО 0 1 CTI 1 0 СТ2 1 1 RCW Сигналы управления работой БИС WR, RD, CS подаются на блок RWCU и вместе с адресными разрядами АО, А1 задают вид выполняемой операции в соответствии с табл. 5.7. Таблица 5.7. Bud операции программируемого таймера в зависимости от сигналов управления и адресных разрядов Операция Сигналы управления WR RD CS АО Al Запись управляющего слова в RCW 0 1 0 1 1
252 Гпава 5 Таблица 5.7 (окончание) Операция Сигналы управления WR RD "CS АО Al Загрузка СП) 0 1 0 0 0 Загрузка СТ\ 0 1 0 0 1 Загрузка С Т2 0 1 0 1 0 Чтение СИ) 1 0 0 0 0 Чтение СТ\ 1 0 0 0 1 Чтение СТ2 1 0 0 1 0 Отсоединение программируемого таймера от шины 1 1 0 X X Примечание, х— любое значение (0 или 1). Обобщенная схема подсоединения ПТ к шинам микропроцессора показана на рис. 5.36. В качестве примера адресные линии А1, АО можно подсоеди- нить к линиям А2, А1 шины адресов, на вход CS подать сигнал с выхода дешифратора, как на рис. 5.9 или 5.19. Рис. 5.36. Подключение программируемого таймера к шинам микропроцессора
Интерфейс устройств ввода/вывода 253 Установка режима работы каждого канала программируемого таймера осуществляется программно — записью управляющего слова (рис. 5.37) и начального содержимого счетчика. D7 D6 D5 D4 D3 D2 D1 DO CNT1 | СЫТО | RW1 | RW0 | М2 | М1 | МО | К Рис. 5.37. Формат управляющего слова программируемого таймера Значения разрядов D7 (CNT1) и D6 (CNT0) выбирают счетчик (табл. 5.8). Таблица 5.8. Выборка счетчика D7 D6 Счетчик 0 0 Счетчик (СТО) 0 1 Счетчик (СТ1) 1 0 Счетчик (СТ2) 1 1 Запрещенная комбинация для КР580ВИ53 и команда чте- ния слова состояния для КР1810ВИ54 Значения разрядов D5 (RW1) и D4 (RW2) выбирают способ чтения/записи (табл. 5.9). Таблица 5.9. Способ чтения/записи D5 D4 Способ чтения/записи 0 0 Чтение содержимого счетчика 0 I Запись только младшего байта 1 0 Запись только старшего байта 1 1 Запись младшего, а потом старшего байтов Значения разрядов D3—DI (М2—МО) выбирают один из 6 режимов работы счетчика (табл. 5.10). Таблица 5.10. Режимы работы программированного таймера М2 Ml МО Режим 0 0 0 Режим 0 0 0 1 Режим I
254 Гпава 5 Таблица 5.10 (окончание) М2 Ml МО Режим X 1 0 Режим 2 X 1 1 Режим 3 1 0 0 Режим 4 1, 0 1 Режим 5 Разряд D0 (К) определяет способ кодирования: □ DO = 0 — двоичный счетчик; □ DO = 1 — двоично-десятичный счетчик. Пример 5.12. Запрограммировать счетчик 0 в режим 1. Адрес счетчика 0- 10Н, регистра управляющего слова — 16Н. Определим управляющее слово: ООН 0010 = 32Н Программа будет иметь вид: MOV AL,32Н ; Формирование управляющего слова OUT 16H,AL ; Взвод его в RCW MOV AL, "младший байт" ; Загрузка младшего байта кода предустановки OUT ЮН, AL MOV AL, "старший байт" ; Загрузка старшего байта кода предустановки OUT ЮН, AL Порядок программирования каналов таймера чрезвычайно гибкий. Можно записать управляющие слова режимов во все каналы, а потом в произволь- ном порядке загружать коды предустановки, а можно запрограммировать в отдельности каждый канал (как в примере). В процессе работы программируемого таймера содержимое любого счет- чика можно прочитать двумя способами: □ приостановить работу счетчика подачей сигнала GATE - 0 или блоки- рованием тактовых импульсов, а потом прочитать содержимое счетчика с помощью двух команд ввода. Первая команда ввода прочитает млад- ший байт, вторая — старший; □ записать в программируемый таймер управляющее слово, которое со- держит нули в разрядах D4, D5 (ноль в этих разрядах указывают на вы- полнение операции фиксации содержимого счетчика в выходном регист- ре канала в момент записи управляющего слова). Потом прочитать содержимое счетчика с помощью команд ввода.
Интерфейс устройств ввода/вывода 255 Пример 5.13. Прочитать содержимое счетчика СТО и записать его в регистр ВХ. Применять адреса таймера такие, как в примере 5.12. Запрограммиро- вать счетчик 0 в режиме 1. Определим управляющее слово для фиксации содержимого счетчика: 0000 00102 = 02Н Программа будет иметь вид: MOV AL,02Н ; Формирование управляющего слова OUT 16H,AL ; Вывод его в RCW IN AL, ЮН ; Чтение младшего байта MOV BL,AL ; Пересылка младшего байта в BL IN AL, ЮН ; Чтение старшего байта MOV BH,AL ; Пересылка старшего байта в ВН Таким образом, после выполнения программы в ВХ будет содержимое счетчика на момент его чтения, а счетчик будет продолжать счет. В БИС К1810ВИ54 возможно прочитать слова состояния счетчика. Для это- го необходимо записать управляющее слово (рис. 5.38). D7 D6 D5 D4 D3 D2 D1 DO I 1 I 1 \ COUNT I STAT I C72 I CTI I СТО I 0 I Рис. 5.38. Вид управляющего слова БИС К1810ВИ54: СТО, CTI, СТ2 — выбор счетчика Счетчик выбирается при записи единицы в соответствующий двоичный разряд СТО, CTI, СТ2. Значение STAT = 0 указывает на то, что будет про- читано слово состояния канала, указанного в разряде D3—D1. Значение COUNT = 0 указывает на то, что будет записано содержимое счетчиков, указанных в D3—D1, в выходных регистрах каналов. Слово состояния канала имеет вид, показанный на рис. 5.39. Во время записи управляющего слова в счетчик загружается сначала млад- ший, а потом старший байт кода передней установки. В дальнейшем работа таймера зависит от выбранного режима работы. Счетчики таймера могут работать в таких шести режимах: 0 — программи- руемая задержка; 1 — программируемый мультивибратор; 2 — программи- руемый генератор тактовых импульсов; 3 — генератор прямоугольных сиг-
256 Гпава 5 налов; 4 — программно-управляемый строб; 5 — аппаратно-управляемый строб. Влияние сигнала GATE на соответствующий счетчик зависит от ре- жима работы. D7 D6 D5 D4 D3 D2 D1 DO OUT FN RW1 RW0 М2 Л41 МО К Рис. 5.39. Вид слова состояния канала: OUT — состояние выхода OUT (0,1); FN — флаг перегрузки (FN = I, если была перезагрузка кода предустановки); разряды RW1, RW0, М2, Ml, МО и К (дублируют разряды управляющего слова (см. рис. 5.38)) Режим 0. Программируемая задержка. В этом режиме (рис. 5.40) на выходе выбранного канала таймера формируется сигнал Н-уровня с программно- управляемой задержкой. Задержка отсчитывается от заднего фронта перво- го импульса CLK после записи младшего байта кода предустановки (константы). После записи управляющего слова на выходе OUT выбранно- го канала таймера устанавливается сигнал L-уровня. Такое же состояние сохраняется при записи младшего байта константы. Если во время счета сигнал GATE = 0, счет прекращается, а с появлением GATE = 1 — восста- навливается с прерванного значения. По окончании счета на выходе OUT устанавливается сигнал Н-уровня. Загрузка в счетчик нового значения младшего байта в процессе счета останавливает счет, а загрузка старшего байта начинает новый цикл счета. 4 3 2 1 0 GATE OUT Л/= 4 Рис. 5.40. Режим программируемой задержки Режим 1. Программируемый мультивибратор. На выходе счетчика форми- руется импульс L-уровня с программно-управляемой продолжительностью,
Интерфейс устройств ввода/вывода 257 причем точкой начала отсчета является задний фронт первого импульса CLK после появления Н-уровня сигнала GATE (рис. 5.41). При появлении сигнала GATE = 1 на выходе OUT формируется импульс L- уровня продолжительностью N периодов тактовых импульсов CLK. Загруз- ка в процессе счета нового значения N не изменяет текущего режима счета. Мультивибратор автоматически перезапускается по каждому переднему фронту сигнала GATE . . clk jwijwwnjbrm IЛ/О л I-и ! ! WR Д/=4 GATE OUT 4 3 2 1 0 — Рис. 5.41. Режим программируемого мультивибратора Режим 2. Программируемый генератор тактовых импульсов. В этом режиме (рис. 5.42) выбранный канал осуществляет деление частоты импульсов CLK на программно-управляемый коэффициент N, т. е. генерирует периодиче- ский сигнал с частотой, в Араз меньше частоты тактовых импудьсов CLK. CLK N=4 N=3 WR GATE OUT 4 3 2 1 0 (3) 2 1 0(3) 2 Рис. 5.42. Режим программируемого генератора тактовых импульсов
258 Гпава 5 Выходной сигнал L-уровня устанавливается на последнем такте периода. Загрузка счетчика новым значением N в процессе счета приводит к измене- нию периода. Сигнал GATE можно использовать для внешней синхрониза- ции программируемого таймера, поскольку значение GATE = 0 запрещает счет, устанавливая сигнал OUT = 1, а значение GATE = 1 начинает счет сначала. Режим 3. Генератор прямоугольных импульсов. Выбранный канал формиру- ет прямоугольные импульсы с программно-управляемым периодом. Дейст- вие сигнала GATE аналогичное режиму 0. При четном значении N на выхо- де счетчика генерируется сигнал Н-уровня на протяжении первой половины периода и L-уровня на протяжении второй. При нечетном N продолжитель- ность Н-уровня на один такт больше, чем для L-уровень. В режиме 3 число N = 3 нельзя загружать в счетчик. Временные диаграммы для этого режима приведены на рис. 5.43. OUT 0(4) 3 2 1 0(4) з 2 1 0(4) N =4 0(5) 4 3 2 1 0(5) 4 3 2 1 OL/T ----------- ------------------- N=5 __________ __________________ ______________ I Рис. 5.43. Режим генератора прямоугольных импульсов Режим 4. Программно-управляемый строб. В этом режиме на выходе тайме- ра формируется строб L-уровня продолжительностью Tclk с программно- управляемой задержкой относительно момента записи младшего байта кода предустановки. Перезагрузка младшего байта в процессе счета не влияет на текущий счет, а загрузка старшего байта начинает новый цикл счета. Режим 5. Аппаратно-управляемый строб. Этот режим аналогичен режиму 4. Его отличие от режима 4 состоит в том, что началом отсчета программно- управляемой задержки является передний фронт сигнала GATJE. Запуск счетчика осуществляется передним фронтом сигнала GATE. Загрузка в счетчик нового значения N в процессе счета не влияет на продолжительность текущего цикла, но такой цикл будет соответствовать новому значению N.
Интерфейс устройств ввода/вывода 259 Диаграммы работы таймера, которые иллюстрируют действие сигнала GATE, показаны на рис. 5.44, а для таймера КР580ВИ53 и таймера КР1810ВИ54 — на рис. 5.44, б. Для таймера КР580ВИ53 с появлением L- уровня сигнала GATE счет прекращается, а с появлением Н-уровня — вос- станавливается с прерванного значения. Для таймера КР1810ВИ54 L- уровень сигнала GATE также прекращает счет, а Н-уровень — начинает со значения кода предустановки. ак GATE OUT 432 210 CLK GATE 4 3 2 1 4 3 2 1 0 6 Рис. 5.44. Диаграммы работы таймера: a — для таймера КР580ВИ53; б — для таймера КР1810ВИ54 Пример 5.14. Запрограммировать счетчик СТО в режим генератора прямо- угольных импульсов для получения частоты/Вых= 1 кГц. Примем адреса таймера такие, как в примере 5.12. Для получения последова- тельности импульсов 1 кГц подключим к выводу G0 сигнал Н-уровня, на вывод CLK0 — тактовые импульсы с частотой 5 МГц.
260 ’ Гпава 5 Находим значения коэффициента деления как: лг=2с^ = 522£ = 5ооо. /вых I Определим управляющее слово в соответствии с рис. 5.43 для программиро- вания счетчика СТО в режим 3, с двоично-десятичным способом кодирова- ния: 00 11 011 И = 37Н Тогда программа будет иметь вид: MOV AL,37Н ; Программирование OUT 16H,AL ; таймера MOV AL,00 ; Запись младшего байта OUT 10H,AL ; кода предустановки (00) MOV AL,50H ; Запись старшего байта OUT 10H,AL ; кода предустановки (50) После выполнения программы на выводе OUTO прямоугольные импульсы с частотой 1 кГц будут до тех пор, пока не будет перепрограммирован таймер или выключен источник питания таймера. Контрольные вопросы и задания 1. Какие функции выполняет программируемый таймер в МПС? 2. Из каких блоков состоит таймер? Что входит в состав одного счетчика? 3. Опишите режимы работы таймера. 4. Чем отличается действие сигнала GATE в режимах 0 и 1? 5. Какие новые функции имеет БИС КР1810ВИ54 сравнительно с БИС КР580ВИ53? 6. Назовите возможные комбинации работы каналов таймера. 7. Назовите примеры использования таймера МПС. 8. Запишите управляющие слова для работы таймеров в режимах 0, 2, 5. 9. Каким способом можно прочитать содержимое внутренних регистров таймера? 10. Для чего нужны линии АО, А1 таймера?
Интерфейс устройств ввода/вывода 261 5.5. Архитектура и функциональные возможности контроллера прямого доступа к памяти Контроллер прямого доступа к памяти (КПДП) КР580ВТ57 предназначен для организации скоростного обмена данными между памятью и внешними устройствами, причем обмен инициируется внешним устройством (см. разд. 5.1, рис. 5.5). Структурная схема контроллера приведена на рис. 5.45. Рис. 5.45. Структурная схема КР580ВТ57
262 Гпава 5 Она содержит: □ двунаправленный буфер данных (BD), предназначенный для обмена ин- формацией между МП и КПДП; □ схему управления чтением/записью (RWCU), которая адресует внутрен- ние регистры КПДП и управляет обменом по шине D7—DO; □ блок управления (CU), задающий режимы работы КПДП, □ блок управления приоритетами (PCU), обеспечивающий порядок обслу- живания запросов внешних устройств; □ четыре канала прямого доступа (СНО—СНЗ), каждый из которых содер- жит регистр адреса ячейки памяти, с которой начинается обмен, счетчик циклов обмена, два старших разряда которого отведены для задания операций обмена и схему формирования запроса/подтверждения. Назначение выводов БИС приведено в табл. 5.11. Таблица 5.11. Назначение выводов КПДП КР580ВТ57 Обозна- чение Номер вывода Назначение вывода 1 2 3 D7—DO 21; 22; 23; 36; 27; 28; 29; 30 Входы/выходы данных для обмена с МП ЮК 1 Чтение ввода/вывода — двунаправленный трехста- бильный вход/выход. Входной сигнал L-уровня разре- шает считывание информации из КПДП; выходной сигнал L-уровня разрешает считывание из УВВ iow • 2 Запись ввода/вывода — двунаправленный трехста- бильный вход/выход. Входной сигнал L-уровня разре- шает программирование КПДП; выходной сигнал L-уровня разрешает запись в УВВ CLK 12 Вход тактовых импульсов RESET 13 Входной сигнал сброса A3—AO 35, 34, 33, 32 Двунаправленные трехстабильные адресные выводы CS 11 Выборка БИС A7—A4 40,39,38,37 Трехстабильные адресные выводы
Интерфейс устройств ввода/вывода 263 Таблица 5.11 (окончание) Обозна- чение Номер вывода Назначение вывода READY 6 Входной сигнал готовности. Н-уровень указывает на готовность КПДП к обмену HOLD 10 Выходной сигнал запроса захвата. Н-уровень указыва- ет на запрос захвата КПДП системной шины HLDA 7 Входной сигнал подтверждения захвата. Н-уровень указывает на разрешение доступа к системной шине MEMR 3 Выходной сигнал чтения из памяти. Трехстабильный выход. L-уровень разрешает чтение ячейки памяти, которая адресуется КПДП MEMW 4 Выходной сигнал записи в память. Трехстабильный выход. L-уровень разрешает запись в ячейку памяти, которая адресуется КПДП AEN 9 Разрешение адреса. Н-уровень блокирует шины адре- са/данных ASTB 8 Строб адреса. Н-уровень указывает на присутствие на шине D7—D0 старшего байта адреса ОЗУ TC 36 Конец счета. Н-уровень указывает на выполнение по- следнего цикла передачи блока данных MARK 5 Маркер. Н-уровень указывает, что до конца передачи блока необходимо выполнить число циклов обмена, которое кратно 128 DRQ3- DRQO 16; 17; 18; 19 Запросы прямого доступа к памяти каналов СНЗ—СНО. Н-уровень указывает на запрос от УВВ DACK3— D ACK 10 15; 14; 24; 25 Подтверждение запросов прямого доступа к памяти каналов СНЗ—СНО. L-уровень указывает на разреше- ние обмена Ucc 31 Напряжение питания 5 В GND 20 Общий вывод 0 В Каждый из четырех каналов ПДП обеспечивает передачу блока данных ем- костью до 16 Кбайт с произвольным начальным адресом в диапазоне fl- 64 Кбайт. Приоритеты каналов могут быть фиксированными (канал 0 имеет высший приоритет, канал 3 — низший) или изменяться циклическим обра- зом. В последнем случае каналу, в котором произошло обслуживание за-
264 Гпава 5 проса ПДП, присваивается низший приоритет, а каналу со следующим но- мером — высший. Схема подключения КПДП к системной шине приведена на рис. 5.46. Рис. 5.46. Схема соединения КПДП с системной шиной с использованием буферного регистра Младший байт адреса памяти выдается по линиям АЗ—АО и А7—А4, кото- рые непосредственно подключены к шине адреса АВ. Старший байт адреса передается через шину D7—DO, поэтому в схему введен буферный регистр (БР) К589ИР12, фиксирующий значение старшего байта по сигналу ADSTB при AEN = 0. На вывод CS БИС поступает сигнал с выхода дешифратора адресов ввода/вывода. Другие выводы КПДП подсоединены к одноимен- ным линиям шин МП системы. Путем программирования КПДП задают режим работы каналов, направле- ние обмена информацией между памятью и устройством ввода/вывода, на- чальный адрес и длину массива памяти, участвующей в обмене. Значения адресных разрядов АЗ—АО и сигнала CS при записи и чтении ре- гистров БИС приведены в табл. 5.12. Запись информации в 16-разрядные
Интерфейс устройств ввода/вывода 265 регистры осуществляется двумя командами, сначала записывается младший байт, а потом — старший. Таблица 5.12. Адресация внутренних регистров КПДП Регистр CS АЗ А2 А1 АО RQ0 0 0 0 0 0 СТО 0 0 0 0 1 RQ1 0 0 0 1 0 СТ! 0 0 0 1 1 RQ2 0 0 I 0 0 СТ2 0 0 I 0 1 RQ3 0 0 I 1 0 СТЗ 0 0 I 1 1 Регистр режима (запись) 0 I 0 0 0 Регистр состояния (чтение) 0 I 0 0 1 Отключение КПДП от шины данных I X X X X Режим работы каналов задается управляющим словом, формат которого по- казан на рис. 5.47. Разряды D3—DO (EN3—ENO) разрешают (при единичном значении) или запрещают (при нуле) обмен по соответствующему каналу. D7 D6 D5 D4 D3 D2 D1 DO | AL | TCS| EW\ RP \EN3\EN2\EN1\ENO\ trit T t т т s S § 5 , СНЗ CH2 CH1 CHO, d co o. |= Рис. 5.47. Формат управляющего слова
266 Глава 5 Разряд D4(RP) устанавливает порядок обслуживания запросов от каналов. При D4 = 0 задается фиксированный приоритет каналов, при D4 = 1 уста- навливается режим циклического приоритета. Циклический сдвиг приори- тетов происходит после каждого цикла прямого доступа. Установка разряда D5(EW) в единицу задает режим расширенной записи, при которой продолжительность сигналов IOW и MEMW, генерируемых КПДП, увеличивается за счет сдвига переднего фронта. Это позволяет УВВ, формирующему сигнал READY по фронту сигнала записи, уменьшить или увеличить скорость обмена. При D6(TC) = 1 появление сигнала ТС в одном из каналов сбрасывает соот- ветствующий разряд D3—DO, в результате чего канал отсоединяется, и его дальнейшая работа возможна после перезагрузки регистра режима. Если D6(TCS) = 0, то появление сигнала ТС не влияет на разряд разрешения ра- боты канала и заканчивать передачу должно УВВ прекращением выработки сигнала DRQ. Единичное значение разряда D7(AL) задает режим автозагрузки, в котором работает только второй канал, используя содержимое своих внутренних ре- гистров и внутренних регистров третьего канала. После передачи данных соответственно параметрам регистров второго канала с появлением сигнала ТС содержимое регистров третьего канала автоматически загружается в ре- гистры второго канала. При этом в регистре состояния каналов (рис. 5.48) устанавливается в логическую единицу разряд D4(UF) — флаг восстановле- ния. Затем передача данных продолжается соответственно новым парамет- рам регистров второго канала, а в конце первого цикла прямого доступа с новыми параметрами флаг восстановления сбрасывается. Режим автоза- грузки позволяет организовывать повторные пересылки блоков данных с одинаковыми параметрами или соединять несколько блоков с разными па- раметрами. D7 D6 D5 D4 D3 D2 D1 DO | О | О | О | 1/F | ТСЗ| ТС2| ТС7| ГСО] ----- -----f„ 1^.-1 —1 , СНЗ СН2 СН1 СНО! Флаг восстановления Разрешение Рис. 5.48. Слово состояния каналов Разряды D3—DO слова состояния (рис. 5.48) устанавливаются одновремен- но с появлением сигнала ТС соответствующего канала и сбрасываются сиг- налом RESET при чтении содержимого регистра состояния. Флаг восста-
Интерфейс устройств ввода/вывода 267 новления UF можно сбросить записью логического нуля в разряд D7 реги- стра режима (рис. 5.47). Начальный адрес ОЗУ задается записью двух байт в регистры каналов RG0— RG3. Длина массива памяти и направление обмена информацией между памятью и устройством ввода/вывода задаются записью двух байт в счетчики СТО— СТЗ циклов. Два старших разряда счетчика циклов определяют направле- ние обмена таким образом: запись в память — 01, считывание из памяти — 10, контроль — 00. Комбинация И является запрещенной. Другие разряды счетчика определяют число пересылаемых при обмене байт. Если два старших разряда счетчика циклов каналов устанавливают режим контроля VERIFY, то передача данных не происходит, поскольку не гене- рируются сигналы управления записью и чтением, а все другие функции прямого доступа сохраняются. Этот режим может использоваться УВВ для контроля принятых данных. Работу КПДП поясняет диаграмма состояний (рис. 5.49) и временные диа- граммы основных сигналов (рис. 5.50). Рис. 5.49. Диаграмма состояний работы КПДП
SI SI SO S1 S2 S3 S4 S1 S2 S3 S4 CLK Рис. 5.50. Временные диаграммы основных сигналов После записи слова режима в регистр управляющего слова КПДП перехо- дит в холостое состояние SI, которое длится до тех пор, пока на один из входов КПДП не поступит запрос DRQ от внешнего устройства на прямой доступ к памяти. Перейдя в состояние SO, контроллер вырабатывает сигнал HRQ и ожидает поступления сигнала подтверждения HLDA от МП. После поступления сигнала HLDA начинается цикл обмена. В состоянии S1 фор- мируется сигнал AEN для блокирования других устройств системы от шин данных и управления, выдается код младших разрядов на выходы А7—АО, а код старших разрядов — на выходы D7—DO. Выдача старших разрядов ад- реса сопровождается стробом ADSTB для записи их во внешний буферный регистр. В состоянии S2 формируются сигналы MEMR, IOR или MEMW ,
Интерфейс устройств ввода/вывода 269 IOW, которые определяют направление обмена и сигнал DACK, указы- вающий на начало обмена. В состоянии S3 осуществляется передача данных в ОЗУ или УВВ. Состояние S4 завершает цикл прямого доступа. В этом состоянии при пере- даче последнего байта блока выдается сигнал ТС, а по окончании — сигнал MARK. При необходимости согласования быстродействия ОЗУ и УВВ с помощью сигнала READY между состояниями S3 и S4 вводится необходи- мое число состояний ожидания SW. В режиме контроля переход в состояние SW не разрешается. Пример 5.15. Запрограммировать канал 1 КПДП на режим с фиксирован- ными приоритетами, с отсоединением канала после передачи, без автоза- грузки и расширенной записи для пересылки по каналу 1 контроллера 10 байт из ОЗУ с начальным адресом 0000:0700Н в устройство ввода. Вход CS КПДП соединить с адресной линией А4. Определим адреса КПДП. В соответствии с табл. 5.11 адрес регистра 1 ка- нала будет 02Н, счетчика — ОЗН, регистра режима — 08Н. Управляющее слово режима определим в соответствии с рис. 5.47. Программа будет иметь вид: MOV AL,42H ; Формирование управляющего слова режима OUT 08H,AL ; Запись его в регистр управляющего слова MOV AL, 00 ; Младший байт адреса ОЗУ OUT 02H,AL ; переслать в регистр канала 1 MOV AL, 07Н ; Старший байт адреса ОЗУ OUT 02H,AL ; переслать в регистр канала 1 MOV AL,OAH ; Младший байт числа циклов OUT ОЗН,AL ; переслать в счетчик 1 MOV AL, 80Н ; Задать направление передачи OUT ОЗН,AL ; чтение памяти Состояние КПДП можно контролировать чтением содержимого RGA, СТ и 8-разрядного регистра состояния, общего для всех каналов, с помощью команды in. Для чтения содержимого 16-разрядного регистра используются две команды in с одним и тем же адресом, причем сначала происходит счи- тывание младшего байта, а затем старшего. Контрольные вопросы и задания 1. Какие функции выполняет КПДП в микропроцессорной системе? 2. Опишите режимы работы КПДП.
270 Гпава 5 3. В каких случаях целесообразно применение прямого доступа к памяти? 4. Укажите назначение регистра состояний. 5. Опишите принцип назначения приоритетов каналов. 5.6. Программируемый последовательный интерфейс Программируемый последовательный интерфейс КР580ВВ51 (i8251) пред- ставляет собой универсальный синхронно-асинхронный приемопередатчик (УСАПП), предназначенный для организации обмена между МП и внешни- ми устройствами в последовательном формате. Универсальный синхронно- асинхронный приемопередатчик принимает данные с 8-разрядной шины данных МП и передает их в последовательном формате периферийному устройству или получает последовательные данные от периферийного уст- ройства и преобразует их в параллельную форму для передачи МП. Обмен может быть как полудуплексным (однонаправленным), так и дуплексным (двунаправленным). Последовательный интерфейс может осуществлять об- мен данными в асинхронном режиме со скоростью передачи до 9,6 Кбит/с или в синхронном — со скоростью до 56 Кбит/с в зависимости от запро- граммированного режима. Длина переданных данных — от 5 до 8 бит. При передаче в МП символов длиной меньше 8 бит неиспользованные биты за- полняются нулями. Формат символа содержит также служебные биты и не- обязательный бит контроля четности. Структурная схема УСАПП (рис. 5.51) содержит: □ буфер передатчика TBF со схемой управления передатчиком TCU, предназначенный для приема данных от МП и выдачи их в последова- тельном формате на выход TxD; □ буфер приемника RBF со схемой управления приемником RCU, выпол- няющий прием последовательных данных со входа RxD и передачу их в МП в параллельном формате; □ буфер данных BD, представляющий собой параллельный 8-разрядный двунаправленный буфер шины данных с трехстабильными каскадами, который используется для обмена данными и управляющими словами между МП и УСАПП; □ блок управления чтением/записью RWCU, который принимает управ- ляющие сигналы от МП и генерирует внутренние сигналы управления; □ блок управления модемом MCU, обрабатывающий управляющие сигна- лы, предназначенные для внешнего устройства.
Интерфейс устройств ввода/вывода 271 TxD TxRDY ТхС ТхЕ RxD RxRDY RxC SYNDET Рис. 5.51. Структурная схема УСАПП Назначение выводов БИС УСАПП приведено в табл. 5.13. Таблица 5.13. Назначение выводов УСАПП Обозначение вывода Номер вывода Назначение D7—DO 8; 7; 6; 5; 2; 1; 28; 27 Канал данных RESET 21 Сброс контроллера (исходное состояние) CLK 20 Синхронизация АО 12 L-уровень сигнала определяет возможность записи или чтения данных в (из) УСАПП; Н-уровень опре- деляет возможность записи управляющих слов или чтение слова состояния в (из) УСАПП RD 13 Чтение — разрешение вывода данных или слова состояния с УСАПП на шину данных WR 10 Запись — разрешение ввода информации с шины данных
272 Гпава 5 Таблица 5.13 (окончание) Обозначение вывода Номер вывода Назначение CS 11 Выборка кристалла — соединение УСАПП с шиной данных МП DSR 22 Готовность передатчика терминала DTR 24 Запрос передатчика терминала CTS 17 Готовность приемника терминала RTS 23 Запрос приемника терминала SYNDET 16 Вид синхронизации: для синхронного режима вы- ходной сигнал высокого уровня — признак внутрен- ней синхронизации; для синхронного режима с внешней синхронизацией сигнал является входным; в асинхронном режиме сигнал — выходным RxC 25 Синхронизация приемника RxRDY 14 Готовность приемника RxD 3 Вход приемника ТхС 9 Синхронизация передатчика ТхЕ 18 Конец передачи. Сигнал Н-уровня является призна- ком окончания посылки данных TxRDY 15 Готовность передатчика TxD 19 Выход передатчика Ucc 26 Напряжение питания 5 В GND 4 Общий вывод 0 В Соединение УСАПП с шинами МП показано на рис. 5.52 Сигнал Ai, подаваемый на вывод АО БИС, определяет два адреса УСАПП. При адресе с Ai = 0 будут передаваться данные, при Ai = 1 — записываться команды или читаться слово состояния. Другие выводы подсоединяются к одноименным линиям шин МП системы. Значение сигналов адреса АО, управление чтением RD, записью WR и вы- боркой CS при записи и чтении регистров БИС приведено в табл. 5.14
Интерфейс устройств ввода/вывода 273 Рис. 5.52. Соединение УСАПП с шинами МП Таблица 5.14. Определение операций сигналами управления от МП Операции Сигналы управления АО RD WR "cs Чтение данных из УСАПП на шину D7—DO 0 0 I 0 Запись данных с шины D7—DO в УСАПП 0 I 0 0 Считывание слов состояния из УСАПП на шину D7—DO 1 0 1 0 Запись управляющего слова с шины D7—DO в УСАПП I 1 0 0 Высокоимпеданснос состояние выводов D7—DO X 1 I 0 X X X 1 Программирование УСАПП происходит путем загрузки в него управляю- щих слов. Различают управляющие слова двух типов: управляющее слово инициализации и операционное управляющее слово. Управляющее слово инициализации задает синхронный или асинхронный режим работы, формат данных, скорость приема или передачи, контроль правильности данных. Это слово заносится сразу после устану гки УСАПП программно или по сигналу RESET, а заменяется лишь при изменении ре- жима. Формат управляющего слова разный в асинхронном или синхрон- ном режимах. В асинхронном режиме работы передаваемые данные содержат нулевой старт-бит, биты данных, бит контроля и стоп-биты. Число бит данных и
274 Гпава 5 стоп-бит, а также наличие или отсутствие бита контроля задаются записью в УСАПП управляющего слова режима (рис 5.53, а). Разряды DO и D1 опре- деляют коэффициент деления сигналов синхронизации CLK. Разряды D3 и D2 определяют число бит данных. Режим контроля задается разрядами D5 и D4; при D4 = 0 контроль четности запрещен; значение разряда D5 устанав- ливает вид контроля — по четности или нечетности. Разряды D7 и D6 опре- деляют число переданных стоп-битов. DSR SYNDET FE | D7 | £)6 | D5 | D4 | D3 | D2 | D1 | DO | ОЕ РЕ TxRDY RxRDY ТхЕ Рис. 5.53. Формат управляющего слова инициализации: а — для асинхронного обмена; б — для синхронного обмена; в — формат слова состояния Синхронный обмен предусматривает передачу данных в виде массивов слов. Для синхронизации запуска во время приема данных используются один либо два символа синхронизации (специальные кодовые комбинации, например, 10010100). Формат управляющего слова инициализации режима для синхронного обмена показан на рис. 5.53, б. Разряды D1 и D0 имеют
Интерфейс устройств ввода/вывода нулевое значение. Разряд D6 устанавливает тип синхронизации (внешнюю или внутреннюю). Разряд D7 определяет использование одного (D7 = 1) ли- бо двух (D7 = 0) символов синхронизации. Назначение разрядов D3, D2 и D5, D4 аналогично назначению этих разрядов при асинхронном обмене. Контроль состояния УСАПП в процессе обмена данными МП осуществля- ется с помощью команды чтения слова состояния. На рис. 5.53, в показан формат слова состояния УСАПП. Разряд D3(PE) — устанавливается при обнаружении ошибки четности; разряд D4(OE) — при ошибке переполне- ния, если МП не прочитал символ; разряд D5 — при ошибке, которая за- ключается в том, что для асинхронного режима не обнаружен стоп-бит. Другие разряды слова состояния имеют такой же смысл, как и односменные выводы МП, приведенные в табл. 5.13. Управление работой УСАПП после инициализации осуществляется запи- сью операционных управляющих слов, которые могут многократно зада- ваться в процессе обмена, управляя разными его этапами. Назначение от- дельных разрядов операционного управляющего слова УСАПП приведено в табл. 5.15. Во время асинхронного обмена операционное управляющее слово загружа- ется сразу после управляющего слова инициализации, а во время синхрон- ного — перед ним располагаются один или два символа синхронизации. Таблица 5.15. Назначение разрядов операционного управляющего слова УСАПП Разряд Обозна- чение Назначение 1 2 3 D0 ТхЕ Разрешение передачи. При нулевом значении передача ин- формации невозможна, при единичном — возможна D1 DTR Запрос готовности передатчика к передаче. При единичном значении — запись нуля на выводе БИС DTR D2 RxE Разрешение приема. При нулевом значении прием информа- ции невозможен, при единичной — возможен D3 SBRK Конец передачи. При нулевом значении — нормальная ра- бота канала передачи, при единичном значении — установ- ка высокого уровня на выводе TxD D4 ER Выявление ошибок. При единичном значении — установка разрядов ошибок в исходное состояние D5 RTS Запрос о готовности приемника терминала к приему. При D5 = 1 — запись нуля на выводе RTS
276 Гпава 5 Таблица 5.15 (окончание) Разряд Обозна- чение Назначение 1 2 3 D6 IR Программный сброс схемы в исходное состояние. При еди- ничном значении — установка УСАПП в исходное состоя- ние и готовность к приему команды режима D7 ЕН Режим поиска импульсов синхронизации. При единичном зна-чении — установка режима поиска символов синхрони- зации Временные диаграммы сигналов управления УСАПП при чтении данных и слова состояния показаны на рис. 5.54, я, при записи управляющего слова режима, символов синхронизации команды — на рис. 5.54, 6. Чтение слова состояния (рис. 5.54, а} осуществляется при подаче на вход АО Н-уровня, а на RD — L-уровня, чтение данных осуществляется при подаче на вход АО сигнала L-уровня. Информацию, содержащуюся в слове состоя- ния (рис. 5.53, в), можно использовать для организации обмена между МП и УСАПП, например, определять, была ли ошибка при передаче информации, какое состояние готовности приемника (передатчика) к обмену. Запись управляющих слов и символов синхронизации осуществляется через шину данных DB при подаче на вход АО Н-уровня, а на вход WR — L- уровня (рис. 5.54, б). После начальной установки УСАПП принимает ин- формацию на DB как управляющее слово инициализации и размещает его в соответствующем регистре. Блок RWCU дешифрирует это слово и, если за- программирован асинхронный режим, то следующее слово воспринимается как операционное управляющее слово, а если синхронный — информация на DB воспринимается как символ синхронизации. После записи управляющего слова режима и операционного слова УСАПП готов к выполнению обмена данными в одном из пяти режимов: □ синхронная передача; □ синхронный прием с внутренней синхронизацией; □ синхронный прием с внешней синхронизацией; □ асинхронная передача; □ асинхронный прием. При синхронной передаче данных на выходе TxD с частотой сигнала син- хронизации формируется последовательность, которая начинается с симво-
Интерфейс устройств ввода/вывода 277 лов синхронизации, запрограммированных управляющим словом режима (рис. 5.53, б). Потом передаются коды символов, поступающие с МП, каж- дый из которых может заканчиваться битом контроля. Если МП не загру- зил очередной символ к моменту передачи, то УСАПП вставляет в передан- ную последовательность символы синхронизации, а на выходе TxD гене- рируется сигнал Н-уровня, указывающий на пустую передачу. Данные SYNDET RD RxC лшшллшшшшпшт RxD гПоо FloFloo 1 Синхросимвол Чтение Чтение данных состояния г Рис. 5.54. Временные диаграммы сигналов управления УСАПП: a — чтение слова состояния; б — запись управляющего слова режима, символов синхронизации и операционного слова; в — прием данных с внутренней синхронизацией; — синхронный прием с внешней синхронизацией В режиме синхронного приема с внутренней синхронизацией (рис. 5.54, в) УСАПП начинает работу с поиска в входной последовательности символов синхронизации. УСАПП сравнивает записанные в него при программиро- вании символы синхронизации с принятыми символами. После выявления символов синхронизации на выводе SYNDET устанавливается сигнал высо- кого уровня, и начинается прием входных данных (см. рис. 5.54, в). Сигнал
278 Гпава 5 на выводе SYNDET автоматически сбрасывается при чтении слова состоя- ния УСАПП. Во время синхронного приема с внешней синхронизацией (рис. 5.54, г) на вывод SYNDET подается сигнал от внешнего устройства, который позволя- ет прием данных на входе RxD со скоростью сигналов синхронизации, по- ступающих на вход RxD. Возможна организация приема данных в МП по прерыванию, если сигналы на выводе SYNDET используются как запрос прерывания. В режиме асинхронной передачи последовательные данные формируются на выходе TxD по заднему фронту сигнала синхронизации ТхС с периодом, который задается управляющим словом режима и равняется 1; 16 или 64 пе- риодам сигнала синхронизации. Если после передачи символа следующего символа нет, то на выходе TxD устанавливается Н-уровень до тех пор, пока от МП не поступят новые данные. В программе, реализующей алгоритм асинхронной передачи, запись очередного байта в УСАПП осуществляется по команде вывода OUT, если в слове состояния разряд DO = 1. Сигнал на выходе TxDY используется как сигнал запроса прерывания. Асинхронный прием данных начинается с поиска старт-бита, который уста- навливает на входе RxD напряжение L-уррвня. Наличие этого бита вторич- но проверяется внутренним строб-импульсом. Если старт-бит подтвержден, то запускается внутренний счетчик битов, определяющий начало и конец битов данных, бит контроля и стоп-бит. Прием стоп-бита указывает на окончание приема байта информации и сопровождается установкой сигна- ла Н-уровня на выходе RxRDY. В программе асинхронного приема переда- ча очередного байта данных в МП может осуществляться по команде ввода IN, если в слове состояния разряд DI = 1, что соответствует Н-уровню сиг- нала на выходе RxRDY, или по прерыванию, если сигнал на выходе RxRDY используется как запрос прерывания. Пример 5.16. Запрограммировать УСАПП на асинхронный режим со сле- дующим форматом данных — старт-бит, 8 бит данных, бит контроля четно- сти и 1,5 стоп-бита. Коэффициент деления частоты синхросигналов 1/64. Вход CS УСАПП соединить с адресной линией А4, вход АО с линией А1. Осуществить передачу данных из регистра BL по последовательному порту. Определим адреса УСАПП. Запись управляющего слова будет происходить при А4 = 0, Al = 1, т. е. при адресе 02, передача данных — при А1 = 0, т. е. при адресе 00. Управляющее слово инициализации в соответствии с рис. 5.53, а равняется 10111111. Операционное управляющее слово определим по табл. 5.15 как 00010001. Единичное значение бита D0 разрешает передачу, бит D4 сбрасывает зна-
Интерфейс устройств ввода/вывода 279 чения разрядов ошибок в слове состояния в исходное положение. Нулевое значение бита D3 определяет нормальную работу канала передачи. Другие биты не имеют влияние на данный режим. Ml: MOV AL,10111111В ; формирование в AL управляющего слова OUT 02,AL ; инициализации и пересылка его в УСАПП MOV AL,00010001B ; формирование в AL операционного Упра- OUT 02,AL IN AL,02 AND AL,01 ; вляющего слова и пересылка его ; чтение слова состояния ; выделение разряда D0 в УСАПП JZ Ml MOV AL,BL OUT 00,AL ; если D0=0 (УСАПП не готов к передаче), ; то переход на Ml ; пересылка данных Признаком того, что данные можно передавать по последовательному пор- ту, т. е. УСАПП готов к обмену, в этой программе принято условие DO = 1 в слове состояния. Другим путем является использование сигнала на выходе TxDY в качестве запроса прерывания. Контрольные вопросы и задания 1. Какие функции выполняет порт последовательной передачи данных? 2. Опишите режимы работы БИС. 3. Объясните работу БИС последовательного интерфейса в асинхронном режиме. 4. Объясните работу БИС последовательного интерфейса в синхронном режиме. 5. Как осуществляется обмен данными при синхронном режиме с внутрен- ней и внешней синхронизацией? 5.7. Программируемый контроллер прерываний Программируемый контроллер прерываний (ПКП) КР580ВН59А представ- ляет собой устройство, реализующее в МП-системе обработку запросов прерываний от внешних устройств, например от датчиков аварийных си-
280 Гпава 5 туаций или устройств ввода/вывода, использующих протокол обмена по прерыванию (см. разд. 5.1). БИС ПКП выполняет следующие функции: □ запоминает запросы прерывания, задаваемые передним фронтом или по- тенциалом; □ маскирует, т. е. запрещает выполнение избранных запросов; О формирует вектор прерывания и выполняет действия по переходу на подпрограмму обработки запроса; □ формирует сигнал прерывания для МП; □ выполняет приоритетную обработку запросов прерывания. БИС КР580ВН59А в зависимости от того, как ее запрограммировать, может вырабатывать либо код команды 8-разрядного МП i8080 CALL ADRV, где ADRV — адрес подпрограммы обработки, либо выдавать на шину данных номер прерывания п для реализации команды int п 16-разрядного МП i8086. Одна БИС ПКП обрабатывает восемь запросов прерывания, но при каскад- ном включении БИС число запросов прерывания может быть увеличено до 64. Упрощенная структурная схема ПКП показана на рис. 5.55. Рис. 5.55. Структурная схема ПКП
Интерфейс устройств ввода/вывода 281 В состав программируемого контроллера прерываний входят: двунаправ- ленный 8-разрядный буфер данных (BD), предназначенный для соединения ПКП с шиной данных МП; блок управления чтением/записью (RWCU), ко- торый принимает управляющие сигналы от МП и задает режим функцио- нирования ПКП; схема каскадного буфера — компаратора (СМР), которая используется при включении в систему нескольких ПКП; схема управления (CU), формирующая сигналы прерывания и трехбайтную команду call или вектор прерывания п; регистр запросов прерываний (RGI), предназначен- ный для хранения запросов прерываний; схема обработки по приоритетам (PRB), идентифицирующая приоритеты запросов и выбирающая запрос с наивысшим приоритетом; регистр обслуженных прерываний (ISR), сохра- няющий уровни запросов' прерываний, находящихся на обслуживании ПКП; регистр маскирования прерываний (RGM), обеспечивающий запрет одной или нескольких линий запросов прерывания. Назначение входных, выходных и управляющих сигналов ПКП приведено в табл. 5.16. Таблица 5.16. Описание выводов ПКП Обозна- чение вывода Номер контакта Назначение вывода 1 2 3 D7—DO 4; 5; 6; 7; 8 9; 10; 11 Вход/выход данных RD 3 Вход строба чтения WR 2 Вход строба записи АО 27 Вход нулевого разряда адреса, используемый при за- грузке команд и считывания состояния ПКП cs" 1 Вход выбора микросхемы CASO— CAS2 12; 13; 15. Входы/выходы каскадирования SP / 16 Признак подчинения: напряжение Н-уровня указывает, что ПКП является ведущим (главным) контроллером; напряжение L-уровня определяет ПКП ведомым (подчи- ненным) контроллером INTA 26 Подтверждение прерывания — входное напряжение Н-уровня указывает о выдаче ПКП команды call на шину данных INT 17 Прерывание — напряжение Н-уровня указывает о за- просе на обслуживание прерывания
282 Гпава 5 Таблица 5.16 (окончание) Обозна- чение вывода Номер контакта Назначение вывода 1 2 3 IRQ0— IRQ7 18; 19; 20; 21; 22; 23; 24; 25 Входы запросов прерываний (передний фронт) Ucc 28 Напряжение питания 5 В GND 14 Общий вывод 0 В Соединение БИС КР580ВН59 со стандартной системной шиной показано на рис. 5.56. Рис. 5.56. Соединение БИС КР580ВН59 с системной шиной МП Схема (см. рис. 5.55) работает следующим образом. Запросы прерываний от внешних устройств поступают на входы IRQ0—IRQ7 и запоминаются в ре- гистре RGI. Далее сигналы поступают на схему обработки приоритетов PRB, разрешающую или не разрешающую дальнейшее прохождение запро- са прерывания в зависимости от его приоритета и запрета маскированием. Любой запрос прерывания возможно запретить путем записи маски в ре- гистр RGM. Далее разрешенные запросы поступают в регистр ISR и уста-
Интерфейс устройств ввода/вывода 283 навливают соответствующие его разряды. Схема управления (CU) на основе содержимого регистра ISR формирует сигнал прерывания INT для МП. Микропроцессор принимает сигнал INT и, если прерывания разрешены, подтверждает прием выдачей сигнала INTA. После получения сигнала INTA ПКП выдает на шину D7—DO код команды call или вектор преры- вания п. В первом случае МП выдает еще два сигнала INTA, которые по- зволяют ПКП передать на шину данных 16-разрядный адрес подпрограммы обслуживания прерывания, причем младший байт адреса передается по первому сигналу INTA, а старший — по второму. Во втором случае МП выдает еще один сигнал INTA, по которому МП считывает с шины данных значение вектора прерывания п. Программируемый контроллер может работать и в режиме опроса запросов прерывания. В этом случае МП считывает код запроса с наиболее высоким уровнем приоритета по сигналу RD . Прием запросов, маскирование и ана- лиз приоритетов выполняются так же, как и при обслуживании прерываний по запросу. Для увеличения количества уровней прерывания ПКП могут быть объеди- нены в систему, состоящую из одного ведущего и нескольких ведомых ПКП (рис. 5.57). При обслуживании запроса, который поступил на вход ведомого ПКП, ве- дущий ПКП по сигналу INTA выдает на шину данных код команды call, а на шину CASO—CAS2 — код номера ведомого ПКП. При поступлении вто- рого и третьего сигналов INTA ведомый ПКП, выбранный по коду CASO— CAS2, выдает на шину данных адрес подпрограммы обслуживания (сначала младший, а затем старший байты). В случае использования ПКП в МПС с i8086 ведомый ПКП по второму сигналу INTA выдает на шину данных зна- чение номера прерывание п. Программирование ПКП состоит в записи в него в определенном порядке от 2 до 4 управляющих слов инициализации (ICW). Далее в любом порядке можно записывать управляющие операционные слова (OCW) в зависимости от необходимых функций ПКП. Управляющее слово ICW1 (рис. 5.58, а) сбрасывает регистры RGI, RGM и присваивает низший приоритет запросу IRQ7. Единичное значение разряда AD (DO) указывает на необходимость использования дополнительного управляющего слова инициализации ICW4. Разряд S определяет наличие одного или нескольких ПКП в системе. Остальные разряды могут прини- мать любые значения в МПС с i8086. В МПС с i8080 разряд F (формат) оп- ределяет адресный интервал 4 или 8 байт между начальными адресами под- программ обслуживания прерываний. Разряды А7—А5 управляющего слова ICW1 используются для формирования младшего байта адресов под- программ обслуживания прерываний соответственно табл. 5.17.
284 Гпава 5 Рис. 5.57. Каскадное соединение ПКП АО D7 DO D5 D4 D3 D2 D1 DO I о I | Д7 | Д6 | 45 | 1 | О | F I S | ДР Адрес 4 байта 0 8 байт 1 Один ПКП 0 Не нужно ICW4 0 Несколько ПКП 1 Нужно ICW4 1 Рис. 5.58. Формат управляющего слова инициализации 1С1¥\
Интерфейс устройств ввода/вывода 285 Таблица 5.17. Младший байт адреса команды CALL Вход зап- роса Адресный интервал, 4 байта Адресный интервал, 8 байт D? D« Ds Do Ds d2 Di Do D? Do Ds D4 Ds Di Di Do IRQ7 А7 А6 А5 I I 1 0 0 A7 A6 1 1 1 0 0 0 IRQ6 А7 А6 А5 I I 0 0 0 A7 A6 1 1 0 0 0 0 IRQ5 А7 А6 А5 I 0 1 0 0 A7 A6 1 0 1 0 0 0 IRQ4 А7 А6 А5 I 0 0 0 0 A7 A6 1 0 0 0 0 0 IRQ3 А7 А6 А5 0 I 1 0 0 A7 A6 0 1 1 0 0 0 IRQ2 А7 А6 А5 0 1 0 0 0 A7 A6 0 1 0 0 0 0 IRQ1 А7 А6 А5 0 0 1 0 0 A7 A6 0 0 1 0 0 0 IRQ0 А7 А6 А5 0 0 0 0 0 A7 A6 0 0 0 0 0 0 Управляющее слово ICW2 имеет разный вид для МП i8080 и i8086. В первом случае (рис. 5.59, а) оно представляет собой старший байт адреса подпро- граммы обслуживания прерываний, выдаваемый ПКП на шину данных как третий байт команды call. Во втором случае (рис. 5.59, б) разряды D7—D3 определяют старшие биты номера прерывания для каждого входа IRQ. Младшие три бита определяются номером входа IRQ, на который поступил запрос прерывания. АО D7 D6 D5 D4 D3 D2 D1 DO | 1 | |л75 \А14 | Л 73 | Л 72 |л 70 \а11 | Л9 | Л8 | L________________________________ .....................и Старший байт адреса a АО D7 D6 D5 D4 D3 D2 D1 D0 | К7 | Кб ' Кб \ К4 ~КЗ | X "~Х | X | Старшие биты номера б Рис. 5.59. Форматы управляющих слов инициализации ICW2: а — для системы с МП i8080; б — с i8086
286 । Гпава 5 В микропроцессорной системе, включающих несколько ПКП, для каждого из них после двух первых управляющих слов инициализации вводится слово ICW3, задающее режим взаимодействия контроллеров. В управляющем словё ICW3 для ведущего ПКП (рис. 5.60, а) наличие логической единицы в одном из разрядов указывает на подсоединение к соответствующему входу запроса прерывания выхода INT ведомого ПКП. В управляющем слове ICW3 для ведомого ПКП (рис. 5.60, б) задается код его номера в системе. АО 07 D6 D5 D4 D3 D2 07 D0 | 1 | | $7 | S6 | S5 | S4 | S3 | S2 | S7 | Sp"| 1 Есть ведомый 0 Нет ведомого 07 D6 D5 D4 D3 D2 D1 DO lol О I О I о I О | /021 /ОТ I /Р0~| Код ведомого б Рис. 5.60. Форматы управляющих слов инициализации ICW3: а — для ведущего ПКП; б — для ведомого ПКП Формат управляющего слова инициализации IWC4 приведен на рис. 5.61. На рис. 5.58—5.61 слева приведены значения линии АО, при которых надо загружать управляющие слова. D7 D6 D5 D4 D3 D2 D1 DO 0 0 0 р SP M/S Е 8/16 Рис. 5.61. Формат управляющего слова инициализации ICW4 Нулевое значение разряда Р (D4), рис. 5.61, определяет простой приоритет- ный режим с фиксированными приоритетами, единичное — с циклическими приоритетами. Разряд D3 управляет состоянием линии SP/EN. Разряд M/S (Master/Slave) (D2) равняется единице для ведущего ПКП и нулю для ведомых. Разряд D1 задает автоматическое (0) или специальное окончание
Интерфейс устройств ввода/вывода 287 прерывания, а разряд DO равняется единице в системе с МП i8086 и нулю в системе с МПЧ8О8О. После записи управляющих слов инициализации ПКП подготовлен к приему запросов прерывания и может работать в режиме с фиксированными приори- тетами запросов. В этом режиме запросы упорядочены по приоритетам: вход IRQ0 имеет высший приоритет, a IRQ7 — низший. Этот режим еще называют режимом полного вложения подпрограмм обработки прерываний. Если запросы прерываний поступят в ПКП одновременно, то будет обслуживаться тот за- прос, который имеет больший приоритет. Если во время обработки одного запроса поступил второй с более высоким приоритетом, то МП прерывает обработку текущего запроса и вызывает подпрограмму обработки нового запроса. По окончании его обработки МП продолжает прерванную подпро- грамму обработки. Запросы с низшими приоритетами не прерывают подпро- граммы обработки запросов с высшими. АО D7 D6 D5 D4 D3 D2 D1 DO | 1 | | М7~|М6 | М5 | Ш | М3 |м2 | Ш |мо] а АО D7 D6 D5 D4 D3 D2 D1 DO | о | | r |seo/|eq/| 0 | О |L2 |/Л | lo"] б АО D7 D6 D5 D4 D3 D2 D1 DO | 1 | | х |esw|smm| О I 7 | р |ek/s|r7s] Нет разрешения X 0 Сброс режима 1 0 Установка режима 1 0 Запрет чтения X 0 Чтение RGI 1 0 Чтение ISR 1 0 в Рис. 5.62. Форматы операционных управляющих слов: а — OCWI; б — OCW2; в — OCW3 Для решения задач в других режимах функционирования ПКП необходимо использовать операционные слова ocw (рис. 5.62), которые загружаются по-
288 Гпава 5 еле слов инициализации в любой текущий момент времени выполнения программы. Операционное слово ocwi (рис. 5.62, а) осуществляет установку или сброс разрядов регистра RGM. Установка некоторого разряда регистра маскиро- вания приводит к запрету прерывания по соответствующему входу. Операционное слово ocw2 (рис. 5.62, б) осуществляет сброс разряда регистра ISR и циклический сдвиг приоритетов запросов. Возможные варианты сло- ва OCW2 и его функции показаны в табл. 5.18. Таблица 5.18. Варианты слова 0CW2 Разряд команды Режим приоритетов D7 (R) D6 (SEO) D5 (EOI) D4 D3 D2 D1 DO 0 0 1 0 0 X X X Фиксированный при- оритет: IRQ0 — высший, IRQ7 — низший 1 0 1 0 0 X X X Циклический сдвиг при- оритетов — присвоение обслуженному запросу низшего приоритета 0 1 1 0 0 L2 L1 L0 Фиксированный при- оритет; L2—L0 — номер разряда, который сбра- сывается 1 1 1 0 0 L2 L1 LO Циклический сдвиг приоритетов; L2—L0 — номер разряда, который сбрасывается в регистре ISR (присвоение ему низшего приоритета) 1 1 0 0 0 L2 LI LO Циклический сдвиг при- оритетов без завершения прерывания; L2—L0 — номер входа IRQ с низшим приоритетом Если обслуживание запроса прерывания необходимо закончить сбросом разряда регистра ISR с высшим приоритетом, то используется слово OCW2 со значениями EOI = 1 и SEOI = 1. При EOI = 1 и SEOI = 1 предназначенный для сброса уровень прерывания указывается в команде разрядами D2(L2)—
Интерфейс устройств ввода/вывода 289 DO(LO). Циклический сдвиг приоритетов задается в команде ocw2 разрядом D7(R). В циклическом режиме используется круговой порядок назначения приори- тетов. Последнему обслуженному запросу присваивается низший приори- тет, следующему за ним — высший. Приоритеты других запросов цикличе- ски смещаются по шкале приоритетов. При R = 1 и SEOI = 0 команда ocw2 присваивает низший приоритет запросу с высшим приоритетом, а при R = 1 и SEOI = 1 низший приоритет присваивается запросу, номер которого ука- зывается разрядами D2(L2)—DO(LO). Слово ocw2, как правило, записывает- ся в ПКП в конце подпрограммы обслуживания прерываний перед коман- дой возврата из подпрограммы ret. Операционное слово ocw3 (рис. 5.62, в) позволяет задать режим специаль- ной маскирования (разряды D6, D5), режим опроса (разряд D2) и выпол- нить считывания состояния ПКП (разряды DI, DO). Режим специального маскирования дает возможность на некотором участке программы выборочно руководить запросами с разными приоритетами и разрешать прерывание выполняемой программы даже от запросов с мень- шими приоритетами. Режим специального маскирования задается словом ocw3 при ESMM = 1 и SMM = 1, а отменяет этот режим слово с ESMM = 1 и SMM = 0. Режим опроса устанавливается по слову OCW3 при Р= 1. В этом режиме ПКП принимает запросы и формирует слово состояния опроса, которое содержит номер запроса с высшим приоритетом (разряды D2—D0 слова состояния). Запрос обслуживается по программе, которая осуществляет чтение слова состояния с помощью команды ввода in при АО = 0, его про- граммное декодирование и переход к соответствующей подпрограмме об- служивания прерывания. Содержимое регистров RGI и ISR считывается после загрузки в ПКП сло- ва OCW3 с соответствующими значениями ERIS и RIS (см. рис. 5.62, в) по команде in при АО = 1. Содержимое регистра RGM считывается без пред- варительной загрузки ocw3 по команде in при АО = 1. Пример 5.17. Запрограммировать контроллеры прерываний с каскадным включением (рис. 5.63) в системе с МП i80x86 ( в PC IBM АТ) на режим с фиксированными приоритетами, неавтоматическим окончанием прерыва- ний. Запрограммировать номер прерываний для IRQ0 ведущего контрол- лера — 08, для ведомого — 70Н. Адреса ведущего контроллера 20Н и 21Н, ведомого 0A0H, 0А1Н. Определить номера всех прерываний и их приори- теты. Управляющее слово инициализации ICW1 в соответствии с рис. 5.58 равня- ется ин для обоих ПКП. Запись управляющего слова происходит при АО = 0, т. е. при адресе 20Н для ведущего ПКП и 70Н для ведомого.
290 Гпава 5 Управляющее слово инициализации ICW2 в соответствии с рис. 5.59 имеет вид О 0 0 0 1 х х х для ПКП1 и 01110 х х х, т. е. 08 и 70Н соответственно. Управляющее слово инициализации icw3, которое необходимо при каскад- ном соединении в соответствии с рис. 5.60, а, для ведущего контроллера равняется 04. Единственная единица в этом слове определяется подключе- нием ведомого контроллера к входу IRQ2. Управляющее слово инициали- зации ICW3 для ведомого контроллера определяется номером 2, к которому подключен выход INT ПКП 2 (рис. 5.63) и равно 02. Управляющее слово инициализации ICW4, согласно рис. 5.61, равняется юн дляПКШ и 09ндляПКП2. IRQ 8 IRQ 9 IRQ А IRQ В IRQ С IRQ D IRQ E IRQ F Рис. 5.63. Пример каскадного соединения двух ПКП Программа инициализации ПКП1 и ПКП2 имеет вид: MOV AL,11Н ; Формирование в AL управляющего слова ; инициализации ICW1 OUT 2OH,AL OUT 0A0H,AL ; Пересылка его в ПКП1 ; и в ПКП2 MOV AL,08H OUT 21H,AL ; Формирование в AL управляющего слова ; инициализации ICW2 ; Пересылка его в ПКП1 MOV AL,7OH ; Формирование в AL управляющего слова ; инициализации ICW2
Интерфейс устройств ввода/вывода 291 OUT OA1H,AL ; Пересылка его в ПКП2 MOV AL,04H ; Формирование в AL управляющего слова ; инициализации ICW3 OUT 21H,AL ; Пересылка его в ПКП1 MOV AL,02H ; Формирование в AL управляющего слова ; инициализации ICW2 OUT OA1H,AL ; Пересылка его в ПКП2 MOV AL,ODH ; Формирование в AL управляющего слова ; инициализации ICW4 OUT 21H,AL ; Пересылка его в ПКП1 MOV AL,09H ; Формирование в AL управляющего слова ; инициализации ICW4 OUT OA1H,AL ; Пересылка его в ПКП2 Номера прерываний и их приоритетная схема отображены в табл. 5.19. Таблица 5.19. Приоритеты прерываний Схема приоритетов Номер входа прерывания Команда прерывания наивысший IRQ0 INT8 IRQ! INT9 IRQ2 INT0AH IRQ8 INT70H IRQ9 INT7IH IRQ0AH INT72H IRQ0BH INT73H IRQ0CH INT74H IRQ0DH 1NT75H IRQ0EH INT76H IRQ0FH 1NT77H IRQ3 1NT0BH IRQ4 INT0CH IRQ5 INT0DH IRQ6 INT0EH наинизший IRQ7 INT0FH
292 Гпава 5 Укажем, что в схеме с двумя ПКП (см. рис. 5.63) максимальное число запро- сов равняется 15, а не 16, как можно было бы ожидать (2x8). Это связано с тем, что один из входов ведущего контроллера соединен с выходом ведомо- го и на него не поступает запрос от внешнего устройства. Пример 5.18. Запретить обработку прерывания IRQ2. Принять адрес ПКП1 таким же, как в примере 5.17. Для того чтобы запретить прерывание, нужно записать единицу в соответ- ствующий разряд регистра маски, см. в рис. 5.62, а. Программа имеет вид IN AL,21H ; Прочитать содержимое регистра маски OR AL,04 ; Установить разряд D2 в единицу MOV AL,70H ; Переслать в ПКП1 Пример 5.19. Разрешить обработку прерывания IRQ2. Принять адрес ПКП1 таким же, как в примере 5.17. Для того, чтобы разрешить прерывание, нужно записать ноль в соответст- вующий разряд регистра маски как в рис. 5.62, а. Программа имеет вид IN AL,21H ; Прочитать содержимое регистра маски AND AL,11111011В ; Установить разряд D2 в единицу MOV AL,70H ; Переслать в ПКП1 Пример 5.20. Составить подпрограмму ввода данных из порта с адресом 300Н в ячейку памяти с адресом DS:SI по прерыванию. Подпрограмма обработки прерывания имеет вид PUSH АХ PUSH ВХ MOV DX,300Н ; Хранение регистров МП в стеке ; Переслать АХ в стек ; Переслать ВХ в стек ; Записать в DX адрес порта IN AL, DX ; Ввести данные MOV [SI],AL MOV AL, 2ОН ; Переслать в ячейку памяти ; Конец прерывания ; Запись в AL управляющего слова OCW2 OUT 2ОН,AL ; Возврат содержимого регистров МП со стека ; (в обратном порядке)
Интерфейс устройств ввода/вывода 293 POP ВХ POP АХ STI ; Разрешение прерываний IRET ; Возврат из подпрограммы обработки прерывания Контрольные вопросы и задания 1. Какие функции выполняет контроллер прерываний в МПС управления? 2. Какое число запросов прерываний может обслужить одна БИС ПКП? 3. Как