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. Какого максимального количества запросов прерываний можно дос- тичь в системе прерываний на базе БИС КР580ВН59? 4. Для чего предназначен режим специального маскирования? 5. Какие приоритетные схемы обработки запросов прерываний реализу- ются в БИС КР580ВН59? 6. Как изменяются приоритеты в схеме циклической обработки приоритетов? 7. В каких случаях целесообразно использовать режим фиксированных приоритетов? 8. В каких случаях целесообразно использовать режим циклических при- оритетов? 9. Какой из входов IRQ имеет высший приоритет? 10. Как можно уменьшить приоритет входов IRQ? 11. Как можно отключить одну или несколько линий IRQ? 12. Когда могут записываться команды инициализации и управления? 13. Для чего необходимы сигналы 1NT и 1NTA? 5.8. Пример разработки микропроцессорной системы Пусть необходимо разработать принципиальную схему и программное обеспечение МПС управления широтно-импульсного стабилизатором на- пряжения с частотой /=1 кГц. Микропроцессорная система управления обеспечивает обработку сигнала обратной связи U с выхода АЦП по закону пропорционального регулятора: Y = 0,5 + ([/— 20//)/256,
294 Гпава 5 где у — коэффициент заполнения импульсов широтно-импульсного стаби- лизатора, 20Н — код опорного сигнала. Структурная схема МПС управления показана на рис. 5.64. Рис. 5.64. Структурная схема МПС управления Сигнал обратной связи поступает на АЦП, который преобразует его в дво- ичный код. Этот код по системной шине поступает в ЦП, где по программе, записанной в ПЗУ, обрабатывается по закону пропорционального регуля- тора. Результатом вычисления является коэффициент заполнения импульсов ШИМ, который загружается в регистр таймера ПТ как константа. На вы- ходе таймера образуются логические уровни импульсов управления ШИП. Функциональная схема МПС управления показана на рис. 5.65. При разработке функциональной схемы модуля центрального процессора возникает потребность в демультиплексировании шины адреса/данных, бу- феризации шин адреса (АВ) и шин данных (BD), а также в формировании системных управляющих сигналов памяти и внешних устройств. Демульти- плексирование осуществляется с помощью двух БИС К1810ИР82, которые выполняют функции защелки адреса и буфера шины АВ; буферизация шин данных создается с помощью двунаправленных шинных формирователей К1810ВА86, усиливающих сигналы шины данных; формирование управ- ляющих сигналов осуществляется с помощью комбинационных логических элементов. На выходе этих элементов формируются сигналы MEMR, MEMW, IOR, IOW.
Интерфейс устройств ввода/вывода 295 2ХКР580ИР82 К1810ВМ86 CLK CLK D7-D0 D15-D8 D7-D0 IOR IOW A1 A2 A3 DO D7 RD WR AO A1 CS CLKO GO OUTO CLK1 -- G1 - OUT1 J CLK2 — G2 — OUT2---- Выход Uoc Рис. 5.65. Функциональная схема МПС Поскольку в разрабатываемой МПС не нужны режимы ПДП, прерываний и обмена по сигналу готовности, то по сравнению с рассмотренной выше схе- мой модуля ЦП (рис. 2.33), схема рис. 5.65 не содержит входов запросов прерываний, готовности, запроса ПДП и разрешения шин BUSEN. Поэтому на входы БИС генератора, ЦП, регистров-защелок и буферных регистров поданы постоянные логические уровни нуля или единицы. Отсутствуют также схемы оконечных каскадов, формирующих управляющие сигналы (в
296 Гпава 5 этой схеме нет потребности переводить управляющие сигнал в третье со- стояние). Модуль ПЗУ выполнен на базе двух БИС КР556РТ5 емкостью 512x8 бит каждая. Память организована в виде двух банков памяти — младшего и старшего. Младший банк подключается к младшей половине шины данных D7—DO и содержит только ячейки памяти с четными адресами; старший банк — к старшей половине шины данных D15—D8 и содержит только ячейки памяти с нечетными адресами. Считывание из ПЗУ происходит при выполнении цикла чтения памяти. При этом формируется сигнал MEMR = О, который и переводит выходы БИС ПЗУ в активное состояние. Из ПЗУ все- гда считывается слово. Для данного примера начальный адрес ПЗУ опре- делим при нулевых значениях А9—А1, АО, а конечный — при единичных. Таким образом, начальный адрес ПЗУ — 00000Н, конечный адрес ПЗУ — 003FFH. Функциональная схема содержит также АЦП К572ПВ1, что пред- ставляет собой 12-разрядный преобразователь напряжения в двойчный код сравнительно низкого быстродействия. Поскольку АЦП имеет внутренний регистр со входом управления третьим состоянием, внешний порт ввода не нужен. Выход АЦП соединен с линиями DI 1—DO. С точки зрения процес- сора, АЦП представляет собой 16-разрядный порт. Адрес 16-разрядного порта должен быть четным. Как видно из рис. 5.65, АЦП выбирается при АЗ = 1. Таким образом, адрес АЦП может быть любым при АЗ = 1, АО = 0. Например, выберем адрес АЦП, равный 08Н. Программируемый таймер К1810ВИ54 в данной схеме предназначен для ге- нерации импульсов управления широтно-импульсным стабилизатором. Таймер содержит три независимых канала, каждый из которых может быть запрограммирован на работу в одном из шести режимов для двоичного и двоично-десятичного счета. В данном примере используют такие режимы работы каналов: □ канал 0 — программируемый мультивибратор; □ канал 1 — импульсный генератор частоты для запуска канала 0; □ канал 2 — импульсный генератор для задания частоты работы АЦП. Как видно из рис. 5.65, таймер выбирается при адресе с АЗ = 0. Линии А1 и А2 выбирают один из трех каналов таймера или регистр управляющего сло- ва. Таким образом, адресами таймера будут: □ адрес канала 0-00Н; □ адрес канала 1-02Н; □ адрес канала 2-04Н; □ адрес РУС 06Н.
Интерфейс устройств ввода/вывода 297 Преобразуем коэффициент заполнения широтно-импульсного стабилизато- ра gamma в константу загрузки таймера. Заметим, что выходная частота стабилизатора равняется 1 кГц, а частота тактовых импульсов/CLK= 5 МГц. Канал 0. Согласно заданию коэффициент заполнения импульсов широтно- импульсного стабилизатора равняется gamma = 0,5 + (1/256) (U -20Н). Определим период работы широтно-импульсного стабилизатора как Т= i/f= 1/103 = 1 (мс). Тогда продолжительность импульса т. = L + — (и - 20Н )=0,5 + — (и - 20 Н) (мс). 2 256 256 Продолжительность счетных импульсов каналов (CLK) при частоте работы процессора 5 МГц TCLK= 1/(5 • Ю6) = 200 (нс). Код загрузки канала 0 таймера определим как отношение т, к Так, т. е. 0 5 10-3 1О-3 N = ----- (и - 20Н)« 2500 + 20(и -20Н). . 20010-9 256-20010'9 Канал 1. Коэффициент деления канала 1 определим как отношение продол- жительности периода широтно-импульсного стабилизатора к продолжи- тельности периода TCLK, т. е. Т =----- TCLK 1^2 = 5000. 200 Канал 2. Коэффициент деления канала 2 определим как отношение продол- жительности периода тактовых импульсов АЦП (170 кГц) к продолжитель- ности периода TCLK, т. е. Tclk Алгоритм управления широтно-импульсным стабилизатором показан на рис. 5.66. Сначала в оба канала таймера загружаются управляющие слова. Управляющее слово для канала 0 равняется 00110010В и определяет режим 1 счетчика 0, загрузка сначала младшего, а потом старшего байта, счет — двоично-десятичный (см. рис. 5.37). Управляющее слово для каналов 1 и 2 определяет режим 1, загрузка сначала младшего, а потом старшего байтов,
298 Гпава 5 счет — двоично-десятичный. Управляющие слова равняются 01110100В и 10110100В соответственно. После загрузки управляющих слов программа загружает начальные значения в каналы 1 и 2 таймера. На этом инициали- зация заканчивается и начинается бесконечный цикл ввода кода напряже- ния обратной связи с АЦП, перерасчет его в код загрузки таймера и вывод его в канал 0. Рис. 5.66. Алгоритм управления широтно-импульсным стабилизатором Заметим, чтО| после системного сброса регистры CS и IP МП приобретут значения 0FFFFH и 0000Н соответственно. Это приведет к тому, что в адре- се первой ячейки ПЗУ, к которой после сброса обратится МП в первом ма- шинном цикле ВЫБОРКА КОМАНДЫ, четыре младших разряда будут ну- левыми, а все другие — единичными. Тогда этот адрес будет равняться 3F0H. Программа имеет вид: ORG 3F0H JMP START ORG 10ОН
Интерфейс устройств ввода/вывода 299 START: MOV AL, 00110010B ; Формирование в AL управляющего ; слова режима "1” канала 0 OUT 06, AL ; Вывод управляющего слова в РУС MOV AL, 01110100B ; Формирование в AL управляющего ; слова режима ”2” канала 1 OUT 06, AL ; Вывод управляющего слова в РУС MOV AL, 10110100B ; Формирование в AL управляющего ; слова режима канала 2 OUT 06, AL ; Вывод управляющего слова в РУС MOV AX, 5000 ; Задание частоты преобразования ; feux = 1кГц OUT 02H , AL ; Запись младшего байта кода ; предустановки в канал 1 MOV AL, AH ; Запись' старшего байта кода ; предустановки в канал 1 OUT 02H , AL ; Задание частоты АЦП £Вых = 17 0 кГц MOV AL, 29 ; Запись кода предустановки в ; канал 2 OUT 04H , AL MOV AL, 00 OUT 04H , AL IN AX,08H ; Ввод сигнала обратной связи U AND AX, OFFFH ; Выделение значащих цифр U SUB AX, 2 OH ; Вычитание, результат — в АХ; MOV BL, 20 MUL BL ; Умножение на 20, результат — в АХ ADD AX, 2500 ; Сложение 2500+20(U-20H), ; результат в АХ OUT OOH , AL ; Запись младшего байта кода ; Предустановки в канал 0 MOV AL, AH OUT OOH , AL ; Запись старшего байта кода ; предустановки в канал 0 MOV CX, 100 ; Задержка на время, большее чем ; время преобразования АЦП LOOP D ; t = 16x100x200 (нс) JMP L ; Цикл END.
Глава 6 Однокристальные микроконтроллеры с CISC-архитектурой Однокристальный микроконтроллер (ОМК) представляет собой устройст- во, выполненное конструктивно в одном корпусе БИС, содержащем все компоненты микропроцессорной системы: процессор, память данных, па- мять программ, программируемые интерфейсы. Однокристальным микро- контроллерам присущи следующие особенности: □ система команд ориентирована на выполнение задач управления и регу- лирования; □ алгоритмы, которые реализуются на ОМК, могут иметь много разветв- лений в зависимости от внешних сигналов; □ данные, с которыми оперируют ОМК, не должны иметь большую раз- рядность; □ схемная реализация систем управления на базе ОМК является несложной и имеет невысокую стоимость; □ универсальность и возможность расширения функций управления значи- тельно ниже, чем в системах с однокристальными МП. Однокристальные микроконтроллеры представляют собой удобный инст- румент для создания современных встроенных устройств управления разно- образным оборудованием, например, автомобильной электроникой, быто- вой техникой, мобильными телефонами. 6.1. Архитектура и функциональные возможности однокристальных микроконтроллеров Структуру ОМК и функционирования основных блоков рассмотрим на примере БИС К1816ВЕ51 (i80x51) (рис. 6.1). Графическое обозначение мик- росхемы приведено на рис. 6.2.
302 Гпава 6 Рис. 6.1. Структурная схема ОМК K18I6BE51 Структурная схема ОМК содержит: □ блок 8-разрядного центрального процессора ЦП; , □ память программ ПЗУ емкостью 4 Кбайт; □ память данных ОЗУ емкостью 128 байт; □ четыре 8-разрядных программируемых порта ввода/вывода РО—РЗ; □ последовательный порт; □ два 16-разрядных программируемых таймера/счетчика Т/СО, Т/С 1; □ систему прерываний с пятью векторами и двумя уровнями приоритетов; □ блок управления БУ.
Однокристальные микроконтроллеры с CISC-архитектурой 303 39 РО.О Р0.1 Р0.2 РО.З Р0.4 Р0.5 Р0.6 Р0.7 MCS Р1.0 Р1.1 Р1.2 Р1.3 Р1.4 Р1.5 Р1.6 Р1.7 1 38 2 37 3 36 4 35 5 34 6 33 7_ 32 L 9 ( 31 / 21 ) RST ) ЕА Р2.0 Р2.1 Р2.2 Р2.3 Р2А Р2.5 Р2.6 Р2.7 10 22 RxD TxD 23 11 14 24 25 ТО Т1 26 15 27 б 28 Р IN ТО L6 13 J WR ( RD \ 18 Р INT1 Х1 Х2 м ч ™ 19 РМЕ ( ALE 30 Рис. 6.2. Графическое обозначение ОМ К К1816ВЕ51
304 Гпава 6 Блок ЦП содержит 8-разрядный АЛУ, два аккумулятора А и В, регистр сло- ва состояния процессора PSW (Processor State Word) и программно- недоступные буферные регистры ВА и ВР, которые выполняют функции распределения входных и исходных данных АЛУ. Центральный процессор выполняет операции сложения, вычитания, умножения, деления, логические операции И, ИЛИ, НЕ, ИСКЛЮЧАЮЩЕЕ ИЛИ, операции сдвига и сбра- сывания. Он оперирует со следующими типами переменных: булевыми (1 бит), цифровыми (4 бит), байтовыми (8 бит) и адресными (16 бит). Харак- терной особенностью ОМК является большой набор операций с битами: отдельные биты переменных могут быть установлены, сброшены, инверти- рованы, проверены, переданы. Это позволяет легко реализовывать алго- ритмы, которые содержат операции над булевыми переменными типа "да- нет" ("true-false"). Аккумулятор А является источником одного из операндов и местом разме- щения результата выполнения многих команд. Ряд команд, например, пере- дача информации в/из ОЗУ, команды test, inc, dec могут выполняться без участия аккумулятора. Аккумулятор В используется как аккумулятор лишь в командах умножения и деления, а в других случаях — как один из РОН. Регистр слова состояния процессора PSW сохраняет информацию о состоя- нии АЛУ в процессе выполнения программы и имеет формат, приведенный в табл. 6.1. Таблица 6.1. Формат слова состояния PSW Бит Обозначение Назначение Доступ к биту 7 с Флаг переноса А или П 6 АС Флаг дополнительного переноса А или П 5 F0 Флаг пользователя П 4 RS1 Указатель банка рабочих регистров: 00 — банк 0; 10 — банк 2; 01 — банк 1; 11 — банк 3 П 3 RS0 2 OV Флаг переполнения п 1 - Резервный п 0 р Бит четности А или П Примечание. А — бит устанавливается аппаратно, П — программно.
Однокристальные микроконтроллеры с CISC-архитектурой 305 Назначения флагов С, АС аналогично назначению флагов CF, AF в МП i8086. Флаг OV устанавливается в командах сложения и вычитания, если результат превышает емкость 7-разрядной сетки и старший бит не может быть интерпретирован как знаковый; в командах деления OV сбрасывается, а при делении на ноль — устанавливается. В командах умножения OV при- обретает значение логической единицы, если результат превышает 0FFH. Флаг Р является дополнением содержимого аккумулятора А к четности, т. е. 9-разрядное слово, которое состоит из 8 бит аккумулятора А и бита Р, имеет всегда четное число единиц. Постоянное запоминающее устройство или резидентная память программ (РПП) имеет информационную емкость 4 Кбайт и выполнена в виде ПЗУ масочного типа. Другие ОМК, например, К1816751, имеют ПЗУ типа EPROM. ПЗУ имеет 16-разрядную адресную шину, которая позволяет расширить память до 64 Кбайт путем подключения внешних БИС ПЗУ. Адрес определяется содержимым счетчика команд PC (Program Counter) или содержимым регистра-указателя данных DPTR (Data Pointer Register). Регистр DPTR используется при косвенных переходах или при адресации таблиц. Кроме того, может использоваться в качестве РОН или как один 16-разрядный регистр, или как два независимых 8-разрядных регистра DPH и DPL. Сброс Векторы прерываний ООООН 0003Н INTQ ОООВН Т/СО Внутренняя память 0013Н INT1 - - программ Т/С1 0018Н 0023Н TI+RI QFFFH 1000Н Внешняя память программ FFFFH Рис. 6.3. Распределение адресного пространства РПП
306 Гпава 6 Распределение адресного пространства ПЗУ показано на рис. 6.3. Нулевой адрес ПЗУ определяет начало выполнения программы ОМК после сброса. Младшие адреса (ООЗН, OOBH, 013Н, 01ВН, 023Н) являются начальными ад- ресами подпрограмм обработки прерываний. Оперативное запоминающее устройство или резидентная память данных (РПД) (рис. 6.4) состоит из двух областей. Первая область — ОЗУ данных с информационной емкостью 128x8 бит расположена по адресам 0—7FH. Вторая область — регистры специальных функций (SFR, Special Function Registers) — по адресам 80Н—FFH. Назначение регистров специальных функций приведено в табл. 6.2. Внутреннее ОЗУ (прямая и косвенная адресация) Прямоадресуемые биты ООН R0 БАНКО 07/7 R7 08/7 R0 БАНК 1 0FH R7 10/7 R0 БАНК 2 17 Н R7 18Н R0 БАНКЗ 1FH R7 20Н П ря моа д ресуе м ые биты 2FH 7FH вон Регистры специальных функций (только прямая адресация) FFH 20Н D7 D0 07 06 05 04 03 02 01 00 21/7 0F 0Е 0D ос 08 од 09 08 22/7 17 16 15 14 13 12 11 10 23/7 1F 1Е W 1С 1В 1Д 19 18 24/7 27 26 25 24 23 22 21 20 25Н 2F 2Е 2D 2С 28 2Д 29 28 26 Н 37 36 35 34 33 32 31 30 27Н 3F ЗЕ 3D ЗС 38 ЗА 39 38 28Н 47 46 45 44 43 42 41 40 29Н 4D 4g 4А 49 48 2АН 57 56 55 54 53 52 51 50 2ВН ПР НЕ fiR HG 5Я ПЛ ПЯ 56 2СН 67 66 65 64 63 62 61 60 2DH 6F 6F АП 60 АЯ АД 6Q 66 2ЕН 77 76 75 74 73 72 71 70 2FH 7F 7Е 7D 7С 78 7А 79 78 Рис. 6.4. Резидентная память данных
Однокристальные микроконтроллеры с CISC-архитектурой 307 Таблица 6.2. Регистры специальных функций Обозна- чение Наименование, адреса бит Адрес регистра Значение после сброса 1 2 3 4 АСС* Аккумулятор А Е7 Е6 Е5 Е4 ЕЗ Е2 Е1 ЕО ОЕОН 00 В* Аккумулятор В F7 F6 F5 F4 F3 F2 F1 F0 0F0H 00 PSW* Слово состояния программы D7 D6 D5 D4 D3 D2 D1 DO CY АС F0 RS1 RS0 OV Р 0D0H 00
308 Гпава 6 Таблица 6.2 (продолжение) Обозна- чение Наименование, адреса бит Адрес регистра Значение после сброса 1 2 3 4 SP Регистр-указатель стека 81Н 07 DPTR Регистр-указатель данных: DPH — старший байт DPL — младший байт 83Н 82Н 00 00 РО* Порт 0 87 86 85 84 83 82 81 80 80Н 0FFH Р1* Порт 1 97 96 95 94 93 92 91 90 90Н 0FFH Р2* Порт 2 А7 А6 А5 А4 АЗ А2 А1 АО А15 А14 А13 AI2 АН А10 А9 А8 0A0H 0FFH
Однокристальные микроконтроллеры с CISC-архитектурой 309 Таблица 6.2 (продолжение) Обозна- чение Наименование, адреса бит Адрес регистра Значение после сброса 1 2 3 4 РЗ* Порт 3 В7 В6 В5 В4 ВЗ В2 В1 ВО RD WR Т1 ТО INT1 INTO RxD TxD ОВОН 0FFH IP* Регистр приоритетов BF BE BD ВС ВВ ВА В9 В8 РТ2 PS РТ1 РХ1 РТО РХО 0В8Н ххООООООВ IE* Регистр маски прерываний AF АЕ AD 0А8Н 0x000000В
310 Гпава 6 Таблица 6.2 (продолжение) Обозна- чение Наименование, адреса бит Адрес регистра Значение после сброса I 2 3 4 АС АВ АА А9 А8 ЕА ЕТ2 ES ЕТ1 ЕХ1 ЕТО ЕХО TMOD Регистр режима таймеров/счетчиков G1 С/Т1 М1.1 М0.1 GO ОТО М1.0 МО.О 89Н 00 TCON* Регистр управления/статуса таймеров BF BE BD ВС ВВ ВА В9 В8 TF1 TRI TF0 TR0 IE1 ITI IE0 IT0 88Н 00
Однокристальные микроконтроллеры с CISC-архитектурой 311 Таблица 6.2 (окончание) Обозна- чение Наименование, адреса бит Адрес регистра Значение после сброса 1 2 3 4 тно Таймер 0 (старший байт) 8СН 00 TL0 Таймер 0 (младший байт) 8АН 00 ТН1 Таймер 1 (старший байт) 8DH 00 ты Таймер 1 (младший байт) 8ВН 00 SCON* Регистр управления приемником-передатчиком 9F 9Е 9D 9С 9В 9А 99 98 SM0 SM1 SM2 REN ТВ8 RB8 TI RI 98Н 00 SBUF Буфер приемников-передатчиков 99Н XX PCON Регистр управления мощностью SMOD GF1 GF0 PD IDL 87Н Оххххххх Примечание. Обозначенные регистры предполагают адресацию отдельных битов. Резидентная память данных адресуется 8-разрядными регистрами адреса (РА) или указателем стека (SP) (см. рис. 6.1). Регистр адреса является про- граммно-недоступным регистром, в который загружается адрес ячейки ОЗУ во время выполнения команд. Регистр SP предназначен для адресации стека, который является частью РПД. Содержимое SP инкрементируется перед
312 Глава 6 запоминанием данных в стеке по командам push и call и декрементирует- ся по командам pop и ret. Подобный способ адресации элементов стека на- зывают 'прединкрементным/постдекрементным. В процессе инициализации ОМК после поступления сигнала RESET в SP автоматически загружается код 07Н. Это означает, что, если программа не переопределяет стек, то пер- вый байт данных в стеке будет расположен в ячейке РПД с адресом 08Н. Резидентная память данных, равно как и РПП, может быть расширена до 64 Кбайт подключением внешних БИС. Блок управления состоит из генератора (Г) тактовых сигналов, программно- недоступного регистра команд (РК) и схемы управления и синхронизации (СК и С) (см. рис 6.1). Структурная схема блока управления показана на рис. 6.5. Рис. 6.5. Структурная схема блока управления
Однокристальные микроконтроллеры с CISC-архитектурой 313 Код команды, считанной из РПП, записывается в 8-разрядный РК и посту- пает на дешифратор команд (ДШК), входящий в состав СУ и С. Дешифра- тор команд формирует 24-разрядный код, который поступает на програм- мируемую логическую матрицу (ПЛМ), а после этого — на блок логики управления. Блок логики управления на основании декодированного кода команды, внешних управляющих сигналов RST (сигнала общего сброса), ЕА (сигнала блокирования работы РПП) и сигналов от внутреннего формиро- вателя импульсов синхронизации вырабатывает внутренние сигналы управ- ления. Внутренний формирователь импульсов синхронизации формирует: □ внутренние сигналы синхронизации машинных циклов; □ исходный сигнал разрешения фиксации адреса ALE; □ сигнал разрешения программной памяти РМЕ (формируется только при работе с внешней памятью). Машинный цикл (рис. 6.6) имеет фиксированную продолжительность и со- держит шесть состояний S1—S6, каждое из которых по продолжительности равен одному такту. Рис. 6.6. Диаграмма формирования машинных циклов ОМК Каждое состояние или такт состоит из двух фаз — Р1 и Р2. Продолжитель- ность фазы равна периоду сигнала Q, который формируется или встроен- ным (внутренним) тактовым генератором (рис. 6.7) при подключении к вы- водам 18 (XTL2) и 19 (XTL1) ОМК кварцевого резонатора (рис. 6.8, а) или LC-цепи (рис. 6.8, 6), или внешним источником тактовых сигналов (рис. 6.9). Частота импульсов генератора для схемы, показанной на рис. 6.8, а, опреде- ляется как
314 Гпава 6 где _ С + ЗСрр 2 СРР ~ 10 пф — емкость выводов БИС. Рис. 6.7. Принципиальные схемы внутренних тактовых генераторов: a — и-МДП-технология; б — Л*-МДП-технология Рис. 6.8. Внешние цепи внутреннего тактового генератора: a — подключение кварцевого резонатора; б — подключение LC-цепи Подключение внешнего источника тактовых сигналов к ОМК, выпол- ненных по и-МДП (см. рис. 6.9, а) и 7С-МДП (см. рис. 6.9, б) технологи- ям, отличается тем, что в первом случае внешние импульсы синхрониза- ции поступают на выводы 18 (XTL2) и 19 (XTL1). В втором случае внешние синхроимпульсы поступают на выводы 19 (XTL1) и 20 (общий), а вывод 18 (XTL2) остается неподключенным.
Однокристальные микроконтроллеры с CISC-архитектурой 315 При частоте кварцевого резонатора или тактовой частоте внешних импуль- сов синхронизации 12 МГц продолжительность машинного цикла равняется 1 мкс. Внешние импульсы синхронизации Х2 18 Х2 Внешние импульсы синхронизации 19 Х1 Рис. 6.9. Подключение внешнего источника тактовых сигналов: a — для л-МДП; б — для /С-МДП Параметры внешних импульсов синхронизации (минимальное значение периода, минимальные времена L- и Н-уровней сигнала, максимальные длительности положительных и отрицательных фронтов) для частоты /max = 12 МГц показаны на рис. 6.10. Рис. 6.10. Параметры внешних импульсов синхронизации В блок управления входит также регистр управления потреблением энергии PCON (Power CONtrol) (см. рис. 6.5). Порты ввода/вывода Р0—РЗ (см. рис. 6.1) предназначены для обеспече- ния побайтного обмена информацией ОМК с внешними устройствами по 32 линиям ввода/вывода. Принципиальные схемы линий портов Р0—РЗ показаны на рис. 6.11. Каждая линия порта содержит управляемый ре- гистр-защелку, два буфера и выходной транзисторный каскад. Уровни
316 Гпава 6 входных и выходных сигналов портов отвечают стандарту ТТЛ-логики. Любую линию портов можно использовать для ввода или вывода инфор- мации независимо от других линий. Для того чтобы линия порта исполь- зовалась для ввода, в соответствующий D-триггер регистра-защелки необ- ходимо записать логическую единицу. Ее потенциал закроет МДП- транзистор выходного каскада. Физические адреса портов следующие: □ РО—80Н, при битовой адресации 80Н—87Н; □ Р1—90Н, при битовой адресации 90Н—97Н; О Р2—АОН, при битовой адресации АОН—А7Н; □ РЗ—ВОН, при битовой адресации ВОН—В7Н. Порт РО является двунаправленным, поскольку через него можно в любой момент вводить и выводить информацию. Выводы порта РО имеют три со- стояния. Через порт РО: О выводится младший байт адреса А7—АО при работе с внешним ПЗУ и внешним ОЗУ; □ выдается из ОМК и принимается в ОМК байт данных при работе с внешней памятью, при этом обмен байтом данных и вывод младшего байта адреса внешней памяти мультиплексован во времени; □ задаются данные при программировании внутреннего ПЗУ (EPROM). Порты Р1—РЗ являются квазидвунаправленными, поскольку в любой мо- мент через порты можно только выводить информацию. Для ввода инфор- мации необходимо записать во все разряды регистра-защелки логические единицы. После этого можно выполнять ввод. Через порт Р1 выводится младший байт адреса при программировании внутреннего ПЗУ EPROM и при чтении внутреннего ПЗУ. Через порт Р2 выводится старший байт адреса А15—А8 при работе с внеш- ним ПЗУ и внешним ОЗУ в тех случаях, когда адрес является 16-разрядным; задается старший байт А15—А8 адреса при программировании и при чте- нии внутреннего ПЗУ (EPROM). Порт РЗ может использоваться как для ввода/вывода информации, так и для реализации альтернативных функций обмена информацией (см. рис. 6.11, г). Альтернативные функции приведены в табл. 6.3. Каждую из восьми линий порта РЗ пользователь может запрограммировать на выполнение альтернатив- ных функций записью единицы в соответствующие биты регистра-замка (РЗ.О—Р3.7) порта РЗ.
Однокристальные микроконтроллеры с CISC-архитектурой 317 Чтение регистра-защелки Внутренняя шина Запись в регистр-защелку" Чтение выводов РО.х Чтение регистра-защелки Внутренняя шина Запись в регистр-защелку- Чтение регистра-защелки Внутренняя шин£ Запись в регистр-защелку Альтернативная функция входа Чтение выводов РЗ.х Альтернативная функция выхода D Q с Q D Q С Q Рис. 6.11. Принципиальные схемы линий портов: a — РО; б — Р1; в — Р2; г — РЗ
318 Гпава 6 Таблица 6.3. Альтернативные функции порта РЗ Би^ы регистра-защелки порта РЗ Бит Позиция Альтернативная функция обмена информацией RxD P3.0 Вход приемника при работе последовательного порта в режимах 1—3. Ввод/вывод последовательных данных в режиме регистра сдвига TxD P3.1 Выход передатчика последовательного порта в режи- мах 1—3. Выход импульсов синхронизации при работе последовательного порта в режиме 0 INTO P3.2 Вход запроса прерывания 0. Воспринимаются сигналы низкого уровня или срез сигнала INTI P3.3 Вход запроса прерывания 1. Воспринимается сигнал низкого уровня или срез сигнала то P3.4 Вход таймера/счетчика 0 или тестовый вход 0 TI P3.5 Вход таймера/счетчика 1 или тестовый вход 1 WR P3.6 Запись. Аппаратное формирование активного сигнала низкого уровня в случае обращения к внешней памяти данных RD P3.7 Чтение. Активный сигнал низкого уровня формируется аппаратно в случае обращения к внешней памяти данных Последовательный порт (см. рис. 6.1) предназначен для обеспечения после- довательного обмена данными. Может использоваться или как регистр сдвига, или как универсальный асинхронный приемопередатчик с фиксиро- ванной или переменной скоростью обмена и с возможностью дуплексного режима. Последовательный порт может работать в одном из четырех режи- мов (режим 0, режим 1, режим 2, режим 3), выбрать который возможно пу- тем записи управляющего слова в регистр SCON (Serial port CONtrol). На- значения бит регистра SCON приведены в табл. 6.4. В режиме 0 последовательный порт представляет собой 8-разрядный ре- гистр сдвига. Байт информации передается и принимается через вывод RxD, при этом через вывод TxD выдаются сигналы синхронизации сдвига. Прием и выдача байта начинается с младшего разряда и заканчивается старшим. Скорость обмена фиксированна и равняется //12, где/— частота синхрони- зации ОМК.
Однокристальные микроконтроллеры с CISC-архитектурой 319 Таблица 6.4. Назначения битов регистра SCON Биты Обозначение Назначение 7 SM0 Определяют один из 4-х режимов работы последователь- ного порта: SM0SM1 0 0 —режим 0 0 I —режим I I 0 — режим 2 I I — режим 3 6 SMI 5 SM2 Разрешение мультипроцессорной работы. Устанавливает- ся программно для запрета сообщений, в которых 9-й бит равен 0. В режиме 0 SM2 должен быть сброшен в ноль 4 REN Разрешение приема последовательных данных. Устанав- ливается и сбрасывается программно для разрешения и запрета приема данных соответственно 3 ТВ8 Девятый бит переданных данных в режимах 2 и 3. Уста- навливается и сбрасывается программно 2 RB8 В режиме 0 RB8 не используется. В режиме I при SM2 = 0 — принятый стоп-бит. В режимах 2 и 3 — девятый бит принятых данных I TI Флаг прерывания передатчика. В режиме 0 — устанавли- вается аппаратно при выдаче восьмого бита; в других режимах.— устанавливается аппаратно при формирова- нии стоп-бита. Сбрасывается программно во всех режимах 0 RI Флаг прерывания приемника. При SM2 = 0: В режиме 0 — устанавливается аппаратно при принятии восьмого бита; в режимах I, 2, 3 — спустя половину интервала стоп-бита. При SM2 = 1: в режиме 1 флаг RI устанавливается в еди- ницу при поступлении стоп-бита, который равняется еди- нице. В режимах 2 и 3 флаг RI равняется нулю, если девятый бит принятых данных равняется нулю. Сбрасывается программно во всех режимах
320 Гпава 6 На рис. 6.12, а показана функциональная схема последовательного порта в режиме 0, а на рис. 6.12, б — соответствующие диаграммы. Передача начинается по любой команде, которая использует буфер приемника- передатчика SBUF как регистр назначения, например mov sbuf, а. В фазе Р2 состояния S6 (S6P2) устройство управления по сигналу "Запись в SBUF" записывает байт в регистр сдвига передатчика, устанавливает D-триггер девятого бита в единицу и инициирует работу блока управления передатчиком. Внутренняя шина Запись в SBUF— “1 S D С SBUF I-», v 4 4 444 n Детектор 0 RxD FO/12S6 Старт > Управление передатчиком На систему прерываний REN i— --- & RI I— ТхС Старт Загрузка в SBUF TI RI Управление приемником Сдвиг Посылка Прием Сдвиг RxD Shift Clock Входной регистр 8 < SBUF Q Чтение SBUF Внутренняя шина а Рис. 6.12. Последовательный порт в режиме 0: a — функциональная схема
Однокристальные микроконтроллеры с CISC-архитектурой 321 ПЕРЕДАЧА ТхС S6| S7.S6|S7.S6|S7.S6|S7.S6|S7.S6|S7.S6|S7.S6|S7 Запись T"l—П n_n П П П П—П—П—П—n—n_ SRIJF П56Р2____________________________________ Посылка Сдвиг ПРИЕМ Запись в SCOA/n Сброс К/ ТхБ б Рис. 6.12. Последовательный порт в режиме 0: б — диаграммы Блок управления передатчиком через один машинный цикл формирует сиг- нал разрешения "Посылка”, который разрешает выдачу содержимого реги- стра сдвига передатчика на вывод RxD и сигнала "Синхронизация сдвига” на вывод TxD. По сигналу "Сдвиг” в момент S6P2 каждого машинного цик- ла содержимое регистра сдвига передатчика сдвигается по правую сторону на одну позицию младшими битами вперед и поступает на вывод RxD. В старшие биты регистра сдвига передатчика, которые освобождаются, запи- сываются нули. При получении от детектора нуля сигнала "Передатчик свободен” блок управления передатчиком снимает сигнал "Посылка” и устанавливает флаг прерывания передатчика TI в начале интервала S1P1 десятого машинного цикла после поступления сигнала "Запись в SBUF". Прием начинается при одновременном выполнении условий REN = 1 и RI = = 0. В начале интервала S6P2 следующего машинного цикла (см. рис. 6.11, б) блок управления приемником формирует сигнал разрешения "Прием", за ко- торым на выход TxD передаются синхросигналы сдвига, и в регистре сдвига приемника начинают формироваться значения бит данных, которые считы-
322 Гпава 6 ваются из вывода RxD в интервалы S5P2 каждого машинного цикла. В ин- тервалы S6P2 каждого машинного цикла по сигналу "Сдвиг" осуществляет- ся сдвиг содержимого регистра сдвига приемника влево на одну позицию, и принятый бит записывается в крайний правый разряд. После поступления восьмого импульса "Сдвиг" содержимое регистра приемника переписывает- ся в SBUF. В интервале S1P1 десятого машинного цикла блок управления приемником переписывает содержимое регистра сдвига в буфер SBUF, сни- мает сигнал "Прием" и устанавливает флаг прерывания приемника RI в единицу. В режиме 1 последовательный порт представляет собой 8-разрядный уни- версальный асинхронный приемопередатчик с переменной скоростью обме- на. Через TxD передаются, а через RxD принимаются 10 бит: нулевой старт- бит, 8 бит информации и единичный стоп-бит. Скорость обмена является переменной. Она определяется частотой переполнения таймера 1 и би- том SMOD регистра PCON. На рис. 6.13, а, б показана функциональная схема и диаграммы последовательного порта в режиме 1 соответственно. Передача начинается при выполнении любой команды, которая использует SBUF как регистр назначения, например: MOV SBUF, #25; переслать в SBUF число 25. Устройство управления ОМК по сигналу "Запись в SBUF" загружает 1 в де- вятый бит регистра сдвига передатчика, инициирует работу блока управле- ния передатчиком и в интервале S1P1 формирует сигнал разрешения "Посылка" низкого уровня. По этому сигналу на вывод TxD сначала посту- пает старт-бит, а потом, по сигналу разрешения "Данные" по импульсам "Сдвиг" содержимое регистра передатчика сдвигается на одну позицию, и поочередно на вывод TxD поступают 8 бит данных. По девятому импульсу "Сдвиг" формируется единичный стоп-бит, флаг TI устанавливается в ноль, сигналы "Посылка" и "Данные" снимаются, и передача заканчивается. Прием начинается при переходе сигнала на входе RxD из единицы в ноль, который определяется с помощью детектора заднего фронта. Как только переход из единицы в ноль установлен, в регистр сдвига приемника загружа- ется число 1FFH, т. е. все 9 разрядов регистра заполняются единицами. При переходе сигнала на входе RxD из единицы в ноль также сбрасывается зна- чение внутреннего счетчика-делителя частоты на 16, что формирует сигнал "Синхронизация приемника". Внутренний счетчик начинает отсчитывать импульсы синхронизации. Во время седьмого, восьмого и девятого импуль- сов осуществляется опрос сигнала на входе RxD для подтверждения нулево- го значения старт-бита. Полученные три значения принятого бита посту- пают на детектор бита, который определяет действительное значение принятого бита по мажоритарному принципу "два из трех".
Однокристальные микроконтроллеры с CISC-архитектурой 323 В том случае, если действительное значение старт-бита равняется нулю, на- чинается прием поочередно 8 бит данных. Значение каждого бита данных также проверяется детектором бита в седьмом, восьмом и девятом импуль- сах сигнала "Синхронизация приемника", и лишь после этого заносится в регистр сдвига приемника. Если значение старт-бита не равняется нулю, блок управления приемом снова начинает поиск переходов сигнала на входе RxD из единицы в ноль. Внутренняя шина а Рис. 6.13. Последовательный порт в режиме 1: a — функциональная схема
324 Гпава 6 Рис. 6.13. Последовательный порт в режиме 1: б — диаграммы Прием старт-бита и 8 бит данных в каждом машинном цикле сопровождает- ся сдвигом содержимого регистра приемника на одну позицию по сигналу ’’Сдвиг”. После принятия старт-бита и 8 бит данных принимается стоп-бит, значение которого обязательно должно быть единичным. Таким образом, после десятого импульса "Сдвиг” в регистре приемника находятся 8 бит ин- формации и стоп-бит. Блок управления приемом формирует сигнал "Загрузка SBUF', по которому 8 информационных бит поступают в SBUF, стоп-бит — в разряд RB8 регистра SCON. Флаг прерывания приемника RI устанавливается в ноль. Прием заканчивается, и последовательный порт снова начинает процесс выявления перехода сигнала на входе RxD из еди- ницы в ноль. В режимах 2 и 3 последовательный порт представляет собой 9-разрядный универсальный синхронный приемопередатчик с фиксированной (для ре- жима 2) и переменной (для режима 3) скоростью обмена. В режиме 2 ско- рость обмена равняется //32 при SMOD = 1 или //64 при SMOD = 0. В ре- жиме 3 скорость обмена определяется таймером 1, как и в режиме 1. На рис. 6.14, а, б показаны функциональная схема и диаграммы последова- тельного порта в режиме 2.
Однокристальные микроконтроллеры с CISC-архитектурой 325 Функциональная схема последовательного порта в режиме 3 совпадает со схемой рис. 6.13, а, а диаграммы — рис. 6.14, б. Через вывод TxD последовательный порт передает или с выхода RxD при- нимает 11 бит: нулевой старт-бит, 8 бит данных, программируемый девятый бит ТВ8 и единичный стоп-бит. Режимы 2 и 3 отличаются от режима 1 лишь наличием 9-го программируемого бита. Внутренняя шина а Рис. 6.14. Последовательный порт в режиме 2: а — функциональная схема
326 Гпава 6 ТхС ПЕРЕДАЧА Запись в SBUF Посылка Данные Сдвиг RxD Стоп-бит Старт-бит TI С топ ПРИЕМ RI б Рис. 6Т14. Последовательный порт в режиме 2: б — диаграммы Вследствие этого изменяются условия окончания цикла прием: блок управ- ления приемом формирует сигнал управления ’’Загрузка SBUF”, загружает стоп-бит в разряд RB8 регистра SCON и устанавливает флаг прерывания приемника RI в единицу лишь в том случае, если в последнем такте сдвига выполняются два условия: RI = 0 и SM2 = 0 или значение девятого принято- го бита данных равняется единице. Значения стоп-бита в режимах 2 и 3 не влияют на SBUF, RB8 или RI.
Однокристальные микроконтроллеры с CISC-архитектурой 327 Скорость приема-передачи данных в последовательном порте в разных режи- мах работы. В режиме 0 частота передачи зависит лишь от резонансной частоты fQ кварцевого резонатора и равна /о-/q/XI. За один машинный цикл последовательный порт передает 1 бит информации. В режимах 1, 2 и 3 скорость приема-передачи зависит от значения управ- ляющего бита SMOD (см. табл. 6.4) в регистре SOON. В режиме 2 частота передачи определяется формулой /2 = (2SM0D / 64) •/q . Иначе говоря, при SMOD = 0 частота передачи равняется (l/64)fQ, а при SMOD = 1 равняется (1/32)/е. В режимах 1 и 3 в формировании частоты передачи, кроме бита SMOD, принимает участие таймер-счетчик 1. При этом частота передачи зависит от частоты переполнения (fovr\) и определяется как: д3=(2^/32)-/Оуп- Прерывание от таймера-счетчика 1 в этом случае должно быть заблокиро- вано. Сам таймер-счетчик 1 может работать и как таймер, и как счетчик со- бытий в любом из трех режимов. Однако наиболее удобно использовать режим таймера с автоперезагрузкой (старшая тетрада TMOD = 0010В). При этом частота передачи определяется так: Аз = (2wod /32) • (fQ /12)/(256 - (THY)). Блок таймеров/счетчиков (Т/С) предназначен для подсчета внешних собы- тий (режим счетчика), реализации программно управляемых задержек и вы- полнения времязадающих функций (режим таймера). В режиме таймера со- держимое Т/С инкрементируется в каждом машинном цикле, т. е. через каждые 12 периодов резонатора. В режиме счетчика содержимое Т/С ин- крементируется при переходе из единицы в ноль внешнего входного сигна- ла, который поступает на выводы ОМК (вывод ТО для Т/СО, вывод Т1 — для Т/Cl). Опрос значения внешнего входного сигнала выполняется в фазе Р2 состояния S5 каждого машинного цикла. Содержимое счетчика увеличи- вается на единицу, если в предыдущем цикле поступил входной сигнал вы- сокого уровня (1), а в следующем — сигнал низкого уровня (0). Новое ин- крементированное значение счетчика формируется в фазе Р1 состояния S3 машинного цикла, который является следующим после того цикла, в кото- ром был зафиксирован переход из единицы в ноль. Для фиксирования пере- хода необходимо два машинных цикла. Поэтому максимальная частота подсчета входных импульсов равняется 1/24 частоты резонатора. Для гарантированного считывания входного сигнала он может удерживать свое значение на протяжении, по меньшей мере, единицы машинного цикла ОМК.
328 Глава 6 В состав блока таймеров/счетчиков входят: □ два 16-разрядных регистра Т/СО и Т/С1; □ 8-разрядный регистр режимов TMOD; □ 8-разрядный регистр управления TCON; □ схема инкремента; □ схема фиксации сигналов INTO, INTI,ТО,Т1; □ схема управления флагами; □ логика управления Т/С. Регистры Т/СО и Т/Cl выполняют функцию хранения результатов счета. Каждый из них состоит из двух 8-разрядных регистров — THO, TL0 и ТН1, ТЫ соответственно (TH — старшие, TL — младшие регистры). Каждый из этих регистров имеет свой адрес и может быть использован как РОН, если соответствующий таймер не используется. Начальный код счета заносится в регистры Т/С программно. Признаком окончания счета является переполнения регистра Т/С, т. е. переход его со- держимого из состояния "все единицы" в состояние "все нули". Регистр режимов TMOD, предназначенный для приема и сохранения кода, который определяет: □ один из четырех возможных режимов работы каждого Т/С; □ выполнение функций таймеров или счетчиков; □ управление Т/С по внешнему выводу. Назначение битов регистра TMOD приведено в табл. 6.5. Таблица 6.5. Назначение битов регистра TMOD Бит Обозна- чение Назначение 1 2 3 TM0D.3 для Т/СО (TMOD.7 для Т/С 1) GATE0 (GATEI) Разрешает управлять таймером от внешнего вывода (INTO —для Т/СО, INT1 — для Т/С 1). GATE = 0 — управление запрещено GATE = 1 — управление разрешено TMOD.2 для Т/СО (TMOD.6 для Т/С 1) С/ТО (C/TI) Бит выбора функции таймера или счетчика. Если бит сброшен, то работает таймер от внутреннего источника сигналов синхронизации. Если бит установлен, то работает счетчик от внешних сигналов на входе ТО (Т1)
Однокристальные микроконтроллеры с CISC-архитектурой 329 Таблица 6.5 (окончание) Бит Обозна- чение Назначение 1 2 3 TMOD.1 для Т/СО (TMOD.5 для T/CI) М1.0 (М1.1) Выбор режима работы TMOD.O для Т/СО (TMOD.4 для Т/С 1) мо.о (М0.1) Выбор режима работы осуществляется в отдельности для Т/СО и Т/Cl со- гласно значениям битов Ml.О (М1.1) и МО.О (М0.1): Ml МО Режим 0 0 0 0 1 1 1 0 2 1 1 3 Регистр управления/статуса TCON предназначен для приема и хранения ко- да управляющего слова. Назначение битов регистра TCON приведено в табл. 6.6. Таблица 6.6. Назначение битов регистра TCON Бит Обозна- чение Назначение 1 2 3 7(5) TF1 (TF0) Флажки переполнения. Сбрасываются и устанавливаются аппаратно и программно. Доступны для чтения 6(4) TR1 (TR0) Биты включения/выключения Т/СО и Т/С1: при TR = 0 — Т/С выключен (останов счета) при TR = 1 — включен (пуск) 3(1) IE1 (IE0) Флажки запроса внешних прерываний, которые посту- пают по входам INTI (INTO). Сбрасываются и устанав- ливаются аппаратно и программно. Доступны для чтения
330 Гпава 6 Таблица 6.6 (окончание) Бит Обозна- чение Назначение 1 2 3 2(0) ITI (IT0) Биты, определяющие тип прерывания по входам INT1 (INTO): IT = 0 — прерывание по уровню (низкому) IT = 1 — прерывание по фронту (переход из единицы в ноль). Примечание. Биты 4, 5 управляют Т/СО; биты 6, 7 — Т/Cl. Биты 0, 1 определяют внешние прерывания по входу INT1, биты 2, 3 — по входу INT1. Флаги переполнения TF0 и TF1 устанавливаются аппаратно при перепол- нении соответствующих Т/С (переход содержимого регистра Т/С из состоя- ния "все единицы" в состояние "все нули"). Если при этом прерывание от соответствующего Т/С разрешено, то установка флага TF вызовет прерыва- ние. Флаги TF0 и TF1 сбрасываются аппаратно при передаче управления программе обработки соответствующего прерывания. Прерывания по TF0 и TF1 могут быть вызваны (установка TF) и отменены (сброс TF). Флаги IE0 и IE1 устанавливаются аппаратно от внешних источников пре- рываний (соответственно входы ОМК INTO и INT1 ) или программно и инициируют вызов программы обработки соответствующего прерывания. Сброс этих флагов выполняется аппаратно при обслуживании прерывания лишь в том случае, если прерывание вызвано фронтом сигнала. Если пре- рывание вызвано уровнем сигнала на входе INTO (INTI ), то сброс флага IE должна выполнить программа обслуживания запроса прерывания. Схема инкремента предназначена: □ для увеличения на единицу в каждом машинном цикле содержимого ре- гистров Т/СО, Т/Cl, для которых выполняется функция таймера и разре- шен счет; □ для увеличения на единицу содержимого регистров Т/СО, Т/Cl, для кото- рых выполняется функция счетчика, при этом счет разрешен и на соот- ветствующем входе ОМК (ТО для Т/СО и Т1 для Т/Cl) зафиксирован счетный импульс. Схема фиксации INTO , INTI , ТО, Т1 представляет собой четыре триггера. В фазе Р2 состояния S5 каждого машинного цикла в них запоминается ин- формация, которая поступила по выводам INTO, INTI ТО, Tl.
Однокристальныё микроконтроллеры с CISC-архитектурой 331 Схема управления флагами устанавливает и сбрасывает флаги переполне- ния Т/С и флаги запросов внешних прерываний. Логика управления синхронизирует работу регистров Т/СО и Т/Cl в соот- ветствии с запрограммированными режимами работы и синхронизирует работу блока Т/С с работой ОМК. Режимы работы Т/С. Режим работы каждого Т/С определяется значениями битов МО, Ml в регистре TMOD. Таймеры Т/СО и Т7С1 имеют четыре ре- жима работы. Режимы 0, 1,2 одинаковы для обоих Т/С; в этих режимах они полностью независимы друг от друга. Работа Т/СО и Т/Cl в режиме 3 разли- чается. При этом установление режима 3 в Т/СО влияет на режимы работы Т/С1. □ Режим О (МО = 0, Ml = 0). Таймер в режиме 0 представляет собой уст- ройство на базе 13-разрядного регистра и является 8-разрядным тайме- ром (счетчиком) с пятиразрядным предделителем на 32. Для Т/СО 13-разрядный регистр состоит из 8 разрядов регистра ТНО и пяти младших разрядов регистра TL0, а для Т/С1 — из 8 разрядов реги- стра ТН1 и четырех младших разрядов регистра ТЫ. Функцию делителя на 32 выполняют регистры TLO, TL1. Они являются программно- доступными, но значащими в них являются лишь пять младших разрядов. Функцио- нальная схема Т/Cl в режиме 0 показана на рис. 6.15. Схема Т/СО являет- ся аналогичной. Рис. 6.15. Функциональная схема Т/С I в режиме О Источник импульсов синхронизации (внутренних и внешних) ОМК с частотой f обозначен на рис. 6.15 как OSC. Бит С/Т регистра TMOD определяет выполнение функций таймера (С/Т =0) или счетчика (С/Т =1). Счет начинается по команде, которая устанавливает бит TR регистра TCON в единицу, например, по команде SETB TR1. Если необ-
332 Гпава 6 ходимо управлять счетом извне, то бит GATE регистра TMOD устанав- ливают в единицу. Тогда при TR = 1 счет разрешен, если на входе INTO (для Т/СО) или INT1 (для Т/Cl) установлено единичное состояние, и за- прещен, если установлено нулевое состояние. Установка бита TR0 (для Т/СО) и TR1 (для Т/Cl) в единичное состояние выключает соответствую- щий Т/С независимо от состояния других битов. При переполнении Т/С, которое происходит при переходе содержимого регистра Т/С из состояния "все единицы" в состояние "все нули", уста- навливается флаг TF0 (для Т/СО) и TF1 (для Т/Cl) в регистре TCON. □ Режим 1 (МО = 1, Ml = 0). Отличие от режима 0 состоит в том, что ус- тановка режима 1 превращает Т/С в устройство с 16-разрядным регист- ром. Таймер/счетчик Т/СО состоит из программно доступных пар реги- стров TL0, ТНО, Т/С1 — из программно доступных пар регистров ТЫ, TH 1. Функциональная схема на примере Т/С 1 показана на рис. 6.16. Рис. 6.16. Функциональная схема Т/С I в режиме I □ Режим 2 (МО = 0, Ml = 1). В режиме 2 Т/С представляет собой устройст- во на базе 8-разрядного регистра TL0 для Т/СО и ТЫ для Т/Cl. При каж- дом переполнении TL устанавливается флаг TF в регистре TCON. Кро- ме того, осуществляется автоматическая перезагрузка содержимого TH в TL. Регистры ТНО и ТН1 загружаются программно. Перезагрузка TL0 с ТНО и ТЫ с ТН1 не влияет на содержимое регистров ТНО и ТН1. Функ- циональная схема Т/С 1 в режиме 2 показана на рис. 6.17. О Режим 3. Таймер/счетчик 1 заблокирован и сохраняет свое значение. Таймер/счетчик 0 в режиме 3 представляет собой два независимых уст- ройства на базе 8-разрядных регистров TL0 и ТНО (рис. 6.18). Устройст- во на базе TL0 может работать как в режиме таймера, так и в режиме счетчика, а на базе ТНО — только в режиме таймера.
Однокристальные микроконтроллеры с CISC-архитектурой 333 8-разрядный код предустановки Рис. 6.17. Таймер/счетчик в режиме 2 Рис. 6.18. Таймер/счетчик в режиме 3 Как видно из рис. 6.18, для обеспечения работы Т/СО в режиме 3 исполь- зуются биты TR1 и TF1, поэтому они не могут использоваться для управ- ления Т/Cl. Это приводит к тому, что при установке Т/СО в режим 3, а Т/С1 — в режим 0, 1 или 2 — таймер Т/Cl при GATE1 = 1 всегда включен. При GATE1 = 0 включение Т/Cl определяется внешними сигналами ана- логично рассмотренному режиму 0. При переполнении в режимах 0 и 1
334 Гпава 6 Т/Cl обнуляется, а в режиме 2 — перезагружается без установки флага TF1. Поскольку Т/Cl аппаратно связан с последовательным портом, то при работе Т/СО в режиме 3 можно использовать Т/Cl в режиме 2 для за- дания скорости работы последовательного порта или для других задач, не требующих прерывания. Система прерываний (рис. 6.19) предназначена для реагирования на внешние и внутренние события. разрешение Общее разрешение Рис. 6.19. Функциональная схема системы прерываний К внешним событиям относятся появления нулевого потенциала (или среза) на выводах INTO , INTI , к внутренним — переполнения таймеров/счетчи- ков, завершение последовательного обмена. Внешние или внутренние собы- тия вызывают установку соответствующих флагов: IE0, IE1, TFO, TF1, RI и TI, которые и вызывают прерывания. Отметим, что все перечисленные фла- ги могут быть программно установлены или сброшены, при этом их про- граммная установка вызовет прерывания точно таким же образом, как и реакция на событие. Кроме того, прерывания на входах INTO , INTI могут вызываться программным сбрасыванием битов Р3.2 и РЗ.З. Управление сис- темой прерывания осуществляется с помощью записи управляющих слов в регистры ТСО (табл. 6.7), IE и IP. Регистр разрешения прерываний IE пред-
Однокристальные микроконтроллеры с CISC-архитектурой 335 назначен для разрешения или запрета прерываний от соответствующих ис- точников. Регистр приоритетов прерываний IP предназначен для установки уровней приоритетов прерывания для каждого из пяти источников преры- ваний. Назначения битов регистров IE и IP приведены в табл. 6.7 и 6.8 соот- ветственно. Таблица 6.7. Назначение битов регистра IE Бит Обозна- чение Назначение IE.7 ЕА Снятие блокирования прерываний. Сбрасывается про- граммно для запрета всех прерываний независимо от со- стояния IE4—1Е0 IE.6 - Не используются IE.5 - IE.4 ES Бит разрешения прерывания от универсального синхронного приемопередатчика. Установка/сброс программные для раз- решения/запрета прерываний от флагов ТЕ или RI IE.3 ЕТ1 Бит разрешения прерывания от таймера 1. Установка/сброс программные для разрешения/запрета прерываний от тай- мера 1 IE.2 ЕХ1 Бит разрешения внешнего прерывания 1. Установка/сброс программные для разрешения/запрета прерываний IE.I ЕТО Бит разрешения прерывания от таймера 0. Работает анало- гично IE.3 IE.0 ЕХО Бит разрешения внешнего прерывания 0. Работает анало- гично IE.2 Таблица 6.8. Назначение битов регистра IP Бит Обозна- чение Назначение 1 2 3 1Р.7— IP.5 - Не используются IP.4 PS Бит приоритета универсального асинхронного приемника- передатчика. Установка/сброс программные — для при- своения прерыванию от универсального асинхронного при- емника-передатчика высшего/низшего приоритета
336 Гпава 6 Таблица 6.8 (окончание) Бит Обозна- чение Назначение 1 2 3 IP.3 РТ1 Бит приоритета таймера 1. Установка/сброс программные — для присвоения прерыванию от таймера 1 высшего/низшего приоритета 1Р.2 РХ1 Бит приоритета внешнего прерывания 1. Установка/сброс программные — для присвоения высшего/низшего приори- тета прерыванию 1NT1 IP.I РТО Бит приоритета таймера 0. Работает аналогично IP.3 IH.0 РХО Бит приоритета внешнего прерывания 0. Работает анало- гично IP.2 Внешние прерывания воспринимаются или по переходу сигнала на входах INTO и INT1 из Н-уровня в L-уровень, или по нулевому уровню сигнала в зависимости от состояния битов ITO, IT1 регистра TCON (см. табл. 6.6). При прерывании по нулевому уровню этот уровень должен держаться не меньше, чем 12 периодов сигнала тактовой частоты CLK. При поступлении одного из сигналов INTO или INT1 устанавливается флаг IE0 или IE1 в регистре TCON, что вызовает соответствующее прерывание. Сброс флагов IE0 или IE1 осуществляется аппаратно лишь в том случае, если прерывание происходит по переходу сигнала из единицы в ноль. Если прерывание вызвано нулевым уровнем сигнала, то сбрасыванием флагов IE0 или IE1 руководит соответствующая подпрограмма обслуживания пре- рывания путем снятия запроса прерывания. Прерывания от таймеров/счетчиков вызываются единичными значениями флагов TF0 или TF1 в регистре TCON. Флаги TF0 и TF1 устанавливаются при переполнении соответствующих таймеров. Сбрасывание флагов TF0 и TF1 выполняется автоматически при переходе к подпрограммам обработки прерываний. Прерывания от последовательного порта вызываются установкой флагов TI или RI в регистре SCON. Сброс флагов TI или RI большей частью осущест- вляется в подпрограмме обработки прерывания. Каждый из описанных типов прерываний может быть разрешен или зап- рещен с помощью установки/сброса соответствующего бита в регистре IE (см. табл. 6.7). Сбросом бита ЕА можно запретить одновременно все преры- вания.
Однокристальные микроконтроллеры с CISC-архитектурой 337 В состав системы прерываний входят также логика обработки флагов пре- рываний и схема формирования вектора прерывания. Логика обработки флагов прерываний осуществляет приоритетный выбор запроса прерывания, сбрасывает соответствующий флаг и инициирует аппаратную реализацию команды перехода на подпрограмму обслуживания прерывания. Каждому из источников прерываний с помощью установки/сброса соответствующего бита в регистре IP (см. табл. 6.8) присваивают один из двух уровней при- оритета — высокий или низкий. Программа обработки прерывания не мо- жет прерываться другим запросом прерывания того же уровня приоритета. Программа обработки, которая имеет низкий уровень прерываний, может быть прервана запросом прерывания с высоким уровнем. При одновремен- ном поступлении запросов с разными уровнями сначала обслуживается за- прос с высоким уровнем приоритета. При одновременном поступлении за- просов с одинаковыми уровнями обработка их осуществляется в порядке последовательности внутреннего опроса флагов (направление указано стрелкой на рис. 6.19). Схема формирования вектора прерывания формирует двухбайтные адреса подпрограмм обслуживания прерывания в зависимости от источника пре- рывания (табл. 6.9). Таблица 6.9. Векторы прерывания Источник прерывания Вектор прерывания Внешнее прерывание INTO ооозн Таймер/счетчик Т/СО ооовн Внешнее прерывание INT1 0013Н Таймер/счетчик Т/С 1 001ВН Последовательный порт 0023Н Режимы энергопотребления ОМК. В ОМК, выполненных по и-МДП-тех- нологии, регистр PCON содержит лишь 1 значащий бит SMOD, который управляет скоростью передачи последовательного порта. Остальные биты не определены и зарезервированы для дальнейшего расширения моделей ОМК. Поэтому существует лишь один режим пониженного потребления, который обеспечивает питание внутреннего ОЗУ, если значение сигнала на выводе RST больше, чем на выводе Ucc. Это реализуется с помощью двух диодов, от катодов которых осуществляется питания ОЗУ, а аноды соеди- нены с выводами RST и Ucc (рис. 6.20). В ОМК, выполненных по К-МДП-технологии, есть два режима уменьшен- ного энергопотребления: режим холостого хода и режим микропотребле-
338 Гпава 6 ния. Выбор и управление режимами осуществляется с помощью регистра управления потреблением PCON, который в этом случае имеет больше зна- чащих бит. Формат регистра PCON приведен в табл. 6.10. Адресация от- дельных битов в регистре PCON не допустима. Рис. 6.20. Обеспечение питания ОЗУ в режиме сниженного потребления Таблица 6.10. Обозначение битое регистра PCON Бит Обозначение Назначение Примечание D7 SMOD (Serial MODe) Бит удвоения скорости передачи Управляет скоростью работы последо- вательного порта. При SMOD = 1 скорость передачи уд- ваивается в режимах 1, 2, 3 последова- тельного порта D6 - Резервный D5 - Резервный D4 - Резервный D3 GF 1 (General purpose Flag bit) Флаг общего назначения D2 GF2 Флаг общего назначения D1 PD (Power Down bit) Бит включения режима микро- потребления Только для /С-МДП-технологии. Если PD и IDL одновременно равняются единице, преимущество имеет PD, т. е. автоматически избирается режим мик- ропотребления D0 IDL (IDLe mode bit) Бит установки режима холостого хода
Однокристальные микроконтроллеры с CISC-архитектурой 339 Источником питания в режимах холостого хода и микропотребления явля- ется вывод Ucc- Режимы уменьшенного энергопотребления инициируются установкой битов PD и IDL. Влияние значений этих битов на формирова- ние тактовых сигналов блоков ОМК показано на рис. 6.21. Рис. 6.21. Влияние битов PD и IDL на формирование сигналов ОМК Режим холостого хода задается командой, которая устанавливает бит IDL в единицу, например, mov pcon, #01. В этом режиме блокируются функцио- нальные узлы блока ЦП (CPU). Внутренний генератор Г сигналов синхро- низации продолжает работу. Все регистры, указатель стека, программный счетчик, PSW, аккумулятор и внутреннее ОЗУ сохраняют свои значения. На выводах всех портов содержится то логическое состояние, которое было на них в момент перехода в режим холостого хода. На выводах ALE и РМЕ формируется уровень логической единицы. Существуют два способа выхода из режима холостого хода — по прерыва- нию или по сигналу аппаратного сброса по входу RST. Активизация любо- го разрешенного прерывания автоматически ведет к установлению IDL в ноль, т. е. к прекращению режима холостого хода. После выполнения ко- манды reti (выход из подпрограммы обслуживания прерывания) будет выполнена команда, следующая за командой, которая перевела ОМК в режим холостого хода. Окончание режима хблостого хода происходит также с появлением сигнала аппаратного сброса на выводе RST продолжительностью не меньше двух машинных циклов. Активный сигнал на выводе RST асинхронно снимает
340 Гпава 6 бит IDL в логический ноль. Поскольку тактовый генератор работает, ОМК сразу после сбрасывания IDL в логический ноль начинает выполнять про- грамму с команды, следующей после команды, которая вызвала режим холо- стого хода. Продолжительность интервала между сбросом бита IDL и момен- том, когда включается внутренний алгоритм сбрасывания, может составлять до двух машинных циклов. На протяжении этого интервала блокируется дос- туп к внутреннему ОЗУ, но не блокируется доступ к портам. Поэтому нежела- тельно использовать команды обращения к портам непосредственно после команды установки бита IDL. Биты GF0 и GF1 (см. табл. 6.10) удобно использовать для определения того режима, в котором произошел вызов программы обработки прерывания: обычного режима энергопотребления или режима холостого хода. Напри- мер, команда, которая вызывает режим холостого хода, может также уста- навливать один или несколько флагов (GFO, GF1 или каких-либо других). Программа обработки прерывания, проверяя эти флаги, может определять режим, в котором это прерывание произошло. Режим микропотребления инициируется установкой бита PD в единичное состояние, например, командой mov pcon, #02. В этом режиме генератор выключается, прекращая работу всех узлов ОМК, сохраняется только со- держимое ОЗУ и регистров специальных функций. На выводах портов на- ходятся значения, которые соответствуют содержимому их буферных ре- гистров. Выходы сигналов ALE и РМЕ сбрасываются. Электропитание происходит через вывод RST/Vpd. В этом режиме напряжение Ucc может быть уменьшено до 2 В и может восстановиться к номинальному значению перед выходом из режима. Выйти из режима микропотребления можно лишь по сигналу аппаратного сброса на выводе RST продолжительностью не меньше 10 мс (время восстановления работы генератора импульсов син- хронизации). При одновременном значении IDL = 1 и PD = 1 преимущество имеет бит PD. Контрольные вопросы и задания 1. Назовите основные составные блоки ОМК. 2. Объясните структуру и принцип функционирования блока управления ОМК. 3. Каким образом осуществляется синхронизация работы основных блоков ОМК? 4. Назовите назначение и характеристики РПП. 5. Назовите назначение и характеристики РПД.
Однокристальные микроконтроллеры с CISC-архитектурой 341 6. Назовите назначение и режимы работы таймеров. 7. Назовите назначение и режимы работы портов ОМК. 8. Назовите назначение и режимы работы последовательного порта ОМК. 9. Назовите назначение системы прерываний и возможные источники пре- рываний в ОМК. 10. Объясните принцип функционирования подпрограмм обработки запро- сов прерываний. 11. Объясните принцип приоритетной обработки запросов прерываний. 12. Какие существуют режимы работы последовательного порта? / 6.2. Система команд Система команд ОМК К1816ВЕ51 содержит 111 команд, которые можно разделить на пять групп: команды пересылки; арифметические команды; логические команды; команды передачи управления; команды операций с битами. Большинство команд (94) имеют формат 1—2 байт и выполняются за 1—2 цик- ла (при тактовой частоте 12 Мгц продолжительность цикла равняется 1 мкс). В ОМК используются следующие типы адресации — прямая, непосредст- венная и косвенная. Система команд ОМК К1816ВЕ51 приведена в табл. 6.11. В таблице исполь- зованы обозначения: □ R — один из регистров R0—R7; □ г — регистр R0 или R1; □ ad — байт из РПД по прямому адресу (в команде указывается или адрес байта — 00—FF, или обозначение одного из регистров специальных функций SFR, например, THO, Pl, TCON, SBUF); □ data — непосредственные 8-разрядные данные (перед числовыми значе- ниями ставят знак #, например, #34); □ di6 — непосредственные 16-разрядные данные; □ add — байт-приемник с прямой адресацией; □ ads — байт-источник с прямой адресацией; □ adi6 — 16-разрядный адрес; □ adii — 11-разрядный адрес; □ ad8 — 8-разрядный адрес-смещение;
342 Гпава 6 □ Mi (..) — ячейка памяти (в скобках указан адрес. Индекс указывает тип памяти: РИД — резидентная память данных; ВИД — внешняя память данных; ПП — память программ); □ bit — бит с прямой адресацией (в команде указывается или адрес бита — 00—FF, или расположение его в регистре специальных функций, напри- мер, АСС.О — нулевой бит аккумулятора, Р1.2 — второй бит порта 1 или обозначение бита в регистре специальных функций, например, ЕА — бит общего разрешения прерываний). Таблица 6.11. Система команд ОМК К1816ВЕ51 Мнемокод Описание Алгоритм Байты Циклы 1 2 3 4 5 КОМАНДЫ ПЕРЕСЫЛКИ MOV A, R Пересылка данных из ре- гистра в аккумулятор AbR 1 1 MOV A, ad Пересылка в аккумулятор байта с прямой адресацией А <- ad 2 1 MOV А, @г Пересылка байта из РПД в аккумулятор А <— Мрпд (г) 1 1 MOV A, #data Пересылка непосредствен- ного операнда в А А #data 2 1 MOV R, А Пересылка аккумулятора в регистр Re-А 1 1 MOV R, ad Пересылка в регистр байта с прямой адресацией R<-ad 2 2 MOV R, #data Пересылка непосредствен- ного операнда в регистр R <r- #data 2 1 MOV ad, A Пересылка аккумулятора по прямому адресу ad <— A 2 1 MOV ad, R Пересылка регистра по прямому адресу ad <-R 2 2 MOV add, ads Пересылка байта по пря- мому адресу add ads 3 2 MOV ad, @r Пересылка байта из РПД по прямому адресу ad Мрпд (r) 2 2
Однокристальные микроконтроллеры с CISC-архитектурой 343 Т абл ица 6.11 (продолжение ) Мнемокод Описание Алгоритм Байты Циклы 1 2 3 4 5 КОМАНДЫ ПЕРЕСЫЛКИ MOV ad, #data Пересылка непосредствен- ного операнда по прямому адресу ad <- #data 3 2 MOV @r, A Пересылка аккумулятора в РПД М рпд (г) <— А 1 1 MOV @r, ad Пересылка в РПД операн- да по прямому адресу Мрпд (г) <— ad 2 2 MOV @r, #data Пересылка непосредствен- ного операнда в РПД Мрпд (г) #data 2 1 MOV DPTR, #dl6 Загрузка указателя данных DPTR e-#d 16 3 2 Move A, 0A+DPTR Пересылка в аккумулятор байта из памяти программ А <— Мпп(А + + DPTR) 1 2 MOVX A, @r Пересылка байта из ВПД в аккумулятор А <— Мвпд (г) 1 2 MOVX A, @DPTR Пересылка байта из рас- ширенной ВПД в аккуму- лятор А <- Мвпд(ОРТЯ) 1 2 MOVX @r, A Пересылка аккумулятора в ВПД Мвпд (г) <— А 1 2 MOVX @DPTR, A Пересылка байта в расши- ренную ВПД из аккумуля- тора Мвпд (DPTR) <- А 1 2 PUSH ad Загрузка в стек SP<-SP+ 1 Мрпд (SP) <— ad 2 2 POP ad Извлечение из стека ad <- Мрпд (SP) SP <— SP — 1 2 2 XCH A, R Обмен аккумулятора и регистра A <—> R 1 1 XCH A, ad Обмен аккумулятора и байта с прямой адресацией A <—> ad 1 1
344 Гпава 6 Т абл ица 6.11 (продолжение) Мнемокод Описание Алгоритм Байты Циклы 1 2 3 4 5 КОМАНДЫ ПЕРЕСЫЛКИ ХСН А, 0г Обмен аккумулятора и ячейки РПД А <—> Мрпд (г) 1 1 XCHD А, 0г Обмен младших тетрад аккумулятора и ячейки РПД А о-з <—> М рпд (г) о-з 1 1 SWAP А Обмен тетрад в аккумуля- торе А 0-3 < > А 4-7 1 1 АРИФМЕТИЧЕСКИЕ КОМАНДЫ ADD A, R Сложение регистра R и аккумулятора А <—А + R 1 1 ADD A, ad Сложение аккумулятора и байта с прямой адресацией А А + ad 2 1 ADD А, 0г Сложение байта из РПД и аккумулятора А <— А + Мрпд (г) 1 1 ADD A, #data Сложение константы с аккумулятором А <- А + #data 2 1 ADDC A, R Сложение регистра с ак- кумулятором и флагом переноса С A^-A + R + C 1 1 ADDC A, ad Сложение аккумулятора и прямоадресованного бай- та с флагом переноса С А <— А + ad + С 2 1 ADDC А, 0г Сложение байта из РПД с аккумулятором и флагом А <—А4- Мрпд (г) 4- С 1 1 ADDC A, #data Сложение константы с аккумулятором и флагом С А <— А + #data + + С 2 1 DA А Десятичная коррекция А при сложении Алгоритм деся- тичной коррек- ции 1 1 SUBB A, R Вычитание из аккумулято- ра регистра и флага С А<—A-R-C 1 1
Однокристальные микроконтроллеры с CISC-архитектурой 345 Таблица 6.11 (продолжение) Мнемокод Описание Алгоритм Байты Циклы 1 2 3 4 5 АРИФМЕТИЧЕСКИЕ КОМАНДЫ SUBB A, ad Вычитание из аккумулято- ра байта с прямой адреса- цией и флага С А А - ad - С 2 1 SUBB А, @г Вычитание из аккумулято- ра байта РПД и флага С А <— А — Мрпд(г) -С 1 1 SUBB A, #data Вычитание из константы и флага С А А - #data - С 2 1 INC А Инкремент аккумулятора А <— А+ 1 1 1 INC R Инкремент регистра R R + 1 1 1 INC ad Инкремент байта с прямой адресацией ad <— ad + 1 2 1 INC @r Инкремент байта в РПД Мрпд(г) <— Мрпд(г) + 1 1 1 INC DPTR Инкремент указателя данных DPTR <—DPTR + + 1 1 2 DEC A Декремент аккумулятора А <—А - 1 1 1 DEC R Декремент регистра R R - 1 1 1 DEC ad Декремент байта с прямой адресацией ad <— ad - 1 2 1 DEC @r Декремент байта в РПД Мрпд (г) <— Мрпд (г)-1 1 1 MUL AB Умножение аккумулятора на регистр В (В, А) <- А х В 1 4 DIV AB Деление аккумулятора на регистр В А <- А/В, остаток в В 1 4 ЛОГИЧЕСКИЕ КОМАНДЫ ANL A, R Логическая операция И регистра и аккумулятора А <—A a R 1 1 ANL A, ad И байта с прямой адреса- цией и аккумулятора А<— A a ad 2 1
346 Гпава 6 Таблица 6.11 (продолжение) Мнемокод Описание Алгоритм Байты Циклы 1 2 3 4 5 ЛОГИЧЕСКИЕ КОМАНДЫ ANL А, @г И байта РПД и аккумуля- тора Аь-А А Мрпд (г) 1 1 ANL A, #data И константы и аккумуля- тора Аь-АА #data 2 1 ANL ad, А И байта с прямой адреса- цией и А Ad ь- adA А 2 1 ANL ad, #data И байта с прямой адреса- цией и константы adb-adA #data 3 2 ORL A, R ИЛИ регистра и аккуму- лятора AbA V R 1 1 ORL A, ad ИЛИ байта с прямой адре- сацией и аккумулятора A «—A V ad 2 2 ORL A, @r ИЛИ байта РПД и акку- мулятора Аь A V Мрпд(г) 1 1 ORL A, #data ИЛИ константы и аккуму- лятора А ь A V #data 2 1 ORL ad, A ИЛИ байта с прямой адре- сацией и аккумулятора ad <- ad V A 2 1 ORL ad, #data ИЛИ байта с прямой адре- сацией и константы ad <— ad V #data 3 2 XRL A, R ИСКЛЮЧАЮЩЕЕ ИЛИ регистра и аккумулятора AbA® R 1 1 XRL A, ad ИСКЛЮЧАЮЩЕЕ ИЛИ байта с прямой адресацией и аккумулятора А ь- A ® ad 2 1 XRL A, @r ИСКЛЮЧАЮЩЕЕ ИЛИ байта РПД и А A <-А® Мрпд (r) 1 1 XRL A, #data ИСКЛЮЧАЮЩЕЕ ИЛИ константы и А А ь- А Ф #data 2 1 XRL ad, A ИСКЛЮЧАЮЩЕЕ ИЛИ байта с прямой адресацией и аккумулятора ad b- ad ® A 2 1
Однокристальные микроконтроллеры с CISC-архитектурой 347 Таблица 6.11 (продолжение) Мнемокод Описание Алгоритм Байты Циклы 1 2 3 4 5 ЛОГИЧЕСКИЕ КОМАНДЫ XRL ad, #data ИСКЛЮЧАЮЩЕЕ ИЛИ байта с прямой адресацией и константы ad <- ad ® #data 3 2 CLR А Сброс аккумулятора А<—0 1 1 CPL А Инверсия аккумулятора А <- А 1 1 RL А Циклический сдвиг акку- мулятора влево Ап+1 <— Ап; п = 0-6, АО <—А7 1 1 RLC А Сдвиг аккумулятора вле- во через флаг С Ап+1 <—An ; п= 0-6, Ао <— С, С <— А? 1 1 RR А Циклический сдвиг акку- мулятора вправо Ап <—Ап+1, п = 0-6, А7 <—АО 1 1 RRC А Сдвиг аккумулятора вправо через флаг С Ап<—Ап+1, п = 0-6, А7«-С, С<—АО 1 1 КОМАНДЫ ОПЕРАЦИЙ С БИТАМИ CLR С Сброс флага С С«-0 1 1 CPL С Инверсия флага С О Т 1 1 SETB С Установка флага С С«- 1 1 1 CLR bit Сброс бита Bit <— 0 2 1 CPL bit Инверсия бита Bit <- bit 2 1 SETB bit Установка бита Bit <— 1 2 1 ANL C, bit Логическое И бита и флага С С <— C a bit 2 2 ANL C,/bit Логическое И инверсии бита и флага С С <— С a bit 2 2 ORL C, bit Логическое ИЛИ бита и флага С С <- С v bit 2 2
348 Гпава 6 Таблица 6.11 (продолжение) Мнемокод Описание Алгоритм Байты Циклы 1 2 3 4 5 КОМАНДЫ ОПЕРАЦИЙ С БИТАМИ ORL С,/bit Логическое ИЛИ инверсии бита и флага С С <- С V bit 2 2 MOV С, bit Пересылка бита во флаг С С«- bit 2 1 MOV bit, С Пересылка флага С в бит bit <- С 2 2 LJMP adl6 Безусловный длинный пе- реход в полном объеме памяти программ PC<-adl6 3 2 AJMP adll Абсолютный переход внутри страницы 2 Кбайт PC <- PC + 2 РСо-ю<— adl 1 2 2 SJMP ad8 Короткий относительный переход внутри страницы ПП 256 PC <- PC + 2 PC <- PC + ad8 2 2 КОМАНДЫ ПЕРЕХОДОВ JMP @A+DPTR Косвенный относительный переход PC <- A + DPTR 1 2 JC ad8 Переход, если С = 1 PC PC + 2, если C = 1, to PC «- PC + ad8 2 2 JNC ad8 Переход, если С = 0 PC PC + 2, если C = 0, то PC <- PC + ad8 2 2 JZ ad8 Переход, если А = 0 PC PC + 2, если A = 0, то PC <- PC + ad8 2 2 JNZ ad8 Переход, если А Ф 0 PC <- PC + 2, если А Ф 0, to PC <- PC + ad8 2 2 JB bit, ad8 Переход, если бит равня- ется 1 PC «-РС+3, если bit = 1, to PC PC + ad8 3 2
Однокристальные микроконтроллеры с CISC-архитектурой 349 Таблица 6.11 (продолжение) Мнемокод Описание Алгоритм Байты Циклы 1 2 3 4 5 КОМАНДЫ ПЕРЕХОДОВ JCB bit, ad8 Переход, если бит равен 1 с последующим сбросом бита PC <- PC + 3, если bit = 1, то bit <- 0, PC <- PC + ad8 3 \ 2 JNB bit, ad8 Переход, если бит равня- ется 0 PC <- PC + 3, если bit = 0, to PC<- PC + ad8 3 2 DJNZ R, ad8 Декремент R и переход, если не ноль PC <- PC + 2, R <— R — 1, если R * 0, то PC PC + ad8 2 2 JNZ ad, ad8 Декремент байта с прямой адресацией и переход, если не ноль PC <- PC + 2, ad <— ad — 1, если ad * 0, to PC «- PC + ad8 3 2 CJNE A, ad, ad8 Сравнение А и байта с прямой адресацией и переход, если не они равны PC <— PC + 3, если A * ad, to PC<—PC + ad8 Если A < ad, to C = 1, иначе C = 0 3 2 1 CJNE A, #data, ad8 Сравнение А с константой и переход, если не они равны PC <- PC + 3, если А Ф #data, TO PC <- PC + ad8 Если A < #data, то C = 1, иначе C = 0 3 2 CJNE R, #data, ad8 Сравнение регистра с кон- стантой и переход, если не равны PC <- PC + 3, еслиЯ #data, to PC <— PC + ad8 Если R < #data, то C = 1, иначе C = 0 3 2
350 Гпава 6 Таблица 6.11 (окончание) Мнемокод Описание Алгоритм Байты Циклы 1 2 3 4 5 КОМАНДЫ ПЕРЕХОДОВ CJNE @г, #data, ad8 Сравнение байта в РПД с константой и переход, если не равны РС <— РС + 3, если Мрпд(г) * #data, то РС <— РС + + ad8 если Мрпд (г) < #data, то С = 1, иначе С = 0 3 2 LCALL ad16 Длинный вызов подпрограммы PC <— РС + 3, SP<-SP+ 1, Мрпд(5Р) РСО-7, SP<-SP+ 1, Мрпд(5Р)<— РС8-15, РС<—ad!6 3 2 ACALL ad11 Абсолютный вызов под- программы внутри стра- ницы 2 Кбайт PC <— PC + 2, SP<-SP+ 1, Мрпд (SP) PCo-7, SP<-SP+ 1, Мрпд (SP) <— PCs-15, PCo-io<— adl 1 2 2 RET Возврат из подпрограм- мы* PCr-i5<— Мрпд(ЗР), SP <— SP — 1, PCo-7 <— Мрпд (SP), SP <— SP — 1 1 2 RET I Возврат из подпрограммы обработки прерывания** PCs-15 <— Мрпд(5Р), SP<-SP— 1, PCm <-Мрпд (SP), SP<-SP — 1 1 2 NOP Нет операции PC <- PC + 1 1 1 Примечание. * Команда не влияет на флаги. ** Команда устанавливает логику прерываний: разрешает прием прерываний с уровнем приоритета, равным уровню прерывания, ко- торое обрабатывалось перед этим.
Однокристальные микроконтроллеры с CISC-архитектурой 351 Влияние команд на флаги иллюстрирует табл. 6.12, в которой обозначено: "+" —команда влияет на флаг, — не влияет; "1" — устанавливает в 1; "О” — сбрасывает в ноль. Таблица 6.12. Влияние команд на флаги Операция Команда Флаги OV c AC Пересылка MOV PSW, source + + + Сложение ADD, ADDC, SUBB, + + + Умножение MUL + 0 - Деление DIV + 0 - Сравнение и переход CJNE - + - Десятичная коррекция DAA - + + Сдвиг RRC, RLC - + - Управление флагами SETB C - 1 - CLR C - 0 - CPL C - c - Команды работы с битами ANL C, bit - + - ANL C,/bit - + - ORL C, bit - + - ORL C,/bit - + - MOV C, bit - + - Примечание. Флаг четности Р устанавливается каждой командой, которая модифи- цирует содержимое аккумулятора, в соответствии с этим содержимым. Флаг нуля Z фи- зически не существует, однако при выполнении команд JZ, JNZ происходит сравнение А с нулем. Контрольные вопросы и задания 1. Чем отличается флаг нуля в ОМК К1816ВЕ51 и МП i8086? 2. Какие существуют группы команд? 3. Какие возможны операции над битами?
352 Гпава 6 4. Какие арифметические операции можно осуществлять в ОМК К1816ВЕ51? 5. Какие логические операции можно осуществлять в ОМК К1816ВЕ51? 6. Сколько существует байтов с прямой адресацией? 7. С какими форматами данных оперирует система команд ОМК К1816ВЕ51? 6.3. Расширение возможностей однокристальных микроконтроллеров Расширение возможностей ОМК заключается в: расширении памяти про- грамм; памяти данных; пространства ввода/вывода. Расширение памяти программ. Расширение памяти программ до 64 Кбайт выполняется подключением внешних БИС ПЗУ к ОМК. При этом, если на вывод ЕА подана логическая единица, то используется как внутренняя, так и внешняя память программ: при адресах 00—0FFFH обращения происхо- дят к внутренней, а при адресах ЮООН—FFFFH — к внешней памяти про- грамм. Если на вывод ЕА подан логический ноль, то обращение происхо- дит только к внешней памяти программ. Рис. 6.22. Функциональная схема подключения внешней памяти программ к ОМК Функциональная схема подключения внешней памяти программ приведена на рис. 6.22. Через порты Р0 и Р2 передаются младшая и старшая части 16-
Однокристальные микроконтроллеры с CISC-архитектурой 353 разрядного адреса ячейки внешней памяти, сопровождаемые сигналом ALE. Адрес сохраняется на выводах порта Р2 на протяжении всего машин- ного цикла обращения к памяти, а на выводах порта РО — лишь на протя- жении одного состояния машинного цикла. Поэтому младшая часть адреса запоминается в регистре-защелке RG по сигналу ALE. После выдачи млад- шего байта адреса порт РО переходит в высокоимпедансное состояние и ожидает поступления данных из ПЗУ. Через порт РО передаются мультиплексированные линии адреса/данных. Сигнал РМЕ формируется дважды за машинный цикл. Этот сигнал разре- шает выборку байта из ПЗУ. Таким образом, на протяжении одного ма- шинного цикла выбирается два байта команды. Если команда однобайтная, второй байт игнорируется. Этот байт выбирается при переходе к следующей команде. На рис. 6.23 показаны временные диаграммы машинных циклов чтения внешней памяти программ в тех случаях, когда: □ не выполняется команда обращения к внешней памяти данных movx (рис. 6.23, а); □ выполняется команда movx (рис. 6.23, б). На рис. 6.23 обозначены: □ PCL out — выдача младшего байта счетчика команд РС; □ PCH out — выдача старшего байта счетчика команд РС; □ DPH — выдача старшего байта регистра DPTR; □ Р2 out — выдача содержимого регистра-защелки порта Р2; □ Addr out — выдача младшего байта адреса внешней памяти данных из регистров RO, R1 или регистра DPL; □ D in — ввод байта команды или данных. Как видно из рис. 6.23, б, при выполнении команды movx сигнал ALE фор- мируется во втором машинном цикле лишь один раз. Отметим, что если ОМК работает с внутренней памятью программ, сигнал РМЕ не формируется, и адрес на порты РО и Р2 не выдается. Тем не менее сигнал ALE и в этом случае формируется дважды за период, если не выпол- няется команда movx. Вывод ALE можно использовать как исходный сигнал синхронизации внешними устройствами. Расширение памяти данных. В ОМК предусмотрена возможность расшире- ния памяти данных до 64 Кбайт подключением внешних БИС памяти к ОМК.
354 Гпава 6 а 4--- Машинный цикл 1 Машинный цикл 2 S2 S3 S4 S5 —► S6 S1 S2 S3 S4 S5 Рис. 6.23. Временные диаграммы машинных циклов чтения внешней памяти программ: a — не выполняется команда movx; б — выполняется команда movx На рис. 6.24 показана функциональная схема подключения внешней памяти данных к ОМК. На рис. 6.25, а, б приведены временные диаграммы циклов чтения и записи во внешнюю память данных.
Однокристальные микроконтроллеры с CISC-архитектурой 355 Рис. 6.24. Функциональная схема соединения внешней памяти данных с ОМК S4 S5 S6 S1 S2 S3 Х2 S4 I P2 S5 ALE RD PO D in PCH или или Ri out^ DPH или P2 out PCL out, если память t программы внешняя PCH или~Р2~ои/ a Рис. 6.25. Временные диаграммы работы ОМК с внешней памятью данных: а — цикл чтения
356 Гпава 6 S1 Р2 S3 S2 ‘ Р2 S5 S5 ‘ Р2 S6 S4 (2 Р1 I Р2 Р1 Р2 Р1 Р2 Р1 Р2 Р1 I Р2 Р1 Р2 Р1 Р2 Р1 I Р2 Х2 S4 Р1 Р2 ALE RD РО DPLили Вывод данных PCL out, если память программы внешняя ^У^РСН или Р2 out РСН или Р2 out) DPH или Р2 out Рис. 6.25. Временные диаграммы работы ОМК с внешней памятью данных: б — цикл записи Как видно из рис. 6.24. и 6.22, соединение памяти данных с ОМК аналогич- но соединению памяти программ. При необходимости в ОМК могут одновременно использоваться внешняя память данных и память программ (рис. 6.26). Расширение пространства ввода/вывода. Одна из возможных схем соедине- ния контроллера клавиатуры и дисплея с ОМК показана на рис. 6.27. При таком соединении адрес контроллера входит в адресное пространство внешней памяти данных. Линия Р1.0 порта Р1 соединяется с линией АО кон- троллера и может быть установлена или сброшена перед обращением ОМК к контроллеру в зависимости от типа обращения (управление или передача данных). Вход выборки кристалла контроллера соединен с общей точкой, поэтому контроллер всегда готов к обмену информацией с ОМК. Выход сигнала запроса прерывания IRQ контроллера соединен с линией Р1.1 ОМК. Опрос состояния выхода IRQ осуществляется для определения факта нажатия клавиши. Шина данных и линии чтения/записи контроллера объединяются непосред- ственно с соответствующими линиями ОМК. На вход CLK подается сигнал частотой приблизительно 2 МГц с выхода ALE.
Однокристальные микроконтроллеры с CISC-архитектурой 357 Рис. 6.26. Функциональная схема ОМК с внешней памятью данных и программ Рис. 6.27. Соединение контроллера клавиатуры и дисплея с ОМК
358 Глава 6 Контрольные вопросы и задания 1. Каким образом осуществляется расширение памяти программ в ОМК? 2. Каким образом осуществляется обращение к внутренней и внешней па- мяти программ? 3. С помощью каких портов осуществляется передача адреса ячейки внеш- ней памяти программ? 4. Каким образом осуществляется расширение памяти данных в ОМК? 5. С помощью каких портов осуществляется передача адреса ячейки внеш- ней памяти данных? 6. Сколько дополнительных портов ввода/вывода можно соединить с ОМК? 6.4. Применение однокристального микроконтроллера 83С51FA для управления двигателем постоянного тока Двигатели постоянного тока широко используются в промышленных и бы- товых устройствах. Во многих случаях важным является прецизионное управление скоростью вращения двигателя и возможность изменения на- правления вращения. Например, двигатель постоянного тока в бытовой технике магнитной звукозаписи может вращаться с постоянной скоростью. Изменение направления вращения достигается изменением полярности на- пряжения, которое подается или на коллекторную обмотку, или на обмотку возбуждения. Использование ОМК 83C51FA позволяет осуществлять управление двига- телем постоянного тока с реализацией широтно-импульсной модуляции на- пряжения, которое подается на обмотку возбуждения или на коллекторную обмотку. На базе ОМК 83C51FA может быть запрограммировано до пяти широтно-импульсных модуляторов. Однокристальный микроконтроллер 83C51FA представляет собой 8- разрядный микроконтроллер, который базируется на архитектуре i8051, но имеет несколько новых функций, в частности, существует массив програм- мируемых счетчиков — Programmable Counter Array (РСА). Массив состоит из 16-разрядного таймера РСА и 5 отдельных модулей. Таймер РСА состоит из двух 8-разрядных регистров — CL (младший байт) и СН (старший байт), доступных для всех модулей. Таймер РСА можно запрограммировать на
Однокристальные микроконтроллеры с CISC-архитектурой 359 использование входных данных из четырех разных источников. Макси- мальная частота счета---4 МГц, т. е. 1/4 частоты генератора. Отдельные выводы порта Р1 используются для взаимодействия каждого модуля и тай- мера с внешними устройствами. Когда выводы порта не используются для работы модулей РСА, они могут быть использованы как линии обычного порта ввода/вывода. Модули РСА могут быть запрограммированы в режим захвата события (capture) или режим сравнения, который имеет такие подрежимы: про- граммный таймер; высокоскоростной вывод, широтно-импульсный модуля- тор (PWM); сторожевой таймер (watchdog-таймера) (только для четвертого модуля). Каждый модуль имеет 8-разрядный регистр режима — ССАРМп (табл. 6.13), 16-разрядный регистр сравнения/захвата, состоящий из двух 8- разрядных регистров ССАРп и ССАРп, где п может принимать значения от О до 4. Таблица 6.13. Обозначения бит регистра режима ССАРМп Бит Обозна- чение Назначение D7 - - D6 ЕСОМп Бит разрешения функции сравнения; ЕСОМп = 1 для функций, которые нуждаются в сравнении содержимого регистров сравнения/захвата с содержимым 16-разрядного таймера, на- пример, функций программируемого таймера, высокоскоро- стного вывода, watchdog-таймера D5 САРРп Бит захвата по переднему фронту сигнала D4 CAPNn Бит захвата по заднему фронту сигнала D3 МАТп Бит определения совпадения содержимого регистров захва- та/сравнения с содержимым 16-разрядного таймера D2 TOGn Бит разрешения вывода по условию совпадения содержимого регистров захвата/сравнения с содержимым 16-разрядного таймера D1 PWMn Бит разрешения генерации сигнала широтно-импульсного модулятора по совпадению младшего байта содержимого ре- гистра сравнения/захвата и младшего байта содержимого таймера РСА DO ECCCFn Бит разрешения генерации прерывания по флагу сравнения/ захвата CCFn регистра CCON
360 Гпава 6 Установкой соответствующих бит в регистрах режимов ССАРМп можно запрограммировать каждый модуль на функционирование в одном из ре- жимов: захвата события или сравнения. Режим захвата события. Событием называется любое изменение уровня сигнала на входах. Однокристальный микроконтроллер можно запрограм- мировать на определение таких событий: □ каждого перехода уровня входного сигнала из нуля в единицу (CAPPn = 1); □ каждого перехода уровня входного сигнала из единицы в ноль (CAPNn = 1); □ того или другого перехода уровня сигнала (CAPPn = 1 и CAPNn = 1). После того как запрограммированное событие состоялось, время наступле- ния этого события, отсчитанное таймером РСА вместе с информацией о со- стоянии входов записывается в стек событий FIFO. Операция записи време- ни события в стек называется захватом события. Если установлен бит разрешения ECCFn, захват события сопровождается генерацией запроса прерывания ЦП на обслуживание модуля. Режим сравнения. Если модуль запрограммирован на функционирование в одном из подрежимов сравнения (программный таймер, высокоскоростной вывод, watchdog-таймер), программа загружает в регистры захвата/ сравнения величину, которая сравнивается с содержимым 16-разрядного таймера; ОМК генерирует прерывания в случае совпадения этих величин. □ В подрежиме программного таймера устанавливается флаг переполнения при совпадении значений таймера и регистра захвата/сравнения. □ Подрежим высокоскоростного вывода предназначен для генерацйи за- данных событий в заданное время. Время задается значением регистра захвата/сравнения ССАРп. □ В подрежиме сторожевого таймера генерируется прерывание, если неко- торый участок программы выполняется за большее время, чем заданное в регистре. Это позволяет избегнуть "зависания" программы. Подрежим широтно-импульсного модулятора — единственный подрежим, который использует только 8-разрядный регистр захвата/сравнения. В стар- ший байт (ССАРп) избранного модуля загружается значение от 0 к FFH. Это значение переносится в младший байт того же модуля и сравнивается с младшим байтом регистра таймера РСА. По условию CL < ССАРп на соот- ветствующем выводе устанавливается уровень логического нуля; по усло- вию CL > ССАРп — уровень логической единицы. Кроме регистров ССАРМп, для обеспечения работы таймера РСА введено еще два регистра специальных функций — CCON и CMOD (табл. 6.14,6.15).
Однокристальные микроконтроллеры с CISC-архитектурой 361 Таблица 6.14. Обозначения битов регистра CCON Бит Обозна- чение Назначение 7 CF Флаг переполнения таймера 6 CR Запуск таймера РСА 5 - Не используется 4 CCF4 Флаги модулей, используемые для определения модуля, который генерирует прерывание РСА 3 CCF3 2 CCF2 1 CCFI 0 CCF0 Регистр CCON допускает битовую адресацию. Адреса регистра CCON — 0D8H, значения при сбросе — 00x00000В. Регистр CMOD не допускает ад- ресацию отдельных бит. Адрес регистра CCON — 0D9H, значение при сбросе — 00xxx000В. Если один из модулей запрограммирован в режим ши- ротно-импульсного модулятора, в старший байт регистра сравнения необ- ходимо загрузить значение от 0 до 255, которое определяет коэффициент заполнения широтно-импульсного модулятора. Таблица 6.15. Обозначение битов регистра CMOD Бит Обозна- чение Назначение 1 2 3 D5 - Не используется D4 - Не используется D3 - Не используется D2 CPSI Биты, которые определяют источник тактирования таймера РСА: при 00 — внутренний генератор, Fosc/12 при 01 —внутренний генератор, Fosc/4 при 10 — переполнение таймера 0 при 11 — внешний сигнал (ввода с Р1.2)
362 Гпава 6 Таблица 6.15 (окончание) Бит Обозна- чение Назначение 1 2 3 D1 CPS0 D0 ECF Разрешение прерывания по флагу CF Для ОМК 83C51FA загрузка 0 в ССАРп отвечает коэффициенту заполнения 1, а 255 (OFFh) — коэффициенту заполнения 0,004. Временные диаграммы и значения коэффициента заполнения широтно-импульсного модулятора и регистра ССАРп приведены в табл. 6.16. Таблица 6.16. Временные диаграммы и значения коэффициента заполнения широтно-импульсного модулятора Коэффициент заполнения Значение регистра ССАРп Выходный сигнал широтно-импульсного модулятора 1 00 .1 ! 0,9 25 —— Lt ' LT- 1ГТ1 0,5 128 11, j 1 |_J 0,1 230 __Й__П__П__П 0,004 255 0,004 255 Запуск таймера РСА осуществляется установлением бита CR (см. табл. 6.14) регистра CCON, допускающего битовую адресацию. Установка и сбрасы- вание этого бита осуществляются соответствующими битовыми команда- ми — CLR bit на SETB bit (см. табл. 6.11). Пример 6.1. Запрограммировать модуль 2 для генерации широтно-импульс- ного модулятора-сигнала для цепи управления двигателем.
Однокристальные микроконтроллеры с CISC-архитектурой 363 Программа имеет вид: MOV CMOD,#06 ; Выбирается внешний сигнал тактирования MOV ССАРМ2,#42Н ; Устанавливается режим широтно-импульсного ; модулятора MOV ССАР2Н,#0 ; Значение нуля отвечает коэффициенту ; заполнения 1 (5 В) SETB С ; Запуск таймера END Принципиальная схема модуля управления двигателем постоянного тока показана на рис. 6.28. Рис. 6.28. Принципиальная схема модуля управления двигателем постоянного тока Схема содержит ОМК 83C51FA с цепями сброса и синхронизации, специа- лизированную БИС драйвера L293, двигатель и импульсный датчик скоро- сти 30137. Импульсы ТТЛ-уровня с выхода датчика поступают на вход Р1.6 ОМК. В зависимости от частоты этих импульсов ОМК увеличивает или уменьшает коэффициент заполнения широтно-импульсного модулятора на выводах Pl.4, Р1.5, реализуя, таким образом, регулировку скорости враще- ния двигателя. Контрольные вопросы и задания 1. Приведите основные характеристики ОМК 83С51FA. 2. Укажите особенности режима захвата события.
364 Глава 6 3. Укажите особенности режима широтно-импульсного модулятора. 4. Укажите особенности режима watchdog-таймера. 5. Какие события могут быть зафиксированы в режиме захвата события? 6. Объясните принцип формирования сигнала широтно-импульсного моду- лятора на выводе ОМК. 6.5. Архитектура и функциональные возможности 16-разрядных однокристальных микропроцессоров серии MCS 196/296 Общая характеристика серии MCS196/296. 16-разрядные ОМК MCS 196/296 производства компании Intel используются в встроенных микропроцессор- ных системах управления в авиационной и автомобильной промышленно- сти, станко- и роботостроении, энергетике и электромеханике, устройствах бытовой техники. На сегодня серия 16-разрядных ОМК содержит свыше 30 типов контроллеров с производительностью от 1 до 16 млн операций типа "регистр-регистр”1 в секунду. Основные характеристики БИС приведены в табл. 6.17. Соответственно типу интегрированных в кристалл периферийных устройств различают следующие классы ОМК серии 196/296: □ ОМК с интегрированными устройствами высокоскоростного ввода/ вывода; □ ОМК с интегрированными процессорами событий; □ ОМК с интегрированными средствами управления двигателями; □ I ОМК с интегрированными средствами цифровой обработки. Теперь рассмотрим классы ОМК серии 196/296 более подробно. □ Однокристальные микроконтроллеры с интегрированными устройствами высокоскоростного ввода/вывода. 16-разрядные ОМК с интегрированны- ми устройствами высокоскоростного ввода/вывода данных (HSIO, High- Speed Input/Output) ориентированные на решение задач управления объ- ектами и процессами в реальном масштабе времени. 1 Операции типа "регистр-регистр" являются наиболее быстродействующими, поскольку оперируют только с внутренними регистрами МП. Примерами таких операций являются: MOV RO,R1;ADD A, R3.
Таблица 6.17. Основные технические характеристики 16-разрядных ОМК Технические характеристики Тип БИС Тактовая частота, МГц Адресное пространство, Кбайт Объем ПЗУ, Кбайт Объем регистрового ОЗУ, байт Объем Flash-памяти про- грамм, байт Количество таймеров Количество каналов АЦП Количество линий ввода/вывода Количество последова- тельных портов Режим тестирования Тип процессора событий Характерные особенности 1 2 3 4 5 6 7 8 9 10 11 12 13 МИКРОКОНТРОЛЛЕРЫ СО ВСТРОЕННЫМ УСТРОЙСТВОМ ВЫСОКОСКОРОСТНОГО ВВОДА/ВЫВОДА 8хС196КВ 12,16 64 8 232 - 2 8 48 + Модуль высокоскорост- ного ввода/вывода (4 входа, 6 выходов) -3 8хС198 16 64 8 232 - 2 0 или 4 48 1 + Модуль высокоскорост- ного ввода/вывода (4 входа, 6 выходов) 8-разрядная внеш- няя шина, меньшая стоимость 8хС196КС 16,2 64 16 488 - 2 8 48 1 + Модуль высокоскорост- ного ввода/вывода (4 входа, 6 выходов) ШИМ-генератор, сервер периферий- ных транзакций 8xC196KD 16,2 64 32 1000 - 2 8 48 1 + Модуль высокоскорост- ного ввода/вывода (4 входа, 6 выходов) ШИМ-генератор, сервер периферий- ных транзакций Однокристальные микроконтроллеры с CISC-архитектурой_365
Таблица 6.17 (продолжение) 1 2 3 4 5 6 7 8 9 10 11 12 13 МИКРОКОНТРОЛЛЕРЫ СО ВСТРОЕННЫМИ ПРОЦЕССОРАМИ СОБЫТИЙ 8xC196KR 16 64 16 488 256 2 8 56 2 + 10 каналов захвата/ сравнения, 2 канала только сравнения Блок сегментации памяти, порт для межпроцессорных коммуникаций 8хС196КТ 16 64 32 1000 512 2 8 56 2 + 10 каналов захвата/ сравнения, 2 канала только сравнения Контроллер шины с расширенными возможностями, порт для межпро- цессорных комму-, никаций 8xC196NP 25 100 4 1000 2 33 1 + 4 канала процессора событий Цизкий уровень питания 3,3 В, трехканальный ШИМ-генератор, сервер периферий- ных транзакций, 4 внешних прерывания 8xC196NT 16 100 32 1000 512 2 4 56 2 + 10 каналов захвата/ сравнения, 2 канала только сравнения — 8xC196NU 50 100 г 1000 — 2 — 56 1 + 4 канала процессора событий 32-разрядный ак- кумулятор 366 Гпава 6
Таблица 6.17 (окончание) 1 2 3 4 5 6 7 8 9 10 11 12 13 МИКРОКОНТРОЛЛЕРЫ ДЛЯ УПРАВЛЕНИЯ ДВИГАТЕЛЯМИ 8хС196МС 16 64 16 488 2 13 53 1 + 4 канала захвата/ сравнения, 4 только сравнения Трехканальный ШИМ-генератор, процессор событий, процессор транзак- ций, трехканальный генератор периоди- ческих сигналов 8xC196MD 16 64 16 488 — 2 14 64 1 + 6 каналов захвата/ сравнения, 6 каналов только сравнения Встроенный генера- тор 8хС196МН 16 64 32 744 - 2 8 52 2 + 2 канала захвата/ сравнения, 4 канала только сравнения — МИКРОКОНТРОЛЛЕРЫ С ИНТЕГРИРОВАННЫМИ СРЕДСТВАМИ ЦИФРОВОЙ ОБРАБОТКИ 8xOC296SA 50 600 32 512 2К 2 64 1 4 канала захвата/ сравнения Увеличение в 2 или 4 раза тактовой час- тоты, 19 источников прерываний, из них 4 внешних, трехка- нальный ШИМ-гене- ратор, набор процес- соров событий, вмонтированный модуль выборки внешних устройств Однокристальные микроконтроллеры с CISC-архитектурой
368 Гпава 6 Эти ОМК находят широкое использование не только в компьютерной технике (принтеры, плоттеры и т. п.), но и в электромеханике, робото- технике, военной технике благодаря наличию интегрированного АЦП, модуля HSIO, процессора периферийных транзакций и порта последова- тельной связи. Конкретные ОМК отличаются тактовой частотой, коли- чеством последовательных портов, входов АЦП, объемом интегриро- ванной в кристалл памяти, наличием тех или других периферийных блоков, например, генератора периодических сигналов. с интегрированным устройством высокоскоростного ввода/вывода Структурная схема ОМК (рис. 6.29) содержит: • модуль ЦП (CPU); • контроллер памяти (КП); • контроллер прерываний (IC, Interrupt Controller);
Однокристальные микроконтроллеры с CISC-архитектурой 369 • сервер периферийных транзакций (PTS, Peripheral Transaction Server); • ПЗУ (ROM); • блок АЦП с устройством выборки/хранения (УВХ) и мультиплексо- ром (М); • встроенный трехканальный ШИМ-генератор (PWM); • последовательный порт (SIO); • порты ввода/вывода (Р0-Р5); • watchdog-таймер (WDT); • модуль высокоскоростного ввода/вывода (HSIO). Модуль ЦП состоит из регистрового ALU, регистра слова состояния процессора PSW, устройства микропрограммного управления (УМУ) и регистрового файла. Регистровый файл представляет собой массив реги- стров, т. е. ОЗУ статического типа. Он состоит из нижнего и верхнего ре- гистровых файлов. Младшие 24 байт нижнего регистрового файла при- надлежат к регистрам специальных функций. В нижнем регистровом файле размещен также указатель стека. Остальные ячейки регистрового файла, включая ячейки верхнего регистрового файла, являются опера- тивной памятью общего назначения. Центральный процессор связан с контроллером памяти, контроллером прерываний и встроенными периферийными устройствами внутренней 16-разрядной шиной. Кроме того, существует дополнительная 8- разрядная шина для непосредственной передачи байтов команды из кон- троллера памяти в регистр команд, которая находится в устройстве мик- ропрограммного управления УМУ. Контроллер памяти (КП) осуществляет операции выборки/записи дан- ных во внешнюю или внутреннюю память данных или команд. В состав контроллера памяти входит 4-байтная очередь команд (ОК). Функцио- нирование контроллера памяти аналогично функционированию шинно- го интерфейса МП 8086 (см. разд. 2.2). Обращения ЦП производятся лишь к регистровому файлу. Контроллер прерываний IC предназначен для эффективного управления в реальном времени. Обработка запросов прерываний осуществляется с учетом установленного уровня приоритета. В качестве запросов преры- ваний могут использоваться: • внешние сигналы NMI или EXTINT; • запросы от интегрированных периферийных устройств; • команды вызова подпрограмм обработки прерываний.
370 Гпава 6 Сервер периферийных транзакций PTS выполняет функции периферийно- го процессора ввода/вывода и освобождает ЦП от выполнения некото- рых типичных операций ввода/вывода. Транзакцией называется выпол- нение целостной операции над данными или пакетами данных, например, ввод или вывод пакета данных соответственно заданному протоколу по последовательному каналу связи, пересылка данных из од- ной области памяти в другую, сканирование АЦП, т. е. считывание ре- зультатов, запись в память и опрашивание канала АЦП. Сервер перифе- рийных транзакций работает исключительно по прерываниям (PTS- прерывания), но обслуживает их нё программно, а аппаратно на микро- программном уровне. При этом повышается быстродействие вычисле- ний, и некоторые PTS-прерывания могут обрабатываться за время вы- полнения одной обычной команды. Прежде чем разрешить PTS-прерывания, необходимо задать: желатель- ный режим работы, количество циклов передачи данных, адреса источ- ников и приемников данных. Это осуществляется программно записью необходимой информации в управляющий блок сервера периферийных транзакций, находящегося в регистровом файле. По окончании про- граммы обслуживания PTS-прерывания генерируется обычное прерыва- ние для переиницйализации сервера на новую задачу. Постоянное запоминающее устройство. В качестве внутренней памяти программ в зависимости от типа БИС используется масочное или одно- кратно программируемое ПЗУ емкостью от 8Кх8 до 32Кх8 байт. Блок АЦП предназначен для ввода аналоговых сигналов и состоит из аналогового мультиплексора (например, на 8 каналов для ОМК 8xC196KD), устройства выбърки/хранения (УВХ) и 8- или 10-разрядного АЦП. С помощью регистра специальных функций ad time задается вре- мя выборки и преобразования, с помощью регистра ad command — но- мер входного канала, для которого необходимо выполнить преобразо- вание, и условия запуска процесса преобразования (8 или 10 разрядов АЦП). Если использовать 10-разрядный АЦП, то результат считывается из регистра ad_result или по опросу, или по прерыванию (при готовно- сти АЦП). Время выборки 10-разрядного АЦП составляет 1 мкс, вре- мя преобразования: 10—20 мкс в 10-разрядном режиме, 7—20 мкс — в 8- разрядном режиме. Модуль высокоскоростного ввода/вывода HSIO предназначен для форми- рования периодических во времени сигналов (например, сигнала ШИМ для прямого цифрового управления инверторами напряжения приводов переменного или постоянного тока) и непосредственного измерения вре- менных интервалов между внешними событиями без дополнительных периферийных устройств (например, измерения частоты, скважности, периода, фазового сдвига). Событием считается любое изменение потен- циала внешнего сигнала на входах HSI.0—HSI.3 ОМК.
Однокристальные микроконтроллеры с CISC-архитектурой 371 В состав модуля входят: • два таймера (Timer 1 и Timer2) для точного отсчета временных интер- валов; • модуль высокоскоростного ввода данных HSI; • модуль высокоскоростного вывода данных HSO. ^Модуль высокоскоростного ввода аппаратно контролирует изменение по- тенциала внешнего сигнала на каждом из четырех входов HSI.0—HSI.3 с помощью встроенной схемы детектора перепадов. Эти изменения вос- принимаются ОМК как внешние события. Каждый из входов HSI.0— HSI.3 для каждого перехода значения входного сигнала можно незави- симо запрограммировать на определение таких событий: • из логической единицы в логический ноль; • из логического нуля в логическую единицу; I • из логической единицы в логический ноль и из логического нуля в ло- гическую единицу; • из восьми переходов значения входного сигнала из логической едини- цы в логический ноль. Если запрограммированное событие произошло на одном или несколь- ких входах, то время наступления этого события, отчисленное таймером 1, вместе с информацией о состоянии всех входов записывается в стек со- бытий FIFO, т. е. происходит захват события. Захват события сопрово- ждается генерацией запроса прерывания ЦП на обслуживание модуля HSI (HSI Data Available Interrupt). Если ко времени захвата события стек событий был пуст, то запись осуществляется в регистр хранения (Holding Register) информации о событии, которое состоялось. В противном слу- чае запись осуществляется в стек. Модуль HSI может последовательно запоминать информацию максимум о восьми событиях: семь записей мо- гут храниться в стеке FIFO емкостью 7 х 20 бит и одна запись — в реги- стре хранения. Основная задача модуля высокоскоростного вывода состоит в генерации заданных событий в заданное время. Существуют внутренние и внешние события. Внутренние события, не связанные с изменением потенциала на выводах ОМК, используются, например, для запуска процессов: • преобразований во встроенном АЦП в заданный момент времени; • обслуживания программно-реализованных таймеров (Software Timer), которые используются для отсчета заданных довольно больших вре- менных интервалов. Одновременно могут обслуживаться до четырех таких таймеров.
372 Гпава 6 Информация о событии и времени генерации события в виде команды записывается в ассоциативную память Content Addressable Memory (CAM-файл). Емкость CAM-файла разрешает одновременно запоминать до 8 команд, формируя таким образом некоторую программу генерации событий. Каждая из этих команд задает: • тип события (сброс или установка потенциала на внешнем контакте, запуск АЦП, запуск программных таймеров); • способ реагирования CPU на событие — информация о том, будет ли генерироваться прерывание для обслуживания события; • номер таймера (1 ли 2), используемый для контроля текущего реаль- ного времени; • время генерации события. В каждом машинном такте (100 нс при тактовой частоте 20 МГц) проис- ходит сравнение времени генерации события с реальным временем, ко- торое отсчитывает таймер. Если они совпадают, то генерируется задан- ное командой событие. Если событие состоялось, оно может быть изъято из списка событий или перезаписано снова. Встроенный трехканальный ШИМ-генератор. Модуль HSIO способен реализовать функцию ШИМ, но он имеет определенные ограничения, связанные с необходимостью затрат времени обращения CPU на его об- служивание. Это приводит к ограничению максимальной и минималь- ной скважности ШИМ-сигналов. Поэтому для генерации ШИМ- сигналов на высоких частотах (до 40 кГц) более удобным является встроенный трехканальный ШИМ-генератор, который не имеет огра- ничений на скважность импульсов. Частота ШИМ для всех каналов одинакова, а скважность регулируется от 1/255 до 1 с дискретностью 1/255. Недостатком ШИМ-генератора являются ограниченные возмож- ности регулирования частоты. Так, для БИС 8XC196KD при тактовой частоте 20 МГц частота ШИМ может устанавливаться в одно из двух возможных значений — 39,1 кГц и 19,5 кГц. Встроенный ШИМ-генератор эффективно используют для прямого циф- рового управления электронными коммутаторами, ключами инверторов напряжения и тока, а также для формирования аналоговых задающих сигналов в цифроаналоговых системах управления. Последовательный порт SIO представляет собой универсальный син- хронно-асинхронный приемопередатчик, который может настраиваться на один из четырех режимов, один из которых является синхронным, а три — асинхронными. Скорость обмена информацией по последователь- ному порту программно регулируется от нескольких сотен бод (бит/с) до нескольких десятков тысяч бод. Порт обеспечивает работу в режиме Master-Slave, что дает возможность включить микроконтроллер в муль- типроцессорную систему управления.
Однокристальные микроконтроллеры с CISC-архитектурой 373 □ Однокристальный микроконтроллер с интегрированными процессорами событий. 16-разрядный ОМК с интегрированным процессором событий или ЕРА-микроконтроллер (Event Processor Array, массив процессоров событий) отличается от ОМК с встроенным модулем HSIO наличием мощного процессора событий, модифицированным блоком встроенных таймеров/счетчиков, большей емкостью прямоадресованной внешней памяти (от 1 Мбайт до 16 Мбайт), расширенными интерфейсными воз- можностями. Модификация блока встроенных таймеров/счетчиков состоит в следующем: • оба таймера являются реверсивными и могут работать как с внутрен- ним, так и с внешним тактированием; • имеется возможность каскадного включения, когда таймер Т/С 2 так- тируется импульсами переполнения от таймера Т/С 1; • оба таймера допускают работу в квадратурном режиме, когда две по- следовательности прямоугольных импульсов, сдвинутых на 90 эл. градусов, снимаются с датчика и вводятся непосредственно в микро- контроллер. Этот режим удобен при работе с датчиками положения и/или скорости (например, с оптическими датчиками Холла и т. п.). Массив процессора событий совместим снизу с модулем высокоскорост- ного ввода/вывода и предназначен для решения тех же задач, но имеет некоторые усовершенствования. Каждый канал процессора событий ра- ботает в одном из двух режимов — режиме захвата внешних событий или режиме генерации внутренних или внешних событий. Как базовый для каждого из каналов может использоваться один из таймеров 1 или 2, тактирующийся одним из таких способов: • внешнее тактирование с помощью входа внешних тактовых импуль- сов и входа направления счета; • внешнее тактирование двумя последовательностями импульсов в квадратурном режиме; • внутреннее тактирование с возможностью изменения частоты входных тактовых импульсов путем программирования коэффициента деления; • тактирование сигналом переполнения другого таймера. Массив процессоров событий реагирует на такие типы внешних событий: • переход сигнала на внешнем выводе из логической единицы в логиче- ский ноль; • переход сигнала на внешнем выводе из логического нуля в логиче- скую единицу; • переключение уровня сигнала на внешнем выводе.
374 Гпава 6 Каждый канал процессора событий генерирует отдельный запрос на прерывание, что значительно упрощает и ускоряет обслуживание про- цессора событий со стороны CPU, т. к. нет необходимости в идентифи- кации источника запроса. Поскольку выполнение функций захвата/сравнения каждым каналом осуществляется независимо, временная дискретность определения собы- тия или генерации сигналов увеличивается в несколько раз. Так, при час- тоте 20 МГц временная дискретность ЕРА-микроконтроллера составляет 200 нс, что в 4 раза меньше, чем в HSIO-микроконтроллера с такой же тактовой частотой. □ Однокристальные микроконтроллеры с интегрированными средствами уп- равления двигателями, или MCF-микроконтроллеры (Motor Control Family), предназначены для прямого цифрового управления преобразо- вательными устройствами электроприводов. Структурная схема MCF- микроконтроллера серии 8С196МН показана на рис. 6.30. , 16 Рис. 6.30. Структурная схема ОМК с интегрированными средствами управления двигателями
Однокристальные микроконтроллеры с CISC-архитектурой 375 Кроме рассмотренных выше блоков ОММ(см. рис. 6.29), схема содержит дополнительные линии портов и сложный генератор периодических сиг- налов (ГПС). Линии 7 портов ОМК имеют такое функциональное назна- чение: • порт РО — входы АЦП; • порт^1 — 4 линии последовательного ввоДа/вывода порта SIO; • порт Р2 — 2 линии последовательного ввода/вывода, два канала за- хвата/сравнения, 4 канала сравнения процессора событий; • порты РЗ, Р4 — совмещенная шина адреса/данных; • порт Р5 — передача сигналов управления; • порт Р6 — функция генератора периодических сигналов. Генератор периодических сигналов содержит: • блок цифрового опорного генератора (Timebase Generator), который задает пилообразную или треугольную форму опорного цифрового сигнала модулятора; • блок трехканального цифрового компаратора — драйвера формиро- вания сигналов фаз (Phase Driver), в котором на базе заданного значе- ния скважности формируются три независимых ШИМ-сигнала: WG1, WG2, WG3. Этот блок формирует также три инверсных сигнала: WG1#, WG2#, WG3# с учетом задержки включения для избежания режима сквозного тока; • блок управления выходами генератора периодических сигналов (Output Control), что позволяет программно включить или выключить любой из сигналов WGn или WG#n, назначить для выходов генера- тора активный уровень (L или Н ), перевести за интервал времени меньше 2 мкс выходы генератора в пассивное состояние при поступ- лении сигнала аварии, выключить все ШИМ-выходы программно. Генератор периодических сигналов позволяет в широких границах регу- лировать частоту и период ШИМ (от 0,25 мкс до 16 мс для односторон- ней ШИМ и от 0,125 мкс до 8 мс — для двусторонней). Время задержки для устранения сквозного тока составляет 0,125—125 мкс. □ Однокристальный микроконтроллер с интегрированными средствами циф- ровой обработки. Однокристальный микроконтроллер MCS296 имеет традиционную архитектуру Intel процессоров обработки событий в реальном масштабе времени, но дополнительно содержит цифровой сиг- нальный процессор Digital Signal Processor (DSP) для реализации функ- ции цифрового регулятора. Такое объединение разных типов процессо-
376 Гпава 6 ров позволило получить высокие технические характеристики контрол- леров, а именно: • повышение производительности CPU за счет уменьшения времени выборки из памяти программ и данных; • использование конвейерного режима с одновременным выполнением четырех команд для уменьшения времени машинного цикла; • применение аппаратных средств умножения и деления; • дополнение системы команд 17-ю специальными командами (напри- мер, умножение с накоплением, повторение, автоматизация обновле- ния данных в таблицах последовательных выборок входных сигналов в процессе их обработки), оптимизированными для решения задач по- строения цифровых фильтров и регуляторов. Контрольные вопросы и задания 1. Дайте определение события, захвата события и транзакции. 2. Какую информацию содержит регистровый файл в ОМК с модулем HSIO? 3. Укажите назначение и объясните принцип действия сервера периферий- ных транзакций. 4. Укажите назначение и объясните принцип действия модуля высокоско- ростного ввода/вывода. 5. Опишите принцип работы встроенного АЦП в ОМК с модулем HSIO. 6. Сравните характеристики последовательного порта ОМК с БИС КР580ВВ51. 7. Сравните характеристики блока таймеров ЕРА-микроконтроллера и HSIO-микроконтроллера. 8. Объясните особенности квадратурного режима работы таймера. 9. Сравните характеристики генератора периодических сигналов микро- контроллера с модулем HSIO и MCF-микроконтроллера.
Глава 7 Однокристальные микроконтроллеры с RISC-архитектурой Рассмотренные в главе 6 CISC-контроллеры характеризуются довольно раз- витой системой команд, например, микроконтроллеры серии i80x51 имеют 111 команд. Анализ программ показал, что всего лишь 20% команд исполь- зуются в 80% случаев. Выполненный на кристалле дешифратор команд, та- ким образом, используется не в полной мере, а занимает более 70% площади кристалла. Поэтому у разработчиков ОМК возникла идея сократить коли- чество команд, придать им единый формат, и уменьшить площадь кристал- ла, т. е. использовать RISC (Reduced Instruction Set Computing) архитектуру. Особенностью контроллеров, выполненных по RISC-архитектуре, является то, что все команды выполняются за один-три такта, тогда как в CISC- контроллерах — за один-три машинных цикла, каждый из которых состоит из нескольких тактов (например, для i80x51 — из 12 тактов). Поэтому RISC- контроллеры имеют значительно большее быстродействие. Но более полная система команд CISC-контроллеров в некоторых случаях приводит к эко- номии времени выполнения отдельных фрагментов программы и к эконо- мии памяти программ. 7.1. PIC-контроллеры Типичными представителями RISC-процессоров являются Р1С-контроллеры (Periferial Interface Controller, контроллеры периферийных интерфейсов) про- изводства фирмы MicroChip. PIC-контроллеры применяются в системах вы- сокоскоростного управления автомобильными и электрическими двигателя- ми, приборах бытовой электроники, телефонных приставках с АОН, системах охраны с оповещением по телефонной линии, мини-АТС. Отдельные БИС отличаются разрядностью ПЗУ: от 12 до 14 бит в серии Р1С16Схх, 16 бит — в серии Р1С17Схх. Благодаря сокращенному числу команд (от 33 до 35) все
378 Гпава 7 команды занимают в памяти одно слово. Время выполнения каждой коман- ды, кроме команд разветвления, составляет четыре такта, т. е. один машин- ный цикл (200 нс на частоте 20 МГц). Оперативное запоминающее устройство выполнено по схеме с произвольной выборкой с возможностью непосредст- венной адресации к любой ячейке памяти. Стек реализован аппаратно и имеет глубину 2, 8 или 16 ячеек. Почти во всех PIC-контроллерах есть система пре- рываний, источниками прерываний для которой могут служить переполнения таймеров или изменения состояний сигналов на некоторых входах БИС. В PIC-контроллерах предусмотрен бит защиты ПЗУ, который предотвращает нелегальное копирование содержимого памяти. Основные характеристики разных типов PIC-контроллеров приведены в табл. 7.1. Большие интегральные схемы РЮбСхх имеют встроенные ПЗУ емкостью от 0,5 до 4 килослов и ОЗУ емкостью 32—256 байт. Основная часть контроллеров имеет однократно программируемое ПЗУ, однако не- которые контроллеры содержат ПЗУ с ультрафиолетовым стиранием, a PIC 16С84 содержит память программ и память данных на базе ПЗУ с электри- ческим стиранием. Кроме того, контроллеры имеют от одного до трех тай- меров, встроенную систему сброса, сторожевой таймер, внутренний такто- вый генератор, который может запускаться как от кварцевого резонатора, так и от RC-цепи в широком диапазоне частот — 0—25 МГц. Количество разрядов портов — 12—33. Каждый разряд порта можно запрограммиро- вать на ввод или на вывод. Контроллер PIC16C64 дополнительно имеет вы- ход ШИМ, с помощью которого можно реализовать ЦАП разрядностью до 16 разрядов, а также последовательный двунаправленный синхронный порт с интерфейсами SPI, I2C, SCI/UART. Контроллеры PIC 16С71 и PIC 16С74 имеют внутренний 8-разрядный АЦП с устройством выборки/хранения и входным аналоговым мультиплексором. Контроллеры Р1С17Схх имеют встроенный аппаратный 8-разрядный умно- житель, два выхода ШИМ, два вывода с открытым коллектором, четыре таймера/счетчика, 11 источников прерываний. В них предусмотрена воз- можность выполнения программы из внешнего ПЗУ. Контроллер PIC1400 имеет программируемый выбор генератора — встро- енного 4 МГц резонатора или внешнего кварцевого или керамического ре- зонатора, сторожевой таймер с отдельным встроенным RC-генератором, внутрисхемным программированием через два вывода, два режима пони- женного энергопотребления (200 мкА, 3 В при отключенном генераторе и активных аналоговых схемах и 5 мкА, ЗВ при отключенных генераторе и аналоговых схемах). Процессор РЮ 400 содержит интегральный АЦП на 8 каналов, диапазон напряжения двух из которых может задаваться программно. Время преоб- разования АЦП составляет 16 мс при тактовой частоте 4 МГц и разрядной сетке в 16 бит.
Табл ица 7.1. Основные технические характеристики Р1С-процессоров Тип PIC Технические характеристики Тактовая частота, МГц Память программ, бит Память данных, байт EEPROM-память данных, байт Глубина стека Таймер 0 (8 + 8 бит) Таймер 1 (16 бит) Таймер 2 (8 бит) Количество ШИМ выходов Последовательный порт/ Интерфейс Количество каналов АЦП Количество запро- сов прерываний Количество разря- дов ввода/вывода Количество контактов БИС EPROM EEPROM 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 16С54 16 512х 12 - 36 — 2 + — — — — — - 13 18 16С55 16 512х 12 — 36 — 2 + - - — — — — 21 28 16С56 16 1024 х 12 — 72 — 2 + - - — — — — 13 18 16С57 16 2048х 12 — 72 - 2 + - - — — — — 21 28 16С58 16 2048 х 12 — 80 — 8 + — - — - - — 13 18 16С61 20 — 1024х 14 36 — 8 + — — - - - 3 13 18 16С62 20 2048 х 14 - 128 — 8 + + + 1 SPI/I2C, SCI/UART — 10 21 28 16С620 20 — 512х 14 80 - 8 + — — — — — 4 13 18 16С621 20 - 1024х14 80 — 8 + - - — — — 4 13 18 16С622 20 — 2048 х14 128 — 8 + — - - — — 4 13 18 Однокристальные микроконтроллеры с RISC-архитектурой_379
Таблица 7.1 (окончание) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 16С63 20 4096 х 14 — 192 — 8 + + + 1 SPI/I2C, SCI/UART — + 21 28 16С64 25 2048 х 14 - 128 — 8 + + + 1 SPI/I2C, SCI/UART — 8 21 40 16С65 20 4096х14 - 192 — 8 + + + 2 SPI/I2C, SCI/UART — 8 21 40 16С710 20 — 1512x14 36 - 8 + - - — - 4 3 13 18 16С71 16 - 1024х 14 36 — 8 + - - - - 4 3 13 18 16С711 20 — 1024х 14 68 - 8 + — - - - 4 3 13 18 16С72 20 2048 х 14 — 128 - 8 + + + 1 SPI/I2C, SCI/UART 5 10 21 28 16С73 20 4096 х 14 - 192 - 8 + + + 2 SPI/I2C, SCI/UART 5 10 21 28 16С74 20 4096 х14 - 192 — 8 + + + 2 SPI/I2C, SCI/UART 8 8 21 40 16С83 10 512х 14 64x8 64 36x8 8 + — — — — — - 13 18 16С84 10 1024х14 64x8 64 36x8 8 + - — — — - - 13 18 16С84А 10 1024х 14 64 х 8 64 68x8 8 + — — - - — - 13 18 1400 20 4096 х14 — 192 - 8 + + - - SPI/I2C, 8 — 21 28 17С42 25 - 2048 х16 232 - 16 + + + 2 SCI/UART - + 32 40 17С43 25 - 4096 х 16 454 — 16 + + + 2 SCI/UART - + 32 40 17С44 25 - 8192х 16 454 - 16 + + + 2 SCI/UART — + 32 40
Однокристальные микроконтроллеры с RISC-архитектурой 381 Этот контроллер содержит также 4-разрядный ЦАП, встроенный датчик температуры с разрешающей способностью 0,10 В и встроенный детектор пониженного напряжения питания. Архитектура PIC-контроллеров. Архитектуру PIC-контроллеров рассмот- рим на примере БИС PIC16C71 (рис. 7.1). Основой архитектуры являются раздельные шины и области памяти для данных и команд. Шина данных и ячейка ОЗУ — 8-разрядные, а шина команд и программная память (ПЗУ) — 14-разрядные; 14-разрядная команда выбирается за один цикл. Двухступен- чатый конвейер обеспечивает одновременные выбор и выполнение коман- ды. Система команд содержит 35 команд. Все команды выполняются за один цикл, за исключенйем команд переходов, которые выполняются за два цикла. Рис. 7.1. Структурная схема контроллера PIC16C71 Структурная схема контроллера содержит: □ восьмиуровневый аппаратный стек (STACK); □ 13-разрядный программный счетчик (РС); □ 8-разрядное арифметико-логичное устройство (ALU);
382 Глава 7 □ ОЗУ (BlockREG), которое состоит из 36 8-разрядных РОН; □ 15 регистров специальных функций SFR (на рис. 7.1 показан регистр косвенной адресации (WREG), регистр статуса (SREG), регистр опций (OptREG), регистр (CREG) конфигурации ПЗУ); □ 8-разрядный таймер/счетчик (Т/С) с 8-разрядным программируемым предделителем; □ модуль АЦП (ADC) с четырьмя входами; □ 13 линий ввода/вывода (4-разрядный порт (РА), 8-разрядный порт (РВ), линия RTCC); □ сторожевой таймер (watchdog, WDT); □ формирователь (Form) внешнего сигнала RTCC или сигнала сторожево- го таймера; □ систему управления и синхронизации с внутренним генератором (Synhr.Control System). Назначение выводов БИС приведено в табл. 7.2, а предельные электриче- ские параметры — в табл. 7.3. Таблица 7.2. Назначение выводов PIC16C71 Номер вывода Обозначение Функциональное назначение 1 2 3 1 RA2/AIN2 Двунаправленная линия ввода/вывода. Аналоговый вход канала 2. Как цифровой вход имеет уровень ТТЛ 2 RA3/AIN3/Vref Двунаправленная линия ввода/вывода. Аналоговый вход канала 3 3 RA4/RTCC Вход через триггер Шмитта. Линия порта ввода/ вывода с открытым стоком или вход частоты для тай- мера-счетчика RTCC 4 /MCLR/Vpp Сигнал сброса для контроллера. Активный низкий уровень. Вход через триггер Шмитта 5 Vss Общий вывод (0 В) 6 RBO/INT Двунаправленная линия ввода/вывода или внешний вход прерывания 7 RBI Двунаправленная линия ввода/вывода 8 RB2 То же
Однокристальные микроконтроллеры с RISC-архитектурой 383 Таблица 7.2 (окончание) Номер вывода Обозначение Функциональное назначение 1 2 3 9 RB3 Двунаправленная линия ввода/вывода 10 RB4 н II RB5 II 12 RB6 II 13 RB7 п 14 Vdd Напряжение питания 15 OSC2/CLKOUT Вход подключения кварцевого резонатора во всех ре- жимах, кроме RC-генератора (выход тактовой частоты в режиме RC-генератора) 16 OSC1/CLKIN Вход подключения кварцевого резонатора, RC-цепи (вход внешней тактовой частоты) 17 RA0/AIN0 Двунаправленная линия ввода/вывода. Аналоговый вход канала 0 18 RAI/AINI Двунаправленная линия ввода/вывода. Уровень ТТЛ. Аналоговый вход канала 1 Таблица 7.3. Предельные значения электрических параметров Параметр Предельное значение 1 2 Интервал рабочих температур -55...+125 °C Температура хранения -65...+150 °C Напряжение на любом выводе относительно Uss (земли), кроме Udd и /MCLR -0,6...Udd + 0,6B Напряжение Udd относительно Uss 0—7,5 В Напряжение /MCLR относительно Uss 0— 14В* Общая мощность рассеивания 800 мВт МаКСИМаЛЬНЫЙ ТОК ПО ВЫВОДУ Uss 150 мА Максимальный ток по выводу Udd 100 мА
384 Гпава 7 Таблица 7.3 (окончание) Параметр Предельное значение 1 2 Максимальный ток по любому выводу ±500 мкА Максимальный входной ток любой линии порта RA или RB 25 мА Максимальный выходной ток любой линии порта RA или RB 20 мА Максимальный суммарный входной ток для всех линий порта RA 50 мА Максимальный суммарный входной ток для всех линий порта RB 100 мА Максимальный суммарный выходной ток для всех ли- ний порта RA 80 мА Максимальный суммарный выходный ток для всех ли- ний порта RB 150 мА Примечание. Сигнал на вывод /MCLR рекомендуется подавать через ограничитель- ный резистор 50—100 Ом. Как видно из приведенных характеристик, PIC-контроллеры по своим па- раметрами конкурируют с однокристальными микроЕОМ и ОМК. Некото- рые модификации PIC-контроллеров имеют большее быстродействие, чем ОМК. И PIC-контроллеры, и ОМК применяются во встроенных системах управления разнообразного оборудования. Контрольные вопросы и задания 1. Назовите области применения Р1С-контроллеров. 2. Какими факторами определяется быстродействие Р1С-контроллеров? 3. Назовите основные блоки структурной схемы Р1С-контроллера. 4. Сравните характеристики PIC-контроллеров серии PIC 16Схх и PIC 17Схх. 5. Укажите типы ПЗУ, которые используются в PIC -контроллерах. 6. Какие периферийные устройства применяются в Р1С-контроллерах?
Однокристальные микроконтроллеры с RISC-архитектурой 385 7.2. Однокристальные AVR -микроконтроллеры Однокристальные AVR-микроконтроллеры представляют 8-разрядные вы- сокопродуктивные RISC-контроллеры общего назначения. Они были соз- даны группой разработчиков исследовательского центра фирмы Atmel Corp. (Норвегия), инициалы которых и сформировали марку AVR. Особен- ностью AVR — микроконтроллеров является их широкая номенклатура, которая позволяет пользователю выбрать микроконтроллер с минимальной аппаратной избыточностью и, следовательно, наименьшей стоимости. Так, например, в номенклатуру группы AT90S входят приборы с ПЗУ объемом от 1 до 8 Кбайт, с самыми разными наборами периферии и в корпусах с ко- личеством выводов от 8 до 48. В данное время в серийном производстве на- ходятся три семейства AVR — Tiny, Classic и Mega. Микроконтроллеры Tiny — наиболее дешевые и простые, Mega — наиболее мощные, a Classic занимают промежуточное место между ними. Рассмотрим архитектуру AVR-микроконтроллеров на примере МК семей- ства Classic AT90S8535 (рис. 7.2) Микроконтроллер содержит Гарвардский процессор, регистровый файл, память программ, память данных и различные интерфейсные схемы (пе- риферию). Гарвардский процессор реализует полное логическое и физическое разделе- ние не только адресных пространств, но и информационных шин для обра- щения к памяти программ и к памяти данных, причем способы адресации и доступа к этим массивам памяти также разные. Подобное построение уже более близко к структуре цифровых сигнальных процессоров и обеспечива- ет повышение производительности. Процессор работает одновременно как с памятью программ, так и с памятью данных; разрядность шины памяти программ расширена до 16 бит. В МК AVR используется технология кон- вейеризации, вследствие чего цикл "выборка — выполнение" команды су- щественно сокращен. Для сравнения, у микроконтроллеров семейства MCS51 короткая команда выполняется за 12 тактов генератора (1 машин- ный цикл), на протяжении которого процессор последовательно считывает код операции и выполняет ее. В PIC-контроллерах фирмы Microchip (см. разд. 7.1), где уже реализован конвейер, короткая команда выполняется на протяжении 8 периодов тактовой частоты (2 машинных цикла). За это время последовательно дешифруется и считывается код операции, выполняется команда, фиксируется результат и одновременно считывается код следую- щей операции (одноуровневый конвейер). Поэтому в общем потоке команд одна короткая команда реализуется за 4 периода тактовой частоты или за один машинный цикл. В МК AVR тоже используется одноуровневый кон-
386 Глава 7 вейер при обращении к памяти программ и короткие команды в общем по- токе выполняется, как и в PIC-контроллерах, за один машинный цикл. Главное же отличие заключается в том, что этот цикл в МК AVR составляет всего один период тактовой частоты. Рис. 7.2. Архитектура микроконтроллера AT90S8535 Регистровый файл SRAM занимает младшие 32 байта в общем адресном пространстве ОМК (рис. 7.3). Шесть из 32-х регистров файла могут исполь- зоваться как три 16-разрядных указателя адреса при косвенной адресации данных. Один из этих указателей (Z Pointer) применяется также для доступа
Однокристальные микроконтроллеры с RISC-архитектурой 387 к данным, записанным в памяти программ микроконтроллера. Использова- ние трех 16-битных указателей (X, Y и Z Pointers) существенным образом повышает скорость пересылки данных при работе прикладных программ. Помять программ. Все AVR-микроконтроллеры имеют Flash-память про- грамм, которая может быть загружена как с помощью обычного програм- матора, так и с помощью SPI-интерфейса, в том числе непосредственно на плате. Число циклов перезаписи — не меньше 1000. Некоторые версии кри- сталлов семейства Mega имеют возможность самопрограммирования, т. е. микроконтроллер способен самостоятельно, без внешнего программатора, изменять содержимое ячеек памяти программ. Это дает возможность запи- сать во внешнюю энергонезавйсимую память несколько рабочих версий программы, а потом по мере необходимости или по реакции на внешние или внутренние логические условия перегружать рабочие программы в тот же микроконтроллер AVR без извлечения его из печатной платы. Для этого весь массив памяти программ делится на две неравные по объему области: блок загрузчика (программа, которая управляет перезаписью Flash-памяти программ) и блок для размещения рабочих программ. Программа- загрузчик создается самим разработчиком и должна быть запрограммиро- вана внешним программатором. Память данных. Все AVR-микроконтроллеры имеют также энергонезави- симую память данных с электрическим стиранием EEPROM. Этот тип па- мяти используется для хранения промежуточных данных, разных констант, таблиц перекодировок, калибровочных коэффициентов и т. п. Данные в
388 Гпава 7 EEPROM могут быть загружены как через SPI-интерфейс, так и с помощью обычного программатора. Число циклов перезаписи — не меньше 100 000. Два программируемых бита защиты информации позволяют защитить па- мять программ и энергонезависимую память данных EEPROM от несанк- ционированного считывания. Внутренняя оперативная память SRAM есть во всех AVR семейств Classic и Mega и в одном новом кристалле семейства Tiny — ATtiny26/L. Для некото- рых микроконтроллеров возможно подключение внешней памяти данных объемом до 64 Кбайт. Периферия МК A VR. К числу традиционных периферийных устройств отно- сятся 8-разрядные порты ввода/вывода, последовательный порт, таймеры/ счетчики и контроллер прерываний. Число независимых линий портов ввода/вывода — от 3 до 53. Каждый раз- ряд порта может быть запрограммирован на ввод или на вывод информа- ции. Мощные выходные драйверы обеспечивают токовую нагрузочную возможность 20 мА по линии порта при максимальном значении 40 мА, что дает возможность, например, непосредственно подключать к микрокон- троллеру светодиоды и биполярные транзисторы. Общая токовая нагрузка на все линии одного порта не должна превышать 80 мА (все значения при- ведены для напряжения питания 5 В). Микроконтроллеры AVR имеют в своем составе от 1 до 4 тайме- ров/счетчиков с разрядностью 8 или 16 бит, которые могут работать и как таймеры от внутреннего источника опорной частоты, и как счетчики внеш- них событий с внешним тактированием. Таймер/счетчик RTC (есть во всех микроконтроллерах семейства Mega и в некоторых МК Classic) реализует систему реального времени. Таймер имеет свой собственный делитель, который может быть программным способом подключен или к основному внутреннему источнику тактовой частоты мик- роконтроллера, или к дополнительному асинхронному источнику опорной частоты (кварцевый резонатор или внешний синхросигнал). Для этой цели МК имеет два внешних вывода. Внутренний осцилятор, нагруженный на счетный вход таймера/счетчика RTC, оптимизирован для работы с внешним "часовым" кварцевым резонатором на 32,768 кГц. Новыми периферийными устройствами являются блок последовательного периферийного интерфейса (SPI), сторожевой таймер (WDT) и аналоговый компаратор (АС). Блок SPI предназначен для последовательного ввода и вывода данных и ис- пользуется для программирования микроконтроллера после установки его на печатную плату.
Однокристальные микроконтроллеры с RISC-архитектурой 389 Сторожевой таймер WDT предназначен для перезапуска программы при появлении сбоя в ходе ее выполнения. Программа, которая работает без сбоев, периодически сбрасывает сторожевой таймер, не допуская его пере- полнения. Сторожевой таймер имеет свой собственный RC-генератор, ко- торый работает на частоте 1 МГц. На входе WDT включен делитель вход- ной частоты с программируемым коэффициентом деления, позволяющий регулировать временной интервал переполнения таймера для сброса мик- роконтроллера. Таймер WDT может быть отключен программным спосо- бом во время работы микроконтроллера как в активном режиме, так и в любом из режимов пониженного энергопотребления. В последнем случае это приводит к значительному снижению потребляемого тока. Аналоговый компаратор АС сравнивает по величине напряжения сигналы, поступающие на входы Р1.0 и Р1.1. Результат сравнения подается на линию Р3.6, которая не имеет внешнего вывода. Аналого-цифровой преобразователь ADC построен по классической схеме последовательного приближения с устройством выборки/хранения (УВХ). Каждый из аналоговых входов может быть соединен со входом УВХ через аналоговый мультиплексор. Устройство выборки/хранения имеет свой соб- ственный усилитель, который гарантирует, что измеряемый аналоговый сигнал будет стабильным на протяжении всего времени преобразования. Разрядность АЦП составляет 10 бит при нормированной погрешности ±2 разряда. АЦП может работать в двух режимах — однократное преобразо- вание по любому выбранному каналу и последовательный циклический оп- рос всех каналов. Время преобразования выбирается программно с помо- щью установки коэффициента деления частоты специального предделителя, который входит в состав блока АЦП. Оно составляет 70—280 мкс для ATmegalO3 и 65—260 мкс для всех других микроконтроллеров, имеющих в своем составе АЦП. Внутренний тактовый генератор МК AVR может запускаться от нескольких источников опорной частоты (внешний генератор, внешний кварцевый ре- зонатор, внутренняя или внешняя RC-цепочка). Поскольку AVR- микроконтроллеры полностью статические (выполнены по статической технологии), минимальная допустимая частота ничем не ограничена, т. е. возможно обеспечить даже пошаговый режим выполнения программы. Максимальная рабочая частота определяется конкретным типом микрокон- троллера. Микроконтроллеры AVR могут быть переведены программным путем в один из шести режимов пониженного энергопотребления. □ Режим холостого хода (IDLE), в котором прекращает работу только процессор и фиксируется содержимое памяти данных, а внутренний ге-
390 Глава 7 нератор синхросигналов, таймеры, система прерываний и WDG-таймер продолжают функционировать. □ Режим микропотребления (Power Down), при котором сохраняется со- держимое регистрового файла, но останавливается внутренний генера- тор синхросигналов. Выход из Power Down возможен или по общему сбросу микроконтроллера, или по сигналу от внешнего источника пре- рывания. При включенном WDG-таймере ток потребления в этом режи- ме составляет около 60—80 мкА, а при выключенном — меньше 1 мкА для всех типов AVR. Вышеприведенные значения справедливы для вели- чины питающего напряжения 5 В. □ Режим хранения энергии (Power Save), реализованный только в тех AVR, которые имеют в своем составе систему реального времени. В основном режим Power Save идентичен режиму Power Down, но он допускает неза- висимую работу таймера/счетчика RTC. Выход из режима Power Save возможен по прерыванию, вызванному или переполнением тайме- ра/счетчика RTC, или срабатыванием блока сравнения этого счетчика. Ток потребления в этом режиме составляет 6—10 мкА при напряжении питания 5 В на частоте 32,768 кГц. □ Режим подавления шума при работе аналого-цифрового преобразовате- ля (ADC Noise Reduction). В этом режиме останавливается работа про- цессора, но разрешена работа АЦП, двухпроводного интерфейса 12С и сторожевого таймера. □ Основной режим ожидания (Standby). Отличается от режима Power Down тем, что работа тактового генератора не прекращается. Это гарантирует быстрый выход микроконтроллера из режима ожидания всего за 6 тактов генератора. □ Дополнительный режим ожидания (Extended Standby). Идентичный ре- жиму Power Save, но работа тактового генератора тоже не прекращается, что гарантирует быстрый выход из режима за 6 тактов генератора. Система команд AVR насчитывает до 133 различных команд. Различают пять групп команд AVR: условного разветвления, безусловного разветвле- ния, арифметические и логические операции, команды пересылки данных, команды работы с битами. В последних версиях AVR семейства Mega реа- лизована функция аппаратного умножения. По разнообразию и количеству команд AVR больше похожи на CISC-, чем на RISC-процессоры. У PIC- контроллеров система команд исчисляет до 75 разных команд, а в MCS51 она составляет 111. В целом, прогрессивная RISC-архитектура AVR в соединении с наличием регистрового файла и расширенной системы команд позволяет создавать компактные программы с высокой скоростью выполнения.
Однокристальные микроконтроллеры с RISC-архитектурой 391 Контрольные вопросы и задания 1. Назовите состав периферии AVR-микроконтроллеров. 2. По какой архитектуре выполнен AVR-микроконтроллер? Какие особен- ности этой архитектуры? 3. Назовите новые блоки структурной схемы AVR-микроконтроллера по сравнению с традиционной периферией ОМК. 4. За сколько тактов выполняется команда в а) AVR-микроконтроллере, б) PIC -контроллере, в) микроконтроллере MCS51? 5. Какое назначение сторожевого WDT-таймера? 6. Назовите режимы программирования Flash-памяти программ. Объясни- те их преимущества и недостатки. 7.3. Характеристики AVR -микроконтроллеров Рассмотрим подробнее характеристики семейств AVR: □ Classic AVR — основная линия микроконтроллеров с производительно- стью до 16 MIPS, память программ FLASH ROM 2—8 Кбайт, память данных EEPROM 64—512 байт, память данных SRAM 128—512 байт; □ Mega AVR — микроконтроллеры с производительностью 4—6 MIPS, память программ FLASH ROM 64—128 Кбайт, память данных EEPROM 64-4096 байт, память данных SRAM 1—4 Кбайт, встроенный 10- разрядный 8-канальный АЦП, аппаратный умножитель; □ Tiny AVR — низкостоимостные микроконтроллеры в 8-выводном вы- полнении, имеют встроенную схему контроля напряжения питания. Микроконтроллеры Tiny характеризуются наименьшими среди AVR МК объемами памяти программ и ограниченным набором функций. Однако малогабаритные корпуса, возможность работы при напряжении питания 1,8 В (МК с индексом V) позволяют использовать эти микроконтроллеры в пор- тативной аппаратуре, в частности, с батарейным питанием. На другом полюсе семейства AVR, по уровню интеграции и возможностей, находится группа Mega. Для микроконтроллеров этой группы, в особенно- сти для недавно разработанных, характерны: □ большой объем Flash-памяти программ (на текущий момент от 8 до 128 Кбайт); □ режим самопрограммирования, обеспеченный встроенной программой- загрузчиком;
392 Гпава 7 □ встроенный умножитель, который поддерживает умножение дробных чисел со знаком и без знака; □ расширенные наборы встроенной периферии; □ широкий набор специальных микроконтроллерных функций, в том чис- ле: до шести режимов энергосбережения и возможность программной ус- тановки тактовой частоты; □ расширение системы команд до 130—133 команд, в том числе несколь- кими командами 32-разрядного формата; □ организация в новых моделях интерфейса предельного сканирования (IEEE 1149.1/ JTAG), который поддерживает встроенную отладку и обеспечивает еще один путь программирования Flash- и EEPROM-памя- ти, перемычек и бит блокирования; □ специальные микроконтроллерные функции, которые обеспечивают вы- сокую устойчивость работы аппаратных и программных средств при случайных изменениях напряжения питания. Области применения микроконтроллеров этой группы — от высоконадеж- ных функций традиционного вычисления и управления до также высоко- надежной обработки сигналов управления двигателями. Семейство Classic в настоящее время наиболее распространено. Микрокон- троллеры этого класса имеют меньшую периферию и вычислительные воз- можности, чем контроллеры семейства Mega, но большие, чем Tiny. Корпо- рация Atmel не планирует дальнейшее развитие семейства Classic, поскольку считает, что это семейство функционально сбалансировано и разнообразно представлено. В табл. 7.4—7.6 приведены характеристики микроконтроллеров семейств Tiny, Classic и Mega соответственно. В таблицах обозначены: □ Flash ROM — объем энергонезависимой памяти программ (в килобай- тах); □ EEPROM — объем энергонезависимой памяти данных (в байтах); □ SRAM — объем статической памяти данных (в байтах); □ ISP — возможность программирования микроконтроллера на целевой плате (I) при основном напряжении питания или возможность самопро- граммирования без участия внешнего программатора (S); □ I/O — количество линий ввода/вывода; □ таймеры 8/16 — количество и разрядность таймеров/счетчиков; □ ADC (channels) — количество каналов аналого-цифрового преобразова- теля.
Таблица 7.4. Микроконтроллеры A VR семейства Tiny Тип Технические характеристики Напряжение питания, В Тактовая частота, МГц I/O Flash БЕРРОМ SRAM Интерфейсы Аналоговые входы Таймеры ISP AT-tinyl 1L 2,7—5,5 2 6 1К - - - - 1x8 - AT-tinyl 1 4,0—5,5 6 6 1К - - - - 1x8 - AT-tinyl2V 1,8—5,5 1 6 1К 64 - - - 1x8 I AT-tinyl 2L 2,7—5,5 4 6 1К 64 - - - 1x8 I AT-tinyl 5L 2,7—5,5 1 6 1К 64 - - ADC 4x10 2x8 I AT-tiny26L 2,7—5,5 8 16 1К 128 128 SPI U ART ADC 11x10 2x8 I AT-tiny26 4,0—5,5 16 16 1К 128 128 SPI UART ADC 11x10 2x8 I AT-tiny28V 1,8—5,5 1 20 2К - - - - 1x8 - AT-tiny28L 2,7—5,5 4 20 2К - - - - 1x8 - Однокристальные микроконтроллеры с RISC-архитектурой_393
Таблица 7.5. Микроконтроллеры A VR семейства Classic Технические характеристики Тип Напряжение питания, В Тактовая частота, МГц I/O Flash EEPROM SRAM Интерфейсы Аналоговые входы Таймеры ISP AT90SI2 2,7—6,0 4,0—6,0 4 12 15 1К 64 - - - 1x8 I AT90S23 2,7—6,0 4,0—6,0 4 10 15 2К 128 128 UART - 1x8 1x16 I AT90L2323 2,7—6,0 4 3 2К 128 128 - - 1x8 1 AT90S2323 4,0—6,0 10 3 2К 128 128 - - 1x8 I AT90LS2343 2,7—6,0 4 5 2К 128 128 - - 1x8 I AT90S2343 4,0—6,0 10 5 2К 128 128 - - 1x8 I AT90LS4433 2,7—6,0 4 20 4К 256 128 UART SPI ADC 6x10 1x8 1x16 I AT90S4433 4,0—6,0 8 20 4К 256 128 UART SPI ADC 6x10 1x8 1x16 I AT90LS8515 2,7—6,0 4 32 8К 512 512 UART SPI - 2x8 1x16 1 AT90S8515 4,0—6,0 8 32 8К 512 512 UART SPI - 2x8 1x16 I AT90LS8535 2,7—6,0 4 32 8К 512 512 UART SPI ADC 8x10 2x8 1x16 I AT90S8535 4,0—6,0 8 32 8К 512 512 UART SPI ADC 8x10 2x8 1x16 I AT90S8534 1,8—6,0 4 32 8К 256 512 UART SPI ADC 6x10 2x8 1x16 I 394 Гпава 7
Таблица 7.6. Микроконтроллеры A VR семейства Mega Тип Технические характеристики Напряжение питания, В Тактовая частота, МГц I/O Flash EEPROM SRAM Интерфейсы Аналоговые входы Таймеры ISP 1 2 3 4 5 6 7 8 9 10 11 AT-mega8L 2,7—5,5 8 23 8К 512 1К UART SPI ADC 8x10 2x8 1x16 s AT-mega8 4,5—5,5 16 23 8К 512 1К UART SPI ADC 8x10 2x8 1x16 s AT-megal6L 2,7—5,5 8 32 I6K 512 IK UART SPI ADC 8x10 2x8 1x16 s AT-megal6 4,5—5,5 16 32 16К 512 1К UART SPI ADC 8x10 2x8 1x16 s AT-mega32L 2,7—5,5 8 32 32К 1К 2К UART SPI ADC 8x10 2x8 1x16 s AT-mega32 4,5—5,5 16 32 32К 1К 2К UART SPI ADC 8x10 2x8 1x16 s AT-mega64L 2,7—5,5 8 53 64К 2К 4К 2xUART SPI ADC 8x10 2x8 2x16 s AT-mega64 4,5—5,5 16 53 64К 2К 4К 2xUART SPI ADC 8x10 2x8 2x16 s AT-megalO3 4,0—5,5 6 48 128К 4К 4К UART SPI ADC 8x10 2x8 2x16 I AT- mega!28L 2,7—5,5 8 53 128К 4К 4К 2xUART SPI ADC 8x10 2x8 2x16 s AT-megal28 4,5—5,5 16 53 128К 4К 4К 2xUART SPI ADC 8x10 2x8 2x16 s Однокристальные микроконтроллеры с RISC-архитектурой_395
Таблица 7.6 (окончание) 1 2 3 4 5 6 7 8 9 10 11 АТ- megal6IL 2,7—5,5 4 35 I6K . 512 IK 2xUART SPI - 2x8 1x16 S AT-mega 161 4,0—5,5 8 35 16K 512 IK 2xUART SPI - 2x8 1x16 S АТ- megal62L 2,7—5,5 8 35 16K 512 IK 2xUART • SPI - 2x8 1x16 s AT-megal62 4,5—5,5 16 35 16K 512 IK 2xUART SPI - 2x8 1x16 s АТ- megal63L 2,7—5,5 4 32 16K 512 IK UART SPI ADC 8x10 2x8 1x16 s AT-mega 163 4,0—5,5 8 32 16K 512 IK UART SPI ADC 8x10 2x8 1x16 s AT-megal69 2,7—3,6 4 53 4x25 LCD 16K 512 IK UART SPI ADC 8x10 2x8 1x16 s AT- mega!69V 1,8—3,6 1 53 4x25 LCD 16K 512 IK UART SPI ADC 8x10 2x8 1x16 s AT-mega 8515L 2,7—5,5 8 35 8K 512 512 UART SPI - 1x8 1x16 s AT-mega 8515 4,5—5,5 16 35 8K 512 512 UART SPI - 1x8 1x16 s AT-mega 8535L 2,7—5,5 8 32 8K 512 512 UART SPI ADC 8x10 1x8 1x16 s AT-mega 8535 4,5—5,5 16 32 8K 512 512 UART SPI ADC 8x10 1x8 1x16 s 396 Гпава 7
Однокристальные микроконтроллеры с RISC-архитектурой 397 Широкая номенклатура МК AVR дает пользователю возможность оптими- зировать соотношение "производительность/энергопотребление/цена". Высокая производительность обеспечивается: □ выполнением команд за один тактовый цикл; □ конвейером команд, который обеспечивает одновременно с выполнени- ем текущей команды выборку следующей; □ мощной системой команд единого 16-разрядного формата; □ встроенными аппаратными устройствами. Низкое энергопотребление обеспечивается: □ КМОП -технологией; □ полностью статической работой — от пошагового режима до работы при максимальной тактовой частоте. Небольшая стоимость, как на уровне стоимости аппаратной части, так и на уровне разработки и отладки прикладных программ, обеспечивается: □ Flash-памятью программ, которая программируется без извлечения МК из платы; □ возможностью выбора микроконтроллера с достаточным и необходи- мым количеством функций и встроенной периферией. В настоящий момент соотношения "производительность — энергопотреб- ление — цена" для AVR является одним из лучших на мировом рынке 8- разрядных микроконтроллеров. Контрольные вопросы и задания 1. Назовите области применения МК семейств: a) Tiny, б) Classic и в) Mega. 2. Какие структурные особенности архитектур семейств: a) Tiny, б) Classic и в) Mega? 3. За счет чего достигается высокая производительность AVR-микроконт- роллеров? Сравните ее с производительностью: a) CISC ОМК, б) PIC- контроллеров. 4. Какая минимальная частота работы AVR-микроконтроллеров? 5. За счет чего достигается низкое энергопотребление AVR-микроконт- роллеров? 6. Какие факторы оказывают содействие уменьшению стоимости AVR- микроконтроллеров?
Таблица 8.1. Цифровые сигнальные процессоры фирмы Analog Devices Тип Тактовая частота, МГц Время цикла, нс Продук- тивность, MIPS Внутренняя память данных Внутренняя память программ Внешняя память программ/ данных Ю линии Последо- вательный порт Таймеры ПДП RAM ROM 1 2 3 4 5 6 7 8 9 10 11 13 ADSP- 2101 20 97,6 10,24 1Кх16 2Кх24 16Кх16 16Кх24 2 2 1 0 ADSP- 2103 10,24 1Кх16 2Кх24 16Кх16 16Кх24 2 2 1 0 ADSP- 2104 10,24 50 20 512x16 1Кх24 16Кх16 16Кх24 2 1 1 0 ADSP- 2104L 13,824 72,3 13,824 512x16 1Кх24 16Кх16 16Кх24 2 1 1 0 ADSP- 2105 10,24 100 20 256x16 512x24 16Кх16 16Кх24 2 1 1 0 ADSP- 2109 10,24 50 20 512x16 1Кх24 4Кх24 16Кх16 16Кх24 2 1 1 0 ADSP- 2109L 13,824 72,3 13,824 512x16 1Кх24 4Кх24 16Кх16 16Кх24 2 1 1 0 ADSP- 2111 20 50 20 1Кх16 2Кх24 16Кх16 16Кх24 5 2 1 0 ADSP- 2115 20 50 20 512x16 1Кх24 16Кх16 16Кх24 2 2 1 0 424 Гпава 8
Глава 8 Сигнальные микропроцессоры Сигнальные процессоры относятся к классу специализированных МП (см. разд. 1.1). Они разработаны для решения задач цифровой обработки сиг- налов, примерами которой являются: □ фильтрация сигнала; □ свертка двух сигналов; □ вычисление значений корреляционной функции двух сигналов; □ вычисления автокорелляционной функции; □ прямое/обратное преобразование Фурье и т. п. Задачи цифровой обработки решаются в аппаратуре связи и передачи дан- ных, средствах гидро- и радиолокации, медицинском оборудовании и робо- тотехнике, управлении двигателями, в автомобильной электронике, телеви- дении, измерительной технике и т. п. Отличительной особенностью задач цифровой обработки сигналов является потоковый характер обработки больших объемов данных в реальном ре- жиме времени. Работа в реальном времени требует повышенного быстро- действия МП, а обработка больших массивов данных — аппаратных средств интенсивного обмена с внешними устройствами. Высокое быстродействие сигнальных МП достигается благодаря: □ применению модифицированной RISC-архитектуры; □ проблемно-ориентированной системе команд, например, включению в систему команд таких операций, как умножение с накоплением МАС (С:= а * в + с) с указанным в команде числом выполнений в цикле и с правилом изменения индексов элементов массивов а и в; □ методам сокращения продолжительности командного цикла, таким как конвейеризация команд; □ размещению операндов большинства команд в регистрах;
400 Гпава 8 □ использованию теневых регистров для сохранения состояния вычислений при переключении задач; □ наличию аппаратного умножения, позволяющего выполнять умножение двух чисел за один командный такт. □ аппаратной поддержке программных циклов. Сигнальные процессоры разных компаний-производителей образуют два класса процессоров: более простые и дешевые микропроцессоры обработки данных в формате с фиксированной запятой и более дорогие микропроцес- соры, которые аппаратно поддерживают операции над данными в формате с плавающей запятой. 8.1. Сигнальные процессоры обработки данных в формате с фиксированной запятой Первый сигнальный процессор TMS320C10, разработанный фирмой Texas Instruments в 1982 г., обрабатывал числа с фиксированной запятой. Структура типичного представителя семейства с фиксированной запятой микропроцессора TMS320XC5x приведена на рис. 8.1. Процессор выполнен по Гарвардской архитектуре, которая основана на распределении шин доступа ко встроенной памяти программ и данных. Это позволяет осуществить выборку команды и данных в одном машинном цикле и обеспечивает выполнение большинства команд за один цикл. Сигнальный процессор TMS320XC5x состоит из центрального процессорного устройства (CPU); встроенной памяти программ и данных', многофункцио- нальных периферийных устройств, которые в большинстве случаев позво- ляют избавиться от дополнительной внешней аппаратуры. Процессор содержит шины PDATA — шина данных памяти программ; PADDR — шина адреса памяти программ; DDATA — шина данных памяти данных; DADDR — шина адреса памяти данных — для независимого до- ступа к памяти программ и данных. Центральное процессорное устройство CPU содержит: □ 32-разрядное арифметико-логическое устройство ALU, которое выпол- няет большинство команд за один цикл, и аккумулятор (АСС), разделен- ный на два сегмента по 16 разрядов (АССН и ACCL); □ аккумуляторный буфер АССВ; □ арифметическое устройство вспомогательных регистров ARAU;
Сигнальные микропроцессоры 401 M SARAM PROGRAM/DATA 9Кх16 ROM 9Кх16 DATA 544 х 16 “DATA | PROGRAM 512x16 Test-Emulation IEEE-1149.1 PADR BUS PADR BUS PADR BUS CPU TREG \ MUX / 16x16 '32 ♦ \ MUX / PREG SFL(0-14) 16 | Т/С \CLK-PLL I 8SP TDM 32 | SPL(0-16)\ .'32 ’16 '32 SLACK(16) \ MUX / \ ALU(32) / 32 \ MUX j HPI IM PM | SP I w | 16 '16 | РС (16) I ARO R7 (16) INDR (16) I | SPLfO-76}| L | SR (0-7) | V м DATA BUS Рис. 8.1. Архитектура цифровых сигнальных процессоров TMS320XC5x □ □ □ регистровый файл ARO—AR7 и регистр INDR; независимый логический блок PLU; аппаратный умножитель 16x16;
402 Глава 8 □ регистры сдвига: масштабирующий регистр сдвига SPL, который осуще- ствляет сдвиг влево на число разрядов от 0 до 16, предназначенный для выравнивания и преобразования данных, выбранных из памяти, регистр сдвига SFL на выходе умножителя; регистр сдвига SR; □ стек STACK; □ указатель команд PC; □ мультиплексоры MUX. Приведем детальную характеристику элементов ЦПУ. □ Арифметико-логическое устройство ALU. На первый вход ALU посту- пают данные одного из следующих устройств: • масштабирующего регистра сдвига SPL; • регистра сдвига SFL на выходе регистра умножителя PREG; • аккумуляторного буфера АССВ. На второй вход ALU данные всегда поступают из аккумулятора АСС, а результат выполнения операций также поступает в АСС. Регистр сдвига SR, соединенный с выходом АСС, осуществляет сдвиг влево на число разрядов от 0 до 7. Сдвиг выполняется в цикле пересылки данных из ALU на внутреннюю шину данных. □ Аппаратный умножитель 16x16 выполняет операции над числами со знаком и без знака. Операнды поступают из памяти данных. Один из операндов может быть константой, представленной непосредственно в команде. 16-разрядный регистр TREG используется для временного хра- нения одного из операндов. В 32-разрядный регистр PREG загружается результат умножения. □ Регистровый файл, состоящий из восьми вспомогательных регистров (AR0—AR7) и индексного регистра (INDR), используется для формиро- вания адреса при косвенной адресации. При необходимости AR0—AR7 могут использоваться для временного хранения данных. Для адресации к вспомогательным регистрам служит указатель вспомогательных регист- ров (ARP). Данные в регистры AR0—AR7 загружаются операндами из памяти данных, аккумулятора АСС, или непосредственно представлен- ными в команде. Содержимое AR0—AR7 может быть сохранено в памя- ти или использовано для вычислений в ALU. □ Арифметическое устройство ARAU вместе с регистрами AR0—AR7 и INDR предназначено для генерации адреса. Обычно AR0—AR7 ис- пользуется для хранения адреса, a INDR содержит смещение. Простые арифметические операции (сложение, вычитание; инкрементация, дек- рементация), выполняемые в ARAU с содержимым AR0—AR7 и INDR, позволяют реализовать несколько видов косвенной адресации. Опера-
Сигнальные микропроцессоры 403 ции в ARAU выполняются одновременно с обращением к текущей ячейке памяти. Блок ARAU освобождает ALU от работы по вычисле- нию адресов. □ Логический блок PLU выполняет операции независимо от ALU. Резуль- тат операций в PLU не влияет на биты состояния ALU. Первый операнд поступает в PLU из памяти данных, второй — из памяти программ или регистра манипуляции битами (DBMR). Специальные логические ко- манды, выполняемые только PLU, позволяют в 16-разрядном слове уста- навливать или сбрасывать любое количество бит в произвольной комби- нации. Результат операций в PLU сохраняется в той же ячейке памяти, откуда был выбран первый операнд. Таким образом, логические опера- ции можно выполнять непосредственно с содержимым любой ячейки па- мяти данных, в том числе и с содержимым первых 16 разрядов портов ввода/вывода, которые могут адресоваться как память данных (адреса 50Н—5FH). Помять. МП TMS320XC5x предусматривает раздельную адресацию к памя- ти программ, данных и портам ввода/вывода. Размер каждой области памя- ти 64К 16-разрядных слов. Встроенная в кристалл память — ROM, SARAM, DARAM — находится в общем адресном пространстве памяти и может ис- пользоваться как память программ или данных. □ Память программ ROM — масочно-программируемая память с возмож- ностью защиты от внешнего доступа. В МП TMS320XC5x предусмотре- ны два режима работы: микропроцессорный и микрокомпьютерный. В микрокомпьютерном режиме ROM доступна, в микропроцессорном — закрыта для доступа. Выбор режима определяется уровнем напряжения на входе МР/МС во время сброса МП. После старта режим можно изме- нить программно. Для изменения режима работы в регистре состояния процессорного режима (PMST) предусмотрен бит управления (МР/МС). □ Память данных или программ/данных SARAM (single access RAM) преду- сматривает выполнение одной операции чтения/записи в полном машин- ном цикле. SARAM состоит из независимых блоков по 2К или по 1К слов. Каждый блок допускает одну операцию чтения/записи в машинном цикле. Поэтому в одном машинном цикле CPU может дважды обратить- ся в SARAM, но только в том случае, если обращение происходит к раз- ным блокам. Эту особенность SARAM необходимо учитывать при рас- пределении памяти и написании программ. Другая особенность SARAM состоит в том, что процессор или другое внешнее устройство могут об- ращаться непосредственно к SARAM в режиме прямого доступа к памя- ти (DMA). Для инициализации доступа к SARAM процессор сначала спрашивает доступ к внешней памяти — устанавливает сигнал HOLD. После получения сигнала подтверждения (HOLDA) процессор может за- просить доступ к SARAM, устанавливая сигнал BR. В этом случае CPU
404 Гпава 8 останавливает все текущие операции и подтверждает возможность дос- тупа к SARAM, устанавливая сигнал IAQ. Память SARAM можно ис- пользовать для хранения только данных, только кодов программы или для общего размещения программ и данных. Конфигурация SARAM из- меняется программно, с помощью двух битов конфигурации — OVLY и RAM, которые находятся в регистре PMST. Возможность реконфигура- ции SARAM в процессе выполнения программы позволяет оперативно изменять распределение памяти МП TMS320XC5x. □ Память данных DARAM (dual access RAM) предусматривает выполнение одной операции чтения и одной операции записи в полном машинном цикле без конфликтов на внутренней шине данных. DARAM состоит из блоков В, Bl, В2. Блоки В1 (32 слова) и В2 (512 слов) используются толь- ко как память данных. Блок В (512 слов) можно использовать как память данных или как память программ. Конфигурация блока В изменяется программно — с помощью бита конфигурации (CNF) в регистре состоя- ния (ST1). Назначение блока В можно изменять в процессе выполнения программы. Предусмотрена возможность загрузки блока В программ- ным кодом из внешней памяти с последующим выполнением программы. Периферийные устройства сигнального процессора следующие. □ Модуль прерывания IM (Interrupt module). Он предназначен для обслужи- вания внешних, внутренних и программных прерываний. К внешним прерываниям относятся два немаскируемых прерывания RS, NM1 и пять маскируемых INTO—INT4. Внутренние прерывания (RINT, XINT, TRNT, TXNT) генерируются последовательными портами или таймером (TINT). Программные прерывания вызываются командами TRAP, INTR, NMI. Прерывания устанавливают флаг прерываний в регистре флагов преры- ваний (IFR) и могут маскироваться в регистре прерываний (IMR). Векторы прерываний занимают два 16-разрядных слова, необходимых для размещения команд ветвления. После сброса МП векторы прерыва- ний размещаются в памяти программ, начиная с нулевого адреса. При обращении CPU к векторам прерываний старшие пять разрядов адреса формируются указателем векторов прерываний (IRTR) в регистре PMST. Встроенный механизм защиты многоцикловых команд обеспечивает включение механизма обслуживания прерываний после завершения их выполнения. Действие механизма защиты распространяется также на команды, которые становятся многоцикловыми вследствие их повторе- ния при использовании с командой RPT и на команды, которые ожида- ют завершения обмена с внешней памятью или портами ввода/вывода. □ Блок управления энергопотреблением PM (Power management). В МП TMS320XC5x предусмотрено три энергосберегающих режима работы (в
Сигнальные микропроцессоры 405 том числе и "спящий" режим), в которых снижение тока потребления достигается отключением CPU или периферийных устройств. Переход в энергосберегающие режимы инициируется активным сигналом HOLD (режим захвата внешней шины) или командами IDLE, IDLE2. Выход из энергосберегающих режимов осуществляется по сигналам внешних пре- рываний, которые должны быть установлены, по крайней мере, на про- тяжении пяти машинных тактов или по внутренним прерываниям. В энергосберегающих режимах сохраняется состояние всех внутренних регистров, что позволяет без задержки продолжить работу после выхода из этих режимов. В режиме захвата внешней шины (HOLD = 0) продолжают работать только внутренние ресурсы МП TMS320XC5x. Снижение тока потребления проис- ходит за счет перевода внешних шин в высокоимпедансное состояние. Команда IDLE2 вызывает останов CPU и периферийных устройств ("спящий" режим), что значительно снижает ток потребления. □ Встроенный генератор CLK-PLL вырабатывает тактовые синхросигналы для работы CPU и периферийных устройств. Предусмотрена возмож- ность подключения внешнего кварцевого генератора или резонатора внешнего тактового генератора. Допускается режим работы с умножени- ем или с делением частоты источника тактового сигнала. □ Таймер/счетчик Т/С представляет собой 16-разрядный вычитающий счетчик. При достижении нулевого значения генерируется прерывание TINT и формируется импульс на выходе TOUT. Продолжительность им- пульса равняется периоду сигнала CLKOUT1. Таймер управляется про- граммно и может быть остановлен, перезапущен, сброшен или запрещен. □ Интерфейс ТЕ (Test-Emulation) обеспечивает возможность тестирования микросхем и подключения эмулятора типа XDS510. Связь с эмулятором осуществляется по стандартному последовательному интерфейсу IEEE 1149.1 (JTAG). □ Генератор тактов ожидания S/W (Waitstate Generator) предназначен для генерации и добавления в циклы обмена тактов ожидания для увеличе- ния времени циклов обмена с медленной внешней памятью или портами ввода/вывода. Использование генератора позволяет обойтись без допол- нительной внешней аппаратуры, которая формирует сигнал готовности READY. Генератор управляется программно. Количество тактов ожи- дания программируется в отдельности для памяти программ, данных, портов ввода/вывода и областей адресного пространства. Для управле- ния генератором предусмотрено два регистра управления. Количество тактов ожидания может быть 0, 1,2, 3, 7.
406 Гпава 8 □ Последовательный порт SP (Serial port) — стандартный последователь- ный порт, который позволяет по шести линиям организовать полнодуп- лексную связь между двумя МП TMS320XC5x. Для передачи данных в одном направлении используются три линии, по которым передаются: тактовая частота, синхроимпульсы и данные синхронно с тактовой час- тотой. Тактовая частота и синхроимпульсы формируются МП TMS320XC5x, но при необходимости тактовая частота и синхроимпуль- сы могут формироваться и внешними устройствами. Возможны два ре- жима передачи данных: пакетный, в котором синхроимпульс формирует- ся в начале каждого переданного слова; непрерывный, в котором синхроимпульс формируется только в начале передачи. Входные и вы- ходные регистры сдвигов буферизованы. Обмен по стандартному после- довательному порту происходит под управлением CPU. Допускаются 8- или 16-разрядный форматы передачи. Максимальная скорость передачи данных зависит от тактовой частоты МП TMS320XC5x. При цикле 50 нс максимальная скорость передачи данных составляет 5 Мбит/с. □ Последовательный порт с временным разделением каналов TDM (Time Division Mode) — используется для обмена данными между МП TMS320XC5x в мультипроцессорных системах. TDM-порт работает в двух режимах, которые переключаются программно. Первый — режим стандартного последовательного порта — был рассмотрен выше. Вто- рой — режим временного разделения каналов. В этом режиме для син- хронизации передачи данных между процессорами МП TMS320XC5x каждые 128 тактов TCLK передается синхроимпульс (TFRM). По линии данных (TDAT) передаются 16-разрядные данные, по линии адреса (TADD) передается адрес. Управление работой и контроль за состоянием TDM-порта осуществляются с помощью шести регистров. □ Буферизированный последовательный порт BSP (Buffering Serial Port) со- стоит из интерфейса последовательного порта (SPI), который является усовершенствованной версией стандартного последовательного порта и блока автобуферизации (ABU). ABU дает возможность выполнять обмен данными непосредственно со встроенной памятью МП TMS320XC5x че- рез специально выделенную шину независимо от CPU. Для буфера обме- на данными используются выделенные 2К встроенной памяти МП TMS320XC5x. Для адресации к памяти ABU имеет собственный адрес- ный регистр. Размер и начальный адрес буфера программируются. До- пускается 8-, 10-, 12-, 16-разрядный или формат передачи в пакетном или непрерывном режиме. □ 8-разрядный параллельный порт хост-интерфейса HPI (Host Parallel Inter- face) — для обмена данными в мультипроцессорном режиме между host-
Сигнальные микропроцессоры 407 процессором и МП TMS320XC5x. Хост-интерфейс HPI обеспечивает возможность простой интеграции процессора в мультипроцессорную систему. Обмен данными осуществляется через встроенную буферную память размером 2К слов по специальной внутренней шине, которая по- зволяет обмениваться с памятью без конфликтов с CPU. Буферная па- мять — SARAM-память. Для управления HPI предусмотрен регистр управления-контроля (HPIC), который доступен host-процессору и CPU. Для адресации буферной памяти со стороны host-процессора служит ад- ресный регистр (HPIA). HPI допускает два режима работы. Первый — режим SAM, в котором host-процессору и CPU разрешен доступ к памя- ти, причем host-процессор имеет приоритет выше, чем CPU. Второй — режим НОМ, в котором только host-процессор имеет доступ к памяти. Для передачи через HPI одного байта данных нужно пять машинных тактов. При тактовой частоте 40 МГц максимальная скорость передачи составляет 64 Мбит/с. □ Блок начальной загрузки BL (Boot Loader) — выполняет пересылку про- граммного кода из внешних источников во встроенную RAM программ. Инициализация программы начальной загрузки происходит после вклю- чения питания только в микрокомпьютерном режиме. Предусмотрено семь видов загрузки, которые отличаются способом и форматом переда- чи данных: через последовательный порт в 8- или 16-разрядном формате; через порты ввода/вывода в 8- или 16-разрядном формате; из внешней памяти в 8- или 16-разрядном формате; "горячая загрузка". Вид загрузки определяется содержимым младших 8 разрядов ячейки глобальной памя- ти с адресом FFFFH, к которому МП TMS320XC5x обращается после включения питания. Перед пересылкой программного кода передается заголовок, который содержит адреса начала размещения программного кода и длину блока, который пересылается. После завершения пересылки в RAM-программ МП TMS320XC5x стартует из адреса, который был указан в заголовке В МП TMS320XC5x доступ к внешней памяти и портам ввода/вывода осуще- ствляется по шине адреса АО—А15 и по шине данных D0—D15 с помощью управляющих сигналов PS, DS, IS (для выбора, соответственно, памяти программ, данных и портов ввода/вывода), строба STRB, сигнала направле- ния передачи в текущем цикле R/W, сигнала чтения RD и сигнала записи WE. Максимальная производительность обеспечивается при обмене с высоко- скоростной внешней памятью, которая позволяет работать без тактов ожи- дания. Возможно подключение медленной и более дешевой памяти. В этом случае в циклы чтения/записи МП TMS320XC5x необходимо добавлять такты ожидания, которые генерируются встроенным генератором тактов ожидания, или формировать внешний сигнал READY — готовности внеш-
408 Гпава 8 ней памяти или портов ввода/вывода к обмену. При организации обмена с внешней памятью необходимо также учитывать, что циклы чтения имеют продолжительность одного машинного такта, в то время как продолжи- тельность циклов записи составляет два машинных такта или, если запись происходит непосредственно после чтения, то даже три такта. В верхних адресах памяти данных может размещаться внешняя глобальная память данных объемом от 256 до 32К слов. Адреса с ООН до 5FH памяти данных отведены под внутренние регистры. Первые 16 портов ввода/вывода распо- ложены в памяти данных. Поэтому обращение к данным портам возможно не только с помощью команд IN и OUT, но и с помощью обычных команд обращения к памяти (длиной 1 слово), которые позволяют уменьшить длину программного кода и увеличить скорость вычислений. Контрольные вопросы и задания 1. Назовите области использования сигнальных процессоров. 2. Приведите примеры задач цифровой обработки сигналов. 3. Какими факторами определяется быстродействие сигнальных процес- соров? 4. Какие существуют классы сигнальных процессоров? 5. Назовите основные блоки структурной схемы сигнального процессора обработки данных с фиксированной запятой. 6. В чем состоит модификация Гарвардской архитектуры в сигнальном процессоре TMS320XC5x? 7. Какое назначение имеет дополнительное арифметическое устройство ARAU? 8. Какие функции выполняет логический блок PLU ? 9. В чем состоит отличие памяти SARAM от DARAM? Какой тип памяти более быстродействующий? 10. Укажите периферийные устройства сигнального процессора. 11. Назовите источники прерываний сигнального процессора. 12. В каких энергосберегающих режимах может работать сигнальный про- цессор? 13. Какое назначение имеет генератор тактов ожидания S/W ? 14. Какие функции выполняет блок начальной загрузки BOOT LOADER?
Сигнальные микропроцессоры 409 8.2. Сигнальные процессоры обработки данных в формате с плавающей запятой Использование в сигнальной обработке данных в формате с плавающей за- пятой обусловлено рядом задач, которые требуют высокой точности пред- ставления данных в широком динамическом диапазоне. Примерами таких задач являются интегральные преобразования, алгоритмы компрессии, де- компрессии, адаптивной фильтрации. Работа с данными в формате с пла- вающей запятой упрощает и ускоряет обработку, повышает надежность программы, поскольку не требует выполнения операций округления и нор- мализации данных, отслеживания ситуаций потери значимости и перепол- нения. Но аппаратные и стоимостные затраты таких МП значительно больше, чем процессоров обработки данных в формате с фиксированной запятой. Первым представителем класса процессоров с плавающей запятой стал МП TMS320C30, структурная схема которого приведен на рис. 8.2. Процессор имеет 32-разрядную шину команд и данных и 24-разрядную ши- ну адреса, содержит 2 блока ОЗУ по 1К 32-разрядных слов, 32-разрядный блок умножения с плавающей запятой, кэш-память команд объемом 64 32- разрядных слова, 8 регистров для операций с повышенной точностью, два генератора адресов и регистровый файл. МП реализует разнообразные ме- тоды адресации. 40-разрядное АЛУ процессора работает как с целыми чис- лами, так и с числами в формате с плавающей запятой. Встроенный кон- троллер ПДП позволяет совмещать во времени вычисления и обмен данными с памятью. Наличие в TMS320C30 мультипроцессорного интер- фейса, двух внешних интерфейсных портов, двух последовательных портов, расширенной системы прерываний упрощает конструирование систем на его основе. Все операции в процессоре выполняются за один такт. Процессор может параллельно выполнять в одном такте операцию умножения и арифметико- логическую операцию с числами в формате с фиксированной или плаваю- щей запятой. Процессор имеет гибкую систему команд и поддержку языка высокого уровня — С. Процессор содержит несколько шин: □ PDATA — шина данных памяти программ; □ PADDR — шина адреса памяти программ; □ DDATA — шина данных памяти данных; □ DADDR1 — шина адреса памяти данных BlockO;
410 Гпава 8 CAS HE (64 x 32) ROM Block (4K x 32) RAM Block 0 (1K x 32) RAM Block 0 (1K x 32) 32 24 24' 24 jo/VM Controller j KEG1 Extended Precision Registers CPU1 lDISPO,IRO.IRl\ PAD DR Bus DP ATA Bus DADDR1 Bus DADDR2 Bus 'МАРАТА Bus DMAADDR Bui REG2 Shifter ALU \Multiplier 1 24/ ~ 32/ 32, ' ’ 32 z 32/ Auxiliary Registers (R7-R0) 4 Other Reg- ^32z ister(12) z Рис. 8.2. Архитектура цифровых сигнальных процессоров TMS320C3x
Сигнальные микропроцессоры 411 □ DADDR2— шина адреса памяти данных Block 1; □ DMADATA — шина данных памяти в режиме ПДП; □ DMA-ADDR — шина адреса памяти в режиме ПДП для независимого доступа к встроенной памяти программ и данных. 32- разрядные шины данных и 24-разрядные шины адреса обеспечивают воз- можность независимого выбора операндов из разных источников. □ Центральное процессорное устройство CPU содержит внутренние шины данных CPU1 и CPU2 и регистровые шины REG1 и REG2. Шины CPU1 и CPU2 дают возможность процессору передавать два операнда из памя- ти данных и регистрового файла за один машинный цикл. Регистровые шины REG1 и REG2 могут за один машинный цикл передавать два слова данных из регистрового файла в умножитель и арифметико-логическое устройство ALU. Таким образом, четыре независимых внутренних шины CPU обеспечивают возможность параллельного выполнения команд в ALU и умножителе в одном цикле. Умножитель и ALU, оперирующее над целыми числами в формате с плавающей запятой, обеспечивают вы- сокую производительность и точность вычислений. В состав CPU входят также 32-разрядный регистр сдвига BS (Barrel Shifter), регистровый файл (28 регистров), два арифметических устройства вспо- могательных регистров ARAU0 и ARAU1, что совместно с 8 вспомога- тельными регистрами AR0—AR7 обеспечивает гибкие режимы косвен- ной адресации. Кроме перечисленных устройств CPU содержит также конвейер, механизм контроля прерываний, счетчик прерываний, счетчик повторений, механизм условных переходов. • Арифметико-логическое устройство ALU выполняет за один цикл арифметические операции с 32-разрядными целыми числами и 40- разрядными числами в формате с плавающей запятой, а также логиче- ские операции с 32-разрядными операндами. 32-разрядный кольцевой регистр сдвига BS позволяет за один цикл выполнять сдвиг вправо или влево на 1—32 разрядов. • Умножитель выполняет умножение 24-разрядных целых чисел или 32- разрядных чисел в формате с плавающей запятой. В первом случае ре- зультатом является 32-разрядное число. Во втором — 40-разрядное число, представленное в формате с плавающей запятой. • Регистровый файл CPU состоит из 28 регистров. Часть регистров дос- тупна умножителю и ALU и может использоваться как регистры об- щего назначения. Восемь 40-разрядных регистров расширенной точ- ности R0—R7 поддерживают операции с целыми числами и числами в формате с плавающей запятой. Восемь 32-разрядных вспомогатель- ных регистров AR0—AR7 доступны ALU и устройствам ARAU. Ре-
412 Глава 8 гистры ARO—AR7 можно использовать для организации циклических счетчиков. Два 32-разрядных индексных регистра IRO, IR1 использу- ются устройствами ARAU для индексации адреса. Кроме перечислен- ных регистров в регистровый файл входят: указатель системного стека SP, регистр состояния ST, регистр флагов прерываний IF, регистр IE масок прерываний, регистры адреса начала повторений RS и адреса конца повторений RE и другие, предназначенные для управления процессом вычисления. Два арифметических устройства ARA U0 и ARA U1 могут на протяжении одного цикла генерировать два адреса на шинах DADDR1 и DADDR2. ARAU поддерживают адресацию со смещением, косвенную (с помощью регистров IR0 и IR1) и циклическую. Выполнение операций в ARAU осуществляется параллельно с операциями в ALU и умножителе. Блок CPU поддерживает работу с тремя форматами представления чи- сел: целые числа со знаком и без знака, числа в формате с плавающей за- пятой. Целые числа могут быть представлены в коротком формате (диапазон представления чисел находится в границах -215 < п < 2|5-1) и формате одинарной точности (диапазон представления чисел находится в границах -231 < п < 231-1). Числа с плавающей запятой могут быть пред- ставлены в коротком формате, формате одинарной точности и расши- ренном формате. Для представления чисел с плавающей запятой в рас- ширенном формате нужно 40 разрядов, из которых 8 отводится для значения показателя степени, а 32 — для значения мантиссы. При рас- ширенном формате представления чисел максимальное положительное число равняется 3,4028236683x1038, а минимальное отрицательное число равняется -3,4028236691x1038. Операции над числами с плавающей запя- той обеспечивают точные вычисления и позволяют устранить проблемы переполнения и выравнивания операндов, которые возникают в цело- численной арифметике. Для преобразования форматов чисел (т. е. из це- лочисленного в формат с плавающей запятой, и наоборот), округления и нормализации предусмотрены специальные команды. Независимые шины доступа ко встроенной памяти, внутренние шины CPU, а также возможность одновременной генерации пары адресов по- зволяют реализовать гибкие режимы адресации, которые обеспечивают выборку данных из памяти команд или регистрового файла. В CPU ис- пользуются следующие типы адресации: регистровая, прямая, косвенная (27 видов), непосредственная, PC-относительная (PC, program counter). Перечисленные типы адресации используются в разных режимах адреса- ции — трехоперандном, параллельном, циклическом и реверсивном. • Команды с трехоперандным режимом адресации выполняют выборку двух операндов, операцию с выбранными операндами и запись ре- зультата операций в регистр. Все перечисленные действия выполня- ются в одном цикле.
Сигнальные микропроцессоры 413 • Команды параллельных операций выполняют: параллельную загрузку регистров, параллельные арифметико-логические операции и опера- ции загрузки результатов. Всего предусмотрено 28 подобных команд. Например, одна из них (MPYF3//ADDF3) позволяет умножить и сло- жить две пары чисел в формате с плавающей запятой, другая (MPYI3//SUBI3) - умножить и вычесть две пары целых чисел. • Циклическая адресация применяется при реализации многих алгорит- мов цифровой обработки сигналов (свертка, корреляция и др.). • Реверсивная адресация находит широкое применение при реализации алгоритмов быстрого преобразования Фурье. CPU имеет механизмы, которые позволяют управлять процессом выпол- нения программы. Это счетчик повторений, механизм переходов (стан- дартных и задержанных) и контроллер прерываний. • Счетчик повторений используется при выполнении команд с префик- сами: RPTB — повторения блока команд и RPTS — повторения од- ной команды, что позволяет упростить организацию циклов. Подоб- ные циклы находят применение при реализации многих алгоритмов цифровой обработки сигналов, в которых существуют повторные группы команд, которые занимают большую часть времени реализа- ции алгоритма. Использование повторений позволяет сократить вре- мя реализации подобных алгоритмов. • Контроллер прерываний обрабатывает внешние, внутренние и про- граммные прерывания. К внешним прерываниям относятся прерыва- ния сброса RESET и прерывания, которые поступают на выводы БИС INTO—INT3. Внутренние прерывания формируются последователь- ными портами XINTO, RINTO, XINT1, RINT, таймерами TINTO и TINT1 и контроллером прямого доступа памяти DMA DINT. Про- граммные прерывания вызываются командой trap. Векторы преры- ваний занимают адреса с ООН до 3FH. Прерывания могут обслужи- ваться как CPU, так и контроллером DMA. Контроллер DMA использует прерывания для синхронизации операций пересылки дан- ных. Прерывания устанавливают флаг прерывания в регистре флагов прерываний IF и могут маскироваться в регистре IE маскирования прерываний. Блок CPU TMS320C31 предусматривает два режима работы с уменьшен- ным потреблением тока, которые задаются командами idle2 и lopower. Снижение тока потребления в первом случае достигается остановом CPU, а во втором — уменьшением в 16 раз тактовой частоты микропро- цессора. Выход из этих режимов осуществляется по сигналам внешних прерываний. Типичное значение тока потребления TMS320C31 с такто-
414 Гпава 8 вой частотой 50 МГц составляет приблизительно 250 мА. В режиме IDLE2 ток потребления снижается до 50 мА. □ Память. Общий объем памяти TMS320C31 составляет 16 Мх32 слов. В нем размещаются области памяти программ, данных и устройств вво- да/вывода. Команды, данные и таблицы могут храниться в любом месте общей памяти. • Встроенная память состоит из 4 К ROM (только для TMS320C30), 2 К RAM (2 блоки по 1К) и 64 слов кэш-памяти программ. В TMS320C31 и TMS320C32 вместо ROM встроен блок начальной загрузки (Boot Loader). TMS320C32 имеет всего 512 слов RAM-памяти (2 блока по 256 слов). ROM- и RAM-память поддерживают двойное обращение за один цикл. Независимые шины данных PDATA, DDATA, DMADATA позволяют в одном цикле осуществить выборку команд, чтение/запись данных и операцию прямого доступа к памяти DMA. МП TMS320C3x может работать в двух режимах: микропроцессор- ном и микрокомпьютерном. Режим работы определяется состоянием входа МС/МР. В микрокомпьютерном режиме ROM размещается по адресам 000Н—FFFH. По адресам с ООН до 3FH расположены векто- ры прерываний. В микропроцессорном режиме встроенная ROM мас- кируется и в указанных адресах размещается внешняя память. • Кэш-память программ предназначена для хранения часто повторяе- мых наборов команд, которая позволяет уменьшить количество об- ращений к внешней памяти и использовать медленную и более деше- вую внешнюю память. Внешние шины TMS320C3x освобождаются, таким образом, для операций DMA или ввода/вывода данных. Вы- борка команд из встроенной памяти (ROM или RAM) не модифици- рует кэш-память. Чтение/запись данных в кэш-памяти не выполняется. Предусмотрено четыре режима работы кэш-памяти, которые устанав- ливаются программно. • Внешняя память. Обмен с внешней памятью и устройствами ввода/ вывода осуществляется через основную и дополнительную шины. Основная шина включает шину данных D31—D0, шину адреса А23—АО и управляющие сигналы: строб обращения к памяти STRB, сигнал чте- ния/записи R/W, сигнал готовности RDY, сигнал захвата основной ши- ны HOLD и сигнал подтверждения захвата HOLDA. Дополнительная шина включает шину данных XD31—XD0, шину адреса ХА 12—ХАО и управляющие сигналы: строб обращения к памяти MSTRB, строб обращения к устройствам ввода/вывода IOSTRB, сигнал чтения/записи XR/W и сигнал готовности XRDY. Основная и дополнительная шины имеют соответствующие регистры управления.
Сигнальные микропроцессоры 415 Для того чтобы обеспечить максимальное быстродействие процессора, т. е. выполнение команд без тактов ожидания, любое устройство, кото- рое подключается к МП, должно иметь время выборки не более 25 нс (при тактовой частоте TMS320C3x — 33 МГц). При использовании мед- ленной и более дешевой памяти существенным образом увеличивается гибкость и снижается стоимость системы, но в цикле обращения к памя- ти или к устройствам ввода/вывода необходимо добавлять такты ожида- ния. TMS320C3x позволяет формировать такты ожидания как на основ- ной, так и на дополнительной шинах. При этом обе шины имеют независимую логику управления готовностью памяти или устройств вво- да/вывода. Такты ожидания могут формироваться внутренним генерато- ром тактов ожидания или внешним сигналом готовности. Внутренний генератор тактов ожидания может формировать от 0 до 7 тактов (управ- ляется программно), причем количество тактов одинаково для всех внешних циклов независимо от используемого адреса. Кроме этого, для формирования внутреннего сигнала готовности в TMS320C3x преду- смотрена возможность объединения сигнала от внутреннего генератора тактов ожидания и внешнего сигнала RDY по схеме логического И или логического ИЛИ, что позволяет более гибко использовать внешние ре- сурсы. Выбор режима формирования внутреннего сигнала готовности осуществляется программно. В TMS320C3x предусмотрен механизм программного переключения бан- ков памяти, существенным образом облегчающий разработку систем, в которых используется большой объем памяти. На время переключения банков сигнал STRB становится неактивным на один такт. При таком способе устраняется необходимость добавления тактов ожидания, сфор- мированных сигналом RDY при пересечении границ адресов банков па- мяти. Размер банка памяти устанавливается программно. Механизм пе- реключения банков памяти предусмотрен только для основной шины. Обмен по внешним шинам накладывает определенные ограничения по быстродействию, т. к. хотя продолжительность цикла чтения внешней памяти составляет один такт при отсутствии тактов ожидания, про- должительность цикла записи составляет два или даже три такта, если запись происходит непосредственно после чтения. Продолжительность циклов чтения/записи устройств ввода/вывода (активный сигнал IOSTRB) на дополнительной шине составляет два такта (при отсутст- вии тактов ожидания). □ Контроллер DMA выполняет пересылку данных внутри адресного про- странства памяти и устройств ввода/вывода без участия CPU, что дает возможность вести обмен с медленными устройствами памяти и устрой- ствами ввода/вывода (кодеки, последовательные порты, АЦП и др.), не уменьшая производительности CPU. Пересылка данных под управлени- ем контроллера DMA состоит из операций чтения и записи. Пересылка
416 Гпава 8 данных завершается только тогда, когда выполнены как операция чте- ние, так и операция запись. Пересылка данных может быть синхронизи- рована по "источнику", по "приемнику" или по "источнику и приемнику". Это означает, что отдельные операции {чтение, или запись, или обе вме- сте) не выполняются до тех пор, пока не возникнет соответствующее пре- рывание. Контроллер DMA и скоростные внешние шины (основная и дополнительная) являются мощным средством для построения высоко- скоростных систем обработки данных. Работа контроллера DMA управ- ляется четырьмя регистрами: общего управления, адреса источника, ад- реса приемника и регистром счетчика пересылок. 24-разрядные регистры адреса источника и приемника могут инкрементироваться или декремен- тироваться независимо друг от друга. 24-разрядный регистр пересылок, управляемый 24-разрядным счетчиком, используется для задания разме- ра пересылаемого блока. Кроме перечисленных регистров, в управлении контроллером DMA используется регистр IE маскирования прерываний. □ Таймер Т/С — 32-разрядный таймер/счетчик событий с внешним или внутренним тактированием. Таймер имеет внешний выход, который ис- пользуется как выход сигнала таймера или как вход тактовых импульсов. Таймер можно использовать для генерации сигналов, переданных внеш- ним устройствам (например, запуск АЦП), или для подсчета числа внеш- них импульсов с последующей генерацией прерываний CPU после до- стижения заданных показаний счетчика. Для управления работой тайме- ра предусмотрены регистры управления. 32-разрядный регистр счетчика содержит текущее значение счетчика. Содержание счетчика может ин- крементироваться по нарастающему или ниспадающему фронтам такто- вого сигнала. 32-разрядный регистр общего управления таймера служит для задания режимов работы таймера и управления. □ Последовательные порты SP (Serial Port) дают возможность организо- вать полнодуплексную связь между двумя МП TMS320C3x по шести ли- ниям. Последовательные порты полностью независимы и идентичны по управлению. Для передачи данных в одном направлении используются три линии, по которым передаются: тактовая частота, данные, синхро- импульсы. Допускаются 8-, 16-, 24- и 32-разрядные форматы передачи, причем передача данных может осуществляться как в фиксированном, так и в переменном формате. Возможны два режима передачи данных: непрерывный и пакетный. Тактовая частота и синхроимпульсы могут быть как внутренними, так и формироваться внешними устройствами. Входные и выходные сдвиговые регистры буферизованы. Обмен данны- ми через последовательный порт происходит под управлением CPU. □ Блок начальной загрузки (Boot Loader) выполняет пересылку программ- ного кода из внешней недорогой памяти (EPROM) или через последова- тельный порт по указанному адресу. Загрузка из внешней памяти может осуществляться в 8-, 16- или 32-разрядном формате. Загрузка через по-
Сигнальные микропроцессоры 417 следовательный порт выполняется в 32-разрядном формате в пакетном режиме. При загрузке через последовательный порт синхроимпульсы и тактовая частота формируются внешним устройством. Программа на- чальной загрузки инициализируется сигналами прерываний INT3—INTO только в микрокомпьютерном режиме. После старта проверяется со- стояние флагов прерываний в регистре IF и определяется вид загрузки. Каждому флагу прерываний (INT3, INT2, INTI, INTO) соответствует оп- ределенный вид загрузки. Блоку программного кода должен предшествовать заголовок, который содержит кроме кода формата передачи (при загрузке из внешней памя- ти) размер пересылаемого блока и начальный адрес размещения. После завершения пересылки программного кода начинается выполнение про- граммы по начальному адресу размещения блока. Другие БИС — представители семейства TMS320C3x отличаются, в основ- ном, количеством последовательных портов и каналов прямого доступа к памяти DMA. Основными областями применения микропроцессоров семейства TMS320C3x являются цифровое аудио, 3-D графика, видеоконференц-связь, промыш- ленные работы, копировально-множительная техника, телекоммуникаци- онные системы. Контрольные вопросы и задания 1. Назовите основные блоки структурной схемы сигнального процессора обработки данных с плавающей запятой. 2. Какие шины использует сигнальный процессор TMS320C3x для незави- симого доступа ко встроенной памяти программ и данных? 3. Какие форматы представления чисел имеются в сигнальном процессоре TMS320C3x? Каковы наибольшее и наименьшее числа, с которыми опе- рирует МП? 4. Какие преимущества имеет вычисление в формате с плавающей запятой перед вычислением чисел с фиксированной запятой? 5. Какое назначение имеют арифметические устройства ARAU0 и ARAU1? 6. Какие функции выполняет контроллер DMA? 7. Укажите периферийные устройства сигнального процессора TMS320C3x. 8. Назовите источники прерываний сигнального процессора TMS320C3x. 9. В каких энергосберегающих режимах может работать сигнальный про- цессор TMS320C3x?
418 Глава 8 10. Какие функции выполняет блок начальной загрузки BOOT LOADER? 11. Дайте характеристику режимам адресации сигнального процессора. 12. В каких областях техники используются сигнальные процессоры с пла- вающей запятой? 8.3. Технические характеристики сигнальных процессоров Сигнальные процессоры фирмы Texas Instruments. Следующими после рас- смотренных в разд. 8.1 и 8.2 семейств сигнальных процессоров фирмы Texas Instruments стали процессоры обработки данных с плавающей запятой TMS320C4x. Они совместимы по системе команд с МП TMS320C3x (см. разд. 8.2), однако имеют большую производительность и лучшие коммуни- кационные возможности. В семейство TMS320C4x входят процессоры TMS320C40, TMS320C44, TMS320LC40. Процессор TMS320C40 имеет производительность 30 MIPS/60 MFLOPS и мак- симальную пропускную способность подсистемы ввода/вывода 384 Мбайт/с. Он содержит на кристалле 6 высокоскоростных (20 Мбайт/с) коммуникаци- онных портов и 6 каналов DMA, 2К слов памяти, 128 слов программной кэш-памяти и блок начальной загрузки. Две внешних шины обеспечивают 4Г слов общего адресного пространства. Процессор TMS320C44 — более дешевый вариант предыдущего представи- теля семейства. Он содержит 4 коммуникационных порта и имеет общее адресное пространство 32 Мелов. Однако значения показателей производи- тельности и пропускной способности процессора те же, что и у предыдуще- го представителя семейства. Процессор TMS320LC40 — аналог TMS320C40, но отличается низким энер- гопотреблением, повышенной производительностью (40 MIPS/80 MFLOPS) и большей пропускной способностью (488 Гбайт/с). Дальнейшим развитием семейства цифровых процессоров обработки сигналов компании Texas Instruments является процессор принципиально новой архи- тектуры — TMS320C80, выпущенный в конце 1994 г. Процессор ориентиро- ван на применения, связанные с высокопроизводительной цифровой обра- боткой сигналов в самых широких областях науки и техники. Второе название процессора — MVP (Multimedia Video Processor) — характеризует его высокую эффективность в задачах обработки изображений, 2- и 3-мерной графике, в системах виртуальной реальности, компрессии и декомпрессии ви- део- и аудиоданных, обработки информации, в системах связи и др.
Сигнальные микропроцессоры 419 Процессор TMS320C80 объединяет в одной микросхеме пять полнофунк- циональных процессоров, четыре из которых — улучшенные цифровые процессоры обработки сигналов (Advanced Digital Signal Processor), архи- тектура которых ориентирована на реализацию алгоритмов цифровой об- работки сигналов. Каждый из ADSP позволяет выполнить за один команд- ный такт несколько RJSC-подобных операций. Пятый процессор, главный (Master Processor (МР)), представляет собой 32-разрядный RISC-процессор с высокопроизводительным вычислителем с плавающей точкой. Кроме того, в этом МП размещены: □ контроллер обмена (Transfer Controller (ТС)) — интеллектуальный кон- троллер ПДП, который поддерживает интерфейс с шинами DRAM и SRAM; □ видеоконтроллер (Video Controller (VC)); □ система контроля и отладки — порт JTAG (lEE 1149.1); □ 50 Кбайт SRAM. Производительность TMS320C80 достигает 2 млрд RISC-подобных команд в секунду. Пропускная способность шины достигает 2,4 Гбайт/с — в потоке данных и 1,8 Гбайт/с — в потоке команд. Процессор TMS320C80 имеет следующие технические характеристики: □ тактовая частота 40 или 50 МГц; □ 50 Кбайт встроенной SRAM; □ 64-разрядный контроллер обмена с динамическим конфигурированием шины на обмен 64-, 32-, 16- и 8-разрядными словами; □ режим ПДП к 64-разрядной памяти SRAM и DRAM; □ 4 внешние прерывания; □ встроенные средства внутрисхемной эмуляции; □ напряжение питания 3,3 В; □ около 4 000 000 транзисторов на кристалле; □ 0,5/0,6 КМОП-технология; □ 305-контактный корпус PGA. Новое семейство DSP-процессоров компании Texas Instruments TMS320C62x будет включать в себя процессоры как с фиксированной, так и с плавающей запятой. Первый представитель данного семейства — TMS320C6201 — опе- рирует с данными в формате с фиксированной запятой. Он построен по разработанной компанией Texas Instruments архитектуре VelociTI. Про- цессор TMS320C62xx — первый из сигнальных VLIW-процессоров, кото-
420 Глава 8 рый использует для повышения производительности параллелизм уровня команд. Традиционная VLIW-архитектура подразумевает наличие нескольких па- раллельно работающих функциональных устройств, которые выполняют за один такт несколько команд. Архитектура VelociTI позволяет обеспечить лучшую эффективность за счет уменьшения ограничений на порядок и спо- соб выполнения команд. Ядром TMS320C6201 является VelociTI VLIW — процессор с 8-ю функциональными модулями, включающий 2 умножителя и 6 АЛУ. Модули взаимодействуют через два регистровых файла, которые содержат по 16 32-разрядных регистров. ЦП может выполнять до 8 команд за один такт. В процессоре используется упаковка команд, сокращающая длину кода и время выборки команд. 256-разрядная шина памяти программ позволяет выбирать за один такт восемь 32-разрядных команд. Все команды включают условия их выполнения, что позволяет уменьшить затраты производитель- ности процессора на выполнение переходов и увеличить степень паралле- лизма обработки. Процессор может оперировать с 8/16/32-разрядными данными. Для прило- жений, требующих высокой точности вычислений, предусмотрена возмож- ность вычислений с 40-разрядными операндами. Для результатов всех основных арифметических операций выполняется округление и нормализа- ция. В процессоре реализованы операции над битовыми полями, такие как "выделить” (extract), ’’установить” (set), "очистить” (clear), "подсчет бит” (bit counting). Процесс обработки VLIW начинается с выборки из памяти команд 256- битового пакета. Команды связываются для общего выполнения в исполняе- мый пакет (до 8 команд) по значению младшего бита команды (LSB). Устройство выборки-декодирования-диспетчеризации команд может на- правлять к функциональным модулям до 8 32-разрядных команд за один такт по каждому из путей обработки (А и В). Процессор реагирует на 14 прерываний, которые соответствуют сиг- налу Reset, немаскированному прерыванию (NMI) и прерываниям с номе- рами 4—15. Внутрикристальная память разделена на память данных и память программ (по 64 Кбайт). Процессор TMS320C6201 имеет два 32-разрядных порта для обращения к памяти данных и один 256-разрядный порт для обращения к памяти программ. В процессоре используется расслоение памяти данных (четыре 16-разрядных банка) для повышения скорости выборки за счет од- новременного обращения к разным банкам памяти. Дополнительно процессоры семейства TMS320C62xx могут содержать на кристалле интерфейс внешней памяти (EMIF), контроллер ПДП (DMA),
Сигнальные микропроцессоры 421 интерфейс хост-порта (HPI), средства энергосбережения, расширенные бу- феризованные последовательные порты, 32-разрядные таймеры. В числе новых областей применения микропроцессоров семейства TMS320C62xx компания Texas Instruments называет: □ универсальную беспроводную связь; □ медицинскую диагностику; □ телефонию; □ персональные средства информационного обеспечения и защиты. В то же время возможно использование микропроцессоров TMS320C62x в уже существующих прикладных системах для увеличения их производи- тельности. К таким системам относятся: □ базовые станции мобильной связи; □ модемные пулы и серверы; □ кабельные модемы; □ многоканальные телефонные платформы, включая центральные офисные коммутаторы и системы языковой передачи сообщений; □ мультимедийные системы. Сигнальные процессоры фирмы Motorola. Сигнальные микропроцессоры компании Motorola подразделяются на семейства 16- и 24-разрядных мик- ропроцессоров с фиксированной запятой DSP (Digital Signal Processor, циф- ровой сигнальный процессор) — DSP560xx, 561хх, 563хх, 566хх, 568хх и микропроцессоры с плавающей запятой DSP960xx. 16-разрядные микропроцессоры с фиксированной запятой DSP56156 и DSP56166 ориентированы, прежде всего, на использование в системах об- работки языка и телекоммуникации. Процессоры семейства имеют следующие технические характеристики: □ производительность до 30 MIPS на частоте 60 МГц; □ однотактовый параллельный умножитель (16 х 16 разрядов) с накопле- нием (МАС); □ два 40-разрядных аккумулятора с байтом расширения; □ гибкая система адресации; □ аппаратная реализация вложенных циклов, включая бесконечные циклы; О три 16-битовых внутренних шины данных и три 16-битовых внутренних шины адреса;
422 Гпава 8 □ программируемое время доступа к внешней шине; □ интерфейс с отображением в память периферийных устройств; □ внутренний блок эмуляции и отладки (ОпСЕ); □ низкое потребление энергии и средства энергосбережения; □ 2К слов внутрикристальной памяти 24-разрядные микропроцессоры с фиксированной запятой DSP56000/DSP56001 ориентированы на максимизацию пропускной способности в приложениях DSP с интенсивным обменом данными. Микропроцессоры работают на частотах до 33 МГц и обеспечивают производительность около 16 MIPS, что позволяет выполнять быстрое преобразование Фурье по 1024 отсчетам за 3,23 мс. Различие между процессорами состоит в типе их внутренней па- мяти. С целью минимизации стоимости прикладных систем микропроцес- сор DSP56000 ориентирован на работу под управлением программы, хра- нящейся в ППЗУ (ROM) емкостью 3,75К слов. Существует также вариант процессора DSP56000, который имеет защиту от несанкционированного доступа к программе, хранящейся во внутренней памяти. Следующая линия микропроцессоров DSP56300 имеет процессорное ядро нового типа (NDE, New DSP Engine), в котором благодаря конвейеризации обеспечивается выполнение команды за один такт, что повышает быстро- действие в два раза в сравнении с ядром DSP560xx. 32-разрядный микропроцессор с плавающей запятой семейства DSP96002 со- держит 1024 слова памяти, равномерно разделенной между памятью данных X и Y, 1024 слова программной памяти, два ППЗУ данных, двухканальные контроллеры ПДП, подсистему начальной загрузки программы, а также встроенные средства отладки и эмуляции. Процессоры семейства имеют следующие технические характеристики: □ однотактное устройство умножения с накоплением разрядностью 32x32; □ специализированный набор команд; □ аппаратная поддержка выполнения программных циклов и быстрого возвращения из прерываний; □ расширенная до 1К слов кэш-память команд; □ пять 32-разрядных адресных шин — внутренние однонаправленные ши- ны адреса X и Y, программная адресная шина и две внешних адресных шины; □ семь 32-разрядных шин данных — внутренние двунаправленные шины данных X и Y, внутренняя двунаправленная глобальная шина данных,
Сигнальные микропроцессоры 423 внутренняя двунаправленная шина данных ПДП, внутренняя двунаправ- ленная программная шина данных и две внешних шины данных; □ внутрикристальная память микропроцессора включает 1024 слова про- граммной памяти (RAM), две независимых памяти данных по 512 слов каждая (RAM), две независимых ПЗУ емкости 1024 слова и ПЗУ началь- ной загрузки емкостью 64 слова; □ внешняя память процессора может составлять до 2х232 32-разрядных слов для команд и данных; □ производительность микропроцессора на тактовой частоте 40 МГц со- ставляет около 200 MIPS. Сигнальные процессоры фирмы Analog Devices образовывают два семейства: ADSP21xx и ADSP210xx. Технические характеристики процессоров приве- дены в таблице 8:1. Семейство ADSP21xx — набор однокристальных 16-разрядных микропро- цессоров с общей базовой архитектурой, оптимизированной для выполне- ния алгоритмов цифровой обработки сигналов и других приложений, кото- рые требуют высокоскоростных вычислений с фиксированной точкой. Семейство на сегодняшний день насчитывает 14 представителей, которые отличаются друг от друга, в основном, расположенными на кристалле пе- риферийными устройствами, такими как кэш-память, таймеры, порты и т. п. Второе семейство микропроцессоров ADSP210xx объединяет 32-разряд- ные микропроцессоры, ориентированные на сигнальные алгоритмы, кото- рые требуют выполнения вычислений с плавающей запятой. Семейство представлено микропроцессорами ADSP21010, ADSP21020, ADSP21060, ADSP21062. Сравнение архитектур сигнальных процессоров по быстродействию. Основ- ные показатели производительности процессора ADSP-21061 с тактовой частотой 40 МГц (время цикла 25 нс) при выполнении тестовых программ приведены ниже: □ быстрое преобразование Фурье на 1024 отсчета 460 мкс (18 221 цикл); □ секция фильтра с конечной импульсной характеристикой (FIR) — 25 нс (1 цикл); □ секция фильтра с бесконечной импульсной характеристикой (IIR) — 100 нс (4 цикла); □ деления (у/х) — 150 нс (6 циклов); □ вычисление J/j----225 нс (9 циклов); О скорость передачи через каналы DMA — 240 Мбайт/с.
Таблица 8.1. Цифровые сигнальные процессоры фирмы Analog Devices Тип Тактовая частота, МГц Время цикла, нс Продук- тивность, MIPS Внутренняя память данных Внутренняя память программ Внешняя память программ/ данных Ю линии Последо- вательный порт Таймеры ПДП RAM ROM 1 2 3 4 5 6 7 8 9 10 11 13 ADSP- 2101 20 97,6 10,24 1Кх16 2Кх24 16Кх16 16Кх24 2 2 1 0 A DSP- 2103 10,24 1 Кх16 2Кх24 16Кх16 16Кх24 2 2 1 0 ADSP- 2104 10,24 50 20 512x16 1Кх24 16Кх16 16Кх24 2 1 1 0 A DSP- 2104L 13,824 72,3 13,824 512x16 1Кх24 16Кх16 16Кх24 2 1 1 0 ADSP- 2105 10,24 100 20 256x16 512x24 16Кх16 16Кх24 2 1 1 0 ADSP- 2109 10,24 50 20 512x16 1Кх24 4Кх24 16Кх16 16Кх24 2 1 1 0 A DSP- 2109L 13,824 72,3 13,824 512x16 1Кх24 4Кх24 16Кх16 16Кх24 2 1 1 0 ADSP- 2111 20 50 20 1Кх16 2Кх24 16Кх16 16Кх24 5 2 1 0 ADSP- 2115 20 50 20 512x16 1Кх24 16Кх16 16Кх24 2 2 1 0 424 Гпава 8
Т абл ица 8.1 (продолжение) 1 2 3 4 5 6 7 8 9 10 И 13 ADSP- 2161 16,67 60 16,67 1Кх16 8Кх24 16Кх16 16Кх24 2 2 1 0 ADSP- 2162 10,24 100 10,24 1Кх16 8Кх24 16Кх16 16Кх24 2 2 1 0 ADSP- 2163 16,67 60 16,67 512x16 4Кх24 16Кх16 16Кх24 2 2 1 0 ADSP- 2164 10,24 100 10,24 512x16 4Кх24 16Кх16 16Кх24 2 2 1 0 ADSP- 2165 20 50 20 4Кх16 1Кх24 12Кх24 16Кх16 16Кх24 N/A 2 1 0 ADSP- 2166 16,67 60 16,67 4Кх16 1Кх24 12Кх24 16Кх16 16Кх24 N/A 2 1 0 ADSP- 2171 16,67 30 33 2Кх16 2Кх24 16Кх16 16Кх24 5 2 1 0 ADSP- 2172 16,67 30 33 2Кх16 2Кх24 8Кх24 16Кх16 16Кх24 5 2 1 0 ADSP- 2173 10,24 50 20 2Кх16 2Кх24 16Кх16 16Кх24 5 2 1 0 ADSP- 2181 16,67 30 33 16Кх16 16Кх24 16Кх16 16Кх24 13 2 1 1 ADSP- 2183 16,67 34,7 33 16Кх16 16Кх24 16Кх16 16Кх24 13 2 1 1
Таблица 8.1 (окончание) 1 2 3 ' 4 5 6 7 8 9 10 11 13 ADSP- 21msp50 20 50 20 !Kxl6 2Кх24 16Кх16 16Кх24 N/A 2 1 N/A ADSP- 21msp58 13 38 26 2Kxl6 2Кх24 16Кх16 16Кх24 3 2 1 0 ADSP- 2imsp59 13 38 26 2Kxl6 2Кх24 4Кх24 16Кх16 16Кх24 3 2 1 0 ADSP- 21 cspO 1 25 20 50 4Kxl6 4Кх24 16 Мелов 12 2 1 5 ADSP- 21020 33,3 30 33,3 0 0 4 Гелов N/A 2 1 N/A ADSP- 21060 40 25 40 4 Мбит 4 Гелов 4 2+6 1 10 ADSP- 21061 50 20 50 1 Мбит 4 Гелов 4 2 1 6 ADSP- 21061L 44 22,5 44 1 Мбит 4 Гелов 4 2 1 6 ADSP- 21062 40 25 40 2 Мбит 4 Гелов 4 2+6 1 10 ADSP- 21065L 60 16,67 60 544 Кбит 64 Мелов 12 8 2 10 426 Гпава 8
Сигнальные микропроцессоры 427 На рис. 8.3 приведено сравнение Архитектур сигнальных процессоров по числу тактов, необходимых для выполнения типичных ДСП алгоритмов — быстрое преобразование Фурье (Fourier), фильтры FIR и IIR. Относительное время выполнения 0 TMS320C5X ADSP21xx DSP56000 DSP56300 Рис. 8.3. Сравнение архитектур сигнальных процессоров Как видно из диаграммы, архитектура процессора DSP563xx фирмы Motorola имеет большую эффективность и обеспечивает лучшее время выполнения задач при равных значениях тактовых частот МП. Контрольные вопросы и задания 1. В каком процессоре объединены пять процессоров? Как они взаимодей- ствуют? 2. Назовите основные области применения процессоров Texas Instruments. 3. Какой из процессоров имеет архитектуру VelociTI? Чем она отличается от архитектуры VLIW? 4. Какие типы сигнальных процессоров производит фирма Motorola? Ка- ково применение каждой из групп? 5. Какие типы сигнальных процессоров производит фирма Analog Devices? 6. Сравните по быстродействию сигнальные процессоры фирм Texas Instruments, Motorola и Analog Devices для разных задач цифровой обра- ботки сигналов.
Глава 9 Нейронные вычислители 9.1. Основные понятия и задачи нейронных вычислителей В предыдущих главах рассматривались примеры решения задач, кото- рые хорошо формализованы, т. е. для них разработаны математические мо- дели и могут быть применены алгоритмы, которые базируются на правилах типа "если А, то Б". Однако существует ряд задач, которые трудно форма- лизовать, т. е. найти четкий алгоритм решения. К таким задачам относятся следующие. □ Распознавание изображений, например, распознавание рукописных и пе- чатных символов при оптическом вводе в ЭВМ, распознавание типов клеток крови, распознавание речи. При этом распознаваемый объект яв- ляется массивом данных, который необходимо отнести к одному из за- ранее известных классов. □ Кластеризация данных (поиск закономерностей). Входные данные надо отнести к какой-то группе (кластеру) по присущей им "близости", причем число кластеров заранее не известно. В качестве критерия "близости" мо- гут быть приняты расстояние между векторами данных, значения коэф- фициента корреляции и т. п. □ Аппроксимация функций. Нужно найти функцию, которая аппроксимиру- ет неизвестную. В качестве неизвестной функции может быть набор экс- периментальных данных. Эта задача актуальна при моделировании сложных систем и создании систем управления сложными динамически- ми объектами, для робастного управления. □ Прогнозирование. Нужно по предыдущему поведению функции прогно- зировать ее поведение в будущем. Эта задача актуальна для управления системами с прогнозированием, для систем принятия решений. □ Оптимизация. Цель этих задач найти оптимальное значение целевой функции, которая удовлетворяет ряду ограничений.
430 Гпава 9 Между тем человек хорошо решает задачи, которые трудно формализовать .— распознает изображения, классифицирует данные, прогнозирует и т. п. По- этому идея создать искусственный разум стала такой привлекательной. Но для этого надо было провести многочисленные исследования принципов функционирования мозга человека с точки зрения обработки информации. Мозг человека является самой сложной из известных систем переработки информации. В нем содержится около 100 млрд нервных клеток, или нейро- нов, каждый из который имеет в среднем 10 000 связей. Нейроны представляют собой особый вид клеток, основное назначение ко- торых состоит в оперативном управлении организмом. Схематическое изо- бражение нейрона приведено на рис. 9.1. Рис. 9.1. Схематическое изображение нейрона Нейрон имеет тело (сому) 1, дерево входов (дендриты) 4 и выходов (аксо- нов) 2. Дендриты сильно разветвляются, пронизывая сравнительно большое пространство вокруг нейрона. Начальный сегмент аксона — аксоновый бу- горок 3, прилегающий к телу клетки, утолщен. По мере удаления от клетки он постепенно сужается и на нем появляется миелиновая оболочка, которая имеет высокое электрическое сопротивление. На соме и на дендритах рас- полагаются окончания аксонов, которые идут от других нервных клеток. Каждое такое окончание 5 имеет вид утолщения, называемого синаптиче- ской бляшкой или синапсом. Входные сигналы дендритного дерева (постсинаптические потенциалы) взвешиваются и суммируются на пути к аксоновому бугорку, где генерируется выходной импульс. Его наличие (или
Нейронные вычислители 431 интенсивность) является функцией взвешенной суммы входных сигналов. Выходной сигнал проходит по ветвям аксона и достигает синапсов, которые соединяют аксон с дендритными деревьями других нейронов. Через синап- сы сигнал трансформируется в новый входной сигнал смежных нейронов. Этот входной сигнал может быть положительным и отрицательным (возбуждающим или тормозящим) в зависимости от вида синапсов. Значе- ние входного сигнала, который генерируется синапсом, может отличаться от значения сигнала, который приходит в синапс. Эти расхождения опреде- ляют эффективность или вес синапса. Синаптический вес может изменяться в процессе функционирования синапса. Ученые разных специальностей делали попытки создать математическую модель нейрона. Так, биологи пытались получить аналитическое представ- ление нейрона, которое учитывало бы все его известные функциональные характеристики. Но основная задача — передача информации нервным импульсом — терялась среди множества параметров, относящихся к физике проводимости импульсов. Поэтому попробовали заменить физическое опи- сание нейрона логическим. При этом нервная клетка рассматривалась как элемент, передающий информацию. В 1943 г. ученые-математики Мак- Каллох и Пите представили нейрон как простой переключательный эле- мент, который может находиться в одном из двух устойчивых состояний — "включено” или "выключено”. Нейрон срабатывает, если алгебраическая сумма входов в данный момент больше порога. Нейрон в таком представ- лении может использоваться как элемент ЭВМ. Такое представление нейро- на позволяет построить сеть из нейронов с соответствующими порогами и связями, которая реализовывала бы произвольную булеву функцию или таблицу истинности. Эти исследования привели к многочисленным изобре- тениям схем обработки информации, устройств распознавания и сенсорных анализаторов. В настоящее время чаще всего используется модель нейрона, которая при- ведена на рис. 9.2. х, Рис. 9.2. Модель нейрона
432 Гпава 9 Нейрон имеет п однонаправленных входов (синапсов), соединенных с выхо- дами других нейронов, а также выход у (аксон), по которому сигнал (возбуждения или торможения) поступает на синапсы следующих нейронов. Синапсы характеризуются значением синаптической связи или веса vv„ что по физическому содержанию эквивалентно электрической проводимости. Каждый нейрон характеризуется своим текущим состоянием s по аналогии с нервными клетками головного мозга, которые могут быть возбуждены или заторможены. Текущее состояние нейрона зависит от значения его входов, весов и, воз- можно, предыдущего состояния. Чаще всего состояние нейрона определяет- ся или как взвешенная сумма его входов п S = £x,W,, (9.1) /=1 или как расстояние между вектором входов и вектором весов входов п-х s = (9-2) /=1 Выходом у нейрона является функция его состояния: (9.3) Функция f(s) называется функцией активации. Наиболее распространенными функциями активации являются ступенчатая пороговая, линейная пороговая, сигмоидная, а также линейная и гауссиана, которые приведены в табл. 9.1. Нейронная сеть создается путем объединения выходов одних нейронов со входами других, причем нейроны создают слои, которые также соединены между собою. Нейронная сеть — это сеть с конечным числом слоев из однотипных эле- ментов и разными типами связей между слоями нейронов. При этом коли- чество нейронов в слоях выбирается необходимым для обеспечения задан- ного качества решения задачи, а количество слоев нейронов — по возможности меньшим для уменьшения времени решения задачи. Таблица 9.1. Функции активации нейрона Название Определение Ступенчатая пороговая [0, s<a /(*)=, [1, 5 > а
Нейронные вычислители 433 Т абл ица 9.1 ( окончание) Название Определение Линейная пороговая f(s) = 0, s<a{ ks+b, av<s<a2 1, 5- > a2 Сигмоидная Линейная f(s) = ks + b Гауссиана f(s) = e~k(x-a)2 Пример простейшей однослойной нейронной сети, которая иначе называет- ся также простой персептрон, приведен на рис. 9.3. На п входов поступают сигналы, которые проходят по синапсам на 3 нейрона, которые образуют единый слой с исходными сигналами yj = ; = 1...з. /=1 X и/ у Рис. 9.3. Однослойный персептрон На рис. 9.4 представлен двухслойный персептрон, полученный из однослой- ного добавлением второго слоя, состоящего из двух нейронов. При этом не-
434 Гпава 9 линейность активационной функции имеет большое значение: если бы ее не было, результат функционирования любой р-слойной нейронной сети с весо- выми матрицами i = 1,2, ...,р для каждого слоя i сводился бы к перемно- жению входного вектора сигналов X на матрицу W& = И^1) • • ... • Wip\ т. е. фактически такая р-слойная нейронная сеть была бы эквивалентна однослой- ной с весовой матрицей единого слоя W&: Y = XWФ. Рис. 9.4. Двухслойный персептрон Кроме числа слоев и связей между ними, нейронные сети классифицируются как ациклические и циклические. Приведенные примеры на рис. 9.3 и 9.4 относятся к ациклическим нейронным сетям. На рис. 9.5 приведен пример циклической нейронной сети. Если рассмотренные схемы (рис. 9.3—9.5) дополнить положением о такти- ровании сети (задать время срабатывания нейронов), то получим аппарат для задания разнообразных алгоритмов обработки данных с помощью ней- ронных сетей, которые можно использовать для решения как формализо- ванных задач, так и задач, которые трудно формализовать. В последнем случае применение нейронных сетей основано не на выполнении предло- женного алгоритма, а на запоминании сетью предъявленных ей примеров на этапе создания сети и выработки результатов, согласованных с этими примерами, на этапе решения задачи. По типу сигналов в нейронных сетях, последние разделяют на бинарные (цифровые) и аналоговые. Бинарные оперируют с двоичными сигналами,
Нейронные вычислители 435 причем выход каждого нейрона может принимать только два значения: О или 1. По возможностям к адаптации можно выделить: конструируемые и обу- чаемые нейронные сети. В конструируемой сети задают число и тип ней- ронов, граф межнейронных связей, вес входов. В обучаемой сети графы межнейронных связей и веса входов изменяются при выполнении алго- ритма обучения. По алгоритму обучения сети распределяются на сети, за которыми наблю- дают, не наблюдают и смешанные (гибридные). Первые при обучении срав- нивают заранее известный результат с полученным. Вторые обучаются, не зная правильных значений результата. Они группируют входные данные таким образом, чтобы они формировали тот же выход сети. Такой подход используют при решении, например, задачи кластеризации. При смешанном алгоритме обучения часть весов определяется при наблюдении, а часть — без наблюдения. Контрольные вопросы и задания 1. Для решения какого класса задач используют нейропроцессоры? Назо- вите примеры таких задач. , 2. В чем состоит общая идея использования нейронных сетевых вычислений? 3. Приведите определение понятий ’’нейрон" и нейронная сеть". 4. Дайте определение и приведите примеры функций состояния нейрона.
436 Гпава 9 5. Дайте определение и приведите примеры функций активизации нейрона. 6. Приведите примеры однослойных и двухслойных нейронных сетей. 7. Чем отличаются циклические нейронные сети от ациклических? 8. Какие существуют типы нейронных сетей? 9.2. Основы построения алгоритмов обучения нейронных сетей Одним из важнейших этапов разработки нейронного вычислителя является обучение сети. От качества обучения зависит возможность сети решать по- ставленные перед ней задачи. На этапе обучения кроме параметра качества отбора весовых коэффициентов, важную роль играет время обучения. Как правило, эти два параметра связаны обратной зависимостью и их прихо- дится выбирать на основе компромисса. Обучение начинается с выбора исходной сети (эвристически избранный граф) с заданным количеством входов и выходов. Например, в литературе рекомендуется трехслойная сеть с числом нейронов внутреннего слоя, рав- ным полусумме числа входов и выходов сети. Каждый нейрон внутреннего слоя связан с выходами всех входных нейронов сети. Каждый выходной нейрон связан с выходами всех нейронов внутреннего слоя. Далее пробуют подобрать веса входов нейронов сети так, чтобы решалась задача. Если это не удается, то изменяют граф сети. Наиболее распространенным алгоритмом определения весов при обучении с наблюдением персептронных сетей, для которого доказана сходимость процесса, является алгоритм обратного распространения ошибки. На сегодня его реализуют 80% нейрочипов, ориентированных на задачи цифровой об- работки сигналов. В настоящее время он стал некоторым эталоном для оценки производительности нейронных вычислителей, так же как быстрое преобразование Фурье на 1024 отсчета для сигнальных процессоров (см. разд. 8.3). При обучении сигнал ошибки распространяется по сети в обратном на- правлении. Выполняется коррекция весов входов нейронов, которая пред- отвращает повторное появление этой ошибки. Пусть существует набор примеров, гДе У у = {к/|,*/2’— входные значения j примера, — выходное зна- чение этого примера. Считается, что персептрон правильно обучен, если для всех j max|z>y где 5 — заданное значение ошибки. Алгоритм обучения однослойного персептрона (рис. 9.2 или рис. 9.3) следующий.
Нейронные вычислители 437 1. Присвоить весам и порогу нейрона случайные маленькие значения. 2. Подать на входы нейрона очередной пример (х(начиная с первого примера) и определить значение выхода нейрона У-, j = l,...,ni. • 3. Изменить веса в соответствии с выражением Wj(t +1) = Wjtty + afJDj -Y ,u- 1,2, n, a — коэффициент, 0 < a < 1. 4. Проводить шаги 2, 3 до тех пор, пока ошибка на всех примерах не будет превышать заданного значения 8. В многослойных сетях алгоритм остается тем же самым, за исключением шага 2, состоящего из этапов коррекции слоев, причем коррекция начинает- ся с выходного слоя. Кроме многослойных нейронных сетей обратного распространения ошиб- ки, основной недостаток которых — невозможность гарантировать наи- лучшее обучение за конкретный временной интервал, существует довольно большое количество других вариантов построения нейронных сетей со своими преимуществами и недостатками. В общем случае, проектирование нейросистем — это сложный и трудоем- кий процесс, в котором выбор конкретного алгоритма — только один из нескольких шагов процесса проектирования. Он, как правило, включает: исследование предметной области, структурно-функциональное проектиро- вание, топологическое проектирование и т. п. Контрольные вопросы и задания 1. В чем состоит процесс обучения нейронной сети? 2. Назовите основные шаги алгоритма обратного распространения ошибки для однослойных персептронов. 3. В чем состоит отличие алгоритма обратного распространения ошибки для одно- и многослойных персептронов? 9.3. Аппаратная реализация нейронных вычислителей Различают следующие архитектуры вычислительных систем, рис. 9.6: □ с одним потоком команд и данных SISD (Single Instruction — Single Data), рис. 9.6, a\
438 Гпава 9 □ с одним потоком команд и множественным потоком данных SIMD (Single Instruction — Multy Data), рис. 9.6, б; □ с множественным потоком команд и одним потоком данных (MISD, Multy Instruction — Single Data), рис. 9.6, в;
Нейронные вычислители 439 □ с множественными потоками команд и данных (MIMD, Multy Instruction — Multy Data), рис. 9.6, г. Нейронный вычислитель — это система с MIMD-архитектурой, которая ра- ботает по алгоритму нейронной сети. Нейровычислители относятся к мас- сово-параллельным системам, которые характеризуются параллельными потоками одинаковых команд и множественными потоками данных. Существуют три основных направления построения нейронных вычисли- телей: □ на базе каскадного соединения универсальных RISC- или CISC-микро- процессоров фирм Intel, AMD, Sparc, Alpha, Power PC; □ на базе программируемых интегральных схем ПЛИС или процессоров с параллельной обработкой данных на аппаратном уровне, например, сиг- нальных процессоров фирм TMS, ADSP, Motorola; □ на специализированной элементной базе — однобитовых процессорах, нейрочипах. Системы первого направления называются нейроэмуляторами. Аппаратная их реализация базируется на использовании универсальных RISC- или CISC-микропроцессоров, которые были подробно рассмотрены в предыду- щих главах. Нейроэмуляторы реализуют типичные нейрооперации (вы- числяют взвешенную сумму, выполняют нелинейные преобразования) на программном уровне. Системы второго и третьего направления в виде плат расширения стан- дартных вычислительных систем называются нейроускорителями, а системы третьего направления в виде функционально законченных вычислительных устройств называются нейрокомпьютерами. Нейроускорители делятся на два класса — виртуальные, вставляющиеся в слот расширения стандартного компьютера, и внешние, соединяющиеся с управляющей Host ЭВМ. В нейроускорителях на базе программируемых логических интегральных схем ПЛИС алгоритмы нейросетей реализованы аппаратно. Современные ПЛИС имеют значительный объем ресурсов (например, ПЛИС фирмы Xilinx имеет на кристалле до 4 млн логических элементов) и может аппаратно реализо- вывать структуру нейросетей типа рис. 9.4, 9.5. Характеристики ПЛИС для реализации нейровычислителей представлены в табл. 9.2. Вычислительные системы на базе ПЛИС характеризуются довольно высо- кими частотами работы, но изменение алгоритмов работы требует их пере- программирования. Нейроускорители на базе ПЛИС в настоящее время ис- пользуют в качестве гибких нейровычислительных систем для научно- исследовательских целей и мелкосерийного производства.
440 Гпава 9 Таблица 9.2. Особенности реализации нейровычислителей на ПЛИС Тип ПЛИС Производитель Количество нейронов XC4005E/XL XILINX 6 XC4013XLA XILINX 18 XC4020XLA XILINX 24 XC4044XLA XILINX 50 XC4062XLA XILINX 72 XC4085XL XILINX 97 XC4025OXV XILINX 200 EPF10K20 ALTERA 4 EPF10K50E ALTERA 11 EPF10K100E ALTERA 19 EPF10K250E ALTERA 50 M4LV-96/48 AMD 3 M4LV-192/96 AMD 6 M5LV-256 AMD 8 M5LV-512 AMD 16 Для построения более производительных нейровычислителей, как правило, применяют сигнальные процессоры (см. главу 8). Сигнальные микропроцес- соры, которые разрабатывались для задач цифровой обработки сигналов, как оказалось, способны эффективно интерпретировать алгоритмы нейро- сетей. Они ориентированы на обработку массивов (векторов) данных, вы- полняют операцию умножения с накоплением. Некоторые из них могут од- новременно выполнять две команды. Эти особенности позволяют легко реализовать умножение с накоплением векторов весов и векторов входов нейронов сети. Обычно при создании нейровычислителей используют гиб- ридную структуру, когда блок матричных вычислений реализуется на базе каскадного соединения сигнальных процессоров, а логика управления — на основе ПЛИС. Схема внешнего нейроускорителя, соединяющегося с управляющей Host ЭВМ и выполненная на базе каскадного соединения сигнальных процессо- ров, приведена на рис. 9.7.
Нейронные вычислители 441 Шина hosf-ЭВМ Рис. 9.7. Обобщенная функциональная схема виртуального нейроускорителя Управляющая Host-ЭВМ реализована на основе обычной вычислительной системы с CISC- или RISC-микропроцессорами. Модуль матричных сигнальных процессоров объединяет их между собою соответственно структуре нейросетей. Схема содержит также рабочую па- мять, память программ, модуль ввода/вывода сигналов, содержащего АЦП-, ЦАП- и TTL-линии, а также модуль управления, который может быть реа- лизован на основе специализированного управляющего сигнального про- цессора, на основе ПЛИС или иметь распределенную структуру, при которой функции общего управления распределены между матричными сигнальны- ми процессорами. Для построения нейроускорителя данного типа наиболее перспективным является использование сигнальных процессоров с плаваю- щей запятой ADSP2106x, TMS320C4x,8x, DSP96002 и др. Выбор того или другого сигнального процессора — многокритериальная задача, однако следует отметить преимущество процессоров Analog Devices для приложе- ний, которые требуют выполнения больших объемов математических вы- числений, таких как цифровая фильтрация сигнала, вычисление корреляци- онных функций. Для задач, которые требуют интенсивного обмена с внешними устройствами, целесообразно использовать процессоры Texas
442 Гпава 9 Instruments, имеющие высокоскоростные интерфейсные подсистемы. Ком- пания Motorola является лидером по объему производства дешевых и до- вольно продуктивных 16- и 24-разрядных сигнальных микропроцессоров с фиксированной запятой. Элементной базой нейровычислителей третьего направления — именно нейрокомпьютеров — являются нейрочипы. Нейрочипы бывают цифровые, аналоговые и гибридные. Они также могут включать схемы настройки весов при обучении, а могут не иметь таких схем и предусматривать внешнюю загрузку весов. Характеристики некоторых распространенных нейрочипов приведены в табл. 9.3. Таблица 9.3. Характеристики нейрочипов Тип, фирма Максимальное количество Разрядность Производительность синапсов нейронов слоев входов весов CPS CPSPW CPPS CUPS 1 2 3 4 5 6 7 8 9 10 ЦИФРОВЫЕ MD1220 Micro Device 64 8 8 1 16 9Г 1М 142М - NLX420 Adaptive Logic IM 16 16 16 16 юг 20К 640Г - Lneuro 1,0 Philips 1536 16 192 16 16 26Г 26К 1,6Г 32Г АНАЛОГОВЫЕ 80170NW Intel 2 банка 64x80 64 2 - - 2 Г ЗОМ - ГИБРИДНЫЕ CLNN-32 Bellcore 406 32 1 - 5 2Г 5М - - CLNN-64 Bellcore 1024 64 1 - 5 2 Г 2М - - ANNA AT&T 4096 256 1 - 6 2,1 Г 5,1К - - В табл. 9.3 оценка производительности нейровычислителей вместо тради- ционных (М)1Р и (M)FLIP — (миллионов) операций с фиксированной и
Нейронные вычислители 443 плавающей точкой, проводится другим показателем: CPS (Connections Per Second) — число соединений в секунду. Соединение — это произведение значения входа на вес и сложение с накоплением. Поскольку этот показатель не учитывает разрядности входов и весов, ино- гда приводят следующие показатели: □ CPSPW = CPS/2V.,., где Nn. — число синапсов в нейроне; □ CPPS — число соединений примитивов в секунду, CPPS = CPS х Ви х Ву, где В„, Bs — разрядность весов и синапсов. Показателем, который оценивает скорость обучения, является CUPS (Connections Update Per Second) — число измененных значений весов в се- кунду. Цифровые нейрочипы. Одним из первых нейрочипов была БИС MD1220 фирмы Micro Device. Этот кристалл интерпретирует 8 нейронов и 8 связей с 16-разрядными весами, которые хранятся во внутрикристальной памяти, и одноразрядными входами, которые имеют последовательные умножители. Продолжительность такта — 7,2 мкс, что обеспечивает производительность 9 МСР. Из этих нейрочипов путем их каскадного соединения могут быть построены нейрокомпьютеры. Фирма Adaptive Logic выпускает нейрочип NLX420 с шестнадцатью про- цессорными элементами (ПЭ), каждый из которых имеет 32-разрядный сум- матор. Веса и входы загружаются как 16-разрядные слова, но могут быть использованы как 16 одноразрядных слов, или как 4 четырехразрядных, или как 2 восьмиразрядных, или как одно 16-разрядное слово. Веса хранятся вне чипа. Вход общий для всех ПЭ, что позволяет выполнять параллельно до 16 операций умножения. Функции активации задаются пользователем. Кри- сталлы можно соединять каскадно. Кристалл Lneuro 1,0 фирмы Philips содержит 16 ПЭ, каждый из которых может функционировать как шестнадцать 1-разрядных, восемь 2-разрядных, четыре 4-разрядных, два 8-разрядных или один 16-разрядный. Чип имеет 1 Кбайт памяти весов, что позволяет использовать 1024 8-разрядных или 512 16-разрядных весовых коэффициентов. Функция активации реализуется вне чипа, что позволяет при каскадировании интерпретировать большие сети. Аналоговые нейрочипы используют аналоговые схемы — сумматоры с анало- говыми входами, веса которых тоже задаются аналоговым способом. Эти чипы обычно меньше и проще цифровых. С другой стороны, обеспечение не- обходимой точности требует тщательного проектирования и изготовления. Кристалл фирмы Intel 80170NW содержит 64 нейрона и 2 банка 64x80 весов. Возможно несколько сетевых конфигураций. Чип имеет 64 аналоговых входа (0—3 В) и 16 внутренних сдвигов. На кристалле можно реализовать двухслой- ную сеть с 64 входами, 64 внутренними и 64 выходными нейронами. Другие
444 Гпава 9 конфигурации включают 3-слойные сети или 1-слойную со 128 входами. Точ- ность БИС составляет 5—6 разрядов для весов и выходов. Гибридные нейрочипы используют комбинацию аналогового и цифрового подходов. Например, входы могут быть аналоговыми, весы загружаться как цифровые и выходы быть цифровыми. Чипы CLNN-32, CLNN-64 фирмы Bellcore содержат 32 нейрона. Входы, выходы и внутренняя обработка сигналов — аналоговые, а 5-разрядные веса — цифровые. Чип ANNA фирмы АО&Т в основном цифровой, но внутри использует конденсаторные заряды для хранения весов. Чип содержит 4096 весов. Чис- ло нейронов варьируется от 16 до 256 с числом входов нейрона 256 или 16 соответственно. Веса имеют точность 6 разрядов. Существуют нейрочипы, в которых используется представление данных частотой или шириной импульсов. Контрольные вопросы и задания 1. Назовите типы и приведите примеры вычислительных систем. 2. К какому типу вычислительных систем относятся нейронные вычислители? 3. Какими показателями оценивается производительность нейросетей? 4. Как сравнить производительность традиционных фоннеймановских ком- пьютеров и нейросетей? 5. Какие существуют основные направления построения нейронных вычис- лителей? 6. Дайте определение нейроэмулятору, нейроускорителю, нейрокомпьютеру. Сравните эти устройства по аппаратной реализации и быстродействию. 7. Перечислите основные типы нейрочипов. 8. Укажите особенности сигнальных процессоров, которые повышают эф- фективность интерпретации нейросетевых алгоритмов.
Список литературы и ресурсов Интернета К главе 1 1. Корнеев В. В. Киселев А. В. Современные микропроцессоры. — М.: НОЛИДЖ, 1998. — 240 с. 2. Левенталь Л. Введение в микропроцессоры. Программное обеспече- ние, аппаратные средства, программирование. — М.: Энергоатомиздат, 1983. —464 с. 3. Лысиков Б. Г. Арифметические и логические основы автоматов: Учебник для вузов. — 2-е изд., перераб. и доп. — Мн.: Высшая школа, 1980. — 336 с. 4. Лю Ю-Чжен, Гибсон Г. Микропроцессоры семейства 8086/8088. Архи- тектура, программирование и проектирование микрокомпьютерных сис- тем: Пер. с англ. — М.: Радио и связь, 1987. — 512 с. 5. Майоров В. Г., Гаврилов А. И. Практический курс программирования микропроцессорных систем. —’М.: Машиностроение, 1989. — 321 с. 6. Самофалов К. Г., Корнейчук В. И., Тарасенко В. П. Электронные цифро- вые вычислительные машины. — Киев: Высшая школа, 1976. — 480 с. К главе 2 1. Абель П. Язык Ассемблера для IBM PC и программирование: Пер. с англ. Ю. В. Сальникова. — М.: Высшая школа, 1992. — 447 с. 2. Гольденберг А. М., Малев В. А., Малько Г. Б. Цифровые устройства и микропроцессорные системы. Задачи и упражнения: Учеб, пособие для вузов. — М.: Радио и связь, 1993. — 256 с. 3. Горбунов В. Д., Панфилов Д. И., Преснухин Д. Л. Микропроцессоры. Основы построения микро-ЭВМ. — М.: Высшая школа, 1984. — 144 с. 4. Казаринов Ю. М. Микропроцессорный комплект К1810. Справочная книга. — М.: Высшая школа, 1990. — 269 с.
446 Список литературы и ресурсов Интернета К главе 3 1. Гук М. Процессоры Intel: от 8086 до Pentium II. — СПб.: Питер, 1997. — 224 с. 2. Гук М. Процессоры Pentium II, Pentium Pro и просто Pentium. — СПб.: Питер Ком, 1999. — 288 с. 3. Корнеев В. В., Киселев А. В. Современные микропроцессоры. — М.: НОЛИДЖ, 1998. —240 с. 4. Морс С. П., Альберт Д. Д. Архитектура микропроцессора 80286. — М.: Радио и связь, — 1990. — 304 с. 5. http://www.amd.com/ 6. http://www.amdnow.ru/reviews/opteron-2/ 7. http://www.amdnow.ru/reviews/hammer/ 8. http://www.amdnow.ru/reviews/x86-64/ 9. http://www.intei.com/ 10. http://www.intel.ru/ 11. http://www.hardvisioh.ru/?dir=cpu&doc=intel_mckinley 12. http://www.i-teco.ru/hp_ia64.html 13. http://www.ixbt.com/cpu/merced_cpu.html 14. http://www.microprocessor.sscc.ru/Merced/index.ru.html 15. http://www.chip.ua/ К главе 4 1. Лебедев О. Н. Микросхемы памяти и их применение. — М.: Радио и связь, 1990. — 234 с. 2. Балашов Е. П., Григорьев В. Л., Петров Г. А. Микро- и миниЭВМ: Учеб- ное пособие для вузов. — Л.: Энергоатомиздат, 1984. — 376 с. К главе 5 1. Алексенко А. Г., Галицын А. А., Иванников А. Д. Проектирование ра- диоэлектронной аппаратуры на микропроцессорах. — М.: Радио и связь, 1984. — 272 с.
Список литературы и ресурсов Интернета 447 2. Вершинин О. Е. Применение микропроцессоров для автоматизации тех- нологических процессов. — Л.: Энергоатомиздат, 1986. — 208 с. 3. Самофалов К. Г., Викторов О. В., Кузняк А. К. Микропроцессоры. — Киев: Техника, 1986. — 278 с. 4. Молчанов А. А., Корнейчук В. И., Тарасенко В. П. и др. Справочник по микропроцессорным устройствам. — Киев: Техника, 1987. — 228 с. К главе 6 1. Гребнев В. В. Однокристальные микроЭВМ семейства АТ89 фирмы Atmel. ЭФО. —СПб.: Питер, 1998. — 76 с. 2. Козаченко В. Ф. Микроконтроллеры: руководство по применению 18- разрядных микроконтроллеров Intel MCD-196/296 во встроенных систе- мах управления. — М.: ЭКОМ, 1997. — 688 с. 3. Липовецкий Г. П., Литвинский Г. В., Оксинь О. Н. Однокристальные микроЭВМ. Семейство МК48, Семейство МК51. Техническое описание и руководство по применению. — М.: МП "Бином", 1992. — 339 с. 4. Сташин В. В., Урусов А. В., Мологонцева О. Ф. Проектирование цифро- вых устройств на однокристальных микроконтроллерах. — М.: Энерго- атомиздат, 1990. — 221 с. 5. Atmel Corporation. 8051 Flash Microcontroller. Data Book. December 1997. К главе 7 1. Евстигнеев А. В. Микроконтроллеры AVR семейства Classic фирмы ATMEL. — М.: ДОДЭКА-XXI, 2002. — 288 с. 2. Микроконтроллеры, вып. 1. — СПб.: ДОДЭКА, 1998. — 384 с. 3. http.7Zwww.atmel.com/atmel/products/prod23.htm 4. http://www.atmel.ru/Articles 5. http://www.gaw.ru/table.doc 6. http://www.efo.ru/cgi-bin/go.pl?! 18 7. http://www.atmel.com/atmel/products/prod29.htm
448 Список литературы и ресурсов Интернета К главе 8 1. DSP56800FM/D: DSP56800 Family Manual. 2. DSP56F801-7UM/D: DSP56F80x User's Manual. 3. DSP56824UM/D: DSP56824 User's Manual. 4. DSP56800WP1/D J. P. Gergen, P. Hoang, E. A. Cchemaly: Novel Digital Processing Architecture with Microcontroller Features, White Paper, Mo- torola. 5. DSP5680x Architecture Captures Best of DSP and MCU Worlds, Internal Paper, Motorola. К главе 9 1. Власов А. И. Аппаратная реализация нейровычислительных управляющих систем/Приборы и системы управления. — 1999. — № 2. — С. 61—65. 2. Галушкин А. И. Некоторые исторические аспекты развития элементной базы вычислительных систем с массовым параллелизмом (80-е и 90-е го- ды)//Нейрокомпьютер. — 2000. — № 1. — С. 68—82. 3. Корнеев В. В., Киселев А. В. Современные микропроцессоры. — М. НОЛИДЖ, 2000. — 320 с. 4. http://neurnews.iu4.bmstu.ru/ 5. http://www.module.ru/ 6. http://www.analog.com/ 7. http://www.ti.com/
Предметный указатель 1 13-разрядный программный счетчик (РС) 381 16-разрядные микропроцессоры с 'фиксированной запятой DSP56156 HDSP56166 421 2 24-разрядные микропроцессоры с фиксированной запятой DSP56000/DSP56001 422 3 32-разрядный микропроцессор с плавающей запятой семейства DSP96002 422 8 8-разрядный параллельный порт хост-интерфейса HPI (Host Parallel Interface) 406 с Стековая память 206 А Адресация 15, 16, 17, 18, 26 автоинкрементная (автодекрементная) 18 непосредственная 17 портов ввода/вывода 74 Аккумулятор 11, 13, 16, 17, 38, 41, 71,72, 74,75,76, 108, 140, 339,342 Аналоговые нейрочипы 443 Аппаратный умножитель 402 Арифметико-логическое устройство 12,402 Арифметико-логическое устройство ALU411 Арифметические команды 344 Арифметическое устройство 402 Архитектура РТС-контроллеров. 381 Архитектуры микропроцессора 10 Ассемблер 18 Ассемблирование 18 Б Базово-индексная адресация 75, 76 банков 189 Блок начальной загрузки (Boot Loader) 416 Блок начальной загрузки BL (Boot Loader) 407 Блок таймеров/счетчиков 327 Блок управления 312 Блок управления энергопотреб- лением PM (Power management) 404 Буфер отложенной записи 160 Буферизированный последова- тельный порт BSP (Buffering Serial Port) 406 в Внешнее ЗУ 185 Внешняя: кэш-память 184 память 414
450 Предметный указатель Внутренние аппаратные прерывания 79 Внутренняя кэш-память 183 Время выборки 185 Временной: аккумулятор 38 регистр 38 Встроенная память 414 Встроенный генератор CLK-PLL 405 Выборка байта: по нечетному адресу 194 по четному адресу 193 г Гарвардская архитектура 10 Гарвардский процессор 385 Генератор тактов ожидания S/W (Waitstate Generator) 405 Гибридные нейрочипы 444 д Дескриптор сегмента 127 Дешифратор команд 38 Директива 21,24 завершения программы 25 метки 25 распределения и инициирования памяти 24 Е ЕХЕ-программ 32 3 Запоминающее устройство (ЗУ) 183 Захват шин 43 события 360, 371 прямой доступ к памяти ПДП 50 и Индексная адресация 18, 75 Интерфейс ТЕ (Test-Emulation) 405 Интерфейсы ввода/вывода 9 с информационной емкостью 185 к Командный модуль 20 Команды 14 операций с битами 347 передачи управления 113 пересылки 342, 343, 344, 345, 346, 347,348,349,350 переходов 348 Комментарии 20 Контроллер: DMA 415 прерываний 413 Косвенная адресация 16 Кэш-память 199, 202, 414 с прямым отображением 200 л Линии состояния 63 Листинг 21 Логические команды 345 Логический блок PLU 403 м Максимальный режим 56 Машинный цикл 313 Медийные и мультимедийные процессоры 2 Метка 19 Микропроцессорная система 1 Микропроцессорный комплект (МПК) 1 Микропроцессоры (МП) 1 универсальный 2 i386 155 i486 157
Предметный указатель 451 i8088 80 i80!86(i80188) 80 i80C 186/i80C 188 80 Мнемокод 20 Модуль прерывания IM (Interrupt module) 404 Мультимикропроцессорная (или мультипроцессорная) система 1 Мультиплексор 39 н Нейрокомпьютеры 439 Нейронная сеть 432 Нейронный вычислитель 439 Нейроускорители 439 Нейрочипы 442 Нейроэмуляторы 439 о Общая характеристика серии MCS196/296 364 Объектный модуль 21 Однокристальные микро- контроллеры 3 с интегрированными процессорами событий 373 с интегрированными средствами управления двигателями 374 с интегрированными средствами цифровой обработки 375 с интегрированными устройствами высокоскоростного ввода/ вывода 364 Однокристальный микропроцессор 2 Операнд 20, 13 Оперативная память 184 Оперативное запоминающее устройство или резидентная память данных 306 Организация ввода/вывода 41 Организация памяти 41,65, 126 Останов 43, 52 Относительная адресация 18 п Пакетный режим передачи данных 158 памяти программ и данных 400 Память данных 387 Память данных DARAM 404 Память данных или программ/данных SARAM 403 Память программ 387 Память 403 параллельных операций 413 Параметры внешних импульсов синхронизации 315 Периферийные устройства 400, 404 Периферия МК AVR 388 Подрежим широтно-импульсного модулятора 360 Полностью ассоциативная кэш- память 202 Порты ввода/вывода РО-РЗ 315 Последовательный порт 318 SP (Serial Port) 416 SIO 372 SP (Serial port) 406 с временным разделением каналов TDM (Time Division Mode) 406 Постоянное запоминающее устройство или резидентная память программ 305 Постоянное ЗУ 184 Прерывание 48 Приемопередатчик универсальный асинхронный 318 Принцип: временной локальности 199 магистральности 5 микропрограммного управления 6 модульности 5 пространственной локальности 200 Программа 14 Программируемый таймер 296 Программная модель 41,69, 128, 141
452 Предметный указатель Программный счетчик 13 Прямая адресация 15 р Разрядность: ячейки 186 данных 185 Расширение: памяти данных 353 памяти программ 352 пространства ввода/вывода 356 Реверсивная адресация 413 Регистры 13 адреса 13 данных 13 команд 13 состояния 14 флагов 14, 38, 72 Регистровый файл 386, 402 CPU 411 Режимы: захвата события 360 микропотребления 340 работы Т/С 331 системного управления 161 сравнения 360 энергопотребления ОМК 337 с Сегмент 7 данных 8 кодов 8 Сегментные регистры 131 Селекторы сегментов 127 Семейство TMS320C4x 418 Сигнальные процессоры 2 Сигнальные процессоры фирмы: Analog Devices 423 Motorola 421 Texas Instruments 418 Система: команд 133 команд AVR 390 прерываний 334 Скорость приема-передачи данных в последовательном порте 3Z1 Смещение 8 Состояния 313 Специализированные микропроцессоры 2 Сравнение архитектур сигнальных процессоров по быстродействию 423 Стек 13 сторожевого таймера 360 Страничная адресация 18 строковых команд 112 Суперскалярная архитектура 163 Схема инкремента/декремента 39 Счетчик повторений 413 т Таймер Т/С 416 Таймер/счетчик Т/С 405 Транзакция 370 Транспьютеры 2 У Указатель: команд 39 стека 13, 39 Умножитель 411 Управление обменом 215 Устройства: ввода/вывода 9, 211 управления 11,38 ф Физические адреса портов 316 Фоннеймановская архитектура 10 Формат данных 220, 246 команды 14 Функция: начальной установки МП 11 прерываний 12 синхронизации 12 согласования быстродействия 12
Предметный указатель 453 X Хранение информации и доступ к ней со стороны МП 211 ц Центральное процессорное устройство 400, 411 Циклическая адресация 413 Цикл шины 64, 135 Цифровые нейрочипы 443 ш Шина 3 параллельная 4 последовательная 4 системная SB 4 адреса 4 данных DB (Data Bus) 4 управления СВ (Control Bus) 5 э,я Элемент памяти 186, 195 Ячейка памяти 186
Авторский коллектив представлен кандидатами и докторами технических наук, профессорами Киевского национального технического университета Украины, Донецкого национального технического университета, Днепро- дзержинского государственного технического университета, специализи- рующимися в области электроники, компьютерной и микропроцессорной техники, создателями более 50 книг, монографий, учебников, учебных по- собий и свыше 10ОО статей. СХЕМОТЕХНИКА ЭЛЕКТРОННЫХ СИСТЕМ Микропроцессоры и микроконтроллеры PROC В основе учебника лежат материалы лекций по дисциплинам, связан- ным с микропроцессорной техникой и ее использованием. Рассмотре- ны особенности архитектуры и функциональные возможности 8,16, 32 и 64-разрядных процессоров, способы организации и построение модулей памяти, приведены примеры составления программ и проек- тирования микропроцессорных систем. В результате изучения курса студенты получат теоретические знания и практические навыки по- строения и программирования микропроцессорных систем управления, проектирования интерфейсов ввода/вывода, специализированных устройств на микропроцессорах разных серий и микро-ЭВМ. Содержа- ние учебника соответствует программам подготовки специалистов, бакалавров и магистров направления "Электроника", но может быть полезно студентам других родственных специальностей, а также аспи- рантам и специалистам, работающим в области электроники. )ELAY БХВ-Петербург 190005, Санкт-Петербург, Измайловский пр., 29 E-mail: mail@bhv.ru Internet: www.bhv.ru тел.: (812)251-42-44 факс: (812) 251-12-95 1ИДЖ /LEDGE