Текст
                    "/ББК 32.965-04я73 + 32.973-04я73
*" ' Н-731
(ЙПГ+004.31](075.8)
Н-73 Основы микропроцессорной техники / Новиков Ю. В., Скоробогатов П. К. /
М.: ИНТУИТ.РУ. "Интернет-Университет Информационных Технологий", 2003. —
440 с. ISBN 5-9556-0004-3
Книга представляет собой краткое учебное пособие по основам микропроцессорной
техники, в котором рассматриваются принципы организации микропроцессорных систем
различной сложности, алгоритмы их функционирования, а также методы проектирования
устройств на основе микроконтроллеров.
Данное пособие предназначено для тех, кто желает самостоятельно изучить микро-
процессорную технику и разрабатывать микропроцессорные системы, для студентов соот-
ветствующих специальностей, а также профессиональных разработчиков цифровых элек-
тронных систем.
Рекомендовано УМО в области прикладной информатики для студентов высших учебных
заведений, обучающихся по специальности 351400 "Прикладная информатика".
Библиогр. 32
Издание осуществлено при финансовой и технической поддержке
Издательства "Открытые Системы” и компаний "РМ Телеком", Kraftway Computers, "ЭКОМ"
7>кгеЛмчу ЭКОМ
Курс лекций по информационным технологиям
Интернет-Университета Информационных Технологий
www.intuit.ru
Руководитель проекта — А.В. Шкред
Основы микропроцессорной техники
Курс лекций
Серия "Основы информационных технологий"
Формат 60x90 */i6- Уел. печ. л. 27,5. Бумага офсетная.
Подписано в печать 20.08.2003. Тираж 2000 экз. Заказ hfe 3199
ООО "ИНТУИТ.ру" Интернет-Университет Информационных Технологий, www.intuit.ru,
123056, Москва, Электрический пер., 8, стр.З.
Отпечатано с готовых диапозитивов на ФГУП ордена "Знак Почета" Смоленская областная
типография им. В.И. Смирнова, 214000, г. Смоленск, проспект им. Ю. Гагарина, д. 2.
Полное или частичное воспроизведение или размножения каким-либо способом, в том
числе и публикация в Сети, настоящего издания допускается только с письменного
разрешения Интернет-Университета Информационных Технологий.
© Интернет-Университет Информационных Технологий, www.intuit.ru, 2003
ISBN 5-9556-0004-3

О проекте Интернет-Университет Информационных Технологий — это первое в России высшее учебное заведение, которое предоставляет возможность получить дополнительное образование во Всемирной Сети. Wfeb-сайт университета находится по адресу www.intuit.ru. Мы рады, что вы решили расширить свои знания в области ком- пьютерных технологий. Современный мир — это мир компьютеров и информации. Компьютерная индустрия — самый быстрорастущий бек- тор экономики, и ее рост будет продолжаться еще долгое время. Во вре- мена жесткой конкуренции от уровня развития информационных тех- нологий, достижений научной мысли и перспективных инженерных ре- шений зависит успех не только отдельных людей и компаний, но и це- лых стран. Вы выбрали самое подходящее время для изучения компью- терных дисциплин. Профессионалы в области информационных техно- логий сейчас востребованы везде: в науке, экономике, образовании, ме- дицине и других областях, в государственных и частных компаниях, в России и за рубежом. Анализ данных, прогнозы, организация связи, со- здание программного обеспечения, построение моделей процессов — вот далеко не полный список областей применения знаний для компью- терных специалистов. Обучение в университете ведется по собственным учебным планам, разработанным ведущими российскими специалистами на основе между- народных образовательных стандартов Computer Curricula 2001 Computer Science. Изучать учебные курсы можно самостоятельно по учебникам или на сайте Интернет-университета, задания выполняются только на сайте. Для обучения необходимо зарегистрироваться на сайте университета. Удостоверение об окончании учебного курса или специальности выдает- ся при условии выполнения всех заданий к лекциям и успешной сдачи итогового экзамена. Книга, которую Вы держите в руках, очередная в многотомной серии "Основы информационных технологий", выпускаемой Интернет- Университетом Информационных Технологий. В этой серии будут выпущены учебники по всем базовым областям знаний, связанным с компьютерными дисциплинами. Добро пожаловать в Интернет-Университет Информационных Технологий! Анатолий Шкред anatoli@shkred.ru
Предисловие Микропроцессорная техника сейчас все активнее входит в нашу жизнь, постепенно замещая и вытесняя традиционную цифровую технику на "жесткой логике". Универсальность, гибкость, простота проектирования аппаратуры, практически неограниченные возможности по усложнению алгоритмов обработки информации — все это обещает микропроцессорной технике большое будущее. На долю традиционной цифровой техники остаются только узлы и устройства, требующие максимального быстродействия, а также устройства с простейшими алгоритмами обработки информации. Обычная цифровая техника сегодня применяется для увеличения возможностей микропроцессорных систем, для их сопряжения с внешними устройствами, для увеличения их возможностей, то есть играет вспомогательную роль. Таким образом, традиционную цифровую технику в самом недалеком будущем, по- видимому, ждет участь аналоговой техники, область применения которой в свое время сильно сузилась с появлением цифровой. За последние годы издано немало книг, посвященных микро- процессорной технике, внутреннему устройству микропроцессоров, микроконтроллеров, микрокомпьютеров, принципам организации обмена информации и методам построения систем на их основе. Однако зачастую подобные книги не дают читателю представления об особенностях микропроцессорных систем по сравнению с обычными цифровыми системами, об их возможностях, преимуществах, ограничениях и недостатках. В результате в сознании читателя микропроцессорные системы занимают свою обособленную нишу, представляются некой "вешью в себе”, слабо связанной как с цифровой техникой, так и с электроникой вообще. Вопрос о том, когда надо проектировать микропроцессорную систему, а когда имеет смысл ограничиться обычной цифровой системой, остается открытым. К тому же в большинстве книг, на наш взгляд, недостаточно внимания уделяется разъяснению некоторых важнейших специфических понятий микропроцессорной техники. В результате часто наблюдается непонимание тонкостей функционирования микропроцессоров и микропроцессорных систем. Это нередко приводит к тому, что проектировщик не использует значительной части возможностей микропроцессорной системы и применяет неэффективные аппаратные и программные решения. В некоторых работах подробнейшим образом рассматриваются характеристики и возможности каких-нибудь стандартных микро- 4
контроллеров. Такие книги представляют собой пересказ технической документации, справочных материалов фирмы-изготовителя. Это тоже нужно, даже необходимо знать, но прежде не мешает понять, надо ли вообще использовать микроконтроллер данного типа, приведет ли его применение к эффективному решению задачи, соответствуют ли его возможности уровню решаемой проблемы. Данная книга посвящена основам микропроцессорной техники, ее азбуке, базовым понятиям, принципам и методам ее применения. От читателя не требуется знаний о микропроцессорах, но необходимы хотя бы начальные знания по цифровой схемотехнике (желательно предварительно прочесть "Основы цифровой схемотехники. Базовые элементы и схемы, методы проектирования" Ю.В. Новикова). Задача авторов состояла в том, чтобы научить будущего проектировщика цифровых и микропроцессорных систем обоснованно выбирать архитектурные, структурные и схемотехнические решения, рационально распределять выполняемые системой функции между аппаратурой и программным обеспечением, профессионально оптимизировать используемые средства. Конечно, для решения такой сложнейшей задачи одной этой книги недостаточно, но содержащиеся в ней начальные сведения представляют собой тот необходимый минимум знаний, который должен иметь и которым должен свободно и активно пользоваться каждый профессиональный разработчик микропроцес- сорных систем. Любые дополнительные знания, конечно же, не повредят, но и заменить то, что изложено здесь, они не смогут. Книга ни в коем случае не претендует на роль справочника по микросхемам, хотя в ней и разъясняются функции некоторых микросхем. Она скорее должна дать читателю знания, необходимые для того, чтобы в дальнейшем правильно пользоваться всеми имеющимися справочниками; чтобы знать, какие справочники выбрать и что в них искать; чтобы быть готовым с помощью справочников самостоятельно проектировать микропроцессорные системы. Возможно, подход, предлагаемый в данной работе, несколько отличается от общепринятого. Возможно также, что используемый набор терминов не полностью совпадает со стандартным (отечественные стандарты часто меняются). Но главное — научить проектировать микропроцессорные системы, а какие для этого используются подходы и термины, наверное, не так уж принципиально. Книга написана на основе многолетнего личного опыта авторов по разработке микропроцессорных систем различного назначения, а также на базе материала учебных курсов, читаемых авторами, преподавателями кафедры электроники Московского инженерно-физического института (МИФИ). 5
Несколько слов о структуре книги. В первой главе рассматриваются основополагающие принципы микропроцессорной техники, вводится базовая терминология, описы- ваются архитектурные особенности микропроцессорных систем, а также основные типы микропроцессорных систем в зависимости от их возможностей. Вторая глава посвящена принципам организации обмена информацией в микропроцессорных системах. В ней рассматриваются особенности шин, циклы и протоколы обмена в программном режиме, в режиме обработки прерываний, в режиме ПДП. Описаны также основные функции устройств микропроцессорной системы в процессе обмена информацией. Третья глава рассказывает об основных принципах функ- ционирования процессора, о его возможностях и структурных элементах, о системе команд процессора и методах адресации. Также рассмат- риваются принципы сравнения процессоров между собой. Четвертая глава посвящена основным принципам организации однокристальных микроконтроллеров, назначению их основных узлов и принципам взаимодействия между узлами. В пятой главе более подробно рассматриваются особенности микро- контроллеров на примере одного из самых популярных семейств PIC. Описаны все узлы микроконтроллеров, методы обмена информацией, система команд, особенности программирования и средства разработки, применяемые при проектировании систем на базе этих микроконтроллеров. В шестой главе описываются методы проектирования аппаратных и программных средств микропроцессорных систем на основе микроконтроллеров. Подробно описаны лабораторная установка, используемая при обучении студентов МИФИ, и программы, позволяющие реализовать различные алгоритмы ее функционирования. Седьмая глава посвящена организации персонального компьютера как наиболее развитой и сложной микропроцессорной системы. Рассматривается эволюция процессоров персональных компьютеров, описана организация памяти и системных устройств персонального компьютера. Восьмая глава знакомит читателей с внешними интерфейсами персонального компьютера, которые необходимо знать для построения сложных микропроцессорных систем различного назначения. Приведены подробные описания часто используемых интерфейсов. Главы 1, 2, 3, 7 и 8 написаны доцентом, к. т. н. Ю.В. Новиковым. Главы 4, 5 и 6 написаны профессором, д. т. н. П.К. Скоробогатовым. Авторы надеются, что эта книга реально поможет читателям освоить микропроцессорную технику. Л
Об авторе Новиков Юрий Витальевич Кандидат технических наук, доцент факультета автоматики и электроники МИФИ, автор пяти книг по электронике и компьютерным локальным сетям "Разработка устройств сопряжения для персонального компьютера типа IBM PC", "Аппаратура локальных сетей: функции, выбор, разработка", "Локальные сети: архитектура, алгоритмы, проектирование", "Основы цифровой схемотехники. Базовые элементы и схемы, методы проектирования", "Основы микропроцессорной техники". Скоробогатов Петр Константинович Доктор технических наук, профессор факультета автоматики и электроники МИФИ, автор более двухсот научных трудов и изобретений, в том числе — более десяти учебных пособий.
Лекции Лекция 1. Философия микропроцессорной техники..............17 Лекция 2. Шины микропроцессорной системы и циклы обмена....43 Лекция 3. Функции устройств магистрали.....................65 Лекция 4. Адресация операндов и регистры процессора........87 Лекция 5. Система команд процессора.......................103 Лекция 6. Процессорное ядро и память микроконтроллеров....119 Лекция 7. Организация связи микроконтроллера с внешней средой и временем..................... 135 Лекция 8. Вспомогательные аппаратные средства микроконтроллера.................................151 Лекция 9. Аппаратные средства микроконтроллеров серии PIC.. 169 Лекция 10. Специальные функции и система команд микроконтроллеров серии PIC......................207 Лекция И. Особенности разработки цифровых устройств на основе микроконтроллеров......................229 Лекция 12. Разработка программного обеспечения для Р1С-микроконтроллеров........................243 Лекция 13. Архитектура и процессоры персональных компьютеров......................................285 Лекция 14. Устройства, входящие в состав персонального компьютера.......................................319 Лекция 15. Системная магистраль ISA........................345 Лекция 16. Дополнительные интерфейсы персонального компьютера.......................................371
Содержание Глава 1. Философия микропроцессорной техники.....................17 Лекция 1. Философия микропроцессорной техники....................17 1.1. Что такое микропроцессор?................................20 1.2. Шинная структура связей..................................23 1.3. Режимы работы микропроцессорной системы..................28 1.4. Архитектура микропроцессорных систем.....................33 1.5. Типы микропроцессорных систем............................35 Глава 2. Организация обмена информацией..........................43 Лекция 2. Шины микропроцессорной системы и циклы обмена..........43 2.1. Шины микропроцессорной системы...........................44 2.2. Циклы обмена информацией.................................48 2.2.1. Циклы программного обмена...........................48 2.2.2. Циклы обмена по прерываниям.........................52 2.2.3. Циклы обмена в режиме ПДП.................................................. 55 2.3. Прохождение сигналов по магистрали.......................57 Лекция 3. Функции устройств магистрали...........................65 2.4. Функции устройств магистрали.............................65 2.4.1. Функции процессора..................................65 2.4.2. Функции памяти......................................72 2.4.3. Функции устройств ввода/вывода......................78 Глава 3. функционирование процессора.............................87 Лекция 4. Адресация операндов и регистры процессора..............87 3.1. Адресация операндов......................................88 3.1.1. Методы адресации....................................88 3.1.2. Сегментирование памяти..............................91 3.1.3. Адресация байтов и слов.............................95 3.2. Регистры процессора......................................95 Лекция 5. Система команд процессора.............................. 103 3.3. Система команд процессора.............................. 103 3.3.1. Команды пересылки данных............................ 104 3.3.2. Арифметические команды.............................. 105 3.3.3. Логические команды.................................. 106 3.3.4. Команды переходов................................... 108 3.4. Быстродействие процессора...............................111 11
Глава 4. Организация микроконтроллеров............................119 Лекция 6. Процессорное ядро и память микроконтроллеров............119 4.1. Классификация и структура микроконтроллеров..............119 4.2. Процессорное ядро микроконтроллера.......................121 4.2.1. Структура процессорного ядра МК.....................121 4.2.2. Система команд процессора МК....................... 125 4.2.3. Схема синхронизации МК....................................................... 126 4.3. Память программ и данных МК............................. 126 4.3.1. Память программ.................................... 126 4.3.2. Память данных...................................... 128 4.3.3. Регистры МК........................................ 128 4.3.4. Стек МК............................................ 129 4.3.5. Внешняя память..................................... 130 Лекция 7. Организация связи микроконтроллера с внешней средой и временем...................................... 135 4.4. Порты ввода/вывода............:.......................... 135 4.5. Таймеры и процессоры событий............................ 136 4.6. Модуль прерываний МК.................................... 148 Лекция 8. Вспомогательные аппаратные средства микроконтроллера..................................................151 4.7. Минимизация энергопотребления в системах на основе МК.... 151 4.8. Тактовые генераторы МК.................................. 153 4.9. Аппаратные средства обеспечения надежной работы МК........155 4.9.1. Схема формирования сигнала сброса МК............... 155 4.9.2. Блок детектирования пониженного напряжения питания..157 4.9.3. Сторожевой таймер.................................. 158 4.10. Дополнительные модули МК............................... 159 4.10.1. Модули последовательного ввода/вывода............. 159 4.10.2. Модули аналогового ввода/вывода....................161 Глава 5. Однокристальные микроконтроллеры серии PIC.............. 169 Лекция 9. Аппаратные средства микроконтроллеров серии PIC......... 169 5.1. Основные особенности микроконтроллеров серии PIC.......... 169 5.1.1. Состав и назначение семейств Р1С-контроллеров...... 169 5.1.2. Микроконтроллеры семейств PIC16CXXX и PIC17CXXX.....171 5.1.3. Особенности архитектуры микроконтроллеров семейства PIC16CXXX....................................... 172 5.2. Микроконтроллеры подгруппы PIC16F8X.................... 173 5.2.1. Основные характеристики............................ YTi 5.2.2. Особенности архитектуры............................ 175 5.2.3. Схема тактирования и цикл выполнения команды....... 178 12
5.2.4. Организация памяти программ и стека............... 179 5.2.5. Организация памяти данных......................... 180 5.2.6. Регистры специального назначения.................. 182 5.2.7. Счетчик команд.................................... 186 5.2.8. Прямая и косвенная адресации...................... 187 5.2.9. Порты ввода/вывода................................ 188 5.2.10. Модуль таймера и регистр таймера................. 193 5.2.11. Память данных в РПЗУ (EEPROM).................... 195 5.2.12. Организация прерываний........................... 197 Лекция 10. Специальные функции и система команд микроконтроллеров серии PIC.....................................207 5.2.13. Специальные функции...............................207 5.3. Система команд микроконтроллеров подгруппы PIC16F8X.....213 5.3.1. Перечень и форматы команд..........................213 5.3.2. Команды работы с байтами...........................219 5.3.3. Команды работы с битами............................220 5.3.4. Команды управления и работы с константами..........220 5.3.5. Особенности программирования и отладки............................ 222 Глава 6. Проектирование устройств на микроконтроллерах..........229 Лекция 11. Особенности разработки цифровых устройств на основе микроконтроллеров.....................................229 6.1. Разработка микропроцессорной системы на основе микроконтроллера.............................................229 6.1.1. Основные этапы разработки..........................229 6.1.2. Разработка и отладка аппаратных средств............234 6.1.3. Разработка и отладка программного обеспечения......234 6.1.4. Методы и средства совместной отладки аппаратных и программных средств.....................................235 Лекция 12. Разработка программного обеспечения для Р1С-микроконтроллеров.......................................243 6.2. Разработка программного обеспечения для Р1С-микроконтроллеров....................................243 6.2.1. Ассемблер MPASM....................................243 Метки..................................................246 Мнемоники..............................................246 Операнды...............................................247 Комментарии............................................250 Расширения файлов, используемые MPASM и утилитами......250 Директивы языка........................................251 6.2.2. Компоновщик MPLINK.................................256 13
6.2.3. Менеджер библиотек MPLIB........................... 257 6.2.4. Симулятор MPSIM...................................257 6.3. Практика программировайия Р1С-микроконтроллеров........262 6.3.1. Описание лабораторного макета.....................262 6.3.2. Инициализация микроконтроллера макета.............263 6.3.3. Программирование учебных задач....................266 Глава 7. Организация персонального компьютера..................285 Лекция 13. Архитектура и процессоры персональных компьютеров.... 285 7.1. Архитектура персонального компьютера...................286 7.2. Процессоры персональных компьютеров....................291 7.2.1. Особенности процессоров 8086/8088................ 293 7.2.2. Особенности процессора 80286..................... 295 7.2.3. Особенности процессора 80386..................... 300 7.2.4. Особенности процессора 486....................... 306 7.2.5. Особенности процессоров Pentium...................310 Лекция 14. Устройства, входящие в состав персонального компьютера.......................................319 7.3. Память персонального компьютера........................319 7.3.1. Оперативная память................................319 7.3.2. Постоянная память.................................323 7.4. Системные устройства...................................327 7.4.1. Тактовый генератор................................327 7.4.2. Контроллер прерываний.............................328 7.4.3. Контроллер прямого доступа к памяти...............330 7.4.4. Системный таймер и часы реального времени.........331 7.5. Средства интерфейса пользователя.......................333 7.6. Внешняя память.........................................338 Глава 8. Интерфейсы персонального компьютера...................345 Лекция 15. Системная магистраль ISA............................345 8.1. Системная магистраль ISA...............................346 8.1.1. Назначение сигналов ISA...........................350 8.1.2. Циклы обмена по ISA...............................352 8.1.3. Распределение ресурсов компьютера.................357 Лекция 16. Дополнительные интерфейсы персонального компьютера.......................................371 8.2. Интерфейс Centronics...................................371 8.3. Интерфейс RS-232C......................................374 8.4. Другие интерфейсы компьютера...........................378 14
Приложение.............................................................389 Системы команд некоторых микропроцессоров.......................389 Система команд микропроцессора i8080/8085....................... 389 Система команд микропроцессора Т-11 фирмы DEC....................393 Система команд микропроцессора MC68000......................... 396 Система команд микропроцессора 18086/8088.„......................400 Система команд микропроцессора i486............................ 404 Система команд микроконтроллеров семейства MCS-51 (фирмы Intel, Atmel, Analog Devices)......................414 Словарь терминов и сокращений..........................................416 Список литературы......................................................431
Лекция 1 философия микропроцессорной техники Глава 1. Философия микропроцессорной техники Лекция 1. Философия микропроцессорной техники В этой лекции рассказывается о базовой терминологии микропроцессорной техники, о принципах организации микропроцессорных систем, о структуре связей, режимах работы и об основных типах микропроцессорных систем. Ключевые слова: микропроцессор, микропроцессорная система, шина, архитектура, память, устройство ввода-вывода. В этой главе рассматриваются базовые концепции, которые лежат в основе любой микропроцессорной системы — от простейшего микрокон- троллера до сложного компьютера. Именно в этом смысле здесь исполь- зуется термин «философия». Для начала несколько основных определений. • Электронная система — в данном случае это любой электронный узел, блок, прибор или комплекс, производящий обработку информации. • Задача — это набор функций, выполнение которых требуется от элек- тронной системы. • Быстродействие — это показатель скорости выполнения электрон- ной системой ее функций. • Гибкость — это способность системы подстраиваться под различные задачи. • Избыточность — это показатель степени соответствия возможностей системы решаемой данной системой задаче. • Интерфейс — соглашение об обмене информацией, правила обмена информацией, подразумевающие электрическую, логическую и кон- структивную совместимость устройств, участвующих в обмене. Дру- гое название — сопряжение. Микропроцессорная система может рассматриваться как частный слу- чай электронной системы, предназначенной для обработки входных сиг- налов и выдачи выходных сигналов (рис. 1.1). В качестве входных и вы- ходных сигналов при этом могут использоваться аналоговые сигналы, одиночные цифровые сигналы, цифровые коды, последовательности циф- ровых кодов. Внутри системы может производиться хранение, накопле- ние сигналов (или информации), но сутЕхуг этого немётптется. Если ewe- s’,' ” ’^7 2__3199 17 — 1 чЛэхх t? инв. Na
Глава 1 Философия микропроцессорной техники тема цифровая (а микропроцессорные системы относятся к разряду циф- ровых), то входные аналоговые сигналы преобразуются в последователь- ности кодов выборок с помощью АЦП, а выходные аналоговые сигналы формируются из последовательности кодов выборок с помощью ЦАП. Обработка и хранение информации производятся в цифровом виде. Характерная особенность традиционной цифровой системы состоит в том, что алгоритмы обработки и хранения информации в ней жестко свя- заны со схемотехникой системы. То есть изменение этих алгоритмов воз- можно только путем изменения структуры системы, замены электронных узлов, входящих в систему, и/или связей между ними. Например, если нам нужна дополнительная операция суммирования, то необходимо добавить в структуру системы лишний сумматор. Или если нужна дополнительная функция хранения кода в течение одного такта, то мы должны добавить в структуру еще один регистр. Естественно, это практически невозможно сделать в процессе эксплуатации, обязательно нужен новый производ- ственный цикл проектирования, изготовления, отладки всей системы. Именно поэтому традиционная цифровая система часто называется сис- темой на «жесткой логике». Аналоговые сигналы Цифровые сигналы Цифровые коды Электронная система (обработка, хранение) Рис. 1.1. Электронная система. Аналоговые сигналы Цифровые сигналы Цифровые коды Любая система на «жесткой логике» обязательно представляет собой специализированную систему, настроенную исключительно на одну за- дачу или (реже) на несколько близких, заранее известных задач. Это имеет свои бесспорные преимущества. Во-первых, специализированная система (в отличие от универсальной) никогда не имеет аппаратурной избыточности, то есть каждый ее элемент обязательно работает в полную силу (конечно, если эта система грамотно спроектирована). Во-вторых, именно специализированная система может обеспечить максимально высокое быстродействие, так как скорость выполнения ал- горитмов обработки информации определяется в ней только быстродей- ствием отдельных логических элементов и выбранной схемой путей про- 18
Лекция 1 Философия микропроцессорной техники хождения информации. А именно логические элементы всегда обладают максимальным на данный момент быстродействием. Но в то же время большим недостатком цифровой системы на «жест- кой логике» является то, что для каждой новой задачи ее надо проектиро- вать и изготавливать заново. Это процесс длительный, дорогостоящий, требующий высокой квалификации исполнителей. А если решаемая за- дача вдруг изменяется, то вся аппаратура должна быть полностью заменена. В нашем быстро меняющемся мире это довольно расточительно. Путь преодоления этого недостатка довольно очевиден: надо постро- ить такую систему, которая могла бы легко адаптироваться под любую задачу, перестраиваться с одного алгоритма работы на другой без изменения аппаратуры. И задавать тот или иной алгоритм мы тогда могли бы путем ввода в систему некой дополнительной управляющей информации, программы работы системы (рис. 1.2). Тогда система станет универсальной, или программируемой, не жесткой, а гибкой. Именно это и обеспечивает микропроцессорная система. Аналоговые сигналы Цифровые сигналы Цифровые коды Электронная система (обработка, хранение) Аналоговые сигналы Цифровые сигналы Цифровые коды Управляющая информация (программа) Рис. 1.2. Программируемая (она же универсальная) электронная система. Но любая универсальность обязательно приводит к избыточности. Ведь решение максимально трудной задачи требует гораздо больше средств, чем решение максимально простой задачи. Поэтому сложность универсальной системы должна быть такой, чтобы обеспечивать реше- ние самой трудной задачи, а при решении простой задачи система будет работать далеко не в полную силу, будет использовать не все свои ресур- сы. И чем проще решаемая задача, тем больше избыточность, и тем ме- нее оправданной становится универсальность. Избыточность ведет к уве- личению стоимости системы, снижению ее надежности, увеличению потребляемой мощности и т.д. 19
Глава 1 Философия микр- процессорной техники Кроме того, универсальность, как правило, приводит к существенному снижению быстродействия. Оптимизировать универсальную систему так, чтобы каждая новая задача решалась максимально быстро, попросту невоз- можно. Общее правило таково: чем больше универсальность, гибкость, тем меньше быстродействие. Более того, для универсальных систем не суще- ствует таких задач (пусть даже и самых простых), которые бы они решали с максимально возможным быстродействием. За все приходится платить. Таким образом, можно сделать следующий вывод. Системы на «жест- кой логике» хороши там, где решаемая задача не меняется длительное вре- мя, где требуется самое высокое быстродействие, где алгоритмы обработ- ки информации предельно просты. А универсальные, программируемые системы хороши там, где часто меняются решаемые задачи, где высокое быстродействие не слишком важно, где алгоритмы обработки информа- ции сложные. То есть любая система хороша на своем месте. Однако за последние десятилетия быстродействие универсальных (мик- ропроцессорных) систем сильно выросло (на несколько порядков). К тому же большой объем выпуска микросхем для этих систем привел к резкому снижению их стоимости. В результате область применения систем на «же- сткой логике» резко сузилась. Более того, высокими темпами развиваются сейчас программируемые системы, предназначенные для решения одной задачи или нескольких близких задач. Они удачно совмещают в себе как достоинства систем на «жесткой логике», так и программируемых систем, обеспечивая сочетание достаточно высокого быстродействия и необхо- димой гибкости. Так что вытеснение «жесткой логики» продолжается. 1.1. Что такое микропроцессор? Ядром любой микропроцессорной системы является микропроцессор или просто процессор (от английского processor). Перевести на русский язык это слово правильнее всего как «обработчик», так как именно микропроцессор — это тот узел, блок, который производит всю обработку информации внутри микропроцессорной системы. Остальные узлы выполняют всего лишь вспомогательные функции: хранение информации (в том числе и управляю- щей информации, то есть программы), связи с внешними устройствами, связи с пользователем и т.д. Процессор заменяет практически всю «жесткую логику», которая понадобилась бы в случае традиционной цифровой систе- мы. Он выполняет арифметические функции (сложение, умножение и т.д.), логические функции (сдвиг, сравнение, маскирование кодов и т.д.), времен- ное хранение кодов (во внутренних регистрах), пересылку кодов между узла- ми микропроцессорной системы и многое другое. Количество таких элемен- тарных операций, выполняемых процессором, может достигать нескольких сотен. Процессор можно сравнить с мозгом системы. 20
Лекция 1 Философия микропроцессорной техники Но при этом надо учитывать, что все свои операции процессор выпол- няет последовательно, то есть одну за другой, по очереди. Конечно, суще- ствуют процессоры с параллельным выполнением некоторых операций, встречаются также микропроцессорные системы, в которых несколько процессоров работают над одной задачей параллельно, но это редкие ис- ключения. С одной стороны, последовательное выполнение операций — несомненное достоинство, так как позволяет с помощью всего одного про- цессора выполнять любые, самые сложные алгоритмы обработки инфор- мации. Но, с другой стороны, последовательное выполнение операций при- водит к тому, что время выполнения алгоритма зависит от его сложности. Простые алгоритмы выполняются быстрее сложных. То есть микропроцес- сорная система способна сделать все, но работает она не слишком быстро, ведь все информационные потоки приходится пропускать через один- единственный узел — микропроцессор (рис. 1.3). В традиционной цифро- вой системе можно легко организовать параллельную обработку всех потоков информации, правда, ценой усложнения схемы. Выходные коды (программа) Рис. 1.3. Информационные потоки в микропроцессорной системе. Итак, микропроцессор способен выполнять множество операций. Но от- куда он узнает, какую операцию ему надо выполнять в данный момент? Имен- но это определяется управляющей информацией, программой. Программа представляет собой набор команд (инструкций), то есть цифровых кодов, рас- шифровав которые, процессор узнает, что ему надо делать. Программа от на- чала и до конца составляется человеком, программистом, а процессор высту- пает в роли послушного исполнителя этой программы, никакой инициативы он не проявляет (если, конечно, исправен). Поэтому сравнение процессора с мозгом не слишком корректно. Он всего лишь исполнитель того алгоритма, который заранее составил для него человек. Любое отклонение от этого ал- горитма может быть вызвано только неисправностью процессора или каких- нибудь других узлов микропроцессорной системы. 21
Глава 1 Философия мик^оп^юцесссфной техники Все команды, выполняемые процессором, образуют систему команд процессора. Структура и объем системы команд процессора определяют его быстродействие, гибкость, удобство использования. Всего команд у процессора может быть от нескольких десятков до нескольких сотен. Си- стема команд может быть рассчитана на узкий круг решаемых задач (у спе- циализированных процессоров) или на максимально широкий круг задач (у универсальных процессоров). Коды команд могут иметь различное ко- личество разрядов (занимать от одного до нескольких байт). Каждая ко- манда имеет свое время выполнения, поэтому время выполнения всей про- граммы зависит не только от количества команд в программе, но и от того, какие именно команды используются. Для выполнения команд в структуру процессора входят внутренние ре- гистры, арифметико-логическое устройство (АЛУ, ALU — Arithmetic Logic Unit), мультиплексоры, буферы, регистры и другие узлы. Работа всех уз- лов синхронизируется общим внешним тактовым сигналом процессора. То есть процессор представляет собой довольно сложное цифровое уст- ройство (рис. 1.4). Микропроцессор Арифметическо-логическое устройство (АЛУ) Схема управления выборкой команд Логика управления Регистр признаков PSW Схема управления прерываниями Схема управления ПДП Рис. 1.4. Пример структуры простейшего процессора. Впрочем, для разработчика микропроцессорных систем информация о тонкостях внутренней структуры процессора не слишком важна. Разработ- чик должен рассматривать процессор как «черный ящик», который в ответ на входные и управляющие коды производит ту или иную операцию и вы- дает выходные сигналы. Разработчику необходимо знать систему команд, 22
Лекция 1 Философия микропроцессорной техники режимы работы процессора, а также правила взаимодействия процессора с внешним миром или, как их еще называют, протоколы обмена информацией. О внутренней структуре процессора надо знать только то, что необходимо для выбора той или иной команды, того или иного режима работы. 1.2. Шинная структура связей Для достижения максимальной универсальности и упрощения прото- колов обмена информацией в микропроцессорных системах применяется так называемая шинная структура связей между отдельными устройства- ми, входящими в систему. Суть шинной структуры связей сводится к сле- дующему. При классической структуре связей (рис. 1.5) все сигналы и коды меж- ду устройствами передаются по отдельным линиям связи. Каждое устрой- ство, входящее в систему, передает свои сигналы и коды независимо от других устройств. При этом в системе получается очень много линий свя- зи и разных протоколов обмена информацией. При шинной структуре связей (рис. 1.6) все сигналы между устройства- ми передаются по одним и тем же линиям связи, но в разное время (это называется мультиплексированной передачей). Причем передача по всем линиям связи может осуществляться в обоих направлениях (так называе- мая двунаправленная передача). В результате количество линий связи су- щественно сокращается, а правила обмена (протоколы) упрощаются. Груп- па линий связи, по которым передаются сигналы или коды как раз и называется шиной (англ. bus). Понятно, что при шинной структуре связей легко осуществляется пе- ресылка всех информационных потоков в нужном направлении, напри- мер, их можно пропустить через один процессор, что очень важно для микропроцессорной системы. Однако при шинной структуре связей вся информация передается по линиям связи последовательно во времени, 23
Глава 1 Философия микропроцессорной техники по очереди, что снижает быстродействие системы по сравнению с клас- сической структурой связей. Большое достоинство шинной структуры связей состоит в том, что все устройства, подключенные к шине, должны принимать и передавать ин- формацию по одним и тем же правилам (протоколам обмена информаци- ей по шине). Соответственно, все узлы, отвечающие за обмен с шиной в этих устройствах, должны быть единообразны, унифицированы. Существенный недостаток шинной структуры связан с тем, что все ус- тройства подключаются к каждой линии связи параллельно. Поэтому лю- бая неисправность любого устройства может вывести из строя всю систе- му, если она портит линию связи. По этой же причине отладка системы с шинной структурой связей довольно сложна и обычно требует специаль- ного оборудования. В системах с шинной структурой связей применяют все три существу- ющие разновидности выходных каскадов цифровых микросхем: • стандартный выход или выход с двумя состояниями (обозначается 2С, 2S, реже ТТЛ, TTL); • выход с открытым коллектором (обозначается ОК, ОС); • выход с тремя состояниями или (что то же самое) с возможностью отключения (обозначается ЗС, 3S). Упрощенно эти три типа выходных каскадов могут быть представлены в виде схем на рис. 1.7. У выхода 2С два ключа замыкаются по очереди, что соответствует уров- ням логической единицы (верхний ключ замкнут) и логического нуля (нижний ключ замкнут). У выхода ОК замкнутый ключ формирует уро- вень логического нуля, разомкнутый — логической единицы. У выхода ЗС ключи могут замыкаться по очереди (как в случае 2С), а могут размыкать- ся одновременно, образуя третье, высокоимпедансное, состояние. Пере- ход в третье состояние (Z-состояние) управляется сигналом на специаль- ном входе EZ. 24
Рис. 1.7. Три типа выходов цифровых микросхем. Выходные каскады типов ЗС и ОК позволяют объединять несколько выходов микросхем для получения мультиплексированных (рис. 1.8) или двунаправленных (рис. 1.9) линий. Рис. 1.8. Мультиплексированная линия. Рис. 1.9. Двунаправленная линия. При этом в случае выходов ЗС необходимо обеспечить, чтобы на линии все- гда работал только один активный выход, а все остальные выходы находились бы в это время в третьем состоянии, иначе возможны конфликты. Объединен- ные выходы ОК могут работать все одновременно, без всяких конфликтов. Типичная структура микропроцессорной системы приведена на рис. 1.10. Она включает в себя три основных типа устройств: • процессор; • память, включающую оперативную память (ОЗУ, RAM — Random Access Memory) и постоянную память (ПЗУ, ROM —Read Only Memory), которая служит для хранения данных и программ; • устройства ввода/вывода (УВВ, I/O — Input/Output Devices), служа- щие для связи микропроцессорной системы с внешними устройства- ми, для приема (ввода, чтения, Read) входных сигналов и выдачи (вы- вода, записи, Write) выходных сигналов. 25
Глаца 1 Философия микропроцессорной техники Выходные сигналы Рис. 1.10. Структура микропроцессорной системы. Все устройства микропроцессорной системы объединяются общей си- стемной шиной (она же называется еще системной магистралью или кана- лом). Системная магистраль включает в себя четыре основные шины ниж- него уровня: • шина адреса (Address Bus); • шина данных (Data Bus); • шина управления (Control Bus); • шина питания (Power Bus). Шина адреса служит для определения адреса (номера) устройства, с которым процессор обменивается информацией в данный момент. Каж- дому устройству (кроме процессора), каждой ячейке памяти в микропро- цессорной системе присваивается собственный адрес. Когда код какого- то адреса выставляется процессором на шине адреса, устройство, которому этот адрес приписан, понимает, что ему предстоит обмен информацией. Шина адреса может быть однонаправленной или двунаправленной. Шина данных — это основная шина, которая используется для переда- чи информационных кодов между всеми устройствами микропроцессор- ной системы. Обычно в пересылке информации участвует процессор, ко- торый передает код данных в какое-то устройство или в ячейку памяти или же принимает код данных из какого-то устройства или из ячейкиша- 26
Лекция 1 Философия микропроцессорной техники мяти. Но возможна также и передача информации между устройствами без участия процессора. Шина данных всегда двунаправленная. Шина управления в отличие от шины адреса и шины данных состоит из отдельных управляющих сигналов. Каждый из этих сигналов во вре- мя обмена информацией имеет свою функцию. Некоторые сигналы слу- жат для стробирования передаваемых или принимаемых данных (то есть определяют моменты времени, когда информационный код выставлен на шину данных). Другие управляющие сигналы могут использоваться для подтверждения приема данных, для сброса всех устройств в исход- ное состояние, для тактирования всех устройств и т.д. Линии шины уп- равления могут быть однонаправленными или двунаправленными. Наконец, шина питания предназначена не для пересылки информаци- онных сигналов, а для питания системы. Она состоит из линий питания и общего провода. В микропроцессорной системе может быть один источ- ник питания (чаще +5 В) или несколько источников питания (обычно еще -5 В, +12 В и -12 В). Каждому напряжению питания соответствует своя линия связи. Все устройства подключены к этим линиям параллельно. Если в микропроцессорную систему надо ввести входной код (или вход- ной сигнал), то процессор по шине адреса обращается к нужному устройству ввода/вывода и принимает по шине данных входную информацию. Если из микропроцессорной системы надо вывести выходной код (или выходной сигнал), то процессор обращается по шине адреса к нужному устройству ввода/вывода и передает ему по шине данных выходную информацию. Если информация должна пройти сложную многоступенчатую обработ- ку, то процессор может хранить промежуточные результаты в системной опе- ративной памяти. Для обращения к любой ячейке памяти процессор выстав- ляет ее адрес на шину адреса и передает в нее информационный код по шине данных или же принимает из нее информационный код по шине данных. В памяти (оперативной и постоянной) находятся также и управляющие коды (команды выполняемой процессором программы), которые процессор также читает по шине данных с адресацией по шине адреса. Постоянная память используется в основном для хранения программы начального пуска микро- процессорной системы, которая выполняется каждый раз после включения питания. Информация в нее заносится изготовителем раз и навсегда. Таким образом, в микропроцессорной системе все информационные коды и коды команд передаются по шинам последовательно, по очереди. Это определяет сравнительно невысокое быстродействие микропроцес- сорной системы. Оно ограничено обычно даже не быстродействием про- цессора (которое тоже очень важно) и не скоростью обмена по системной шине (магистрали), а именно последовательным характером передачи ин- формации по системной шине (магистрали). 27
Глава 1 Философия микропроцессорной техники - " — ' — |^!и|,1,' g."1., ,-L. I ,— !— У. К!!!! Я.. L’Si.. I. Важно учитывать, что устройства ввода/вывода чаще всего представ- ляют собой устройства на «жесткой логике». На них может быть возложена часть функций, выполняемых микропроцессорной системой. Поэтому у разработчика всегда имеется возможность перераспределять функции си- стемы между аппаратной и программной реализациями оптимальным об- разом. Аппаратная реализация ускоряет выполнение функции, но имеет недостаточную гибкость. Программная реализация значительно медлен- нее, но обеспечивает высокую гибкость. Аппаратная реализация функций увеличивает стоимость системы и ее энергопотребление, программная — не увеличивает. Чаще всего применяется комбинирование аппаратных и программных функций. Иногда устройства ввода/вывода имеют в своем составе процессор, то есть представляют собой небольшую специализированную микропроцес- сорную систему. Это позволяет переложить часть программных функций на устройства ввода/вывода, разгрузив центральный процессор системы. 1.3. Режимы работы микропроцессорной системы Как уже отмечалось, микропроцессорная система обеспечивает боль- шую гибкость работы, она способна настраиваться на любую задачу. Гиб- кость эта обусловлена прежде всего тем, что функции, выполняемые си- стемой, определяются программой (программным обеспечением, software), которую выполняет процессор. Аппаратура (аппаратное обеспечение, hardware) остается неизменной при любой задаче. Записывая в память си- стемы программу, можно заставить микропроцессорную систему выпол- нять любую задачу, поддерживаемую данной аппаратурой. К тому же шин- ная организация связей микропроцессорной системы позволяет довольно легко заменять аппаратные модули, например, заменять память на новую большего объема или более высокого быстродействия, добавлять или мо- дернизировать устройства ввода/вывода, наконец, заменять процессор на более мощный. Это также позволяет увеличить гибкость системы, про- длить ее жизнь при любом изменении требований к ней. Но гибкость микропроцессорной системы определяется не только этим. Настраиваться на задачу помогает еще и выбор режима работы системы, то есть режима обмена информацией по системной магистрали (шине). Практически любая развитая микропроцессорная система (в том чис- ле и компьютер) под держивает три основных режима обмена по магист- рали: • программный обмен информацией; • обмен с использованием прерываний (Interrupts); • обмен с использованием прямого доступа к памяти (ПДП, DMA — Direct Memory Access). (, 28
Лекция 1 Философия микропроцессорной техники Программный обмен информацией является основным в любой микро- процессорной системе. Он предусмотрен всегда, без него невозможны дру- гие режимы обмена. В этом режиме процессор является единоличным хо- зяином (или задатчиком, Master) системной магистрали. Все операции (циклы) обмена информацией в данном случае инициируются только про- цессором, все они выполняются строго в порядке, предписанном испол- няемой программой. Процессор читает (выбирает) из памяти коды команд и исполняет их, читая данные из памяти или из устройства ввода/вывода, обраба- тывая их, записывая данные в память или передавая их в устройство ввода/вывода. Путь процессора по программе может быть линейным, циклическим, может содержать переходы (прыжки), но он всегда не- прерывен и полностью находится под контролем процессора. Ни на какие внешние события, не связанные с программой, процессор не ре- агирует (рис. 1.11). Все сигналы на магистрали в данном случае конт- ролируются процессором. Выполнение команд Последовательно Команда 1 Команда 2 Команда 3 Команда N Цикл Прыжок Команда N+1 Команда N+2 Команда N+3 Команда N+4 Команда N+5 > Программа Рис. 1.11. Программный обмен информацией. Обмен по прерываниям используется тогда, когда необходима реакция микропроцессорной системы на какое-то внешнее событие, на приход внешнего сигнала. В случае компьютера внешним событием может быть, например, нажатие на клавишу клавиатуры или приход по локальной сети пакета данных. Компьютер должен реагировать на это, соответственно, выводом символа на экран или же чтением и обработкой принятого по сети пакета. В общем случае организовать реакцию на внешнее событие можно тре- мя различными путями: 29
Глава 1 Философия микропроцессорной техники • с помощью постоянного программного контроля факта наступле- ния события (так называемый метод опроса флага или polling); • с помощью прерывания, то есть насильственного перевода процес- сора с выполнения текущей программы на выполнение экстренно необходимой программы; • с помощью прямого доступа к памяти, то есть без участия процессо- ра при его отключении от системной магистрали. Проиллюстрировать эти три способа можно следующим простым при- мером. Допустим, вы готовите себе завтрак, поставив на плиту кипятиться молоко. Естественно, на закипание молока надо реагировать, причем сроч- но. Как это организовать? Первый путь — постоянно следить за молоком, но тогда вы ничего другого не сможете делать. Правильнее будет регуляр- но поглядывать на молоко, делая одновременно что-то другое. Это про- граммный режим с опросом флага. Второй путь — установить на кастрю- лю с молоком датчик, который подаст звуковой сигнал при закипании молока, и спокойно заниматься другими делами. Услышав сигнал, вы вык- лючите молоко. Правда, возможно, вам придется сначала закончить то, что вы начали делать, так что ваша реакция будет медленнее, чем в первом случае. Наконец, третий путь состоит в том, чтобы соединить датчик на кастрюле с управлением плитой так, чтобы при закипании молока горелка была выключена без вашего участия (правда, аналогия с ПДП здесь не очень точная, так как в данном случае на момент выполнения действия вас не отвлекают от работы). Первый случай с опросом флага реализуется в микропроцессорной си- стеме постоянным чтением информации процессором из устройства вво- да/вывода, связанного с тем внешним устройством, на поведение которо- го необходимо срочно реагировать. Во втором случае в режиме прерывания процессор, получив запрос пре- рывания от внешнего устройства (часто называемый IRQ — Interrupt ReQuest), заканчивает выполнение текущей команды и переходит к про- грамме обработки прерывания. Закончив выполнение программы обра- ботки прерывания, он возвращается к прерванной программе с той точ- ки, где его прервали (рис. 1.12). Здесь важно то, что вся работа, как и в случае программного режима, осуществляется самим процессором, внешнее событие просто временно отвлекает его. Реакция на внешнее событие по прерыванию в общем слу- чае медленнее, чем при программном режиме. Как и в случае программ- ного обмена, здесь все сигналы на магистрали выставляются процессо- ром, то есть он полностью контролирует магистраль. Для обслуживания прерываний в систему иногда вводится специаль- ный модуль контроллера прерываний, но он в обмене информацией не 30
Лекция 1 Философия ми» . процессорной техники участвует. Его задача состоит в том, чтобы упростить работу процессора с внешними запросами прерываний. Этот контроллер обычно программно управляется процессором по системной магистрали. Основная программа Рис. 1.12. Обслуживание прерывания. Естественно, никакого ускорения работы системы прерывание не дает. Его применение позволяет только отказаться от постоянного опроса фла- га внешнего события и временно, до наступления внешнего события, за- нять процессор выполнением каких-то других задач. Прямой доступ к памяти (ПДП, DMA) — это режим, принципиально отличающийся от двух ранее рассмотренных режимов тем, что обмен по системной шине идет без участия процессора. Внешнее устройство, требующее обслуживания, сигнализирует процессору, что режим ПДП необходим, в ответ на это процессор заканчивает выполнение теку- щей команды и отключается от всех шин, сигнализируя запросивше- му устройству, что обмен в режиме ПДП можно начинать. Операция ПДП сводится к пересылке информации из устройства ввода/ вывода в память или же из памяти в устройство ввода/вывода. Когда пересыл- ка информации будет закончена, процессор вновь возвращается к прерванной программе, продолжая ее с той точки, где его прервали (рис. 1.13). Это похоже на режим обслуживания прерываний, но в данном случае процессор не уча- ствует в обмене. Как и в случае прерываний, реакция на внешнее событие при ПДП существенно медленнее, чем при программном режиме. Понятно, что в этом случае требуется введение в систему дополни- тельного устройства (контроллера ПДП), которое будет осуществлять полноценный обмен по системной магистрали без всякого участия про- цессора. Причем процессор предварительно должен сообщить этому 31
Глава 1 Философия микропроцессорной техники контроллеру ПДП, откуда ему следует брать информацию и/или куда ее следует помещать. Контроллер ПДП может считаться специализи- рованным процессором, который отличается тем, что сам не участвует в обмене, не принимает в себя информацию и не выдает ее (рис. 1.14). Выполнение команд Команда 1 Команда 2 Команда 3 Запрос ПДП Точка остановки <> на время ПДП Продолжение выполнения команд Команда N Команда N+1 Команда N+2 Команда N+3 Команда N+4 Команда N+5 Программа Рис. 1.13. Обслуживание ПДП. Системная магистраль Рис. 1.14. Информационные потоки в режиме ПДП. В принципе контроллер ПДП может входить в состав устройства вво- да/вывода, которому необходим режим ПДП или даже в состав несколь- ких устройств ввода/вывода. Теоретически обмен с помощью прямого доступа к памяти может обес- печить более высокую скорость передачи информации, чем программ- ный обмен, так как процессор передает данные медленнее, чем специа- лизированный контроллер ПДП. Однако на практике это преимущество реализуется далеко не всегда. Скорость обмена в режиме ПДП обычно ог- 32
Лекция 1 Философия микропроцессорной техники раничена возможностями магистрали. К тому же необходимость про- граммного задания режимов контроллера ПДП можетсвести на нет выиг- рыш от более высокой скорости пересылки данных в режиме ПДП. По- этому режим ПДП применяется редко. Если в системе уже имеется самостоятельный контроллер ПДП, то это может в ряде случаев существенно упростить аппаратуру устройств ввода/ вывода, работающих в режиме ПДП. В этом, пожалуй, состоит единствен- ное бесспорное преимущество режима ПДП. 1.4. Архитектура микропроцессорных систем До сих пор мы рассматривали только один тип архитектуры микропро- цессорных систем — архитектуру с общей, единой шиной для данных и команд (одношинную, или принстонскую, фон-неймановскую архитектуру). Соответственно, в составе системы в этом случае присутствует одна общая память, как для данных, так и для команд (рис. 1.15). Общая шина данных и команд Рис. 1.15. Архитектура с общей шиной данных и команд. Но существует также и альтернативный тип архитектуры микропро- цессорной системы — это архитектура с раздельными шинами данных и команд (двухшинная, или гарвардская, архитектура). Эта архитектура пред- полагает наличие в системе отдельной памяти для данных и отдельной па- мяти для команд (рис. 1.16). Обмен процессора с каждым из двух типов памяти происходит по своей шине. Архитектура с общей шиной распространена гораздо больше, она при- меняется, например, в персональных компьютерах и в сложных микро- компьютерах. Архитектура с раздельными шинами применяется в основ- ном в однокристальных микроконтроллерах. Рассмотрим некоторые достоинства и недостатки обоих архитектур- ных решений. Архитектура с общей шиной (принстонская, фон-неймановская) про- ще, она не требует от процессора одновременного обслуживания двух шин, контроля обмена по двум шинам сразу. Наличие единой памяти данных и 3 — 3199 зз
Пгава 1^ Филос 4 ия микропрсцессорной техники команд позволяет гибко распределять ее объем между кодами данных и команд. Например, в некоторых случаях нужна большая и сложная про- грамма, а данных в памяти надо хранить не слишком много. В других слу- чаях, наоборот, программа требуется простая, но необходимы большие объемы хранимых данных. Перераспределение памяти не вызывает ника- ких проблем, главное — чтобы программа и данные вместе помещались в памяти системы. Как правило, в системах с такой архитектурой память, бывает довольно большого объема (до десятков и сотен мегабайт). Это по- зволяет решать самые сложные задачи. Рис. 1.16. Архитектура с раздельными шинами данных и команд. Архитектура с раздельными шинами данных и команд сложнее, она за- ставляет процессор работать одновременно с двумя потоками кодов, об- служивать обмен по двум шинам одновременно. Программа может разме- щаться только в памяти команд, данные — только в памяти данных. Такая узкая специализация ограничивает круг задач, решаемых системой, так как не дает возможности гибкого перераспределения памяти. Память данных и память команд в этом случае имеют не слишком большой объем, поэтому применение систем с данной архитектурой ограничивается обычно не слишком сложными задачами. В чем же преимущество архитектуры с двумя шинами (гарвардской)? В первую очередь, в быстродействии. Дело в том, что при единственной шине команд и данных процессор вынужден по одной этой шине принимать данные (из памяти или устрой- ства ввода/вывода) и передавать данные (в память или в устройство ввода/ вывода), а также читать команды из памяти. Естественно, одновременно эти пересылки кодов по магистрали происходить не могут, они должны 34
Лекция 1 Философия микропроцессорной техники производиться по очереди. Современные процессоры способны совмес- тить во времени выполнение команд и проведение циклов обмена по сис- темной шине. Использование конвейерных технологий и быстрой кэш- памяти позволяет им ускорить процесс взаимодействия со сравнительно медленной системной памятью. Повышение тактовой частоты и совер- шенствование структуры процессоров дают возможность сократить время выполнения команд. Но дальнейшее увеличение быстродействия систе- мы возможно только при совмещении пересылки данных и чтения команд, то есть при переходе к архитектуре с двумя шинами. В случае двухшинной архитектуры обмен по обеим шинам может быть независимым, параллельным во времени. Соответственно, структуры шин (количество разрядов кода адреса и кода данных, порядок и скорость об- мена информацией и т.д.) могут быть выбраны оптимально для той зада- чи, которая решается каждой шиной. Поэтому при прочих равных усло- виях переход на двухшинную архитектуру ускоряет работу микропроцессорной системы, хотя и требует дополнительных затрат на аппаратуру, усложнения структуры процессора. Память данных в этом слу- чае имеет свое распределение адресов, а память команд — свое. Проще всего преимущества двухшинной архитектуры реализуются внутри одной микросхемы. В этом случае можно также существенно умень- шить влияние недостатков этой архитектуры. Поэтому основное ее при- менение — в микроконтроллерах, от которых не требуется решения слиш- ком сложных задач, но зато необходимо максимальное быстродействие при заданной тактовой частоте. 1.5. Типы микропроцессорных систем Диапазон применения микропроцессорной техники сейчас очень ши- рок, требования к микропроцессорным системам предъявляются самые разные. Поэтому сформировалось несколько типов микропроцессорных систем, различающихся мощностью, универсальностью, быстродействи- ем и структурой отличиями. Основные типы следующие: • микроконтроллеры — наиболее простой тип микропроцессорных систем, в которых все или большинство узлов системы выполнены в виде одной микросхемы; • контроллеры — управляющие микропроцессорные системы, выпол- ненные в виде отдельных модулей; • микрокомпьютеры — более мощные микропроцессорные системы с развитыми средствами сопряжения с внешними устройствами. • компьютеры (в том числе персональные) — самые мощные и наи- более универсальные микропроцессорные системы. з* 35
Глава 1 Философия микропроцессорной техники Четкую границу между этими типами иногда провести довольно сложно. Быстродействие всех типов микропроцессоров постоянно растет, и нередки ситуации, когда новый микроконтроллер оказывается быстрее, например, устаревшего персонального компьютера. Но кое- какие принципиальные отличия все-таки имеются. Микроконтроллеры представляют собой универсальные устройства, которые практически всегда используются не сами по себе, а в составе более сложных устройств, в том числе и контроллеров. Системная шина микроконтроллера скрыта от пользователя внутри микросхемы. Возможности подключения внешних устройств к микроконтроллеру ограничены. Устройства на микроконтроллерах обычно предназначены для решения одной задачи. Контроллеры, как правило, создаются для решения какой-то отдель- ной задачи или группы близких задач. Они обычно не имеют возможнос- тей подключения дополнительных узлов и устройств, например, большой памяти, средств ввода/вывода. Их системная шина чаще всего недоступна пользователю. Структура контроллера проста и оптимизирована под мак- симальное быстродействие. В большинстве случаев выполняемые про- граммы хранятся в постоянной памяти и не меняются. Конструктивно кон- троллеры выпускаются в одноплатном варианте. Микрокомпьютеры отличаются от контроллеров более открытой струк- турой, они допускают подключение к системной шине нескольких допол- нительных устройств. Производятся микрокомпьютеры в каркасе, корпу- се с разъемами системной магистрали, доступными пользователю. Микрокомпьютеры могут иметь средства хранения информации на маг- нитных носителях (например, магнитные диски) и довольно развитые средства связи с пользователем (видеомонитор, клавиатура). Микроком- пьютеры рассчитаны на широкий круг задач, но в отличие от контролле- ров, к каждой новой задаче его надо приспосабливать заново. Выполняе- мые микрокомпьютером программы можно легко менять. Наконец, компьютеры и самые распространенные из них — персональ- ные компьютеры — это самые универсальные из микропроцессорных си- стем. Они обязательно предусматривают возможность модернизации, а также широкие возможности подключения новых устройств. Их систем- ная шина, конечно, доступна пользователю. Кроме того, внешние устрой- ства могут подключаться к компьютеру через несколько встроенных пор- тов связи (количество портов доходит иногда до 10). Компьютер всегда имеет сильно развитые средства связи с пользователем, средства длитель- ного хранения информации большого объема, средства связи с другими компьютерами по информационным сетям. Области применения компь- ютеров могут быть самыми разными: математические расчеты, обслужи- 36
Лекция 1 Философия микропроцессорной техники вание доступа к базам данных, управление работой сложных электронных систем, компьютерные игры, подготовка документов и т.д. Любую задачу в принципе можно выполнить с помощью каждого из перечисленных типов микропроцессорных систем. Но при выборе типа надо по возможности избегать избыточности и предусматривать необхо- димую для данной задачи гибкость системы. ; В настоящее время при разработке новых микропроцессорных систем чаще всего выбирают путь использования микроконтроллеров (примерно в 80% случаев). При этом микроконтроллеры применяются или самосто- ятельно, с минимальной дополнительной аппаратурой, или в составе более сложных контроллеров с развитыми средствами ввода/вывода. Классические микропроцессорные системы на базе микросхем про- цессоров и микропроцессорных комплектов выпускаются сейчас довольно редко, в первую очередь, из-за сложности процесса разработки и отладки этих систем. Данный тип микропроцессорных систем выбирают в основ- ном тогда, когда микроконтроллеры не могут обеспечить требуемых ха- рактеристик. Наконец, заметное место занимают сейчас микропроцессорные сис- темы на основе персонального компьютера. Разработчику в этом случае нужно только оснастить персональный компьютер дополнительными ус- тройствами сопряжения, а ядро микропроцессорной системы уже готово. Персональный компьютер имеет развитые средства программирования, что существенно упрощает задачу разработчика. К тому же он может обес- печить самые сложные алгоритмы обработки информации. Основные не- достатки персонального компьютера — большие размеры корпуса и аппа- ратурная избыточность для простых задач. Недостатком является и неприспособленность большинства персональных компьютеров к работе в сложных условиях (запыленность, высокая влажность, вибрации, высо- кие температуры и т.д.). Однако выпускаются и специальные персональ- ные компьютеры, приспособленные к различным условиям эксплуатации.
Лекция 1 Философия мик^;<п^->цсссмрной техники Вариант 1 1. В чем главное преимущество микропроцессорной системы? □ высокое быстродействие □ малое энергопотребление □ низкая стоимость □ высокая гибкость 2. Какой режим обмена предполагает отключение процессора? □ процессор никогда не отключается □ программный обмен □ обмен по прямому доступу к памяти □ обмен по прерываниям 3. Микропроцессорная система какого типа не обеспечивает управление внешними устройствами? □ микроконтроллер □ контроллер □ все типы обеспечивают управление внешними устройствами □ компьютер 39
Глава 1 Философия микропроцессорной техники Вариант 2 1. Разрядность какой шины прямо определяет быстродействие микропроцессорной системы? □ шины адреса □ шины данных □ шины управления □ шины питания 2. Какой режим обмена обеспечивает наибольшую скорость передачи информации? □ обмен по прямому доступу к памяти □ программный обмен □ обмен по прерываниям □ все режимы одинаковы по быстродействию 3. Какая архитектура обеспечивает более высокое быстродействие? □ принстонская □ гарвардская □ фон-неймановская □ быстродействие не зависит от архитектуры 40
Лекция 1 Философия микропроцессорной техники Вариант 3 1. Структура какой шины влияет на разнообразие режимов обмена? □ шины данных □ шины управления □ шины питания □ шины адреса 2. Какой режим обмена используется чаще всего? □ обмен по прерываниям □ все режимы используются одинаково часто □ обмен по прямому доступу к памяти □ программный обмен 3. Микропроцессорная система какого типа разрабатывается чаще всего? □ микрокомпьютер □ компьютер □ разработка не требуется, используются готовые системы □ микроконтроллер 41
Лекция 2 Шины микропроцессорной системы и циклы обмена Глава 2. Организация обмена информацией Лекция 2. Шины микропроцессорной системы и циклы обмена В этой лекции речь идет об обмене информацией по шинам микропро- цессорных систем, о циклах обмена информацией и их фазах, о прин- ципах синхронизации обмена, принципах организации прерываний и ПДП. Ключевые слова: мультиплексирование, синхронный и асинхронный обмен, циклы ввода и вывода, векторное и радиальное прерывания, запросы прерывания и ПДП. Самое главное, что должен знать разработчик микропроцессорных сис- тем — это принципы организации обмена информацией по шинам таких систем. Без этого невозможно разработать аппаратную часть системы, а без аппаратной части не будет работать никакое программное обеспечение. За более чем 30 лет, прошедших с момента появления первых микро- процессоров, были выработаны определенные правила обмена, которым следуют и разработчики новых микропроцессорных систем. Правила эти не слишком сложны, но твердо знать и неукоснительно соблюдать их д ля успешной работы необходимо. Как показала практика, принципы органи- зации обмена по шинам гораздо важнее, чем особенности конкретных мик- ропроцессоров. Стандартные системные магистрали живут гораздо дольше, чем тот или иной процессор. Разработчики новых процессоров ориентиру- ются на уже существующие стандарты магистрали. Более того, некоторые системы на основе совершенно разных процессоров используют одну и ту же системную магистраль. То есть магистраль оказывается самым главным системообразующим фактором в микропроцессорных системах. Обмен информацией в микропроцессорных системах происходит в цик- лах обмена информацией. Под циклом обмена информацией понимается временной интервал, в течение которого происходит выполнение одной элементарной операции обмена по шине. Например, пересылка кода дан- ных из процессора в память или же пересылка кода данных из устройства ввода/вывода в процессор. В пределах одного цикла также может переда- 43
Глава 2 Организация обмена информацией ваться и несколько кодов данных, даже целый массив данных, но это встре- чается реже. Циклы обмена информацией делятся на два основных типа: • Цикл записи (вывода), в котором процессор записывает (выводит) информацию; • Цикл чтения (ввода), в котором процессор читает (вводит) инфор- мацию. В некоторых микропроцессорных системах существует также цикл «чте- ние-модификация-запись» или же «ввод-пауза-вывод». В этих циклах про- цессор сначала читает информацию из памяти или устройства ввода/вывода, затем как-то преобразует ее и снова записывает по тому же адресу. Напри- мер, процессор может прочитать код из ячейки памяти, увеличить его на единицу и снова записать в эту же ячейку памяти. Наличие или отсутствие данного типа цикла связано с особенностями используемого процессора. Особое место занимают циклы прямого доступа к памяти (если режим ПДП в системе предусмотрен) и циклы запроса и предоставления преры- вания (если прерывания в системе есть). Когда в дальнейшем речь пойдет о таких циклах, это будет специально оговорено. Во время каждого цикла устройства, участвующие в обмене информа- цией, передают друг другу информационные и управляющие сигналы в строго установленном порядке или, как еще говорят, в соответствии с при- нятым протоколом обмена информацией. Длительность цикла обмена может быть постоянной или переменной, но она всегда включает в себя несколько периодов сигнала тактовой час- тоты системы. То есть даже в идеальном случае частота чтения информа- ции процессором и частота записи информации оказываются в несколько раз меньше тактовой частоты системы. Чтение кодов команд из памяти системы также производится с помо- щью циклов чтения. Поэтому в случае одношинной архитектуры на сис- темной магистрали чередуются циклы чтения команд и циклы пересылки (чтения и записи) данных, но протоколы обмена остаются неизменными независимо от того, что передается — данные или команды. В случае двух- шинной архитектуры циклы чтения команд и записи или чтения данных разделяются по разным шинам и могут выполняться одновременно. 2.1. Шины микропроцессорной системы Прежде чем переходить к особенностям циклов обмена, остановимся под- робнее на составе и назначении различных шин микропроцессорной системы. Как уже упоминалось, в системную магистраль (системную шину) мик- ропроцессорной системы входит три основные информационные шины: адреса, данных и управления. 44
Лекция 2 Шины микропроцессорной системы и циклы обмена Шина данных — это основная шина, ради которой и создается вся сис- тема. Количество ее разрядов (линий связи) определяет скорость и эф- фективность информационного обмена, а также максимально возможное количество команд. Шина данных всегда двунаправленная, так как предполагает передачу информации в обоих направлениях. Наиболее часто встречающийся тип выходного каскада для линий этой шины — выход с тремя состояниями. Обычно шина данных имеет 8, 16, 32 или 64 разряда. Понятно, что за один цикл обмена по 64-разрядной шине может передаваться 8 байт ин- формации, а по 8-разрядной — только один байт. Разрядность шины дан- ных определяет и разрядность всей магистрали. Например, когда говорят о 32-разрядной системной магистрали, подразумевается, что она имеет 32- разрядную шину данных. Шина адреса — вторая по важности шина, которая определяет макси- мально возможную сложность микропроцессорной системы, то есть до- пустимый объем памяти и, следовательно, максимально возможный раз- мер программы и максимально возможный объем запоминаемых данных. Количество адресов, обеспечиваемых шиной адреса, определяется как 2N, где N — количество разрядов. Например, 16-разрядная шина адреса обес- печивает 65 536 адресов. Разрядность шины адреса обычно кратна 4 и мо- жет достигать 32 и даже 64. Шина адреса может быть однонаправленной (когда магистралью всегда управляет только процессор) или двунаправленной (когда процессор может временно передавать управление магистралью другому устройству, напри- мер контроллеру ПДП). Наиболее часто используются типы выходных кас- кадов с тремя состояниями или обычные ТТЛ (с двумя состояниями). Как в шине данных, так и в шине адреса может использоваться положи- тельная логика или отрицательная логика. При положительной логике высо- кий уровень напряжения соответствует логической единице на соответству- ющей линии связи, низкий — логическому нулю. При отрицательной логике — наоборот. В большинстве случаев уровни сигналов на шинах — ТТЛ. Для снижения общего количества линий связи магистрали часто при- меняется мультиплексирование шин адреса и данных. То есть одни и те же линии связи используются в разные моменты времени для передачи как адреса, так и данных (в начале цикла — адрес, в конце цикла — данные). Для фиксации этих моментов (стробирования) служат специальные сиг- налы на шине управления. Понятно, что мультиплексированная шина ад- реса/данных обеспечивает меньшую скорость обмена, требует более дли- тельного цикла обмена (рис. 2.1). По типу шины адреса и шины данных все магистрали также делятся на мультиплексированные и немультиплек- сированные. 45
Глава 2 Организация обмена информацией Шина адреса Шина данных Шина адреса/данных Немультиплексированные шины Мультиплексированная шина Рис. 2.1. Мультиплексирование шин адреса и данных. В некоторых мультиплексированных магистралях после одного кода адреса передается несколько кодов данных (массив данных). Это позво- ляет существенно повысить быстродействие магистрали. Иногда в магис- тралях применяется частичное мультиплексирование, то есть часть раз- рядов данных передается по немультипЛеКсйрованным линиям, а другая часть — по мультиплексированным с адресом линиям. Шина управления — это вспомогательная шина, управляющие сигналы на которой определяют тип текущего цикла и фиксируют моменты вре- мени, соответствующие разным частям или стадиям цикла. Кроме того, управляющие сигналы обеспечивают согласование работы процессора (или другого хозяина магистрали, задатчика, master) с работой памяти или устройства ввода/вывода (устройства-исполнителя, slave). Управляющие сигналы также обслуживают запрос и предоставление прерываний, запрос и предоставление прямого доступа. Сигналы шины управления могут передаваться как в положительной логике (реже), так и в отрицательной логике (чаще). Линии шины управ- ления могут быть как однонаправленными, так и двунаправленными. Типы выходных каскадов могут быть самыми разными: с двумя состояниями (для однонаправленных линий), с тремя состояниями (для двунаправленных линий), с открытым коллектором (для двунаправленных и мультиплекси- рованных линий). Самые главные управляющие сигналы — это стробы обмена, то есть сигналы, формируемые процессором и определяющие моменты време- ни, в которые производится пересылка данных по шине данных, обмен данными. Чаще всего в магистрали используются два различных строба обмена: • Строб записи (вывода), который определяет Момент времени, когда устройство-исполнитель может принимать данные, выставленные процессором на шину данных; • Строб чтения (ввода), который определяет момент времени, когда устройство-исполнитель должно выдать на шину данных код дан- ных, который будет прочитан процессором. 46
Лекция 2 Шины микропроцессорной системы и циклы обмена При этом большое значение имеет то, как процессор заканчивает об- мен в пределах цикла, в какой момент он снимает свой строб обмена. Воз- можны два пути решения (рис. 2.2): • При синхронном обмене процессор заканчивает обмен данными са- мостоятельно, через раз и навсегда установленный временной ин- тервал выдержки (tBbu), то есть без учета интересов устройства-ис- полнителя; • При асинхронном обмене процессор заканчивает обмен только тогда, когда устройство-исполнитель подтверждает выполнение опера- ции специальным сигналом (так называемый режим handshake — рукопожатие). Строб - обмена Синхронный обмен Асинхронный обмен Рис. 2.2. Синхронный обмен и асинхронный обмен. Достоинства синхронного обмена — более простой протокол обмена, меньшее количество управляющих сигналов. Недостатки — отсутствие га- рантии, что исполнитель выполнил требуемую операцию, а также высо- кие требования к быстродействию исполнителя. Достоинства асинхронного обмена — более надежная пересылка дан- ных, возможность работы с самыми разными по быстродействию испол- нителями. Недостаток — необходимость формирования сигнала подтвер- ждения всеми исполнителями, то есть дополнительные аппаратурные затраты. Какой тип обмена быстрее, синхронный или асинхронный? Ответ на этот вопрос неоднозначен. С одной стороны, при асинхронном обмене требуется какое-то время на выработку, передачу дополнительного сиг- нала и на его обработку процессором. С другой стороны, при синхронном обмене приходится искусственно увеличивать длительность строба обме- на для соответствия требованиям большего числа исполнителей, чтобы они успевали обмениваться информацией в темпе процессора. Поэтому иногда в магистрали предусматривают возможность как синхронного, так и асинхронного обмена, причем синхронный обмен является основным и довольно быстрым, а асинхронный применяется только для медленных исполнителей. По используемому типу обмена магистрали микропроцессорных сис- тем также делятся на синхронные и асинхронные. 47
Глава 2 Организация обмена информацией 2.2. Циклы обмена информацией 2.2.1. Циклы программного обмена Рассмотрим для примера два довольно типичных случая программного обмена по магистрали микропроцессорной системы. Первый пример — это обмен по мультиплексированной асинхронной магистрали Q-bus, предложенной фирмой DEC и широко применявшей- ся в микрокомпьютерах и промышленных контроллерах. Упрощенные вре- менные диаграммы циклов чтения (ввода) и записи (вывода) по этой ма- гистрали приведены на рис. 2.3 и 2.4. Отметим, что в дальнейшем тексте знак «минус» перед названием сиг- нала говорит о том, что активный уровень сигнала низкий, пассивный — высокий, то есть сигнал отрицательный. Если минуса перед названием сигнала нет, то сигнал положительный, его низкий уровень пассивный, а высокий — активный. На шине адреса/данных (AD) в начале цикла обмена (в фазе адреса) процессор (задатчик) выставляет код адреса. На этой шине используется отрицательная логика. Средний уровень сигналов на шине AD обознача- ет, что состояния сигналов на шине в данные временные интервалы не важны. Для стробирования адреса используется отрицательный синхро- сигнал -SYNC, выставляемый также процессором. Его передний (отри- цательный) фронт соответствует действительности кода адреса на шине AD. Фаза адреса одинакова в обоих циклах записи и чтения. Фаза адреса Фаза данных к------------->к---------------------х ; _________ ; ____________________ ; AD —j---{ Адрес )—।-----{ Чит. данные ------।-- SYNC —J------\ ---- DIN^---------—ГЛ—____________________/------г~ RPLY —♦-----------------к >-------- । । X________________f i Рис. 2.3. Цикл чтения на магистрали Q-bus. Получив (распознав) свой код адреса, устройство ввода/вывода или па- мять (исполнитель) готовится к проведению обмена. Через некоторое вре- мя после начала (отрицательного фронта) сигнала -SYNC процессор сни- мает адрес и начинает фазу данных. 48
Лекция 2 Шины микропроцессорной системы и циклы обмена AD SYNC DOUT RPLY Фаза адреса Фаза данных < Адрес X Зап, данные Рис. 2.4. Цикл записи на магистрали Q-bus. В фазе данных цикла чтения (рис. 2.3) процессор выставляет сигнал строба чтения данных -DIN, в ответ на который устройство, к которому обращается процессор (исполнитель), должно выставить свой код данных (читаемые данные). Одновременно это устройство должно подтвердить выполнение операции сигналом подтверждения обмена -RPLY. Для сигнала -RPLY используется тип выходного каскада ОК, чтобы не было конфликтов между устройствами-исполнителями. Процессор, по- лучив сигнал -RPLY, заканчивает цикл обмена. Для этого он снимает сигнал -DIN и сигнал -SYNC. Устройство-исполнитель в ответ на снятие сигнала -DIN должно снять код данных с шины AD и закончить сигнал подтверж- дения -RPLY. После этого процессор снимает сигнал -SYNC. В фазе данных цикла записи (рис. 2.4) процессор выставляет на шину AD код записываемых данных и сопровождает его отрицательным сиг- налом строба записи данных -DOUT. Устройство-исполнитель должно по этому сигналу принять данные от процессора и сформировать сигнал подтверждения обмена -RPLY. Процессор, получив сигнал -RPLY, закан- чивает цикл обмена. Для этого он снимает код данных с шины AD и сигнал -DOUT. Устройство-исполнитель в ответ на снятие сигнала -DOUT должно закончить сигнал подтверждения -RPLY. После этого процессор снимает сигнал -SYNC. То есть на данной магистрали адрес передается синхронно (без под- тверждения его получения исполнителем), а данные передаются асинхронно, с обязательным подтверждением их выдачи или приема исполнителем. Отсутствие сигнала подтверждения -RPLY в течение заданного времени воспринимается процессором как аварийная ситуация. В принципе возможна и асинхронная передача адреса, что увеличивает надежность обмена, хотя может снижать его скорость. Помимо циклов чтения и записи на магистрали Q-bus используются также и циклы типа «ввод-пауза-вывод» («чтение-модификация-запись»). Упрощенная временная диаграмма атосо цикла представлена на рис. 2.5. 4—3199 49
Глава 2 Организация обмена информацией Рис. 2.5. Цикл «ввод-пауза-вывод» на магистрали Q-bus. В этом цикле адресная фаза производится точно так же, как и в циклах чтения (ввода) и записи (вывода). Но в фазе данных процессор произво- дит сначала чтение из заданного в адресной фазе адреса, а потом запись в тот же самый адрес. Для чтения используется строб чтения -DIN, а для записи — строб записи -DOUT. В ответ на сигнал -DIN устройство-ис- полнитель выдает свои данные на шину AD, а по сигналу -DOUT - при- нимает данные с шины AD. Как и в циклах чтения и записи, устройство- исполнитель подтверждает выполнение каждой операции сигналом подтверждения -RPLY. Понятно, что цикл «ввод-пауза-вывод» требует больше времени, чем каждый из циклов чтения или записи, но меньше времени, чем два последовательно произведенных цикла чтения и записи (так как для него нужна только одна адресная фаза). Сигнал -SYNC вы- рабатывается процессором в начале цикла «ввод-пауза-вывод» и держит- ся до окончания всего цикла. В качестве второго примера рассмотрим циклы обмена на синхронной немультиплексированной магистрали ISA (Industrial Standard Architecture), предложенной фирмой IBM и широко используемой в персональных ком- пьютерах. Упрощенные циклы записи в устройство ввода/вывода и чте- ния из устройства ввода/вывода приведены на рис. 2.6 и 2.7. Оба цикла начинаются с выставления процессором (задатчиком) кода адреса на шину адреса SA (логика на этой шине положительная). Адрес остается на шине SA до конца цикла. Фаза адреса, одинаковая для обоих циклов, заканчивается с началом строба обмена данными -IOR или -IOW. В течение фазы адреса устройство-исполнитель должно принять код ад- реса и распознать или не распознать его. Если адрес распознан, исполнитель готовится к обмену. В фазе данных цикла чтения (рис. 2.6) процессор выставляет отрица- тельный сигнал чтения данных из устройства ввода/вывода -IOR. В ответ на него устройство-исполнитель должно выдать на шину данных SD свой 50
Лекция 2 Шины микропроцессорной системы и циклы обмена код данных (читаемые данные). Логика на шине данных положительная. Через установленное время строб обмена -IOR снимается процессором, после чего снимается также и код адреса с шины SA. Цикл заканчивается без учета быстродействия исполнителя. Рис. 2.6. Цикл чтения из УВВ на магистрали ISA. Рис. 2.7. Цикл записи в УВВ на магистрали ISA. Но так происходит только в случае основного, синхронного обмена. Кроме него на магистрали ISA также предусмотрена возможность асинх- ронного обмена. Для этого применяется сигнал готовности канала (маги- страли) I/O CH RDY. Тип выходного каскада для данного сигнала — ОК, для предотвращения конфликтов между устройствами-исполнителями. При синхронном обмене сигнал I/O CH RDY всегда положительный. Но медленное устройство-исполнитель, не успевающее работать в темпе про- цессора, может этот сигнал снять, то есть сделать нулевым сразу после начала строба обмена. Тогда процессор до того момента, пока сигнал I/O CH RDY не станет снова положительным, приостанавливает завершение цикла, продлевает строб обмена. Конечно, слишком большая длительность этого сигнала рассматривается как аварийная ситуация. Для простоты по- нимания можно считать, что устройство-исполнитель формирует в дан- ном случае отрицательный сигнал неготовности завершить обмен. На вре- мя эТЪго сигнала обмен на магистрали приостанавливается. - 4* 51
Глава 2 Организация обмена информацией Принципиальное отличие асинхронного обмена по магистрали ISA от асинхронного обмена по магистрали Q-bus состоит в следующем. Если в случае Q-bus сигнал подтверждения обязателен, и его должен формиро- вать каждый исполнитель, то в случае ISA сигнал о неготовности испол- нитель может не формировать, если он успевает работать в темпе процес- сора. Зато в случае Q-bus к концу цикла обмена процессор всегда уверен, что устройство-исполнитель выполнило требуемую операцию, а в случае ISA такой уверенности нет. В фазе данных цикла записи по магистрали ISA (рис. 2.7) процессор выставляет на шину данных SD код записываемых данных и сопровожда- ет их стробом записи данных в устройство ввода/вывода -IOW. Получив этот сигнал, устройство-исполнитель должно принять с шины SD код за- писываемых данных. Если оно не успевает сделать это в темпе процессо- ра, то оно может снять на нужное время сигнал I/O CH RDY после полу- чения переднего фронта сигнала -IOW. Тогда процессор приостановит окончание цикла записи. Рассмотренные примеры, конечно, не раскрывают всех тонкостей об- мена по упомянутым магистралям. Они всего лишь иллюстрируют глав- ные принципы обмена по ним. 2.2.2. Циклы обмена по прерываниям Циклы обмена в режиме прерываний строятся по тем же принципам, что и циклы программного обмена, но имеют ряд специфических особен- ностей. Прерывания в микропроцессорных системах бывают двух основных типов: • векторные прерывания, которые требуют проведения цикла чтения по магистрали; • радиальные прерывания, которые не требуют никакого цикла обме- на по магистрали. Дело в том, что прерываний в микропроцессорной системе обычно бывает много. Поэтому процессору необходима информация о номере (или, как еше говорят, об адресе вектора) конкретного прерывания. Эта информация может быть передана процессору двумя путями. При векторном прерывании код номера прерывания передается про- цессору тем устройством ввода/вывода, которое данное прерывание зап- росило. Для этого процессор проводит цикл чтения по магистрали, и по шине данных получает код номера прерывания. Шина адреса в данном цикле обычно не используется, так как устройство, запросившее преры- вание, и так знает, что процессор будет обращаться именно к нему. В этом случае в магистрали достаточно всего одной линии запроса прерывания 52
Лекция 2 Шины микропроцессорной системы и циклы обмена для всех устройств ввода/вывода. Так организованы прерывания, напри- мер, в магистрали Q-bus. Рис. 2.8. Сигналы запроса и предоставления прерывания в магистрали Q-bus. Схема распространения сигналов, участвующих в прерываниях на ма- гистрали Q-bus, показана на рис. 2.8. Упрощенная временная диаграмма цикла запроса и предоставления магистрали представлена на рис. 2.9. Рис. 2.9. Цикл запроса/предоставления векторного прерывания на магистрали Q-bus. Запрос прерывания осуществляется отрицательным сигналом -VIRQ, который может формироваться каждым из устройств, запрашивающих прерывание. Тип выходного каскада для этого сигнала — ОК, чтобы избе- жать конфликтов между запрашивающими прерывания устройствами. Получив сигнал -VIRQ, процессор предоставляет прерывание (закончив предварительно выполнение текущей команды). Для этого он выставляет сигнал чтения данных -DIN и сигнал предоставления прерывания IAKO. Этот сигнал IAKO последовательно проходит через все устройства, кото- рые могут запрашивать прерывание Если,устройство запросило преры- 53
Глава 2 Организация обмена информацией вание, то оно не пропускает через себя этот сигнал. В результате получается, что если прерывания одновременно запросили два или более устройств, то сигнал предоставления прерывания получит только одно устройство, а именно то, которое ближе к процессору. Такой механизм разрешения конфликтов называется иногда географическим приоритетом (или цепочечным приоритетом, Daisy Chain). Получив сигнал IAKO, устройство, запросившее прерывание, должно снять свой сигнал -VIRQ. Затем процессор проводит цикл безадресного чтения номера прерыва- ния. В ответ на полученные сигналы -DIN и IAKO устройство, которому предоставлено прерывание, должно выдать на шину адреса/данных AD код номера прерывания (адреса вектора прерывания) и выставить сигнал подтверждения -RPLY. Процессор читает код номера прерывания и за- канчивает цикл безадресного чтения снятием сигналов -DIN и IAKO. Системная магистраль Рис. 2.10. Структура связей для организации радиальных прерываний на магистрали ISA. При радиальном прерывании в магистрали имеется столько линий зап- роса прерывания, сколько всего может быть разных прерываний. То есть каждое устройство ввода/вывода, желающее использовать прерывание, подает сигнал запроса прерывания по своей отдельной линии. Процессор узнает о номере прерывания по номеру линии, по которой пришел сигнал запроса прерывания. Никаких циклов обмена по магистрали при этом не требуется. В случае радиальных прерываний в систему обычно включается дополнительная микросхема контроллера прерываний, обрабатывающая сигналы запросов прерываний. Именно так организованы прерывания, например, в магистрали ISA. Упрощенная структура связей между устройствами, участвующи- ми в обмене по прерываниям, на магистрали ISA показана на рис,.2:.1О. 54
Лекция 2 Шины микропроцессорной системы и циклы обмена Процессор общается с контроллером прерываний как по магистрали (чтобы задать ему режимы работы), так и вне магистрали (при обра- ботке запросов на прерывание). Сигналы запросов прерываний IRQ распределяются между всеми устройствами магистрали. На каждую линию IRQ приходится одно устройство. Тип выходного каскада для этих линий — 2С, так как конфликты здесь не предусмотрены. Запро- сом прерывания является передний, положительный фронт сигнала IRQ. При одновременном поступлении сигналов IRQ от нескольких устройств порядок их обслуживания определяется контроллером пре- рываний. Какой тип прерываний лучше — векторный или радиальный? Векторные прерывания обеспечивают системе большую гибкость, в си- стеме их может быть очень много. Но зато они требуют дополнительных аппаратурных узлов во всех устройствах, запрашивающих прерывания, для обслуживания циклов безадресного чтения. Радиальных прерываний в системе обычно не очень много (от 1 до 16). При этом типе прерываний, как правило, требуется введение в систему специального контроллера прерываний. Каждое радиальное прерывание требует введения дополнительной линии в шину управления системной магистрали. Но работать с радиальными прерываниями проще, так как все сводится только к выработке единственного сигнала IRQ, и никаких циклов обмена по магистрали не требуется. 2.2.3. Циклы обмена в режиме ПДП Циклы обмена в режиме прямого доступа к памяти выполняются по тем же правилам, что и циклы программного обмена, и циклы предостав- ления прерываний. Прежде чем начать обмен в режиме ПДП, устройство, которому необ- ходим ПДП, должно запросить ПДП и получить его. Процедура запроса и предоставления ПДП очень похожа на процедуру запроса и предоставле- ния прерывания. В обоих случаях устройство, требующее обслуживания, посылает сигнал запроса процессору. Однако в случае ПДП процессор обя- зательно должен предоставить ПДП запросившему устройству с помощью специальных сигналов, так как на время ПДП процессор отключается от магистрали. А при радиальных прерываниях предоставления прерывания от процессора не требуется. На магистрали Q-bus запрос и предоставление ПДП организуются по- добно запросу и предоставлению прерывания. Упрощенная структура свя- зей устройств, участвующих в ПДП, показана на рис. 2.11. Временная ди- аграмма запроса/предоставления ПДП очень близка к временной диаграмме запроса/предоставления прерывания (см. рис. 2.9). 55
Глава 2 Организация обмена информацией Рис. 2.11. Структура связей запроса/предоставления ПДП на магистрали Q-bus. Сигнал запроса ПДП, называемый -DMR, передается всеми устрой- ствами, нуждающимися в ПДП, по одной линии магистрали. Тип выход- ного каскада на этой линии — ОК. Процессор, получив сигнал -DMR, выдает сигнал предоставления ПДП DMGO, аналогичный сигналу IAKO. Этот сигнал также проходит через все устройства последовательно, в ре- зультате чего ПДП получает только то устройство, которое находится бли- же к процессору (географический приоритет). А затем устройство, полу- чившее ПДП, проводит циклы обмена по магистрали, аналогично циклам программного обмена. В циклах ПДП информация читается из памяти и записывается в устройство ввода/вывода, или наоборот — читается из ус- тройства ввода/вывода и передается в память. На магистрали ISA запрос/предоставление ПДП очень напоминает организацию радиальных прерываний (рис. 2.12). Точно так же в системе существует контроллер ПДП, к которому сходятся сигналы запроса ПДП, называемые DRQ, и от которого расходятся сигналы предоставления ПДП, называемые -DACK. К каждому каналу ПДП (пара сигналов DRQ и -DACK) подключается только одно устройство, запрашивающее ПДП. Тип выходных каскадов для этих сигналов —2С. Устройство, нуждающееся в ПДП, посылает сигнал запроса DRQ и получает в ответ сигнал предостав- ления -DACK. После этого контроллер ПДП проводит циклы обмена по магистрали между устройством ввода/вывода и памятью. Упрощенная временная диаграмма циклов ПДП на магистрали ISA по- казана на рис. 2.13. На магистрали ISA используются раздельные стробы записи в память (-MEMW) и записи в устройства ввода/вывода (-IOW), а также раздель- ные стробы чтения из памяти (-MEMR) и чтения из устройств ввода/вы- вода (-IOR). Это позволяет за один цикл обмена ПДП читать информа- цию из памяти и записывать ее в устройство ввода/вывода или же читать 56
Лекция 2 Шины миндлтн цессорной системы и циклы обмена информацию из устройства ввода/вывода и записывать ее в память. При этом на шине адреса выставляется адрес памяти, а адрес устройства ввода/ вывода заменяется одним- единственным сигналом AEN. Естественно, в цикле обмена в режиме ПДП участвует только то устройство ввода/выво- да, которое предварительно запросило ПДП и которому ПДП было пре- доставлено. Поэтому никаких конфликтов между устройствами ввода/вы- вода из-за такой упрощенной адресации не возникает. Системная магистраль Рис. 2.12. Структура связей запроса/предоставления ПДП на магистрали ISA. Рис. 2.13. Цикл ПДП на магистрали ISA. 2.3. Прохождение сигналов по магистрали При организации обмена по магистралям и шинам разработчику не- обходимо учитывать несколько важных моментов, связанных как с осо- бенностью распространения сигналов по шинам, так и с самой природой 57
Глава 2 Организация обмена информацией. шин. В противном случае микропроцессорная система может попросту не работать или работать неустойчиво, хотя вся логика цифровых устройств, входящих в систему, будет спроектирована безошибочно. В случае, когда системная шина (магистраль) микропроцессорной си- стемы является внешней, а не скрыта внутри микросхемы, необходимо учитывать особенности распространения сигналов по длинным линиям. Хотя в большинстве случаев длина магистрали не слишком велика, не пре- вышает 1—2 десятков сантиметров, это все равно оказывает большое вли- яние на синхронизацию обмена. На прохождение сигналов по магистрали влияют следующие факторы: • конечная величина задержки распространения сигналов по линиям магистрали; • различие задержек распространения сигналов по разным линиям шины; • неодновременное выставление сигналов на линии шины; • искажение фронтов сигналов, проходящих по линиям магистрали; • отражение сигналов от концов линий связи (рис. 2.14). Рис. 2.14. Прохождение сигналов по шине. Для учета всех этих факторов разработчики стандартных магистралей обмена и стандартных протоколов обмена всегда закладывают необходи- мые задержки между сигналами, участвующими в обмене. Кроме того, за- держки между сигналами выбираются таким образом, чтобы устройство, которому адресован тот или иной сигнал, имело достаточно времени для его обработки. Если разрабатывается новая магистраль, все это тоже надо учитывать. Поэтому пытаться «модернизировать» какой-то стандартный протокол и ускорять обмен по магистрали путем уменьшения задержек, предусмот- ренных стандартом, очень опасно. Точно так же опасно, не изменяя про- токола обмена, пытаться увеличить длину магистрали, увеличивая тем ca- se
Лекция 2 Шины микропроцессорной системы и циклы обмена мым задержки распространения сигналов по линиям и шинам. Особенно чувствительны к такого рода «модернизациям» синхронные магистрали, в которых не предусмотрено обязательное подтверждение выполнения каждой операции. Например, длительность фазы адреса в цикле обмена выбирается та- ким образом. В течение адресной фазы все сигналы всех разрядов кода адреса, пусть даже и сформированные процессором не одновременно; должны дойти до устройства-исполнителя по своим проводам шины. А устройство-исполнитель должно этот код адреса принять и обработать (то есть отличить свой адрес от чужого). Естественно, для гарантии в дли- тельность адресной фазы еще добавляется небольшая дополнительная задержка. Точно так же длительность фазы данных в цикле чтения должна выби- раться такой, чтобы устройство-исполнитель успело получить строб чте- ния и выдать код читаемых данных на шину данных. Затем этот код дол- жен успеть дойти до процессора и процессор должен успеть его прочитать. После чего процессор снимает сигнал строба чтения, этот задний фронт сигнала доходит с задержкой до устройства-исполнителя, которое также с задержкой снимает свой код данных. Аналогично и в цикле записи. Для улучшения формы сигналов, распространяющихся по магистрали, иногда применяют оконечные согласователи (терминаторы) на концах ли- ний магистрали. Особенно важно их применение в случае, когда допусти- мая длина магистрали превышает несколько метров. Например, в случае магистрали Q-bus применяются два типа согласователей: 120-омный и 250- омный (рис. 2.15). Рис. 2.15. Оконечные согласователи на магистрали Q-bus. Включение согласователей предъявляет дополнительные требования к нагрузочной способности передатчиков, работающих на линии магист- рали. В магистрали ISA подобные согласователи не используются, хотя к некоторым линиям присоединены резисторы, соединенные другим своим выводом с шиной питания (прежде всего это линии, тип выходного кас- када/для которых — ОК). -и 59
Глава 2 Организация обмена информацией В любом случае выходные каскады передатчиков, работающих на ли- нии магистрали, должны обеспечивать высокие выходные токи, так как к магистрали может подключаться несколько устройств, каждое из которых потребляет входной ток. Типичные величины требуемых выходных токов магистральных передатчиков находятся в пределах 20—30 мА. В то же вре- мя входные токи магистральных приемников должны быть малыми, что- бы не перегружать передатчики. Типичные величины допустимых вход- ных токов магистральных приемников лежат в пределах 0,2—0,8 мА.
Лекция 2 Шины микропроцессорной системы и циклы обмена Вариант 1 1. Какая из приведенных операций не требует проведения цикла обмена информацией? □ чтение данных из памяти □ все операции требуют проведения цикла обмена □ запись данных в память □ чтение записи из устройства ввода-вывода □ чтение команды из памяти 2. Какой тип обмена обеспечивает гарантированную передачу информации любому исполнителю? □ синхронный □ асинхронный □ синхронный и асинхронный □ ни синхронный, ни асинхронный 3. При каком типе прерываний число различных прерываний может быть больше? □ при векторных прерываниях □ при радиальных прерываниях □ максимальное число прерываний постоянно при любом типе прерываний □ максимальное число прерываний не ограничено 61
Организация обмена информацией Вариант 2 1. Какой тип обмена обеспечивает более высокую скорость передачи информации? □ синхронный □ асинхронный □ нельзя сказать однозначно □ синхронный обмен с возможностью асинхронного обмена 2. Какой тип прерываний требует более сложной аппаратуры устройства-исполнителя? □ векторный □ радиальный □ тактируемый □ сложность не зависит от типа прерывания 3. Какой параметр слабее других влияет на процесс обмена сигналами по магистрали? □ длина линии связи магистрали □ отражение сигналов от концов линий связи □ положительная или отрицательная логика шины данных □ различие длин линий связи магистрали □ неодновременное выставление сигналов на линиях шины 62
Лекция 2 Шины микропроцессорной системы и циклы обмена Вариант 3 1. Какая структура шин адреса и данных обеспечивает большее быстродействие? □ мультиплексированная □ немультиплексированная □ двунаправленная □ быстродействие от типа структуры не зависит 2. Какой тип обмена используется в системной магистрали ISA? □ синхронный □ асинхронный □ синхронный с возможностью асинхронного обмена □ мультиплексированный 3. Переход в какой режим обмена максимально прост? □ прямой доступ к памяти □ векторное прерывание □ радиальное прерывание □ нельзя сказать однозначно 63
Лекция 3 Функции устройств магистрали Лекция 3. Функции устройств магистрали В этой лекции рассказывается о функциях основных устройств микро- процессорнойСистемы: процессора, памяти, устройств ввода-вывода, о принципах их устройства и подключения к магистрали. Ключевые слова: интерфейс, регистры, буферы, АЛУ, ОЗУ, ПЗУ, стек, селектор адреса. 2.4. Функции устройств магистрали Рассмотрим теперь, как взаимодействуют на магистрали основные ус- тройства микропроцессорной системы: процессор, память (оперативная и постоянная), устройства ввода/вывода. 2.4.1. Функции процессора Процессор (рис. 2.16) обычно представляет собой отдельную микросхе- му или же часть микросхемы (в случае микроконтроллера). В прежние годы процессор иногда выполнялся на комплектах из нескольких микросхем, но сейчас от такого подхода уже практически отказались. Микросхема про- цессора обязательно имеет выводы трех шин: шины адреса, шины данных и шины управления. Иногда некоторые сигналы и шины мультиплексиру- ются, чтобы уменьшить количество выводов микросхемы процессора. Важнейшие характеристики процессора — это количество разрядов его шины данных, количество разрядов его шины адреса и количество управ- ляющих сигналов в шине управления. Разрядность шины данных опреде- ляет скорость работы системы. Разрядность шины адреса определяет до- пустимую сложность системы. Количество линий управления определяет разнообразие режимов обмена и эффективность обмена процессора с дру- гими устройствами системы. Кроме выводов для сигналов трех основных шин процессор всегда име- ет вывод (или два вывода) для подключения внешнего тактового сигнала или кварцевого резонатора (CLK), так как процессор всегда представляет собой тактируемое устройство. Чем больше тактовая частота процессора, тем он быстрее работает, то есть тем быстрее выполняет команды. Впрочем, быстродействие процессора определяется не только тактовой частотой, но и особенностями его структуры. Современные процессоры выполняют боль- шинство команд за один такт и имеют средства для параллельного выполнения нескольких команд. Тактовая частота процессора не связана 5 — 3199 65
Глава 2 Организация обмена инфсриацией прямо и жестко со скоростью обмена по магистрали, так как скорость об- мена по магистрали ограничена задержками распространения сигналов и искажениями сигналов на магистрали. То есть тактовая частота процессо- ра определяет только его внутреннее быстродействие, а не внешнее. Иног- да тактовая частота процессора имеет нижний и верхний пределы. При пре- вышении верхнего предела частоты возможно перегревание процессора, а также сбои, причем, что самое неприятное, возникающие не всегда и нере- гулярно. Так что с изменением этой частоты надо быть очень осторожным. Системная магистраль Рис. 2.16. Схема включения процессора. Еще один важный сигнал, который имеется в каждом процессоре, — это сигнал начального сброса RESET. При включении питания, при аварийной ситуации или зависании процессора подача этого сигнала приводит к ини- циализации процессора, заставляет его приступить к выполнению програм- мы начального запуска. Аварийная ситуация может быть вызвана помехами по цепям питания и «земли», сбоями в работе памяти, внешними ионизи- рующими излучениями и еще множеством причин. В результате процессор может потерять контроль над выполняемой программой и остановиться в каком-то адресе. Для выхода из этого состояния как раз и используется сигнал начального сброса. Этот же вход начального сброса может исполь- зоваться для оповещения процессора о том, что напряжение питания стало ниже установленного предела. В таком случае процессор переходит к вы- полнению программы сохранения важных данных. По сути, этот вход пред- ставляет собой особую разновидность радиального прерывания. Иногда у микросхемы процессора имеется еще один-два входа ради- альных прерываний для обработки особых ситуаций (например, для пре- рывания от внешнего таймера). 66
Лекция 3 Функции устройств магистрали Шина питания современного процессора обычно имеет одно напря- жение питания (+5В или +3,ЗВ) и общий провод («землю»). Первые про- цессоры нередко требовали нескольких напряжений питания. В некото- рых процессорах предусмотрен режим пониженного энергопотребления. Вообще, современные микросхемы процессоров, особенно с высокими тактовыми частотами, потребляют довольно большую мощность. В резуль- тате для поддержания нормальной рабочей температуры корпуса на них нередко приходится устанавливать радиаторы, вентиляторы или даже спе- циальные микрохолодильники. Для подключения процессора к магистрали используются буферные микросхемы, обеспечивающие, если необходимо, демультиплексирова- ние сигналов и электрическое буферирование сигналов магистрали. Иногда протоколы обмена по системной магистрали и по шинам процессора не совпадают между собой, тогда буферные микросхемы еще и согласуют эти протоколы друг с другом. Иногда в микропроцессорной системе используется несколько магистралей (системных и локальных), тогда для каждой из магистралей применяется свой буферный узел. Такая структура характерна, например, для персональных компьютеров. После включения питания процессор переходит в первый адрес про- граммы начального пуска и выполняет эту программу. Данная програм- ма предварительно записана в постоянную (энергонезависимую) память. После завершения программы начального пуска процессор начинает вы- полнять основную программу, находящуюся в постоянной или опера- тивной памяти, для чего выбирает по очереди все команды. От этой про- граммы процессор могут отвлекать внешние прерывания или запросы на ПДП. Команды из памяти процессор выбирает с помощью циклов чтения по магистрали. При необходимости процессор записывает данные в память или в устройства ввода/вывода с помощью циклов записи или же читает данные из памяти или из устройств ввода/вывода с помощью циклов чтения. Таким образом, основные функции любого процессора следующие: • выборка (чтение) выполняемых команд; • ввод (чтение) данных из памяти или устройства ввода/вывода; • вывод (запись) данных в память или в устройства ввода/вывода; • обработка данных (операндов), в том числе арифметические опера- ции над ними; • адресация памяти, то есть задание адреса памяти, с которым будет производиться обмен; • обработка прерываний и режима прямого доступа. Упрощенно структуру микропроцессора можно представить в следую- щем виде (рис. 2.17). 5* 67
Глава 2 Организация обмена информацией Процессор Арифметическо-логическое устройство (АЛУ) Схема управления выборкой команд Регистр признаков Логика управления PSW Схема управления прерываниями Схема управления ПДП Т Сброс Шина Шина Шина Шина Тактовый данных адреса управления питания сигнал Рис. 2.17. Внутренняя структура микропроцессора. Основные функции показанных узлов следующие. Схема управления выборкой команд выполняет чтение команд из памяти и их Дешифрацию. В первых микропроцессорах было невозможно одно- временное выполнение предыдущей команды и выборка следующей коман- ды, так как процессор не мог совмещать эти операции. Но уже в 16- разрядных процессорах появляется так называемый конвейер (очередь) команд, позволяющий выбирать несколько следующих команд, пока вы- полняется предыдущая. Два процесса идут параллельно, что ускоряет рабо- ту процессора. Конвейер представляет собой небольшую внутреннюю па- мять процессора, в которую при малейшей возможности (при освобождении внешней шины) записывается несколько команд, следующих за исполняе- мой. Читаются эти команды процессором в том же порядке, что и записы- ваются в конвейер (это память типа FIFO, First In — First Out, первый вошел — первый вышел). Правда, если выполняемая команда предполагает переход не на следующую ячейку памяти, а на удаленную (с меньшим или большим адресом), конвейер не помогает, и его приходится сбрасывать. Но такие команды встречаются в программах сравнительно редко. Развитием идеи конвейера стало использование внутренней кэш-па- мяти процессора, которая заполняется командами, пока процессор занят выполнением предыдущих команд. Чем больше объем кэш-памяти, тем меньше вероятность того, что ее содержимое придется сбросить при ко- 68
Лекция 3 Функции устройств магистрали манде перехода. Понятно, что обрабатывать команды, находящиеся во внутренней памяти, процессор может гораздо быстрее, чем те, которые расположены во внешней памяти. В кэш-памяти могут храниться и дан- ные, которые обрабатываются в данный момент, это также ускоряет ра- боту. Для большего ускорения выборки команд в современных процессорах применяют совмещение выборки и дешифрации, одновременную дешифрацию нескольких команд, несколько параллельных конвейеров команд, предсказание команд переходов и некоторые другие методы. Арифметико-логическое устройство (или АЛУ, ALL) предназначено для обработки информации в соответствии с полученной процессором коман- дой. Примерами обработки могут служить логические операции (типа ло- гического «И», «ИЛИ», «Исключающего ИЛИ» и т.д.) то есть побитные операции над операндами, а также арифметические операции (типа сло- жения, вычитания, умножения, деления и т.д.). Над какими кодами про- изводится операция, куда помещается ее результат — определяется вы- полняемой командой. Если команда сводится всего лишь к пересылке данных без их обработки, то АЛУ не участвует в ее выполнении. Быстродействие АЛУ во многом определяет производительность процес- сора. Причем важна не только частота тактового сигнала, которым тактиру- ется АЛУ, но и количество тактов, необходимое для выполнения той или иной команды. Для повышения производительности разработчики стремят- ся довести время выполнения команды до одного такта, а также обеспечить работу АЛУ на возможно более высокой частоте. Один из путей решения этой задачи состоит в уменьшении количества выполняемых АЛУ команд, создание процессоров с уменьшенным набором команд (так называемые RISC- процессоры). Другой путь повышения производительности процессора — использование нескольких параллельно работающих АЛУ. Что касается операций над числами с плавающей точкой и других спе- циальных сложных операций, то в системах на базе первых процессоров их реализовали последовательностью более простых команд, специальными подпрограммами, однако затем были разработаны специальные вычисли- тели — математические сопроцессоры, которые заменяли основной про- цессор на время выполнения таких команд. В современных микропроцес- сорах математические сопроцессоры входят в структуру как составная часть. Регистры процессора представляют собой по сути ячейки очень быстрой памяти и служат для временного хранения различных кодов: данных, ад- ресов, служебных кодов. Операции с этими кодами выполняются предель- но быстро, поэтому, в общем случае, чем больше внутренних регистров, тем лучше. Кроме того, на быстродействие процессора сильно влияет раз- рядность регистров. Именно разрядность регистров и АЛУ называется 69
Глава 2 Организация обмена информацией внутренней разрядностью процессора, которая может не совпадать с внеш- ней разрядностью. По отношению к назначению внутренних регистров существует два ос- новных подхода. Первого придерживается, например, компания Intel, ко- торая каждому регистру отводит строго определенную функцию. С одной стороны, это упрощает организацию процессора и уменьшает время вы- полнения команды, но с другой — снижает гибкость, а иногда и замедляет работу программы. Например, некоторые арифметические операции и об- мен с устройствами ввода/вывода проводятся только через один регистр — аккумулятор, в результате чего при выполнении некоторых процедур может потребоваться несколько дополнительных пересылок между реги- страми. Второй подход состоит в том, чтобы все (или почти все) регистры сделать равноправными, как , например, в 16-разрядных процессорах Т- 11 фирмы DEC. При этом достигается высокая гибкость, но необходимо усложнение структуры процессора. Существуют и промежуточные решения, в частности, в процессоре MC68000 фирмы Motorola половина регистров использовалась для данных, и они были взаимозаменяемы, а другая половина — для адресов, и они также взаимозаменяемы. Регистр признаков (регистр состояния) занимает особое место, хотя он так- же является внутренним регистром процессора. Содержащаяся в нем инфор- мация — это не данные, не адрес, а слово состояния процессора (ССП, PSW — Processor Status Ward). Каждый бит этого слова (флаг) содержит информа- цию о результате предыдущей команды. Например, есть бит нулевого резуль- тата, который устанавливается в том случае, когда результат выполнения предыдущей команды — нуль, и очищается в том случае, когда результат выполнения команды отличен от нуля. Эти биты (флаги) используются ко- мандами условных переходов, например, командой перехода в случае нуле- вого результата. В этом же регистре иногда содержатся флаги управления, определяющие режим выполнения некоторых команд. Схема управления прерываниями обрабатывает поступающий на процес- сор запрос прерывания, определяет адрес начала программы обработки прерывания (адрес вектора прерывания), обеспечивает переход к этой про- грамме после выполнения текущей команды и сохранения в памяти (в сте- ке) текущего состояния регистров процессора. По окончании программы обработки прерывания процессор возвращается к прерванной программе с восстановленными из памяти (из стека) значениями внутренних регист- ров. Подробнее о стеке будет рассказано в следующем разделе. Схема управления прямым доступом к памяти служит для временного отключения процессора от внешних шин и приостановки работы про- цессора на время предоставления прямого доступа запросившему его ус- тройству. - ' 70
Лекция 3 Функции устройств магистрали Логика управления организует взаимодействие всех узлов процессора, перенаправляет данные, синхронизирует работу процессора с внешними сигналами, а также реализует процедуры ввода и вывода информации. Таким образом, в ходе работы процессора схема выборки команд выби- рает последовательно команды из памяти, затем эти команды выполняются, причем в случае необходимости обработки данных подключается АЛУ. На входы АЛУ могут подаваться обрабатываемые данные из памяти или из внут- ренних регистров. Во внутренних регистрах хранятся также коды адресов об- рабатываемых данных, расположенных в памяти. Результат обработки в АЛУ изменяет состояние регистра признаков и записывается во внутренний ре- гистр или в память (как источник, так и приемник данных указывается в со- ставе кода команды). При необходимости информация может переписываться из памяти (или из устройства ввода/вывода) во внутренний регистр или из внутреннего регистра в память (или в устройство ввода/вывода). Внутренние регистры любого микропроцессора обязательно выполня- ют две служебные функции: • определяют адрес в памяти, где находится выполняемая в данный момент команда (функция счетчика команд или указателя команду, • определяют текущий адрес стека (функция указателя стека). В разных процессорах для каждой из этих функций может отводиться один или два внутренних регистра. Эти два указателя отличаются от дру- гих не только своим специфическим, служебным, системным назначени- ем, но и особым способом изменения содержимого. Их содержимое про- граммы могут менять только в случае крайней необходимости, так как любая ошибка при этом грозит нарушением работы компьютера, зависа- нием и порчей содержимого памяти. Содержимое указателя (счетчика) команд изменяется следующим об- разом. В начале работы системы (при включении питания) в него зано- сится раз и навсегда установленное значение. Это первый адрес програм- мы начального запуска. Затем после выборки из памяти каждой следующей команды значение указателя команд автоматически увеличивается (инк- рементируется) на единицу (или на два в зависимости от формата команд и типа процессора). То есть следующая команда будет выбираться из сле- дующего по порядку адреса памяти. При выполнении команд перехода, нарушающих последовательный перебор адресов памяти, в указатель ко- манд принудительно записывается новое значение — новый адрес в памя- ти, начиная с которого адреса команд опять же будут перебираться после- довательно. Такая же смена содержимого указателя команд производится при вызове подпрограммы и возврате из нее или при начале обработки прерывания и после его окончания. О стеке будет подробнее рассказано в следующем разделе. 71
Глава 2 Организация обмена информацией 2.4.2. Функции памяти Память микропроцессорной системы выполняет функцию временно- го или постоянного хранения данных и команд. Объем памяти определяет допустимую сложность выполняемых системой алгоритмов, а также в не- которой степени и скорость работы системы в целом. Модули памяти вы- полняются на микросхемах памяти (оперативной или постоянной). Все чаще в составе микропроцессорных систем используется флэш-память (англ. — flash memory), которая представляет собой энергонезависимую память с возможностью многократной перезаписи содержимого. Информация в памяти хранится в ячейках, количество разрядов кото- рых равно количеству разрядов шины данных процессора. Обычно оно кратно восьми (например, 8, 16, 32, 64). Допустимое количество ячеек па- мяти определяется количеством разрядов шины адреса как 2N, где N — количество разрядов шины адреса. Чаще всего объем памяти измеряется в байтах независимо от разрядности ячейки памяти. Используются также следующие более крупные единицы объема памяти: килобайт — 210 или 1024 байта (обозначается Кбайт), мегабайт — 220 или 1 048 576 байт (обо- значается Мбайт), гигабайт — 230 байт (обозначается Гбайт), терабайт — 240 (обозначается Тбайт) Например, если память имеет 65 536 ячеек, каждая из которых 16-разрядная, то говорят, что память имеет объем 128 Кбайт. Совокупность ячеек памяти называется обычно пространством памяти системы. Для подключения модуля памяти к системной магистрали использу- ются блоки сопряжения, которые включают в себя дешифратор (селектор) адреса, схему обработки управляющих сигналов магистрали и буферы дан- ных (рис. 2.18). Оперативная память общается с системной магистралью в циклах чте- ния и записи, постоянная память — только в циклах чтения. Обычно в составе системы имеется несколько модулей памяти, каждый из которых работает в своей области пространства памяти. Селектор адреса как раз и определяет, какая область адресов пространства памяти отведена данному модулю памяти. Схема управления вырабатывает в нужные моменты сиг- налы разрешения работы памяти (CS) и сигналы разрешения записи в па- мять (WR). Буферы данных передают данные от памяти к магистрали или от магистрали к памяти. В пространстве памяти микропроцессорной системы обычно выделя- ются несколько особых областей, которые выполняют специальные фун- кции. Память программы начального запуска всегда выполняется на ПЗУ или флэш-памяти. Именно с этой области процессор начинает работу после включения питания и после сброса его с помощью сигнала RESET. 72
Лекция 3 Функции устройств магистрали Рис. 2.18. Структура модуля памяти. Память для стека или стек (Stack)—это часть оперативной памяти, пред- назначенная для временного хранения данных в режиме LIFO (Last In — First Out). Особенность стека по сравнению с другой оперативной памятью — это заданный и неизменяемый способ адресации. При записи любого числа (кода) в стек число записывается по адресу, определяемому как содержи- мое регистра указателя стека, предварительно уменьшенное (декремен- тированное) на единицу (или на два, если 16-разрядные слова расположены в памяти по четным адресам). При чтении из стека число читается из ад- реса, определяемого содержимым указателя стека, после чего это содер- жимое указателя стека увеличивается (инкрементируется) на единицу (или на два). В результате получается, что число, записанное последним, будет прочитано первым, а число, записанное первым, будет прочитано после- дним. Такая память называется LIFO или памятью магазинного типа (на- пример, в магазине автомата патрон, установленный последним, будет извлечен первым). Принцип действия стека показан на рис. 2.19 (адреса ячеек памяти выб- раны условно). Пусть, например, текущее состояние указателя стека 1000008, и в него надо записать два числа (слова). Первое слово будет записано по адресу 1000006 (перед записью указатель стека уменьшится на два). Второе — по адресу 1000004. После записи содержимое указателя стека — 1000004. Если затем прочитать из стека два слова, то первым будет прочитано слово из адреса 1000004, а после чтения указатель стека станет равным 1000006. Вто- 73
Глава 2 Организация обмена инфо мацией рым будет прочитано слово из адреса 1000006, а указатель стека станет рав- ным 1000008. Все вернулось к исходному состоянию. Первое записанное слово читается вторым, а второе — первым. Чтение Адреса 1000000 1000002 1000004 1000006 1000008 100000А 100000С Запись Рис. 2.19. Принцип работы стека. Необходимость такой адресации становится очевидной в случае много- кратно вложенных подпрограмм. Пусть, например, выполняется основная программа, и из нее вызывается подпрограмма 1. Если нам надо сохранить значения данных и внутренних регистров основной программы на время выполнения подпрограммы, мы перед вызовом подпрограммы сохраним их в стеке (запишем в стек), а после ее окончания извлечем (прочитаем) их из стека. Если же из подпрограммы 1 вызывается подпрограмма 2, то ту же самую операцию мы проделаем с данными и содержимым внутренних ре- гистров подпрограммы 1. Понятно, что внутри подпрограммы 2 крайними в стеке (читаемыми в первую очередь) будут данные из Подпрограммы 1, а данные из основной программы будут глубже. При этом в случае чтения из стека автоматически будет соблюдаться нужный порядок читаемой инфор- мации. То же самое будет и в случае, когда таких уровней вложения под- программ гораздо больше. То есть то, что надо хранить подольше, прячется поглубже, а то, что скоро может потребоваться — с краю. В системе команд любого процессора для обмена информацией со сте- ком предусмотрены специальные команды записи в стек (PUSH) и чтения из стека (POP). В стеке можно прятать не только содержимое всех внут- ренних регистров процессоров, но и содержимое регистра признаков (сло- во состояния процессора, PSW). Это позволяет, например, при возвраще- нии из подпрограммы контролировать результат последней команды, 74
Лекция 3 Функции устройств магистрали выполненной непосредственно перед вызовом этой подпрограммы. Мож- но также хранить в стеке и данные, для того чтобы удобнее было переда- вать их между программами и подпрограммами. В общем случае, чем боль- ше область памяти, отведенная под стек, тем больше свободы у программиста и тем более сложные программы могут выполняться. Следующая специальная область памяти — это таблица векторов пре- рываний. Вообще, понятие прерывания довольно многозначно. Под прерывани- ем в общем случае понимается не только обслуживание запроса внешнего устройства, но и любое нарушение последовательной работы процессора. Например, может быть предусмотрено прерывание по факту некоррект- ного выполнения арифметической операции типа деления на ноль. Или же прерывание может быть программным, когда в программе использует- ся команда перехода на какую-то подпрограмму, из которой затем после- дует возврат в основную программу. В последнем случае общее с истин- ным прерыванием только то, как осуществляется переход на подпрограмму и возврат из нее. Любое прерывание обрабатывается через таблицу векторов (указате- лей) прерываний. В этой таблице в простейшем случае находятся адреса начала программ обработки прерываний, которые и называются векторами. Длина таблицы может быть довольно большой (до нескольких сот элементов). Обычно таблица векторов прерываний располагается в начале пространства памяти (в ячейках памяти с малыми адресами). Адрес каждого вектора (или адрес начального элемента каждого вектора) представляет собой номер прерывания. В случае аппаратных прерываний номер прерывания или задается уст- ройством, запросившим прерывание (при векторных прерываниях), или же задается номером линии запроса прерываний (при радиальных прерыва- ниях). Процессор, получив аппаратное прерывание, заканчивает выполне- ние текущей команды и обращается к памяти в область таблицы векторов прерываний, в ту ее строку, которая определяется номером запрошенного прерывания. Затем процессор читает содержимое этой строки (код вектора прерывания) и переходит в адрес памяти, задаваемый этим вектором. Начиная с этого адреса в памяти должна располагаться программа обработки прерывания с данным номером. В конце программы обработки прерываний обязательно должна располагаться команда выхода из прерывания, выполнив которую, процессор возвращается к выполнению прерванной основной программы. Параметры процессора на время выполнения программы обработки прерывания сохраняются в стеке. Пусть, например, процессор (рис.2.20) выполнял основную программу и кдманду, находящуюся в адресе памяти 5000 (условно). В этот момент он 75
Глава 2 Организация обмена информацией получил запрос прерывания с номером (адресом вектора) 4. Процессор за- канчивает выполнение команды из адреса 5000. Затем он сохраняет в стеке текущее значение счетчика команд (5001) и текущее значение PSW. После этого процессор читает из адреса 4 памяти код вектора прерывания. Пусть этот код равен 6000. Процессор переходит в адрес памяти 6000 и приступает к выполнению программы обработки прерывания, начинающейся с этого адреса. Пусть эта программа заканчивается в адресе 6100. Дойдя до этого адреса, процессор возвращается к выполнению прерванной программы. Для этого он извлекает из стека значение адреса (5001), на котором его прерва- ли, и бывшее в тот момент PSW. Затем процессор читает команду из адреса 5001 и дальше последовательно выполняет команды основной программы. Рис. 2.20. Упрощенный алгоритм обработки прерывания. Прерывание в случае аварийной ситуации обрабатывается точно так же, только адрес вектора прерывания (номер строки в таблице векторов) жестко привязан к данному типу аварийной ситуации. Программное прерывание тоже обслуживается через таблицу векторов прерываний, но номер прерывания указывается в составе команды, вы- зывающей прерывание. Такая сложная, на первый взгляд, организация прерываний позволяет программисту легко менять программы обработки прерываний, распола- гать их в любой области памяти, делать их любого размера и любой слож- ности. Во время выполнения программы обработки прерывания может по- ступить новый запрос на прерывание. В этом случае он обрабатывается точно так же, как описано, но основной программой считается прерван- ная программа обработки предыдущего прерывания. Это называется мно- гократным вложением прерываний. Механизм стека позволяет без про- 76
Лекция 3 Функции устройств магистрали блем обслуживать это многократное вложение, так как первым из стека извлекается тот код, который был сохранен последним, то есть возврат из обработки данного прерывания происходит в программу обработки пре- дыдущего прерывания. Отметим, что в более сложных случаях в таблице векторов прерываний могут находиться не адреса начала программ обработки прерываний, а так называемые дескрипторы (описатели) прерываний. Но конечным резуль- татом обработки этого дескриптора все равно будет адрес начала програм- мы обработки прерываний. Наконец, еще одна специальная область памяти микропроцессорной системы — это память устройств, подключенных к системной шине. Такое решение встречается нечасто, но иногда оно очень удобно. То есть про- цессор получает возможность обращаться к внутренней памяти устройств ввода/вывода или каких-то еще подключенных к системной шине устройств, как к своей собственной системной памяти. Обычно окно в пространстве памяти, выделяемое для этого, не слишком большое. Все остальные части пространства памяти, как правило, имеют универ- сальное назначение. В них могут располагаться как данные, так и программы (конечно, в случае одношинной архитектуры). Иногда это пространство памяти используется как единое целое, без всяких границ. А иногда простран- ство памяти делится на сегменты с программно изменяемым адресом начала сегмента и с установленным размером сегмента. Оба подхода имеют свои плюсы и минусы. Например, использование сегментов позволяет защитить область программ или данных, но зато границы сегментов могут затруднять размещение больших программ и массивов данных. В заключение остановимся на проблеме разделения адресов памяти и адресов устройств ввода/вывода. Существует два основных подхода к ре- шению этой проблемы: • выделение в общем адресном пространстве системы специальной области адресов для устройств ввода/вывода; • полное разделение адресных пространств памяти и устройств ввода/ вывода. Первый подход хорош тем, что при обращении к устройствам ввода/ вывода процессор может использовать те же команды, которые служат для взаимодействия с памятью. Но адресное пространство памяти должно быть уменьшено на величину адресного пространства устройств ввода/вывода. Например, при 16-разрядной шине адреса всего может быть 64К адресов. Из них 56К адресов отводится под адресное пространство памяти, а 8К адресов — под адресное пространство устройств ввода/вывода. Преимущество второго подхода состоит в том, что память занимает все адресное пространство микропроцессорной системы. Для общения с ус- 77
Глава 2 Организация обмена информацией тройствами ввода/вывода применяются специальные команды и специ- альные стробы обмена на магистрали. Именно так сделано, например, в персональных компьютерах. Но возможности взаимодействия с устрой- ствами ввода/вывода в данном случае существенно ограничены по сравнению с возможностями общения с памятью. 2.4.3. Функции устройств ввода/вывода Устройства ввода/вывода обмениваются информацией с магистралью по тем же принципам, что и память. Наиболее существенное отличие с точки зрения организации обмена состоит в том, что модуль памяти имеет в адресном пространстве системы много адресов (до нескольких десятков миллионов), а устройство ввода/вывода обычно имеет немного адресов (обычно до десяти), а иногда и всего один адрес. Но модули памяти системы обмениваются информацией только с ма- гистралью, с процессором, а устройства ввода/вывода взаимодействуют еще и с внешними устройствами, цифровыми или аналоговыми. Поэтому разнообразие устройств ввода/вывода неизмеримо больше, чем модулей памяти. Часто используются еще и другие названия для устройств ввода/ вывода: устройства сопряжения, контроллеры, карты расширения, интер- фейсные модули и т.д. Объединяют все устройства ввода/вывода общие принципы обмена с ма- гистралью и, соответственно, общие принципы организации узлов, которые осуществляют сопряжение с магистралью. Упрощенная структура устройства ввода/вывода (точнее, его интерфейсной части) приведена на рис. 2.21. Как и в случае модуля памяти, она обязательно содержит схему селектора адреса, схему управления для обработки стробов обмена и буферы данных. Самые простейшие устройства ввода/вывода выдают на внешнее уст- ройство код данных в параллельном формате и принимают из внешнего устройства код данных в параллельном формате. Такие устройства ввода/ вывода часто называют параллельными портами ввода/вывода. Они наи- более универсальны, то есть удовлетворяют потребности сопряжения с большим числом внешних устройств, поэтому их часто вводят в состав мик- ропроцессорной системы в качестве стандартных устройств. Параллельные порты обычно имеются в составе микроконтроллеров. Именно через па- раллельные порты микроконтроллер связывается с внешним миром. Входной порт (порт ввода) в простейшем случае представляет собой параллельный регистр, в который процессор может записывать инфор- мацию. Выходной порт (порт вывода) обычно представляет собой просто однонаправленный буфер, через который процессор может читать инфор- мацию от внешнего устройства. Именно такие порты показаны для при- мера на рис. 2.21. Порт может быть и двунаправленным (входным/вйход- 78
Лекция 3 Функции устройств магистрали ным). В этом случае процессор пишет информацию во внешнее устрой- ство и читает информацию из внешнего устройства по одному и тому же адресу в адресном пространстве системы. Входные и выходные линии для связи с внешним устройством при этом могут быть объединены поразрядно, образуя двунаправленные линии. На внешнее С внешнего устройство . . устройства Рис. 2.21. Структура простейшего устройства ввода/вывода. При обращении со стороны магистрали селектор адреса распознает адрес, приписанный данному устройству ввода/вывода. Схема управле- ния выдает внутренние стробы обмена в ответ на магистральные стробы обмена. Входной буфер данных обеспечивает электрическое согласова- ние шины данных с этим устройством (буфер может и отсутствовать). Данные из шины данных записываются в регистр по сигналу С и выда- ются на внешнее устройство. Выходной буфер данных передает входные данные с внешнего устройства на шину данных магистрали в цикле чте- ния из порта. Более сложные устройства ввода/вывода (устройства сопряжения) име- ют в своем составе внутреннюю буферную оперативную память и даже могут иметь микроконтроллер, на который возложено выполнение функ- ций обмена с внешним устройством. Каждому устройству ввода/вывода отводится свой адрес в адресном пространстве микропроцессорной системы. Дублирование адресов долж- но быть исключено, за этим должны следить разработчик и пользователь микропроцессорной системы. и к , 79
Глава 2 Организация обмена информацией Устройства ввода/вывода помимо программного обмена могут также поддерживать режим обмена по прерываниям. В этом случае они преоб- разуют поступающий от внешнего устройства сигнал запроса на прерыва- ние в сигнал запроса прерывания, необходимый для данной магистрали (или в последовательность сигналов при векторном прерывании). Если нужно использовать режим ПДП, устройство ввода/вывода должно вы- дать сигнал запроса ПДП на магистраль и обеспечить работу в циклах ПДП, принятых для данной магистрали. В составе микропроцессорных систем, как правило, выделяются три специальные группы устройств ввода/вывода: • устройства интерфейса пользователя (ввода информации пользова- телем и вывода информации для пользователя); • устройства ввода/вывода для длительного хранения информации; • таймерные устройства. К устройствам ввода для интерфейса пользователя относятся контрол- леры клавиатуры, тумблеров, отдельных кнопок, мыши, трекбола, джой- стика и т.д. К устройствам вывода для интерфейса пользователя относят- ся контроллеры светодиодных индикаторов, табло, жидкокристаллических, плазменных и электронно-лучевых экранов и т.д. В простейших случаях управляющих контроллеров или микроконтролле- ров эти средства могут отсутствовать. В сложных микропроцессорных системах они есть обязательно. Роль внешнего устройства в данном слу- чае играет человек. Устройства ввода/вывода для длительного хранения информации обес- печивают сопряжение микропроцессорной системы с дисководами (ком- пакт-дисков или магнитных дисков), а также с накопителями на магнит- ной ленте. Применение таких устройств существенно увеличивает возможности микропроцессорной системы в отношении хранения вы- полняемых программ и накопления массивов данных. В простейших кон- троллерах эти устройства отсутствуют. Таймерные устройства отличаются от других устройств ввода/вывода тем, что они могут не иметь внешних выводов для подключения к вне- шним устройствам. Эти устройства предназначены для того, чтобы мик- ропроцессорная система могла выдерживать заданные временные интер- валы, следить за реальным временем, считать импульсы и т.д. В основе любого таймера лежит кварцевый тактовый генератор и многоразрядные двоичные счетчики, которые могут перезапускать друг друга. Процессор может записывать в таймер коэффициенты деления тактовой частоты, ко- личество отсчитываемых импульсов, задавать режим работы счетчиков тай- мера, а читает процессор выходные коды счетчиков. В принципе выпол- нить практически все функции таймера можно и программным путем, 80
Лекция 3 Функции устройств магис < и поэтому иногда таймеры в системе отсутствуют. Но включение в систему таймера позволяет решать более сложные задачи и строить более эффек- тивные алгоритмы. Еще один важный класс устройств ввода/вывода — это устройства для подключения к информационным сетям (локальным и глобальным). Эти устройства распространены не так широко, как устройства трех перечис- ленных ранее групп, но их значение с каждым годом становится все боль- ше. Сейчас средства связи с информационными сетями вводятся иногда даже в простые контроллеры. Иногда устройства ввода/вывода обеспечивают сопряжение с внешни- ми устройствами с помощью аналоговых сигналов. Это бывает очень удоб- но, поэтому в состав некоторых микроконтроллеров даже вводят внутрен- ние ЦДЛ и АЦП. 6 — 3199
Лекция 3 Функции устройств магистрали Вариант 1 1. Для чего предназначены регистры процессора? □ для буферирования буферизации внешних шин □ для выполнения арифметических операций □ для временного хранения информации □ для ускорения выборки команд из памяти □ для управления прерываниями 2. Для чего нужен селектор адреса в составе модуля памяти? □ для выделения адресов зоны стека системы □ для выделения адресов памяти начальной загрузки □ для выделения адресов устройств ввода-вывода □ для выделения адресов этого модуля в адресном пространстве системы □ для выделения адресов кэш-памяти системы 3. Что такое порт? □ простейшее устройство ввода-вывода □ одно из самых сложных устройство ввода-вывода □ устройство связи магистрали с системной памятью □ буфер магистрали внутри процессора □ внешнее устройство, с которым осуществляется сопряжение б* 83
Глава 2 Организация обмена информацией Вариант 2 1. Для чего служит регистр признаков? □ для хранения флагов результатов выполненных операций □ для хранения кодов специальных команд □ для хранения кода адреса □ для определения режима работы микропроцессорной системы □ для обслуживания стека 2. Каков принцип работы стековой памяти? □ первый записанный код читается первым □ первый записанный код читается последним □ запись и чтение могут следовать в произвольном порядке □ содержимое стековой памяти не меняется за время работы системы □ стековая память ускоряет работу памяти векторов прерываний 3. Какое устройство не относится к устройствам ввода-вывода? □ контроллер видеомонитора □ устройство сопряжения клавиатуры □ интерфейсная плата локальной сети □ адаптер дискового накопителя □ селектор адреса 84
Лекция 3 Функции устройств магистрали Вариант 3 1. Какова функция конвейера? □ ускорение выполнения логических операций □ увеличение объема системной памяти команд □ уменьшение количества команд процессора □ ускорение выборки команд □ распараллеливание выполнения арифметических операций 2. В какой памяти сохраняется содержимое регистра признаков при прерывании? □ в стековой памяти □ в памяти векторов прерываний □ в памяти программ начального запуска □ в памяти устройств, подключенных к магистрали □ в любой из ячеек системной памяти 3. Выберите верное утверждение □ устройство ввода-вывода всегда имеет множество адресов на магистрали □ устройство ввода-вывода может иметь один адрес на магистрали □ устройство ввода-вывода предназначено исключительно для двунаправленного обмена с внешними устройствами □ устройство ввода-вывода ничем не отличается от модуля памяти □ устройства ввода-вывода почти не отличаются друг от друга 85
Лекция 4 Адресация операндов и регистры процессора Глава 3. Функционирование процессора Лекция 4. Адресация операндов и регистры процессора В этой лекции рассказывается о функциях основных узлов процессо- ра, о методах адресации операндов и о регистрах процессора. Ключевые слова: операнды, методы адресации, сегментирование, ре- гистры-указатели, счетчик команд, PSW. Основная функция любого процессора, ради которой он и создается, — это выполнение команд. Система команд, выполняемых процессором, представляет собой нечто подобное таблице истинности логических эле- ментов или таблице режимов работы более сложных логических микро- схем. То есть она определяет логику работу процессора и его реакцию на те или иные комбинации внешних событий. Написание программ для микропроцессорной системы — важнейший и часто наиболее трудоемкий этап разработки такой системы. А для со- здания эффективных программ необходимо иметь хотя бы самое общее представление о системе команд используемого процессора. Самые ком- пактные и быстрые программы и подпрограммы создаются на языке Ас- семблер, использование которого без знания системы команд абсолютно невозможно, ведь язык Ассемблер представляет собой символьную запись цифровых кодов машинного языка, кодов команд процессора. Конечно, для разработки программного обеспечения существуют всевозможные программные средства. Пользоваться ими обычно можно и без знания си- стемы команд процессора. Чаще всего применяются языки программи- рования высокого уровня, такие как Паскаль и Си. Однако знание системы команд и языка Ассемблер позволяет в несколько раз повысить эффек- тивность некоторых наиболее важных частей программного обеспечения любой микропроцессорной системы — от микроконтроллера до персо- нального компьютера. Именно поэтому в данной главе мы рассмотрим основные типы команд, имеющиеся у большинства процессоров, и особенности их применения. 87
Глава 3 Функционирование процессора Каждая команда, выбираемая (читаемая) из памяти процессором, оп- ределяет алгоритм поведения процессора на ближайшие несколько так- тов. Код команды говорит о том, какую операцию предстоит выполнить процессору и с какими операндами (то есть кодами данных), где взять ис- ходную информацию для выполнения команды и куда поместить резуль- тат (если необходимо). Код команды может занимать от одного до не- скольких байт, причем процессор узнает о том, сколько байт команды ему надо читать, из первого прочитанного им байта или слова. В процессоре код команды расшифровывается и преобразуется в набор микроопераций, выполняемых отдельными узлами процессора. Но разработчику микро- процессорных систем это знание не слишком важно, ему важен только результат выполнения той или иной команды. 3.1. Адресация операндов Большая часть команд процессора работает с кодами данных (операн- дами). Одни команды требуют входных операндов (одного ил и двух), дру- гие выдают выходные операнды (чаще один операнд). Входные операнды называются еще операндами-источниками, а выходные называются опе- рандами-приемниками. Все эти коды операндов (входные и выходные) должны где-то располагаться. Они могут находиться во внутренних реги- страх процессора (наиболее удобный и быстрый вариант). Они могут рас- полагаться в системной памяти (самый распространенный вариант). На- конец, они могут находиться в устройствах ввода/вывода (наиболее редкий случай). Определение места положения операндов производится кодом команды. Причем существуют разные методы, с помощью которых код команды может определить, откуда брать входной операнд и куда поме- щать выходной операнд. Эти методы называются методами адресации. Эффективность выбранных методов адресации во многом определяет эф- фективность работы всего процессора в целом. 3.1.1. Методы адресации Количество методов адресации в различных процессорах может быть от 4 до 16. Рассмотрим несколько типичных методов адресации операн- дов, используемых сейчас в большинстве микропроцессоров. Непосредственная адресация (рис. 3.1) предполагает, что операнд (вход- ной) находится в памяти непосредственно за кодом команды. Операнд обычно представляет собой константу, которую надо куда-то переслать, к чему-то прибавить и т.д. Например, команда может состоять в том, чтобы прибавить число 6 к содержимому какого-то внутреннего регистра про- цессора. Это число 6 будет располагаться в памяти, внутри программы в адресе, следующем за кодом данной команды сложения. 88
Лекция 4 Адресация операндов и регистры процессора Рис. 3.1. Непосредственная адресация. Прямая (она же абсолютная) адресация (рис. 3.2) предполагает, что опе- ранд (входной или выходной) находится в памяти по адресу, код которого находится внутри программы сразу же за кодом команды. Например, ко- манда может состоять в том, чтобы очистить (сделать нулевым) содержи- мое ячейки памяти с адресом 1000000. Код этого адреса 1000000 будет рас- полагаться в памяти, внутри программы в следующем адресе за кодом данной команды очистки. Программа Данные Рис. 3.2. Прямая адресация. Регистровая адресация (рис. 3.3) предполагает, что операнд (входной или выходной) находится во внутреннем регистре процессора. Например, команда может состоять в том, чтобы переслать число из нулевого регистра в первый. Номера обоих регистров (0 и 1) будут определяться кодом ко- манды пересылки. Косвенно-регистровая (она же косвенная) адресация предполагает, что во внутреннем регистре процессора находится не сам операнд, а его адрес в памяти (рис. 3.4). Например, команда может состоять в том, чтобы очи- 89
Глава 3 Функционирование п| стать ячейку памяти с адресом, находящимся в нулевом регистре. Номер этого регистра (0) будет определяться кодом команды очистки. Реже встречаются еще два метода адресации. Автоинкрементная адресация очень близка к косвенной адресации, но отличается от нее тем, что после выполнения команды содержимое используемого регистра увеличивается на единицу или на два. Этот метод адресации очень удобен, например, при последовательной об- работке кодов из массива данных, находящегося в памяти. После об- работки какого-то кода адрес в регистре будет указывать уже на сле- дующий код из массива. При использовании косвенной адресации в данном случае пришлось бы увеличивать содержимое этого регистра отдельной командой. Автодекрементная адресация работает похоже на автоинкрементную, но только содержимое выбранного регистра уменьшается на единицу или на два перед выполнением команды. Эта адресация также удобна при обра- ботке массивов данных. Совместное использование автоинкрементной и автодекрементной адресаций позволяет организовать память стекового типа (см. раздел 2.4.2). 90
Лекция 4 Адресация операндов и регистры процессора Из других распространенных методов адресации можно упомянуть об индексных методах, которые предполагают для вычисления адреса опе- ранда прибавление к содержимому регистра заданной константы (индек- са). Код этой константы располагается в памяти непосредственно за ко- дом команды. Отметим, что выбор того или иного метода адресации в значительной степени определяет время выполнения команды. Самая быстрая адреса- ция — это регистровая, так как она не требует дополнительных циклов обмена по магистрали. Если же адресация требует обращения к памяти, то время выполнения команды будет увеличиваться за счет длительности необходимых циклов обращения к памяти. Понятно, что чем больше внут- ренних регистров у процессора, тем чаше и свободнее можно применять регистровую адресацию, и тем быстрее будет работать система в целом. 3.1.2. Сегментирование памяти Говоря об адресации, нельзя обойти вопрос о сегментировании памя- ти, применяемой в некоторых процессорах, например в процессорах IBM PC-совместимых персональных компьютеров. В процессоре Intel 8086 сегментирование памяти организовано следу- ющим образом. Вся память системы представляется не в виде непрерывного простран- ства, а в виде нескольких кусков — сегментов заданного размера (по 64 Кбайта), положение которых в пространстве памяти можно изменять про- граммным путем. Для хранения кодов адресов памяти используются не отдельные реги- стры, а пары регистров: • сегментный регистр определяет адрес начала сегмента (то есть по- ложение сегмента в памяти); • регистр указателя (регистр смещения) определяет положение рабо- чего адреса внутри сегмента. При этом физический 20-разрядный адрес памяти, выставляемый на внешнюю шину адреса, образуется так, как показано на рис. 3.5, то есть путем сложения смещения и адреса сегмента со сдвигом на 4 бита. Поло- жение этого адреса в памяти показано на рис. 3.6. Сегмент может начинаться только на 16-байтной границе памяти (так как адрес начала сегмента, по сути, имеет четыре младших нулевых разря- да, как видно из рис. 3.5), то есть с адреса, кратного 16. Эти допустимые границы сегментов называются границами параграфов. Отметим, что введение сегментирования, прежде всего, связано с тем, что внутренние регистры процессора 16-разрядные, а физический адрес памяти 20-разрядный (16-разрядный адрес позволяет использовать па- 91
Глава 3 Функционирование процессора мять только в 64 Кбайт, что явно недостаточно). В появившемся в то же время процессоре MC68000 фирмы Motorola внутренние регистры 32-раз- рядные, поэтому там проблемы сегментирования памяти не возникает. Рис. 3.5. Формирование физического адреса памяти из адреса сегмента и смещения. Рис. 3.6. Физический адрес в сегменте (все коды — шестнадцатеричные). Применяются и более сложные методы сегментирования памяти. На- пример, в процессоре Intel 80286 в так называемом защищенном режиме адрес памяти вычисляется в соответствии с рис. 3.7. В сегментном регистре в данном случае хранится не базовый (началь- ный) адрес сегментов, а коды селекторов, определяющие адреса в памяти, 92
Лекция 4 Адресация операндов и регистры процессора по которым хранятся дескрипторы (то есть описатели) сегментов. Область памяти с дескрипторами называется таблицей дескрипторов. Каждый дес- криптор сегмента содержит базовый адрес сегмента, размер сегмента (от 1 до 64 Кбайт) и его атрибуты. Базовый адрес сегмента имеет разрядность 24 бит, что обеспечивает адресацию 16 Мбайт физической памяти. Процессор Рис. 3.7. Адресация памяти в защищенном режиме процессора Intel 80286. Таким образом, на сумматор, вычисляющий физический адрес памя- ти, подается не содержимое сегментного регистра, как в предыдущем слу- чае, а базовый адрес сегмента из таблицы дескрипторов. Еще более сложный метод адресации памяти с сегментированием ис- пользован в процессоре Intel 80386 и в более поздних моделях процессоров фирмы Intel. Этот метод иллюстрируется рис. 3.8. Адрес памяти (физический адрес) вычисляется в три этапа. Сначала вычисляется так называемый эффективный адрес (32-разрядный) путем суммирования трех компонентов: базы, индекса и смещения (Base, Index, Displacement), причем возможно умножение индекса на масштаб (Scale). Эти компоненты имеют следующий смысл: 93
Глава 3 Функционирование процессора Рис. 3.8. Формирование физического адреса памяти процессора 80386 в защищенном режиме. • смещение — это 8-, 16- или 32-разрядное число, включенное в ко- манду. • база — это содержимое базового регистра процессора. Обычно оно используется для указания на начало некоторого массива. • индекс — это содержимое индексного регистра процессора. Обычно оно используется для выбора одного из элементов массива. • масштаб — это множитель (он может быть равен 1, 2, 4 или 8), ука- занный в коде команды, на который перед суммированием с други- ми компонентами умножается индекс. Он используется для указа- ния размера элемента массива. Затем специальный блок сегментации вычисляет 32-разрядный линей- ный адрес, который представляет собой сумму базового адреса сегмента из сегментного регистра с эффективным адресом. Наконец, физический 32- битный адрес памяти образуется путем преобразования линейного адреса блоком страничной переадресации, который осуществляет перевод линей- ного адреса в физический страницами по 4 Кбайта. В любом случае сегментирование позволяет выделить в памяти один или несколько сегментов для данных и один или несколько сегментов для программ. Переход от одного сегмента к другому сводится всего лишь к изменению содержимого сегментного регистра. Иногда это бывает очень удобно. Но для программиста работать с сегментированной памятью обыч- но сложнее, чем с непрерывной, несегментированной памятью, так как приходится следить за границами сегментов, за их описанием, переклю- чением и т.д. 94
Лекция 4 Мресаци^першдо^и регистрыпроцессора 3.1.3. Адресация байтов и слов Многие процессоры, имеющие разрядность 16 или 32, способны адре- совать не только целое слово в памяти (16-разрядное или 32-разрядное), но и отдельные байты. Каждому байту в каждом слове при этом отводится свой адрес. Так, в случае 16-разрядных процессоров все слова в памяти (16-раз- рядные) имеют четные адреса. А байты, входящие в эти слова, могут иметь как четные адреса, так и нечетные. Например, пусть 16-разрядная ячейка памяти имеет адрес 23420, и в ней хранится код 2А5Е (рис. 3.9). Старший байт (адрес 23421) Старший байт (адрес 23423) Слово (адрес 23420) Младший байт (адрес 23420) Младший байт (адрес 23422) Слово Рис. 3.9. Адресация слов и байтов. (адрес 23422) При обращении к целому слову (с содержимым 2А5Е) процессор выс- тавляет адрес 23420. При обращении к младшему байту этой ячейки (с со- держимым 5Е) процессор выставляет тот же самый адрес 23420, но ис- пользует команду, адресующую байт, а не слово. При обращении к старшему байту этой же ячейки (с содержимым 2А) процессор выставляет адрес 23421 и использует команду, адресующую байт. Следующая по порядку 16-разрядная ячейка памяти с содержимым 487F будет иметь адрес 23422, то есть опять же четный. Ее байты будут иметь адреса 23422 и 23423. Для различия байтовых и словных циклов обмена на магистрали в шине управления предусматривается специальный сигнал байтового обмена. Для работы с байтами в систему команд процессора вводятся специальные ко- манды или предусматриваются методы байтовой адресации. 3.2. Регистры процессора Как уже упоминалось, внутренние регистры процессора представ- ляют собой сверхоперативную память небольшого размера, которая 95
Глава 3 Функционирование процессора предназначена для временного хранения служебной информации или данных. Количество регистров в разных процессорах может быть от 6—8 до нескольких десятков. Регистры могут быть универсальными и специализированными. Специализированные регистры, которые при- сутствуют в большинстве процессоров, — это регистр-счетчик команд, регистр состояния (PSW), регистр указателя стека. Остальные регис- тры процессора могут быть как универсальными, так и специализи- рованными. Например, в 16-разрядном процессоре Т-11 фирмы DEC было 8 реги- стров общего назначения (РОН) и один регистр состояния. Все регистры имели по 16 разрядов. Из регистров общего назначения один отводился под счетчик команд, другой — под указатель стека. Все остальные регист- ры общего назначения полностью взаимозаменяемы, то есть имеют уни- версальное назначение, могут хранить как данные, так и адреса (указате- ли), индексы и т.д. Максимально допустимый объем памяти для данного процессора составлял 64 Кбайт (адрес памяти 16-разрядный). В 16-разрядном процессоре MC68000 фирмы Motorola было 19 регист- ров: 16-разрядный регистр состояния, 32-разрядный регистр счетчика ко- манд, 9 регистров адреса (32-разрядных) и 8 регистров данных (32-раз- рядных). Два регистра адреса отведены под указатели стека. Максимально допустимый объем адресуемой памяти — 16 Мбайт (внешняя шина адреса 24-разрядная). Все 8 регистров данных взаимозаменяемы. 7 регистров ад- реса — тоже взаимозаменяемы. В 16-разрядном процессоре Intel 8086, который стал базовым в линии процессоров, используемых в персональных компьютерах, реализован принципиально другой подход. Каждый регистр этого процессора имеет свое особое назначение, и заменять друг друга регистры могут только ча- стично или же не могут вообще. Остановимся на особенностях этого про- цессора подробнее. Процессор 8086 имеет 14 регистров разрядностью по 16 бит. Из них четыре регистра (АХ, ВХ, СХ, DX) — это регистры данных, каждый из ко- торых помимо хранения операндов и результатов операций имеет еще и свое специфическое назначение: • регистр АХ — умножение, деление, обмен с устройствами ввода/вы- вода (команды ввода и вывода); • регистр ВХ — базовый регистр в вычислениях адреса; • регистр СХ — счетчик циклов; • регистр DX — определение адреса ввода/вывода. Для регистров данных существует возможность раздельного использо- вания обоих байтов (например, для регистра АХ они имеют обозначения AL — младший байт и АН — старший байт). 96
Лекция 4 Адресация операндов и регистры процессора Следующие четыре внутренних регистра процессора — это сегментные регистры, каждый из которых определяет положение одного из рабочих сегментов (рис. 3.10): • регистр CS (Code Segment) соответствует сегменту команд, испол- няемых в данный момент; • регистр DS (Data Segment) соответствует сегменту данных, с кото- рыми работает процессор; • регистр ES (Extra Segment) соответствует дополнительному сегменту данных; • регистр SS (Stack Segment) соответствует сегменту стека. Рис. 3.10. Сегменты команд, данных и стека в памяти. В принципе, все эти сегменты могут и перекрываться для оптимально- го использования пространства памяти. Например, если программа зани- мает только часть сегмента, то сегмент данных может начинаться сразу после завершения работы программы (с точностью 16 байт), а не после окончания всего сегмента программы. Следующие пять регистров процессора (SP — Stack Pointer, BP — Base Pointer, SI — Source Index, DI — Destination Index, IP —Instruction Pointer) служат указателями (то есть определяют смещение в пределах сегмента). Например, счетчик команд процессора образуется парой регистров CS и IP, а указатель стека — парой регистров SP и SS. Регистры SI, DI использу- 7 — 3199 97
Глава 3 Функционирование процессора ются в строковых операциях, то есть при последовательной обработке не- скольких ячеек памяти одной командой. Последний регистр FLAGS — это регистр состояния процессора (PSW)- Из его 16 разрядов используются только девять (рис. 3.11): CF (Сапу Flag) — флаг переноса при арифметических операциях, PF (Parity Flag) — флаг четности результата, AF (Auxiliary Flag) — флаг дополнительного переноса, ZF (Zero Flag) — флаг нулевого результата, SF (Sign Flag) — флаг знака (со- впадает со старшим битом результата), TF (Trap Flag) — флаг пошагового режима (используется при отладке), IF (Interrupt-enable Flag) — флаг разрешения аппаратных прерываний, DF (Direction Flag) — флаг направле- ния при строковых операциях, OF (Overflow Flag) — флаг переполнения. 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 OF DF IF TF SF ZF AF PF CF Рис. 3.11. Регистр состояния процессора 8086. Биты регистра состояния устанавливаются или очищаются в зависи- мости от результата исполнения предыдущей команды и используются не- которыми командами процессора. Биты регистра состояния могут также устанавливаться и очищаться специальными командами процессора (о си- стеме команд процессора будет рассказано в следующем разделе). Во многих процессорах выделяется специальный регистр, называемый аккумулятором (то есть накопителем). При этом, как правило, только этот регистр-аккумулятор может участвовать во всех операциях, только через него может производиться взаимодействие с устройствами ввода/вывода. Иногда в него же помешается результат любой выполненной команды (в этом случае говорят даже об «аккумуляторной» архитектуре процессора). Например, в процессоре 8086 регистр данных АХ можно считать своеобразным аккуму- лятором, так как именно он обязательно участвует в командах умножения и деления, а также только через него можно пересылать данные в устройство ввода/вывода и из устройства ввода/вывода. Выделение специального регистра-аккумулятора упрощает структуру процессора и ускоряет пересылки кодов внутри процессора, но в некоторых случаях замедляет ра- боту системы в целом, так как весь поток информации должен пройти через один регистр-аккумулятор. В случае, когда несколько регистров процессо- ра полностью взаимозаменяемы, таких проблем не возникает. 98
Лекция 4 Адресация операндов и регистры процессора Вариант 1 1. Что такое операнд? □ код команды □ адрес команды □ код данных □ адрес адреса данных □ адрес данных 2. Какой метод адресации предполагает размещение операнда внутри выполняемой программы? □ абсолютная адресация □ регистровая адресация □ косвенная адресация □ непосредственная адресация □ операнд всегда находится внутри программы 3. Какой регистр определяет адрес текущей выполняемой коман- ды? □ это может быть любой из регистров □ специализированный регистр □ любой из адресных регистров □ регистр-аккумулятор □ регистр-указатель стека 99
Глава 3 ^yHiaiiioi»ipoBaHMejigoi№cgoga Вариант 2 1. Какой метод адресации наиболее удобен для последователь- ной обработки массивов данных? □ абсолютная адресация □ непосредственная адресация □ автоинкрементная адресация □ косвенно-регистровая адресация □ прямая адресация 2. Каково разделение функций между внутренними регистрами процессора? □ назначение регистров зависит от типа процессора □ все регистры выполняют одни и те же функции □ половина регистров используется для данных, половина — для адресации □ каждый регистр выполняет свою индивидуальную функцию □ одни регистровы специализированные, другие — универсаль- ные 3. Какой регистр процессора 8086/8088 определяет адрес ввода/вывода? □ □ □ □ □ АХ ВХ СХ DX CS 100
Лекция 4 Адресация операндов и регистры гу»|щкххуа Вариант 3 1. Какое основное преимущество сегментирования памяти? □ сегментирование упрощает задание адреса операнда □ сегментирование упрощает структуру процессора □ сегментирование упрощает переключение между сегментами данных и между сегментами программ □ сегментироввние позволяет увеличить объем памяти системы □ сегментирование увеличивает быстродействие процессора 2. Какой бит отсутствует в PSW процессора 8086? □ бит нулевого результата □ бит переноса □ бит переполнения □ бит четности □ бит разрешения ПДП 3. Что такое исполнительный адрес? □ адрес начала сегмента □ адрес текущей выполняемой команды □ номер сегмента □ размер сегмента □ смещение относительно начала сегмента 101
Лекция 5 Система команд процессора w,i .j.iw,.1 . '.ил . ?"' —: 1 . . „...у, . .'."Д" , .. .... = Лекция 5. Система команд процессора В этой лекции рассказывается об основных группах комацд процессо- ра, об особенностях выполнения различных команд, о методах органи- зации подпрограмм. Ключевые слова: арифметические и логические команды, команды пе- ресылки, команды переходов, подпрограммы, ветвления. 3.3. Система команд процессора В общем случае система команд процессора включает в себя следую- щие четыре основные группы команд: • команды пересылки данных; • арифметические команды; • логические команды; • команды переходов. Команды пересылки данных не требуют выполнения никаких опера- ций над операндами. Операнды просто пересылаются (точнее, копиру- ются) из источника (Source) в приемник (Destination). Источником и при- емником могут быть внутренние регистры процессора, ячейки памяти или устройства ввода/вывода. АЛУ в данном случае не используется. Арифметические команды выполняют операции сложения, вычитания, умножения, деления, увеличения на единицу (инкрементирования), уменьшения на единицу (декрементирования) и т.д. Этим командам тре- буется один или два входных операнда. Формируют команды один выход- ной операнд. Логические команды производят над операндами логические операции, например, логическое И, логическое ИЛИ, исключающее ИЛИ, очистку, инверсию, разнообразные сдвиги (вправо, влево, арифметический сдвиг, циклический сдвиг). Этим командам, как и арифметическим, требуется один или два входных операнда, и формируют они один выходной операнд. Наконец, команды переходов предназначены для изменения обычно- го порядка последовательного выполнения команд. С их помощью орга- низуются переходы на подпрограммы и возвраты из них, всевозможные циклы, ветвления программ, пропуски фрагментов программ и т.д. Ко- манды переходов всегда меняют содержимое счетчика команд. Переходы могут быть условными и безусловными. Именно эти команды позволяют строить сложные алгоритмы обработки информации.
Глава 3 Функционирование процессора В соответствии с результатом каждой выполненной команды устанав- ливаются или очищаются биты регистра состояния процессора (PSW). Но надо помнить, что не все команды изменяют все имеющиеся в PSW флаги. Это определяется особенностями каждого конкретного процессора. У разных процессоров системы команд существенно различаются, но в основе своей они очень похожи. Количество команд у процессоров также различно. Например, у упоминавшегося уже процессора MC68000 всего 61 команда, а у процессора 8086 — 133 команды. У современных мощных процессоров количество команд достигает нескольких сотен. В то же вре- мя существуют процессоры с сокращенным набором команд (так называ- емые RISC-процессоры), в которых за счет максимального сокращения количества команд достигается увеличение эффективности и скорости их выполнения. Рассмотрим теперь особенности четырех выделенных групп команд процессора более подробно. 3.3.1. Команды пересылки данных Команды пересылки данных занимают очень важное место в системе ко- манд любого процессора. Они выполняют следующие важнейшие функции: • загрузка (запись) содержимого во внутренние регистры процессора; • сохранение в памяти содержимого внутренних регистров процессора; • копирование содержимого из одной области памяти в другую; • запись в устройства ввода/вывода и чтение из устройств ввода/вывода. В некоторых процессорах (например, Т-11) все эти функции выполня- ются одной единственной командой MOV (для байтовых пересылок — MOVB) но с различными методами адресации операндов. В других процессорах помимо команды MOV имеется еще несколько команд для выполнения перечисленных функций. Например, для загруз- ки регистров могут использоваться команды загрузки, причем для разных регистров — разные команды (их обозначения обычно строятся с исполь- зованием слова LOAD — загрузка). Часто выделяются специальные ко- манды для сохранения в стеке и для извлечения из стека (PUSH — сохранить в стеке, POP — извлечь из стека). Эти команды выполняют пересылку с автоинкрементной и с автодекрементной адресацией (даже если эти режимы адресации не предусмотрены в процессоре в явном виде). Иногда в систему команд вводится специальная команда MOVS для строчной (или цепочечной) пересылки данных (например, в процессоре 8086). Эта команда пересылает не одно слово или байт, а заданное количе- ство слов или байтов (MOVSB), то есть инициирует не один цикл обмена по магистрали, а несколько. При этом адрес памяти, с которым происходит взаимодействие, увеличивается на 1 или на 2 после каждого обращения или 104
Лекция 5 Система команд процессора же уменьшается на 1 или на 2 после каждого обращения. То есть в неявном виде применяется автоинкрементная или автодекрементная адресация. В некоторых процессорах (например, в процессоре 8086) специально выделяются функции обмена с устройствами ввода/вывода. Команда IN используется для ввода (чтения) информации из устройства ввода/выво- да, а команда OUT используется для вывода (записи) в устройство ввода/ вывода. Обмен информацией в этом случае производится между регист- ром-аккумулятором и устройством ввода/вывода. В более продвинутых процессорах этого же семейства (начиная с процессора 80286) добавлены команды строчного (цепочечного) ввода (команда INS) и строчного вы- вода (команда OUTS). Эти команды позволяют пересылать целый массив (строку) данных из памяти в устройство ввода/вывода (OUTS) или из уст- ройства ввода/вывода в память (INS). Адрес памяти после каждого обра- щения увеличивается или уменьшается (как и в случае с командой MOVS). Также к командам пересылки данных относятся команды обмена ин- формацией (их обозначение строится на основе слова Exchange). Может быть предусмотрен обмен информацией между внутренними регистрами, между двумя половинами одного регистра (SWAP) или между регистром и ячейкой памяти. 3.3.2. Арифметические команды Арифметические команды рассматривают коды операндов как число- вые двоичные или двоично-десятичные коды. Эти команды могут быть разделены на пять основных групп: • команды операций с фиксированной запятой (сложение, вычитание, умножение, деление); • команды операций с плавающей запятой (сложение, вычитание, ум- ножение, деление); • команды очистки; • команды инкремента и декремента; • команда сравнения. Команды операций с фиксированной запятой работают с кодами в ре- гистрах процессора или в памяти как с обычными двоичными кодами. Ко- манда сложения (ADD) вычисляет сумму двух кодов. Команда вычитания (SUB) вычисляет разность двух кодов. Команда умножения (MUL) вы- числяет произведение двух кодов (разрядность результата вдвое больше разрядности сомножителей). Команда деления (DIV) вычисляет частное от деления одного кода на другой. Причем все эти команды могут работать как с числами со знаком, так и с числами без знака. Команды операций с плавающей запятой (точкой) используют формат представления чисел с порядком и мантиссой (обычно эти числа занима- 105
Глава 3 Функционирование процессора ют две последовательные ячейки памяти). В современных мощных про- цессорах набор команд с плавающей запятой не ограничивается только четырьмя арифметическими действиями, а содержит и множество других более сложных команд, например, вычисление тригонометрических фун- кций, логарифмических функций, а также сложных функций, необходи- мых при обработке звука и изображения. Команды очистки (CLR) предназначены для записи нулевого кода в регистр или ячейку памяти. Эти команды могут быть заменены команда- ми пересылки нулевого кода, но специальные команды очистки обычно выполняются быстрее, чем команды пересылки. Команды очистки иног- да относят к группе логических команд, но суть их от этого не меняется. Команды инкремента (увеличения на единицу, INC) и декремента (уменьшения на единицу, DEC) также бывают очень удобны. Их можно в принципе заменить командами суммирования с единицей или вычитания единицы, но инкремент и декремент выполняются быстрее, чем сумми- рование и вычитание. Эти команды требуют одного входного операнда, который одновременно является и выходным операндом. Наконец, команда сравнения (обозначается СМР) предназначена для сравнения двух входных операндов. По сути, она вычисляет разность этих двух операндов, но выходного операнда не формирует, а всего лишь изме- няет биты в регистре состояния процессора (PSW) по результату этого вы- читания. Следующая за командой сравнения команда (обычно это коман- да перехода) будет анализировать биты в регистре состояния процессора и выполнять действия в зависимости от их значений (о командах перехода речь идет в разделе 3.3.4). В некоторых процессорах предусмотрены ко- манды цепочечного сравнения двух последовательностей операндов, на- ходящихся в памяти (например, в процессоре 8086 и совместимых с ним). 3.3.3. Логические команды Логические команды выполняют над операндами логические (побитовые) операции, то есть они рассматривают коды операндов не как единое число, а как набор отдельных битов. Этим они отличаются от арифметических ко- манд. Логические команды выполняют следующие основные операции: • логическое И, логическое ИЛИ, сложение по модулю 2 (Исключаю- щее ИЛИ); • логические, арифметические и циклические сдвиги; • проверка битов и операндов; • установка и очистка битов (флагов) регистра состояния процессора (PSW). Команды логических операций позволяют побитно вычислять основ- ные логические функции от двух входных операндов. Кроме того, опера- 106
Лекция 5 Система команд процессора ция И (AND) используется для принудительной очистки заданных битов (в качестве одного из операндов при этом используется код маски, в кото- ром разряды, требующие очистки, установлены в нуль). Операция ИЛИ (OR) применяется для принудительной установки заданных битов (в ка- честве одного из операндов при этом используется код маски, в котором разряды, требующие установки в единицу, равны единице). Операция «Ис- ключающее ИЛИ» (XOR) используется для инверсии заданных битов (в качестве одного из операндов при этом применяется код маски, в кото- ром биты, подлежащие инверсии, установлены в единицу). Команды тре- буют двух входных операндов и формируют один выходной операнд. Команды сдвигов позволяют побитно сдвигать код операнда вправо (в сторону младших разрядов) или влево (в сторону старших разрядов). Тип сдвига (логический, арифметический или циклический) определяет, ка- ково будет новое значение старшего бита (при сдвиге вправо) или млад- шего бита (при сдвиге влево), а также определяет, будет ли где-то сохра- нено прежнее значение старшего бита (при сдвиге влево) или младшего бита (при сдвиге вправо). Например, при логическом сдвиге вправо в старшем разряде кода операнда устанавливается нуль, а младший разряд записывается в качестве флага переноса в регистр состояния процессора. А при арифметическом сдвиге вправо значение старшего разряда сохраняется прежним (нулем или единицей), младший разряд также записывается в качестве флага переноса. Циклические сдвиги позволяют сдвигать биты кода операнда по кругу (по часовой стрелке при сдвиге вправо или против часовой стрелки при сдвиге влево). При этом в кольцо сдвига может входить или не входить флаг переноса. В бит флага переноса (если он используется) записывается значение старшего бита при циклическом сдвиге влево и младшего бита при циклическом сдвиге вправо. Соответственно, значение бита флага пе- реноса будет переписываться в младший разряд при циклическом сдвиге влево и в старший разряд при циклическом сдвиге вправо. Для примера на рис. 3.12 показаны действия, выполняемые команда- ми сдвигов вправо. Команды проверки битов и операндов предназначены для установки или очистки битов регистра состояния процессора в зависимости от зна- чения выбранных битов или всего операнда в целом. Выходного операнда команды не формируют. Команда проверки операнда (TST) проверяет весь код операнда в целом на равенство нулю и на знак (на значение старшего бита), она требует только одного входного операнда. Команда проверки бита (BIT) проверяет только отдельные биты, для выбора которых в каче- стве второго операнда используется код маски. В коде маски проверяемым битам основного операнда должны соответствовать единичные разряды. 107
Глава 3 Функционирование процессора Логический сдвиг вправо Арифметический сдвиг вправо Циклический сдвиг вправо Циклический сдвиг вправо черезперенос переноса Рис. 3.12. Команды сдвигов вправо. Наконец, команды установки и очистки битов регистра состояния про- цессора (то есть флагов) позволяют установить или очистить любой флаг, что бывает очень удобно. Каждому флагу обычно соответствуют две ко- манды, одна из которых устанавливает его в единицу, а другая сбрасывает в нуль. Например, флагу переноса С (от Сапу) будут соответствовать ко- манды CLC (очистка) и SEC или STC (установка). 3.3.4. Команды переходов Команды переходов предназначены для организации всевозможных циклов, ветвлений, вызовов подпрограмм и т.д., то есть они нарушают пос- ледовательный ход выполнения программы. Эти команды записывают в регистр-счетчик команд новое значение и тем самым вызывают переход процессора не к следующей по порядку команде, а к любой другой коман- де в памяти программ. Некоторые команды переходов предусматривают в дальнейшем возврат назад, в точку, из которой был сделан переход, другие не предусматривают этого. Если возврат предусмотрен, то текущие пара- метры процессора сохраняются в стеке. Если возврат не предусмотрен, то текущие параметры процессора не сохраняются. Команды переходов без возврата делятся на две группы: • команды безусловных переходов; • команды условных переходов. В обозначениях этих команд используются слова Branch (ветвление) и Jump (прыжок). 108
Лекция 5 Система команд процессора Команды безусловных переходов вызывают переход в новый адрес не- зависимо ни от чего. Они могут вызывать переход на указанную величину смещения (вперед или назад) или же на указанный адрес памяти. Величи- на смещения или новое значение адреса указываются в качестве входного операнда. Команды условных переходов вызывают переход не всегда, а только при выполнении заданных условий. В качестве таких условий обычно вы- ступают значения флагов в регистре состояния процессора (PSW). То есть условием перехода является результат предыдущей операции, меняющей значения флагов. Всего таких условий перехода может быть от 4 до 16. Несколько примеров команд условных переходов: • переход, если равно нулю; • переход, если не равно нулю; • переход, если есть переполнение; • переход, если нет переполнения; • переход, если больше нуля; • переход, если меньше или равно нулю. Если условие перехода выполняется, то производится загрузка в ре- гистр-счетчик команд нового значения. Если же условие перехода не вы- полняется, счетчик команд просто наращивается, и процессор выбирает и выполняет следующую по порядку команду. Специально для проверки условий перехода применяется команда срав- нения (СМР), предшествующая команде условного перехода (или даже нескольким командам условных переходов). Но флаги могут устанавли- ваться и любой другой командой, например командой пересылки данных, любой арифметической или логической командой. Отметим, что сами ко- манды переходов флаги не меняют, что как раз и позволяет ставить не- сколько команд переходов одну за другой. Совместное использование нескольких команд условных и безуслов- ных переходов позволяет процессору выполнять разветвленные алгорит- мы любой сложности. Для примера на рис. 3.13 показано разветвление программы на две ветки с последующим соединением, а на рис. 3.14 — разветвление на три ветки с последующим соединением. Команды переходов с дальнейшим возвратом в точку, из которой был произведен переход, применяются для выполнения подпрограмм, то есть вспомогательных программ. Эти команды называются также командами вызова подпрограмм (распространенное название — CALL). Использова- ние подпрограмм позволяет упростить структуру основной программы, сделать ее более логичной, гибкой, легкой для написания и отладки. В то же время надо учитывать, что широкое использование подпрограмм, как правило, увеличивает время выполнения программы. 109
Глава 3 Функционирование процессора Рис. 3.13. Реализация разветвления на две ветки. Рис. 3.14. Реализация разветвления на три ветки. Все команды переходов с возвратом предполагают безусловный пере- ход (они не проверяют никаких флагов). При этом они требуют одного входного операнда, который может указывать как абсолютное значение нового адреса, так и смещение, складываемое с текущим значением адре- са. Текущее значение счетчика команд (текущий адрес) сохраняется перед выполнением перехода в стеке. Для обратного возврата в точку вызова подпрограммы (точку перехода) используется специальная команда возврата (RET или RTS). Эта команда извлекает из стека значение адреса команды перехода и записывает его в регистр-счетчик команд. 110
Лекция 5 Система команд процессора Особое место среди команд перехода с возвратом занимают команды прерываний (распространенное название — INT). Эти команды в каче- стве входного операнда требуют номер прерывания (адрес вектора). Об- служивание таких переходов осуществляется точно так же, как и аппарат- ных прерываний. То есть для выполнения данного перехода процессор обращается к таблице векторов прерываний и получает из нее по номеру прерывания адрес памяти, в который ему необходимо перейти. Адрес вы- зова прерывания и содержимое регистра состояния процессора (PSW) со- храняются в стеке. Сохранение PSW — важное отличие команд прерыва- ния от команд переходов с возвратом. Команды прерываний во многих случаях оказываются удобнее, чем обычные команды переходов с возвратом. Сформировать таблицу векто- ров прерываний можно один раз, а потом уже обращаться к ней по мере необходимости. Номер прерывания соответствует номеру подпрограммы, то есть номеру функции, выполняемой подпрограммой. Поэтому коман- ды прерывания гораздо чаще включаются в системы команд процессоров, чем обычные команды переходов с возвратом. Для возврата из подпрограммы, вызванной командой прерывания, ис- пользуется команда возврата из прерывания (IRET или RTI). Эта команда извлекает из стека сохраненное там значение счетчика команд и регистра состояния процессора (PSW). Отметим, что у некоторых процессоров предусмотрены также команды условных прерываний, например, команда прерывания при переполнении. Конечно, в данном разделе мы рассмотрели только основные команды, наиболее часто встречающиеся в процессорах. У конкретных процессоров могут быть и многие другие команды, не относящиеся к перечисленным груп- пам команд. Но изучать их надо уже после того, как выбран тип процессора, подходящий для задачи, решаемой данной микропроцессорной системой. 3. 4. Быстродействие процессора Быстродействие процессора — это одна из важнейших его характерис- тик, определяющая эффективность работы всей микропроцессорной си- стемы в целом. Быстродействие процессора зависит от множества факто- ров, что затрудняет сравнение быстродействия даже разных процессоров внутри одного семейства, не говоря уже о процессорах разных фирм и раз- ного назначения. Выделим важнейшие факторы, влияющие на быстродействие процессора. Прежде всего, быстродействие зависит от тактовой частоты процессо- ра. Все операции внутри процессора выполняются синхронно, тактиру- ются единым тактовым сигналом. Понятно, что чем больше тактовая час- тота, тем быстрее работает процессор, причем, например, двукратное 111
Глава 3 Функционирование процессора увеличение тактовой частоты какого-то процессора снижает вдвое время выполнения команд этим процессором. Однако надо учитывать, что разные процессоры выполняют одинако- вые команды за разное количество тактов, причем количество тактов, зат- рачиваемых на команду, может изменяться от одного такта до десятков или даже сотен. В некоторых процессорах за счет распараллеливания мик- роопераций на команду тратится даже меньше одного такта. Количество тактов, затрачиваемых на выполнение команды, зависит от сложности этой команды и от методов адресации операндов. Напри- мер, быстрее всего (за меньшее число тактов) выполняются команды пе- ресылки данных между внутренними регистрами процессора. Медленнее всего (за большое число тактов) выполняются сложные арифметические команды с плавающей запятой, операнды которых хранятся в памяти. Первоначально для количественной оценки производительности про- цессоров применялась единица измерения MIPS (Mega Instruction Per Second), соответствовавшая количеству миллионов выполняемых инст- рукций (команд) за секунду. Естественно, изготовители микропроцессоров старались ориентироваться на самые быстрые команды. Понятно, что по- добный показатель не слишком удачен. Для измерения производительно- сти при выполнении вычислений с плавающей запятой (точкой) чуть поз- же была предложена единица FLOPS (Floating point Operations Per Second), но она по определению узкоспециальная, так как в некоторых системах операции с плавающей запятой просто не используются. Другой аналогичный показатель быстродействия процессора — время выполнения коротких (быстрых) операций. Для примера в таблице 3.1 представлены показатели быстродействия нескольких 8-разрядных и 16- разрядных процессоров. В настоящее время этот показатель практически не используется, как и MIPS. Время выполнения команд — важный, но далеко не единственный фак- тор, определяющий быстродействие. Большое значение имеет также струк- тура системы команд процессора. Например, некоторым процессорам для выполнения какой-то операции понадобится одна команда, а другим про- цессорам — несколько команд. Какие-то процессоры имеют систему ко- манд, позволяющую быстро решать задачи одного типа, а какие-то — за- дачи другого типа. Важны и методы адресации, разрешенные в данном процессоре, и наличие сегментирования памяти, и способы взаимодей- ствия процессора с устройствами ввода/вывода и т.д. Существенно влияет на быстродействие системы в целом и то, как про- цессор «общается» с памятью команд и памятью данных, применяется ли совмещение выборки команд из памяти с выполнением ранее выбранных команд. 112
Лекция 5 Система команд процессора Процессор 8085 6800 68000 8086 Фирма Intel Motorola Motorola Intel Разрядность 8 8 16 16 Количество команд 80 72 61 133 Тактовая частота, МГц 3 1 8 5 Время выполнения коротких операций, мкс 1,3 2 0,5 0,4 Табл. 3.1. Параметры некоторых процессоров. Быстродействие системы в целом определяется также и разрядностью про- цессора. Например, 8-разрядный процессор будет медленнее пересылать и обрабатывать большие массивы данных, чем 16-разрядный процессор. Точно также 16-разрядный процессор будет значительно медленнее работать с боль- шими числами (большими, чем 65536), чем 32-разрадный процессор. При высокой сложности решаемых задач быстродействие системы зави- сит и от общего объема системной памяти. Ведь если системной памяти мало, системе приходится сохранять данные во внешней памяти (например, на магнитном диске), а это очень сильно (на несколько порядков) замедляет работу. Так что разрядность шины адреса процессора тоже важна. Поэтому количественные показатели производительности процессоров очень условны, они лишь косвенно характеризуют быстродействие систе- мы на базе этого процессора. Тем не менее, некоторые производители пред- лагают количественные показатели для своих процессоров, которые харак- теризуют время выполнения специально составленных тестовых программ, содержащих самые различные команды в тех или иных соотношениях. Так, для сравнения производительности 32-разрвдных процессоров фир- ма Intel, производящая процессоры для персональных компьютеров, в 1992 году предложила свою единицу измерения iCOMP Index (Intel Comparative Microprocessor Performance). Для вычисления этого показателя использует- ся смесь 16- и 32-битных целочисленных команд, команд с плавающей точ- кой, команд обработки графики и видео. В качестве базового взят процес- сор i486SX-25, чей индекс принят равным 100. В Таблице 3.2 приведены индексы iCOM Р для некоторых процессоров фирмы Intel. Как видно из таб- лицы, за счет более развитой архитектуры процессоры семейства 486 всегда быстрее процессоров семейства 386, а любой Pentium быстрее любого про- цессора из семейства 486. Тактовая частота (указана в таблице через чер- точку) определяет производительность только в пределах одного семейства. В 1996 году разработчиками Intel был предложен другой показатель — 8 — 3199 113
Глава 3 Функционирование процессора iCOMP Index 2.0, для вычисления которого не используются 16-разрядные команды, зато введен мультимедийный тест, а за базу взят Pentium-120, чей индекс принят равным 100. В таблице 3.3 представлены эти показатели для некоторых типов процессоров Intel. При этом надо учитывать, что измерения проводятся в составе систе- мы, настроенной на максимальное быстродействие именно данных про- цессоров, и только самой фирмой Intel. Ценность этих показателей и всех им подобных не слишком велика. Для конкретного компьютера и разных процессоров величина показателя может предоставить вполне объективные данные, позволяющие оценить, например, целесообразность замены процессора на более мощный. Но ус- редненность показателей iCOMP не позволяет точно сказать, как будет себя вести процессор в различных задачах, которые ориентированы на пре- имущественное использование разных типов команд. i486SX-25 100 i486DX4-100 435 i386DX-33 56 Pentium-60 510 i486SX-33 136 Pentium-100 815 i486DX2-66 297 Pentium-133 1110 Табл. 3.2. Индексы производительности iCOMP. Pentium-100 90 Pentium MMX-166 160 Pentium-120 100 Pentium MMX-233 203 Pentium-150 114 Pentium Pro-200 220 Pentium-200 142 Pentium 11-266 303 Табл. 3.3. Индексы производительности iCOMP Index 2.0. Точная оценка быстродействия процессора возможна только в составе конкретной системы при решении определенной задачи. Но все пере- численные здесь факторы можно и нужно учитывать при выборе процессора. А количественные показатели помогают сделать выбор.
Лекция 5 Система команд процессоре Вариант 1 1. К какой группе команд относятся команды работы со стеком? □ арифметические команды □ логические команды □ команды пересылки □ команды переходов □ к отдельной группе 2. К какой группе относятся команды сдвига кодов? □ арифметические команды □ логические команды □ команды пересылки □ команды переходов □ команды управления процессором 3. Какие команды обычно не меняют флаги PSW? □ арифметические команды □ логические команды □ команды пересылки □ команды переходов □ все команды обязательно меняют флаги 8* 115
Глава 3 Функционирование процессора Вариант 2 1. Для чего используются команды программных прерываний? □ для управления устройствами ввода-вывода □ для обработки аварийных ситуаций □ для вызова подпрограмм □ для управления режимами работы процессора □ для управления режимами работы памяти 2. Какие команды не формируют выходной операнд? □ арифметические команды □ логические команды □ команды пересылки □ команды переходов □ команды сдвигов 3. К какой группе относится команда “исключающее ИЛИ”? □ арифметические команды □ логические команды □ команды пересылки □ команды переходов □ команды загрузки 116
Лекция 5 Система команд процессора Вариант 3 1. Какие команды чаще других используются для организации подпрограммы? □ арифметические команды □ команды переходов □ логические команды □ команды пересылки □ команды управления процессором 2. К какой группе команд относится команда декремента? □ арифметические команды □ логические команды □ команды переходов □ команды пересылок □ команды сдвигов 3. Какая команда используется для возврата из программного прерывания? □ команда условного перехода □ команда безусловного перехода □ команда перехода с возвратом □ команда вызова прерывания □ специальная команда возврата из прерывания 117
Лекция 6 Процессорное ядро и память микроконтроллеров Глава 4. Организация микроконтроллеров Лекция 6. Процессорное ядро и память микроконтроллеров В этой лекции рассказывается о структуре процессорного ядра и осо- бенностях системы команд микроконтроллеров, функциях и организа- ции памяти программ и данных, об использовании стека и внешней па- мяти микроконтроллеров. Ключевые слова: микроконтроллер, процессорное ядро, команды, па- мять программ, память данных, стек. Основной особенностью современного этапа развития МПС является завершение перехода от систем, выполненных на основе нескольких боль- ших ИС, к однокристальным МК, которые объединяют в одном кристал- ле все основные элементы МПС: центральный процессор (ЦП), постоян- ное запоминающее устройство (ПЗУ), оперативное запоминающее устройство (ОЗУ), порты ввода/выводы, таймеры. 4.1. Классификация и структура микроконтроллеров В настоящее время выпускается целый ряд типов МК. Все эти приборы можно условно разделить на три основных класса: • 8-разрядные МК для встраиваемых приложений; • 16- и 32-разрядные МК; • цифровые сигнальные процессоры (DSP). Наиболее распространенным представителем семейства МК являются 8-разрядные приборы, широко используемые в промышленности, быто- вой и компьютерной технике. Они прошли в своем развитии путь от про- стейших приборов с относительно слаборазвитой периферией до совре- менных многофункциональных контроллеров, обеспечивающих реализацию сложных алгоритмов управления в реальном масштабе вре- мени. Причиной жизнеспособности 8-разрядных МК является использо- вание их для управления реальными объектами, где применяются, в ос- 119
Глава 4 Организация микроконтроллеров новном, алгоритмы с преобладанием логических операций, скорость об- работки которых практически не зависит от разрядности процессора. Росту популярности 8-разрядных МК способствует постоянное расши- рение номенклатуры изделий, выпускаемых такими известными фирма- ми, как Motorola, Microchip, Intel, Zilog, Atmel и многими другими. Современные 8-разрядные МК обладают, как правило, рядом отличи- тельных признаков. Перечислим основные из них: • модульная организация, при которой на базе одного процессорного ядра (центрального процессора) проектируется ряд (линейка) МК, различающихся объемом и типом памяти программ, объемом памяти данных, набором периферийных модулей, частотой синхронизации; • использование закрытой архитектуры МК, которая характеризуется отсутствием линий магистралей адреса и данных на выводах корпуса МК. Таким образом, МК представляет собой законченную систему обработки данных, наращивание возможностей которой с исполь- зованием параллельных магистралей адреса и данных не предпола- гается; • использование типовых функциональных периферийных модулей (таймеры, процессоры событий, контроллеры последовательных интерфейсов, аналого-цифровые преобразователи и др.), имеющих незначительные отличия в алгоритмах работы в МК различных про- изводителей; • расширение числа режимов работы периферийных модулей, кото- рые задаются в процессе инициализации регистров специальных функций МК. При модульном принципе построения все МК одного семейства со- держат процессорное ядро, одинаковое для всех МК данного семейства, и изменяемый функциональный блок, который отличает МК разных мо- делей. Структура модульного МК приведена на рис. 4.1. Процессорное ядро включает в себя: • центральный процессор; • внутреннюю контроллерную магистраль (ВКМ) в составе шин адре- са, данных и управления; • схему синхронизации МК; • схему управления режимами работы МК, включая поддержку режимов пониженного энергопотребления, начального запуска (сброса) и т.д. Изменяемый функциональный блок включает в себя модули памяти различного типа и объема, порты ввода/вывода, модули тактовых генера- торов (Г), таймеры. В относительно простых МК модуль обработки пре- рываний входит в состав процессорного ядра. В более сложных МК он представляет собой отдельный модуль с развитыми возможностями. В со- 120
Лекция 6 Процессорное ядро и память микроконтроллеров став изменяемого функционального блока могут входить и такие допол- нительные модули как компараторы напряжения, аналого-цифровые пре- образователи (АЦП) и другие. Каждый модуль проектируется для работы в составе МК с учетом протокола ВКМ. Данный подход позволяет созда- вать разнообразные по структуре МК в пределах одного семейства. Рис. 4.1. Модульная организация МК. 4.2. Процессорное ядро микроконтроллера 4.2.1. Структура процессорного ядра МК Основными характеристиками, определяющими производительность процессорного ядра МК, являются: • набор регистров д ля хранения промежуточных данных; • система команд процессора; • способы адресации операндов в пространстве памяти; • организация процессов выборки и исполнения команды. С точки зрения системы команд и способов адресации операндов про- цессорное ядро современных 8-разрядных МК реализует один из двух принципов построения процессоров: • процессоры с CISC-архитектурой, реализующие так называемую полную систему команд (Complicated Instruction Set Computer); • процессоры с RISC-архитектурой, реализующие сокращенную сис- тему команд (Reduced Instruction Set Computer). CISC-процессоры выполняют большой набор команд с развитыми воз- можностями адресации, давая разработчику возможность выбрать наибо- лее подходящую команду для выполнения необходимой операции. В при- менении к 8-разрядным МК процессор с CISC-архитектурой может иметь однобайтовый, двухбайтовый и трехбайтовый (редко четырехбайтовый) формат команд. При этом система команд, как правило, неортогональна, то есть не все команды могут использовать любой из способов адресации 121
Глава 4 Организация микроконтроллеров применительно к любому из регистров процессора. Выборка команды на исполнение осуществляется побайтно в течение нескольких циклов ра- боты МК. Время выполнения команды может составлять от 1 до 12 циклов. К МК с CISC-архитектурой относятся МК фирмы Intel с ядром MCS-51, которые поддерживаются в настоящее время целым рядом производите- лей, МК семейств НС05, НС08 и НС11 фирмы Motorola и ряд других. В процессорах с RISC-архитектурой набор исполняемых команд со- кращен до минимума. Для реализации более сложных операций приходится комбинировать команды. При этом все команды имеют формат фиксированной длины (например, 12, 14 или 16 бит), выборка команды из памяти и ее исполнение осуществляется за один цикл (такт) синхронизации. Система команд RISC-процессора предполагает возможность равноправного использования всех регистров процессора. Это обеспечивает дополнительную гибкость при выполнении ряда операций. К МК с RISC-процессором относятся МК AVR фирмы Atmel, МК PIC16 и PIC17 фирмы Microchip и другие. На первый взгляд, МК с RISC-процессором должны иметь более вы- сокую производительность по сравнению с CISC МК при одной и той же тактовой частоте внутренней магистрали. Однако на практике вопрос о производительности более сложен и неоднозначен. Во-первых, оценка производительности МК по времени выполнения команд различных систем (RISC и CISC) не совсем корректна. Обычно производительность МП и МК принято оценивать числом операций пе- ресылки «регистр-регистр», которые могут быть выполнены в течение од- ной секунды. В МК с CISC-процессором время выполнения операции «ре- гистр-регистр» составляет от 1 до 3 циклов, что, казалось бы, уступает производительности МК с RISC-процессором. Однако стремление к со- кращению формата команд при сохранении ортогональности системы ко- манд RISC-процессора приводит к вынужденному ограничению числа доступных в одной команде регистров. Так, например, системой команд МК PIC16 предусмотрена возможность пересылки результата операции только в один из двух регистров — регистр-источник операнда f или рабо- чий регистр W. Таким образом, операция пересылки содержимого одного из доступных регистров в другой (не источник операнда и не рабочий) потребует использования двух команд. Такая необходимость часто возни- кает при пересылке содержимого одного из регистров общего назначения (РОН) в один из портов МК. В то же время, в системе команд большинства CISC-процессоров присутствуют команды пересылки содержимого РОН в один из портов ввода/вывода. То есть более сложная система команд иногда позволяет реализовать более эффективный способ выполнения операции. 122
Лекция 6 Процессорное ядро и память микроконтроллеров Во-вторых, оценка производительности МК по скорости пересылки «регистр-регистр» не учитывает особенностей конкретного реализуемого алгоритма управления. Так, при разработке быстродействующих устройств автоматизированного управления основное внимание следует уделять вре- мени выполнения операций умножения и деления при реализации урав- нений различных передаточных функций. А при реализации пульта дис- танционного управления бытовой техникой следует оценивать время выполнения логических функций, которые используются при опросе кла- виатуры и генерации последовательной кодовой посылки управления. Поэтому в критических ситуациях, требующих высокого быстродействия, следует оценивать производительность на множестве тех операций, кото- рые преимущественно используются в алгоритме управления и имеют ог- раничения по времени выполнения. В-третьих, необходимо еще учитывать, что указанные в справочных дан- ных на МК частоты синхронизации обычно соответствуют частоте подклю- чаемого кварцевого резонатора, в то время как длительность цикла цент- рального процессора определяется частотой обмена по ВКМ. Соотношение этих частот индивидуально для каждого МК и должно быть принято в рас- чет при сравнении производительности различных моделей контроллеров. С точки зрения организации процессов выборки и исполнения команды в современных 8-разрядных МК применяется одна из двух уже упоминавшихся архитектур МПС: фон-неймановская (принстонская) или гарвардская. Основной особенностью фон-неймановской архитектуры является ис- пользование общей памяти для хранения программ и данных, как показа- но на рис. 4.2. Область Рис. 4.2. Структура МПС с фон-неймановской архитектурой. 123
Глава 4 Организация микроконтроллеров Основное преимущество архитектуры Фон-Неймана - упрощение ус- тройства МПС, так как реализуется обращение только к одной общей па- мяти. Кроме того, использование единой области памяти позволяло опе- ративно перераспределять ресурсы между областями программ и данных, что существенно повышало гибкость МПС с точки зрения разработчика программного обеспечения. Размещение стека в общей памяти облегчало доступ к его содержимому. Неслучайно поэтому фон-неймановская архи- тектура стала основной архитектурой универсальных компьютеров, вклю- чая персональные компьютеры. Основной особенностью гарвардской архитектуры является использо- вание раздельных адресных пространств для хранения команд и данных, как показано на рис. 4.3. Память Память программ данных Рис. 4.3. Структура МПС с гарвардской архитектурой. Гарвардская архитектура почти не использовалась до конца 70-х годов, пока производители МК не поняли, что она дает определенные преиму- щества разработчикам автономных систем управления. Дело в том, что, судя по опыту использования МПС для управления различными объектами, для реализации большинства алгоритмов управ- ления такие преимущества фон-неймановской архитектуры как гибкость и универсальность не имеют большого значения. Анализ реальных про- грамм управления показал, что необходимый объем памяти данных МК, используемый для хранения промежуточных результатов, как правило, на порядок меньше требуемого объема памяти программ. В этих условиях использование единого адресного пространства приводило к увеличению формата команд за счет увеличения числа разрядов для адресации опе- 124
Лекция 6 Процессорное ядро и память микроконтроллеров рандов. Применение отдельной небольшой по объему памяти данных спо- собствовало сокращению длины команд и ускорению поиска информа- ции в памяти данных. Кроме того, гарвардская архитектура обеспечивает потенциально бо- лее высокую скорость выполнения программы по сравнению с фон-ней- мановской за счет возможности реализации параллельных операций. Вы- борка следующей команды может происходить одновременно с выполнением предыдущей, и нет необходимости останавливать процес- сор на время выборки команды. Этот метод реализации операций позво- ляет обеспечивать выполнение различных команд за одинаковое число тактов, что дает возможность более просто определить время выполнения циклов и критичных участков программы. Большинство производителей современных 8-разрядных МК исполь- зуют гарвардскую архитектуру. Однако гарвардская архитектура является недостаточно гибкой для реализации некоторых программных процедур. Поэтому сравнение МК, выполненных по разным архитектурам, следует проводить применительно к конкретному приложению. 4.2.2. Система команд процессора МК Так же, как и в любой микропроцессорной системе, набор команд про- цессора МК включает в себя четыре основные группы команд: • команды пересылки данных; • арифметические команды; • логические команды; • команды переходов. Для реализации возможности независимого управления разрядами пор- тов (регистров) в большинстве современных МК предусмотрена также группа команд битового управления (булевый или битовый процессор). Наличие команд битового процессора позволяет существенно сократить объем кода управляющих программ и время их выполнения. В ряде МК выделяют также группу команд управления ресурсами кон- троллера, используемую для настройки режимов работы портов ввода/вы- вода, управления таймером и т.п. В большинстве современных МК внут- ренние ресурсы контроллера отображаются на память данных, поэтому для целей управления ресурсами используются команды пересылки данных. Система команд МК по сравнению с системой команд универсального МП имеет, как правило, менее развитые группы арифметических и логи- ческих команд, зато более мощные группы команд пересылки данных и управления. Эта особенность связана со сферой применения МК, требу- ющей, прежде всего, контроля окружающей обстановки и формирования управляющих воздействий. 125
Глава 4 Организация микроконтроллеров 4.2.3. Схема синхронизации МК Схема синхронизации МК обеспечивает формирование сигналов син- хронизации, необходимых для выполнения командных циклов централь- ного процессора, а также обмена информацией по внутренней магистра- ли. В зависимости от исполнения центрального процессора командный цикл может включать в себя от одного до нескольких (4 — 6) тактов синх- ронизации. Схема синхронизации формирует также метки времени, необходимые для работы таймеров МК. В состав схемы синхронизации входят делители частоты, которые формируют необходимые последова- тельности синхросигналов. 4.3. Память программ и данных МК В МК используется три основных вида памяти. Память программ пред- ставляет собой постоянную память (ПЗУ), предназначенную для хране- ния программного кода (команд) и констант. Ее содержимое в ходе вы- полнения программы не изменяется. Память данных предназначена для хранения переменных в процессе выполнения программы и представляет собой ОЗУ. Регистры МК — этот вид памяти включает в себя внутренние регистры процессора и регистры, которые служат для управления пери- ферийными устройствами (регистры специальных функций). 4.3.1. Память программ Основным свойством памяти программ является ее энергонезависи- мость, то есть возможность хранения программы при отсутствии питания. С точки зрения пользователей МК следует различать следующие типы энергонезависимой памяти программ: • ПЗУ масочного типа — mask-ROM. Содержимое ячеек ПЗУ этого типа заносится при ее изготовлении с помощью масок и не может быть впоследствии заменено или допрограммировано. Поэтому МК с таким типом памяти программ следует использовать только после достаточно длительной опытной эксплуатации. Основным недостатком данной памяти является необходимость значительных затрат на создание нового комплекта фотошаблонов и их внедрение в производство. Обычно такой процесс занимает 2-3 месяца и является экономически выгодным только при выпуске десятков тысяч приборов. ПЗУ масочного типа обеспечивают высокую надежность хранения информации по причине программирования в заводских условиях с последующим контролем результата. • ПЗУ, программируемые пользователем, с ультрафиолетовым стира- нием — EPROM (Erasable Programmable ROM). ПЗУ данного типа 126
Лекция 6 Процессорное ядро и память микроконтроллеров программируются электрическими сигналами и стираются с помо- щью ультрафиолетового облучения. Ячейка памяти EPROM пред- ставляет собой МОП-транзистор с «плавающим» затвором, заряд на который переносится с управляющего затвора при подаче соответ- ствующих электрических сигналов. Для стирания содержимого ячей- ки она облучается ультрафиолетовым светом, который сообщает за- ряду на плавающем затворе энергию, достаточную для преодоления потенциального барьера и стекания на подложку. Этот процесс мо- жет занимать от нескольких секунд до нескольких минут. МК с EPROM допускают многократное программирование и выпускают- ся в керамическом корпусе с кварцевым окошком для доступа ульт- рафиолетового света. Такой корпус стоит довольно дорого, что зна- чительно увеличивает стоимость МК. Для уменьшения стоимости МК с EPROM его заключают в корпус без окошка (версия EPROM с однократным программированием). • ПЗУ, однократно программируемые пользователем, — OTPROM (One-Time Programmable ROM). Представляют собой версию EPROM, выполненную в корпусе без окошка для уменьшения стоимости МК на его основе. Сокращение стоимости при использовании таких корпусов настолько значительно, что в последнее время эти версии EPROM часто используют вместо масочных ПЗУ. • ПЗУ, программируемые пользователем, с электрическим стиранием — EEPROM (Electrically Erasable Programmable ROM). ПЗУ данного типа можно считать новым поколением EPROM, в которых стира- ние ячеек памяти производится также электрическими сигналами за счет использования туннельных механизмов. Применение EEPROM позволяет стирать и программировать МК, не снимая его с платы. Таким способом можно производить отладку и модернизацию программного обеспечения. Это дает огромный выигрыш на начальных стадиях разработки микроконтроллерных систем или в процессе их изучения, когда много времени уходит на поиск причин неработоспособности системы и выполнение циклов стирания-программирования памяти программ. По цене EEPROM занимают среднее положение между OTPROM и EPROM. Техноло- гия программирования памяти EEPROM допускает побайтовое сти- рание и программирование ячеек. Несмотря на очевидные преиму- щества EEPROM, только в редких моделях МК такая память используется для хранения программ. Связано это с тем, что, во-пер- вых, EEPROM имеют ограниченный объем памяти. Во-вторых, по- чти одновременно с EEPROM появились Flash-ПЗУ, которые при 127
Глава 4 Организация микроконтроллеров сходных потребительских характеристиках имеют более низкую сто- имость; • ПЗУ с электрическим стиранием типа Flash — Flash-ROM. Функци- онально Flash-память мало отличается от EEPROM. Основное раз- личие состоит в способе стирания записанной информации. В па- мяти EEPROM стирание производится отдельно для каждой ячейки, а во Flash-памяти стирать можно только целыми блоками. Если не- обходимо изменить содержимое одной ячейки Flash-памяти, потре- буется перепрограммировать весь блок. Упрощение декодирующих схем по сравнению с EEPROM привело к тому, что МК с Flash-па- мятью становятся конкурентоспособными по отношению не только к МК с однократно программируемыми ПЗУ, но и с масочными ПЗУ также. 4.3.2. Память данных Память данных МК выполняется, как правило, на основе статического ОЗУ. Термин «статическое» означает, что содержимое ячеек ОЗУ сохра- няется при снижении тактовой частоты МК до сколь угодно малых значений (с целью снижения энергопотребления). Большинство МК имеют такой параметр, как «напряжение хранения информации» — ^standby- При снижении напряжения питания ниже минимально допустимого уровня UDDM|N, но выше уровня USTANDBY работа программы МК выполняться не будет, но информация в ОЗУ сохраняется. При восстановлении напряжения питания можно будет сбросить МК и продолжить выполнение программы без потери данных. Уровень напряжения хранения составляет обычно около 1 В, что позволяет в случае необходимости перевести МК на питание от автономного источника (батареи) и сохранить в этом режиме данные ОЗУ. Объем памяти данных МК, как правило, невелик и составляет обычно десятки и сотни байт. Это обстоятельство необходимо учитывать при раз- работке программ для МК. Так, при программировании МК константы, если возможно, не хранятся как переменные, а заносятся в ПЗУ программ. Максимально используются аппаратные возможности МК, в частности, таймеры. Прикладные программы должны ориентироваться на работу без использования больших массивов данных. 4.3.3. Регистры МК Как и все МПС, МК имеют набор регистров, которые используются для управления его ресурсами. В число этих регистров входят обычно ре- гистры процессора (аккумулятор, регистры состояния, индексные регис- тры), регистры управления (регистры управления прерываниями, тайме- 128
Лекция 6 Процессорное ядро и память микроконтроллеров ром), регистры, обеспечивающие ввод/вывод данных (регистры данных портов, регистры управления параллельным, последовательным или ана- логовым вводом/выводом). Обращение к этим регистрам может произво- диться по-разному. В МК с RISC-процессором все регистры (часто и аккумулятор) распо- лагаются по явно задаваемым адресам. Это обеспечивает более высокую гибкость при работе процессора. Одним из важных вопросов является размещение регистров в адрес- ном пространстве МК. В некоторых МК все регистры и память данных располагаются в одном адресном пространстве. Это означает, что память данных совмещена с регистрами. Такой подход называется «отображени- ем ресурсов МК на память». В других МК адресное пространство устройств ввода/вывода отделено от общего пространства памяти. Отдельное пространство ввода/вывода дает не- которое преимущество процессорам с гарвардской архитектурой, обеспечи- вая возможность считывать команду во время обращения к регистру ввода/ вывода. 4.3.4. Стек МК В микроконтроллерах ОЗУ данных используется также для организа- ции вызова подпрограмм и обработки прерываний. При этих операциях содержимое программного счетчика и основных регистров (аккумулятор, регистр состояния и другие) сохраняется и затем восстанавливается при возврате к основной программе. В фон-неймановской архитектуре единая область памяти использует- ся, в том числе, и для реализации стека. При этом снижается производи- тельность устройства, так как одновременный доступ к различным видам памяти невозможен. В частности, при выполнении команды вызова под- программы следующая команда выбирается после того, как в стек будет помещено содержимое программного счетчика. В гарвардской архитектуре стековые операции производятся в специ- ально выделенной для этой цели памяти. Это означает, что при выполне- нии программы вызова подпрограмм процессор с гарвардской архитекту- рой производит несколько действий одновременно. Необходимо помнить, что МК обеих архитектур имеют ограниченную емкость памяти для хранения данных. Если в процессоре имеется отдель- ный стек и объем записанных в него данных превышает его емкость, то происходит циклическое изменение содержимого указателя стека, и он начинает ссылаться на ранее заполненную ячейку стека. Это означает, что после слишком большого количества вызовов подпрограмм в стеке ока- жется неправильный адрес возврата. Если МК использует общую область 9 — 3199 129
Глава 4 Организация микроконтроллеров памяти для размещения данных и стека, то существует опасность, что при переполнении стека произойдет запись в область данных либо будет сде- лана попытка записи загружаемых в стек данных в область ПЗУ. 4.3.5. Внешняя память Несмотря на существующую тенденцию по переходу к закрытой архи- тектуре МК, в некоторых случаях возникает необходимость подключения дополнительной внешней памяти (как памяти программ, так и данных). Если МК содержит специальные аппаратные средства для подключе- ния внешней памяти, то эта операция производится штатным способом (как для МП). Второй, более универсальный, способ заключается в том, чтобы ис- пользовать порты ввода/вывода для подключения внешней памяти и реа- лизовать обращение к памяти программными средствами. Такой способ позволяет задействовать простые устройства ввода/вывода без реализации сложных шинных интерфейсов, однако приводит к снижению быстродей- ствия системы при обращении к внешней памяти.
[Лекция 6 Процессорное ядро и память микроконтроллеров Вариант 1 1. Какие преимущества дает модульная организация микроконтроллера? □ повышение быстродействия □ снижение потребляемой мощности □ создание различных по структуре МК в пределах одного семейства □ повышение надежности работы □ увеличение числа обслуживаемых прерываний 2. Что отличает процессоры с RISC-архитектурой от процессоров с CISC - архитектурой? □ тактовая частота □ возможность параллельного исполнения нескольких команд □ система команд □ способ обращения к памяти команд 3. Какая память не изменяет своего содержимого в ходе выполнения программы? □ память данных □ регистры МК □ энергонезависимая память данных □ память программ 4. Каков типичный объем памяти данных микроконтроллера? □ единицы бит □ десятки и сотни байт □ десятки килобайт □ мегабайты 9* 131
Глава 4 Организация микроконтроллеров Вариант 2 1. Какие возможности отсутствуют при использовании микроконтроллеров с «звкрытой» архитектурой? □ возможность изменения тактовой частоты МК □ возможность подключения памяти программ и данных по парал- лельным магистралям □ возможность использования всей совокупности системы команд МК □ возможность подключения внешних устройств 2. Каково типичное соотношение между требуемыми объемами памяти программ и данных микроконтроллере? □ объем памяти данных больше объема памяти программ □ объем памяти данных меньше объема памяти программ □ объем памяти данных равен объему памяти программ □ типичное соотношение отсутствует 3. Сколько раз можно изменить содержимое памяти программ на основе ПЗУ масочного типа? □ неограниченное число раз □ один раз на стадии изготовления МК □ одни раз на стадии программирования пользователем □ около 1000 раз 4. Чем ограничена глубина вложений циклов вызова подпрограмм в микроконтроллере? □ объемом памяти программ □ глубиной стека □ объемом памяти данных □ разрядностью счетчика команд 132
Лекция 6 Процессорное ядро и память микроконтроллеров Вариант 3 1. Что не входит в состав процессорного ядра микроконтроллера? □ схема управления □ схема синхронизации □ внутриконтроллерная магистраль □ ОЗУ 2. Какие команды исполняет булевый или битовый процессор микроконтроллера? □ команды управления отдельными битами 1 □ команды сдвига на 1 бит □ команды пересылки данных □ логические команды 3. Какое излучение требуется для изменения содержимого памяти программ на основе ПЗУ типа Flash? □ рентгеновское □ ультрафиолетовое □ изменение информации производится электрическим способом □ нейтронное 4. При какой минимальной тактовой частоте работы микроконтроллера сохраняется информация в памяти данных? □ вплоть до нулевой □ не ниже 10 Гц □ не ниже 32768 Гц □ не ниже 1 МГц 133
Лекция 7 Организация связи микроконтроллера с внешней средой и временем Лекция 7. Организация связи микроконтроллера с внешней средой и временем В этой лекции рассказывается о структуре и организации портов вво- да/вывода информации микроконтроллеров, режимах работы тайме- ров и процессоров событий, а также об организации обработки преры- ваний. Ключевые слова: порт, ввод, вывод, таймер, счетчик, процессор собы- тий, прерывания. 4.4. Порты ввода/вывода Каждый МК имеет некоторое количество линий ввода/вывода, кото- рые объединены в многоразрядные (чаще 8-разрядные) параллельные пор- ты ввода/вывода. В памяти МК каждому порту ввода/вывода соответству- ет свой адрес регистра данных. Обращение к регистру данных порта ввода/ вывода производится теми же командами, что и обращение к памяти дан- ных. Кроме того, во многих МК отдельные разряды портов могут быть опрошены или установлены командами битового процессора. В зависимости от реализуемых функций различают следующие типы параллельных портов: • однонаправленные порты, предназначенные только для ввода или только для вывода информации; • двунаправленные порты, направление передачи которых (ввод или вывод) определяется в процессе инициализации МК; • порты с альтернативной функцией (мультиплексированные порты). Отдельные линии этих портов используются совместно со встроен- ными периферийными устройствами МК, такими как таймеры, АЦП, контроллеры последовательных интерфейсов; • порты с программно управляемой схемотехникой входного/выход- ного буфера. Порты выполняют роль устройств временного согласования функци- онирования МК и объекта управления, которые в общем случае работают асинхронно. Различают три типа алгоритмов обмена информацией между МК и внешним устройством через параллельные порты ввода/вывода: • режим простого программного ввода/вывода; • режим ввода/вывода со стробированием; 135
Глава 4 Организация микроконтроллеров • режим ввода/вывода с полным набором сигналов подтверждения об- мена. Типичная схема двунаправленного порта ввода/вывода МК приведена на рис. 4.4. ввода данных Рис. 4.4. Типовая схема двунаправленного порта ввода/вывода МК. Триггер управления разрешает вывод данных на внешний вывод. В со- временных МК, как правило, обеспечивается индивидуальный доступ к триггерам данных и управления, что позволяет использовать каждую ли- нию независимо в режиме ввода или вывода. Необходимо обратить особое внимание на то, что при вводе данных счи- тывается значение сигнала, поступающее на внешний вывод, а не содер- жимое триггера данных. Если к внешнему выводу МК подключены выходы других устройств, то они могут установить свой уровень выходного сигнала, который и будет считан вместо ожидаемого значения триггера данных. Другим распространенным вариантом схемотехнической организации порта ввода/вывода является вывод с «открытым истоком», называемый еще «квазидвунаправленным». Такая организация вывода позволяет со- здавать шины с объединением устройств по схеме «монтажное И». 4.5. Таймеры и процессоры событий Большинство задач управления, которые реализуются с помощью МК, требуют исполнения их в реальном времени. Под этим понимается спо- собность системы получить информацию о состоянии управляемого объекта, выполнить необходимые расчетные процедуры и выдать управляющие воздействия в течение интервала времени, достаточного для желаемого изменения состояния объекта. 136
Лекция 7 Организация связи микроконтроллера с внешней средой и временем Возлагать функции формирования управления в реальном масштабе времени только на центральный процессор неэффективно, так как это за- нимает ресурсы, необходимые для расчетных процедур. Поэтому в боль- шинстве современных МК используется аппаратная поддержка работы в реальном времени с использованием таймера (таймеров). Модули таймеров служат для приема информации о времени наступ- ления тех или иных событий от внешних датчиков событий, а также для формирования управляющих воздействий во времени. Модуль таймера 8-разрядного МК представляет собой 8-ми или 16-разрядный счетчик со схемой управления. Схемотехникой МК обычно предусматривается возможность использования таймера в режиме счетчика внешних событий, поэтому его часто называют таймером/счетчиком. Структура типичного 16- разрядного таймера/счетчика в составе МК приведена на рис. 4.5. TOCKI Рис. 4.5. Структура модуля таймера/счетчика. В памяти МК 16-разрядный счетчик отображается двумя регистрами: TH — старший байт счетчика, TL — младший байт. Регистры доступны для чтения и для записи. Направление счета — только прямое, то есть при поступлении входных импульсов содержимое счетчика инкрементирует- ся. В зависимости от настройки счетчик может использовать один из ис- точников входных сигналов: 137
Глава 4 Организация мик -оконт, . ,л леров • импульсную последовательность с выхода управляемого делителя ча- сто™ fBusi • сигналы внешних событий, поступающие на вход TOCKI контроллера. В первом случае говорят, что счетчик работает в режиме таймера, во втором — в режиме счетчика событий. При переполнении счетчика устанавливается в «единицу» триггер переполнения TF, который генерирует запрос на прерывание, если прерывания от таймера разрешены. Пуск и останов таймера могут осуществляться только под управлением программы. Программным способом можно также установить старший и младший биты счетчика в произвольное состояние или прочитать текущий код счетчика. Рассмотренный «классический» модуль таймера/счетчика широко при- меняется в различных моделях относительно простых МК. Он может ис- пользоваться для измерения временных интервалов и формирования пос- ледовательности импульсов. Основными недостатками «классического» таймера/счетчика являются: • потери времени на выполнение команд пуска и останова таймера, приводящие к появлению ошибки при измерении временных ин- тервалов и ограничивающие минимальную длительность измеряе- мых интервалов времени единицами мс; • сложности при формировании временных интервалов (меток вре- мени), отличных от периода полного коэффициента счета, равного (кЛ«) • 2‘6; • невозможность одновременного обслуживания (измерения или фор- мирования импульсного сигнала) сразу нескольких каналов. Первые их двух перечисленных недостатков были устранены в усовер- шенствованном модуле таймера/счетчика, используемом в МК семейства MCS-51 (Intel). Дополнительная логика счетного входа позволяет такто- вым импульсам поступать на вход счетчика, если уровень сигнала на од- ной из линий ввода равен «1». Такое решение повышает точность измере- ния временных интервалов, так как пуск и останов таймера производится аппаратно. Также в усовершенствованном таймере реализован режим пе- резагрузки счетчика произвольным кодом в момент переполнения. Это позволяет формировать временные последовательности с периодом, от- личным от периода полного коэффициента счета. Однако эти усовершенствования не устраняют главного недостатка мо- дуля «классического» таймера — одноканального режима работы. Совер- шенствование подсистемы реального времени МК ведется по следующим направлениям: • увеличение числа модулей таймеров/счетчиков. Этот путь характе- рен для фирм, выпускающих МК со структурой MCS-51, а также для МК компаний Mitsubishi и Hitachi; 138
Лекция 7 Организация связи микроконтроллера с внешней средой и временем • модификация структуры модуля таймера/счетчика, при которой уве- личение числа каналов достигается не за счет увеличения числа счет- чиков, а за счет введения дополнительных аппаратных средств вход- ного захвата (input capture — IC) и выходного сравнения (output compare — ОС). Такой подход используется, в частности, в МК ком- пании Motorola. Принцип действия канала входного захвата таймера/счетчика иллюс- трирует рис. 4.6. Рис. 4.6. Структурная схема канала входного захвата таймера. Схема детектора события «наблюдает» за уровнем напряжения на одном из входов МК Чаще всего это одна из линий порта ввода/вывода. При изменении уровня логического сигнала с «О» на «1» и наоборот вырабатывается строб записи, и текущее состояние счетчика таймера записывается в 16-разрядный 139
Глава 4 Организация микроконтроллеров регистр входного захвата. Описанное действие в микропроцессорной технике называют событием захвата. Предусмотрена возможность выбора типа сигнала на входе, и это воспринимается как событие: • положительный (передний) фронт сигнала; • отрицательный (задний) фронт сигнала; • любое изменение логического уровня сигнала. Выбор типа-события захвата устанавливается в процессе инициализа- ции таймера и может неоднократно изменяться в ходе выполнения про- граммы. Каждое событие захвата приводит к установке в «1» триггера вход- ного захвата и появлению на его выходе флага (признака) входного захвата ICF. Состояние триггера входного захвата может быть считано программ- но, а если прерывания по событию захвата разрешены — формируется зап- рос на прерывание INTIC. Использование режима входного захвата позволяет исключить ошибки измерения входного интервала времени, связанные со временем перехода к подпрограмме обработки прерывания, так как копирование текущего состояния счетчика осуществляется аппаратными, а не программными средствами. Однако время перехода на подпрограмму обработки преры- вания накладывает ограничение на длительность измеряемого интервала времени, так как предполагается, что второе событие захвата произойдет позже, чем код первого события будет считан МК. Структура аппаратных средств канала выходного сравнения представ- лена на рис. 4.7. Цифровой компаратор непрерывно сравнивает текущий код счетчика таймера с кодом, который записан в 16-разрядном регистре выходного сравнения. В момент равенства кодов на одном из выходов МК (Pxj на рис. 4.7) устанавливается заданный уровень логического сигнала. Обычно предусмотрено три типа изменения сигнала на выходе Pxj в момент события выходного сравнения: • установка высокого логического уровня; • установка низкого логического уровня; • инвертирование сигнала на выходе. При наступлении события сравнения устанавливаются в «1» триггер выходного сравнения и соответствующий ему признак выходного сравне- ния ОСЕ Аналогично режиму входного захвата состояние триггера вы- ходного сравнения может быть считано программно, а если прерывания по событию сравнения разрешены — формируется запрос на прерывание INT ОС. Режим выходного сравнения предназначен, прежде всего, для форми- рования временных интервалов заданной длительности. Длительность сформированного временного интервала определяется только разностью 140
Лекция 7 Организация связи микроконтроллера с внешней средой и временем кодов, последовательно загружаемых в регистр выходного сравнения, и не зависит от программного обеспечения МК. Время, необходимое для запи- си нового значения кода в регистр канала сравнения, ограничивает мини- мальную длительность формируемого временного интервала. Пуск/ останов Управление Кдел RD X WR * Н/1 Счетчик таймера СТ >21в ЩЦМК Сброс триггера Т/С <S R TF INT Т/С Разрешение прерывания Т/С Выбор способа формирования выходного сигнала DI RG OCL-*i *| "Г | "О" Pxj * Pxj Формирователь > ЩЦМК DI H/L ОСНн» уровня R 0Cf INT ОС Сброс триггера выходного сравнения Регистр выходного сравнения Разрешение прерывания по событию выходного сравнения Рис. 4.7. Структурная схема канала выходного сравнения таймера. Модули усовершенствованного таймера используются в составе МК в различных модификациях. При этом число каналов входного захвата и выходного сравнения в модуле может быть различным. Так, в МК семей- ства НС05 фирмы Motorola типовыми решениями являются модули 1IC+1OC или 2IC+2OC, а модуль таймера в составе МК только один. В 141
Глава 4 Организация мик^контр» щлеров ряде модулей каналы могут быть произвольно настроены на функцию вход- ного захвата или выходного сравнения посредством инициализации. Счет- чик модуля усовершенствованного таймера может не иметь функции про- граммного останова. В этом случае состояние счетчика нельзя синхронизировать с каким-либо моментом работы МК, и такой счетчик характеризуется как свободно считающий (free counter). Аппаратные средства усовершенствованного таймера позволяют ре- шить многие задачи управления в реальном времени. Однако по мере роста сложности алгоритмов управления отчетливо проявляются ограничения модулей усовершенствованного таймера, а именно: • недостаточное число каналов захвата и сравнения, принадлежащих одному счетчику временной базы. Это не позволяет сформировать синхронизированные между собой многоканальные импульсные последовательности; • однозначно определенная конфигурация канала (или захват или сравнение) часто не удовлетворяет потребностям решаемой задачи; • формирование сигналов по методу широтно-импульсной модуляции (ШИМ) требует программной поддержки, что снижает максималь- но достижимую частоту выходного сигнала. Поэтому следующим этапом развития модулей подсистемы реального времени МК стали модули процессоров событий. Впервые модули про- цессоров событий были использованы компанией Intel в МК семейства 8xC51Fx. Этот модуль получил название программируемого счетного мас- сива (Programmable Counter Array — РСА). РСА обеспечивает более широкие возможности работы в реальном мас- штабе времени и в меньшей степени расходует ресурсы центрального про- цессора, чем стандартный и усовершенствованный таймеры/счетчики. К преимуществам РСА также можно отнести более простое программирова- ние и более высокую точность. К примеру, РСА может обеспечить лучшее временное разрешение, чем таймеры 0, 1 и 2 МК семейства MCS-51, так как счетчик РСА способен работать с тактовой частотой, втрое большей, чем у этих таймеров. РСА также может решать многие задачи, выполнение которых с использованием таймеров требует дополнительных аппаратных затрат (например, определение фазового сдвига между импульсами или генерация ШИМ-сигнала). РСА состоит из 16-битного таймера-счетчика и пяти 16-битных модулей сравнения-защелки, как показано на рис. 4.8. Таймер-счетчик РСА используется в качестве базового таймера для функционирования всех пяти модулей сравнения-защелки. Вход тайме- ра-счетчика РСА может быть запрограммирован на счет сигналов от сле- дующих источников: • выход делителя на 12 тактового генератора МК; 142
Лекция 7 Организация связи микроконтроллера с внешней средой и временем • выход делителя на 4 тактового генератора МК; • сигнал переполнения таймера 0; • внешний входной сигнал на выводе ECI (Р1.2). Рис. 4.8. Структура процессора событий МК семейства Intel 8xC51Fx. Любой из модулей сравнения-защелки может быть запрограммирован для работы в следующих режимах: • защелкивания по фронту и/или спаду импульса на входе CEXi; • программируемого таймера; • высокоскоростного выхода; • широтно-импульсного модулятора. Модуль 4 может быть также запрограммирован как сторожевой таймер (Watchdog Timer — WDT). Режим защелкивания по импульсу на входе МК эквивалентен режиму входного захвата (IC) усовершенствованного таймера. Режимы програм- мируемого таймера и высокоскоростного выхода близки по своим функ- циональным возможностям к режиму выходного сравнения (ОС). В режиме ШИМ на соответствующем выводе МК формируется после- довательность импульсов с периодом, равным периоду базового таймера/ счетчика РСА. Значение 8-разрядного кода, записанное в младший байт регистра-защелки соответствующего модуля задает скважность формиру- емого сигнала. При изменении кода от 0 до 255 скважность меняется от 100 % до 0,4 %. Режим ШИМ очень прост с точки зрения программного обслужива- ния. Если изменения скважности не предполагается, то достаточно один раз занести соответствующий код в регистр данных модуля, проинициа- лизировать режим ШИМ, и импульсная последовательность будет вос- производиться с заданными параметрами без вмешательства программы. 143
Глава 4 Организация микроконтроллеров Назначение и особенности работы сторожевого таймера будут рассмот- рены далее отдельно. При работе модуля сравнения-защелки в режиме защелки, программиру- емого таймера или высокоскоростного выхода модуль может сформировать сигнал прерывания. Сигналы от всех пяти модулей сравнения-защелки и сиг- нал переполнения таймера РСА разделяют один вектор прерывания. Иными словами, если прерывания разрешены, то и сигнал переполнения таймера РСА и сигнал от любого из модулей вызывают одну и ту же подпрограмму прерываний, которая должна сама идентифицировать источник, вызвавший ее. Для работы с внешними устройствами таймер-счетчик РСА и модули сравнения-защелки используют выводы Р1 порта МК. Если какой-либо вывод порта не используется при работе РСА, или РСА не задействован, порт может применяться стандартным образом. Реализованный в 8xC51FX РСА оказался настолько удачным, что ар- хитектура данных МК стала промышленным стандартом де-факто, а сам РСА многократно воспроизводился в различных модификациях микро- контроллеров разных фирм. Тенденция развития подсистемы реального времени современных МК находит свое отражение в увеличении числа каналов процессоров собы- тий и расширении их функциональных возможностей. 4.6. Модуль прерываний МК Обработка прерываний в МК происходит в соответствии с общими принципами обработки прерываний в МПС. Модуль прерываний прини- мает запросы прерывания и организует переход к выполнению опреде- ленной прерывающей программы. Запросы прерывания могут поступать как от внешних источников, так и от источников, расположенных в раз- личных внутренних модулях МК. В качестве входов для приема запросов от внешних источников чаще всего используются выводы параллельных портов ввода/вывода, для ко- торых эта функция является альтернативной. Источниками запросов вне- шних прерываний также могут быть любые изменения внешних сигналов на некоторых специально выделенных линиях портов ввода/вывода. Источниками внутренних запросов прерываний могут служить следу- ющие события: • переполнение таймеров/счетчиков; • сигналы от каналов входного захвата и выходного сравнения тайме- ров/счетчиков или от процессора событий; 144
Лекция 7 Организация связи микроконтроллера с внешней средой и временем • готовность памяти EEPROM; • сигналы прерывания от дополнительных модулей МК, включая за- вершение передачи или приема информации по одному из последо- вательных портов и другие. Любой запрос прерывания поступает на обработку, если прерывания в МК разрешены и разрешено прерывание по данному запросу. Адрес, ко- торый загружается в программный счетчик при переходе к обработке пре- рывания, называется «вектор прерывания». В зависимости от организа- ции модуля прерываний конкретного МК различные источники прерываний могут иметь разные векторы или использовать некоторые из них совместно. Использование различными прерываниями одного век- тора обычно не вызывает проблем при разработке программного обеспе- чения, так как аппаратная часть МК фиксирована, а контроллер чаще всего выполняет одну-единственную программу. Вопрос о приоритетах при одновременном поступлении нескольких запросов на прерывание решается в различных МК по-разному. Есть МК с одноуровневой системой приоритетов (все запросы равноценны), мно- гоуровневой системой с фиксированными приоритетами и многоуровневой программируемой системой приоритетов. Отдельно необходимо описать аппаратные прерывания, связанные с включением питания, подачей сигнала «сброс» и переполнением сторо- жевого таймера. Они имеют немаскируемый характер и чаще всего разде- ляют один общий вектор прерывания. Это вполне логично, поскольку ре- зультатом каждого из событий является начальный сброс МК. 10 — 3199
Лекция 7 Организация связи микроконтроллера с внешней средой и временем Вариант 1 1. Какое значение сигнала считывается при вводе данных с порта микроконтроллера? □ содержимое триггера данных □ содержимое триггера регистра управления □ логическое “И” над содержимым триггера данных и значением сигнала на внешнем выводе МК □ значение сигнала на внешнем выводе МК 2. При каких условиях триггер переполнения таймера/счетчика генерирует запрос на прерывание микроконтроллера? □ при переполнении таймера/счетчика □ при сбросе таймера/счетчика □ при сбросе запроса на прерывания □ при переполнении таймера/счетчика, если прерывания от таймера разрешены 3. Для чего в первую очередь предназначен модуль выходного сравнения микроконтроллера? □ для формирования временных интервалов заданной длительности □ для сравнения информации на двух портах МК □ для измерения интервалов между событиями на выходах МК □ для выдачи импульсов фиксированной частоты ю* 147
Глава 4 Организация микроконтроллеров Вариант 2 1. Какой тип логической функции позволяет реализовать объединение «квазидвунаправленных» выходов микроконтроллера? □ сложение по модулю 2 □ логическое “И” □ логическое “ИЛИ” □ константа“1" 2. Для чего в первую очередь предназначен модуль входного захвата микроконтроллера? □ для отслеживания изменений сигнала на входе МК □ для подсчета количества событий на входе МК □ для измерения временных интервалов между событиями на входах МК □ для выдачи импульсов фиксированной продолжительности 3. Какой параметр выходного сигнала изменяется при широтно-импульсной модуляции? □ частота □ уровень логического “О” □ скважность □ уровень логической “Г* 148
Лекция 7 Организация связи мню -..контроллера с внешней средой и временем Вариант 3 1. Какова типичная разрядность таймера/счетчика в составе микроконтроллера? □ 32 □ 64 □ 8 или 16 □ 4 2. Какие ошибки измерения позволяет исключить использование режима входного захвата таймера/счетчика микроконтроллера? □ ошибки, связанные с временем перехода к подпрограмме обработки прерывания □ потери времени на перезагрузку таймера/счетчика □ потери времени при фиксации события захвата □ потери времени при чтении содержимого регистра входного захвата 3. Что называется «вектором прерывания» микроконтроллера? □ уровень приоритета данного типа прерывания □ состояние линии приема запросов на прерывание □ адрес перехода к подпрограмме обработки прерывания □ состояние бита разрешения прерываний МК 149
Лекция 8 «таст и, ж Вспомогательные аппаратные средства микроконтроллера Лекция 8. Вспомогательные аппаратные средства микроконтроллера В этой лекции рассказывается о режимах пониженного энергопотреб- ления микроконтроллера, а также о структуре и организации таких вспомогательных аппаратных средств как тактовые генераторы, схе- мы контроля напряжения питания, сторожевые таймеры и дополнитель- ные модули микроконтроллера. Ключевые слова: энергопотребление, тактовый генератор, сторожевой таймер, последовательный порт, АЦП, ЦАП. 4.7. Минимизация энергопотребления в системах на основе МК Малый уровень энергопотребления является зачастую определяющим фактором при выборе способа реализации цифровой управляющей сис- темы. Современные МК предоставляют пользователю большие возмож- ности в плане экономии энергопотребления и имеют, как правило, следу- ющие основные режимы работы: • активный режим (Run mode) — основной режим работы МК. В этом режиме МК исполняет рабочую программу, и все его ресурсы дос- тупны. Потребляемая мощность имеет максимальное значение PRUN. Большинство современных МК выполнено по КМОП-технологии, поэтому мощность потребления в активном режиме сильно зависит от тактовой частоты; • режим ожидания (Wait mode, Idle mode или Halt mode). В этом режи- ме прекращает работу центральный процессор, но продолжают фун- кционировать периферийные модули, которые контролируют состо- яние объекта управления. При необходимости сигналы от периферийных модулей переводят МК в активный режим, и рабо- чая программа формирует необходимые управляющие воздействия. Перевод МК из режима ожидания в рабочий режим осуществляется по прерываниям от внешних источников или периферийных моду- лей, либо при сбросе МК. В режиме ожидания мощность потребле- ния МК PWA1Tснижается по сравнению с активным режимом в 5... 10 раз; • режим останова (Stop mode, Sleep mode или Power Down mode). В этом 151
Глава 4 Организация микроконтроллеров режиме прекращает работу как центральный процессор, так и большин- ство периферийных модулей. Переход МКизсостоянияостановаврабочий режим возможен, как правило, только по прерываниям от внешних источников или после подачи сигнала сброса. В режиме останова мощность потребления МК Ретор снижается по сравнению с активным режимом примерно на три порядка и составляет единицы микроватт. Два последних режима называют режимами пониженного энергопотреб- ления. Минимизация энергопотребления системы на МК достигается за счет оптимизации мощности потребления МК в активном режиме, а также использования режимов пониженного энергопотребления. При этом необходимо иметь в виду, что режимы ожидания и останова существенно отличаются временем перехода из режима пониженного энергопотребления в активный режим. Выход из режима ожидания обычно происходит в течение 3...5 периодов синхронизации МК, в то время как задержка выхода из режима останова составляет несколько тысяч периодов синхронизации. Кроме снижения динамики работы системы значительное время перехода в активный режим является причиной дополнительного расхода энергии. Мощность потребления МК в активном режиме является одной из важ- нейших характеристик контроллера. Она в значительной степени зависит от напряжения питания МК и частоты тактирования. В зависимости от диапазона питающих напряжений все МК можно разделить на три основные группы: • МК с напряжением питания 5,0 В±10%. Эти МК предназначены, как правило, для работы в составе устройств с питанием от промыш- ленной или бытовой сети, имеют развитые функциональные возмож- ности и высокий уровень энергопотребления. • МК с расширенным диапазоном напряжений питания: от 2,0...3,0 В до 5,0-7,0 В. МК данной группы могут работать в составе устройств как с сетевым, так и с автономным питанием. • МК с пониженным напряжением питания: от 1,8 до 3 В. Эти МК предназначены для работы в устройствах с автономным питанием и обеспечивают экономный расход энергии элементов питания. Зависимость тока потребления от напряжения питания МК почти прямо пропорциональная. Поэтому снижение напряжения питания весь- ма существенно понижает мощность потребления МК. Необходимо, од- нако, иметь в виду, что для многих типов МК с понижением напряжения питания уменьшается максимально допустимая частота тактирования, то есть выигрыш в потребляемой мощности сопровождается снижением про- изводительности системы. Большинство современных МК выполнено по технологии КМОП, по- этому мощность потребления в активном режиме PRbN практически пря- 152
Лекция 8 Вспомогательные аппаратные средства мик оконт .ллера мо пропорциональна тактовой частоте. Поэтому, выбирая частоту такто- вого генератора, не следует стремиться к предельно высокому быстродей- ствию МК в задачах, которые этого не требуют. Часто определяющим фак- тором оказывается разрешающая способность измерителей или формирователей временных интервалов на основе таймера или скорость передачи данных по последовательному каналу. В большинстве современных МК используется статическая КМОП- технология, поэтому они способны работать при сколь угодно низких так- товых частотах вплоть до нулевых. В справочных данных при этом указы- вается, что минимальная частота тактирования равна de (direct current). Это означает, что возможно использование МК в пошаговом режиме, на- пример, для отладки. Мощность потребления МКпри низких частотах так- тирования обычно отражает значение тока потребления при fosc = 32768 Гц (часовой кварцевый резонатор). 4.8. Тактовые генераторы МК Современные МК содержат встроенные тактовые генераторы, которые требуют минимального числа внешних времязадающих элементов. На практике используются три основных способа определения тактовой ча- стоты генератора: с помощью кварцевого резонатора, керамического ре- зонатора и внешней RC-цепи. Типовая схема подключения кварцевого или керамического резонато- ра приведена на рис. 4.9а. Рис. 4.9. Тактирование с использованием кварцевого или керамического резонаторов (а) и с использованием RC-цепи (б). Кварцевый или керамический резонатор Q подключается к выводам XTAL1 и XTAL2, которые обычно представляют собой вход и выход ин- вертирующего усилителя. Номиналы конденсаторов С1 и С2 определя- ются производителем МКдля конкретной частоты резонатора. Иногда тре- 153
Глава 4 Организация микроконтро ллера» буется включить резистор порядка нескольких мегаом между выводами XTAL1 и XTAL2 для стабильной работы генератора. Использование кварцевого резонатора позволяет обеспечить вы- сокую точность и стабильность тактовой частоты (разброс частот кварцевого резонатора обычно составляет менее 0,01%). Такой уро- вень точности требуется для обеспечения точного хода часов реаль- ного времени или организации интерфейса с другими устройствами. Основными недостатками кварцевого резонатора являются его низ- кая механическая прочность (высокая хрупкость) и относительно высокая стоимость. При менее жестких требованиях к стабильности тактовой частоты воз- можно использование более стойких к ударной нагрузке керамических резонаторов. Многие керамические резонаторы имеют встроенные кон- денсаторы, что позволяет уменьшить количество внешних подключаемых элементов с трех до одного. Керамические резонаторы имеют разброс ча- стот порядка нескольких десятых долей процента (обычно около 0,5 %). Самым дешевым способом задания тактовой частоты МК является ис- пользование внешней RC-цепи, как показано на рис. 4.96. Внешняя RC- цепь не обеспечивает высокой точности задания тактовой частоты (раз- брос частот может доходить до десятков процентов). Это неприемлемо для многих приложений, где требуется точный подсчет времени. Однако имеется масса практических задач, где точность задания тактовой частоты не имеет большого значения. Зависимость тактовой частоты МК от номиналов RC-цепи зависит от конкретной реализации внутреннего генератора и приводится в руковод- стве по применению контроллера. Практически все МК допускают работу от внешнего источника такто- вого сигнала, который подключается ко входу XTAL1 внутреннего усили- теля. При помощи внешнего тактового генератора можно задать любую тактовую частоту МК (в пределах рабочего диапазона) и обеспечить син- хронную работу нескольких устройств. Некоторые современные МК содержат встроенные RC или кольцевые генераторы, которые позволяют контроллеру работать без внешних цепей синхронизации. Работа внутреннего генератора обычно разрешается путем программирования соответствующего бита регистра конфигурации МК. В большинстве моделей МК частота времязадаюшего элемента (резонато- ра или RC-цепи) и частота тактирования fBUS жестко связаны коэффициентом деления встроенного делителя частоты. Поэтому изменение частоты программным путем не представляется возможным. Однако ряд последних семейств МК (например, НС08 фирмы Motorola) имеют в своем составе схему тактирования, основанную на принципе синтезатора частоты с контуром 154
Лекция 8 Вспомогательные аппаратные средства микроконтроллера фазовой автоподстройки (PLL — phase loop lock). Такая схема работает как умножитель частоты и позволяет задавать тактовую частоту с помощью низкочастотного кварцевого резонатора, что снижает уровень электромагнитного излучения МК Коэффициенты деления контура PLL могут быть изменены программным путем, что позволяет снизить тактовую частоту (и, соответственно, потребляемую мощность) в промежутки времени, когда высокое быстродействие не требуется. В некоторых МК семейства AVR фирмы Atmel тактовая частота кон- троллера, задаваемая внутренней RC-цепью, также может изменяться про- граммными средствами. 4.9. Аппаратные средства обеспечения надежной работы МК Прикладная программа, записанная в память программ МК, должна обеспечивать его надежную работу при любых комбинациях входных сиг- налов. Однако в результате электромагнитных помех, колебаний напря- жения питания и других внешних факторов предусмотренный разработ- чиком ход выполнения программы может быть нарушен. С целью обеспечения надежного запуска, контроля работы МК и восстановления работоспособности системы в отсутствие оператора все современные МК снабжаются аппаратными средствами обеспечения надежной работы. К ним относятся: • схема формирования сигнала сброса МК; • модуль мониторинга напряжения питания; • сторожевой таймер. 4.9.1. Схема формирования сигнала сброса МК При включении напряжения питания МК должен начать выполнять записанную в памяти программу работы. На этапе нарастания напряже- ния питания МК принудительно переводится в начальное состояние, ко- торое называют состоянием сброса. При этом устанавливаются в исходное состояние внутренние магистрали МК, сигналы управления и регистры специальных функций. Последние определяют начальное состояние пе- риферийных модулей МК, которое чаще всего по умолчанию неактивно. С целью обеспечения надежного запуска от любых источников пита- ния с различной динамикой нарастания напряжения большинство совре- менных МК содержат встроенный детектор напряжения питания (схема Power-On-Reset — POR), который формирует сигнал сброса при нараста- нии напряжения питания. В частности, входящий в состав МК семейства PIC16 таймер установления питания (PWRT) начинает отсчет времени 155
Глава 4 Организация микроконтролле - после того, как напряжение питания пересекло уровень около 1,2...!,8 В. По истечении выдержки около 72 мс считается, что напряжение достигло номинала. Сразу после выхода из состояния сброса МК выполняет следующие дей- ствия: • запускает генератор синхронизации МК. Для стабилизации частоты тактирования внутренними средствами формируется задержка вре- мени; • считывает энергонезависимые регистры конфигурации в соответ- ствующие регистры ОЗУ (если необходимо); • загружает в счетчик команд адрес начала рабочей программы; • производит выборку первой программы из памяти программ и при- ступает к выполнению программы. Адрес ячейки памяти, в которой хранится код первой исполняемой ко- манды, называют вектором начального запуска или вектором сброса. В не- которых МК этот адрес однозначно определен и приведен в техническом описании. Про такие МК говорят, что они имеют фиксированный вектор сброса. В других МК вектор сброса может быть произвольно определен пользователем. На этапе программирования МК необходимый вектор на- чального запуска записывается в ячейки с фиксированными адресами, и при выходе МК из сброса автоматически загружается в счетчик команд. О таких МК говорят, что они имеют загружаемый вектор сброса. Загружае- мый вектор сброса имеют все 8-разрядные МК фирмы Motorola, выпол- ненные по структуре с единым адресным пространством команд и данных. Для перевода МК в состояние сброса при установившемся напряже- нии питания достаточно подать сигнал высокого или низкого уровня (в соответствии со спецификацией МК) на вход сброса (RESET). Обычно для формирования сигнала сброса при включении напряжения питания и нажатии кнопки сброса используют RC-цепь. Типовые схемы формиро- вания сигнала сброса представлены на рис. 4.10. Кнопка Кн предназначена для «ручного» сброса МК при отладке. Диод VD препятствует попаданию на вход RESET отрицательного напряжения при выключении питания. Номиналы R и С определяют задержку време- ни, необходимую для завершения всех переходных процессов при сбросе (указываются в техническом описании на МК). Триггер Шмитта на входе допускает подачу сигнала сброса с ненормированной длительностью фрон- та. При отсутствии триггера Шмитта на входе приходится использовать специальную внешнюю схему формирователя. В современных МКлиния RESET обычно является двунаправленной и имеет низкий активный уровень. При нажатии кнопки «сброс» или включении питания буфер линии устанавливаетсяврежимвводаиреализует так называемый внешний 156
Лекция 8 Вспомогательные аппаратные средства микроконтроллера сброс. МК может перейти в состояние сброса также по сигналам устройств контроля состояния, которые имеются в составе контроллера. В этом случае говорят, что МК находится в состоянии внутреннего сброса. При этом буфер линии RESET устанавливаетсявсостояниевыводаснизким логическим уровнем на выходе. Данный сигнал может быть использован для установки в начальное состояние периферийных ИС. V V DO t а) б) Рис. 4.10. Типовые схемы формирования сигнала внешнего сброса для МК с высоким активным уровнем сигнала сброса (а) и низким активным уровнем сигнала сброса (б). Порядок выхода МК из состояний внешнего и внутреннего сброса в целом одинаков. 4.9.2. Блок детектирования пониженного напряжения питания В реальных условиях эксплуатации может сложиться такая ситуация, при которой напряжение питания МК опустится ниже минимально допу- стимого, но не достигнет порога отпускания схемы POR. В этих условиях МК может «зависнуть». При восстановлении напряжения питания до но- минального значения МК останется неработоспособным. Для восстановления работоспособности системы после «просадки» на- пряжения питания МК необходимо снова сбросить. Для этой цели в со- временных МК реализован дополнительный блок детектирования пони- женного напряжения питания. Такой модуль используется в МК семейства НС08 фирмы Motorola, аналогичный модуль имеется в составе семейства PIC17 фирмы Microchip. Рассматриваемый модуль генерирует сигнал внут- реннего сброса при снижении напряжения питания до уровня чуть ниже минимально допустимого. Уровень срабатывания блока детектирования пониженного напряжения питания значительно превышает напряжение 157
Глава 4 Организация микроконтроллеров сохранения данных в ОЗУ МК. Событие сброса по сигналу блока пони- женного напряжения питания отмечается специальным битом в одном из регистров МК. Следовательно, программно анализируя этот бит после сброса МК, можно установить, что данные целы, и продолжить выполнение программы. 4.9.3. Сторожевой таймер Если, несмотря на все принятые меры, МК все же «завис» , то на слу- чай выхода из этого состояния все современные контроллеры имеют встро- енный модуль сторожевого таймера. Принцип действия сторожевого тай- мера показан на рис. 4.11. Рис. 4.11. Принцип действия сторожевого таймера. Основу сторожевого таймера составляет многоразрядный счетчик. При сбросе МК счетчик обнуляется. После перехода МК в активный режим работы значение счетчика начинает увеличиваться независимо от выпол- няемой программы. При достижении счетчиком максимального кода ге- нерируется сигнал внутреннего сброса, и МК начинает выполнять рабо- чую программу сначала. Для исключения сброса по переполнению сторожевого таймера рабо- чая программа МК должна периодически сбрасывать счетчик. Сброс счет- чика сторожевого таймера осуществляется путем исполнения специаль- ной команды (например, CLRWDT) или посредством записи некоторого указанного кода в один из регистров специальных функций. Тогда при нормальном, предусмотренном разработчиком, порядке исполнения ра- бочей программы переполнения счетчика сторожевого таймера не про- исходит, и он не оказывает влияния на работу МК. Однако, если 158
Лекция 8 Вспомогательные аппаратные средства микроконтроллера исполнение рабочей программы было нарушено, например, вследствие «зависания», то велика вероятность того, что счетчик не будет сброшен вовремя. Тогда произойдет сброс по переполнению сторожевого таймера, и нормальный ход выполнения рабочей программы будет восстановлен. Модули сторожевых таймеров конкретных МК могут иметь различные особенности: • в ряде МК векторы внешнего сброса и сброса по переполнению сто- рожевого таймера совпадают. Это не позволяет выявить причину сброса программным путем и затрудняет написание рабочей про- граммы. Более высокоуровневые МК имеют либо различные векторы сброса, либо отмечают событие сброса по переполнению стороже- вого таймера установкой специального бита в одном из регистров специальных функций; • в некоторых МК при переходе в один из режимов пониженного энергопотребления, когда рабочая программа не выполняется, ав- томатически приостанавливается работа сторожевого таймера. В других МК сторожевой таймер имеет независимый тактовый гене- ратор, который продолжает функционировать и в режиме ожида- ния. В этом случае необходимо периодически выводить МК из со- стояния ожидания для сброса сторожевого таймера. В PIC-контроллерах фирмы Microchip выработка таких сбросов мо- жет быть запрещена путем записи нуля в специальный бит конфи- гурации WDTE. Использование сторожевого таймера существенно повышает способ- ность к самовосстановлению системы на основе МК. 4.10. Дополнительные модули МК Описанные выше модули составляют так называемый базовый ком- плект МК и входят в состав любого современного контроллера. Оче- видна необходимость включения в состав МК дополнительных моду- лей, состав и возможности которых определяются конкретной решаемой задачей. Среди таких дополнительных модулей следует, прежде всего, отметить: • модули последовательного ввода/вывода данных; • модули аналогового ввода/вывода. 4. 10.1. Модули последовательного ввода/вывода Наличие в составе 8-разрядного МК модуля контроллера последова- тельного ввода/вывода стало в последнее время обычным явлением. За- дачи, которые решаются средствами модуля контроллера последователь- ного ввода/вывода, можно разделить на три основные группы: 159
Глава 4 Организация микроконтроллеров • связь встроенной микроконтроллерной системы с системой управ- ления верхнего уровня, например, с персональным компьютером. Чаще всего для этой цели используются интерфейсы RS-232C и RS- 485; • связь с внешними по отношению к МК периферийными ИС, а так- же с датчиками физических величин с последовательным выходом. Для этих целей используются интерфейсы FC, SP1, а также нестан- дартные протоколы обмена; • интерфейс связи с локальной сетью в мультимикроконтроллерных системах. В системах с числом МК до пяти обычно используются сети на основе интерфейсов ГС, RS-232C и RS-485 с собственными сетевыми протоколами высокого уровня. В более сложных системах все более популярным становится протокол CAN. С точки зрения организации обмена информацией упомянутые типы интерфейсов последовательной связи отличаются режимом передачи дан- ных (синхронный или асинхронный), форматом кадра (число бит в по- сылке при передаче байта полезной информации) и временными диаг- раммами сигналов на линиях (уровни сигналов и положение фронтов при переключениях). Число линий, по которым происходит передача в последовательном коде, обычно равно двум (ГС, RS-232C, RS-485) или трем (SPI, некоторые нестандартные протоколы). Данное обстоятельство позволяет спроекти- ровать модули контроллеров последовательного обмена таким образом, чтобы с их помощью на аппаратном уровне можно было реализовать не- сколько типов последовательных интерфейсов. При этом режим передачи (синхронный или асинхронный) и формат кадра поддерживаются на уров- не логических сигналов, а реальные физические уровни сигналов для каж- дого интерфейса получают с помощью специальных ИС, которые назы- вают приемопередатчиками, конверторами, трансиверами. Среди различных типов встроенных контроллеров последовательного обмена, которые входят в состав тех или иных 8-разрядных МК, сложился стандарт «де-факто» — модуль UART (Universal Asynchronous Receiver and Transmitter). UART — это универсальный асинхронный приемопередат- чик. Однако большинство модулей UART, кроме асинхронного режима обмена, способны также реализовать режим синхронной передачи дан- ных. Не все производители МК используют термин UART для обозначения типа модуля контроллера последовательного обмена. Так, в МК фирмы Motorola модуль асинхронной приемопередачи, который поддерживает те же режимы асинхронного обмена, что и UART, принято называть SCI (Serial Communication Interface). Следует отметить, что модуль типа SCI обычно 160
Лекция 8 Вспомогательные аппаратные средства микроконтроллера реализует только режим асинхронного обмена, то есть его функциональ- ные возможности уже по сравнению с модулями типа UART. Однако быва- ют и исключения: под тем же именем SCI в МК МС68НС705В16 скрывает- ся модуль синхронно-асинхронной передачи данных. Модули типа UART в асинхронном режиме работы позволяют реали- зовать протокол обмена для интерфейсов RS-232C, RS-422A, RS-485, в синхронном режиме — нестандартные синхронные протоколы обмена, и в некоторых моделях — SPI. В МК фирмы Motorola традиционно предус- мотрены два модуля последовательного обмена: модуль SCI с возможнос- тью реализации только протоколов асинхронной приемопередачи для ин- терфейсов RS-232C, RS-422A, RS-485 и модуль контроллера синхронного интерфейса в стандарте SPI. Протоколы интерфейсов локальных сетей на основе МК (12С и CAN) отличает более сложная логика работы. Поэтому контроллеры CAN ин- терфейса всегда выполняются в виде самостоятельного модуля. Интер- фейс 12С с возможностью работы как в ведущем, так и ведомом режиме, также обычно поддерживается специальным модулем (модуль последова- тельного порта в МК 89С52 фирмы Philips). Но если реализуется только ведомый режим 12С, то в МК PIC16 фирмы Microchip он успешно сочетается с SPI: настройка одного и того же модуля на один из протоколов осуществляется путем инициализации. В последнее время появилось большое количество МК со встроенными модулями контроллеров CAN и модулями универсального последовательного интерфейса периферийных устройств USB (Universal Serial Bus). Каждый из этих интерфейсов имеет достаточно сложные протоколы обмена, для ознакомления с которыми следует обращаться к специальной литературе. 4. 10.2. Модули аналогового ввода/вывода Необходимость приема и формирования аналоговых сигналов требует наличия в МК модулей аналогового ввода/вывода. Простейшим устройством аналогового ввода в МК является встроен- ный компаратор напряжения. Компаратор сравнивает входное аналого- вое напряжение с опорным потенциалом VREF и устанавливает на выходе логическую «1», если входное напряжение больше опорного. Компарато- ры удобнее всего использовать для контроля определенного значения вход- ного напряжения, например, в термостатах. В комбинации с внешним ге- нератором линейно изменяющегося напряжения встроенный компаратор позволяет реализовать на МК интегрирующий аналого-цифровой преоб- разователь (АЦП). Однако более широкие возможности для работы с аналоговыми сиг- налами дает АЦП, встроенный в МК. Чаще всего он реализуется в виде 11 — 3199 161
Глава 4 Организация микроконтроллеров модуля многоканального АЦП, предназначенного для ввода в МК анало- говых сигналов с датчиков физических величин и преобразования этих сигналов в двоичный код. Структурная схема типового модуля АЦП пред- ставлена на рис. 4.12. Рис. 4.12. Структура модуля АЦП. Многоканальный аналоговый коммутатор К служит для подключения одного из источников аналоговых сигналов (РТхО...РТх7) ко входу АЦП. Выбор источника сигнала для преобразования осуществляется посред- ством записи номера канала коммутатора в соответствующие разряды регистра управления АЦП. Два вывода модуля АЦП используются для задания опорного напряже- ния Uon: VREFH — верхний предел Uon, VREFL — нижний предел. Разность по- тенциалов на входах VREFH и VREFL и составляет Uon. Разрешающая способ- ность АЦП составляет Uon/2n, где п — число двоичных разрядов в слове результата. Максимальное значение опорного напряжения, как правило, 162
Л екция 8 Вспомогательные аппаратные средства микроконтроллера равно напряжению питания МК. Если измеряемое напряжение UraM > VREFH, то результат преобразования будет равен FF, код 00 соответствует напряже- ниям Сизм J VREFL. Для достижения максимальной точности измерения сле- дует выбрать максимально допустимое значение Uon. В этом случае напря- жение смещения нуля входного буфера и нелинейность передаточной характеристики АЦП будут вносить относительно малые погрешности. Собственно аналого-цифровой преобразователь выполнен по методу последовательного приближения. Практически во всех моделях 8-разряд- ных МК разрядность АЦП также составляет 8 разрядов. Соответственно, формат представления результатов измерения АЦП — однобайтовый. Ис- ключение составляют лишь модули АЦП микроконтроллеров для управ- ления преобразователями частоты для электроприводов, разрешающая способность которых равна 10 разрядам. Два младших разряда результата получают с помощью дополнительного емкостного делителя, не связан- ного с регистром последовательного приближения. Длительность такта преобразования задает генератор синхронизации: один цикл равен двум периодам частоты генератора tADC. Время преобра- зования для типовых модулей АЦП микроконтроллеров составляет от еди- ниц до десятков микросекунд. Источником синхронизации модуля АЦП может служить встроенный RC-генератор (Г) или импульсная последовательность тактирования меж- модульных магистралей МК. В первом случае частота синхронизации АЦП обязательно окажется оптимальной, то есть той, которая рекомендуется в техническом описании. Во втором случае выбранная по другим сообра- жениям fBUS может оказаться неподходящей для модуля АЦП. На этот слу- чай в составе некоторых модулей предусмотрен программируемый дели- тель частоты fBUS. Момент завершения каждого цикла преобразования отмечается уста- новкой триггера готовности данных. Если прерывания от модуля АЦП разрешены, то генерируется запрос на прерывания. Как правило, чтение регистра результата сбрасывает триггер готовности. Большинство модулей АЦП имеют только режим программного запус- ка: установка одного из битов регистра режима запускает очередное изме- рение. Наиболее универсальные модули АЦП имеют также режим авто- матического запуска, при котором после завершения одного цикла преобразования немедленно начинается следующий. Однако данные из- мерения каждого цикла должны быть считаны программным способом. Цифро-аналоговые преобразователи в составе МК являются большой редкостью. Функция цифро-аналогового преобразователя реализуется средствами модуля программируемого таймера в режиме ШИМ. На од- ном из выводов МК формируется высокочастотная импульсная последо- 11* 163
Глава4 и микроконтроллеров вательность с регулируемой длительностью импульса. Полученный сиг- нал сглаживается фильтром нижних частот на операционном усилителе. Разрешающая способность такого ЦДЛ определяется дискретностью ре- гулирования коэффициента заполнения в режиме ШИМ.
Лекция 8 Вспомогательные аппаратные средства микроконтроллера Вариант 1 1. Какой модуль микроконтроллера прекращает работу в режиме ожидания? □ центральный процессор □ тактовый генератор □ таймер □ блок прерываний 2. Какой способ тактирования микроконтроллера обеспечивает наивысшую стабильность частоты? □ с использованием RC-цепи □ с использованием кварцевого резонатора □ с использованием керамического резонатора □ с использованием LC-цепи 3. Что используется в качестве простейшего устройства аналогового ввода информации в микроконтроллере? □ АЦП □ компаратор напряжения □ резистивный делитель □ емкостной делитель 165
Глава4 Организация микроконтроллеров' Вариант 2 1. Как зависит ток потребления микроконтроллера от напряжения питания? □ не зависит □ приблизительно линейно □ обратно пропорционально □ квадратично 2. Зачем нужна задержка времени при запуске тактового генератора микроконтроллера? □ для стабилизации частоты генератора □ для минимизации энергопотребления при запуске МК □ для перевода регистров МК в начальное состояние □ для исключения выдачи ложных сигналов на выходах МК 3. АЦП какого типа чаще всего используют в составе микроконтроллера? □ интегрирующие □ параллельные □ последовательного приближения □ на основе преобразователей напряжение-частота 166
Лекция 8 Вспомогательные аппаратные средства мидюконтрс ллера Вариант 3 1. Как зависит ток потребления КМОП микроконтроллера от частоты тактового генератора? □ не зависит □ пропорционально корню квадратному от частоты □ квадратично □ приблизительно линейно 2. Что происходит при переполнении сторожевого таймера микроконтроллера? □ формирование сигнала запроса прерывания □ переход в режим пониженного энергопотребления О сброс МК □ инкремент таймера/счетчика МК 3. Что используется в качестве простейшего ЦАП на выходе микроконтроллера? □ широтно-импульсный модулятор с фильтром нижних частот □ операционный усилитель □ электронный ключ □ усилитель напряжения 167
Лекция 9 Аппаратные средства микроконтроллеров серии PIC Глава 5. Однокристальные микроконтроллеры серии PIC Лекция 9. Аппаратные средства микроконтроллеров серии PIC В этой лекции рассказывается об особенностях организации и пара- метрах популярных PIC-микроконтроллеров фирмы «Microchip», а так- же более подробно о составе, структуре и возможностях аппаратных средств микроконтроллеров подгруппы PIC16F8X. Ключевые слова: PIC, структура, цикл команд, регистры, адресация, порты, таймер, прерывания. 5.1. Основные особенности микроконтроллеров серии PIC 5.1.1. Состав и назначение семейств PIC-контроллеров Микроконтроллеры семейств PIC (Peripheral Interface Controller) компа- нии Microchip объединяют все передовые технологии микроконтроллеров: электрически программируемые пользователем ППЗУ, минимальное энер- гопотребление, высокую производительность, хорошо развитую RISC-архи- тектуру, функциональную законченность и минимальные размеры. Широ- кая номенклатура изделий обеспечивает использование микроконтроллеров в устройствах, предназначенных для разнообразных сфер применения. Первые микроконтроллеры компании Microchip Р1С16С5х появились в конце 1980-х годов и благодаря своей высокой производительности и низкой стоимости составили серьезную конкуренцию производившимся в то время 8-разрядным МК с CISC-архитектурой. Высокая скорость выполнения команд в PIC-контроллерах достигает- ся за счет использования двухшинной гарвардской архитектуры вместо традиционной одношинной фон-неймановской. Гарвардская архитекту- ра основывается на наборе регистров с разделенными шинами и адресны- ми пространствами для команд и данных. Все ресурсы микроконтролле- ра, такие как порты ввода/вывода, ячейки памяти и таймер, представляют собой физически реализованные аппаратные регистры. 169
Глава 5 Однокристальные микроконтроллеры серии PIC Микроконтроллеры PIC содержат RISC-процессор с симметричной системой команд, позволяющей выполнять операции с любым регистром, используя произвольный метод адресации. Пользователь может сохра- нять результат операции в самом регистре-аккумуляторе или во втором регистре, используемом для операции. В настоящее время компания Microchip выпускает пять основных се- мейств 8-разрядных RISC-микроконтроллеров, совместимых снизу вверх по программному коду: • PIC12CXXX - семейство микроконтроллеров, выпускаемых в ми- ниатюрном 8-выводном исполнении. Эти микроконтроллеры выпус- каются как с 12-разрядной (33 команды), так и с 14-разрядной (35 команд) системой команд. Содержат встроенный тактовый генера- тор, таймер/счетчик, сторожевой таймер, схему управления преры- ваниями. В составе семейства есть микроконтроллеры со встроен- ным 8-разрядным четырехканальным АЦП. Способны работать при напряжении питания до 2,5 В; • PIC16C5X — базовое семейство микроконтроллеров с 12-разрядны- ми командами (33 команды), выпускаемое в 18-, 20- и 28-выводных корпусах. Представляют собой простые недорогие микроконтрол- леры с минимальной периферией. Способность работать при малом напряжении питания (до 2 В) делает их удобными для применения в переносных конструкциях. В состав семейства входят микроконт- роллеры подгруппы PIC16HV5XX, способные работать непосред- ственно от батареи в диапазоне питающих напряжений до 15 В; • PIC16CXXX — семейство микроконтроллеров среднего уровня с 14- разрядными командами (35 команд). Наиболее многочисленное се- мейство, объединяющее микроконтроллеры с разнообразными пе- риферийными устройствами, в число которых входят аналоговые компараторы, аналогово-цифровые преобразователи, контроллеры последовательных интерфейсов SPI, USART и I2C, таймеры-счет- чики, модули захвата/сравнения, широтно-импульсные модулято- ры, сторожевые таймеры, супервизорные схемы и так далее; • PIC17CXXX - семейство высокопроизводительных микроконтрол- леров с расширенной системой команд 16 разрядного формата (58 команд), работающие на частоте до 33 МГц, с объемом памяти про- грамм до 16 Келов. Кроме обширной периферии, 16-уровневого ап- паратного стека и векторной системы прерываний, почти все мик- роконтроллеры этого семейства имеют встроенный аппаратный умножитель 8x8, выполняющий операцию умножения за один ма- шинный цикл. Являются одними из самых быстродействующих в классе 8-разрядных микроконтроллеров; 170
Лекция 9 Аппаратные средства микроконтроллеров серии PIC • PIC18CXXX — семейство высокопроизводительных микроконтрол- леров с расширенной системой команд 16-разрядного формата (75 команд) и встроенным 10-разрвдным АЦП, работающие на частоте до 40 МГц. Содержат 31-уровневый аппаратный стек, встроенную память команд до 32 Келов и способны адресовать до 4 Кбайт памяти данных и до 2 Мбайт внешней памяти программ. Расширенное RISC- ядро микроконтроллеров данного семейства оптимизировано под использование нового Си-компилятора. Большинство PIC-контроллеров выпускаются с однократно програм- мируемой памятью программ (ОТР), с возможностью внутрисхемного программирования или масочным ПЗУ. Для целей отладки предлагаются более дорогие версии с ультрафиолетовым стиранием и Flash-памятью. Полный список выпускаемых модификаций PIC-контроллеров вклю- чает порядка пятисот наименований. Поэтому продукция компании пе- рекрывает почти весь диапазон применений 8-разрядных микроконтрол- леров. Из программных средств отладки наиболее известны и доступны раз- личные версии ассемблеров, а также интегрированная программная среда MPLAB. Российские производители программаторов и аппаратных отладочных средств также уделяют внимание PIC-контроллерам. Выпус- каются как специализированные программаторы, такие как PICPROG, программирующие почти весь спектр PIC-микроконтроллеров, так и уни- версальные: UNIPRO и СТЕРХ, поддерживающие наиболее известные версии Р1С-контроллеров. Наиболее распространенными семействами PIC-контроллеров явля- ются PIC16CXXX и PIC17CXXX. 5.1.2. Микроконтроллеры семейств PIC16CXXX и PIC17CXXX Основным назначением микроконтроллеров семейств PIC16 и PIC17, как следует из аббревиатуры PIC (Peripheral Interface Controller), является выполнение интерфейсных функций. Этим объясняются особенности их архитектуры: • RISC-система команд, характеризующаяся малым набором одноад- ресных инструкций (33, 35 или 58), каждая из которых имеет длину в одно слово (12, 14 или 16 бит) и большинство выполняется за один машинный цикл. В системе команд отсутствуют сложные арифме- тические команды (умножение, деление), предельно сокращен на- бор условных переходов; • высокая скорость выполнения команд: при тактовой частоте 20 МГц время машинного цикла составляет 200 нс (быстродействие равно 5 млн. операций/сек); 171
Глава 5 Однокристальные микроконтроллеры серии PIC • наличие мощных драйверов (до 25 мА) на линиях портов ввода/вы- вода, что позволяет подключать непосредственно к ним довольно мощную нагрузку, например, светодиоды. • низкая потребляемая мощность; • ориентация на ценовую нишу предельно низкой стоимости, опре- деляющая использование дешевых корпусов с малым количеством выводов (8,14,18,28), отказ от внешних шин адреса и данных (кроме PIC17C4X), использование упрощенного механизма прерываний и аппаратного (программно недоступного) стека. 5.1.3. Особенности архитектуры микроконтроллеров семейства PIC16CXXX Микроконтроллеры семейства PIC16CXXX, выполненные по техноло- гии HCMOS представляют собой 8-разрядные микроконтроллеры на ос- нове RISC-процессора, выполненные по гарвардской архитектуре. Име- ют встроенное ПЗУ команд объемом от 0,5 до 4 Келов (разрядность слова команд равна 12 — 14 бит). Память данных PIC-контроллеров организова- на в виде регистрового файла объемом 32 — 128 байт, в котором от 7 до 16 регистров отведено для управления системой и обмена данными с вне- шними устройствами. Одним из основных достоинств этих устройств является очень широ- кий диапазон напряжений питания (2-6 В). Ток потребления на частоте 32768 Гц составляет менее 15 мкА, на частоте 4 МГц — 1 - 2 мА, на частоте 20 МГц 5 - 7 мА и в режиме микропотребления (режим SLEEP) - 1 — 2 мкА. Выпускаются модификации для работы в трех температурных диа- пазонах: от 0 до +70°С, от -40 до +85°С и от -40 до +125°С. Каждый из контроллеров содержит универсальные (от 1 до 3) и сторо- жевой таймеры, а также надежную встроенную систему сброса при вклю- чении питания. Частота внутреннего тактового генератора задается либо кварцевым резонатором, либо RC-цепочкой в диапазоне 0 — 25 МГц. PIC- контроллеры имеют от 12 до 33 линий цифрового ввода-вывода, причем каждая из них может быть независимо настроена на ввод или вывод. В устройство PIC16C64 входит широтно-импульсный модулятор, с по- мощью которого можно реализовать ЦАП с разрешением до 16 разрядов. Здесь есть и последовательный двунаправленный синхронно-асинхрон- ный порт, обеспечивающий возможность организации шины 12С. Прибо- ры PIC16C71 и PIC16C74 содержат встроенный многоканальный 8-раз- рядный АЦП с устройством выборки-хранения. Помимо памяти программ в PIC предусмотрено несколько индивиду- ально прожигаемых перемычек, с помощью которых можно на этапе про- граммирования кристалла выбрать тип тактового генератора, отключить 172
Лекция 9 Аппаратные средства микроконтроллеров серии PIC сторожевой таймер или систему сброса, включить защиту памяти программ от копирования, а также записать серийный номер кристалла (16 бит). С программной точки зрения PIC-когпроллер представляет собой 8-разряд- ный RISC-процессор с гарвардской архитектурой. Число команд небольшое — от 33 до 35. Все команды имеют одинаковую длину и, кроме команд ветвления, выполняются за четыре периода тактовой частоты (в отличие, например, от 12 периодов для 187С51). Поддерживаются непосредственный, косвенный и отно- сительный методы адресации, можно эффективно управлять отдельными бита- ми в пределах всего регистрового файла. Стек реализован аппаратно. Его макси- мальная глубина составляет два или восемь уровней в зависимости от типа контроллера. Почти во всех микросхемах PIC есть система прерываний, источ- никами которых могут быть таймер и внешние сигналы. Система команд прак- тически симметрична и, как следствие, легка в освоении. Применение PIC-контроллеров целесообразно в несложных приборах с ограниченным током потребления (автономные устройства, приборы с питанием от телефонной линии и т.п.). Благодаря малому количеству компонентов, используемых при построении таких приборов, их размеры уменьшаются, а надежность увеличивается. Типичным представителем микроконтроллеров семейства PIC16CXXX являются микроконтроллеры подгруппы PIC16F8X. 5.2. Микроконтроллеры подгруппы PIC16F8X 5.2.1. Основные характеристики Микроконтроллеры подгруппы PIC16F8X относятся к семейству 8-раз- рядных КМОП микроконтроллеров группы PIC16CXXX, для которых ха- рактерны низкая стоимость, полностью статическая КМОП-технология и высокая производительность. В состав подгруппы входят МК PIC16F83, PIC16CR83, PIC16F84 и PIC16CR84. Основные характеристики МК подгруппы PIC16F8X приве- дены в табл. 5.1. Все микроконтроллеры подгруппы PIC16F8X используют гарвардскую архитектуру с RISC-процессором, обладающую следующими основными особенностями: • используются только 35 простых команд; • все команды выполняются за один цикл (400 нс при частоте 10 МГц), кроме команд перехода, которые требуют 2 циклов; • рабочая частота 0 Гц ... 10 МГц; • раздельные шины данных (8 бит) и команд (14 бит); • 512 х 14 или 1024 х 14 память программ, выполненная на ПЗУ или электрически перепрограммируемой Flash- памяти; 173
Глава 5 Однокристальные микроконтроллеры серии PIC • 15 восьмиразрядных регистров специальных функций (SFR); • восьмиуровневый аппаратный стек; • прямая, косвенная и относительная адресация данных и команд; • 36 или 68 восьмиразрядных регистров общего назначения (GPR) или ОЗУ; • четыре источника прерывания: — внешний вход RB0/INT, — переполнение таймера TMR0; — изменение сигналов на линиях порта В; — завершение записи данных в память EEPROM; • 64 х 8 электрически перепрограммируемая EEPROM память данных с возможностью выполнения 1000000 циклов стирания/записи; • сохранение данных в EEPROM в течение как минимум 40 лет. Параметр PIC16F83 PIC16CR83 PIC16F84 PIC16CR84 Максимальная частота, МГц 10 10 10 10 Flash-память программ, слов 512 — IK — ПЗУ программ, слов — 512 — IK Память данных, байт 36 36 68 68 Память данных вРПЗУ (EEPROM), байт 64 64 64 64 Таймеры TMR0 TMR0 TMR0 TMR0 Число источни- ков прерываний 4 4 4 4 Число линий ввода/вывода 13 13 13 13 Диапазон напря- жений питания, В 2,0 - 6,0 2,0 - 6,0 2,0 - 6,0 2,0 - 6,0 Число выводов и тип корпуса 18 DIP, SOIC 18 DIP, SOIC 18 DIP, SOIC 18 DIP, SOIC Табл. 5.1. Основные характеристики МК подгруппы PIC16F8X. 174
Лекция 9 Аппаратные средства микроконтроллеров серии PIC Микроконтроллеры подгруппы PIC16F8X обладают развитыми воз- можностями ввода/вывода: • 13 линий ввода-вывода с индивидуальной установкой направления обмена; • высокий втекающий/вытекающий ток, достаточный для управления светодиодами: • максимальный втекающий ток — 25 мА; • максимальный вытекающий ток — 20 мА; • 8-битный таймер/счетчик TMR0 с 8-битным программируемым предварительным делителем. Специализированные микроконтроллерные функции включают сле- дующие возможности: • автоматический сброс при включении (Power-on-Reset); • таймер включения при сбросе (Power-up Timer); • таймер запуска генератора (Oscillator Start-up Timer); • сторожевой (Watchdog) таймер WDT с собственным встроенным ге- нератором, обеспечивающим повышенную надежность; • EEPROM бит секретности для защиты кода; • экономичный режим SLEEP; • выбираемые пользователем биты для установки режима возбужде- ния встроенного генератора; • последовательное встроенное устройство программирования Flash/ EEPROM памяти программ и данных с использованием только двух выводов. КМОП технология обеспечивает МК подгруппы PIC16F8X дополни- тельные преимущества: • статический принцип работы; • широкий диапазон напряжений питания: 2,0 ... 6,0 В; • низкое энергопотребление: • менее 2 мА при 5В и 4МГц; • порядка 15 мкА при 2В и 32КГц; • менее 1 мкА для SLEEP-режима при 2В. Микроконтроллеры подгруппы PIC16F8X различаются между со- бой только объемом ОЗУ данных, а также объемом и типом памяти программ. Наличие в составе подгруппы МК с Flash-памятью про- грамм облегчает создание и отладку прототипов промышленных об- разцов изделий. 5.2.2. Особенности архитектуры Упрощенная структурная схема МК подгруппы PIC16F8X приведена на рис. 5.1. 175
Глава 5 Однокристальные микроконтроллеры серии PIC Порты В/В МОЯ Vdd.Vss OSC2/CLKOUT OSC1/CLKIN Рис. 5.1. Структурная схема МК подгруппы PIC16F8X. Архитектура основана на концепции раздельных шин и областей па- мяти для данных и для команд (гарвардская архитектура). Шина данных и память данных (ОЗУ) — имеют ширину 8 бит, а программная шина и про- граммная память (ПЗУ) имеют ширину 14 бит. Такая концепция обеспе- чивает простую, но мощную систему команд, разработанную так, что би- товые, байтовые и регистровые операции работают с высокой скоростью и с перекрытием по времени выборок команд и циклов выполнения. 14- битовая ширина программной памяти обеспечивает выборку 14-битовой команды в один цикл. Двухступенчатый конвейер обеспечивает одновре- менную выборку и исполнение команды. Все команды выполняются за один цикл, исключая команды переходов. Микроконтроллеры PIC16F83 и PIC16CR83 адресуют 512x14 памяти программ, a PIC16F84 и PIC16CR84 - 1Кх14 памяти программ. Вся па- мять программ является внутренней. Микроконтроллер может прямо или косвенно обращаться к регистрам или памяти данных. Все регистры специальных функций, включая счет- чик команд, отображаются на память данных. Ортогональная (симметрич- 176
Лекция 9 Аппаратные средства микроконтроллеров серии PIC пая) система команд позволяет выполнять любую команду над любым регистром с использованием произвольного метода адресации. Ортого- нальная архитектура и отсутствие специальных исключений делает про- граммирование МК группы PIC16F8X простым и эффективным. Назначение выводов МК подгруппы PIC16F8X приведено в табл. 5.2. Обозна- чение Тип Буфер Описание OSC1/ CLKIN I ТШ/КМОП” Вход кристалла генератора, RC- цепочки или вход внешнего так- тового сигнала OSC2/ CLKOUT О — Выход кристалла генератора. В RC-режиме — выход 1/4 частоты OSC1 /MCLR I/P тш Сигнал сброса/вход программи- рующего напряжения. Сброс низким уровнем. RA0 I/O ТТЛ PORTA - двунаправленный порт RA1 I/O ТТЛ ввода/вывода RA2 I/O ТТЛ RA4/T0CKI может быть выбран RA3 I/O ТТЛ как тактовый вход таймера/счет- RA4 /Т0СК1 I/O тш чика TMR0. Выход с открытым стоком. RB0/INT I/O ттл/тш*» PORTB - двунаправленный порт RB1 I/O ТТЛ ввода/вывода. Может быть зап- RB2 I/O ТТЛ рограммирован в режиме внут- RB3 I/O ТТЛ ренних активных нагрузок на ли- RB4 I/O ТТЛ нию питания по всем выводам. RB5 I/O ТТЛ Вывод RB0/INT может быть выб- RB6 I/O ттл/тш 2> ран как внешний вход прерывания. RB7 I/O ттл/тш 2> Выводы RB4...RB7 могут быть программно настроены как вхо- ды прерывания по изменению состояния на любом из входов. При программировании МК RB6 используется как тактовый, а RB7 как вход/выход данных. Табл. 5.2. Назначение выводов МК подгруппы PIC16F8X. 12 — 3199 177
Глава 5 Однокристальные микроко д ,еры cet ни PIC г———————l Обозна- чение Тип Буфер Описание Vdd Р — Положительное напряжение питания Vss Р — Общий провод (земля) В таблице использованы следующие обозначения: I — вход; О — вы- ход; I/O — вход/выход; Р — питание; не используется; ТТЛ — ТТЛ вход; ТШ — вход триггера Шмитта. ” Этот буфер имеет вход триггера Шмитта, когда конфигурируется в качестве входа внешнего прерывания. 2> Этот буфер имеет вход триггера Шмитта, когда используется в режи- ме последовательного программирования. 3) Этот буфер имеет вход триггера Шмитта, когда конфигурируется в режиме RC-генератора и КМОП-вход в остальных случаях. Табл. 5.2. Назначение выводов МК подгруппы PIC16F8X (продолжение). Микроконтроллер содержит 8-разрядное АЛУ и рабочий регистр W. АЛУ является арифметическим модулем общего назначения и выполняет ариф- метические и логические функции над содержимым рабочего регистра и любого из регистров контроллера. АЛУ может выполнять операции сложе- ния, вычитания, сдвига и логические операции. Если не указано иное, то арифметические операции выполняются в дополнительном двоичном коде. В зависимости от результата операции, АЛУ может изменять значения бит регистра STATUS: С (Carry), DC (Digit сапу) и Z (Zero). 5.2.3. Схема тактирования и цикл выполнения команды Входная тактовая частота, поступающая с вывода OSC1/CLKIN, делит- ся внутри на четыре, и из нее формируются четыре циклические не пере- крывающиеся тактовые последовательности QI, Q2, Q3 и Q4. Счетчик ко- манд увеличивается в такте Q1, команда считывается из памяти программы и защелкивается в регистре команд в такте Q4. Команда декодируется и выполняется в течение последующего цикла в тактах QL..Q4. Схема такти- рования и выполнения команды изображена на рис. 5.2. Цикл выполнения команды состоит из четырех тактов: Q1...Q4. Вы- борка команды и ее выполнение совмещены по времени таким образом, что выборка команды занимает один цикл, а выполнение — следующий цикл. Эффективное время выполнения команды составляет один цикл. 178
Лекция 9 Аппаратные средства микроконтроллеров серии PIC Если команда изменяет счетчик команд (например, команда GOTO), то для ее выполнения потребуется два цикла, как показано на рис. 5.3. (RC-генератор) Выборка INST (PC)______________________I Выполнение INST (PC-11 Выборка INST (РС+1)____________________ — Выполнение INST (PCf Выборка INST (РС+2) I I [Выполнение INST (РС+1) Рис. 5.2. Схема тактирования и выполнения команды. 1.MOVLW55t| Загрузка 1 Выполнение 1 2. MOVWF PORTB Загрузка 2 Выполнение 2 Загрузка 3 3. CALLSUBJ 4. BSF PORTA, BIT3 Выполнение 3 Загрузка 4 Пропуск Загрузка Выполнение SUB1 Рис. 5.3. Выборка команд. Цикл выборки начинается с увеличения счетчика команд в такте Q1. В цикле выполнения команды выбранная команда защелкивается в регистр команд в такте Q1. В течение тактов Q2, Q3 и Q4 происходит декодирова- ние и выполнение команды. В такте Q2 считывается память данных (чте- ние операнда), а запись происходит в такте Q4. 5.2.4. Организация памяти программ и стека Счетчик команд в МК PIC16F8X имеет ширину 13 бит и способен ад- ресовать 8Кх14бит объема программной памяти. Однако физически на кристаллах PIC16F83 и PIC16CR83 имеется только 512x14 памяти (адреса OOOOh-OlFFh), а в МК PIC16F84 и PIC16CR84 - 1Кх14 памяти (адреса OOO0h-O3FFh). Обращение к адресам выше IFFh (3FFh) фактически есть адресация в те же первые 512 адресов (первые 1К адресов). Организация памяти программ и стека приведена на рис. 5.4. В памяти программ есть выделенные адреса. Вектор сброса находится по адресу OOOOh, вектор прерывания — по адресу 0004h. Обычно по адресу 12* 179
Главам Однокристальные микроконтроллеры серии PIC 0004И располагается подпрограмма идентификации и обработки преры- ваний, а по адресу OOOOh - команда перехода на метку, расположенную за подпрограммой обработки прерываний. Рис. 5.4. Организация памяти программ и стека. 5.2.5. Организация памяти данных Память данных МК разбита на две области. Первые 12 адресов - это область регистров специальных функций (SFR), а вторая — область реги- стров общего назначения (GPR). Область SFR управляет работой прибора. Обе области разбиты в свою очередь на банки 0 и 1. Банк 0 выбирается обнулением бита RP0 регистра статуса (STATUS). Установка бита RP0 в единицу выбирает банк 1. Каждый банк имеет протяженность 128 байт. Однако для PIC16F83 и PIC16CR83 память данных существует только до адреса 02Fh, а для PIC16F84 и PIC16CR84 - до адреса 04Fh. 180
Лекция 9 Аппаратные средства микроконтроллеров серии PIC На рис. 5.5 изображена организация памяти данных. 2Fh 30h 00h 01 h 02h 03h 04h 05h 06h 07h 08h 09h OAh OBh < OCh 4Fh 50h 7Fh INDF 1> INDF ’> TMR0 OPTION PCL PCL STATUS STATUS FSR FSR PORTA TRISA PORTB TRISB EEDATA EECON1 EEADR EECON2’* PCLATCH PCLATCH INTCON INTCON 36 байт для PIC16F83, PIC16CR83 L - co CL §5 68 бай- PIC16F84, P БанкО Банк 1 80h 81h 82h 83h 84h 85h 86h 87h 88h 89h 8Ah 8Bh 8Ch AFh BOh CFh DOh FFh 1) Регистр косвенной адресации (INDF) (не является физическим регистром) Рис. 5.5. Организация памяти данных. Некоторые регистры специального назначения продублированы в обо- их банках, а некоторые расположены в банке 1 отдельно. Регистры с адресами 0Ch-4Fh могут использоваться как регистры об- щего назначения, которые представляют собой статическое ОЗУ. Адреса регистров общего назначения банка 1 отображаются на банк 0. Следова- тельно, когда установлен банк 1, то обращение к адресам 8Ch-CFh факти- чески адресует банк 0. 181
Плава 5 Однокристальные микроконтроллеры серии PIC В регистре статуса помимо бита RP0 есть еще бит RB1, что позволяет обра- щаться к четырем страницам (банкам) будущих модификаций этого кристалла. К ячейкам ОЗУ можно адресоваться прямо, используя абсолютный ад- рес каждого регистра, или косвенно, через регистр указатель FSR. Кос- венная адресация использует текущее значение разрядов RP1:RPO для до- ступа к банкам. Это относится и к EEPROM памяти данных. В обоих случаях можно адресовать до 512 регистров. 5.2.6. Регистры специального назначения Регистр статуса (STATUS) содержит признаки операции (арифметичес- кие флаги) АЛУ, состояние контроллера при сбросе и биты выбора стра- ниц для памяти данных. Назначение бит регистра приведено в табл. 5.3. R/W-0 R/W-0 R/W-0 R-1 R-1 R/W-x R/W-x R/W-x IRP RP1 RP0 /ТО /PD Z DC С Бит 7 Бит 6 Бит 5 Бит 4 Бит 3 Бит 2 Бит 1 Бит 0 Бит 7: IRP: бит выбора страницы банка данных (используется при косвенной адресации) 0 — банк 0,1 (00h — FFh) 1 = банк 2,3 (100h- IFFh) Бит IRP не используется в МК подгруппы PIC16F8X Биты 6-5: RP1 :RP0: биты выбора страницы банка данных (исполь- зуются при прямой адресации) 00 = банк 0 (00h — 7Fh) 01 = банк 1 (80h - FFh) 10 = банк 2 (100h - 17Fh) 11 = банк 3 (180h — IFFh) В МК подгруппы PIC16F8X используется только бит RP0 Бит 4: /ТО: бит срабатывания сторожевого таймера 1 = после включения питания, а также командами CLRWDT и SLEEP 0 = по завершении выдержки сторожевого таймера Бит 3: /PD: бит снижения потребляемой мощности 1 = после включения питания, а также командой CLRWDT 0 = по команде SLEEP Табл. 5.3. Назначение бит регистра STATUS (адрес 03h, 83h). 182
Лекция 9 Аппаратные средства микроконтроллеров серии PIC ~ ....." "" ' — Бит 2: Z: бит нулевого результата 1 = результат арифметической или логической операции нулевой О = результат арифметической или логической операции ненулевой Бит 1: DC: бит десятичного переноса/заема (для команд ADDWF и ADDLW) 1 = имеет место перенос из 4-го разряда О = нет переноса из 4-го разряда Бит 0: С: бит переноса/заема (для команд ADDWF и ADDLW) 1 = имеет место перенос из самого старшего разряда О = нет переноса из самого старшего разряда Примечание: вычитание осуществляется путем прибавления дополнительного кода второго операнда. При выполнении команд сдвига этот бит загружается из младшего или старшего разряда сдвигаемого источника. Табл. 5.3. Назначение бит регистра STATUS (адрес 03h, 83h) (продолжение). Здесь и далее: R — читаемый бит; W — записываемый бит; S — устанав- ливаемый бит; U — неиспользуемый бит (читается как «О»); -п = 0 или 1 — значение бита после сброса. Регистр статуса доступен для любой команды так же, как любой другой регистр. Однако если регистр STATUS является регистром назначения для команды, влияющей на биты Z, DC или С, то запись в эти три бита запре- щается. Кроме того, биты /ТО и /PD устанавливаются аппаратно и не мо- гут быть записаны в статус программно. Это следует иметь в виду при вы- полнении команды с использованием регистра статуса. Например, команда CLRF STATUS обнулит все биты, кроме битов /ТО и /PD, а затем установит бит Z=l. После выполнения этой команды регистр статуса может и не иметь нулевого значения (из-за битов /ТО и /PD) STATUS=OOOuuluu, где и — неизменяемое состояние. Поэтому рекомендуется для изменения регистра статуса использовать только команды битовой установки BCF, BSF, MOVWF, которые не изменяют остальные биты статуса. Воздействие всех команд на биты статуса рассматривается в разделе «Описание системы команд». Регистр конфигурации (OPTION) является доступным по чтению и за- писи регистром, который содержит управляющие биты для конфигура- ции предварительного делителя (пределителя), внешних прерываний, тай- 183
Глава 5 Однокристальные микроконтроллеры серии PIC мера, а также резисторов «pull-up» на выводах PORTB. Назначение бит регистра приведено в табл. 5.4. R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 /RBPU INTEDG TOCS TOSE PSA PS2 PSI PSO Бит 7 Бит 6 Бит 5 Бит 4 Бит 3 Бит 2 Бит 1 Бит 0 Бит 7: /RBPU: бит установки резисторов «pull-up» на выводах PORTB О = резисторы «pull-up» подключены 1 = резисторы «pull-up» отключены Бит 6: INTEDG: бит выбора перехода сигнала прерывания О = прерывание по спаду сигнала на выводе RB0/INT 1 = прерывание по фронту сигнала на выводе RB0/INT Бит 5: TOCS: бит выбора источника сигнала таймера TMR0 О = внутренний тактовый сигнал (CLKOUT) 1 = переход на выводе RA4/T0CKI Бит 4: T0SE: бит выбора перехода источника сигнала для TMR0 О = приращение по фронту сигнала на выводе RA4/T0CKI 1 = приращение по спаду сигнала на выводе RA4/T0CKI Бит 3: PSA: бит назначения пределителя О = пределитель подключен к TMR0 1 = пределитель подключен к сторожевому таймеру WDT Биты 2-0: PS2.PS0: биты выбора коэффициента деления пределителя Значения бит Скорость TMR0 Скорость WDT ООО 1:2 1:1 001 1:4 1:2 010 1:8 1:4 on 1:16 1:8 100 1:32 1:16 101 1:64 1:32 110 1:128 1:64 111 1:256 1:128 Табл. 5.4. Назначение бит регистра OPTION (адрес 81h). 184
Лекция 9 Аппаратные средства микроконтроллеров серии PIC В том случае, когда пределитель обслуживает сторожевой таймер WDT, таймеру TMR0 назначается коэффициент предварительного деления 1:1. Регистр условий прерывания (INTCON) является доступным по чтению и записи регистром, который содержит биты доступа для всех источников прерываний. Назначение бит регистра приведено в табл. 5.5. — R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-x GIE EEIE T0IE INTE RBIE T0IF INTF RBIF Бит 7 Бит 6 Бит 5 Бит 4 Бит 3 Бит 2 Бит 1 Бит 0 Бит 7: GIE: бит разрешения всех прерываний 0 = запрещены все прерывания 1 = разрешены все незамаскированные прерывания Бит 6: EEIE: бит разрешения прерывания записи в EEPROM 0 = запрещены прерывания записи в EEPROM 1 = разрешены прерывания записи в EEPROM Бит 5: T0IE: бит разрешения прерывания по переполнению TMR0 0 = запрещены прерывания от TMR0 1 = разрешены прерывания от TMR0 Бит 4: INTE: бит разрешения прерываний по входу RB0/INT 0 = запрещены прерывания по входу RB0/INT 1 = разрешены прерывания по входу RB0/INT Бит 3: RBIE: бит разрешения прерываний по изменению PORTB 0 = запрещены прерывания по изменению PORTB 1 = разрешены прерывания по изменению PORTB Бит 2: T0IF: бит запроса прерывания по переполнению TMR0 0 = прерывание по переполнению TMR0 отсутствует 1 = прерывание по переполнению TMR0 имеет место Бит 1: INTF: бит запроса прерывания по входу RB0/INT 0 = прерывание по входу RB0/INT отсутствует 1 = прерывание по входу RB0/INT имеет место Бит 0: RBTF: бит запроса прерывания по изменению PORTB 0 = ни на одном из входов RB7:RB4 состояние не изменилось 1 = хотя бы на одном из входов RB7:RB4 изменилось состояние Табл. 5.5. Назначение бит регистра 1NTCON (адреса OBh, 8Bh). 185
Глава 5 Однокристальные микроконтроллеры серии PIC Бит разрешения всех прерываний GIE сбрасывается автоматически при следующих обстоятельствах: • по включению питания; • по внешнему сигналу /MCLR при нормальной работе; • по внешнему сигналу /MdLR в режиме SLEEP; • по окончанию задержки таймера WDT при нормальной работе; • по окончанию задержки таймера WDT в режиме SLEEP. Прерывание INT может вывести процессор из режима SLEEP, если пе- ред входом в этот режим бит INTE был установлен в единицу. Состояние бита GIE также определяет: будет ли процессор переходить на подпрог- рамму прерывания после выхода из режима SLEEP. Сброс битов — запросов прерываний — должен осуществляться соот- ветствующей программой обработки. 5.2.7. Счетчик команд Счетчик команд PCL и PCLATH имеет разрядность 13 бит. Младший байт счетчика (PCL) доступен для чтения и записи и находится в регистре 02h. Старший байт счетчика команд не может быть напрямую записан или считан и берется из регистра PCLATH (PC latch high), адрес которого OAh. Содержимое PCLATH передается в старший байт счетчика команд, когда он загружается новым значением. В зависимости от того, загружается ли в счетчик команд новое значение во время выполнения команд CALL, GOTO, или в младший байт счетчика команд (PCL) производится запись, - старшие биты счетчика команд заг- ружаются из PCLATH разными способами, как показано на рис. 5.6. PCH PCL 12 8 7____________О рС I . I I 5ftpCLATH<4:0> 8 IJ PCLATH PCL как регистр назначения Результат из АЛУ PCH PCL 121110 87 0 PC | | ; ~~| GOTO, CALL oft PCLATH<4:3> ft 11 I ₽ v-—=j-| 11 > । Биты кода I |::::F:T"I операции <10:0> PCLATH Рис. 5.6. Загрузка старших бит счетчика команд. 186
Лекция 9 Аппаратные средства микроконтроллеров серии PIC Команды CALL и GOTO оперируют 11-разрядным адресным диапазо- ном, достаточным для смещения в пределах страницы программной па- мяти объемом 2К слов. Для МК подгруппы PIC16F8X этого хватает. С це- лью обеспечения возможности расширения памяти команд для будущих моделей МК предусмотрена загрузка двух старших бит счетчика команд из регистра PCLATH<4:3>. При использовании команд CALL и GOTO пользователь должен убедиться в том, что эти страничные биты запрог- раммированы для выхода на нужную страницу. При выполнении коман- ды CALL или выполнении прерывания весь 13-битный счетчик команд помещается в стек, поэтому для возвращения из подпрограммы не нужны манипуляции с разрядами PCLATH<4:3>. Микроконтроллеры подгруппы P1C16F8X игнорируют значения бит PCLATH<4:3>, которые используются для обращения к страницам 1, 2 и 3 программной памяти. Однако применять биты PCLATH<4:3> в качестве ячеек памяти общего назначения не рекомендуется, так как это может по- влиять на совместимость с будущими поколениями изделий. Возможность выполнять арифметические операции непосредственно над счетчиком команд позволяет очень быстро и эффективно осуществ- лять табличные преобразования в Р1С-контроллерах. Микроконтроллеры подгруппы PIC16F8X имеют восьмиуровневый ап- паратный стек шириной 13 бит (см. рис. 5.4). Область стека не принадле- жит ни к программной области, ни к области данных, а указатель стека пользователю недоступен. Текущее значение счетчика команд посылается в стек, когда выполняется команда CALL или производится обработка пре- рывания. При выполнении процедуры возврата из подпрограммы (коман- ды RETLW, RETFIE или RETURN) содержимое счетчика команд восста- навливается из стека. Регистр PCLATH при операциях со стеком не изменяется. Стек работает как циклический буфер. Следовательно, после того как стек был загружен 8 раз, девятая загрузка перепишет значение первой. Де- сятая загрузка перепишет вторую и т.д. Если стек был выгружен 9 раз, счет- чик команд становится таким же, как после первой выгрузки. Признаков положения стека в контроллере не предусмотрено, поэтому пользователь должен самостоятельно следить за уровнем вложения под- программ. 5.2.8. Прямая и косвенная адресации Когда производится прямая 9-битная адресация, младшие 7 бит берут- ся как прямой адрес из кода операции, а два бита указателя страниц (RP1, RP0) из регистра статуса, как показано на рис. 5.7. 187
Глава 5 Однокристальные микроконтроллеры серии PIC Прямая адресация Косвенная адресация (FSR) RP1RP0 6 из КОП О IRP 7 О 1) для PIC17F83 и PIC16CR83 2) для PIC16F84 и PIC16CR84 Рис. 5.7. Методы адресации данных. Признаком косвенной адресации является обращение к регистру INDF. Любая команда, которая использует INDF (адрес 00h) в качестве регистра фактически обращается к указателю, который хранится в FSR (адрес 04h). Чтение косвенным образом самого регистра INDF даст результат 00h. За- пись в регистр INDF косвенным образом будет выглядеть как NOP, но биты статуса могут быть изменены. Необходимый 9-битный адрес формируется объединением содержимого 8-битного FSR регистра и бита IRP из регистра статуса (см. рис. 5.7). Обратите внимание, что некоторые регистры специальных функций располагаются в банке 1. Чтобы адресоваться к ним, нужно дополнитель- но установить в единицу бит RP0 в регистре статуса. 5.2.9. Порты ввода/вывода Контроллеры подгруппы PIC16F8X имеют два порта: PORTA (5 бит) и PORTB (8 бит) с побитовой индивидуальной настройкой на ввод или на вывод. Порт A (PORTA) представляет собой 5-битовый фиксатор, соответствую- щий выводам контроллера RA<4:0>. Линия RA4 имеет вход триггера Шмит- та и выход с открытым стоком. Все остальные линии порта имеют ТТЛ вход- ные уровни и КМОП выходные буферы. Адрес регистра порта А — 05h. 188
Лекция 9 Аппаратные средства микр»-жонтроллероа серии PIC Каждой линии порта поставлен в соответствие бит направления пере- дачи данных, который хранится в управляющем регистре TRISA, распо- ложенном по адресу 85h. Если бит управляющего TRISA регистра имеет значение 1, то соответствующая линия будет устанавливаться на ввод. Ноль переключает линию на вывод и одновременно выводит на нее содержи- мое соответствующего регистра-фиксатора порта. При включении пита- ния все линии порта по умолчанию настроены на ввод. На рис. 5.8 дана схема линий RA<3:0> порта А. Шина данных Запись в порт Запись в TRIS Чтение порта Рис. 5.8. Схема линий RA<3:0> порта А. Выводы порта имеют защитные диоды к Vid и Vss. Операция чтения порта А считывает состояние выводов порта, в то вре- мя как запись в него изменяет состояние триггеров порта. Все операции с портом являются операциями типа «чтение-модификация-запись». По- этому запись в порт предполагает, что состояние выводов порта вначале считывается, затем модифицируется и записывается в триггер-фиксатор. Вывод RA4 мультиплексирован с тактовым входом таймера TMR0. Схе- ма линии RA4 порта А приведена на рис. 5.9. Порт В (PORTB) - это двунаправленный 8-битовый порт, соответству- ющий выводам RB<7:0> контроллера и расположенный по адресу 06h. От- 189
глава 5 метальные микроконтроллеры серии PIC носящийся к порту В управляющий регистр TRISB расположен на первой странице регистров по адресу 86h. Если бит управляющего TRISB регист- ра имеет значение 1, то соответствующая линия будет устанавливаться на ввод. Ноль переключает линию на вывод и одновременно выводит на нее содержимое соответствующего регистра защелки. При включении питания Все линии порта по умолчанию настроены на ввод. Шина данных' Запись в порт ' 0 с. OI о Триггер данных Вывод RA4 Запись в TRIS D о о Триггер TRIS Входной буфер v-fc? (Триггер \/ Чтение порта Тактовый вход TMRO Рис. 5.9. Схема линии RA4 порта А. Вывод порта имеет защитный диод только к Vss. У каждой ножки порта В имеется небольшая активная нагрузка (около ЮОмкА) на линию питания (pull-up). Она автоматически отключается, если эта ножка запрограммирована как вывод. Более того, управляющий бит / RBPU регистра OPTION<7> может отключить (при RBPU=1) все нагруз- ки. Сброс при включении питания также отключает все нагрузки. Четыре линии порта В (RB<7:4>) могут вызвать прерывание при изме- нении значения сигнала на любой из них. Если эти линии настроены на ввод, то они опрашиваются и защелкиваются в цикле чтения Q1. Новая величина входного сигнала сравнивается со старой в каждом командном 190
Лекция 9 Аппаратные средства микроконтроллеров серии PIC цикле. При несовпадении значения сигнала на ножке и в фиксаторе гене- рируется высокий уровень. Выходы детекторов «несовпадений» RB4, RB5, RB6, RB7 объединяются по ИЛИ и генерируют прерывание RBIF (запо- минаемое в регистре INTCON<0>). Любая линия, настроенная как вывод, в этом сравнении не участвует. Прерывание может вывести кристалл из режима SLEEP В подпрограмме обработки прерывания следует сбросить запрос прерывания одним из следующих способов: • прочитать (или записать в) порт В. Это завершит состояние сравнения; • обнулить бит RBIF регистра INTCON<0>. При этом необходимо иметь в виду, что условие «несовпадения» будет продолжать устанавливать признак RBIF. Только чтение порта В может устранить «несовпадение» и позволит обнулить бит RBIF. Прерывание по несовпадению и программно устанавливаемые внут- ренние активные нагрузки на этих четырех линиях могут обеспечить про- стой интерфейс, например, с клавиатурой, с выходом из режима SLEEP по нажатию клавиш. Схемы линий порта В приведены на рис. 5.10 и 5.11. Vdd Чтение порта Рис. 5.10. Схема линий RB<7:4> порта В. Выводы порта имеют защитные диоды к Vid и Vss. 191
Глава 5 Однокристальные микроконтроллеры серии PIC Vdd (Триггер Шмитта) Чтение порта Рис. 5.11. Схема линий RB<3:0> порта В. Выводы порта имеют защитные диоды к Vid и Vss. При организации двунаправленных портов необходимо учитывать особен- ности организации ввода/вывода данных МК. Любая команда, которая осу- ществляетзапись, выполняетее внутри как «чтение-модификация-запись». На- пример, команды BCF и BSF считывают порт целиком, модифицируют один бит и выводят результат обратно. Здесь необходима осторожность. В частно- сти, команда BSF PORTB, 5 (установить в единицу бит 5 порта В) сначала счи- тывает все реальные значения сигналов, присутствующие в данный момент на выводах порта. Затем выполняются действия над битом 5, и новое значение байта целиком записывается в выходные фиксаторы. Если другой бит регистра PORTB используется в качестве двунаправленного ввода/вывода (скажем, бит 0), и в данный момент он определен как входной, то входной сигнал на этом выводе будет считан и записан обратно в выходной триггер-фиксатор этого же вывода, стирая предыдущее состояние. До тех пор, пока эта ножка остается в режиме ввода, никаких проблем не возникает. Однако если позднее линия 0 переключится в режим вывода, ее состояние будет неопределенным. На ножку, работающую в режиме вывода, не должны нагружаться вне- шние источники токов («монтажное И», «монтажное ИЛИ»). Большие ре- зультирующие токи могут повредить кристалл. 192
Лекция 9 Аппаратные средства микроконтроллеров серии PIC Необходимо выдерживать определенную последовательность обраще- ния к портам ввода/вывода. Запись в порт вывода происходит в конце командного цикла. Но при чтении данные должны быть стабильны в на- чале командного цикла. Будьте внимательны в операциях чтения, следу- ющих сразу за записью в тот же порт. Здесь надо учитывать инерцион- ность установления напряжения на выводах. Может потребоваться программная задержка, чтобы напряжение на ножке (которое зависит от нагрузки) успело стабилизироваться до начала исполнения следующей команды чтения. 5.2.10. Модуль таймера и регистр таймера Структура модуля таймера/счетчика TIMER0 и его взаимосвязь с ре- гистрами TMR0 и OPTION показаны на рис. 5.12. TIMER0 является про- граммируемым модулем и содержит следующие компоненты: • 8-разрядный таймер/счетчик TMR0 с возможностью чтения и запи- си как регистр; • 8-разрядный программно управляемый предварительный делитель (пределитель); • мультиплексор входного сигнала для выбора внутреннего или внеш- него тактового сигнала; • схему выбора фронта внешнего тактового сигнала; • формирователь запроса прерывания по переполнению регистра TMR0 с FFh до 00h. Режим таймера выбирается путем сбрасывания в ноль бита TOCS реги- стра OPTION <5>. В режиме таймера TMR0 инкрементируется каждый командный цикл (без пределителя). После записи информации в TMR0 инкрементирование его начнется после двух командных циклов. Это про- исходит со всеми командами, которые производят запись или чтение-мо- дификацию-запись TMR0 (например, MOVF TMRO, CLRF TMR0). Избе- жать этого можно при помощи записи в TMR0 скорректированного значения. Если TMR0 нужно проверить на равенство нулю без останова счета, следует использовать инструкцию MOVF TMR0,W. Режим счетчика выбирается путем установки в единицу бита TOCS ре- гистра OPTION<5>. В этом режиме регистр TMR0 будет инкрементиро- ваться либо нарастающим, либо спадающим фронтом на выводе RA4/ T0CKI от внешних событий. Направление фронта определяется управля- ющим битом TOSE в регистре OPTION<4>. При TOSE = 0 будет выбран нарастающий фронт. Пределитель может использоваться или совместно с TMR0, или со сто- рожевым (Watchdog) таймером. Вариант подключения делителя контро- лируется битом PSAрегистра OPTION<3>. При PSA=O делитель будет под- 13—3199 193
Глава 5 Однокристальные микроконтроллеры серии PIC соединен к TMR0. Содержимое делителя программе недоступно. Коэф- фициент деления пределителя программируется битами PS2...PSO регист- ра OPTION<2:0>. Рис. 5.12. Структурная схема таймера/счетчика TMR0. Прерывание по TMR0 вырабатывается тогда, когда происходит пере- полнение регистра таймера/счетчика при переходе от FFh к 00h. Тогда устанавливается бит запроса T0IF в регистре INTCON<2>. Данное пре- рывание можно замаскировать битом T0IE в регистре INTCON<5>. Бит запроса T0IF должен быть сброшен программно при обработке прерывания. Прерывание по TMR0 не может вывести процессор из режима SLEEP потому, что таймер в этом режиме не функционирует. При PSA=1 делитель будет подсоединен к сторожевому таймеру как постделитель (делитель на выходе). Возможные варианты использования пределителя показаны на рис. 5.13. При использовании пределителя совместно с TMR0, все команды, из- меняющие содержимое TMR0, обнуляют пределитель. Если пределитель используется совместно с WDT, команда CLRWDT обнуляет содержимое пределителя вместе с WDT. При использовании модуля TIMER0 в режиме счетчика внешних со- бытий необходимо учитывать то, что внешний тактовый сигнал синхро- низируется внутренней частотой Fosc. Это приводит к появлению задер- жки во времени фактического инкрементирования содержимого TMR0. Синхронизация происходит по окончании 2-го и 4-го тактов работы МК, поэтому, если пределитель не используется, то для фиксации вход- ного события необходимо, чтобы длительности высокого и низкого со- стояний сигнала на входе RA4/T0CKI были бы не менее 2 периодов тактовой частоты Tosc плюс некоторая задержка ( ~ 20 нс). Если модуль TIMER0 используется совместно с пределителем, то час- тота входного сигнала делится асинхронным счетчиком так, что сигнал на выходе пределителя становится симметричным. При этом необходимо, 194
Лекция 9 Аппаратные средства микроконтроллеров серии PIC чтобы длительности высокого и низкого уровней сигнала на входе RA4/ T0CKI были бы не менее 10 нс. Синхронизация сигнала происходит на выходе пределителя, поэтому существует небольшая задержка между фрон- том внешнего сигнала и временем фактического инкремента таймера/счет- чика. Эта задержка находится в диапазоне от 3 до 7 периодов колебаний тактового генератора. Таким образом, измерение интервала между собы- тиями будет выполнено с точностью ±4 • Tosc. Выход WDT Рис. 5.13. Структура и возможные варианты использования пределителя. 5.2.11. Память данных в РПЗУ (EEPROM) Микроконтроллеры подгруппы PIC6F8X имеют энергонезависимую память данных 64x8 EEPROM бит, которая допускает запись и чтение во время нормальной работы (во всем диапазоне питающих напряжений). Эта память не принадлежит области регистровой памяти ОЗУ. Доступ к ней осуществляется посредством косвенной адресации через регистры спе- циальных функций: EEDATA<08h>, который содержит 8-битовые данные для чтения/записи и EEADR <09h>, включающий адрес ячейки, к кото- рой идет обращение. Для управления процессом чтения/записи исполь- зуются два регистра: EECON1 <88h> и EECON2 <89h>. При записи байта автоматически стирается предыдущее значение, и записываются новые данные (стирание перед записью). Все эти операции 13* 195
Глава 5 Однокристальные микроконтроллеры серии PIC производит встроенный автомат записи EEPROM. Содержимое ячеек этой памяти при выключении питания сохраняется. Регистр EEADR может адресовать до 256 байт данных EEPROM. В МК подгруппы PIC6F8X используются только первые 64 байта, адресуемые шестью младшими битами EEADR<5:0>. Однако старшие два бита также декодируются. Поэтому эти два бита должны быть установлены в ‘О’, что- бы адрес Попал в доступные 64 бита адресного пространства. Назначение бит регистра EECON1 приведено в табл. 5.6. "" .. ~ "" • ". ~ ~ ' ~Т_ и и и R/W-0 R/W-x R/W-0 R/S-0 R/S-x — — — EEIF WRERR WREN WR RD Бит 7 Бит 6 Бит 5 Бит 4 Бит 3 Бит 2 Бит 1 Бит 0 Биты 7:5 не используются (читаются как ‘0’) Бит 4: EEIF: бит запроса прерывания по записи в EEPROM 0 = операция записи не завершена или не начиналась 1 = операция записи завершена (должен быть сброшен программно) Бит 3: WRERR: бит признака ошибки записи в EEPROM 0 = операция записи завершена I = операция записи прервана преждевременно (сбросом по /MCLR или сбросом от WDT) Бит 2: WREN: бит разрешения записи в EEPROM 0 = запрещена запись в EEPROM 1 = разрешены циклы записи Бит 1: WR: бит управления записью 0 = цикл записи данных в EEPROM завершен 1 = инициирует цикл записи (сбрасывается аппаратно по завер- шении записи. Бит WR может быть только установлен (но не сброшен) программно) Бит 0: RD: бит управления чтением 0 = чтение данных EEPROM не инициировано 1 = инициирует чтение данных EEPROM (чтение занимает один цикл. Бит RD сбрасывается аппаратно. Бит RD может быть только установлен (но не сброшен) программно) ----------------------- ,, „, - Табл. 5.6. Назначение бит регистра EECON1 (адреса 88h). 196
Лекция 9 Аппаратные средства микроконтроллеров серии PIC Регистр EECON2 не является физическим регистром. Он используется исключительно при организации записи данных в EEPROM. Чтение ре- гистра EECON2 дает нули. При считывании данных из памяти EEPROM необходимо записать нуж- ный адрес в EEADR регистр и затем установить бит RD EECON1<0> в еди- ницу. Данные появятся в следующем командном цикле в регистре EEDATA и могут быть прочитаны. Данные в регистре EEDATA фиксируются. При записи в память EEPROM необходимосначала записать адрес в EEADR- регистр и данные в EEDATA-регистр. Затем следует выполнить специальную последовательность команд, производящую непосредственную запись: movlw 55h movwf EECON2 movlw AAh movwf EECON2 bsf EECON1 ,\Л/В;установить WR бит, начать запись Во время выполнения этого участка программы все прерывания долж- ны быть запрещены, для точного выполнения временной диаграммы. Вре- мя записи — примерно 10 мс. Фактическое время записи может изменять- ся в зависимости от напряжения, температуры и индивидуальных свойств кристалла. В конце записи бит WR автоматически обнуляется, а флаг за- вершения записи EEIF, он же запрос на прерывание, устанавливается. Для предотвращения случайных записей в память данных предусмотрен специальный бит WREN в регистре EECON1. Рекомендуется держать бит WREN выключенным, кроме тех случаев, когда нужно обновить память дан- ных. Более того, кодовые сегменты, которые устанавливают бит WREN, и те, которые выполняют запись, следует хранить на различных адресах, что- бы избежать случайного выполнения их обоих при сбое программы. 5.2.12. Организация прерываний МК подгруппы PIC16F8X имеют четыре источника прерываний: • внешнее прерывание с вывода RB0/INT; • прерывание от переполнения счетчика/таймера TMR0; • прерывание от изменения сигналов на линиях порта RB<7:4>; • прерывание по окончании записи данных в EEPROM. Все прерывания имеют один и тот же вектор/адрес — 0004h. Однако в управляющем регистре прерываний INTCON соответствующим битом- признаком записывается, от какого именно источника поступил запрос прерывания. Исключение составляет прерывание по завершении записи в EEPROM, признак которого находится в регистре EECON1. 197
Глава 5 Однокристальные микроконтроллеры серии PIC Бит общего разрешения/запрещения прерывания GIE (INTCON <7>) разрешает (если = 1) все индивидуально незамаскированные прерывания или запрещает их (если = 0). Каждое прерывание в отдельности может быть дополнительно разрешено/запрещено установкой/сбросом соответ- ствующего бита в регистре INTCON. Бит GIE при сбросе обнуляется. Когда начинает обрабатываться пре- рывание, бит GIE обнуляется, чтобы запретить дальнейшие прерывания, адрес возврата посылается в стек, а в программный счетчик загружается адрес 0004h. Время реакции на прерывание для внешних событий, таких как прерывание от ножки INT или порта В, составляет приблизительно пять циклов. Это на один цикл меньше, чем для внутренних событий, та- ких как прерывание по переполнению от таймера TMR0. Время реакции всегда одинаковое. В подпрограмме обработки прерывания источник прерывания может быть определен по соответствующему биту в регистре признаков. Этот флаг-признак должен быть программно сброшен внутри подпрограммы. Признаки запросов прерываний не зависят от соответствующих маскиру- ющих битов и бита общего маскирования GIE. Команда возврата из прерывания RETFIE завершает прерывающую под- программу и устанавливает бит GIE, чтобы опять разрешить прерывания. Логика прерываний контроллера изображена на рис. 5.14. TOIF TOIE INTF INTE RBIF RBIE EOF EEIE GIE Рис.5.14. Логика прерываний микроконтроллера. Внешнее прерывание на ножке RB0/INT осуществляется по фронту: либо по нарастающему (если в регистре OPTION бит INTEDG=1), либо по спадающему (если INTEDG=0). Когда фронт обнаруживается на нож- ке INT, бит запроса INTF устанавливается в единицу (INTCON <1>). Это 198
Лекция 9 Аппаратные средства микроконт^щлеров серии PIC прерывание может быть замаскировано сбросом управляющего бита INTE в ноль (INTCON <4>). Бит запроса INTF необходимо очистить прерыва- ющей программой перед тем, как опять разрешить это прерывание. Пре- рывание INT может вывести процессор из режима SLEEP, если перед вхо- дом в этот режим бит INTE был установлен в единицу. Состояние бита GIE также определяет, будет ли процессор переходить на подпрограмму прерывания после выхода из режима SLEEP. Переполнение счетчика TMRO (FFh->00h) устанавливает в единицу биг запроса TOIF (INTCON<2>). Это прерывание может быть разрешено/зап- рещено установкой/сбросом бита маски TOIE (INTCON<5>). Сброс зап- роса T0IF - дело программы обработки. Любое изменение сигнала на одном из четырех входов порта RB<7:4> устанавливает в единицу бит RBIF (INTCON<0>). Это прерывание может быть разрешено/запрещено установкой/сбросом бита маски RBIE (INTCON<3>). Сброс запроса RBIF - дело программы обработки. Признак запроса прерывания по завершении записи в EEPROM, EEIF (EECON1<4>) устанавливается в единицу по окончании автоматической записи данных в EEPROM. Это прерывание может быть замаскировано сбросом бита EEIE (INTCON<6>). Сброс запроса EEIF — дело программы обработки.
Лекция 9 Аппаратные средства микроконтроллеров серии PIC Вариант 1 1. Какой формат команд используется в семействе микроконтроллеров среднего уровня PIC16CXXX? □ 12 бит □ 14 бит □ 16 бит □ 32 бита 2. Что дает двухступенчатый конвейер исполнения команд в Р1С-микроконтроллерах? □ возможность одновременной выборки и исполнения команд □ возможность удвоения тактовой частоты □ возможность параллельного исполнения двух команд □ возможность динамического предсказания переходов 3. Для каких целей используются регистры специальных функций Р1С-микроконтроллера? □ для управления работой МК □ для реализации специальных команд МК □ для хранения промежуточных данных □ для защиты от несанкционированного доступа 4. Где хранится содержимое младшего байта счетчика команд микроконтроллеров подгруппы PIC16F8X? □ в регистре STATUS □ в регистре OPTION □ в регистре PCLATH □ в регистре PCL 201
Глава 5 Однокристальные микроконтроллеры серии PIC 5. Какова разрядность портов ввода/вывода микроконтроллеров подгруппы PIC16F8X? □ порт А - 8 разрядов и порт В - 5 разрядов □ порт А - 8 разрядов и порт В - 8 разрядов □ порт А - 5 разрядов и порт В - 8 разрядов □ порт А - 5 разрядов и порт В - 5 разрядов 6. Какова разрядность таймера/счетчика TMRO микроконтроллеров подгруппы PIC16F8X? □ 4 □ 8 □ 14 □ 16 7. Когда происходит инкремент таймера/счетчика в режиме счетчика без пределителя в микроконтроллерах подгруппы PIC16F8X? □ каждый такт □ каждые 8 тактов □ при смене сигнала на входе T0CKI □ каждый командный цикл 8. Какие регистры управляют процессом чтения и записи энергонезависимой памяти данных микроконтроллеров подгруппы PIC16F8X? □ регистр EEDATA □ регистр EEADR □ регистры EECON1 и EECON2 □ регистры INTCON и EEADR 202
Лекция 9 Аппаратные средства микроконтроллеров серии PIC Вариант 2 1. Какая архитектура используется в Р1С-микроконтроллерах? □ фон-неймановская с RISC-процессором □ фон-неймановская с CISC-процессором □ гарвардская с RISC-процессором □ гарвардская с CISC-процессором 2. Сколько тактов занимает выполнение одного командного цикла Р1С-микроконтроллером? □ 1 □ 2 □ 4 □ 8 3. Где хранится информация о выборе банка памяти данных микроконтроллеров подгруппы PIC16F8X? □ в бите IRP регистра STATUS □ в бите RPO регистра STATUS □ в стеке МК □ в памяти программ 4. Где хранится указатель стека микроконтроллеров подгруппы PIC16F8X? □ недоступен пользователю □ в регистре OPTION □ в регистре PCLATH □ в регистре PCL 203
Глава 5 Однокристальные микроконтроллеры серии PIC 5. Где хранится информация о направлении передачи информации портов ввода/вывода микроконтроллеров подгруппы PIC16F8X? □ в регистрах TRISA и TRISB, соответственно □ в регистре INTCON □ в регистре INDF □ в регистрах PORTA и PORTB, соответственно 6. Какой бит определяет режим работы таймера/счетчика микроконтроллеров подгруппы PIC16F8X? □ бит TOCS регистра OPTION □ бит PSA регистра OPTION □ бит ТО регистра STATUS □ бит Т01Е регистра INTCON 7. Какой бит определяет режим использования пределителя микроконтроллеров подгруппы PIC16F8X? □ бит TOCS регистра OPTION □ бит PSA регистра OPTION □ бит ТО регистра STATUS □ бит TOIE регистра INTCON 8. Сколько источников запросов прерываний имеют микроконтроллеры подгруппы PIC16F8X? □ 2 □ 4 □ 6 □ 8 204
Лекция 9 Аппаратные средства микроконтроллеров серии PIC Вариант 3 1. Сколько циклов занимает исполнение одной команды ИС-микроконтроллером? □ 1 □ 2 □ 4 □ 1 кроме команд переходов (2 цикла) 2. Какова глубина аппаратного стека микроконтроллеров подгруппы PIC16F8X? □ 4 □ 8 □ 16 □ 32 3. Где хранятся биты признаков результата операций микроконтроллеров подгруппы PIC16F8X? □ в регистре STATUS □ в регистре OPTION □ в регистре таймера/счетчика □ в регистре INTCON 4. Какова разрядность счетчика команд микроконтроллеров подгруппы PIC16F8X? □ 11 □ 12 □ 13 □ 16 205
Глава 5 Однокристальные микроконтроллеры серии PIC 5. Где хранится указатель адреса при косвенной адресации данных в микроконтроллерах подгруппы PIC16F8X? □ недоступен пользователю □ в регистре FSR □ в регистре PCLATH □ в регистре STATUS 6. В какое состояние переходят порты ввода/вывода PIC-микроконтроллеров по умолчанию (после сброса)? □ в состояние вывода логического “О” □ в третье (высокоимпедансное) состояние □ в состояние ввода □ в состояние вывода логической “ 1 ” 7. Когда происходит инкремент таймера/счетчика в режиме таймера без пределителя в микроконтроллерах подгруппы PIC16F8X? □ каждый такт □ каждые 8 тактов □ при смене сигнала на входе Т0СК1 □ каждый командный цикл 8. Где хранится информация о содержимом пределителя микроконтроллеров подгруппы PIC16F8X? □ недоступна □ в регистре OPTION □ в регистре FSR □ в регистре TMRO 206
Лекция 10 Специальные функции и система команд микроконтроллеров серии PIC Лекция 10. Специальные функции и система команд микроконтроллеров серии PIC В этой лекции рассказывается о специальных функциях, предназна- ченных для расширения возможностей системы на основе PIC-микро- контроллеров и повышения ее надежности, а также рассматриваются особенности системы команд микроконтроллеров подгруппы PIC16F8X. Ключевые слова: сброс, сторожевой таймер, режимы ожидания и оста- нова, генератор, конфигурация, система команд. 5.2.13. Специальные функции Микроконтроллеры подгруппы PIC16F8X имеют набор специальных функций, предназначенных для расширения возможностей системы, ми- нимизации стоимости, исключения навесных компонентов, обеспечения минимального энергопотребления и защиты кода от считывания. В PIC16F8X реализованы следующие специальные функции: • сброс; • сторожевой таймер (WDT); • режим пониженного энергопотребления (SLEEP); • выбор типа генератора; • защита кода от считывания; • биты идентификации; • последовательное программирование в составе схемы. В PIC16F8X существуют различия между вариантами сбросов: • сброс по включению питания; • сброс по внешнему сигналу /MCLR при нормальной работе; • сброс по внешнему сигналу /MCLR в режиме SLEEP; • сброс по окончании задержки таймера WDT при нормальной рабо- те; • сброс по окончании задержки таймера WDT в режиме SLEEP. Для реализации сброса по включению питания в МК подгруппы PIC16F8X предусмотрен встроенный детектор включения питания. Тай- мер установления питания (PWRT) начинает отсчет времени после того, как напряжение питания пересекает уровень около 1,2...1,8 Вольт. По ис- течении выдержки около 72мс считается, что напряжение достигло но- минала и запускается другой таймер — таймер запуска генератора (OST), 207
Глава 5 Однокристальные микроконтроллеры серии PIC формирующий выдержку на стабилизацию кварцевого генератора. Про- граммируемый бит конфигурации позволяет разрешать или запрещать выдержку от встроенного таймера установления питания. Выдержка за- пуска меняется в зависимости от экземпляров кристалла, от питания и температуры. Таймер на стабилизацию генератора отсчитывает 1024 им- пульса от начавшего работу генератора. Считается, что кварцевый генератор за это время выходит на режим. При использовании RC генераторов выдержка на стабилизацию не производится. Если сигнал /MCLR удерживается в низком состоянии достаточно дол- го (дольше времени всех задержек), тогда после перехода /MCLR в высо- кое состояние программа начнет выполняться немедленно. Это необхо- димо в тех случаях, когда требуется синхронно запустить в работу несколько PIC-контроллеров через общий для всех сигнал /MCLR. Микроконтроллеры подгруппы PIC16F8X имеют встроенный сторо- жевой таймер WDT. Для большей надежности он работает от собственного внутреннего RC-генератора и продолжает функционировать, даже если основной генератор остановлен, как это бывает при исполнении команды SLEEP. Таймер вырабатывает сигнал сброса. Выработка таких сбросов мо- жет быть запрещена путем записи нуля в специальный бит конфигурации WDTE. Эту операцию производят на этапе прожига микросхем. Номинальная выдержка WDT составляет 18 мс (без использования де- лителя). Она зависит от температуры, напряжения питания, особеннос- тей типов микросхем. Если требуются большие задержки, то к WDT мо- жет быть подключен встроенный пределитель с коэффициентом деления до 1:128, который программируется битами PS2:PS0 в регистре OPTION. В результате могут быть реализованы выдержки до 2,3 секунд. Команды «CLRWDT» и «SLEEP» обнуляют WDT и пределитель, если он подключен к WDT. Это запускает выдержку времени сначала и предот- вращает на некоторое время выработку сигнала сброса. Если сигнал сброса от WDT все же произошел, то одновременно обнуляется бит /ТО в регис- тре статуса. В приложениях с высоким уровнем помех содержимое регис- тра OPTION подвержено сбою. Поэтому регистр OPTION должен обнов- ляться через равные промежутки времени. Состояние регистров МК после сброса представлено в табл. 5.7. Некоторые из специальных регистров при сбросе не инициализируются. Они имеют случайное состояние при включении питания и не изменяются при иных видах сброса. Другая часть специальных регистров инициализируется в «состояние сброса» при всех видах сброса, кроме сброса по окончанию задержки таймера WDT в режиме SLEEP Просто этот сброс рассматривается как временная задержка в нормальной работе. Естьеще несколько исключений. Счетчик команд всегда сбрасывается в ноль (OOOOh). Биты регистра статуса /ТО и /PD 208
Лекция 10 Специальные функции и система команд микроконтроллеров серии PIC устанавливаются или сбрасываются в зависимости от варианта сброса. Эти биты используются программой для определения природы сброса (см. табл. 5.3). Регистр Адрес Сброс по включению питания Другие виды сброса W — xxxx xxxx uuuu uuuu INDF 00h — — TMR0 Olh xxxx xxxx uuuu uuuu PCL 02h 0000 0000 0000 0000 STATUS 03h 0001 Ixxx OOOq quuu FSR 04h xxxx xxxx uuuu uuuu PORTA 05h —X xxxx —u uuuu PORTB 06h xxxx xxxx uuuu uuuu TRISA 85h -1 1111 -1 1111 TRISB 86h nil 1111 11111111 OPTION 81h 1111 nil 1111 1111 EEDATA 08h xxxx xxxx uuuu uuuu EEADR 09h xxxx xxxx uuuu uuuu EECON1 88h -0 0000 -0 qOOO EECON2 89h — — PCLATH OAh -0 0000 -0 0000 INTCON OBh 0000 OOOx 0000 OOOu Здесь: x — неизвестное значение; u — неизменяемый бит; «—» — неиспользуемый бит (читается как «0»); q — значение бита зависит от условий сброса. Табл. 5.7. Состояние регистров МК после сброса. Режим пониженного энергопотребления SLEEP предназначен для обеспечения очень малого тока потребления в ожидании (менее 1 мкА при 14 — 3199 209
Глава 5 Однокристальные мик^жонтршлеры серии PIC выключенном сторожевом таймере). Выход из режима SLEEP возможен по внешнему сигналу сброса или по окончании выдержки сторожевого таймера. Кристаллы PIC16F8X могут работать с четырьмя типами встроенных генераторов. Пользователь может запрограммировать два конфигура- ционных бита (FOSC1 и FOSCO) для выбора одного из четырех режимов: RC, LP, XT, HS. Здесь XT - стандартный кварцевый генератор, HS - высокочастотный кварцевый генератор, LP — низкочастотный генератор для экономичных приложений. Микроконтроллеры PIC16F8X могут тактироваться и от внешних источников. Генератор, построенный на кварцевых или керамических резонаторах, требует периода стабилизации после включения питания. Для этого встро- енный таймер запуска генератора держит устройство в состоянии сброса примерно 18 мс после того, как сигнал на /MCLR ножке кристалла дос- тигнет уровня логической единицы. Возможность выбора типа генератора позволяет эффективно ис- пользовать микроконтроллеры семейства в различных приложениях. Применение RC генератора позволяет уменьшить стоимость системы, а низкочастотный LP-генератор сокращает энергопотребление. Программный код, который записан в кристалл, может быть защищен от считывания при помощи установки бита защиты (СР) в слове конфи- гурации в ноль. Содержимое программы не может быть прочитано так, чтобы с ним можно было работать. Кроме того, при установленном бите защиты невозможно изменять программу. То же относится и к содержи- мому памяти данных EEPROM. Если установлена защита, то бит СР можно стереть только вместе с содержимым кристалла. Сначала будет стерта EEPROM программная па- мять и память данных, и в последнюю очередь — бит защиты кода СР. При считывании защищенного кристалла чтение любого адреса памяти даст результат вида 0000000ХХХХХХХ(двоичный код), где X — это 0 или 1. Память данных EEPROM невозможно проверить после установки бита зашиты. Для выбора различных режимов работы используются биты конфигура- ции. Микроконтроллеры подгруппы PIC16F8X имеют 5 или 6 бит конфи- гурации, которые хранятся в EEPROM и устанавливаются на этапе програм- мирования кристалла. Эти биты могут быть запрограммированы (читается как «О») или оставлены ^запрограммированными (читается «1«) для выбо- ра подходящего варианта конфигурации устройства. Они расположены в EEPROM-памяти по адресу 2007h. Пользователю следует помнить, что этот адрес находится ниже области кодов и недоступен программе. 210
Лекция 10 Специальные функции и система команд микроконтроллеров серии PIC Назначение бит конфигурации МК PIC16CR83 и PIC16CR84 приведе- но в табл. 5.8. R-u R/P-u R-u R-u R-u R-u R-u СР DP СР /PWRTE WDTE FOSC1 FOSC0 Бит 13:8 Бит 7 Бит 6:4 Бит 3 Бит 2 Бит 1 Бит 0 Биты 13:8 СР: бит защиты памяти программ 0 = память программ защищена 1 = защита отсутствует Бит 7 DP: бит защиты памяти данных 0 = память данных защищена 1 = защита отсутствует Биты 6:4 СР: бит защиты памяти программ 0 = память программ защищена 1 = защита отсутствует Бит 3: /PWRTE: бит использования таймера по включению питания 0 = таймер используется (есть задержка) 1 = таймер не используется Бит 2: WDTE: бит использования сторожевого таймера 0 = WDT не используется 1 = WDT используется Биты 1:0 FOSC1:FOSCO: бит выбора типа генератора 11 = генератор RC 10 = генератор HS 01 = генератор XT 00 = генератор LP Здесь: Р — программируемый бит; — п = значение по сбросу после включения питания. Табл. 5.8. Назначение бит конфигурации МК PIC16CR83 и PIC16CR84. Назначение бит конфигурации МК PIC16F83 и PIC16F84 приведено в табл. 5.9. 14* 211
Глава 5 Однокристальные микроконтроллеры серии PIC Г ......................... , ' - - R-u R-u R-u R-u R-u СР /PWRTE WDTE FOSC1 FOSC0 Бит 13:4 Бит 3 Бит 2 Бит 1 Бит 0 Биты 13:4 СР: бит защиты памяти программ 0 = память программ защищена 1 = защита отсутствует Бит 3: / PWRTE: бит использования таймера по включению питания 0 — таймер используется (есть задержка) 1 = таймер не используется Бит 2: WDTE: бит использования сторожевого таймера 0 = WDT не используется 1 = WDT используется Биты 1:0 FOSCkFOSCO: бит выбора типа генератора 11 = генератор RC 10 = генератор HS 01 = генератор XT 00 = генератор LP Табл. 5.9. Назначение бит конфигурации МК PIC15F83 и PIC16F84. Четыре слова памяти, расположенные по адресам 2000h-2003h, пред- назначены для хранения идентификационного кода (ID) пользователя, контрольной суммы или другой информации. Как и слово конфигурации, они мотут быть прочитаны или записаны только с помощью программа- тора. Доступа из программы к ним нет. Микроконтроллеры подгруппы PIC16F8X могут быть запрограм- мированы последовательным способом в составе устройства. Для этого используется всего пять линий: две для данных и тактового сигнала и три для земли, напряжения питания и программирующего напряже- ния. Разработчик может создать и смакетировать устройство с незап- рограммированным прибором, а перед использованием ввести в него программу. 212
Лекция 10 Специальные функции и система команд микроконтроллеров серии PIC 5.3. Система команд микроконтроллеров подгруппы PIC16F8X 5.3.1. Перечень и форматы команд Микроконтроллеры подгруппы PIC16F8X имеют простую и эффектив- ную систему команд, состоящую всего из 35 команд. Каждая команда МК подгруппы PIC16F8X представляет собой 14-би- товое слово, разделенное на код операции (OPCODE), и поле для одного и более операндов, которые могут участвовать или не участвовать в этой команде. Система команд PIC16F8X является ортогональной и включает в себя команды работы с байтами, команды работы с битами и операции с константами и команды управления. В таблице 5.10 приведены описания полей команд. Поле Описание f Адрес регистра W Рабочий регистр b Номер бита в 8-разрядном регистре к Константа X Не используется. Ассемблер формирует код с х=0 d Регистр назначения: d=0 — результат в регистре w d=l - результат в регистре f По умолчанию d=l label Имя метки TOS Вершина стека PC Счетчик команд PCLATH Регистр PCLATH GIE Бит разрешения всех прерываний Табл. 5.10. Описания полей команд МК семейства PIC16CXXX. 213
Глава 5 Однокристальные микроконтроллеры серии PIC Поле Описание WDT Сторожевой таймер /ТО Тайм-аут /PD Выключение питания dest Регистр назначения: рабочий регистр w или регистр, заданный в команде [] Необязательные параметры О Содержание —> Присвоение < > Поле номера бита ё Из набора Табл. 5.10. Описания полей команд МК семейства PIC16CXXX (продолжение). Для команд работы с байтами f обозначает регистр, с которым произ- водится действие; d — бит, определяющий, куда положить результат. Если d =0, то результат будет помещен в регистр w, при d=l результат будет по- мещен в регистр «f», упомянутый в команде. Для команд работы с битами b обозначает номер бита, участвующего в команде, a f — это регистр, в котором данный бит расположен. Для команд передачи управления и операций с константами, к обозна- чает восьми- или одиннадцатибитную константу. Почти все команды выполняются в течение одного командного цикла. В двух случаях исполнение команды занимает два командных цикла: • проверка условия и переход; • изменение программного счетчика как результат выполнения коман- ды. Один командный цикл состоит из четырех периодов генератора. Таким образом, для генератора с частотой 4 МГц время исполнения командного цикла будет 1 мкс. Основные форматы команд МК изображены на рис. 5.15. Система команд МК подгруппы PIC16F8X приведена в табл. 5.11. 214
Лекция 10 Специальные функции и система команд микроконтроллеров серии PIC Команды работы с байтами 13 8 7 6 0 OPCODE d f(FILE#) d = 0 для назначения w d = 1 для назначения f f = 7-битовый адрес регистра Команды работы с байтами 13 10 9 7 6 0 OPCODE b(BIT#) f(FILE#) d = 3-разрядный номер бита f = 7-битовый адрес регистра Команды управления и операции с константами (кроме CALL и GOTO) 13 8 7 0 OPCODE k( константа) к = 8-разрядная константа Команды CALL и GOTO 13 11 10 0 OPCODE k( константа) к = 11 -разрядная константа Рис. 5.15. Основные форматы команд. Мнемоника Описание комацды Циклы Биты состояния Прим. ADDWF f, d Сложение W c f 1 C,DC,Z 1,2 ANDWF f, d Логическое И W и f 1 Z 1,2 CLRF f Сброс регистра f 1 Z 2 CLRW Сброс регистра W 1 Z COMF f, d Инверсия регистра f 1 Z 1,2 DECF f,d Декремент регистра f 1 Z 1,2 DECFSZ f, d Декремент f, пропус- тить команду, если 0 1(2) 1,2,3 INCF f,d Инкремент регистра f 1 Z 1,2 Табл. 5.11. Система команд МК подгруппы PIC16F8X. 215
Глава 5 Однокристальные микроконтроллеры серии PIC Мнемоника Описание команды Циклы Биты состояния Прим. INCFSZ f, d Инкремент f, пропустить команду, если 0 1(2) 1,2,3 IORWF f, d Логическое ИЛИ W и f 1 Z 1,2 MOVF f, d Пересылка регистра f 1 Z 1,2 MOVWF f Пересылка W в f 1 NOP - Холостая команда 1 RLF f.d Сдвиг f влево через перенос 1 С 1,2 RRF f, d Сдвиг f вправо через перенос 1 С 1,2 SUBWF f, d Вычитание W из f 1 C,DC,Z 1,2 SWAPF f, d Обмен местами тетрад в f 1 1,2 XORWF f, d Исключающее ИЛИ W и f 1 Z 1,2 BCF f, b Сброс бита в регистре f 1 1,2 BSF f,b Установка бита в регистре f Пропустить команду, 1 1,2 BTFSC f, b если бит в f равен нулю Пропустить команду, 1(2) 3 BTFSS f, b если бит в f равен едини- 1(2) 3 Це ADDLW k Сложение константы и W 1 C,DC,Z ANDLWk Логическое И константы hW 1 Z CALL k Вызов подпрограммы 2 CLRWDT - Сброс сторожевого таймера WDT 1 /ТО,/Р GOTO k Переход по адресу 2 lORLWk Логическое ИЛИ кон- станты и W 1 z MOVLW k Пересылка константы в W 1 Табл. 5.11. Система команд МК подгруппы PIC16F8X (продолжение). 216
Лекция 10 Специальные функции и система команд микроконтроллеров серии PIC Мнемоника Описание команды Циклы Биты состояния Прим. RETFIE - RETLWk RETURN - SLEEP - SUBLW k XORLWk Возврат из прерывания Возврат из подпрограм- мы с загрузкой констан- ты в W Возврат из подпрограм- мы Переход в режим SLEEP Вычитание W из кон- станты Исключающее ИЛИ константы и W 2 2 2 1 1 1 /то./р C,DC,Z Z Примечания к таблице: 1 Если модифицируется регистр ввода/вывода (например, MOVF PORTB,!), то используется значение, считываемое с выводов. Например, если в выходной защелке порта, включенного на ввод, находится «1», а внешнее устройство формирует на этом выводе «0», то в разряде данных будет записан «0». 2 Если операндом команды является содержимое регистра TMRO (и, если допустимо, (1=1), то предварительный делитель, если он подключен к TMRO, будет сброшен. 3 Если в результате выполнения команды изменяется счетчик ко- манд или выполняется переход по проверке условия, то команда выполняется за два цикла. Второй цикл выполняется как NOP. Табл. 5.11. Система команд МК подгруппы PIC16F8X (продолжение). 5.3.2. Команды работы с байтами Команды работы с байтами используются в PIC МК для пересылки дан- ных между регистрами и выполнения математических операций над их содержимым. Несмотря на .относительно небольшой набор команд, они позволяют реализовать целый ряд операций. Это связано, в частности, с возможностью указать в команде адрес размещения результата операции. Преимуществом системы команд является также возможность ис- пользования различных способов обращения к регистрам. Адрес регистра может быть указан непосредственно в команде соответствующим 7-бито- 217
Глава 5 Однокристальные микроконтроллеры серии PIC вым полем f. При этом доступ возможен только к данным, расположен- ным в пределах текущего банка данных. Адресация данных может осуще- ствляться и с помощью индексного регистра FSR, путем обращения к ре- гистру косвенной адресации INDF, расположенному по нулевому адресу. Пересылка данных выполняется с помощью двух команд: MOVF и MOVWF, назначение которых существенно различается. Команда MOVF используется для установки бита нулевого результата в зависимости от со- держимого определенного регистра и может применяться для его загрузки в регистр w. Команда MOVWF используется для записи содержимого рабо- чего регистра w в указанный регистр МК. Если в качестве этого регистра указывается INDF, то адрес регистра назначения выбирается из регистра FSR. При выполнении данной команды биты состояния не изменяются. Специальные команды CLRF f и CLRW применяются для очистки ре- гистров МК. Команда CLRF f записывает ноль в указанный регистр, а ко- манда CLRW — в рабочий регистр. При этом необходимо помнить, что они также устанавливают соответствующее значение бита нуля. Наиболее часто используемой арифметической операцией является сло- жение, которое выполняется командой ADDWF f,d. Эта операция может изменять все биты состояния. Бит нуля устанавливается в 1, если при вы- полнении логической операции «И» над полученным результатом и чис- лом OxOFF (255) получается ноль. Бит переноса устанавливается в 1, если результат превышает число OxOFF. Бит десятичного переноса устанавлива- ется в 1, если сумма четырех младших битов результата превышает OxOF (15). При использовании операции вычитания SUBWF f, d следует иметь в виду, что в PIC МК она выполняет операцию сложения с отрицательным числом. То есть вместо операции d = f — w в действительности выполняет- ся d = f + (-w). Отрицательное значение содержимого w вычисляется по формуле Negw = (Posw Л OxOFF) + 1. Команды логических операций ANDWF f, d, IORWF f, d и XORWF f, d позволяют выполнять основные логические операции над соответствую- щими битами содержимого указанного регистра и регистра w. Бит нуля в регистре STATUS устанавливается в 1 или сбрасывается в 0 в зависимости от значения полученного результата. Команду XORWF f, d удобно исполь- зовать для проверки содержимого некоторого регистра. Для этого необ- ходимо загрузить заданное число в регистр w и выполнить операцию XORWF f, d над содержимым проверяемого регистра и w. Если содержимое регистра равно содержимому w, то результат операции будет равен нулю, и бит нуля установится в 1. Команда COMF f, d используется для инвертирования значений всех битов в регистре источника. Следует отметить, что эта команда не делает число отрицательным, то есть не переводит его в дополнительный код. 218
Лекция Ю Специальные функции и система команд микроконтроллеров серии PIC Отрицательное число Neg может быть получено из положительного Pos следующим образом: Neg = (Pos л OxOFF) + 1. Команда SWAPF f, d меняет местами тетрады в регистре. Как и в ос- тальных командах данной группы, результат выполнения может быть за- писан как в регистре w, так и в регистре-источнике. Данная команда не меняет значения какого либо из битов состояния, что может использо- ваться для восстановления содержимого контекстных регистров перед возвратом из прерывания. Команду SWAPF f, d можно применять, в частности, для хранения двух цифр в одном регистре, переставляя их в зависимости от того, какую из них вы хотите использовать. С помощью команды SWAPF f, d удобно разделить байт на две тетрады для их последующего отображения на дисплее. Основной функцией команд циклического сдвига RLF f, d и RRF f, d является сдвиг содержимого регистра влево или вправо на один бит с за- писью на место младшего значащего бита значения бита переноса или, соответственно, установления бита переноса в соответствии со значением старшего значащего бита. Команды циклического сдвига могут исполь- зоваться для умножения и деления на число 2 в степени п. Они также слу- жат для реализации последовательного ввода или вывода данных и пози- ционирования байта для того, чтобы можно было тестировать значение отдельных битов. Команды инкремента INCF f, d и декремента DECF f, d используются для изменения содержимого регистра на 1. После выполнения команд ин- кремента и декремента может измениться только бит нуля. Изменения бита переноса, если результат превысит значение OxOFF при инкременте или окажется меньше 0 при декременте, не происходит. Для реализации условных переходов в программе существуют коман- ды инкремента и декремента с пропуском команды при нулевом резуль- тате: INCFSZ f, d и DECFSZ f, d. С точки зрения обработки данных они работают аналогично командам INCF f, d и DECF f, d. Основное отличие от этих команд заключается в том, что при нулевом результате выполнения команды INCFSZ f, d или DECFSZ f, d пропускается следующая за ней команда. Это означает, что команды INCFSZ f, d и DECFSZ f, d могут использоваться для организации программных циклов. Другая особенность этих команд состоит в том, что они не влияют на содержимое битов состояния регистра STATUS. Команда NOP означает отсутствие операции. Традиционно она ис- пользуется для двух целей. Первая - обеспечение синхронизации програм- мы с временными характеристиками различных устройств системы. Вторым возможным вариантом является использование команды NOP для удаления части программного кода. Вследствие того, что код команды 219
Глава 5 Однокристальные микроконтроллеры серии PIC NOP состоит из одних нулей, его легко ввести в память программ вместо любой другой команды, не прибегая к стиранию и репрограммированию всей памяти программ. 5.3.3. Команды работы с битами Отличительной особенностью данной группы команд является то, что они оперируют с однобитными операндами, в качестве которых исполь- зуются отдельные биты регистров МК. Установка и сброс отдельных битов производится командами BSF f, b и BCF f, b. Любой доступный для записи бит в регистровой памяти может быть модифицирован таким способом. При этом гарантируется, что ни один из остальных битов регистра не будет изменен. Однако при работе с портами ввода/вывода последнее утверждение не всегда справедливо. Связано это с тем, что значение числа, считываемого из регистра порта, зависит от конфигурации его выводов в качестве входов или выходов данных. В системе команд, рассматриваемых PIC МК, отсутствуют команды ус- ловного перехода. Вместо них имеются такие, которые позволяют пропу- стить выполнение следующей команды. В частности, рассмотренные выше команды INCFSZ f, d и DECFSZ f, d удобны для организации циклов в программе. Для управления процессом выполнения программы используются ко- манды работы с битами BTFSC f, b и BTFSS f, b, позволяющие пропустить выполнение следующей команды программы в зависимости от состояния определенного бита в заданном регистре. Если в качестве заданного регистра используется регистр STATUS, то можно организовать управление переходами программы в зависимости от состояния битов признаков результата операции, как предусмотрено в микропроцессорах стандартной архитектуры. 5.3.4. Команды управления и работы с константами Команды работы с константами используют при выполнении опера- ции явно заданные операнды, которые являются частью команды. Команда MOVLW к используется для записи константы к в рабочий регистр w. Содержимое регистра STATUS при этом не изменяется. Команда ADDLW к прибавляет непосредственно заданную величину к содержимому регистра w. Эта команда изменяет значения битов нуля, пере- носа и десятичного переноса таким же образом, как и команда ADDWF f, d. Команда SUBLW к вычитает содержимое регистра w из заданного зна- чения константы к. В отличие от SUBWF f, d, результат выполнения ко- манды SUBLWk можно представить в следующем виде: w = k + (w л OxOFF) 220
Лекция 10 Специальные функции и система команд микроконтроллеров серии PIC + 1. С помощью этой команды удобно изменять знак содержимого регис- тра w, используя ее следующим образом: SUBLW 0. Команды логических операций ANDLW k, IORLW к и XORLW к вы- полняют побитно соответствующие операции над содержимым регистра w и непосредственно заданной константой к. Эти команды, как и команды работы с байтами, устанавливают только бит нуля в регистре STATUS в соответствии с результатом операции. Полученный результат сохраняется в регистре w. С помощью команды IORLW 0 удобно определять равенство нулю со- держимого регистра w. В зависимости от результата этой операции бит нуля будет установлен в 1 или сброшен в 0. Команда RETLW к используется для возврата из подпрограммы с уста- новкой начальных условий в регистр w, а также для реализации табличных преобразований, что будет описано ниже. Перед возвращением из под- программы эта команда осуществляет загрузку непосредственно заданной величины в рабочий регистр w. Команды GOTO k, CALL к, RETURN и RETFIE используются для уп- равления программой. Команды GOTO к и CALL к могут явно задавать адрес перехода в пре- делах определенной страницы, размер которой зависит от типа МК: 256/ 512 адресов для младших моделей, 2К адресов для PIC МК среднего уров- ня (включая PIC16F8X) и 8К адресов для старших моделей МК. Если ад- рес перехода выходит за пределы страницы, то регистр PCLATH должен содержать правильную информацию о новой странице. Команда CALL к выполняется практически так же, как и GOTO к, за исключением того, что указатель на следующую страницу сохраняется в стеке счетчика команд. Для PIC МК средней группы существует три различных способа воз- врата из подпрограммы, определяемые командами RETLW k, RETURN и RETFIE. При каждом из этих способов значение адреса извлекается из вершины стека и загружается в счетчик команд. Эти адреса используются для возврата из подпрограмм или прерываний. Обычное использование команды RETURN приводит к восстановле- нию адреса команды, следующей за командой вызова подпрограммы. При этом содержимое каких-либо регистров не изменяется, как и значения отдельных битов. Команда RETFIE используется для возврата из прерывания. Она реа- лизуется аналогично команде RETURN за исключением того, что при ее выполнении устанавливается в 1 бит GIE в регистре управления прерыва- ниями INTCON. Это позволяет после выполнения данной команды не- медленно перейти к обработке прерываний, ожидающих своей очереди. 221
Глава 5 Однокристальные микроконтроллеры серии PIC В противном случае перед окончанием обработки потребовалась бы про- верка наличия запросов других прерываний, и, в случае их поступления, переход к их обработке. Существует всего две команды, служащие для непосредственного уп- равления функционированием МК. Первая из них — CLRWDT - исполь- зуется для сброса сторожевого таймера. Вторая - SLEEP — обеспечивает сохранение текущего состояния МК в режиме ожидания, пока не произой- дет какое-либо внешнее событие, которое позволит PIC МК продолжить выполнение программы. Команда CLRWDT сбрасывает в 0 содержимое сторожевого таймера WDT и пределителя (если он используется для установки интервала вре- мени срабатывания WDT), запуская сначала отсчет времени сторожевого таймера. Целью введения команды CLRWDT является предотвращение перезапуска МК при нормальном выполнении программы. Команда SLEEP служит для двух целей. Первой из них является от- ключение МК после того, как он закончит выполнение программы. Такое использование МК предполагает, что он необходим только для решения определенной задачи, например, инициализации других устройств в сис- теме, а затем его функционирование не требуется. Второй целью использования команды SLEEP является реализация в МКрежима ожидания какого-либо события. Существует три события, спо- собные вывести МК из режима ожидания. Первым из них является подача сигнала запуска на вход сброса МК, что приведет к перезапуску процес- сора и началу выполнения программы с нулевого адреса. Второй способ - поступление сигнала «пробуждения» МК от сторожевого таймера. Треть- им способом «пробуждения» является прерывание от какого-либо внеш- него источника. При любом способе «пробуждения» использование ко- манды SLEEP позволяет избежать необходимости организации циклов ожидания, а также снизить потребляемую системой мощность. При этом необходимо иметь в виду, что выход МК из режима ожида- ния занимает, по меньшей мере, 1024 такта. Поэтому команду SLEEP нельзя использовать в тех случаях, когда требуется быстрая реакция на внешнее событие. 5.3.5. Особенности программирования и отладки Анализ архитектуры микроконтроллеров PIC с точки зрения их про- граммирования и отладки систем позволяет сделать следующие выводы: • RISC-система команд обеспечивает высокую скорость выполнения инструкций, но вызывает затруднения и снижение производитель- ности при программировании нетривиальных алгоритмов. Посколь- ку все инструкции в системе команд являются одноадресными, заг- 222
Лекция 10 Специальные функции и система команд микроконтроллеров серии PIC рузка константы в любой из регистров требует двух инструкций. Вна- чале нужно загрузить константу в рабочий регистр w, а затем пере- слать его содержимое в нужную ячейку памяти данных: MOVLW к MOVWF f Аналогично, все бинарные арифметико-логические операции при- ходится выполнять с привлечением рабочего регистра w; • высокое быстродействие достигается в значительной степени за счет применения конвейера команд. Инструкции ветвления, изменяю- щие счетчик команд (безусловный переход, вычисляемый переход), не используют инструкцию из очереди, поэтому выполняются за два машинных цикла и снижают темп выполнения программы. Кроме того, сам анализ условий в архитектуре PIC требует выполнения «лишних» команд; • наличие одного вектора прерываний, отсутствие развитого механиз- ма обработки запросов по приоритетам и вложенных прерываний затрудняют решение сколько-нибудь сложных задач управления. При приходе запроса от любого из источников выполняется переход на процедуру обработки по единственному вектору. В процедуре при- ходится по битам признаков определять источник, причем условия ветвления, как указывалось выше, анализируются сложно, и все это увеличивает время реакции. После обработки прерывания нужно са- мостоятельно очистить бит запроса. Из-за отсутствия вложенных прерываний возможно длительное ожидание обработки запросом от источника с более высоким приоритетом; • аппаратный стек глубиной 8 слов не имеет признака переполнения и ограничивает вложенность процедур. За тем, чтобы он не пере- полнялся, программист должен следить самостоятельно; • память данных состоит из банков, для определения текущего банка используются биты регистров STATUS (для PIC16) или BSR (для PIC17). На этапе трансляции принадлежность указанного регистра текущему активному банку проверить невозможно, для этого требу- ется моделирование хода выполнения программы; • память программ разбита на страницы размером 2К слов. Для пере- хода на нужный адрес по командам CALL и GOTO должны быть пра- вильно установлены биты выбора текущей страницы в регистре PCLATH. На этапе трансляции невозможно проверить корректность передачи управления во время выполнения, для этого также требу- ется моделирование выполнения программы; 223
Глава 5 Однокристальные микроконтроллеры серии PIC • ограниченность ресурсов МК серии PIC делает проблематичным их программирование на языках высокого уровня. Указанные особенности архитектуры микроконтроллеров PIC компен- сируются чрезвычайно низкой ценой, поэтому такие изделия (особенно семейства PIC16) весьма популярны. В настоящее время их используют даже вместо логических ИС средней степени интеграции. Но реализовать все преимущества этих МК можно только при наличии средств програм- мирования и отладки, адекватных по цене и функциональным возможно- стям решаемым задачам. Важнейшие требования к инструментальным средствам для МК, ориентированным на выполнение функций ввода-вы- вода, можно сформулировать следующим образом: • основным назначением этих средств является поддержка програм- мирования на языке ассемблер и перенос программы на плату сис- темы управления; • мощные драйверы портов ввода/вывода, состояние которых одно- значно описывается значениями в регистрах управления, упрощают функцию замещения электрофизических параметров прототипной БИС, поэтому такие порты можно имитировать с помощью БИС программируемой логики; • стоимость инструментальных средств должна соответствовать невы- сокой стоимости одноплатного контроллера.
Лекция 10 Специальные функции и система команд микроконтроллеров серии PIC Вариант 1 1. Сколько видов сброса реализовано в микроконтроллерах подгруппы PIC16F8X? □ 1 □ 2 □ 3 □ 5 2. Можно ли стереть бит защиты программного кода в микроконтроллерах подгруппы PIC16F8X? □ нельзя □ можно, только если знать идентификационный код МК □ только вместе с содержимым памяти программ и данных МК □ можно, через последовательный доступ 3. Что может использоваться в качестве регистра назначения в системе команд микроконтроллеров подгруппы PIC16F8X? □ рабочий регистр W или регистр, используемый в команде □ любой адресуемый регистр □ регистр INDF □ регистр FSR 4. Какие команды микроконтроллеров подгруппы PIC16F8X используются для организации условных переходов в программе? □ команды DECFSZ f, d, INCFSZ f, d, BTFSC f, b и BTFSS f, b □ команды RETFIE и RETLW k □ команды CALL k и GOTO k □ любая команда 15 —3199 225
Глава 5 Однокристальные микроконтроллеры серии PIC Вариант 2 1. От какого генератора работает сторожевой таймер в микроконтроллерах подгруппы PIC16F8X? □ от тактового генератора МК □ от собственного внутреннего RC-генератора □ от внешнего генератора □ от собственного внутреннего кварцевого генератора 2. Где хранятся биты конфигурации микроконтроллеров подгруппы PIC16F8X? □ в энергонезависимой памяти данных □ в регистре OPTION □ в регистре EEDATA □ в регистре INTCON 3. Какие команды микроконтроллеров подгруппы PIC16F8X могут изменить все биты состояния? □ команды CALL к и SLEEP □ команды ANDWF f, d и IORWF f, d □ команды ADDWF f, d , SUBWF f, d , ADDLW k и SUBLW k □ любая команда 4. Какие действия выполняет команда CLRWDT системы команд микроконтроллеров подгруппы PIC16F8X? □ сбрасывает в 0 содержимое сторожевого таймера □ сбрасывает контроллер □ сбрасывает в 0 содержимое счетчика команд □ сбрасывает в 0 содержимое сторожевого таймера и пределителя (если он используется) 226
Лекция 10 Специальные функции и система команд микроконтроллера серии PIC Вариант 3 1. В какое состояние переходит счетчик команд микроконтроллеров подгруппы PIC16F8X после сброса? □ в состояние ноль □ в состояние 0004И □ в состояние, задаваемое битами конфигурации МК □ в случайное состояние 2. Каковы разрядность и количество комвнд микроконтроллеров подгруппы PIC16F8X? □ 12 разрядов, 33 команды □ 16 разрядов, 58 команд □ 14 разрядов, 35 команд □ 16 разрядов, 74 команды 3. Какие команды микроконтроллеров подгруппы PIC16F8X могут использоваться для реализации последовательного ввода или вывода данных? □ команды MOVF f, d и MOVWF f □ команды RLF f, d и RRF f, d □ команды SUBWF f, d и SUBLW k □ любая команда 4. Сколько времени занимает выход микроконтроллера подгруппы PIC16F8X из режима ожидания? □ 1024 такта □ 1024 цикла □ 128 тактов □ 128 циклов 15* 227
Лекция 11 Особенности разработки цифровых устройств на основе микроконтроллеров Глава 6. Проектирование устройств на микроконтроллерах Лекция 11. Особенности разработки цифровых устройств на основе микроконтроллеров В этой лекции рассказывается об основных этапах проектирования и разработки цифровых устройств и систем на основе микроконтролле- ров, а также приводится обзор методов совместной отладки аппарат- ных и программных средств. Ключевые слова: разработка, аппаратные средства, программные сред- ства, отладка. 6.1. Разработка микропроцессорной системы на основе микроконтроллера 6.1.1. Основные этапы разработки МПС на основе МК используются чаще всего в качестве встроенных систем для решения задач управления некоторым объектом. Важной осо- бенностью данного применения является работа в реальном времени, т.е. обеспечение реакции на внешние события в течение определенного вре- менного интервала. Такие устройства получили название контроллеров. Технология проектирования контроллеров на базе МК полностью со- ответствует принципу неразрывного проектирования и отладки аппарат- ных и программных средств, принятому в микропроцессорной технике. Это означает, что перед разработчиком такого рода МПС стоит задача ре- ализации полного цикла проектирования, начиная от разработки алго- ритма функционирования и заканчивая комплексными испытаниями в составе изделия, а, возможно, и сопровождением при производстве. Сло- жившаяся к настоящему времени методология проектирования контрол- леров может быть представлена так, как показано на рис. 6.1. В техническом задании формулируются требования к контроллеру с точки зрения реализации определенной функции управления. Техничес- кое задание включает в себя набор требований, который определяет, что пользователь хочет от контроллера и что разрабатываемый прибор должен 229
Глава 6 Проектирование устройств на микроконтроллерах делать. Техническое задание может иметь вид текстового описания, не сво- бодного в общем случае от внутренних противоречий. Техническое задание на разработку контроллера | Коррекция: алгоритма управления типа МК Разработка алгоритма управления | соотношения аппаратных и программных средств Выбор типа микроконтроллера | Разработка структуры аппаратных и программных средств 1 Разработка аппаратных средств Разработка программных средств Коррекция схем и топологии Монтаж макета Трансляция программы Коррекция исходного текста Автономная отладка аппаратуры Отладка программы на модели Совместная отладка аппаратных средств и программного обеспечения системы в реальном масштабе времени ---------------------------------------------- Интеграция разработанного контроллера в изделие | Испытание изделия) Нет ТЗ? Соответствует В эксплуатацию (производство) | Рис. 6.1. Основные этапы разработки контроллера. 230
Лекция 110собенности разработки цифровых устройств на основе микроконтроллеров На основании требований пользователя составляется функциональная спецификация, которая определяет функции, выполняемые контроллером для пользователя после завершения проектирования, уточняя тем самым, насколько устройство соответствует предъявляемым требованиям. Она включает в себя описания форматов данных, как на входе, так и на выходе, а также внешние условия, управляющие действиями контроллера. Функциональная спецификация и требования пользователя являются критериями оценки функционирования контролера после завершения проектирования. Может потребоваться проведение нескольких итераций, включающих обсуждение требований и функциональной спецификации с потенциальными пользователями контроллера, и соответствующую кор- рекцию требований и спецификации. Требования к типу используемого МК формулируются на данном этапе чаще всего в неявном виде. Этап разработки алгоритма управления является наиболее ответствен- ным, поскольку ошибки данного этапа обычно обнаруживаются только при испытаниях законченного изделия и приводят к необходимости до- рогостоящей переработки всего устройства. Разработка алгоритма обычно сводится к выбору одного из нескольких возможных вариантов алгорит- мов, отличающихся соотношением объема программного обеспечения и аппаратных средств. При этом необходимо исходить из того, что максимальное использо- вание аппаратных средств упрощает разработку и обеспечивает высокое быстродействие контроллера в целом, но сопровождается, как правило, увеличением стоимости и потребляемой мощности. Связано это с тем, что увеличение доли аппаратных средств достигается либо путем выбора более сложного МК, либо путем использования специализированных ин- терфейсных схем. И то, и другое приводит к росту стоимости и энерго- потребления. Увеличение удельного веса программного обеспечения по- зволяет сократить число элементов контроллера и стоимость аппаратных средств, но это приводит к снижению быстродействия, увеличению не- обходимого объема внутренней памяти МК, увеличению сроков разра- ботки и отладки программного обеспечения. Критерием выбора здесь и далее является возможность максимальной реализации заданных функ- ций программными средствами при минимальных аппаратных затратах и при условии обеспечения заданных показателей быстродействия и на- дежности в полном диапазоне условий эксплуатации. Часто определяю- щими требованиями являются возможность защиты информации (про- граммного кода) контроллера, необходимость обеспечения максимальной продолжительности работы в автономном режиме и другие. В результате выполнения этого этапа окончательно формулируются требования к параметрам используемого МК. 231
Глава 6 Проектирование устройств на микроконтроллерах При выборе типа МК учитываются следующие основные характерис- тики: • разрядность; • быстродействие; • набор команд и способов адресации; • требования к источнику питания и потребляемая мощность в раз- личных режимах; • объем ПЗУ программ и ОЗУ данных; • возможности расширения памяти программ и данных; • наличие и возможности периферийных устройств, включая средства поддержки работы в реальном времени (таймеры, процессоры со- бытий и т.п.); • возможность перепрограммирования в составе устройства; • наличие и надежность средств защиты внутренней информации; • возможность поставки в различных вариантах конструктивного ис- полнения; • стоимость в различных вариантах исполнения; • наличие полной документации; • наличие и доступность эффективных средств программирования и отладки МК; • количество и доступность каналов поставки, возможность замены изделиями других фирм. Список этот не является исчерпывающим, поскольку специфика про- ектируемого устройства может перенести акцент требований на другие па- раметры МК. Определяющими могут оказаться, например, требования к точности внутреннего компаратора напряжений или наличие большого числа выходных каналов ШИМ. Номенклатура выпускаемых в настоящее время МК исчисляется ты- сячами типов изделий различных фирм. Современная стратегия модульного проектирования обеспечивает потребителя разнообразием моделей МК с одним и тем же процессорным ядром. Такое структурное разнообразие открывает перед разработчиком возможность выбора оптимального МК, не имеющего функциональной избыточности, что минимизирует стоимость комплектующих элементов. Однако для реализации на практике возможности выбора оптималь- ного МК необходима достаточно глубокая проработка алгоритма управ- ления, оценка объема исполняемой программы и числа линий сопряжения с объектом на этапе выбора МК. Допущенные на данном этапе просчеты могут впоследствии привести к необходимости смены модели МК и по- вторной разводки печатной платы макета контроллера. В таких условиях целесообразно выполнять предварительное моделирование основных эле- 232
Лекция 11 Особенности разработки цифровых устройств на основе микроконтроллеров ментов прикладной программы с использованием программно-логичес- кой модели выбранного МК. При отсутствии МК, обеспечивающего требуемые по ТЗ характери- стики проектируемого контроллера, необходим возврат к этапу разра- ботки алгоритма управления и пересмотр выбранного соотношения между объемом программного обеспечения и аппаратных средств. От- сутствие подходящего МК чаще всего означает, что для реализации не- обходимого объема вычислений (алгоритмов управления) за отведен- ное время нужна дополнительная аппаратная поддержка. Отрицательный результат поиска МК с требуемыми характеристиками может быть связан также с необходимостью обслуживания большого числа объектов управления. В этом случае возможно использование внешних схем обрамления МК. На этапе разработки структуры контроллера окончательно определя- ется состав имеющихся и подлежащих разработке аппаратных модулей, протоколы обмена между модулями, типы разъемов. Выполняется пред- варительная проработка конструкции контроллера. В части программного обеспечения определяются состав и связи программных модулей, язык программирования. На этом же этапе осуществляется выбор средств про- ектирования и отладки. Возможность перераспределения функций между аппаратными и про- граммными средствами на данном этапе существует, но она ограничена характеристиками уже выбранного МК. При этом необходимо иметь в виду, что современные МК выпускаются, как правило, сериями (семействами) контроллеров, совместимых программно и конструктивно, но различающихся по своим возможностям (объем памяти, набор периферийных устройств и т.д.). Это дает возможность выбора структуры контроллера с целью поиска наиболее оптимального варианта реализации. Нельзя не упомянуть здесь о новой идеологии разработки устройств на базе МК, предложенной фирмой «Scenix». Она основана на использова- нии высокоскоростных RISC-микроконтроллеров серии SX с тактовой ча- стотой до 100 МГц. Эти МК имеют минимальный набор встроенной пе- риферии, а все более сложные периферийные модули эмулируются программными средствами. Такие модули программного обеспечения на- зываются «виртуальными периферийными устройствами», они обеспечи- вают уменьшение числа элементов контроллера, времени разработки, уве- личивают гибкость исполнения. К настоящему времени разработаны целые библиотеки виртуальных устройств, содержащие отлаженные про- граммные модули таких устройств как модули ШИМ и ФАПЧ, последо- вательные интерфейсы, генераторы и измерители частоты, контроллеры прерываний и многие другие. 233
Глава 6 Проектирование устройств на микроконтроллерах 6.1.2. Разработка и отладка аппаратных средств После разработки структуры аппаратных и программных средств даль- нейшая работа над контроллером может быть распараллелена. Разработка аппаратных средств включает в себя разработку общей принципиальной схемы,' разводку топологии плат, монтаж макета и его автономную отлад- ку. Время выполнения этих этапов зависит от имеющегося набора апро- бированных функционально-топологических модулей, опыта и квалифи- кации разработчика. На этапе ввода принципиальной схемы и разработки топологии используются, как правило, распространенные системы про- ектирования типа «ACCEL EDA» или «OrCad». Автономная отладка аппаратуры на основе МК с открытой архитекту- рой предполагает контроль состояния многоразрядных магистралей ад- реса и данных с целью проверки правильности обращения к внешним ре- сурсам памяти и периферийным устройствам. Закрытая архитектура МК предполагает реализацию большинства функций разрабатываемого уст- ройства внутренними средствами микроконтроллера. Поэтому разраба- тываемый контроллер будет иметь малое число периферийных ИС, а обмен с ними будет идти преимущественно по последовательным интерфейсам. Здесь на первый план выйдут вопросы согласования по нагрузочной спо- собности параллельных портов МК и отладка алгоритмов обмена по пос- ледовательным каналам. 6.1.3. Разработка и отладка программного обеспечения Содержание этапов разработки программного обеспечения, его транс- ляции и отладки на моделях существенно зависит от используемых сис- темных средств. В настоящее время ресурсы 8-разрядных МК достаточны для поддержки программирования на языках высокого уровня. Это по- зволяет использовать все преимущества структурного программирования, разрабатывать программное обеспечение с использованием раздельно транслируемых модулей. Одновременно продолжают широко использо- ваться языки низкого уровня типа ассемблера, особенно при необходи- мости обеспечения контролируемых интервалов времени. Задачи предва- рительной обработки данных часто требуют использования вычислений с плавающей точкой, трансцендентных функций. В настоящее время самым мощным средством разработки программ- ного обеспечения для МК являются интегрированные среды разработки, имеющие в своем составе менеджер проектов, текстовый редактор и си- мулятор, а также допускающие подключение компиляторов языков высо- кого уровня типа Паскаль или Си. При этом необходимо иметь в виду, что архитектура многих 8-разрядных МК вследствие малого количества ре- сурсов, страничного распределения памяти, неудобной индексной адре- 234
Лекция 110собенности разработки цифровых устройств на основе микроконтроллеров сации и некоторых других архитектурных ограничений не обеспечивает компилятору возможности генерировать эффективный код. Для обхода этих ограничений разработчики ряда компиляторов вынуждены были пе- рекладывать на пользователя заботу об оптимизации кода программы. Для проверки и отладки программного обеспечения используются так называемые программные симуляторы, предоставляющие пользователю возможность выполнять разработанную программу на программно-ло- гической модели МК. Программные симуляторы распространяются, как правило, бесплатно и сконфигурированы сразу на несколько МК одного семейства. Выбор конкретного типа МК среди моделей семейства обес- печивает соответствующая опция меню конфигурации симулятора. При этом моделируется работа ЦП, всех портов ввода/вывода, прерываний и другой периферии. Карта памяти моделируемого МК загружается в симулятор автоматически, отладка ведется в символьных обозначениях регистров. Загрузив программу в симулятор, пользователь имеет возможность за- пускать ее в пошаговом или непрерывном режимах, задавать условные или безусловные точки останова, контролировать и свободно модифициро- вать содержимое ячеек памяти и регистров симулируемого МК. 6.1.4. Методы и средства совместной отладки аппаратных и программных средств Этап совместной отладки аппаратных и программных средств в реаль- ном масштабе времени является самым трудоемким и требует использо- вания инструментальных средств отладки. К числу основных инструмен- тальных средств отладки относятся: • внутрисхемные эмуляторы; • платы развития (оценочные платы); • мониторы отладки; • эмуляторы ПЗУ. Внутрисхемный эмулятор — программно-аппаратное средство, способ- ное заменить эмулируемый МК в реальной схеме. Стыковка внутрисхем- ного эмулятора с отлаживаемой системой производится при помощи ка- беля со специальной эмуляционной головкой, которая вставляется вместо МК в отлаживаемую систему. Если МК нельзя удалить из отлаживаемой системы, то использование эмулятора возможно, только если этот мик- роконтроллер имеет отладочный режим, при котором все его выводы на- ходятся в третьем состоянии. В этом случае для подключения эмулятора используют специальный адаптер-клипсу, который подключается непос- редственно к выводам эмулируемого МК. Внутрисхемный эмулятор — это наиболее мощное и универсальное от- 235
Глава 6 Проектирование устройств на микроконтроллерах ладочное средство, которое делает процесс функционирования отлажи- ваемого контроллера прозрачным, т.е. легко контролируемым, произвольно управляемым и модифицируемым. Платы развития, или, как принято их называть в зарубежной литера- туре, оценочные платы (Evaluation Boards), являются своего рода конст- рукторами для макетирования электронных устройств. Обычно это печат- ная плата с установленным на ней МК и всей необходимой ему стандартной периферией. На этой плате также устанавливают схемы связи с внешним компьютером. Как правило, там же имеется свободное поле для монтажа прикладных схем пользователя. Иногда предусмотрена уже готовая разводка для установки дополнительных устройств, рекомендуемых фирмой. Например, ПЗУ, ОЗУ, ЖКИ-дисплей, клавиатура, АЦП и др.. Кроме учебных или макетных целей, такие доработанные пользователем платы можно использовать в качестве одноплатных контроллеров, встраиваемых в малосерийную продукцию. Для большего удобства платы развития комплектуются еще и простей- шим средством отладки на базе монитора отладки. Используются два типа мониторов отладки: один для МК, имеющих внешнюю шину, а второй — для МК, не имеющих внешней шины. В первом случае отладочный монитор поставляется в виде микросхемы ПЗУ, которая вставляется в специальную розетку на плате развития. Плата также имеет ОЗУ для программ пользователя и канал связи с внешним компьютером или терминалом. Во втором случае плата развития имеет встроенные схемы программирования внутреннего ПЗУ МК, которые уп- равляются от внешнего компьютера. При этом программа монитора про- сто заносится в ПЗУ МК совместно с прикладными кодами пользователя. Прикладная программа должна быть специально подготовлена: в нужные места необходимо вставить вызовы отладочных подпрограмм монитора. Затем осуществляется пробный прогон. Чтобы внести в программу исправ- ления, пользователю надо стереть ПЗУ и произвести повторную запись. Готовую прикладную программу получают из отлаженной путем удале- ния всех вызовов мониторных функций и самого монитора отладки. Возможности отладки, предоставляемые комплектом «плата развития плюс монитор», не столь универсальны, как возможности внутрисхемного эмулятора, да и некоторая часть ресурсов МК в процессе отладки отбирает- ся для работы монитора. Тем не менее, наличие набора готовых программ- но-аппаратных средств, позволяющих без потери времени приступить к монтажу и отладке проектируемой системы, во многих случаях является ре- шающим фактором. Особенно если учесть, что стоимость такого комплекта несколько меньше, чем стоимость более универсального эмулятора. Эмулятор ПЗУ — программно-аппаратное средство, позволяющее за- 236
Лекция 11 Особенности разработки цифровых устройств на основе микроконтроллеров мещать ПЗУ на отлаживаемой плате, и подставляющее вместо него ОЗУ, в которое может быть загружена программа с компьютера через один из стандартных каналов связи. Это устройство позволяет пользователю избежать многократных циклов перепрограммирования ПЗУ. Эмулятор ПЗУ нужен только для МК, которые могут обращаться к внешней памяти программ. Это устройство сравнимо по сложности и по стоимости с платами развития и имеет одно большое достоинство: универсальность. Эмулятор ПЗУ может работать с любыми типами МК. Эмулируемая память доступна для просмотра и модификации, но кон- троль над внутренними управляющими регистрами МК был до недавнего времени невозможен. В последнее время появились модели интеллектуальных эмуляторов ПЗУ, которые позволяют «заглядывать» внутрь МК на плате пользователя. Интеллектуальные эмуляторы представляют собой гибрид из обычного эмулятора ПЗУ, монитора отладки и схем быстрого переключения шины с одного на другой. Это создает эффект, как если бы монитор отладки был установлен на плате пользователя и при этом он не занимает у МК ника- ких аппаратных ресурсов, кроме небольшой зоны программных шагов, примерно 4К. Этап совместной отладки аппаратных и программных средств в реаль- ном масштабе времени завершается, когда аппаратура и программное обес- печение совместно обеспечивают выполнение всех шагов алгоритма рабо- ты системы. В конце этапа отлаженная программа заносится с помощью программатора в энергонезависимую память МК, и проверяется работа кон- троллера без эмулятора. При этом используются лабораторные источники питания. Часть внешних источников сигналов может моделироваться. Этап интеграции разработанного контроллера в изделие заключается в повторении работ по совместной отладке аппаратуры и управляющей программы, но при работе в составе изделия, питании от штатного источника и с информацией от штатных источников сигналов и датчиков. Состав и объем испытаний разработанного и изготовленного контрол- лера зависит от условий его эксплуатации и определяется соответствую- щими нормативными документами. Проведение испытаний таких функ- ционально сложных изделий, как современные контроллеры, может потребовать разработки специализированных средств контроля состоя- ния изделия во время испытаний.
Лекция 110собенности разработки цифровых устройств на основе микроконтроллдрвв Вариант 1 1. Какая сфера применения является наиболее типичной для цифровых устройств на микроконтроллерах? □ обработка данных эксперимента □ решение задач математического моделирования □ задачи управления объектами □ распознавание образов 2. Что такое «программный симулятор»? □ программа, заменяющая МК в составе устройства □ средство для исполнения разработанной программы на программно-логической модели МК □ программа для оптимизации размещения данных в памяти МК □ программа, подменяющая внутреннее ЗУ программ МК 3. Какую функцию выполняет «монитор» на плате развития? □ устройство для контроля напряжения питания МК □ простейшее средство отладки □ устройство для контроля температуры корпуса МК □ средство для крепления платы развития в устройстве 239
Глава 6 Проектирование устройств на микроконтроллерах Вариант 2 1. Что включает в себя понятие «работе в реальном масштабе времени»? □ максимально достижимое на данный момент быстродействие □ обеспечение реакции на внешние события в течение определенного интервала времени □ возможность выдачи сигналов строго определенной длительности □ включение и выключение устройства по сигналам точного времени 2. Что такое «внутрисхемный эмулятор»? □ программа для контроля состояния внутренних регистров МК □ аппаратное устройство для реализации пошагового режима работы МК □ программно-аппаратное средство для замены МК в реальной схеме □ программа, подменяющая внутреннее ЗУ программ МК 3. Что такое «эмулятор ПЗУ»? □ устройство для расширения объема внешней памяти МК □ устройство для «вскрытия» содержимого памяти программ МК □ схема для сопряжения МК с внешней памятью программ □ программно-аппаратное средство для замещения ПЗУ 240
Лекция 110собенности разработки цифровых устройств на основе Вариант 3 1. Что включает в себя понятие «закрытая архитектура» микроконтроллера? □ невозможность доступа к памяти программ МК □ невозможность доступа к памяти данных МК □ отсутствие возможности изменения тактовой частоты МК □ реализация большинства функций устройства внутренними средствами 2. Что такое «плата развития»? □ конструктор для макетирования электронных устройств □ устройство для увеличения тактовой частоты МК □ схема для сопряжения МК с внешними устройствами □ плата, выставленная на пробную продажу 3. Что такое «виртуальное» периферийное устройство МК? □ периферийный модуль, поставляемый только на заказ □ периферийный модуль, реализованный программными средствами □ периферийный модуль, находящийся в стадии разработки □ периферийный модуль с изменяемыми режимами работы 16—ЧЮО 241
Лекция 12 Разработка программного обеспечения для Р1С-микроконтроллеров Лекция 12. Разработка программного обеспечения для Р1С-микроконтроллеров В этой лекции рассматриваются основные этапы разработки программ- ного обеспечения микроконтроллеров, а также приводится обзор ос- новных программ для разработки и отладки программного обеспечения Р1С-микроконтроллеров. Ключевые слова: разработка, программное обеспечение, ассемблер, си- мулятор. 6.2. Разработка программного обеспечения для PIC-микроконтроллеров Разработка программного обеспечения является центральным момен- том общего процесса проектирования. Центр тяжести функциональных свойств современных цифровых систем находится именно в программ- ных средствах. Основным инструментом для профессиональной разработки про- грамм является ассемблер, предполагающий детализацию на уровне ко- манд МК. Только ассемблер позволяет максимально использовать ре- сурсы кристалла. Для микроконтроллеров PIC выпущено большое количество различ- ных средств разработки. В данной главе речь пойдет о средствах, предос- тавляемых фирмой Microchip, которые весьма эффективны и широко ис- пользуются на практике. 6.2.1. Ассемблер MPASM Ассемблер MPASM представляет собой интегрированную программ- ную среду для разработки программных кодов PIC микроконтроллеров всех семейств. Выпускается фирмой Microchip в двух вариантах: для работы под DOS и для работы под Windows 95/98/NT. Ассемблер MPASM может использоваться как самостоятельно, так и в составе интегрированной среды разработки MPLAB. Он включает несколько программ: собственно MPASM, MPLINK и MPLIB, причем каждая из них обладает собствен- ным интерфейсом. Программа MPASM может использоваться для двух целей: • генерации исполняемого (абсолютного) кода, предназначенного для записи вМКс помощью программатора; 16* 243
Глава 6 Проектирование устройств на микроконтроллерах • генерации перемещаемого объектного кода, который затем будет свя- зан с другими ассемблированными или компилированными моду- лями. Исполняемый код является для MPASM выходным кодом по умолча- нию. При этом все переменные источника должны быть явно описаны в тексте программы или в файле, подключаемом с помощью директивы INCLUDE <filename>. Если при ассемблировании не выявляется оши- бок, то генерируется выходной .hex-файл, который может быть загружен в МК с помощью программатора. При использовании ассемблера MPASM в режиме генерации переме- щаемого объектного кода формируются объектные модули, которые мо- гут быть впоследствии объединены с другими модулями при помощи ком- поновщика MPLINK. Программа-компоновщик MPLINK преобразует перемещаемые объектные коды в исполняемый бинарный код, привязан- ный к абсолютным адресам МК. Библиотечная утилита MPLIB позволяет для удобства работы сгруппировать перемещаемые объекты в один файл или библиотеку. Эти библиотеки могут быть связаны компоновщиком MPLINK в файл выходного объектного кода ассемблера MPASM. Программы MPASM и MPLINK доступны через оболочку MPASM, тог- да как MPLIB доступна только со своей командной строки. Исходным файлом для ассемблера MPASM по умолчанию является файл с расширением .ASM. Текст исходного файла должен соответствовать требованиям синтаксиса, приведенным далее. Ассемблер MPASM может быть вызван командной строкой MPASM [/<Option>[ /<Option>...]] <file_name> где /<Option> означает выбор режима работы ассемблера в командной строке; <file_name> — имя файла на ассемблирование. Режимы работы ассемблера, выбранные по умолчанию, приведены в табл. 6.1. Выбор Значение по умолчанию Описание ? N/A Вызвать помощь а INHX8M Генерировать абсолютный .COD и hex выход непосредственно из ассемблера: Табл. 6.1. Режимы работы ассемблера по умолчанию. 244
Лекция 12 Разработка программного обеспечения для PIC-микроконтроллеров Выбор Значение по умолчанию Описание с On Выбрать/запретить случай чувствитель- ности е On Выбрать/запретить файл ошибок h N/A Отобразить панель помощи MPASM 1 On Выбрать/запретить файл листинга, генерированный из макроассемблера. ш On Вызвать/запретить макрорасширение о N/A Установить путь для объектных файлов /o<path>\object.file Р None Установить тип процессора: /p<processor_type> q Off Разрешить/Запретить скрытый режим (запретить вывод на экран) г Hex Определяет тип числа по умолчанию: /r<radix> W 0 Определяет уровень диагностических сообщений в файле листинга /w<level>, где <level> может быть: 0 — сообщать все, 1 — сообщать о предупреждениях и ошибках, 2 — сообщать только об ошибках. X Off Разрешить/запретить перекрестные ссылки в файле листинга. Табл. 6.1. Режимы работы ассемблера по умолчанию (продолжение). Здесь и далее используются следующие соглашения по использованию символов: [ ] — для аргументов по выбору; < > — для выделения специальных ключей <ТАВ>, <ESC> или допол- нительного выбора; | — для взаимоисключающих аргументов (выбор ИЛИ); строчные символы — для обозначения типа данных. 245
Глава 6 Проектирование устройств на микроконтроллерах Выбор по умолчанию, приведенный в табл. 6.1, может быть изменен командной строкой: /<option> разрешает выбор; /<option>+ разрешает выбор; /<option> - запрещает выбор. Исходный ассемблерный файл создается с использованием любого ASCII текстового редактора. Каждая линия исходного файла может со-, держать до четырех типов информации: • метки (labels) • мнемоника (mnemonics) • операнды (operands) • комментарий (comments) Порядок и положение каждого типа имеет значение. Метка должна начинаться в колонке номер один. Мнемоника может начинаться в ко- лонке два или далее. Операнды идут за мнемоникой. Комментарий мо- жет следовать за операндом, мнемоникой или меткой или может начи- наться в любом столбце, если в качестве первого не пустого символа используется * или ;. Максимальная длина строки 255 символов. Один или несколько пробелов должны отделять метку и мнемонику или мнемонику и операнд(ы). Операнды могут отделяться запятой. Например: List р=16С54, г=НЕХ ORG 0x1 FF ; Вектор сброса GOTO START ; Возврат на начало ORG 0x000 ‘.Адрес начала исполнения программы START MOVLW ОхОА .Выполнение программы PIC МК MOVLW ОхОВ ; GOTO START выполнять всегда END Метки В поле метки размещается символическое имя ячейки памяти, в кото- рой Хранится отмеченный операнд. Все метки должны начинаться в ко- лонке 1. За ними может следовать двоеточие (:), пробел, табуляция или конец строки. Комментарий может также начинаться в колонке 1, если используется одно из обозначений комментария. Метка может начинаться с символа или нижнего тире (_) и содержать буквенные символы, числа, нижние тире и знак вопроса. Длина метки мо- жет быть до 32 символов. 246
Лекция 12 Разработка программного обеспечения для Р1С-микроконтроллеров Мнемоники Мнемоники представляют собой мнемонические обозначения коман- ды, которые непосредственно транслируются в машинный код. Мнемо- ники ассемблерных инструкций, директивы ассемблера и макровызовы должны начинаться, по крайней мере, в колонке 2. Если есть метка на той же линии, она должна быть отделена от этой метки двоеточием или одним или более пробелами или табуляцией. Операнды В этом поле определяются операнды (или операнд), участвующие в опера- ции. Операнды должны быть отделены от мнемоники одним или более пробе- лами или табуляцией. Операнды отделяются друг от друга запятыми. Если опе- рация требует фиксированного номера (числа) или операндов, то все на линии после операндов игнорируется. Комментарии разрешаются в конце линии. Если мнемоники позволяют использовать различное число операндов, конец списка операндов определяется концом строки или комментарием. Выражения используются в поле операнда и могут содержать константы, символы или любые комбинации констант и символов, разделенных арифме- тическими операторами. Перед каждой константой или символом может сто- ять + или —, что указывает на положительное или отрицательное выражение. В ассемблере MPASM используются следующие форматы выражений: • текстовая строка; • числовые константы и Radix; • арифметические операторы и приоритеты; • High / Low операторы. Текстовая строка — это последовательность любых допустимых ASCII символов (в десятичном диапазоне от 0 до 127), заключенная в двойные кавычки. Строка может иметь любую длину в пределах 132 колонок. При отсутствии ограничения строки она считается до конца линии. Если строка используется как буквенный операнд, она должна иметь длину в один символ, иначе будет ошибка. Числовая константа представляет собой число, выраженное в некоторой системе счисления. Перед константой может стоять + или —. Промежуточные величины в константах рассматриваются как 32-разрядные целые без знака. MPASM поддерживает следующие системы счисления (представления значений или Radix): шестнадцатиричную, десятичную, восьмиричную, двоичную и символьную. По умолчанию принимается шестнадцатирич- ная система. Табл. 6.2 представляет различные системы счисления. Операторы — это арифметические символы, подобные + и —, которые используются при формировании выражений. Каждый оператор имеет свой 247
Глава 6 Проектирование устройств на микроконтроллерах приоритет. В общем случае приоритет устанавливается слева направо, а выражения в скобках оцениваются первыми. В табл. 6.3 приведены обозна- чения, описания и примеры применения основных операторов MPASM. Тип Синтаксис Пример Десятичная О'<цифры>' или .<цифры> D'100' или .100 16-ричная Н*<цифры>' или Ох<цифры> H’9f или 0x9f Восьмиричная О'<цифры>' 0’777' Двоичная В'<цифры>' В’ООПЮОГ Символьная '<Символ>' или А'<символ>’ ИС или А'С’ Табл. 6.2. Системы счисления (Radix). Оператор Описание Пример $ Текущий счетчик команд goto $ + 3 ( левая скобка 1+(d*4) ) правая скобка (lenght + 1 ) * 255 ! операция «НЕ» (логическая инверсия) if! (а - b) дополнение flags = ~ flags - инверсия (двоичное дополнение) — 1 * lenght High выделить старший байт слова movlw high Hasid Low выделить младший байт слова movlw low (Hasid + .251) upper .251) выделить наибольший байт movlw upper (Hasid + слова ♦ Умножение a = c*b Табл. 6.3. Основные арифметические операторы MPASM. 248
Разработка программного обеспечения для PIC-i Лекция 12 W==rr tu-J-'J -i Оператор Описание Пример / Деление а = Ь/с % Модуль lenght = totall % 16 + Сложение Tot_len = lenght *8+1 — Вычитание Entry_Son = ( Tot — 1 ) / 8 « сдвиг влево Vai = flags « 1 » сдвиг вправо Vai = flags » 1 >= больше либо равно if ent >= num > больше if ent > num < меньше if ent < num <= меньше либо равно if ent <= num == равно if ent == num != не равно if ent != num & поразрядное «И» flags = flags & err_bit А поразрядное «ИСКЛЮЧАЮЩЕЕ ИЛИ» flags = flags л err_bit 1 поразрядное «ИЛИ» flags = flags | err_bit && логическое «И» if (len ==512)&&(b== c) II логическое «ИЛИ» if (len ===== 512) || (b == c) = установить равным... entry_index = 0 +4- увеличить на 1 (инкремент) i++ — уменьшить на 1 (декремент) i — Табл. 6.3. Основные арифметические операторы MPASM (продолжение). Операторы high, low и upper используются для получения одного б! из многобайтного значения, соответствующего метке. Применяются 249
Глава 6 Проектирование устройств нв микроконтроллерах управления расчетом точек динамического перехода при чтении таблиц и записи программ. Операторы инкремента и декремента могут применяться к перемен- ной только в качестве единственного оператора в строке. Они не могут быть встроенным фрагментом более сложного выражения. Комментарии Поле комментария может использоваться программистом для тексто- вого или символьного пояснения логической организации программы. Поле комментария полностью игнорируется ассемблером, поэтому в нем можно применять любые символы. Комментарии, которые используются в строке сами по себе, должны начинаться с символа комментария (* или ;). Комментарии в конце строки должны быть отделены от остатка строки одним или более пробелами или табуляцией. Расширения файлов, используемые MPASM и утилитами Существует ряд расширений файлов, применяемых по умолчанию MPASM и связанными утилитами. Назначения таких расширений при- ведены в табл. 6.4. Расширение Назначение .ASM Входной файл ассемблера для MPASM <source_name>.ASM .OBJ Выходной файл перемещаемого объектного кода из MPASM <source_name>.OBJ .LST Выходной файл листинга, генерируемый ассемблером MPASM или MPLINK: <source_name> .LST .ERR Выходной файл ошибок из MPASM: <source_name>.ERR .MAP Выходной файл распределения памяти из MPASM: <source_name>.MAP .HEX Выходной файл объектного кода в шестнадца- тиричном представлении из MPASM: <source_name). HEX Табл. 6.4. Используемые по умолчанию назначения расширений файлов. 250
Лекция 12 Разработка программного обеспечения для Р!С-мик|.оконт,х>лле, е Расширение Назначение .HXL/.HXH Выходной файл объектного кода в шестнадца- тиричном представлении с раздельным пред- ставлением младших и старших 6am:<source name>.HXL, <source_name>.HXH .LIB Библиотечный файл, созданный MPLIB и привязанный компоновщиком MPLINK: <source_name >. LIB LNK Выходной файл компоновщика: <source_name >. LN К .COD Выходной символьный файл или файл отлад- чика. Формируются MPASM или MPLINK: <source_name> .COD Табл. 6.4. Используемые по умолчанию назначения расширений файлов (продолжение). Листинг представляет собой текстовый файл в формате ASCII, кото- рый содержит машинные коды, сгенерированные в соответствии с каж- дой ассемблерной командой, директивой ассемблера или макрокомандой исходного файла. Файл листинга содержит: имя продукта и версии, дату и время, номер страницы вверху каждой страницы. В состав листинга входят также таблица символов и карта использова- ния памяти. В таблице символов перечисляются все символы, которые есть в программе, и где они определены. Карта использования памяти дает гра- фическое представление о расходовании памяти МК. Директивы языка Директивы языка — это ассемблерные команды, которые встречаются в исходном коде, но не транслируются прямо в исполняемые коды. Они используются ассемблером при трактовке мнемоники входного файла, раз- мещении данных и формировании файла листинга. Существует четыре основных типа директив в MPASM: • директивы данных; • директивы листинга; • управляющие директивы; • макро-директивы. 251
Глава 6 Проектирование устройств на микроконтроллерах Директивы данных управляют распределением памяти и обеспечива- ют доступ к символическим обозначениям данных. Директивы листинга управляют листингом файла MPASM и форма- том. Они определяют спецификацию заголовков, генерацию страниц и другие функции управления листингом. Директивы управления позволяют произвести секционирование обыч- ного ассемблерного кода. Макро-директивы управляют исполнением и распределением данных в пределах определений макротела. Ниже приводится описание некоторых директив ассемблера MPASM, используемых в данном учебном пособии. CODE — начало секции объектного кода Синтаксис: [<label>] code [ROM address>] Используется при генерации объектных модулей. Объявляет начало секции программного кода. Если <label> не указана, секция будет названа .code Стартовый адрес устанавливается равным указанному значению или нулю, если адрес не был указан. Пример: RESET code H'OIFF' goto START #DEFINE — определить метку замены текста Синтаксис: #define <name> [<string>] Директива задает строку <string>, замещающую метку <name> всякий раз, когда та будет встречаться в исходном тексте. Символы, которые определены директивой #DEFINE, не могут быть просмотрены симулятором. Используйте вместо этой директивы EQC. Пример: #define length 20 #define control 0x19,7 #define position (X,YZ) (y-(2 * Z +X)). 252
Лекция 110собенности разработки цифровых устройств на основе микроконтроллеров testjabel dw position(1, length, 512) bsf control ; установить в 1 бит 7 в f 19 END - конец программного блока Синтаксис: end Определяет конец программы. После остановки программы таблица символов сбрасывается в файл листинга. Пример: start ; исполняемый код end ; конец программы EQU - определить ассемблерную константу Синтаксис: <label> equ <ехрг> Здесь <ехрг> — это правильное MPASM выражение. Значение выраже- ния присваивается метке <label>. Пример: four equ 4 ; присваивает численное значение метке four INCLUDE — включить дополнительный файл источника Синтаксис: include «includejile» include "<include_file>" Определяемый файл считывается как источник кода. По окончании включаемого файла будет продолжаться ассемблирование исходника. До- пускается до шести уровней вложенности. <include_file> может быть зак- лючен в кавычки или угловые скобки. Если указан полный путь к файлу, то поиск будет происходить только по этому пути. В противном случае порядок поиска следующий: текущий рабочий каталог, каталог, в котором находится исходник, каталог MPASM. 253
Глава 6 Проектирование устройств на микроконтроллерах Пример: include "c:\sys\sysdefs.inc"; system defs include <addmain.asm> ; register defs LIST — установить параметры листинга Синтаксис: list [<list_option>, , <list_option>] Директива <list> разрешает вывод листинга, если он до этого был зап- рещен. Кроме того, один из параметров листинга может быть изменен для управления процессом ассемблирования в соответствии с табл. 6.5. Параметр Значение по умолчанию Описание С=ппп 80 Количество символов в строке n=nnn 59 Количество строк на странице t=ON|OFF OFF Укорачивать строки листинга p=<type> None Установить тип процессора: PIC16C54, PIC16C84, PIC16F84, Р1С17С42идр. r=<radix> HEX Установить систему счисления по умолчанию: hex, dec, oct. w=<level> 0 Установить уровень сообщений диагностики в файле листинга: 0 — выводить все сообщения; 1 — выводить предупреждения и ошибки; 2 — выводить только ошибки. x=ON|OFF OFF Включить или выключить макрорасширения. Табл. 6.5. Параметры, используемые директивой list. 254
Лекция 12 Разработка программного обеспечения для Р1С-мик|Х>контроллеров NOLIST — выключить выход листинга Синтаксис: NOLIST ORG — установить начальный адрес программы Синтаксис: <label> org <ехрг> Устанавливает начальный адрес программы для последующего кода в соответствии с адресом в <expr>. MPASM выводит перемещаемый объек- тный код, a MPLINK разместит код по определенному адресу. Если метка <label> определена, то ей будет присвоена величина <ехрг>. По умолча- нию начальный адрес имеет нулевое значение. Директива может не ис- пользоваться, если создается объектный модуль. Пример: int_1 org 0x20; Переход по вектору 20 int_2 org int_1+0x10; Переход по вектору 30 PROCESSOR — установить тип процессора Синтаксис: processor <processor_type> Устанавливает тип используемого процессора <processor_type>: [16С54 | 16С55 | 16С56 | 16С57 | 16С71 | 16С84 | 16F84 | 17С42]. Общие процессорные семейства могут быть выбраны как: [16С5Х| 16СХХ| 17СХХ] Для под держания совместимости с новыми изделиями выбирается мак- симум доступной памяти. SET — определить ассемблерную переменную Синтаксис: < label > set <expr> Директива SET функционально эквивалентна директиве EQU, за ис- ключением того, что величина, определяемая SET, может быть изменена директивой SET. 255
Глава 6 Проектирование устройств на микроконтроллерах Пример: area set О widthset 0x12 length set 0x14 area set length * width length set length +1 TITLE — Определить программный заголовок Синтаксис: title "<title_text>" Эта директива устанавливает текст, который используется в верхней линии страницы листинга. <title_text> - это печатная ASCII последователь- ность, заключенная в двойные скобки. Она может быть до 60 символов длиной. Пример title "operational code, rev 5.0" 6.2.2. Компоновщик MPLINK Абсолютный (неперемещаемый) код программы генерируется непос- редственно при ассемблировании и располагается в программной памяти в порядке следования операторов программы. Операторы перехода на мет- ку сразу же заменяются соответствующим кодом перехода на адрес метки. При генерации перемещаемого кода каждая секция программного кода должна предваряться директивой CODE. Окончательное размещение про- граммных кодов, расстановку физических адресов переходов выполняет компоновщик MPLINK. Компоновщик MPLINK выполняет следующие задачи: • распределяет коды и данные, т.е. определяет, в какой части про- граммной памяти будут размещены коды и в какую область ОЗУ будут помещены переменные; • распределяет адреса, т.е. присваивает ссылкам на внешние объекты в объектном файле конкретные физические адреса; • генерирует исполняемый код, т.е. выдает файл в формате .hex, кото- рый может быть записан в память МК; • отслеживает конфликты адресе®, т.е. гарантирует, что программа или дан- ные не будут размещаться в пространстве адресов, которое уже занято; • предоставляет символьную информацию для отладки. 256
Лекция 12 Разработка программного обеспечения для Р1С-микроконтроллеров Для более подробного изучения работы компоновщика следует обра- титься к специальной литературе. 6.2.3. Менеджер библиотек MPLIB Менеджер библиотек позволяет создавать и модифицировать файлы библиотек. Библиотечный файл является коллекцией объектных модулей, которые размещены в одном файле. MPLIB использует объектные модули с именем типа «filename.o» формата COFF (Common Object File Format). Использование библиотечных файлов упрощает компоновку програм- мы, делает ее более структурированной и облегчает ее модификацию. 6.2.4. Симулятор MPSIM Симулятор MPSIM представляет собой симулятор событий, предназ- наченный для отладки программного обеспечения Р1С-контроллеров. MPSIM моделирует все функции контроллера, включая все режимы сбро- са, функции таймера/счетчика, работу сторожевого таймера, режимы SLEEP и Power-down, работу портов ввода/вывода. MPSIM запускается из командной строки DOS, конфигурируется пользователем и непосредственно применяет выходные данные ассемб- лера MPASM. Перед использованием симулятора необходимо отассемблировать ис- ходный файл <file_name>.asm и получить файл объектного кода в форма- те INHX8M, создаваемый MPASM по умолчанию: MPASM <file_name>.asm <RETURN> Чтобы запустить симулятор, необходимо набрать в командной строке MPSIM<RETURN>. Ввд экрана, получаемого при запуске MPSIM, показан на рис. 6.2. Экран разделен на три части, или окна. В верхнем окне показано текущее состояние моделирования, включая моделируемую программу, тип МК, число выпол- ненных командных циклов и затраченное на них время. Среднее окно исполь- зуется для вывода содержимого регистров пользователя. Набор регистров и формат выводимых на экран данных определяются файлом MPSIM.INI, кото- рый далее будет описан подробнее. Нижнее окно содержит приглашение на ввод команд, а также текущие операции и результат их выполнения. При запуске симулятор MPSIM начинает искать командный файл MPSIM.INI. Этот текстовой файл создается пользователем и используется для задания всех задействованных в программе параметров. 17 — 3199 257
Глава 6 Проектирование устройств на микроконтроллерах User4 RADIX=X MPSIM 5.20 16с84 TIME=0.0u 0 ?=Help W: 00 Fl: 00 F2: IFF F3: 0001111 IOA: OF F5: OF %P84 ;Choose Microcontroller number = 84 %SR X hexadecimal ;Set Input/Output radix to %ZR ;Set all registers to 0 %ZT ;Zero elapsed time counter to 0 % RE count ;Reset elapsed time and step %V W,X,2 ;register W %AD F1,X,2 .•register TMRO %AD F2,X,3 ;register PCL %AD F3,B,8 ;register STATUS %AD IOA,X,2 ;Port "A" TRIS register %AD F5,X,2 ;Port "A" register % RS ;Reset %SC 1 %LO user4 Hex code loaded ;Set the clock 1MHz Listing file loaded Symbol table loaded 218960 bytes %_ memory free Рис. 6.2. Ввд рабочего окна симулятора MPSIM. Один из примеров файла MPSIM.INI приведен ниже. ; MPSIM file for user4 Р84 использование МК семейства PIC16С84 SR X представление данных в 16-ричном формате ZR ;сброс регистров МК в нуль ZT ;сброс таймера в нуль RE ;сброс времени выполнения команды и счетчика циклов V W,X,2 ;вывод регистра W в hex формате на два знакоместа AD F1 ,Х,2 ;вывод на экран регистра TMRO в hex формате на два знакоместа AD F2,X,3 ;вывод на экран регистра PCL в hex формате на три знакоместа 258
Лекция 12 Разработка программного обеспечения для PIC-микроконтроллеров AD F3.B.8 ;вывод на экран регистра STATUS в bin формате на восемь знакомест AD ЮА.Х.2 ;вывод на экран регистра TRISA в hex формате на два знакоместа AD F5,X,2 ;вывод на экран регистра порта А в hex формате на два знакоместа SC 1 установка тактовой частоты 1 МГц RS ;сброс МК LO user4 В представленном файле указаны: тип микроконтроллера, система счисления данных по умолчанию, регистры, содержимое которых выводится на экран, способ представления данных, рабочие параметры. Любая команда, которая исполняется MPSIM, может быть задана в файле MPSIM.INI, который определяет начальное состояние программы. При работе MPSIM создает файл MPSIM.JRN, в котором сохраняются все све- дения о нажатии клавиш в процессе работы. В файле MPSIM.INI допускается вводить комментарии, которые да- ются после знака «;», но не допускается использование пустых строк. Основные команды, применяемые в симуляторе MPSIM, приведены в табл. 6.6. Когда эти команды вводятся в сеансе работы с MPSIM, они заносятся в файл MPSIM.JRN, который используется при создании рас- ширенного файла MPSIM.INI. Данный файл можно задействовать для выявления ошибок и обеспечения нормального выполнения программы после исправления кода. Команда Параметр Комментарии АВ — Прерывание текущей сессии AD Reg[, Radix[, Digits]] Вывод содержимого регистра на экран в указанном форма- те и заданной системе счисле- ния X, В или D В [addr] Установка точки останова по текущему или указанному адресу Табл. 6.6. Основные команды симулятора MPSIM. 17* 259
Глава 6 Проектирование устройств на микроконтроллерах Команда Параметр Комментарии С (#breakj Продолжение выполнения программы с пропуском указанного количества следующих точек останова DB — Вывод на экран всех активных точек останова DI [addrl [,addr2]] Вывод на экран фрагмента памяти программ DR — Вывод содержимого всех регистров DW [E|D] Разрешение/запрещение функциони- рования сторожевого таймера Е [addr] Выполнение программы с текущего или указанного адреса F Reg Вывод на экран содержимого регистра и возможность его редактирования пользователем GE filename Получение и выполнение командного файла. Это способ загрузки командно- го файла .INI GO — Запуск МК и начало выполнения программы IP [time|step] Ввод входных воздействий в соответ- ствии со значением параметра step в файле Stimulus LO filename Загрузка в MPSIM файлов .HEX и COD М addr Вывод на экран содержимого памяти программ, начиная с адреса «addr» и возможность его редактирования. Ввод «Q» завершает команду. Табл. 6.6. Основные команды симулятора MPSIM (продолжение). 260
Лекция 12 Разработка программного обеспечения для Р1С-микроконтроллероа Комавда Параметр Комментарии Р device Выбор типа моделируемого МК Q — Выход из MPSIM и запись команд в файл .JRN RE — Сброс времени выполнения и счетчи- ка циклов RS — Сброс моделируемого МК SE pin|port Вывод на экран состояния указанного вывода или порта и возможность его изменения SR O|X|D Установка системы счисления по умолчанию SS [addr] Пошаговое исполнение, начиная с указанного адреса. При отсутствии адреса — исполнение идет с текущего места ST filename Загрузка файла стимуляции W Отображение состояния регистра W с возможностью его модификации ZM addrl ,addr2 Очистка памяти программ с адреса addrl по addr2 ZR — Сброс всех регистров МК ZT — Сброс таймера/счетчика МК Табл. 6.6. Основные команды симулятора MPSIM (продолжение). Для моделирования внешних тестовых событий (воздействий) на моде- лируемый МК используются файлы стимуляции с расширением .STI. Эти файлы используются MPSIM для того, чтобы обеспечить подачу однократ- ных и повторяющихся входных сигналов в процессе выполнения програм- мы. При этом можно наблюдать на экране, как МК реагирует на сигналы. В качестве примера ниже приведен файл для тестирования програм- мы, выполняющей опрос состояния линии 1 порта А. 261
Глава 6 Проектирование устройств на микроконтроллерах ! testl.STl STEP RA1 1 1 !Установка на входе RA1 состояния "1" 200 0 'Поступление на вход RA1 сигнала "0" 1000 1 ’Переход сигнала на входе RA1 в "1" 1200 0 Повторная подача нулевого сигнала Файл воздействия состоит из множества состояний, для которых зада- ется параметр STEP, определяющий число циклов, в течение которых под- держивается указанное состояние. Он позволяет одновременно подавать сигналы на различные выводы МК. В файле воздействия можно указать любой вывод МК, в том числе и вывод сброса (_MCLR). Для обозначения комментариев используется знак!. 6.3. Практика программирования Р1С-микроконтроллеров 6.3.1. Описание лабораторного макета Для того чтобы написать первые учебные программы и проверить их функционирование, желательно иметь относительно несложный макет, содержащий самые распространенные периферийные устройства. Схема подобного макета, используемого при выполнении лабораторных работ студентами, приведена на рис. 6.3. Макет питается от источника стабилизированного напряжения +5В. Тактовая частота МК задается RC-цепью и составляет около 2 МГц. К линии RA0 порта А подключен биполярный транзистор в ключевом режиме, нагруженный на динамик ВА1. Звучание динамика обеспечивается подачей на выход RA0 изменяющегося сигнала в звуковом диапазоне. К линии RA1 порта А подключен светодиод VD2, светящийся при высоком напряжении на выходе. Тумблеры SA1 и SA2, а также кнопки SB1 и SB2 подключены, соответственно, к линиям RA2 и RA3 порта А, а также к линии RA4 порта А и линии RB0 порта В. Исходное состояние кнопок—разомкнутое, что обеспечивает подачу на соответствующие входы МК высокого уровня сигнала. Линии RBI — RB7 порта В обслуживают семисегментный индикатор HL1 с общим анодом. Поэтому свечение сегмента индикатора обеспечи- вается при низком уровне сигнала на соответствующем выходе порта В. Макет также содержит средства программирования и связи с компьюте- ром, которые на схеме не показаны. 262
Лекция 12 Разработка программного обеспечения для Р1С-микроконтролле^>х4 Рис. 6.3. Схема лабораторного макета. 6.3.2. Инициализация микроконтроллера макета Прежде чем переходить к созданию простейших пользовательских про- грамм, необходимо описать используемые в дальнейшем переменные и настроить МК на работу с выбранным макетом. С этой целью мы напи- шем и подробно рассмотрим листинг исходной программы init.asm, в со- став которой будут включаться все остальные программы пользователя. .****************************************************** /листинг исходной программы .****************************************************** LIST Р=16С84, R=HEX директива, определяющая тип процессора и систему счисления ;по умолчанию ****************************************************** ‘описание используемых переменных и назначения адресов *ячеек для хранения переменных пользователя ****************************************************** INTCON EQU OxOB OPTION EQU 0x81 TMRO EQU 0x01 263
Глава 6 Проектирование устройств на микроконтроллерах INTF EQU 1 TOIF EQU 5 PCL EQU 0x02 STATUS EQU 0x03 RPO EQU 5 PORTA EQU 0x05 PORTB EQU 0x06 TRISA EQU 0x05 TRISB EQU 0x06 W EQU 0 F EQU 1 TEMPA EQU OxOC TEMPB EQU OxOD COUNT1 EQU OxOE COUNT2 EQU OxOF COUNT3 EQU 0x10 .***★**********************************★* *f ****** ******* » /определение меток замены текста .****************************************************** #DEFINE Z STATUS,2 ;бит нулевого результата #DEFINE BAI PORTA,0 ;динамик ВА1 #DEFINE VD2 PORTA, 1 ;светодиод VD2 #DEFINE SA1 PORTA, 2 ;тумблер SA1 #DEFINE SA2 PORTA,3 ;тумблер SA2 #DEFINE SB1 PORTA,4 ;кнопка SB1 #DEFINE SB2 PORTB ,0 ; кнопка SB2 #DEFINE HL1_A PORTB, 1 ;индикатор-сегмент А #DEFINE HL1JB PORTB,2 ; индикатор-сегмент В #DEFINE HL1_C PORTB,3 ;индикатор-сегмент С #DEFINE HL1_D PORTB,4 ;индикатор-сегмент D #DEFINE HL1_E PORTB,5 ; индикатор-сегмент Е #DEFINE HL1_F PORTB,6 ;индикатор-сегмент F #DEFINE HL1_G PORTB,7 ;индикатор-сегмент G .****************************************************** /исполняемая программа .******************************************♦*********** ORG 0x000 .•установка начального адреса по ;сбросу GOTO BEGIN ; переход на начало программы ORG 0x005 установка начального адреса размещения программы 264
Лекция 12 Разработка программного обеспечения для Р1С-микроконтроллеров BEGIN CALL INIT_PORTS ;вызов подпрограммы инициализации портов МК .****************★*★************************★********* /программа пользователя ***************************************************** INIT.PORTS подпрограмма инициализации ;портов установка линий портов ;А и В в единичное .•состояние ; переход на банк 1 ;настройка линий RA0 и MOVLW MOVWF MOVWF BSF MOVLW OxFF PORTA PORTB STATUS,RPO 0x1 C MOVWF TRISA ;RA1 порта А на вывод - остальных - на ввод MOVLW 0x01 ;настройка линии RB0 MOVWF TRISB ;порта В на ввод - остальных - на вывод BCF RETURN END STATUS,RPO ; возврат в банк 0 ,-возврат из подпрограммы ;конец программы Рассмотрим работу этой программы. Вначале она указывает ассембле- ру тип используемого МК и систему счисления по умолчанию. Идущие далее ассемблерные директивы EQU определяют ассемблерные констан- ты, используемые в этой и последующих программах. Они позволяют ис- пользовать в тексте программы более удобные мнемонические метки, при- вязанные к структуре конкретного МК, вместо корректных, но более сложных ассемблерных выражений. Указатели ТЕМРА, ТЕМРВ, COUNT1 и COUNT2 назначают адреса ячеек памяти для хранения промежуточных данных (текущих состояний, переменных циклов и т.п.). Ассемблерные директивы #DEFINE задают строку, замещающую со- ответствующую метку, каждый раз, когда та будет встречаться в исходном тексте. В нашем случае эти директивы позволяют использовать символи- ческие имена, привязанные к схеме макета, вместо физических адресов соответствующих разрядов портов и регистров. При этом необходимо иметь в виду, что символы, которые определены директивой #DEFINE, не могут быть просмотрены симулятором. Поэтому для просмотра 265
Глава 6 Проектирование устройств на микроконтроллерах необходимо использовать физические адреса портов и регистров. Директива ORG 0x00 устанавливает стартовый адрес программного кода равным 0, т.е. соответствующим начальному состоянию счетчика команд МК после сброса. Команда GOTO BEGIN вместе с ассемблерной директивой ORG 0x005 и меткой BEGIN обеспечивают переход на адрес памяти программ 0x005, начиная с которого и размещается основная часть программы. Это необходимо для того, чтобы обойти адрес 0x004, исполь- зуемый в качестве вектора прерывания, и тем самым зарезервировать его для возможных будущих применений. Затем с помощью команды CALL INIT_PORTS производится вызов подпрограммы инициализации портов. Вначале подпрограмма иници- ализации устанавливает в высокое (единичное) состояние выходные триггеры данных. Эта операция рекомендуется разработчиком МК для того, чтобы исключить неопределенность в состояниях регистров пор- тов. Затем командой BSF STATUS, RP0 производится переключение на банк 1 памяти данных, где расположены регистры управления направ- лением передачи информации TRISA и TRISB. С помощью команд MOVLW 0х1С и MOVWF TRISA линии RA0 и RA1 порта А настраива- ются на вывод, а остальные - на ввод. Команды MOVLW 0x01 и MOVWF TRISB настраивают линию RB0 порта В на ввод, а остальные - на вы- вод. С помощью команды BCF STATUS,RP0 производится возврат в банк 0, где располагаются необходимые для работы программы регистры и порты. Поскольку в процессе работы с макетом перенастройка портов не про- изводится, и введенных переменных достаточно для работы всех рассмат- риваемых учебных задач, они будут далее рассматриваться включенными по умолчанию в состав исходной программы init.asm. При написании учеб- ных задач будет по возможности использоваться метод структурного про- граммирования, при котором прикладная программа строится из некото- рого набора программных модулей, каждый из которых реализует определенную процедуру обработки данных. При этом каждый из про- граммных модулей имеет только одну точку входа и одну точку выхода. Введенные однажды программные модули могут использоваться под сво- им именем в других прикладных программах. 6.3.3. Программирование учебных задач Начнем программирование учебных задач с написания программы, ко- торая считывает состояние кнопки SB1 и выводит его на светодиодный индикатор VD2 так, что не нажатому состоянию кнопки (высокому уров- ню сигнала на входе RA4) соответствует светящееся состояние светодиода, и наоборот. 266
Лекция 12 Разработка программного обеспечения для Р1С-микроконтроллеров ;основная программа LOOP CLRWDT ;сброс сторожевого таймера CALL CALL GOTO GET_RA ;вызов подпрограммы GET_RA SB1VD2 ;вызов подпрограммы SB1_VD2 LOOP ;переход к метке LOOP для повторения процесса GET_RA состояния MOVF MOVWF RETURN подпрограмма чтения ; порта А PORTA,W ;чтение состояния порта А в W ТЕМРА ;пересылка W в ТЕМРА ;возврат из подпрограммы SB1_VD2 подпрограмма вывода на светодиод ;VD2 состояния кнопки SB1 (разряда 4 ;регистра ТЕМРА) BTFSS ТЕМРА.4 пропустить команду, если GOTO BSF РО ;ТЕМРА,4=1 (кнопка не нажата) РО ; перейти на РО VD2 ;зажечь светодиод VD2 BTFSC ТЕМРА.4 пропустить команду, если GOTO BCF Р1 RETURN ;ТЕМРА,4=0 (кнопка нажата) Р1 ;перейти на Р1 VD2 ; погасить светодиод Основная программа содержит замкнутый цикл LOOP — GOTO LOOP, необходимый для периодического повторения цикла контроля состояния кнопки и вывода его на индикатор. Команда CLRWDT исключает влия- ние возможного сброса по переполнению сторожевого таймера на работу программы. Две следующие команды осуществляют вызов подпрограмм GETRA и SB1_VD2. Первая из них (GET_RA) вначале считывает теку- щее состояние порта А, которое помещается в рабочий регистр W. По- скольку рабочий регистр может потребоваться при исполнении других команд, его состояние записывается в регистр ТЕМ РА, используемый
Глава 6 Проектирование устройств на микроконтроллерах здесь для временного хранения состояния порта А. Таким образом, после возврата из подпрограммы GETRA в разряде 4 регистра ТЕМ РА содержится информация о состоянии кнопки SB1: «1» — не нажата, «О» — нажата. Подпрограмма SB1_VD2 анализирует состояние разряда 4 регистра ТЕМ РА и, в зависимости от него, зажигает или гасит светодиод. В системе команд МК PIC16F84 нет команд условного перехода, поэтому для орга- низации проверки того или иного условия используются команды, позво- ляющие пропустить выполнение следующей команды программы, в за- висимости от состояния определенного бита в заданном регистре (BTFSS и BTFSC). В частности, команда BTFSS TEMP,4 пропускает исполнение команды GOTO РО, если TEMP,4 = 1 (кнопка не нажата). Тем самым реа- лизуется команда BSF VD2, которая зажигает светодиод VD2. Затем ана- лизируется условие TEMP,4 = 0 (кнопка нажата) и, если оно имеет место, светодиод гасится. Возможна более простая реализация заданного алгоритма, поскольку нажатое состояние кнопки исключает не нажатое (и наоборот), но пред- ставленный вариант более нагляден. Рассмотрим более сложный вариант программы, предусматривающий зажигание светодиода VD2 только при следующем состоянии тумблеров и кнопок макета: SAI = 1, SA2 = 1, SB1 = 1 и SB2 = 0. основная программа LOOP CLRWDT ;сброс сторожевого таймера CALL CALL CALL ZAG_1110 GOTO GET_RA ;вызов подпрограммы GET_RA GET RB ;вызов подпрограммы GET_RB ZAG_1110 ;вызов подпрограммы LOOP ;переход к метке LOOP для повторения процесса GET_RB подпрограмма чтения состояния порта В MOVF MOVWF RETURN PORTB,W ;чтение состояния порта В в W ТЕМРВ ;пересылка W в ТЕМРВ ZAG_1110 ;зажигает светодиод VD2 только при следующем состоянии тумблеров и ;кнопок макета: 268
Лекция 12 Разработка программного обеспечения для PIC-микроконтроллеров ;SA1 = SA2 = SB1 = 1 и SB2 = О BTFSS ТЕМРА,2 пропустить команду, если GOTO Р0 ; ТЕМРА,2=1 BTFSS ТЕМРА,3 пропустить команду, если GOTO Р0 ;ТЕМРА,3=1 BTFSS ТЕМРА,4 пропустить команду, если GOTO Р0 ;ТЕМРА,4=1 BTFSC ТЕМРВ,0 пропустить команду, если GOTO Р0 ;ТЕМРВ,0=0 BSF VD2 ;зажечь светодиод VD2 GOTO Р1 Р0 BCF VD2 погасить светодиод VD2 Р1 RETURN INCLUDE GET_RA.ASM Подпрограммы GET_RA и GET_RB помещают в регистры ТЕМРА и ТЕМРВ текущие состояния портов А и В, соответственно. Подпрограмма ZAG_1110 анализирует состояния разрядов 2,3 и 4 регистра ТЕМРА и раз- ряда 0 регистра ТЕМРВ, и при условии ТЕМРА,2,3,4= 1,1,1 иТЕМРВ,0 = 0, зажигает светодиод VD2. При невыполнении хотя бы одного из этих условий светодиод гасится. Использование директивы INCLUDE GET_PORTA.ASM позволяет включать уже отлаженные модули подпрограмм в текущую программу. Для того чтобы этой возможностью можно было воспользоваться, необходимо сохранять отлаженные модули в виде отдельных ассемблерных файлов. Попробуем теперь использовать семисегментный индикатор для кон- троля состояния тумблеров макета. Вначале напишем программу, которая выводит на индикатор HL семисегментное изображение любого двоич- ного числа от 0Ь до 1111b в шестнадцатиричном представлении. ;основная программа LOOP CLRWDT MOVLWOxOA CALL SEV_SEG SEVEN_SEG MOVWF PORTB ;сброс сторожевого таймера ; пересылка константы 0А в W ;вызов подпрограммы ;пересылка W в PORTB 269
Глава 6 Проектирование устройств на микроконтроллерах GOTO LOOP ; переход к метке LOOP для повторения процесса SEV_SEG ;подпрограмма обслуживания ;семисегментного индикатора ANDLWOxOF ;маскирование 4-х младших разрядов ;W и обнуление 4-х старших ADDWF PCL, F ;сложение W с PCL и пересылка результата в PCL RETLW 0x80 ;возврат из подпрограммы с 80 в W RETLW 0xF2 ;возврат из подпрограммы с F2 в W RETLW 0x48 ;возврат из подпрограммы с 48 в W RETLW 0x60 ; возврат из подпрограммы с 60 в W RETLW 0x32 ; возврат из подпрограммы с 32 в W RETLW 0x25 ; возврат из подпрограммы с 25 в W RETLW 0x04 ; возврат из подпрограммы с 04 в W RETLW OxFO ; возврат из подпрограммы с F0 в W RETLW 0x00 ; возврат из подпрограммы с 00 в W RETLW 0x20 ;возврат из подпрограммы с 20 в W RETLW 0x10 ;возврат из подпрограммы с 10 в W RETLW 0x06 ;возврат из подпрограммы с 06 в W RETLW 0x8C ; возврат из подпрограммы с 8С в W RETLW 0x42 ;возврат из подпрограммы с 42 в W RETLW 0x00 ;возврат из подпрограммы с ОС в W RETLW Ox1C ; возврат из подпрограммы с 1С в W Программа начинает свою работу с пересылки константы ОхОА в рабо- чий регистр W. Затем производится вызов подпрограммы обслуживания семисегментного индикатора SEV_SEG. Работа подпрограммы SEV_SEG начинается с маскирования 4-х младших разрядов W и обнуления 4-х стар- ших. Тем самым из анализа исключаются старшие разряды передаваемого из рабочего регистра W числа. Затем маскированное содержимое регистра W добавляется к текущему состоянию младшего байта счетчика команд PCL, и результат помещается в PCL. Таким образом, производится до- полнительное смещение счетчика команд на величину, которая была пе- редана в рабочем регистре. Например, если было W=0, то содержимое счет- чика команд не изменится, и будет выполнена следующая команда RETLW 0x80, которая вызовет возврат из подпрограммы с записью 0x80 = ВТОООООО' в регистр W. Если, как было в приведенной программе, W=0A, то к содер- жимому PCL будет добавлено число ОхОА, и произойдет дополнительное 270
Лекция 12 Разработка программного обеспечения для PIC-микроконтроллеров смещение на 10 шагов. В результате будет выполнена команда RETLW 0x10, которая вызовет возврат из подпрограммы с записью 0x10 = В'ОООЮОО' в регистр W. После возврата из подпрограммы производится пересылка W в PORTB и отображение его состояния на семисегментном индикаторе HL. В част- ности, если W = 0, то при выводе 1000000b на порт В семисегментный индикатор покажет [J, а при W = А покажет //.Таким образом, может быть отображено любое 4-разрядное двоичное число. Метод прямого управления счетчиком команд, использованный в под- программе SEVJSEG, может применяться для реализации табличной кон- вертации чисел. При этом необходимо иметь в виду, что данный метод не позволяет конвертировать более 256 значений в одной таблице. Кроме того, программа табличной конвертации должна целиком располагаться внутри 256-байтного блока во избежание переполнения младшего байта счетчика команд. Используя подпрограмму SEVSEG, напишем теперь программу, ко- торая читает состояния тумблеров SA1 и SA2 и выводит на индикатор со- ответствующее число. ;основная программа LOOP CLRWDT CALL GET_RA ;сброс сторожевого таймера ;вызов подпрограммы GET.RA RRF ТЕМРА,F ;сдвиг вправо на один разряд RRF ТЕМРА,W ;через перенос ;сдвиг вправо на один разряд ANDLW0x03 CALL SEV_SEG ;через перенос ; маска на два младших разряда ;вызов подпрограммы SEVENSEG MOVWF PORTB ;пересылка W в PORTB GOTO LOOP ;переход к метке LOOP для INCLUDE INCLUDE GET.RA.ASM SEVSEG.ASM повторения процесса Подпрограмма GETRA помещает в регистр ТЕМРА текущее состо- яние порта А. Таким образом, в разрядах 2 и 3 регистра ТЕМРА хранит- ся текущее состояние тумблеров SA1 и SA2. Для того чтобы биты со- стояния тумблеров заняли позиции 0 и 1 регистра ТЕМРА, производится 271
Глава 6 Проектирование устройств на микроконтроллерах два сдвига вправо через перенос, причем результат второго сдвига по- мещается в регистр W. Затем накладывается маска на два младших раз- ряда рабочего регистра и производится вызов подпрограммы SEV_SEG. После выхода из подпрограммы результат подается на порт В и отобра- жается на индикаторе. Рассмотрим теперь программы, работающие в реальном масштабе времени, т.е. выдающие сигналы определенной длительности и частоты следования, либо учитывающие временные параметры входных сигналов. Основным элементом таких программ является подпрограмма формирования временной задержки. Рассмотрим один из возможных вариантов такой подпрограммы с использованием программных методов формирования задержки, т.е. без применения встроенного таймера. ;основная программа MOVLWOxL CALL DELAY DELAY MOVWF COUNT1 LOOPD DECFSZ COUNT1.F GOTO LOOPD RETURN ;пересылка константы H'L’ в W ;вызов подпрограммы DELAY подпрограмма формирования ;задержки времени ;загрузка W в регистр COUNT1 ;декремент COUNT1 повторение цикла H'L' раз ;возврат из подпрограммы Основная программа производит вызов подпрограммы DELAY с некоторой константой L в рабочем регистре W, определяющей число внутренних циклов подпрограммы. Подпрограмма DELAY начинает свою работу с загрузки содержимого рабочего регистра в регистр пользователя COUNT1. Команда DECFSZ COUNT1,F уменьшает на единицу содержимое регистра COUNT 1 и проверяет его на равенство нулю. Нулевое состояние регистра COUNT 1 приводит к выходу из цикла и возврату из подпрограммы. Для исполнения каждого внутреннего цикла требуется три машинных цикла МК (1 цикл на исполнение команды DECFSZ при ненулевом результате и 2 цикла на каждую команду GOTO). Выход из подпрограммы DELAY потребует 4-х циклов (2 цикла на исполнение команды DECFSZ при нулевом результате и 2 цикла на RETURN). Если добавить к этому еще 4 цикла, необходимых для загрузки константы в рабочий 272
Лекция 12 Разработка программного обеспечения для Р1С-микроконтроллеров регистр, вызова подпрограммы и загрузки регистра пользователя COUNT 1, то общее время исполнения подпрограммы DELAY (задержка) составит TD = 4 + 3*(L — 1) + 4 = 5 + 3*L циклов, где L — константа, переданная через рабочий регистр в подпрограмму DELAY. При тактовой частоте fosc = 2МГц время цикла равно tu = 2 мкс, поэто- му при загрузке L = Н'ОО' = .0 максимальный формируемый интервал вре- мени составит 1,55 мс. Такой результат связан с тем, что команда DECFSZ сначала декрементирует содержимое регистра (Н’00' — 1 = H’FF), а затем уже анализирует результат. Минимальный формируемый интервал времени составит при тех же условиях 5 циклов или 10 мкс. Для получения такого интервала необходи- мо перед вызовом подпрограммы DELAY загрузить в рабочий регистр чис- ло 0x01. Для расширения верхней границы формируемых временных интерва- лов, а также с целью повышения удобства работы с подпрограммой, мож- но добавить в цикл LOOPD одну или несколько дополнительных команд, в качестве которых чаще всего используется команда NOP. Для примера рассмотрим подпрограмму формирования задержки времени DELAY C DELAY_C подпрограмма формирования ;задержки времени (вариант С) MOVWF COUNT1 ;загрузка W в регистр COUNT1 LOOPD NOP ;пустая команда DECFSZ COUNT1.F .декремент COUNT1 GOTO LOOPD повторение цикла H'L’ раз RETURN ;возврат из подпрограммы Общее время исполнения подпрограммы DELAY_C, включая ее вы- зов, составит TD = 4 + 4*(L - 1) + 4 = 4 + 4*L циклов. При тактовой частоте fosc = 2МГц и загрузке константы L = H’F9’ = .249 формируемый интервал времени составит ровно 2 мс. Уменьшение 18 — 3199 273
Главаб Проектирование устройств на микроконтроллерах константы на единицу уменьшает формируемый временной интервал на 8 мкс. В частности, при L = .124 образуется задержка в 1 мс. Для формирования больших задержек времени, лежащих в диапазоне долей и единиц секунд, такой подход неудобен. В этом случае использу- ются вложенные циклы, как показано в следующем примере. ;основная программа MOVLWOxL CALL DELAY_D DELAY.D (вариант D) MOVWF COUNT2 CLRF COUNT1 COUNT1 LOOPD DECFSZ COUNT1.F GOTO LOOPD CLRWDT DECFSZ COUNT2.F GOTO LOOPD RETURN ;пересылка константы H'L’ в W ; вызов подпрограммы DELAY_D подпрограмма формирования ;болыцой задержки времени ;загрузка W в регистр COUNT2 ;сброс содержимого регистра ;декремент COUNT1 повторение цикла 256 раз ;сброс сторожевого таймера ;декремент COUNT2 ;повторение цикла H'L' раз ;возврат из подпрограммы Время исполнения внутреннего цикла подпрограммы DELAY D со- ставляет 3*256 + 4 машинных циклов МК, поэтому общая задержка со- ставит TD = 5 + (3*256 + 4)*L циклов. При тактовой частоте fosc = 2МГц время цикла равно tu = 2 мкс, поэто- му при загрузке L = Н'ОО' = .0 максимальный формируемый интервал вре- мени составит около 0,4 с. Поскольку формируемый интервал времени достаточно велик, во вне- шний цикл включена команда сброса сторожевого таймера. Интервал времени 0,4 с не совсем удобен для получения задержек вре- мени, кратных секунде, поэтому рассмотрим еще один вариант подпрог- раммы формирования больших задержек времени с дополнительной ко- мандой NOP во внутреннем цикле. 274
Лекция 12 Разработка программного обеспечения для PIC-микроконт^оллеров DELAY_E (вариант Е) MOVWF CLRF COUNT1 LOOPD NOP DECFSZ GOTO CLRWDT DECFSZ GOTO RETURN -.подпрограмма формирования ;большой задержки времени COUNT2 ;загрузка W в регистр COUNT2 COUNT 1 ;сброс содержимого регистра ;пустая команда COUNT1.F ;декремент COUNT1 LOOPD повторение цикла 256 раз ;сброс сторожевого таймера COUNT2.F ;декремент COUNT2 LOOPD .-повторение цикла H’L’ раз ;возврат из подпрограммы Время исполнения внутреннего цикла подпрограммы DELAY_E со- ставляет 4*256 + 4 машинных циклов МК, поэтому общая задержка составит TD = 5 + (4*256 + 4)*L циклов. При тактовой частоте fosc = 2МГц и при загрузке L = H'F3’ = .243 фор- мируемый интервал времени составит около 0,5 с при погрешности не бо- лее 0,2%. Если необходима более высокая точность, можно вставить не- обходимое количество пустых операций во внешний цикл формирования задержки. Рассмотрим далее несколько программ с использованием подпрограмм формирования задержки времени. Начнем с написания программы, ко- торая подает звуковой сигнал на динамик ВА1 при нажатии на кнопку SB 1. Динамик будет звучать только в том случае, если на выход RA0 будет по- дан периодически изменяющийся сигнал. Для того чтобы звук был хоро- шо слышен, его частота должна находиться вблизи максимума слышимо- сти человеческого уха. Выберем частоту звучания равной 1 КГц, что соответствует периоду следования импульсов сигнала 1 мс. ;основная программа LOOP CLRWDT CALL GET_RA ;сброс сторожевого таймера ;вызов подпрограммы 18» 275
Глава 6 Проектирование устройств на микроконтроллерах GET_PORTA CALL GOTO SB1_BA1 LOOP ; вызов подпрограммы SB1_BA1 ;переход к метке LOOP для повторения процесса SB1_BA1 BTFSC ТЕМРА,4 GOTO BO BSF BA1 MOVLWOx3E CALL DELAYC BCF BA1 MOVLWOx3E CALL DELAY_C BO RETURN подпрограмма подачи звука на ;динамик ВА1 при нажатии на ;кнопку SB1 пропустить команду, если ;ТЕМРА,4=0 (кнопка нажата) ;перейти на ВО ;подача высокого уровня на RA0 ; пересылка константы ;H'3E’ = .62bW ;вызов подпрограммы DELAYC ; подача низкого уровня на RA0 ;пересылка константы ;Н'ЗЕ'= .62 в W ;вызов подпрограммы DELAY_C INCLUDE INCLUDE GET_RA.ASM DELAY_C.ASM Как и раньше, подпрограмма GET_RA считывает текущее состояние порта А, которое затем передается в регистр ТЕМРА. Подпрограмма SB1_BA1 анализирует состояние разряда 4 регистра ТЕМРА и, в зависи- мости от результата, озвучивает динамик ВА1 или нет. Необходимая вы- держка линии RA0 в единичном и нулевом состояниях обеспечивается под- программой DELAY_C с параметром L = Н'ЗЕ' = .62. Это соответствует времени задержки около 0,5 мс, что и дает в результате необходимую час- тоту следования сигнала 1 Кгц. Рассмотрим далее программу, которая заставляет мигать светодиод VD2 при нажатии на кнопку SB1. Для того чтобы мигания были хорошо вид- ны, выберем их частоту равной 1 Гц. ;основная программа LOOP CLRWDT ;сброс сторожевого таймера 276
Лекция 12 Разработка программного обеспечения для PIC-микроконтроллеров CALL GET_RA ;вызов подпрограммы GET_RA CALL SB1_VD2M ;вызов подпрограммы ;SB1_VD2M GOTO LOOP ;переход к метке LOOP для повторения процесса SB1_VD2M •.подпрограмма мигания BTFSC ТЕМРА,4 •.светодиода VD2 при нажатии ;на кнопку SB1 пропустить команду, если GOTO VO ;ТЕМРА,4=0 (кнопка нажата) ;перейти на V0 BSF VD2 ;зажечь светодиод VD2 MOVLWOXF3 CALL DELAYE ;пересылка константы ;H'F3" = .243 в W ;вызов подпрограммы DELAY E BCF VD2 •.погасить светодиод MOVLWOxF3 CALL DELAY_E ;пересылка константы ;H’F3’ = .243 в W ; вызов подпрограммы DELAY_E VO BTFSS ТЕМРА,4 •.пропустить команду, если GOTO V1 ;ТЕМРА,4=1 (кнопка не нажата) ;перейти на V1 BCF VD2 ; погасить светодиод V1 RETURN INCLUDE GET_RA.ASM INCLUDE DELAY_E.ASM Программа работает почти так же, как и предыдущая. Первое отличие заключается в том, что светодиод принудительно гасится при не нажатой кнопке. Второе отличие заключается в величине интервала времени, который составляет здесь 0,5 с и формируется подпрограммой DELAY_E. Подпрограммы формирования задержки времени могут быть также по- лезны при работе с такими внешними источниками сигналов, как тумб- леры, кнопки, переключатели и т.п. Дело в том, что все механические ком- мутаторы имеют одно негативное свойство, известное как «дребезг» 277
Глава 6 Проектирование устройств на мик,оконт,»ллерах контактов, которое обусловлено механическими колебаниями контактов при их замыкании и размыкании. Длительность колебаний, составляет обычно несколько миллисекунд, в течение которых на вход МК может поступать пачка импульсов вместо идеального перепада. Аппаратные способы борьбы с «дребезгом» контактов основаны на ис- пользовании RS-триггеров, одновибраторов или триггеров Шмитта. В ус- тройствах на основе МК подавление «дребезга» контактов обычно осуще- ствляется программными способами, которые основаны на повторном считывании состояния линии порта через определенное время. В качестве примера рассмотрим «бездребезговый» вариант подпрограм- мы чтения состояния порта А. GET_RAD подпрограмма чтения состояния ;порта А в регистр ТЕМРА ;с подавлением "дребезжания" DD MOVF PORTA,W ‘.чтение состояния порта А в W ANDLW0x1 С наложение маски Ь'00011100' ;на неиспользуемые биты W MOVWF ТЕМРА ;пересылка Wb ТЕМРА CLRWDT ;сброс сторожевого таймера WDT MOVLWOxOA пересылка константы ;H'0A' = .10bW CALL DELAY_E ;вызов подпрограммы DELAY_E MOVF PORTA,W ;чтение состояния порта А в W ANDLWOxIC ;наложение на W маски Ь'00011100' SUBWF ТЕМРА,W ;вычитание W из ТЕМРА BTFSS Z пропустить команду, если результат ; нулевой GOTO DD ;перейти на метку DD RETURN INCLUDE DELAY_E.ASM Суть работы подпрограммы заключается в повторном чтении состоя- ния порта А спустя некоторое время после предыдущего и сравнении его с прежним значением. Константа Н'ОА' — .10, пересылаемая в регистр W перед вызовом подпрограммы DELAY_E, обеспечивает значение задержки 278
Лекция 12 Разработка программного обеспечения для Р1С-микроконггх>ллеров времени около 20 мс - этого, как правило, достаточно для завершения пе- реходных процессов при переключении механических коммутаторов. Мас- кирование неиспользуемых разрядов порта повышает надежность работы подпрограммы. Сброс сторожевого таймера перед вызовом подпрограм- мы задержки нужен для исключения сброса МК между двумя процедура- ми опроса порта А. Рассмотрим теперь работу программы, которая использует некоторые из разработанных ранее подпрограмм. Пусть целью работы программы яв- ляется подсчет числа нажатий на кнопку SB1 с выводом результата на се- мисегментный индикатор в шестнадцатиричном коде. ;основная программа CLRF COUNTS ;сброс счетчика нажатий LOOP CLRWDT CALL GETRAD ;сброс сторожевого таймера ;вызов подпрограммы GET_RAD BTFSC ТЕМРА,4 ;проверка нажатия SB1 GOTO LOOP ;если не нажата - возврат INCF COUNTS,F ;на метку LOOP ;инкремент счетчика MOVF COUNTS, W ;пересылка содержимого CALL SEVSEG ;счетчика в рабочий регистр ;вызов подпрограммы SEVEN_SEG MOVWF PORTB ; пересылка W в PORTB TEST CALL GETRAD ;вызов подпрограммы GET_RAD BTFSS ТЕМРА,4 проверка нажатия SB1 GOTO TEST ;если еще нажата - возврат GOTO LOOP ;на метку TEST ;возврат на метку LOOP INCLUDE INCLUDE GET_RAD.ASM SEV_SEG.ASM Приведенные в главе программы не охватывают и малой доли возмож- ностей, которые предоставляет даже такой простой макет, как изображен- ный на рис. 6.3. Однако их освоение, надеюсь, будет полезным для начи- нающих пользователей Р1С-контроллеров. 279
Лекция 12 Разработка программного обеспечения для PIC-микроконтроллеров Вариант 1 1. В каком порядке следуют типы информации в вссемблерной строке? □ мнемоника, метки, операнды, комментарий □ метки, мнемоника, операнды, комментарий □ операнды, метки, мнемоника, комментарий □ метки, операнды, мнемоника, комментарий 2. Каквя системе счисления принимается по умолчанию в ассемблере MPASM? □ двоичная □ восьмиричная □ десятичная □ шестнадцатиричная 3. Что определяет директива ORG ассемблера MPASM? □ параметры листинга □ начальный адрес программы □ ассемблерную переменную □ программный заголовок 4. Для чего используется файл инициализации .INI при работе симулятора MPSIM? □ для запуска процесса симуляции МК □ для задания всех используемых в программе параметров □ для моделирования внешних воздействий □ для ограничения времени симуляции 281
Глава 6 Проектирование устройств нв микроконтроллерах Вариант 2 1. Какова максимальная длина ассемблерной строки ассемблера MPASM? □ 80 □ 128 □ 255 □ 512 2. Что определяет директива #DEFINE ассемблера MPASM? - □ систему счисления □ метку замены текста □ тип контроллера □ ассемблерную константу 3. Что использует в своей работе симулятор MPSIM? □ файл листинга программы □ выходной файл ошибок □ выходные данные ассемблера MPASM □ ассемблерный файл 4. Для чего используется файл стимуляции .STI при работе симулятора MPSIM? □ для запуска процесса симуляции МК □ для задания контрольных точек останова при симуляции □ для моделирования внешних воздействий □ для задания скорости исполнения программы 282
Лекция 12 Рвзработка программного обеспечения для Р1С-микроконтроллеров Вариант 3 1. Что такое «текстовая строка» в ассемблере MPASM? □ последовательность любых допустимых ASCII символов, заключенная в двойные кавычки и длиной до 132 колонок □ последовательность любых допустимых ASCII символов, заключенная между тире, длиной в пределах 80 колонок □ последовательность любых допустимых ASCII символов, заключенная между точками с запятой, длиной до 132 колонок □ последовательность любых допустимых ASCII символов, заключенная в двойные кавычки, длиной в пределах 80 колонок 2. Что определяет директива EQU ассемблера MPASM? □ равенство переменных □ метку замены текста □ начальный адрес программы □ ассемблерную константу 3. Что определяет команда Е [addr] симулятора MPSIM? □ выполнение программы с текущего или указанного адреса □ останов исполнения программы по достижении указанного адреса □ просмотр содержимого памяти данных по указанному адресу □ просмотр содержимого памяти программ по указанному адресу 4. На чем основан программный метод подавления «дребезга» контактов при вводе данных в микроконтроллер? □ на увеличении частоты опроса □ на использовании специальных команд подавления «дребезга» □ на блокировании соответствующего порта на время «дребезга» □ на повторном чтении через небольшой интервал времени и сравнении результатов 283
Лекция 13 Архите» . и процессоры персональных компьютеров Глава 7. Организация персонального компьютера Лекция 13. Архитектура и процессоры персональных компьютеров / В этой лекции рассказывается об особенностях архитектуры персональ- ных компьютеров семейства IBM PC, о процессорах, применяемых в персональных компьютерах, об их функциях, характеристиках, эта- пах их эволюции. Ключевые слова: архитектура, системные устройства, распределение памяти, чипсет, кэш, защищенный режим, многозадачный режим. Как уже отмечалось, персональный компьютер представляет собой наи- более развитый вид микропроцессорных систем. На основе персональных компьютеров можно строить самые сложные контрольно-измерительные, управляющие, вычислительные и информационные системы. Имеющие- ся в персональном компьютере аппаратные и программные средства де- лают его универсальным инструментом для самых разных задач. В случае вычислительных и информационных систем персональный компьютер не нуждается в подключении нестандартной аппаратуры, все сводится к подбору или написанию необходимого программного обеспе- чения. В случае же контрольно-измерительных и управляющих систем пер- сональный компьютер оснащается набором инструментов для сопряже- ния с внешними устройствами и соответствующими программными средствами. Во многих случаях строить систему на основе персонального компьютера оказывается гораздо проще, быстрее и даже дешевле, чем про- ектировать ее с нуля на базе какого-то микропроцессора, микропроцес- сорного комплекта или микроконтроллера. Конечно, в большинстве случаев система на основе персонального компьютера оказывается сильно избыточной, это плата за универсаль- ность. Но в то же время один и тот же компьютер может решать самые разнообразные задачи. Например, в системе управления технологичес- кими процессами или научными установками он может математически моделировать происходящие процессы, выдавать в реальном времени уп- 285
Глава? Организация персонального компьютера равляющие сигналы, принимать в реальном времени ответные сигналы, накапливать информацию, обрабатывать ее, обмениваться информацией с другими компьютерами и т.д. Развитый интерфейс пользователя (ви- деомонитор, полноразмерная клавиатура, мышь) делают работу с пер- сональным компьютером комфортной и эффективной. А стоимость пер- сональных-компьютеров вследствие большого объема выпуска постоянно снижается. Поэтому их использование не только удобно, но и экономи- чески выгодно. Но чтобы грамотно и полноценно использовать персональный компь- ютер в составе любых систем, надо иметь представление о его архитектуре, об основных принципах построения, об устройствах, входящих в его со- став, наконец, о внешних интерфейсах. 7.1. Архитектура персонального компьютера Персональный компьютер типа IBM PC имеет довольно традицион- ную архитектуру микропроцессорной системы и содержит все обычные функциональные узлы: процессор, постоянную и оперативную память, ус- тройства ввода/вывода, системную шину, источник питания (рис.7.1). Ос- новные особенности архитектуры персональных компьютеров сводятся к принципам компоновки аппаратуры, а также к выбранному набору сис- темных аппаратных средств. Рис. 7.1. Архитектура персонального компьютера типа IBM PC. 286
Лекция 13 Архитектура и процессоры персональных компьютеров Функции основных узлов компьютера следующие: • Центральный процессор — это микропроцессор со всеми необходи- мыми вспомогательными микросхемами, включая внешнюю кэш- память и контроллер системной шины. (О кэш-памяти подробнее будет рассказано в следующих разделах). В большинстве случаев именно центральный процессор осуществляет обмен по системной шине. • Оперативная память может занимать почти все адресуемое простран- ство памяти процессора. Однако чаще всего ее объем гораздо мень- ше. В современных персональных компьютерах стандартный объем системной памяти составляет, как правило, от 64 до 512 Мбайт. Опе- ративная память компьютера выполняется на микросхемах динами- ческой памяти и поэтому требует регенерации. • Постоянная память (ROM BIOS — Base Input/Output System) имеет не- большой объем (до 64 Кбайт), содержит программу начального запус- ка, описание конфигурации системы, а также драйверы (программы нижнего уровня) для взаимодействия с системными устройствами. • Контроллер прерываний преобразует аппаратные прерывания систем- ной магистрали в аппаратные прерывания процессора и задает ад- реса векторов прерывания. Все режимы функционирования контрол- лера прерываний задаются программно процессором перед началом работы. • Контроллер прямого доступа к памяти принимает запрос на ПДП из системной магистрали, передает его процессору, а после предостав- ления процессором магистрали производит пересылку данных меж- ду памятью и устройством ввода/вывода. Все режимы функциони- рования контроллера ПДП задаются программно процессором перед началом работы. Использование встроенных в компьютер контрол- леров прерываний и ПДП позволяет существенно упростить аппа- ратуру применяемых плат расширения. • Контроллер регенерации осуществляет периодическое обновление информации в динамической оперативной памяти путем проведе- ния по шине специальных циклов регенерации. На время циклов регенерации он становится хозяином (задатчиком) шины. • Перестановщик байтов данных помогает производить обмен данны- ми между 16-разрядным и 8-разрядным устройствами, пересылать целые слова или отдельные байты. • Часы реального времени и таймер-счетчик — это устройства для внут- реннего контроля времени и даты, а также для программной выдер- жки временных интервалов, программного задания частоты и т.д. • Системные устройства ввода/вывода — это те устройства, которые не- 287
Глава 7 Организация персонального компьютера обходимы для работы компьютера и взаимодействия со стандарт- ными внешними устройствами по параллельному и последователь- ному интерфейсам. Они могут быть выполнены на материнской пла- те, а могут располагаться на платах расширения. • Платы расширения устанавливаются в слоты (разъемы) системной магистрали и могут содержать оперативную память и устройства вво- да/вывода. Они могут обмениваться данными с другими устройства- ми на шине в режиме программного обмена, в режиме прерываний и в режиме ПДП. Предусмотрена также возможность захвата шины, то есть полного отключения от шины всех системных устройств на некоторое время. Важная особенность подобной архитектуры — ее открытость, то есть возможность включения в компьютер дополнительных устройств, причем как системных устройств, так и разнообразных плат расширения. Откры- тость предполагает также возможность простого встраивания программ пользователя на любом уровне программного обеспечения компьютера. Первый компьютер семейства, получивший широкое распространение, IBM PC XT, был выполнен на базе оригинальной системной магистрали PC XT-Bus. В дальнейшем (начиная с IBM PC АТ) она была доработана до магистрали, ставшей стандартной и получившей название ISA (Industry Standard Architecture). До недавнего времени ISA оставалась основой ком- пьютера. Однако, начиная с появления процессоров i486 (в 1989 году), она перестала удовлетворять требованиям производительности, и ее стали дуб- лировать более быстрыми шинами: VLB (VESA Local Bus) и PCI (Peripheral Component Interconnect bus) или заменять совместимой c ISA магистралью EISA (Enhanced ISA). Постепенно шина PCI вытеснила конкурентов и ста- ла фактическим стандартом, а начиная с 1999 года в новых компьютерах рекомендуется полностью отказываться от магистрали ISA, оставляя только PCI. Правда, при этом приходится отказываться от применения плат рас- ширения, разработанных за долгие годы для подключения к магистрали ISA. Другое направление совершенствования архитектуры персонального компьютера связано с максимальным ускорением обмена информацией с системной памятью. Именно из системной памяти компьютер читает все исполняемые команды, и в системной же памяти он хранит данные. То есть больше всего обращений процессор совершает именно к памяти. Ускорение обмена с памятью приводит к существенному ускорению работы всей системы в целом. Но при использовании для обмена с памятью системной магистрали приходится учитывать скоростные ограничения магистрали. Системная магистраль должна обеспечивать сопряжение с большим числом устройств, поэтому она должна иметь 288
Лекция 13 Архитектура и процессоры персональных компьютеров довольно большую протяженность; она требует применения входных и выходных буферов для согласования с линиями магистрали. Циклы обмена по системной магистрали сложны, и ускорять их нельзя. В результате существенного ускорения обмена процессора с памятью по магистрали добиться невозможно. Разработчиками был предложен следующий подход. Системная память подключается не к системной магистрали, а к специальной высокоскоро- стной шине, находящейся «ближе» к процессору, не требующей сложных буферов и больших расстояний. В таком случае обмен с памятью идет с максимально возможной для данного процессора скоростью, и системная магистраль не замедляет его. Особенно актуальным это становится с рос- том быстродействия процессора (сейчас тактовые частоты процессоров персональных компьютеров достигают 1—3 ГГц). Таким образом, структура персонального компьютера из одношинной, применявшейся только в первых компьютерах, становится трехшинной (рис. 7.2). Рис. 7.2. Организация связей в случае трехшинной структуры. Назначение шин следующее: • к локальной шине подключаются центральный процессор и кэш- память (быстрая буферная память); • к шине памяти подключается оперативная и постоянная память ком- пьютера, а также контроллер системной шины; • к системной шине (магистрали) подключаются все остальные уст- ройства компьютера. Все три шины имеют адресные линии, линии данных и управляющие сигналы. Но состав и назначение линий этих шин не совпадают между собой, хотя они и выполняют одинаковые функции. С точки зрения про- 19 — 3199 289
Глава 7 Организация персонального компьютера цессора, системная шина (магистраль) в системе всего одна, по ней он получает данные и команды и передает данные как в память, так и в уст- ройства ввода/вывода. Временные задержки между системной памятью и процессором в дан- ном случае минимальны, так как локальная шина и шина памяти соеди- нены только простейшими быстродействующими буферами. Еще меньше задержки между процессором и кэш-памятью, подключаемой непосред- ственно к локальной шине процессора и служащей для ускорения обмена процессора с системной памятью. Если в компьютере применяются две системные шины, например, ISA и PCI, то каждая из них имеет свой собственный контроллер шины, и ра- ботают они параллельно, не влияя друг на друга. Тогда получается уже четырехшинная, а иногда и пятишинная структура. Пример такой струк- туры компьютера приведен на рис. 7.3. Шина AGP Шина PCI Рис. 7.3. Пример многошинной структуры. В наиболее распространенных настольных компьютерах класса Desk- top в качестве конструктивной основы используется системная или мате- ринская плата (motherboard), на которой располагаются все основные си- стемные узлы компьютера, а также несколько разъемов (слотов) системной шины для подключения дочерних плат — плат расширения (интерфейс- ных модулей, контроллеров, адаптеров). Как правило, современные сис- темные платы допускают замену процессора, выбор его тактовой частоты, замену и наращивание оперативной памяти, выбор режимов работы дру- гих узлов. 290
Лекция 13 Архитектура и процессоры персональных компьютеров На системной плате сейчас обычно располагаются также основные средства внешнего интерфейса, служащие для присоединения как встро- енных устройств (например, дисковых носителей), так и внешних устройств компьютера (например, клавиатуры, мыши, принтера, сканера, модема). Для подключения видеомонитора, как правило, используется специальная плата расширения (контроллер дисплея), вставляемая в один из слотов. Это позволяет заменять ее более мощной при необходимости установки нового монитора. Отметим, что для получающих все более широкое распространение пор- тативных персональных компьютеров класса ноутбуков (notebook) при- меняются несколько иные конструктивные решения. В частности, в них отсутствуют слоты расширения системной шины, а практически все узлы компьютера выполняются на одной плате. Но мы в основном будем гово- рить о компьютерах типа desktop (настольных), так как именно они наи- более приспособлены для построения сложных систем, допускают доволь- но простую модернизацию (upgrade) и настройку на конкретные нужды пользователя. 7.2. Процессоры персональных компьютеров Несмотря на то, что первый персональный компьютер был выпущен фирмой Apple, сейчас персональными компьютерами называют в основ- ном IBM PC-совместимые компьютеры. Это связано, прежде всего, с тем, что фирма IBM выбрала правильную рыночную политику: она не скрыва- ла принципов устройства своих компьютеров и не патентовала основных решений. В результате многие производители стали выпускать совмес- тимые компьютеры, и они быстро стали фактическим стандартом. Из-за большого объема выпуска персональные компьютеры начали быстро де- шеветь. К тому же для IBM-совместимых персональных компьютеров стали разрабатывать множество программных средств, что еще больше спо- собствовало их распространению. Поэтому, несмотря на некоторые су- щественные архитектурные недостатки, IBM-совместимые персональные компьютеры сейчас уверенно занимают первое место на рынке. С самого начала фирма IBM ориентировалась на процессоры Intel. У этих процессоров были очень мощные конкуренты, например, процессо- ры фирм Motorola или Zilog, превосходившие процессоры Intel по многим параметрам, но именно благодаря персональным компьютерам процес- соры Intel смогли выйти победителями в конкурентной борьбе. К тому же еще некоторые фирмы (например, AMD, VIA, Cyrix) выпускают Intel- совместимые процессоры. Поэтому мы рассмотрим основные особенности процессоров фирмы Intel. Это позволит нам также проследить основные тенденции в развитии процессоров за последние десятилетия. 19* 291
Глава 7 Организация персонального компьютера Свой первый 16-разрядный процессор 18086 фирма Intel выпустила в 1978 году. Он мог адресовать 1 Мбайт памяти (то есть имел 20-разрядную шину адреса), производительность его при тактовой частоте 5 МГц со- ставляла 0,33 MIPS, но вскоре появились процессоры с тактовой частотой 8 и 10 МГц. Чуть позже (через год) была выпущена упрощенная версия процессора 18086 —18088, который отличался только 8-разрядной внешней шиной данных. За счет этого он был медленнее, чем 18086, на 20—60% при той же тактовой частоте, но зато заметно дешевле. Именно на его основе был собран очень популярный персональный компьютер IBM PC XT. 16-разрядный процессор i80286, выпущенный в 1982 году, был ис- пользован в персональных компьютерах IBM PC АТ. Принципиально новым было в нем то, что он мог адресовать до 16 Мбайт памяти и имел помимо реального режима, аналогичного 18086, еще и так называемый защищенный режим, позволяющий более гибко управлять памятью. Производительность этого процессора при тактовой частоте 8 МГц со- ставляла 1,2 MIPS. Важным шагом стало появление в 1985 году полностью 32-разрядного процессора i80386, способного адресовать до 4 Гбайт памяти (32-разряд- ная адресная шина). Он имел еще более развитую систему управления па- мятью MMU (Memory Management Unit). Производительность его при так- товой частоте 16 МГц составляла 6 MIPS. С появлением этого процессора стала бурно развиваться операционная система MS Windows, существенно изменившая процесс работы с компьютерами типа IBM PC. Еще одним принципиальным шагом стало создание в 1989 году про- цессора Intel 486DX, в котором появились встроенный математический сопроцессор, существенно ускоривший выполнение арифметических опе- раций, и внутренняя кэш-память, ускоряющая обмен с оперативной па- мятью. Максимальный объем адресуемой памяти этого процессора — 4 Гбайт. На тактовой частоте 25 МГц производительность была 16,5 MIPS. Начиная с процессора 486, получило распространение так называемое ум- ножение тактовой частоты, то есть внутреннее удвоение и даже учетвере- ние внешней тактовой частоты (обозначается 486DX2, 486DX4). В 1995 году появились первые процессоры Pentium, открывшие новый этап в развитии семейства. Они были 32-разрядными внутри, но имели 64-разрядную внешнюю шину данных. Принципиальным отличием было использование в них так называемой суперскалярной архитектуры, след- ствием чего стало более высокое быстродействие при той же тактовой частоте, что и i486DX. При тактовой частоте 66 МГц производительность процессора достигала 112 MIPS. В 1996 году тактовая частота Pentium была доведена до 200 МГц, а стоимость снизилась настолько, что он стал рядовым процессором персональных компьютеров семейства IBM PC. 292
Лекция 13 Архитектура и процессоры персональных компьютеров В 1997 году Pentium был дополнен технологией ММХ, призванной ус- корять выполнение мультимедийных приложений (обработку изображе- ний и звука). И в этом же году появился процессор Pentium II, который включает в себя технологию М MX и имеет более высокое быстродействие. Возможная тактовая частота достигла 400 МГц. В последние годы появились процессоры Pentium III и Pentium IV, име- ющие еще более развитую архитектуру и тактовую частоту, превышаю- щую 1 ГГц у Pentium III и 3 ГГц у Pentium IV. Таким образом, содружество компании Intel и производителей IBM- совместимых персональных компьютеров успешно продолжается. Другие фирмы, выпускающие процессоры, вряд ли существенно потеснят в бли- жайшие годы Intel. Поэтому рассмотрим чуть подробнее характерные особенности процессоров для персональных компьютеров этой компании. 7.2.1. Особенности процессоров 8086/8088 Описание микропроцессоров фирмы Intel мы начнем с процессоров i8086/8088. Именно заложенные в них архитектурные решения во многом определили архитектуру последующих моделей семейства Intel, поддер- живающих совместимость с более ранними моделями. В том числе и с не- достатками и ограничениями предыдущих моделей. Процессор i8086 имеет совмещенную (мультиплексированную) 20-раз- рядную внешнюю шину адреса/данных. Данные передаются по 16 разря- дам, адрес — по 20 разрядам. Шина управления имеет 16 разрядов (в част- ности, в нее входят строб адреса и стробы обмена с памятью и устройствами ввода/вывода). Среднее время выполнения команды занимает 12 тактов синхронизации, один цикл обмена по внешней шине требует 4 тактов (без учета тактов ожидания, вводимых при асинхронном обмене). У процессо- ра i8088 внешняя шина данных 8-разрядная. Одна из характерных особенностей процессоров i8086/8088 — принцип сегментирования памяти. То есть вся память представляется не в виде не- прерывного пространства, а в виде нескольких кусков — сегментов за- данного размера (по 64 Кбайта), положение которых в пространстве памяти можно программно изменять. Об этом уже говорилось в разделе 3.1.2 (см. рис. 3.5 и 3.6). Процессор 8086/8088 имеет 14 регистров разрядностью по 16 бит. Об их назначении также уже говорилось в разделе 3.2. Для ускорения выборки команд из памяти в процессоре 8086 предус- мотрен внутренний 6-байтный конвейер (в процессоре 8088 — 4-байтный). Конвейер заполняется читаемыми из памяти командами во время выпол- нения предыдущей команды и сбрасывается (считается пустым) при вы- 293
Глава 7 Организация персонального компьютера полнении любой команды перехода (даже если это команда перехода на следующий адрес). Система команд процессора включает в себя 133 команды, поддержи- вающие 24 метода адресации операндов. Такое большое число команд мо- жет рассматриваться как достоинство (можно гибко выбирать команду, оптимально подходящую для каждого конкретного случая), но оно же за- метно усложняет структуру процессора. Каждая команда содержит 1, 2 или 4 байта кода команды, за которыми могут следовать 1, 2 или 4 байта операнда. В процессоре предусмотрены программные и аппаратные прерывания, разделение внешней шины с другими процессорами или с контроллером прямого доступа к памяти, а также возможность подключения математи- ческого сопроцессора 18087, существенно увеличивающего производитель- ность вычислений. При старте процессора (по внешнему сигналу RESET) он переходит в адрес памяти FFFF0 и начинает выполнение программы, которая разме- щается начиная с этого адреса. Процессор может обрабатывать 256 типов прерываний: внешних (ап- паратных), программных и внутренних. Векторы прерываний представ- ляют собой двойное слово (два слова по 16 разрядов), определяющее сег- мент и смещение начального адреса программы обработки прерываний. Для векторов прерываний отведена область памяти с адресами 00000...003FF. Внутренние прерывания вырабатываются при особых си- туациях: • прерывание 0 соответствует переполнению при делении на нуль; • прерывание 1 вырабатывается после каждой команды при установ- ленном флаге трассировки TF в регистре состояния процессора (см. раздел 3.2); • прерывание 4 вырабатывается по специальной команде INTO, если установлен флаг переполнения OF в регистре состояния процессора (это условное прерывание по переполнению). Особое место занимает немаскируемое прерывание NMI (Non-Masked Interrupt), которое вырабатывается при поступлении внешнего сигнала NMI и не зависит от состояния флага разрешения аппаратных прерыва- ний IF. В компьютере оно используется для контроля четности памяти, контроля корректности обмена с памятью и устройствами ввода/вывода, а также для обработки так называемых исключений, то есть особых условий, возникающих в процессе работы. Немаскируемым оно называется имен- но потому, что его нельзя запретить. Важная отличительная особенность процессора — разделение опера- ций обмена с устройствами ввода/вывода и с памятью. Для обмена с ус- 294
Лекция 13 Архитектура и процессоры персональных компьютеров тройствами ввода/вывода используются как отдельные команды ввода и вывода, так и специальные управляющие сигналы на шине управления. Адреса и данные как при обмене с памятью, так и при обмене с устрой- ствами ввода/вывода передаются по одним и тем же шинам. Но если для обмена с памятью используются все 20 разрядов шины адреса (адресуется 1 Мбайт — адреса 00000 ... FFFFF), то в циклах обмена с устройствами ввода/вывода — только 16 разрядов шины адреса (адресуется 64 Кбайта — адреса 00000 ... 0FFFF). Такой подход имеет как свои преимущества (например, упрощение реализации прямого доступа к памяти), так и не- достатки (усложнение системы команд, увеличение количества управ- ляющих сигналов). Микропроцессоры 18086/8088 выполнены в виде интегральной мик- росхемы в 40-выводном корпусе. Отличие в назначении выводов микро- схемы между ними только одно: адрес в процессоре 8088 не мультиплек- сирован с данными (передается по отдельным линиям), а в процессоре 8086 — мультиплексирован. Процессор работает от одного источника питания напряжением +5В и требует внешнего тактирующего сигнала с частотой, определяемой номе- ром модели (от 4,77 МГц до 10 МГц). Специальный управляющий сигнал MN/MX определяет минимальный или максимальный режим работы процессора. В минимальном режиме процессор сам вырабатывает сигналы управления для внешней шины. Этот режим используется для построения простейших систем. Для работы в со- ставе компьютера применяется максимальный режим, при котором сиг- налы управления внешней шиной вырабатываются специальной микро- схемой контроллера шины 18288. 7.2.2. Особенности процессора 80286 Несмотря на то, что процессор 80286 остался 16-разрядным, как и его предшественник 8086, он представлял собой новое поколение процессо- ров, что определило его высокую популярность и обеспечило персональ- ному компьютеру на его основе (IBM PC АТ) довольно долгую жизнь. Этот процессор отличается тем, что он имеет специальные средства для работы в многопользовательских и многозадачных системах. Наиболее существенное отличие от процессора 8086/8088 — это меха- низм управления адресацией памяти, который обеспечивает четырехуров- невую систему защиты и поддержку виртуальной памяти. (Виртуальная память — это внешняя память большого объема, с которой процессор мо- жет взаимодействовать как со своей системной памятью, но с некоторы- ми ограничениями). Специальные средства предусмотрены также для под- держки механизма переключения задач (Task switching). То есть процессор 295
Глава 7 Организация персонального компьютера способен выполнять несколько задач одновременно, переключаясь время от времени между ними. В процессоре 80286 также расширена система команд за счет добавления команд управления защитой и нескольких но- вых команд общего назначения. Процессор 80286 может работать в двух режимах: • Реальный режим (8086 Real Address Mode — режим реальной адреса- ции), полностью совместимый с процессором 8086/8088. В этом ре- жиме возможна адресация только в пределах 1 Мбайта физической памяти. Он используется для обеспечения программной преемствен- ности с процессором 8086/8088. • Защищенный режим (Protected Virtual Address Mode — защищенный режим виртуальной адресации). В этом режиме возможна адресация в пределах 16 Мбайт физической памяти. Такое решение связано с необходимостью построения компьютеров с большим объемом па- мяти, которые обеспечивали бы поддержку более сложных программ. В защищенном режиме система команд включает набор команд 8086, расширенный для обеспечения аппаратной поддержки многозадач- ного режима и виртуальной памяти. Переключение в защищенный режим осуществляется одной ко- мандой (с предварительно подготовленными таблицами дескрипторов, описывающих параметры режима). Естественно, это довольно быстрый процесс. Обратное переключение в реальный режим гораздо сложнее: оно возможно только через аппаратный сброс процессора (по сигналу RESET), что требует гораздо больше времени. В составе компьютера под управлением операционной системы MS DOS процессор 80286 работает в реальном режиме, а защищенный режим используют операционные системы типа UNIX, OS/2, NetWare286, а также операционные системы семейства MS Windows. Подробнее особенности этих режимов будут рассмотрены в следующем разделе. Как и процессор 8086,80286 имеет 16-разрядную внешнюю шину дан- ных и 6-байтный конвейер команд. Однако быстродействие процессора 80286 при тактовой частоте 12,5 МГц примерно в 6 раз выше, чем у 8086 с тактовой частотой 5 МГц. Это достигается за счет усовершенствованной архитектуры и снижения количества тактов на одну команду. Для уско- рения выполнения математических операций предусмотрено подключение к процессору 80286 микросхемы математического сопроцессора 80287. Назначение внутренних регистров процессора 80286 такое же, как у процессора 8086/8088. Но в слове состояния процессора (PSW) добавлены три используемых разряда, и, кроме того, появился еще один внутренний регистр — регистр управления со словом состояния машины 296
Лекция 13 Архитектура и процессоры персональных компьютеров (MSW — Machine State Word), в котором используется только четыре бита (рис. 7.4). 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 NT IOPL OF DF IF TF SF ZF AF PF CF 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 TS EM MP PE Рис. 7.4. Форматы регистров признаков (PSW) и управления (MSW) процессора 80286. Дополнительные биты слова состояния процессора PSW имеют следу- ющее назначение (подробнее о них — в следующем разделе): • 1OPL (Input/Output Privilege Level) — два бита, определяющие уро- вень привилегий ввода/вывода; • NT (Nested Task flag) — флаг вложенной задачи. Регистр MSW управляет режимом процессора. Для изменения его со- держимого и сохранения его в памяти предназначены специальные ко- манды. Назначение его битов следующее: • РЕ (Protection Enable) — разрешение защиты. Установка этого флага переводит процессор в защищенный режим. Но очистка флага не переводит в реальный режим (требуется аппаратный сброс процес- сора). • MP (Monitor Processor extension) — мониторинг внешнего матема- тического сопроцессора. • ЕМ (Processor Extension Emulated) — эмуляция математического со- процессора. • TS (Task Switch) — переключение задач. Как и два предыдущих раз- ряда, этот разряд управляет сопроцессором. Сочетание MP=0 EM=0 TS=0, устанавливаемое по аппаратному сбро- су (по сигналу RESET), обеспечивает совместимость с 8086/8088. Сочета- ние МР=1 ЕМ=0 используется при совместном включении с сопроцессо- ром 80287, а сочетание МР=0 ЕМ=1 применяется в случае программной эмуляции сопроцессора, при которой функции сопроцессора выполня- ются основным процессором, но гораздо медленнее. Остановимся подробнее на организации памяти процессора 80286. 24- разрядная внешняя шина адреса позволяет адресовать 16 Мбайт физичес- кой памяти, но в реальном режиме доступен только 1 Мбайт, начинаю- 297
Глава? Организация персонального компьютера щийся с нулевого адреса (000000...0FFFFF). Так же, как и в 8086, приме- няется сегментация памяти, но управление сегментацией в реальном и защищенном режимах различно. В реальном режиме процессор 80286, в отличие от 8086, имеет средства контроля перехода через границу сегмента. Например, при попытке об- ращения к слову, имеющему смещение FFFF (его старший байт выходит за границу сегмента), или при выполнении команды, все байты которой не умещаются в данном сегменте, процессор вырабатывает специальное прерывание — Segment Overrun Interrupt. В защищенном режиме существуют отличия от 8086, касающиеся оп- ределения сегментов: • Сегментные регистры CS, DS, SS и ES хранят не сами базовые (на- чальные) адреса сегментов, а селекторы, определяющие адреса в па- мяти, по которым хранятся дескрипторы (описатели) сегментов. Об- ласть памяти с дескрипторами называется таблицей дескрипторов. • Каждый дескриптор сегмента содержит базовый адрес сегмента, раз- мер сегмента (от 1 до 64 Кбайт) и его атрибуты. • Базовый адрес сегмента имеет разрядность 24 бит, что и обеспечи- вает адресацию 16 Мбайт физической памяти. • Селекторы, загружаемые в 16-битные сегментные регистры, имеют три поля: RPL (Requested Privilege Level) — запрашиваемый уровень привилегий, TI (Table Indicator) — индикатор использования локаль- ной или глобальной таблицы дескрипторов, INDEX — номер деск- риптора в таблице (формат показан на рис. 7.5). 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 О ---Г--1--Г--1--1---1--1--1--1--1--1---1---------Г-- TI RPL i i i i i i i i i i i i I I I INDEX Рис. 7.5. Формат селектора сегмента процессора 80286. О порядке вычисления адреса памяти в защищенном режиме процес- сора 80286 уже говорилось в разделе 3.1.2 (см. рис.3.7). На сумматор, вы- числяющий физический адрес памяти, подается не содержимое сегмент- ного регистра, а базовый адрес сегмента из таблицы дескрипторов. Дескрипторы хранятся в памяти и занимают по четыре смежных 16- разрядных слова (то есть 8 байт). При загрузке нового значения селектора дескрипторы считываются из памяти и сохраняются во внутренних про- граммно недоступных (и невидимых) регистрах процессора. До смены зна- 298
Лекция 13 Архитектура и процессоры персональных компьютеров чения селектора при обращениях к памяти используются значения деск- рипторов только из этих невидимых регистров (их называют кэш-регист- рами). В защищенном режиме команды ввода/вывода процессора являются привилегированными. Это означает, что они могут выполняться задачами только с определенным уровнем привилегий, определяемых полем IOPL регистра признаков. Несанкционированная попытка выполнения этих ко- манд вызывает прерывание по нарушению защиты. Как и 8086, процессор 80286 может обрабатывать до 256 типов пре- рываний. Прерывания подразделяются на аппаратные (маскируемые или немаскируемые), вызываемые сигналами на входах процессора, про- граммные, вызываемые командой INT, и исключения инструкций. При этом аппаратные и программные прерывания работают точно так же, как в 8086/8088. Исключения инструкций (Instruction Exceptions) или просто исключе- ния случаются при возникновении особых условий при выполнении опе- раций (в 8086 аналогом исключений являлись внутренние прерывания про- цессора). Обработка исключений проводится аналогично обработке прерываний. Каждому номеру прерывания соответствует свой элемент в таблице дес- крипторов прерываний IDT (Interrupt Descriptor Table). В реальном режи- ме эта таблица организована так же, как у 8086/8088, то есть содержит двой- ные слова, определяющие адрес начала процедур обработки прерываний. В защищенном режиме таблица содержит 8-байтные дескрипторы пре- рываний. Ее размер может быть от 32 до 256 дескрипторов, и располагать- ся она может в любом месте памяти. Система команд процессора 80286 включает, помимо полного набо- ра8086, ряд дополнительных команд, например: • сохранение константы в стеке, сохранение в стеке и восстановление из стека всех регистров одной командой; • целочисленное умножение на константу; • сдвиги (включая циклические) на заданное в константе количество шагов; • вход и выход из процедур; • команды управления защитой. Попытка выполнения недействительной команды (или попытка вы- полнения в реальном режиме команды, предназначенной только для за- щищенного режима) вызывает специальное исключение. Процессор 80286 выпускался в 68-выводных корпусах. Внешние шины адреса и данных были разделены. Напряжение питания процессора со- ставляет +5В. 299
Глава 7 Организация персонального компьютера 7.2.3. Особенности процессора 80386 32-разрядный процессор i80386 открыл новый этап в истории микро- процессоров Intel и персональных компьютеров типа IBM PC. Естествен- но, он сохранял полную совместимость со своими 16-разрядными пред- шественниками, чтобы не отказываться от разработанного для них программного обеспечения. Но именно в 80386 преодолено жесткое ог- раничение на длину непрерывного сегмента памяти в 64 Кбайт, что являлось пережитком прошлого и следствием не самых удачных архитектурных решений 8086. В защищенном режиме 80386 длина сегмента может достигать 4 Гбайт, то есть всего объема физически адресуемой памяти. Таким образом, па- мять фактически стала непрерывной. Кроме того, 80386 обеспечивает под- держку виртуальной памяти объемом до 64 Тбайт (1 Тбайт = 1024 Гбайт). Встроенный блок управления памятью поддерживает механизмы сегмен- тации и страничной трансляции адресов (Paging). Обеспечивается четы- рехуровневая система защиты памяти и ввода/вывода, а также переклю- чение задач. Процессор 80386, как и 80286, может работать в двух режимах: • Реальный режим, который полностью совместим с 8086. • Защищенный режим. В этом режиме возможна адресация до 4 Гбайт физической памяти (32 разряда), через которые при использовании механизма страничной адресации может отображаться до 16 Тбайт виртуальной памяти каждой задачи. Переключение между этими двумя режимами в обе стороны, в отличие от 80286, производится достаточно быстро, с помощью простой последо- вательности команд, и аппаратного сброса процессора не требуется. Процессор может оперировать с 8, 16, 32-битными операндами, стро- ками байт, слов и двойных слов, а также с битами, битовыми полями и строками бит. В архитектуру процессора введены средства отладки и тестирования. Разрядность регистров данных (АХ, ВХ, СХ, DX) и адресов (SI, DI, BP, SP) увеличена до 32. При этом в их обозначении появилась при- ставка Е (Extended — расширенный), например, EAX, ESI. Отсутствие приставки в имени означает ссылку на младшие 16 разрядов соответ- ствующего регистра. Регистры данных и адресов объединены в группу регистров общего назначения, которые иногда могут заменять друг дру- га. Это может рассматриваться как отход от идеологии специализации всех регистров. Регистры селекторов оставлены 16-разрядными, но добавлено два но- вых регистра FS и GS для задания дополнительных сегментов данных. Так- же расширен до 32 разрядов регистр-указатель (счетчик) команд EIP. 300
Лекция 13 Архитектура и процессоры персональных компьютеров 32-разрядным стал и регистр флагов EFLAGS. Его биты, определен- ные для 8086 и 80286, остались прежними, но добавлены 6 новых бит (рис. 7.6). Такой же формат используется и в процессорах 80486 и Pentium. 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 О 0 NT IOPL OF DF IF TF SF ZF 0 AF 0 PF 1 CF 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 0 0 0 0 0 0 0 0 0 0 ID VIP VIF AC VM RF Рис. 7.6. Регистр признаков EFLAGS процессора 80386. Регистры сегментов процессора содержат 16-битные указатели (в ре- альном режиме) или селекторы (в защищенном режиме) шести сегмен- тов. С каждым из шести сегментных регистров связаны программно не- доступные регистры дескрипторов, как и в случае 80286. В защищенном режиме в регистры дескрипторов загружается 32-битный базовый адрес сегмента, 32-битный лимит и атрибуты сегментов. Помимо упомянутых регистров в состав процессора входят еще четыре управляющих регистра (CR0, CR1, CR2, CR3), которые хранят признаки состояния процессора, общие для всех задач. В процессоре Pentium к ним добавлен еще и регистр CR4. Кроме того, процессор содержит еще систем- ные адресные регистры для ссылок на сегменты и таблицы в защищенном режиме, регистры отладки и регистры тестирования. Как видим, от модели к модели количество регистров процессора постоянно возрастает. Процессор позволяет выделять в памяти сегменты и страницы. Сег- менты в реальном режиме имеют фиксированный размер, в защищенном — переменный. Страницы, которых не было в предыдущих моделях, пред- ставляют собой области логической памяти размером 4 Кбайт, каждая из которых может отображаться на любую область физической памяти. Если сегменты используются на прикладном уровне, то страницы применяют- ся на системном. Применительно к памяти различают три адресных пространства: ло- гическое, линейное и физическое. О принципах адресации памяти у про- цессора 80386 уже говорилось в разделе 3.1.2 (см. рис. 3.8). Процессор 80386 может использовать режимы 32-битной или 16-бит- ной адресации. Режим 16-битной адресации соответствует режимам про- цессоров 8086 и 80286, при этом в качестве компонентов адреса использу- ются младшие 16 бит соответствующих регистров. Отличие 32-битной адресации отражено в табл. 7.1. 301
Глава 7 Организация персонального компьютера Компонент адресация 16-битная адресация 32-битная Базовый регистр ВХ или ВР Любой 32-битный общего назначения Индексный регистр SI или DI Любой 32-битный общего назначения, кроме ESP Масштаб Нет (всегда 1) 1,2, 4 или 8 Смещение 0, 8 или 16 бит 0, 8 или 32 бита Табл. 7.1. Различия режимов адресации 80386. Так же, как и предшественники, процессор 80386 обрабатывает все виды прерывания: аппаратные (маскируемые и немаскируемые) и про- граммные, которые в данном случае обрабатываются как разновидность исключений, и собственно исключения. Исключения подразделяются на отказы, ловушки и аварийные завершения. • Отказ (Fault) — это исключение, которое обнаруживается и обслу- живается до выполнения команды, вызывающей ошибку. • Ловушка (Ttap) — это исключение, которое обнаруживается и обслу- живается после выполнения команды, вызывающей это исключе- ние. К классу ловушек относятся и программные прерывания. • Аварийное завершение (Abort) — это исключение, которое не позво- ляет точно установить команду, вызвавшую его. Оно используется для сообщения о серьезной ошибке, такой как аппаратная ошибка или повреждение системных таблиц. Каждому номеру прерывания (0...255) или исключения соответствует элемент в таблице дескрипторов прерываний IDT (Interrupt Descriptor Table). В защищенном режиме IDT может иметь размер от 32 до 256 деск- рипторов, каждый из которых состоит из 8 байт. Отличия от предшествующего процессора 80286 в выполнении опера- ций ввода/вывода сводятся к добавлению возможностей обращения к 32- битным портам. Важно отметить, что строковые команды процессора 80386 обеспечивают блочный ввод/вывод с большей скоростью, чем стандарт- ный контроллер прямого доступа к памяти. Процессор выпускался в 100-выводном корпусе. Была предусмотрена возможность подключения внешнего сопроцессора 80387. А теперь остановимся чуть подробнее на защищенном режиме, кото- рый используется на полную мощность именно начиная с 32-разрядных 302
Лекция 13 Архитектура и процессоры персональных компьютеров процессоров, так как процессор 80286 имел существенные ограничения и в большинстве случаев работал все-таки в реальном режиме. Защищенный режим был предложен для обеспечения независимости одновременного выполнения нескольких задач (как системных, так и при- кладных). Для этого предусмотрена защита ресурсов каждой задачи от дей- ствий других задач. Под ресурсами здесь понимается память с данными, программами, системными таблицами, а также используемая задачей ап- паратура. Защита основывается на сегментации памяти, причем, в отли- чие от реального режима, задача не может переопределять положения сво- их сегментов в памяти и использует только сегменты, определенные для нее операционной системой. Сегмент определяется дескриптором сегмен- та, который задает положение сегмента в памяти, его размер (или лимит), назначение и характеристики защиты. Защита с помощью сегментации не позволяет: • использовать сегменты не по назначению, например, трактовать об- ласть данных как область программы; • нарушать права доступа (например, пытаться записывать информа- цию в сегмент, предназначенный только для чтения, или обращать- ся к сегменту, не имея достаточных привилегий); • адресоваться к элементам, выходящим за границу сегмента; • изменять дескрипторы сегментов, не имея достаточных привилегий. Защищенный режим предусматривает средства переключения задач. Состояние каждой задачи (то есть состояние всех регистров процессора) хранится в специальном сегменте состояния задачи, на который указыва- ет селектор в регистре задачи. При переключении задачи достаточно заг- рузить в регистр задачи новый селектор, и состояние предыдущей задачи автоматически сохранится, а в процессор загрузится состояние новой (или ранее прерванной) задачи. Это развитие идеи стека. В защищенном режиме предусматривается иерархическая четыреху- ровневая (уровни 0, 1, 2, 3) система привилегий, предназначенная для управления выполнением привилегированных команд и доступом к дес- крипторам (рис. 7.7). Уровень 0 соответствует неограниченным правам доступа и отводится ядру операционной системы. Уровень 3 дает мини- мальные права и отводится прикладным задачам. Уровни привилегий от- носятся к дескрипторам, селекторам и задачам. Кроме того, в регистре флагов имеется двухбитовое поле привилегий ввода/вывода (см. рис. 7.4 и 7.6), управляющее доступом к командам ввода/вывода и флагом пре- рываний. Механизм виртуальной памяти, используемый в защищенном режи- ме, позволяет любой задаче использовать логическое пространство раз- мером до 64 Тбайт (16К сегментов по 4 Гбайта). Для этого каждый сегмент 303
Глава 7 Организация персонального компьютера в своем дескрипторе имеет специальный бит, указывающий на присутствие данного сегмента в оперативной памяти в текущий момент. Неиспользуе- мый сегмент может быть выгружен из оперативной памяти во внешнюю память (обычно — на диск), о чем делается пометка в его дескрипторе. На освободившееся место из внешней памяти может закачиваться другой сег- мент (это называется свопингом или подкачкой). При обращении задачи к отсутствующему в оперативной памяти сегменту вырабатывается спе- циальное исключение, которое и выполняет свопинг. С точки зрения вы- полняемой программы, виртуальная память ничем не отличается от ре- альной (говорят, что виртуальная память прозрачна), не считая задержки на процесс перекачки информации на диск и с диска. Рис. 7.7. Уровни привилегий 32-разрядных процессоров. Реальное использование системы защиты и виртуальной памяти воз- лагается на операционную систему, которая в идеале должна обеспечивать работоспособность даже в случае некорректного выполнения приклад- ных задач. В памяти существует три типа таблиц дескрипторов: локальная табли- ца дескрипторов LDT, глобальная таблица дескрипторов GDT и таблица дескрипторов прерываний IDT. Каждой таблице соответствует свой ре- 304
Лекция 13 Архитектура и процессоры персональных компьютеров гистр процессора (соответственно, LDTR, GDTR и IDTR), где хранятся дескрипторы сегментов. Глобальная таблица содержит дескрипторы, до- ступные всем задачам, а локальная может быть для каждой задачи своя. Дескрипторы состоят из 8 байтов (как и у 80286). Однако назначение байтов различно. Для примера на рис. 7.8 показаны форматы дескрипторов сег- мента программ и данных процессоров 80286 и 80386. Рис. 7.8. Дескрипторы сегментов программы и данных. Существуют также системные сегменты, предназначенные для хране- ния локальных таблиц дескрипторов и таблиц состояния задач. Их деск- рипторы (тоже 8-байтные) определяют базовый адрес, лимит сегмента, права доступа (чтение, чтение/запись, только исполнение или исполне- ние/чтение) и присутствие сегмента в оперативной памяти. Задачи, дескрипторы и селекторы имеют свои уровни привилегий. Привилегии задач действуют на выполнение команд и использование дескрипторов. Текущий уровень привилегии задач определяется двумя младшими битами регистра CS. Привилегии дескриптора описываются полем DPL (рис. 7.8). DPL определяет наименьший уровень привилегий, с которым возможен доступ к данному дескриптору. Привилегии селектора задаются полем RPL (см. рис. 7.5). Привилегии проверяются при попытках записи в сегментные регистры, а также при выполнении некоторых команд. Таким образом, начиная с процессора 80386, появляются средства об- служивания многозадачного режима. Естественно, процессор не может обрабатывать несколько задач одновременно, выполняя по несколько ко- 20 — 3199 305
Глава 7 Организация персонального компьютера манд сразу. Он только периодически переключается между задачами. Но с точки зрения пользователя получается, что компьютер параллельно ра- ботает с несколькими задачами. 7.2.4. Особенности процессора 486 Процессор 486 является представителем второго поколения 32-раз- рядных процессоров. Он сохраняет основные принципы архитектуры про- цессора 80386, а также обеспечивает полную совместимость со своими предшественниками. Но в то же время он имеет ряд преимуществ. • В процессор введена внутренняя кэш-память 1-го уровня (Internal cache Level 1) размером 8 Кбайт и предусмотрены средства для дву- хуровневого кэширования. • В процессор введен математический сопроцессор (в модели процес- сора 486SX сопроцессор отсутствует). • Повышена производительность обмена по внешней шине — введе- ны так называемые пакетные циклы, передающие одно слово за один такт шины. • В архитектуре процессора применено скоростное RISC-ядро, кото- рое позволяет наиболее часто встречающиеся команды выполнять за один такт. • В структуру введены буферы отложенной записи. • В отдельных моделях предусмотрено внутреннее умножение такто- вой частоты (на 2, 2,5 или 3). Все это обеспечило существенное увеличение быстродействия. А усо- вершенствованный защищенный режим дает некоторые дополнительные возможности. Рассмотрим подробнее принцип действия кэш-памяти. Кэш-память (или просто кэш, от англ. Cache — склад, тайник) пред- назначена для промежуточного хранения информации из системной памяти с целью ускорения доступа к ней. Ускорение достигается за счет использования более быстрой памяти и более быстрого доступа к ней. При этом в кэш-памяти хранится постоянно обновляемая копия некоторой области основной памяти. Необходимость введения кэша связана с тем, что системная память пер- сонального компьютера выполняется на микросхемах динамической па- мяти, которая характеризуется меньшей стоимостью, но и более низким быстродействием, по сравнению со статической памятью. Идея состоит в том, что благодаря введению быстрой буферной, промежуточной стати- ческой памяти можно ускорить обмен с медленной динамической памя- тью. По сути, кэш-память делает то же, что и применявшийся ранее кон- вейер команд, но на более высоком уровне. В кэш-памяти хранится копия 306
Лекция 13 Архитектура и процессоры персональных компьютеров некоторой части системной памяти, и процессор может обмениваться с этой частью памяти гораздо быстрее, чем с системной памятью. Причем в кэш-памяти могут храниться как команды, так и данные. Выигрыш в быстродействии от применения кэша связан с тем, что про- цессор в большинстве случаев обращается к адресам памяти, расположен- ным последовательно, один за другим, или же близко друг к другу. Поэто- му высока вероятность того, что информация из этих адресов памяти окажется внутри небольшой кэш-памяти. Если же процессор обращается к адресу, расположенному далеко от тех, к которым он обращался ранее, кэш оказывается бесполезным и требует перезагрузки, что может даже за- медлить обмен по сравнению со структурой без кэш-памяти. В принципе кэш-память может быть как внутренней (входить в состав процессора), так и внешней. Внутренний кэш называется кэшем первого уровня, внешний — кэшем второго уровня. Объем внутреннего кэша обычно невелик—типовое значение 32 Кбайт. Объем внешнего кэша может достигать нескольких мегабайт. Но принцип функционирования у них один и тот же. Кэш первого уровня процессора 486 имеет четырехканальную струк- туру (рис. 7.9). Каждый канал состоит из 128 строк по 16 байт в каждой. Одноименные строки всех четырех каналов образуют 128 наборов из четырех строк, каждый из которых обслуживает свои адреса памяти. Каждой строке соответствует 21-разрядная информация об адресе скопированного в нее блока системной памяти. Эта информация называется тегом (Tag) строки. 21 бит 16 байт Канал 1 Канал 4 Рис. 7.9. Структура внутреннего кэша процессора 486. Диспетчер Кроме того, в состав кэша входит так называемый диспетчер, то есть об- ласть памяти с организацией 128 х 7, в которой хранятся 4-битные теги дей- 20* 307
Глава 7 Организация персонального компьютера ствительности (достоверности) для каждого из 128 наборов и 3-битные коды LRU (Least Recently Used) для каждого из 128 наборов. Тег действительности набора включает в себя 4 бита достоверности каждой из 4 строк, входящих в данный набор. Бит достоверности, установленный в единицу, говорит о том, что соответствующая строка заполнена; если он сброшен в нуль, то строка пуста. Биты LRU говорятотом, какдавно было обращение к данному набору. Это нужно для того, чтобы обновлять наименее используемые наборы. Адресация кэш-памяти осуществляется с помощью 28 разрядов адреса. Из них 7 младших разрядов выбирают один из 128 наборов, а 21 старший разряд сравнивается с тегами всех 4 строк выбранного набора. Если теги совпадают с разрядами адреса, то получается ситуация кэш-попадания, а если нет, то ситуация кэш-промаха. В случае цикла чтения при кэш-попадании байт или слово читаются из кэш-памяти. При кэш-промахе происходит обновление (перезагрузка) од- ной из строк кэш-памяти. В случае цикла записи при кэш-попадании производится запись как в кэш-память, так и в основную системную память. При кэш-промахе за- пись производится только в системную память, а обновление строки кэш- памяти не производится. Эта строка становится недостоверной (ее бит до- стоверности сбрасывается в нуль). Такая политика записи называется сквозной или прямой записью (Write Through). В более поздних моделях процессоров применяется и обратная запись (Write Back), которая является более быстрой, так как требует го- раздо меньшего числа обращений по внешней шине. При использовании обратной записи в основную память записывае- мая информация отправляется только в том случае, когда нужной строки в кэше нет. В случае же попадания модифицируется только кэш. В основ- ную память измененная информация попадет только при перезаписи но- вой строки в кэш. Прежняя строка при этом целиком переписывается в основную память, и тем самым восстанавливается идентичность содер- жимого кэша и основной памяти. В случае, когда требуемая строка в кэше не представлена (ситуация кэш- промаха), запрос на запись направляется на внешнюю шину, а запрос на чтение обрабатывается несколько сложнее. Если этот запрос относится к кэшируемой области памяти, то выполняется цикл заполнения целой стро- ки кэша (16 байт из памяти переписывается в одну из строк набора, об- служивающего данный адрес). Если затребованные данные не укладываются в одной строке, то заполняется и соседняя строка. Заполнение строки процессор старается выполнить самым быстрым способом — пакетным циклом, однако внешний контроллер памяти может потребовать использования более медленных пересылок. 308
Лекция 13 Архитектура и процессоры персональных компьютеров Внутренний запрос процессора на данные удовлетворяется сразу, как толь- ко данные считываются из памяти, а дальнейшее заполнение строки может идти параллельно с обработкой данных. Если в наборе, который обслужива- ет данный адрес памяти, имеется свободная строка, заполнена будет именно она. Если же свободных строк нет, заполняется строка, к которой дольше всех не обращались. Для этого используются биты LRU, которые модифи- цируются при каждом обращении к строке данного набора. Кроме того, существует возможность аннулирования строк (объявле- ния их недостоверными) и очистки всей кэш-памяти. При сквозной за- писи очистка кэша проводится специальным внешним сигналом процес- сора, программным образом с помощью специальных команд, а также при начальном сбросе — по сигналу RESET При обратной записи очистка кэша подразумевает также выгрузку всех модифицированных строк в основную память. Отметим, что в пространстве памяти персонального компьютера име- ются области, для которых кэширование принципиально недопустимо (например, разделяемая память аппаратурных адаптеров — плат расшире- ния). Режим пакетной передачи (Burst Mode), впервые появившийся в процес- соре 486, предназначен для быстрых операций со строками кэша. Пакет- ный цикл обмена (Burst Cycle) отличается тем, что для пересылки всего пакета адрес по внешней шине адреса передается только один раз — в нача- ле пакета, а затем в каждом следующем такте передаются только данные. Адрес для каждого следующего кода данных вычисляется из начального адреса по правилам, установленным как передатчиком данных, так и их приемником. Например, адрес каждого следующего слова данных вычис- ляется как инкрементированный адрес предыдущего. В результате время передачи одного слова данных значительно сокращается. Понятно, что обмен пакетными циклами возможен только с устройствами, изначально способными обслуживать такой цикл. Допустимая длина пакета не слиш- ком велика, например, при чтении размер пакета ограничен одной стро- кой кэша. Режим внутреннего умножения тактовой частоты процессора был пред- ложен для того, чтобы повысить быстродействие процессора, но при этом устанавливать его в системные платы, рассчитанные на невысокие такто- вые частоты. Например, модель процессора 486DX2-66 работает в систем- ной плате с тактовой частотой 33, но эту частоту внутри себя преобразует в удвоенную частоту — 66 МГц. Это позволяет уменьшить общую стоимость системы, так как снижает требования к элементам системной платы. Процессор 486 выпускался в 168- или 169-выводных корпусах. Напря- жение питания — 5 В или 3,3 В. Введение пониженного напряжения пи- 309
Глава 7 Организация персонального компьютера тания 3,3 В связано с необходимостью снижения величины рассеиваемой мощности. Растущая тактовая частота и усложнение структуры процессо- ров приводят к тому, что рассеиваемая ими мощность достигает несколь- ких ватт. Для современных процессоров уже обязательно применение вен- тиляторов на корпусе процессора. 7.2.5. Особенности процессоров Pentium Процессоры Pentium относятся к пятому поколению процессоров или к третьему поколению 32-разрядных процессоров. По своим основным ар- хитектурным принципам они совместимы с процессорами 386 и 486. Но имеются существенные отличия, позволяющие говорить о новом поколе- нии: • Суперскалярная архитектура процессора, то есть процессор имеет два пятиступенчатых параллельно работающих конвейера обработки информации, благодаря чему он способен одновременно выполнять две команды за один такт. Необходимо отметить, что преимущества такой архитектуры проявляются только в случае специальной ком- пиляции программного обеспечения, позволяющей осуществлять параллельную обработку. • Внешняя 64-разрядная шина данных для повышения производитель- ности. Это требует соответствующей организации памяти. Из-за та- кой особенности процессор иногда неправильно называют 64-раз- рядным (хотя внутри он все-таки остался 32-разрядным). Внешняя шина адреса процессора — 32-разрядная. • Применение технологии динамического предсказания ветвлений (переходов). • Раздельный кэш для команд и данных объемом 8 Кбайт каждый. Дли- на строки кэша — 32 байта. Оба кэша работают в режиме обратной записи. • Повышенная в 2—10 раз по сравнению с процессором 486 произво- дительность встроенного математического сопроцессора. В нем при- менена восьмиступенчатая конвейеризация и специальные блоки сложения, умножения и деления, что позволяет выполнять опера- ции с плавающей точкой за один такт процессора. • Сокращено время (число тактов) выполнения команд. • Предусмотрена возможность построения двухпроцессорных систем. • Введены средства управления энергопотреблением и тестирования. Предсказание ветвлений позволяет продолжать выборку и декодиро- вание потока команд после выборки команды ветвления (перехода), не дожидаясь проверки условия перехода. В прежних моделях в данном слу- 310
Лекция 13 Архитектура и процессоры персональных компьютеров чае приходилось приостанавливать конвейер. Динамическое предсказа- ние основывается на анализе предыдущей программы и накапливании ста- тистики поведения. Исходя из этого анализа предсказывается наиболее вероятное условие каждого встречающегося в программе перехода. В дополнение к базовой архитектуре 32-разрядных процессоров Pentium имеет набор регистров MSR (Model Specific Registers). В него входит группа тестовых регистров (TRI — TR12), средства слежения за производительнос- тью, регистры-фиксаторы адреса и данных цикла, вызвавшего срабатывание контроля машинной ошибки. Название этой группы регистров указывает на их уникальность для каждой модели процессоров Pentium. Средства для слежения за производительностью (мониторинга произ- водительности) включают в себя таймер реального времени и счетчики событий. Таймер представляет собой 64-разрядный счетчик, инкремен- тируемый с каждым тактом процессора. Два счетчика событий имеют раз- рядность по 40 бит и программируются на подсчет событий различных классов, связанных с шинными операциями, исполнением команд, свя- занных с работой кэша, контролем точек останова и т.д. Сравнивая состо- яния таймера и счетчиков событий, можно сделать вывод о производи- тельности процессора. Тестовые регистры позволяют управлять большинством функциональ- ных узлов процессора, обеспечивая возможность подробного тестирова- ния их работоспособности. Специальные биты регистра TR12 позволяют отключить новые архитектурные свойства (предсказание и трассировку ветвлений, параллельное выполнение инструкций), а также работу пер- вичного кэша. Средства для построения двухпроцессорных систем позволяют на од- ной локальной шине устанавливать два процессора с объединением почти всех одноименных выводов. Это дает возможность использовать симмет- ричную мультипроцессорную обработку (SMP — Symmetric Multi- processing) или строить функционально избыточные системы (FRC — Functional Redundancy Checking). В режиме SMP каждый процессор выполняет свою задачу, порученную ему операционной системой, что поддерживается такими системами, как Novell NetWare, Windows NT, Unix. Оба процессора разделяют общие ре- сурсы компьютера, включая память и устройства ввода/вывода. В каждый момент шиной управляет один процессор, по определенным правилам они меняются ролями. В идеальном случае производительность системы уве- личивается вдвое (без учета обращений к шине и времени на переключе- ние процессоров). В конфигурации FRC два процессора выступают как один логический процессор. Основной процессор (Master) работает в обычном однопро- 311
Глава 7 Организация персонального компьютера цессорном режиме. Проверочный процессор (Checker) выполняет все те же операции внутри себя, не управляя внешней шиной, и сравнивает сиг- налы основного процессора с теми, которые генерирует сам. В случае не- совпадения формируется сигнал ошибки, обрабатываемый как прерывание. То есть в данном случае увеличивается надежность системы в целом (в идеале — вдвое). Развитием Pentium стало добавление технологии ММХ, рассчитанной на мультимедийное, графическое и коммуникационное применение. Ос- новная идея ММХ заключается в одновременной обработке нескольких элементов данных за одну команду (SIMD, Single Instruction — Mutiple Data). Расширение MMX использует новые типы упакованных 64-битных данных: • упакованные байты — восемь байт; • упакованные слова — четыре слова; • упакованные двойные слова (два двойных слова); • учетверенное слово (одно слово). Эти типы данных могут обрабатываться в восьми дополнительных 64- разряд ных регистрах ММХО — ММХ7. В систему команд для поддержки ММХ введено 57 дополнительных команд для одновременной обработки нескольких единиц данных (команды пересылки, арифметические, логи- ческие команды и команды преобразования форматов данных). Команды ММХ доступны из любого режима процессора. Кроме того, в процессорах Pentium ММХ увеличен объем кэша данных и программ (до 16 Кбайт каждый), увеличено число ступеней конвейеров и введено еще несколько усовершенствований, повышающих производи- тельность обычных (не мультимедийных) операций. От процессора Pentium Pro принято отсчитывать шестое поколение процессоров. Pentium Pro по сравнению с Pentium имеет следующие усо- вершенствования: • Динамическое исполнение команд предполагает, что команды, не зависящие от результатов предыдущих операций, могут выполнять- ся в измененном порядке (последующие раньше предыдущих), од- нако последовательность обмена с внешними устройствами (памя- тью и устройствами ввода/вывода) будет соответствовать программе. То есть процессор сам выбирает удобный ему порядок выполнения команд. Это позволяет повысить производительность процессора без увеличения тактовой частоты. • Архитектура двойной независимой шины повышает суммарную пропускную способность. Одна шина (системная) служит для об- мена с основной памятью и устройствами ввода/вывода, а другая (локальная) предназначена только для обмена с вторичным кэшем (см. рис. 7.3). 312
Лекция 13 Архитектура и процессоры персональных компьютеров • В процессор введен кэш второго уровня объемом 256—512 Кбайт. • Возможно построение многопроцессорных систем (до четырех мик- ропроцессоров). Процессор Pentium II сочетает в себе архитектуру Pentium Pro с техно- логией ММХ. Размер первичных кэшей данных и команд составляет 16 Кбайт, вто- ричного кэша — до 512 Кбайт. Кэш второго уровня несколько медленнее, чем кэш первого уровня, зато он имеет больший объем. Такая двухуров- невая организация позволяет достигать компромисса между быстродей- ствием кэш-памяти и ее объемом. Шина адреса имеет 36 разрядов (то есть максимально допустимый объем памяти — 64 Гбайта). Процессоры Pentium III и Pentium 4 отличаются значительно возрос- шей предельной тактовой частотой (до 3 ГГц у Pentium 4, а в перспективе и до 5 ГГц), увеличенным объемом кэша (от 512 Кбайт до нескольких ме- габайт) и дальнейшим совершенствованием архитектуры Pentium. Размер внутреннего конвейера у Pentium 4 доведен до 20 ступеней. Уже появились и полностью 64-разрядные процессоры. Правда, полное использование возможностей 64-разрядной архитектуры потребует существенного изменения программного обеспечения. Надо отметить, что в составе персональных компьютеров практически никогда не используются все возможности процессоров семейства Pentium. Например, многопроцессорные системы встречаются достаточно редко, а объем системной памяти лишь иногда превышает 512 Мбайт. Для портативных компьютеров были предложены упрощенные версии процессоров Pentium III и Pentium 4, продаваемые под маркой Celeron. Они отличаются уменьшенной тактовой частотой и сокращенным объемом кэша второго уровня. Их тактовая частота сейчас доходит до 2 ГГц. Надо учитывать, что рассеиваемая мощность процессора Celeron остается практически такой же, как у процессоров Pentium III и Pentium 4.
Лекция 13 Архитектура и процессоры персональных компьютером Вариант 1 1. Какая шина персонального компьютера наиболее быстрая? □ все шины одинаково быстрые □ шина памяти □ локальная шина □ все зависит от конкретной ситуации □ системная шина 2. Какой процессор ПК был первым полностью 32-разрядным? □ 8088 □ 80286 □ 80386 □ 486 □ Pentium 3. Какова основная функция кэш-памяти? □ она дополнительно увеличивает объем системной памяти □ она позволяет использовать защищенный режим □ она обеспечивает многозадачный режим □ она ускоряет обмен процессора с системной памятью □ она ускоряет обмен процессора с устройствами ввода-вывода 315
Глава? Of-ггнизация персонального компьютера Вариант 2 1. К какой шине персонального компьютера подключается больше всего устройств? □ к шине памяти □ к локальной шине □ к шине AGP □ к системной шине □ к каждой шине подключается по одному устройству 2. Какая фирма является основным поставщиком процессоров для персональных компьютеров? □ IBM □ Intel □ Motorola □ Apple □ Toshiba 3. В каких случаях кэш-память малоэффективна? □ когда в исполняемой программе много переходов □ когда в исполняемой программе мало переходов □ когда объем системной памяти компьютера невелик □ когда системная память имеет малое быстродействие □ когда объем системной памяти компьютера очень большой 316
Лекция 13 Архитектура и процессоры персональных компьютеров Вариант 3 1. Что устанавливается на системной плате компьютера? □ основные узлы компьютера и слоты расширения □ системная память и контроллер дисплея □ процессор и некоторые контроллеры □ слоты всех шин и внешние разъемы компьютера □ контроллер дисплея и контроллер локальной сети 2. В каком процессоре впервые появился защищенный режим? □ 8086 □ 80286 □ 80386 □ 486 □ Pentium 3. Какое минимальное число тактов требуется процессору на выполнение команды? □ все зависит от режима работы процессора □ все зависит от напряжения питания процессора □ один такт □ все зависит от места данной команды в программе □ за один такт может выполняться несколько команд 317
Лекция 14 Устройства, входящие в состав персонального компьютера Лекция 14. Устройства, входящие в состав персонального компьютера В этой лекции рассматриваются основные устройства, входящие в со- став персонального компьютера, их функции, принципы их организа- ции, принципы обмена информацией с ними. Ключевые слова: оперативная, постоянная и внешняя память ПК, тактовый генератор, системный таймер, контроллеры прерываний и ПДП. 7.3. Память персонального компьютера Как и в любой другой микропроцессорной системе, память персональ- ного компьютера состоит из двух частей: оперативной памяти и постоян- ной памяти. Обе части расположены в адресном пространстве памяти, к обеим компьютер может обращаться одинаковым образом. Обе памяти допускают обращения к отдельным байтам, 16-разрядным словам (имею- щим четные адреса), к 32-разрядным двойным словам (имеющим адреса, кратные четырем) и к 64-разрядным учетверенным словам (имеющим ад- реса, кратные восьми). Различие только в том, что оперативную память используют для временного хранения программ и данных, а в постоянной памяти хранятся программы начального запуска, начального самотести- рования компьютера, а также набор программ ввода/вывода нижнего уров- ня, то есть то, что не должно теряться при выключении питания компью- тера. Объем оперативной памяти гораздо больше, чем постоянной памяти. 7.3.1. Оперативная память Оперативная память занимает значительную часть адресного простран- ства компьютера. Ее установленный объем и быстродействие оказывают огромное влияние на быстродействие персонального компьютера в целом (порой даже большее, чем скорость процессора). Надежность ее работы во многом определяет надежность всего компьютера. Поэтому всеми раз- работчиками ей уделяется большое внимание. Все персональные компьютеры используют оперативную память дина- мического типа (DRAM — Dynamic Random Access Memory), основным преимуществом которой перед статической оперативной памятью (SRAM — Static RAM) является низкая цена. Это связано с тем, что если элемент 319
Глава 7 Организация персонального компьютера статической памяти (триггер) требует 4—6 транзисторов, то элемент дина- мической памяти — это интегральный конденсатор, для обслуживания которого требуется 1—2 транзистора. Отсюда же следуют два основных не- достатка динамической памяти: она требует регенерации (то есть постоян- ного возобновления заряда на разряжающемся конденсаторе) и имеет в несколько раз меньшее быстродействие по сравнению со статической па- мятью. К тому же во время регенерации динамическая память недоступна для обмена, что также снижает быстродействие компьютера. Отметим, что сейчас обычно применяют встроенную регенерацию, не требующую внеш- него обслуживания, но опять-таки занимающую время. Переход на полностью статическую память слишком сильно повысил бы стоимость компьютера в целом (к тому же необходимый объем опера- тивной памяти компьютера все увеличивается), поэтому статическую па- мять применяют только в самых «узких» местах, там, где без высокой ско- рости не обойтись, например, для кэш-памяти. Что касается динамической памяти, то ее развитие идет по пути снижения времени доступа благодаря структурным и технологическим усовершенствованиям. Например, вто- рое поколение динамической памяти EDO RAM (Extended Data Output RAM) имело быстродействие примерно на 20—25% выше, чем у обычной памяти. Это достигается за счет того, что следующее обращение к памяти возможно еще до завершения предыдущего обращения. Третье поколение динамической памяти — SDRAM (Synchronous DRAM) — еще на столько же быстрее (рабочая частота в настоящее время достигает 133 МГц). Еще более быстродействующая память — DDR SDRAM (частота до 400 МГц) и память RDRAM (частота до 1 ГГц и даже выше). Для упрощения установки оперативной памяти в компьютер ее вы- полняют в виде небольших модулей — печатных плат с ножевым (печатным) разъемом, на которые установлены микросхемы памяти (SIMM — Single In-Line Memory Module). Эти модули устанавливаются в специальные SIMM-разъемы на материнской плате, что позволяет пользователю легко менять объем памяти компьютера, учитывая при этом необходимый уровень быстродействия, сложность решаемых задач и свои финансовые возможности. Широко применяются 72-контактные SIMM-модули разного объема. Отметим, что не рекомендуется одновременно использовать несколько модулей с разным быстродействием: в некоторых компьютерах это приводит к сбоям. В современных компьютерах на базе процессоров Pentium применяются также модули DIMM (Dual In-Line Memory Module — модуль памяти с двусторонними печатными выводами), имеющие 64 бита данных. Модули памяти иногда поддерживают проверку содержимого памяти на четность. Для этого к 8 битам данных каждого адреса памяти добавля- 320
Лекция 14 Устройства, входящие в состав персонального компьютера ется девятый бит четности. Он записывается при каждой записи инфор- мации в соответствующий байт памяти и проверяется при чтении инфор- мации из соответствующего байта памяти. Если обнаруживается несоот- ветствие бита четности байту информации, то вырабатывается сигнал, вызывающий немаскируемое прерывание NMI. Все адресное пространство памяти компьютера разделяется на несколь- ко областей, что связано, в первую очередь, с необходимостью обеспече- ния совместимости с первыми компьютерами семейства. В компьютере IBM PC XT на процессоре i8088 процессор мог адресовать 1 Мбайт памяти (20 адресных разрядов). Но все программные и аппаратные средства стро- ились исходя из предположения, что доступное адресное пространство — только младшие 640 Кбайт (тогда это казалось вполне достаточным). Дан- ная область памяти получила название стандартной памяти (Conventional memory). Именно в пределах этих 640 Кбайт (адреса 0...9FFFF) работает операционная система MS DOS и все ее прикладные программы. Первые 1024 байта (адреса 0...3FF) хранят таблицу векторов прерывания (Interrupt Vectors) объемом 256 двойных слов, формируемую на этапе начальной загрузки. Однако если процессор работает в защищенном режи- ме, таблица векторов может располагаться в любом другом месте памяти. Адреса 400...4FF отводятся под область переменных BIOS (BIOS Data Area). Подробнее о BIOS будет рассказано в следующем разделе. Адреса 500...9FFFF включают в себя область операционной системы DOS (DOS Area) и память пользователя (User RAM). Оставшиеся от 1 Мбайта памяти 384 Кбайта (адреса A0000...FFFFF), зарезервированные под другие системные нужды, называются UMA (Upper Memory Area) — область верхней памяти или UMB (Upper Memory Blocks) — блоки верхней памяти или High DOS Memory. Пространство видеопамяти (адреса A0000...BFFFF) содержит области для хранения текстовой и графической информации видеоадаптера. Пространство памяти с адресами E0000...FFFFF отведено под систем- ную постоянную память компьютера ROM BIOS. В этой же области выделено окно размером в 64 Кбайта (page frame) с адресами D0000...DFFFF, через которое программы могли получать дос- туп к дополнительной (отображаемой) памяти (Expanded memory) объемом до 32 Мбайт, оставаясь в пределах того же 1 Мбайта адресуемой памяти. Это достигается путем поочередного отображения четырех страниц по 16 Кбайт из дополнительной памяти в выделенное окно. При этом положе- ние страниц в дополнительной памяти можно изменять программным путем. Понятно, что работать с дополнительной памятью менее удобно, чем с основной, так как в каждый момент компьютер «видит» только окно в 64 Кбайт. Поэтому сейчас она применяется довольно редко. 21—3199 321
Глава 7 Организация персонального компьютера В настоящее время область памяти с адресами C0000...DFFFF чаще ис- пользуется для оперативной и постоянной памяти, входящей в состав раз- личных адаптеров и плат расширения компьютера. В результате логическая организация адресного пространства в пределах 1 Мбайт получилась довольно сложной (рис. 7.10). И такую же организацию должны поддерживать все персональные компьютеры семейства IBM PC для обеспечения совместимости с предшествующими моделями. 16M/4G 1М Extended- память -100000- ROM BIOS 896 К 832 К 768 К ----0Е0000---- Page Frame ----0D0000---- ROM адаптеров ----0С0000--- 32 М Четыре страницы по 16 Кбайт Видеопамять 640 К Стандартная (conventional) память ОК 0А0000 000000 Expanded- память Рис. 7.10. Распределение адресного пространства памяти. При дальнейшем расширении адресуемого пространства памяти в пос- ледующих моделях компьютеров вся память объемом свыше 1 Мбайт по- лучила название расширенной памяти (Extended memory). Для доступа к ней микропроцессор должен переходить из реального режима в защищенный и обратно. Общий объем памяти персонального компьютера (верхняя граница расширенной памяти) может доходить до 16 Мбайт (24 разряда адреса) или до 4 Гбайт (32 разряда адреса). Особого упоминания заслуживает так называемая теневая память (Shadow RAM), представляющая собой часть оперативной памяти, в ко- торую при запуске компьютера переписывается содержание постоянной памяти, и заменяющая эту постоянную память на время работы компь- 322
Лекция 14 Устройства, входящие в состав персонального компьютера ютера. Необходимость данной процедуры вызвана тем, что даже срав- нительно медленная динамическая оперативная память оказывается все- таки быстрее, чем постоянная память. Постоянная память часто заметно сдерживает быстродействие компьютера. Поэтому было предложено вы- делять часть оперативной памяти для исполнения обязанностей как си- стемной постоянной памяти ROM BIOS, так и постоянной памяти, вхо- дящей в состав дополнительных адаптеров, которые подключаются к компьютеру. Переписывание информации обычно предусмотрено в про- грамме начального пуска. В связи с особенностями работы динамической памяти для сокраще- ния времени доступа к ней применяются специальные режимы работы опе- ративной памяти: режим расслоения (интерливинг) и страничный режим. Использование режима интерливинга предполагает не совсем обычное разбиение памяти на банки (части). Если при обычном разбиении ( пос- ледовательной адресации) адреса следующего банка начинаются после окончания адресов предыдущего, то при интерливинге адреса банков че- редуются. То есть, например, после первого адреса первого банка следует первый адрес второго банка, затем второй адрес первого банка и второй адрес второго банка и т.д. Получается, что в одном банке четные слова, а в другом — нечетные. Таких чередующихся банков может быть не только два, а четыре, восемь, шестнадцать. Объемы банков при этом должны быть одинаковыми. В результате такого подхода появляется возможность на- чинать обращение к следующему слову еще до окончания процесса доступа к предыдущему. Страничный режим предполагает постраничную работу микросхем па- мяти, когда выбор страницы производится один раз на всю страницу, а выбор ячейки внутри страницы может происходить гораздо быстрее. Для поддержки обоих режимов применяются специальные технологические решения. Здесь же отметим, что при замене памяти компьютера или при уста- новке дополнительных банков памяти надо строго следовать рекоменда- циям изготовителей системных плат, так как порядок заполнения банков может быть далеко не очевиден. 7.3.2. Постоянная память Системная постоянная память (ПЗУ) занимает сравнительно неболь- шой объем (обычно 64 Кбайта). Однако ее значение для компьютера очень велико. Само ее название ROM BIOS (ROM Basic Input/Output System) — базовая система ввода/вывода — говорит о том, что в ней находится фун- кционально полный набор программ нижнего уровня для управления ус- тройствами ввода/вывода. Поэтому даже до загрузки в оперативную память 21* 323
Глава 7 Организация персонального компьютера исполняемых программ с диска компьютер имеет возможность обслужи- вать клавиатуру, дисплей, подавать звуковые сигналы, общаться с диска- ми и т.д. Важно отметить, что большинство современных видеоадаптеров, а также контроллеров накопителей имеют собственную систему BIOS, ко- торая дополняет или даже заменяет системную BIOS во время основной работы. Вызов программ BIOS осуществляется через программные или аппаратные прерывания, для чего BIOS формирует соответствующую таб- лицу векторов прерываний. Но этим функции постоянной памяти не ог- раничиваются. В принципе, под память ROM BIOS отведено 128 Кбайт адресного про- странства памяти. В первых компьютерах (IBM PC XT) она занимала всего 8 Кбайт, сейчас обычно занимает 64 Кбайт. Если же нужно использовать системную постоянную память большего объема, то она поочередно ото- бражается на окно системной памяти размером 64 Кбайт (адреса F0000...FFFFF). Это связано со стремлением сэкономить пространство верхней памяти для других целей. При старте компьютера после включения питания, нажатия кнопки на передней панели RESET или после программного перезапуска начи- нает выполняться программа начального запуска, также хранящаяся в постоянной памяти (начальный адрес FFFF0). Эта программа включает в себя: • программу самотестирования компьютера (POST — Power On Self Test); • программу начальной загрузки операционной системы с соответству- ющего дискового накопителя компьютера; • программу задания текущих параметров компьютера (Setup). Кроме программы начального запуска ROM BIOS также обслуживает аппаратные прерывания от системных устройств (таймера, клавиатуры, дисков), а также отрабатывает базовые программные обращения к сис- темным устройствам. Отметим, что в последнее время ROM BIOS выполняется не на микро- схемах собственно постоянной памяти, а на микросхемах, допускающих многократную перезапись информации пользователем EPROM (Erasable Programmable ROM) с электрической перезаписью — типа флэш (flash), что позволяет более гибко настраивать компьютер. Пользователь может легко модернизировать BIOS своего компьютера с помощью программы перезаписи флэш-памяти. При использовании же микросхем ПЗУ с уль- трафиолетовым стиранием для этого требовались специальный програм- матор и стирающее устройство (ультрафиолетовая лампа). Программа самотестирования POST позволяет производить простей- шую диагностику основных узлов компьютера, включая определение пол- 324
Лекция 14 Устройства, входящие в состав персонального компьютера ного объема установленной оперативной памяти. Информация о ее ре- зультатах выводится тремя способами: • сообщениями на дисплее (наиболее наглядно и понятно пользова- телю); • звуковыми сигналами (что очень полезно при неработоспособном дисплее); • выдачей кодов в определенный порт ввода/вывода, обычно это порт с адресом 080 (на этом основаны все диагностические приборы). Сообщения на дисплее могут прямо называть обнаруженную неисп- равность или неисправный блок или же выдавать специальный код ошиб- ки, по которому впоследствии в прилагаемой документации можно найти причину неисправности компьютера. .. 1 " ......................................... ............... Звуковые сигналы Неисправность I короткий Все в порядке 2 коротких Ошибка монитора Нет сигналов Источник питания, системная плата Непрерывный сигнал Источник питания, системная плата Повторяющиеся короткие сигналы Источник питания, системная плата 1 длинный, 1 короткий Системная плата 1 длинный, 2 коротких Адаптер дисплея (MDA, CGA) 1 длинный, 3 коротких Адаптер дисплея (EGA) Табл. 7.2. Звуковые сигналы POST BIOS. Звуковые сигналы не отличаются особым разнообразием, но, тем не менее, позволяют обнаружить и идентифицировать основные ошибки. Для примера в табл. 7.2 приведены звуковые сигналы об ошибках, ис- пользуемые BIOS компании IBM (для BIOS других фирм сигналы могут быть иными). Использование специальных диагностических приборов особенно эф- фективно: по некоторым оценкам, с их помощью можно обнаружить до 95% неисправностей. Однако их применяют только специальные сотруд- ники сервисных служб. 325
Глава 7 Организация персонального компьютера Начиная с компьютеров на процессоре 80286 (IBM PC АТ) постоянная память ROM BIOS обязательно дополняется небольшой энергонезависимой оперативной памятью CMOS RAM, которая выполнена на микросхемах с пониженным энергопотреблением с технологией КМОП (CMOS) и при вык- лючении питания компьютера подпитывается от батарейки или аккумулятора (эта память, как правило, входит в состав других микросхем). В CMOS-памяти хранится информация о текущих показаниях часов (дате и времени), о значении времени для будильника, о конфигурации компьютера: приоритете загрузки с разных накопителей, количестве памяти, типах накопителей, режимах энергопотребления, о типе дисплея, об установках клавиатуры и т.д. CMOS RAM отличается от постоянной памяти тем, что записанная в нее информация легко меняется программным путем. Задавать все параметры компьютера, сохраняемые в CMOS RAM, по- зволяет программа BIOS Setup, вызвать которую можно путем нажатия назначенных клавиш во время процедуры начальной загрузки компьюте- ра (информация об этом всегда выводится на экран). В современных ком- пьютерах данная программа предлагает довольно удобный и наглядный интерфейс пользователя с привычными меню. Описание работы с BIOS Setup любого компьютера обязательно по- ставляется вместе с ним. Иногда с помощью этой программы удается зна- чительно повысить быстродействие компьютера благодаря выбору опти- мальных (или даже предельных) для данной конфигурации параметров: частоты системной шины, количества тактов задержки при обмене с системной памятью и кэш-памятью. Программа Setup позволяет также разрешить или запретить использо- вание теневой (Shadow) памяти как для системного BIOS, так и для BIOS используемых адаптеров (по отдельным сегментам памяти). При исполь- зовании теневой памяти в выбранную область оперативной памяти копи- руется содержимое BIOS ROM, эта область определяется как доступная только для чтения, и производится переадресация памяти. То есть при лю- бых обращениях по адресам ROM чтение данных будет производиться из соответствующих адресов Shadow RAM, а постоянная память уже не ис- пользуется. Такой подход может существенно (иногда в 4 — 5 раз) уско- рить выборку команд для программ обмена с видеоадаптером и с диско- выми накопителями. В программе Setup всегда предусмотрена возможность установки па- раметров компьютера по умолчанию (Default Setting). Это особенно удобно в случае разряда или повреждения батареи или аккумулятора. В новых компьютерах, поддерживающих режим экономии потребляе- мой электроэнергии, можно также задавать переход компьютера в режи- мы Doze (спящий), Standby (ожидания или резервный) и Suspend (приос- 326
Лекция 14 Устройства, входящие в состав персонального компьютер тановки работы) при отсутствии обращений к узлам компьютера в тече- ние заданного времени. Режимы перечислены в порядке снижения по- требления электроэнергии. Компьютеры (а также их системные платы), где применяются такие режимы, называются иногда «зелеными». 7.4. Системные устройства Помимо микропроцессора и системной памяти на системной (мате- ринской) плате располагаются и другие важные модули, обеспечивающие работоспособность компьютера: контроллеры прерываний и прямого до- ступа, тактовый генератор, системный таймер, буферные микросхемы, контроллер шины и т.д. В первых компьютерах семейства все эти функ- ции выполняли отдельные специализированные микросхемы сравнитель- но низкой степени интеграции. В современных компьютерах применя- ются сверхбольшие интегральные схемы, которые, тем не менее, обеспечивают полную программную и аппаратную совместимость с пре- дыдущими моделями. Эти микросхемы называются набором микросхем или chipset (чипсет). Преимущества такого подхода — chipset занимает меньше места на плате, меньшая потребляемая мощность, значительно большая надежность. Компьютеры, выполненные на системных платах с chipset известных фирм, имеют лучшую репутацию. В большинство набо- ров микросхем входит так называемый периферийный контроллер, вклю- чающий два контроллера прерываний, два контроллера прямого доступа к памяти, таймер, часы реального времени, а также CMOS-память. 7.4.1. Тактовый генератор Системный тактовый генератор генерирует сигналы синхронизации для работы микропроцессора, всех контроллеров и системной шины. Для обеспечения высокой стабильности тактовых частот и их независимости от температуры применяются кварцевые резонаторы, то есть кристаллы кварца, имеющие высокостабильную частоту собственных колебаний. Как правило, в состав системной платы входит несколько кварцевых резона- торов, каждый из которых обеспечивает свой тактовый сигнал. Тактовую частоту процессора можно выбирать путем установки перемычек на сис- темной плате. Это позволяет пользователю модернизировать компьютер путем замены процессора на другой, рассчитанный на более высокую так- товую частоту. Иногда удается заставить процессор работать на более вы- сокой тактовой частоте, чем та, на которую он рассчитан, но здесь нужно соблюдать осторожность, так как повышение частоты ведет не только к увеличению потребляемой мощности и перегреву микросхемы, но и к ошибкам и сбоям в работе, причем проявляющихся только в отдельных режимах, например, в многозадачном. 327
Глава 7 Организация персонального компьютера В компьютерах на базе процессоров 486 и Pentium применяется деле- ние опорной тактовой частоты для синхронизации системной шины и внутреннее умножение частоты в процессорах. Например, в процессоре 486DX2-66 используется умножение на два тактовой частоты 33,3 МГц, а в процессорах семейства Pentium применяется умножение на 2,5 (при опорной частоте 60 МГц частота процессора 150 МГц) или на 3 (при опорной частоте 66,6 МГц частота процессора 200 МГц). В общем случае в компьютере существуют следующие тактовые частоты: • Host Bus Clock (CLK2IN) — это опорная частота (внешняя частота шины процессора). Именно из нее могут получаться другие частоты и именно она задается перемычками (джамперами); • CPU Clock (Core Speed) — это внутренняя частота процессора, на которой работает его вычислительное ядро. Может совпадать с Host Bus Clock или получаться из нее умножением на 1,5, 2, 2,5, 3, 4. Ум- ножение должно быть предусмотрено в конструкции процессора. • ISA Bus Clock (ATCLK, BBUSCLK) — это тактовая частота систем- ной шины 18А(сигнал SYSCLK). По стандарту она должна быть близ- ка к 8 МГц, но в BIOS Setup имеется возможность выбрать ее через коэффициент деления частоты Host Bus Clock. Иногда компьютер остается работоспособным и при частоте шины ISA около 20 МГц, но обычно платы расширения ISA разрабатываются из расчета на 8 МГц, и при больших частотах они перестают работать. Не следует рассчитывать, что компьютер станет вдвое быстрее при удвоении этой частоты. Для каналов прямого доступа к памяти на системной плате используется еще один тактовый сигнал SCLK, частота которого, как правило, составляет половину от ISA Bus Clock. • PCI Bus Clock — это тактовая частота системной шины PCI, которая по стандарту должна быть 25 — 33,3 МГц. Ее обычно получают деле- нием частоты Host Bus Clock на нужный коэффициент. В компьюте- рах предусматривается возможность ее увеличения до 75 или даже 83 МГц, но из соображений надежности работы рекомендуется при- держиваться стандартных значений. • VLB Bus Clock — это частота локальной шины VLB, определяемая аналогично PCI Bus Clock. 7.4.2. Контроллер прерываний Контроллеры радиальных прерываний в первых компьютерах выпол- нялись на микросхемах i8259, каждая из которых имела 8 входов запроса прерываний. В IBM PC АТ применялось две таких микросхемы, в резуль- тате чего количество входов запросов прерываний увеличилось до 15. Ре- жимы работы контроллеров прерываний определяются процессором пу- 328
Лекция 14 Устройства, входящие в состав персонального компьютера тем записи соответствующих управляющих кодов по адресам в простран- стве устройств ввода/вывода. О циклах обмена по прерываниям уже говорилось в разделе 2.2.2. При поступлении запроса прерывания на один из входов IRQ и удовлетворении этого запроса контроллер прерываний вырабатывает выходной сигнал запро- са прерывания, поступающий на процессор. В ответ на это процессор запрашивает контроллер о том, прерывание с каким адресом вектора необхо- димо обслужить. Всего прерываний может быть 256 (от 00 до FF). Номер прерывания, полученный от контроллера, процессор умножает на 4 и получает, таким образом, адрес памяти, где хранится адрес начала программы обработки прерываний (вектор прерывания). Присваивание каждому из каналов IRQ своего номера процессор осуществляет на этапе инициализации контроллера. Контроллер прерываний может выполнять следующий набор операций: • маскирование запросов на прерывание, то есть временное запреще- ние реакции на них; • установка приоритетов запросов по различным входам, то есть раз- решение конфликтов при одновременном приходе нескольких зап- росов на прерывание; • работа в качестве основного контролера (Master) или подчиненного (Slave). Для маскирования прерываний используется внутренний регистр кон- троллера, программно доступный процессору как по записи, так и по чте- нию. Замаскирован может быть каждый запрос (по каждой из линий IRQ), путем установки соответствующего бита маскирования в записываемом в контроллер управляющем байте. Схема приоритетов прерываний может быть задана процессором про- граммным путем. В базовом варианте все приоритеты фиксированы (то есть IRQ0 имеет высший приоритет, a 1RQ7 — низший). Но в принципе высший уровень приоритета задается для любого из входов запросов, мож- но также установить циклическое переключение приоритетов (последний обслуженный запрос получает низший приоритет), обеспечивая тем са- мым всем запросам равные приоритеты. Если во время обработки преры- вания с меньшим уровнем приоритета приходит более приоритетный зап- рос, то процессор переходит на программу обработки более приоритетного запроса, а после ее выполнения возвращается к программе обработки ме- нее приоритетного запроса. Отметим, что немаскируемое прерывание NMI имеет приоритет выше любого другого аппаратного прерывания. Завершив выполнение программы обработки прерывания, процессору необходимо с помощью специальной команды сообщить об этом контрол- леру прерываний, чтобы разрешить ему дальнейшую работу, в частности, вновь обрабатывать тот же самый запрос. 329
Глава 7 Организация персонального компьютера Контроллер 8259 предусматривает возможность выбора способа рас- познавания запроса на прерывание — по фронту сигнала IRQ и по уровню этого сигнала. В архитектуре компьютера типа PC используется запрос по фронту. При каскадировании контроллеров основному контроллеру надо ука- зать, к какому из его входов подключен подчиненный контроллер, а под- чиненному контроллеру необходимо указать, к какому входу основного контроллера подключен его выходной сигнал запроса. Все операции начальной настройки контроллеров прерываний выпол- няет BIOS, и пользователю нужно прибегать к программированию этих контроллеров только при необходимости смены режимов обслуживания прерываний или при написании собственной программы обработки ап- паратных прерываний. 7.4.3. Контроллер прямого доступа к памяти Контроллер прямого доступа к памяти имеет более сложную структуру по сравнению с контроллером прерываний, что связано с его более слож- ными функциями. На время ПДП контроллер ПДП становится задатчи- ком (активным устройством) системной шины, выставляя все основные сигналы шины самостоятельно. Однако все режимы работы контроллера ПДП, все его параметры устанавливаются процессором на этапе инициа- лизации контроллера. В частности, процессор определяет тип решаемой задачи, задает начальный адрес передаваемого или принимаемого масси- ва данных, а также размер этого массива. В персональном компьютере применяется два четырехканальных кон- троллера ПДП типа 18237, обеспечивающих 7 каналов ПДП (один канал задействован под каскадирование контроллеров по тому же принципу, что и контроллеры прерываний). Помимо собственно контроллеров ПДП в подсистему ПДП входят также программно доступные регистр старшего байта адреса и регистры страниц ПДП. О циклах обмена в режиме ПДП уже говорилось в разделе 2.2.3. Получив сигнал запроса ПДП по одной из линий DRQ, контроллер формирует запрос процессору на захват шины и, получив разрешение от процессора, сообщает о предоставлении ПДП запросившему прямой доступ устройству по соответствующей линии DACK. После этого производится цикл ПДП, пере- сылающий данные из устройства ввода/вывода в память или наоборот. При этом сам контроллер ПДП формирует только 16 младших разрядов адреса памяти, а восемь старших разрядов содержатся в регистре страниц. Свой собственный регистр страниц соответствует каждому из каналов ПДП. Передача данных в случае ПДП возможна по одному из следующих ре- жимов: 330
Лекция 14 Устройства, входящие в состав персонального компьютера • Режим одиночной (поцикловой) передачи. В этом случае за время предоставления ПДП выполняется только один цикл передачи дан- ных, и для следующей передачи надо опять же запросить ПДП. Од- нако адрес памяти, с которым осуществляется обмен, автоматически меняется после каждого цикла. Этот режим позволяет процессору вставлять свои циклы обмена после каждого цикла ПДП. • Режим передачи блока (режим блочной передачи). В этом режиме за один раз передается целый блок данных определенной длины (до 64 Кбайт). Режим обеспечивает более высокую скорость передачи по сравнению с режимом одиночной передачи, но может на длительное время захватить системную шину, не допуская к ее управлению про- цессор. • Режим передачи по требованию. Этот режим позволяет продолжать ПДП до тех пор, пока устройство, запросившее ПДП, не исчерпает весь объем данных. • Каскадный режим позволяет объединять контроллеры для увеличе- ния количества каналов ПДП. • В принципе, возможен режим передачи в режиме ПДП из памяти в память, но в компьютере он не используется. Как и в случае контроллера прерываний, возможны две схемы приорите- тов каналов ПДП, выбираемые программно, — фиксированный и цикличес- кий. Исходная схема — фиксированные приоритеты, причем нулевой канал имеет максимальный приоритет, а седьмой — минимальный. Во время обслуживания любого запроса ПДП остальные запросы не могут вмешаться, но после завершения обслуживания данного запроса будет обслуживаться запрос с наибольшим приоритетом. Как и в случае контроллера прерываний, возможно программное маскирование каждого канала ПДП. Перед началом работы каждому из каналов контроллера процессор дол- жен указать режим, в котором он будет работать, базовый адрес памяти, с которого начнется обмен, количество передаваемых байтов или слов, на- правление записи в память или чтения из памяти (от старших адресов к младшим или наоборот). Возможен режим автоинициализации, при кото- ром после окончания пересылки всего массива данных контроллер автома- тически восстанавливает все параметры, и для этого не требуется вмеша- тельство процессора. Предусмотрена также возможность программного запроса ПДП, обслуживаемого так же, как и аппаратный запрос. 7.4.4. Системный таймер и часы реального времени В качестве системного таймера компьютера используется микросхема трехканального 16-разрядного таймера i8254 или ее аналог. Таймер предназначен для получения программно управляемых временных 331
Глава 7 Организация персонального компьютера задержек и генерации сигналов заданной частоты. Таймер позволяет повысить эффективность программирования процессов управления и синхронизации внешних устройств, особенно в реальном времени. Таймер содержит три независимых канала (0, 1 и 2), каждый из кото- рых может быть, в принципе, запрограммирован на работу в одном из шести режимов счета: • прерывание терминального счета; • программируемый генератор одиночного импульса; • генератор импульсов заданной частоты; • генератор прямоугольных импульсов типа «меандр»; • программно формируемый строб; • аппаратно формируемый строб. На каждый канал могут подаваться входные синхросигналы. Из каж- дого канала можно получать сигнал с частотой, равной входной частоте, деленной на произвольное 16-разрядное число. В компьютере на все вхо- ды поступают синхросигналы частотой 1,19 МГц. Все каналы таймера в компьютере имеют специальное назначение, поэтому особой свободы в выборе режима работы или переназначении функций у пользователя нет. • Выход канала 0 связан с сигналом запроса прерывания IRQ0 и обес- печивает прерывание для счетчика реального времени (использует- ся режим работы 3). Пользователю не рекомендуется перепрограм- мировать этот канал. При старте компьютера канал программируется так, чтобы выдавать импульсы примерно 18,2 раза в секунду. По этому прерыванию программно увеличивается состояние счетчика реаль- ного времени. Пользователь может читать состояние данного счет- чика из специально выделенной ячейки памяти и применять его для задержек в своих программах. • Выход канала 1 генерирует сигнал запроса регенерации динамической памяти (режим работы 2). Использование этого канала не по назначе- нию может привести к потере содержимого оперативной памяти. • Выход канала 2 генерирует тональный сигнал для встроенного ди- намика компьютера (режим работы 3). Однако разрешение этого то- нального сигнала производится установкой выделенных разрядов (О и 1) программно доступного параллельного порта контроллера пе- риферийных устройств. Один разряд (0) разрешает работу канала, другой разряд (1) пропускает выходной сигнал на динамик. Таким образом, пользователь компьютера может задействовать только канал 2. Чаще всего его применяют для генерации звуков заданной частоты и длительности. Кроме того, выходной сигнал данного канала программно доступен по чтению из одного из разрядов параллельного порта. Это позво- ляет, запрограммировав таймер соответствующим образом, выдерживать 332
Лекция 14 Устройства, входящие в состав персонального компьютера нужные временные интервалы. Для этого следует программно разрешить генерацию (при отключенном динамике), а затем программно опрашивать выходной сигнал таймера и принимать решения по изменению его уровня. Подсистема часов реального времени в первых компьютерах выполня- лась на микросхеме контроллера МС146818 фирмы Motorola. Этот кон- троллер содержит 64 байта CMOS-памяти, из которых первые 14 байт ис- пользуются для часов реального времени, а остальные 50 байт хранят информацию о конфигурации системы. Для входного тактового сигнала контроллера применяется специаль- ный «часовой» кварцевый генератор с частотой 32 768 кГц, что позволяет с помощью деления частоты получить импульсы с частотой 1 Гц. Кон- троллер считает секунды, минуты, часы, дни недели, месяцы и годы. Причем работает он даже при отключении питания компьютера, подпитываясь от батареи или аккумулятора. Это позволяет сохранять информацию о текущем времени постоянно. Помимо счетчика текущего времени, контроллер имеет в своем составе будильник. Будильник может формировать прерывания (IRQ8) с про- граммно заданной периодичностью. Состояния всех счетчиков (секунд, минут, часов и т.д.) программно доступны как по чтению, так и по записи, что позволяет устанавливать нужное время и следить за ним. 7.5. Средства интерфейса пользователя Для связи компьютера с пользователем (то есть организации интер- фейса пользователя) применяются видеоадаптер, управляющий видео- монитором, клавиатура и графический манипулятор типа «мышь» (mouse), touch pad или stick pointer. Видеоадаптер представляет собой устройство сопряжения компьютера с видеомонитором и чаще всего выполняется в виде специальной платы расширения, вставляемой в системную шину или локальную шину ком- пьютера. При этом изображение, формируемое на экране монитора, хра- нится в видеопамяти, входящей в состав видеоадаптера. Видеопамять представляет собой оперативную память, которая, хотя и не является, по сути, системной памятью, рассматривается процессором как часть системной памяти с адресами А0000 — BFFFF (всего 128 Кбайт). То есть с этой памятью процессор может взаимодействовать как с сис- темной оперативной памятью: писать информацию в любую ячейку и читать информацию из любой ячейки. Но одновременно эта же память постоянно сканируется (то есть последовательно опрашивается) самим ви- деоадаптером для формирования растрового изображения на экране монитора. То есть доступ к этой памяти имеют как процессор, так и видеоадаптер. 333
Глава 7 Организация персонального компьютера Скорость обмена с видеопамятью — довольно важный параметр, он вли- яет на удобство работы с компьютером и часто определяет круг задач, кото- рый может им выполняться. Поэтому для видеопамяти используют самые быстродействующие микросхемы. Кроме того, применяют специальные ар- хитектурные решения, позволяющие облегчить разделение доступа к па- мяти со стороны процессора и видеоадаптера. Например, в случае двухпор- товой памяти VRAM — Video RAM, к каждой ее ячейке одновременно могут получить доступ (с записью или чтением) как процессор, так и сам адаптер. Отметим, что в старых видеоадаптерах для снижения искажений изображе- ния на экране во время перезаписи содержимого памяти использовалось обращение к памяти со стороны центрального процессора только в периоды кадрового и строчного гасящего импульсов (когда электронный луч мони- тора гасится при переходе к следующей строке экрана или к следующему кадру). Все современные видеоадаптеры могут работать в двух основных режимах: текстовом (символьном, алфавитно-цифровом) и графическом. В текстовом режиме видеопамять имеет начальный адрес В8000, а в графи- ческом — А0000. В текстовом режиме на экран можно выводить только отдельные сим- волы, причем только в определенные позиции на экране. При этом в ви- деопамяти хранятся исключительно коды выводимых символов (8-разряд- ные) и коды атрибутов символов (8-разрядные). То есть каждой символьной позиции на экране соответствует два байта памяти. К атрибутам символа относятся яркость, цвет, мерцание как символа, так и его фона. Для преоб- разования содержимого памяти в видеосигнал точечного изображения при- меняется так называемый знакогенератор. Он может представлять собой ПЗУ, в котором записано построчное растровое изображение каждого сим- вола. При этом чем больше точек растра отводится по изображение симво- ла, тем он качественнее, но тем больше места занимает на экране. Преиму- щества текстового режима — это простота управления экраном и малый объем требуемой памяти. Примером его использования является програм- ма начального запуска BIOS. В графическом режиме в видеопамяти хранится описание каждой точки на экране монитора. Каждой точке соответствует несколько бит памяти (использу- ется ряд: 1, 4, 8, 16, 24 бит на одну точку). При этом, соответственно, каждая точка может иметь 2" состояний, где п — количество битов, а под состоянием понимается цвет и яркость точки. При одном бите точка может быть белой или черной, при 4 битах она может иметь 16 цветов, при 8 битах—256, при 16 битах— 65 536, а при 24 битах — 16 777 216 цветов и оттенков. Здесь же отметим, что общее количество точек на экране в современных компьютерах выбирается из ряда 640 (по горизонтали) х 480 (по вертикали), 800x600, 1024x768, 1280x1024, 1600x1200. Отсюда нетрудно рассчитать требуемый для полного экрана объем 334
Лекция 14 Устройстеа, входящие в состав персонального компьютера видеопамяти. Так, например, при разрешении 800x600 точек и при 256 цветах (8 бит или 1 байт) требуется 800x600x1 = 480 000 байт памяти. При разрешении 1024x768 и 65 536 цветов (2 байта) требуется 1024x768x2= 1 572 864 байта. Однако объем видеопамяти выбирается из следующего ряда: 256 Кбайт, 512 Кбайт, 1 Мбайт, 2 Мбайт, 4 Мбайт, 8 Мбайт, 16 Мбайт. В табл. 7.3 приведены необходи- мые объемы видеопамяти для различных режимов работы видеоадаптера. Разрешение и количество цветов Количество бит на точку Объем видеопамяти 800 х 600, 16 цветов 4 256 Кбайт 800 х 600, 256 цветов 8 512 Кбайт 800 х 600, 64 К цветов 16 1 Мбайт 800 х 600, 16 М цветов 24 2 Мбайт 1024 х 768, 16 цветов 4 512 Кбайт 1024 х 768, 256 цветов 8 1 Мбайт 1024 х 768, 64 К цветов 16 2 Мбайт 1024 х 768, 16 М цветов 24 4 Мбайт 1280 х 1024, 16 цветов 4 1 Мбайт 1280 х 1024, 256 цветов 8 2 Мбайт 1280 х 1024, 64 К цветов 16 4 Мбайт 1280 х 1024, 16 М цветов 24 4 Мбайт Табл. 7.3. Необходимые объемы видеопамяти. Понятно, что для полного обновления такого большого объема памяти требуется значительное время даже при быстрой видеопамяти и быстром процессоре. В роли ограничивающего фактора будет выступать темп обмена по системной шине. Поэтому именно видеоадаптеры первыми стали размещать на локальной шине VLB или на шине PCI, а позднее — на выделенной шине AGP Другое направление ускорения формирования изображения—совершенствование принципов обмена с компьютером. Первые видеоадаптеры были рассчитаны на то, чтобы все манипуляции с изображением проводил сам центральный процес- сор компьютера. Принципиально иной подход — использование графического 335
Глава 7 Организация персонального компьютера сопроцессора. При этом центральный процессор только дает команды на форми- рование изображения, а сопроцессор, расположенный на плате видеоадаптера, сам уже выполняет всю обработку, расчеты и формирование объектов на экране, что дает большое увеличение скорости формирования изображений. Промежуточный вариант — это применение так называемых графических ускорителей, то есть узлов, выполняющих наиболее трудоемкие операции по формированию изображений, но центральный процессор при этом не освобождается полностью от управления видеопамятью. В настоящее время наиболее распространены два стандарта дисплеев: • SVGA (Super VGA), который поддерживает максимальное разрешение 1024x768 точек (стандартным считается 800x600 точек) в 16- и 256- цветных режимах при максимальном объеме видеопамяти 4 Мбайт. Кроме того, предусмотрено использование двухпортовой памяти и 16- разрядной шины данных и ряд других новшеств. • XGA и XGA-2 (extended Graphics Array) — эти стандарты предложены в 1990 и 1992 г.г. компанией IBM. Основным режимом считается разре- шение 1024x768 точек при 256 цветах (XGA) или при 64 К цветах (XGA- 2). Отличительная особенность—использование быстродействующего графического сопроцессора и наличие возможности управлять сис- темной шиной, что позволяет выполнять видеооперации без участия центрального процессора. Так же, как и в SVGA, используется двух- портовая оперативная память, причем она располагается в адресном пространстве компьютера в последних адресах полной 4-гигабайтной области, на которые обычно никто не претендует. В XGA-2, в отличие от XGA, используется только прогрессивная (сплошная, non-interlaced, NI), а не чересстрочная (interfaced) развертка изображения на экране монитора, что обеспечивает малые мерцания. Оба стандарта поддер- живают полную совместимость с SVGA. • UVGA (Ultra VGA) — основным разрешением считается 1280х1024 точек. • UXGA — разрешение 1600x1200 точек, XVGA — 1280x768 точек. Для подключения к компьютеру клавиатуры применяется специальный интерфейс с последовательной передачей информации. Это позволяет ис- пользовать для присоединения клавиатуры всего два двунаправленных про- вода (линия данных и тактовый сигнал). Обмен информацией идет 11-би- товыми посылками, включающими 8 разрядов данных и служебную информацию (то есть стартовый бит, бит четности и столовый бит). В ком- пьютере IBM PC XT для подключения клавиатуры использовалась микро- схема PPI (Programmable Peripheral Interface) i8255, а в PC AT — микросхема UPI (Universal Peripheral Interface) i8042. Принцип работы клавиатуры довольно прост. Он сводится к постоян- ному сканированию (последовательному опросу) всех клавиш (обычно 336
Лекция 14 Устройства, входящие в состав персонального компьютера применяется 101-клавишная клавиатура) и к пересылке в компьютер но- мера нажатой клавиши (8-битного скэн-кода), причем как при ее нажа- тии, так и при отпускании. При отпускании клавиши ее скэн-код предва- ряется посылкой кода F0. Если клавиша удерживается длительное время, то через заданный интервал посылки ее скэн-кодов повторяются с задан- ной частотой. Если одновременно нажимается более одной клавиши, то повторяется посылка кода только последней из нажатых клавиш. При получении скэн-кода контроллером 8042 он формирует сигнал зап- роса аппаратного прерывания IRQ1. Это приводит к вызову программы обработки нажатия клавиши, находящейся в BIOS. Служебные клавиши (Shift, Ctrl, Alt) и переключающие клавиши (Caps Lock, Insert, Num Lock) обрабатываются специальным образом, а в случае нажатия символьных клавиш их скэн-коды преобразуются в коды соответствующих символов и помещаются в буфер клавиатуры. Буфер клавиатуры — это 16-байтная область памяти, организованная по принципу FIFO «первый вошел — пер- вый вышел», в которой хранятся коды нажатых клавиш до тех пор, пока их сможет обработать программа. Современные клавиатуры персональных компьютеров имеют 101 или 102 клавиши. Имеются «расширенные» модели с количеством клавиш до 122 и «усеченные» модели с количеством клавиш около 90, применяемые в портативных компьютерах типа ноутбук. Начиная с компьютера PC АТ, клавиатура может не только передавать информацию, но и принимать ее. Эта возможность используется для пе- ресылки в клавиатуру команд, устанавливающих режимы ее работы (на- пример, скорость повтора ввода символов при удерживаемой клавише или временная задержка перед повтором). Компьютерная мышь, служащая для управления курсором, подключа- ется к компьютеру через стандартный последовательный интерфейс RS- 232С (о нем подробнее — в отдельной главе). Для передачи компьютеру информации о перемещении мыши используется 3-байтовый формат. Два байта при этом содержат информацию о перемещении мыши по вертикали и по горизонтали, а один байт — о состоянии кнопок мыши. Передача ведется только в одном направлении (от мыши к компьютеру) со скорос- тью 1200 бит/с. Перемещение измеряется в специальных единицах cpi (counts per inch), равных примерно 0,005 дюйма (0,13 мм). Стоит отметить, что мышь, как правило, питается от системного блока компьютера, для чего задействованы неиспользуемые сигнальные линии разъема интерфейса RS-232C, так как собственно напряжения питания на разъем не выведены. Именно поэтому мышь присоединяется к компьютеру четырехпроводным кабелем, хотя д ля информации хватило бы и двухпроводно- го. Подробнее об интерфейсе RS-232C в следующей главе. Сейчас используется 22 — 3199 337
Глава 7 Организация персонального компьютера также подключение мыши через интерфейс PS/2, похожий на RS-232C, но не совместимый с ним ни электрически, ни конструктивно. Альтернатива мыши — это манипуляторы Stick Pointer и Touch Pad, которые не имеют движущихся механических частей. Сначала они применялись только в ноутбуках, но затем их стали размещать и на клавиатурах обычных настольных компьютеров. Stick Pointer представляет собой небольшой рычажок, расположенный между клавишами. Давление на него в разные стороны вызывает перемещение курсора на экране. При этом сам рычажок остается неподвижным. Touch Pad представляет собой небольшую площадку, расположенную рядом с клавишами, по которой необходимо двигать пальцем или ручкой, причем движение пальца вызывает такое же перемещение курсора на экране. С точки зрения компьютера эти манипуляторы ничем не отличаются от мыши, они используют тот же интерфейс. Игровой адаптер джойстик подключается к компьютеру через собствен- ный специальный интерфейс. Для связи с джойстиком не требуется ника- ких прерываний. Используется только один адрес ввода/вывода. 7.6. Внешняя память Внешняя память компьютера представляет собой дисковые накопители информации — встроенный накопитель на жестком диске (винчестер) и нако- питель на сменных гибких дисках (дискетах). В обоих случаях магнитные диски хранят информацию в виде намагниченных концентрических дорожек (цилиндров) на магнитном покрытии, разбитых на сектора. Диск в накопителе постоянно вращается, а запись и чтение информации производятся перемещае- мыми вдоль радиуса диска магнитными головками. Благодаря постоянному прогрессу технологии производства накопителей, развитию технологии магнитных покрытий и магнитных головок, емкость винчестеров повысилась до нескольких десятков гигабайт, а емкость дискет — до сотен мегабайт (правда, стандартным пока считается объем дискеты 1,44 Мбайт). Подробное описание работы дисководов и принципов хранения информа- ции на магнитных дисках потребовало бы слишком много места, к тому же оно не имеет прямого отношения к теме данной книги, поэтому мы здесь приве- дем только некоторые особенности организации обмена информацией. Важный параметр любого дисковода — это его быстродействие, которое определяется, с одной стороны, достижимой скоростью записи/чтения ин- формации, а с другой — временем позиционирования (то есть установки в нужное положение) магнитной головки дисковода. Немаловажно и быст- родействие интерфейса, осуществляющего связь компьютера с накопите- лем, а также применяемые способы организации обмена информацией. В настоящее время наиболее распространены два стандартных интер- фейса для винчестеров: 338
Лекция 14 Устройства, входящие в состав персонального компьютера • IDE (Integrated Drive Electronics) — интерфейс для дисковых накопи- телей, официальное название — АТА (AT Attachment). Именно этот интерфейс применяется в качестве основного в персональных ком- пьютерах. Скорость обмена может достигать 133 Мбайт/с. • SCSI (Small Computer System Interface) — малый компьютерный системный интерфейс. В принципе, он используется и для подключения других устройств (например, сканеров), но основное его применение — для дисководов. Как правило, данный интерфейс изначально включается в структуру только некоторых серверов, а для его реализации в персональных компьютерах необходима дополнительная плата расширения (кстати, довольно дорогая). Скорость обмена может достигать 320 Мбайт/с. Сравнение этих двух интерфейсов (SCSI и IDE) показывает, что в однополь- зовательских автономных системах гораздо эффективнее применять IDE, а в многопользовательских и многозадачных системах выгоднее становится SCSI. Стоит также отметить, что установка SCSI сложнее и дороже, чем IDE. Кроме того, при использовании винчестера с интерфейсом SCSI в качестве сетевого диска могут возникнуть проблемы. Преимуществом SCSI является большее количество максимально подключенных дисководов и возможность одновременного выполнения ими подаваемых команд. А что касается скорости обмена, то она в основном определяется не пропускной способностью интерфейса, а другими параметрами, в частности скоростью используемой системной шины. Поэтому точно сказать, дисковод с каким интерфейсом будет работать быстрее, в общем случае невозможно. К тому же в случае IDE реальная скорость очень сильно зависит от схемотехнических решений, использованных изготовителем дисководов. Для ускорения обмена с дисками широко применяется кэширование, прин- цип которого близок к принципу кэширования оперативной памяти. Точно так же кэширование диска позволяет за счет использования более быстрой элект- рон ной памяти, чем дисковая память, существенно увеличить среднюю скорость обмена с диском. Здесь принципиально важны несколько моментов: • в большинстве случаев каждое следующее обращение к диску будет обращением к следующему по порядку блоку информации на диске; • для позиционирования головки требуется заметное время (порядка миллисекунды); • искомый сектор на диске может не оказаться под головкой после ее установки, и потребуется ждать его прихода. Все это приводит к тому, что оказывается гораздо выгоднее содержать в оперативной памяти (дисковой кэш-памяти) копию части диска и обращаться на диск только в том случае, если нужной информации нет в кэш-памяти. Для обмена с кэш-памятью, как и в случае оперативной памяти, используются методы Write Through (WT) и Write Back (WB). Так как винчестер — это блочно- 22* 339
Глава 7 Организация персонального компьютера ориентированное устройство (размер блока равен 512 байт), то данные передаются в кэш блоками. При заполнении кэш-памяти в нее переписываются не только необходимые в данный момент блоки, но и следующие за ними (метод «чтение вперед», Read Ahead), дальнейшее обращение к которым наиболее вероятно. Особенно эффективно кэширование при оптимизации жесткого диска (его дефрагментации), когда каждый файл расположен в группе секторов, следующих друг за другом. Как и в случае кэширования памяти, при кэшировании диска используется механизм LRU, позволяющий обновлять те блоки, к которым дольше всего не было обращений. Кэш-память диска обычно располагается на плате специального кэш-контроллера дисковода, и ее объем может достигать 16 Мбайт. Для сопряжения с компьютером дисковода для гибких дисков (флоппи- дисков, дискет) традиционно применяется специальный интерфейс SA-400, разработанный в начале 70-х годов. Контроллер присоединяется к дисководу 34-проводным кабелем, причем к одному контроллеру обычно присоединяет- ся до двух дисководов (теоретически их может быть четыре). На каждом накопителе, как правило, имеется четыре перемычки DSO—DS3 (Drive Select) для выбора номера данного дисковода. Данные по интерфейсу передаются в последовательном коде в обоих направлениях (по разным проводам). Скорость передачи данных для дискет емкостью 1,44 Мбайт составляет 500 Кбит/с. Как и контроллер жестких дисков, контроллер гибких дисков в современных компьютерах установлен на системной плате (для старых моделей компьюте- ров выпускались специальные платы расширения). В новых компьютерах стал стандартным дисковод на оптических компакт- дисках (CD-ROM). На этих дисках информация хранится в виде зон с разными степенями отражения света от поверхности диска. Вместо множества концентрических дорожек на поверхности диска (как у магнитного диска, винчестера), в случае компакт-диска применяется всего одна спиральная дорожка. Для чтения информации применяется миниатюрный лазер. Диски имеют диаметр 5 дюймов и стандартный объем 780 Мбайт. Скорость обмена информацией с компакт-дисками сейчас составляет от 2,4 Мбайт/с (для дисководов со скоростью 16х) до 3,6 Мбайт/с (для дисководов со скоростью 52х). Используются интерфейсы IDE и SCSI. На компакт-диск записываются не только данные, но и звук, а также изображение. Существуют компакт-диски с возможностью однократной записи или даже многократной перезаписи информации с компьютера. Возможно, дисководы, поддерживающие такие диски, вскоре войдут в стандартную комплектацию персонального компьютера. Правда, скорость записи информации на компакт-диски обычно существенно ниже скорости чтения информации. 340
Лекция 14 Устройства, входящие в состав персонального компьютера Вариант 1 1. Какой основной недостаток у памяти DRAM? □ невысокое быстродействие □ высокая цена □ малый объем памяти на одну микросхему □ большой ток потребления □ память DRAM — наилучшая по всем параметрам 2. Какая из тактовых частот ПК обычно наименьшая? □ Host Bus Clock □ CPU Clock □ ISA Bus Clock □ PCI Bus Clock □ все частоты одинаковые 3. На основе чего организован внутренний календарь ПК? □ на основе системного таймера □ на основе часов реального времени □ на основе программного счетчика времени □ на основе сетевого таймера 341
Глава 7 Организация персонального компьютера Вариант 2 1. Какая функция не выполняется программой из ROM BIOS? □ начальная загрузка операционной системы с диска □ самотестирование компьютера □ ускорение обмена с системной памятью □ задание текущих базовых параметров аппаратуры компьютера □ поддержка обмена с системными устройствами 2. Сколько всего прерываний может быть в ПК? □ 8 □ 16 □ 32 □ 64 □ 256 3. Какие коды и когда вырабатываются клавиатурой? □ при нажатии — коды символов, соответствующих клавишам □ при нажатии — коды номеров клавиш □ при нажатии и отпускании — коды символов, соответствующих клавишам □ при нажатии и отпускании — коды номеров клавиш □ при отпускании — коды символов, соответствующих клавишам 342
Лекция 14 Устройства, входящие в состав персонального компьютера Вариант 3 1. Для чего используется теневая память? □ для ускорения обмена с оперативной памятью □ для ускорения обмена с постоянной памятью □ для ускорения обмена с устройствами ввода-вывода □ для ускорения работы процессора □ для увеличения объема системной памяти 2. Чем определяется адрес памяти в режиме ПДП? □ программой инициализации контроллера ПДП □ самим контроллером ПДП □ устройством ввода-вывода, запросившим ПДП □ программой инициализации и контроллером ПДП □ в разных случаях по-разному 3. Для чего применяется кэширование диска? □ для увеличения объема дискового пространства □ для ускорения процесса записи информации на диск □ для уменьшения количества обращений к диску □ для ускорения работы системной памяти □ для сокращения времени вращения диска 343
Лекция 15 Системная магистраль ISA Глава 8. Интерфейсы персонального компьютера Лекция 15. Системная магистраль ISA В этой лекции рассказывается о характеристиках системной магист- рали ISA, о назначении сигналов и протоколах обмена информацией на магистрали, а также о принципах распределения ресурсов ПК. Ключевые слова: ISA, Master, Slave, временные интервалы, протоколы обмена, распределение ресурсов, Plug-and-play. Сразу же оговоримся, что под интерфейсами персонального компью- тера в данном случае имеются в виду только внешние интерфейсы, то есть средства сопряжения с внешними по отношению к компьютеру в целом устройствами. При этом внешние устройства могут быть как стандартны- ми (например, принтер или модем), так и нестандартными (например, из- мерительные и управляющие модули, приборы, установки). В настоящее время компьютеры могут иметь множество внешних ин- терфейсов. Наиболее распространены следующие: • системная шина (магистраль) ISA; • шина PCI; • шина AGP; • шина PC Cards (старое название PCMCIA) — обычно только в ноутбуках; • параллельный порт (принтерный, LPT-порт) Centronics; • последовательный порт (COM-порт) RS-232C; • последовательный порт USB (Universal Serial Bus); • последовательный инфракрасный порт IrDA. Кроме того, компьютеры могут иметь разъемы для подключения внеш- него монитора, клавиатуры, мыши. Некоторые компьютеры имеют встро- енные модемы и сетевые адаптеры, тогда они располагают, соответствен- но, телефонным и сетевым внешними интерфейсами. Подключение стандартных внешних устройств обычно не вызывает никаких проблем: надо только присоединить устройство к компьютеру со- ответствующим стандартным кабелем и (возможно) установить на ком- 345
Глава 8 Интер^^сы персонального компьютера пьютер программный драйвер. Знать особенности внешних интерфейсов пользователю в данном случае не обязательно. В случае инфракрасного порта не нужен даже кабель. Гораздо сложнее ситуация, когда к компьютеру требуется присоеди- нить нестандартное внешнее устройство. В этом случае необходимо дос- кональное знание особенностей используемых интерфейсов и умение эф- фективно с ними работать. Ограниченный объем книги не позволяет полностью рассмотреть данный вопрос, поэтому мы остановимся только на общем описании некоторых внешних интерфейсов компьютера. Чаще всего для подключения нестандартных внешних устройств ис- пользуются системная магистраль ISA, параллельный интерфейс Centronics (LPT) и последовательный интерфейс RS-232C (СОМ). 8.1. Системная магистраль ISA Системная шина (магистраль) ISA была разработана специально для персональных компьютеров типа IBM PC АТ и является фактическим стан- дартом. В то же время, отсутствие официального международного статуса магистрали ISA (она не утверждена в качестве стандарта ни одним между- народным комитетом по стандартизации) приводит к тому, что многие про- изводители допускают некоторые отклонения от фирменного стандарта. ISA явилась расширением магистрали компьютеров IBM PC и IBM PC XT. В ней было увеличено количество разрядов адреса и данных, увеличено число линий аппаратных прерываний и каналов ПДП, а также повышена тактовая частота. К 62-контактному разъему прежней магистрали был добавлен 36-кон- тактный новый разъем. Тем не менее, совместимость была сохранена, и пла- ты, предназначенные для IBM PC XT годятся и для IBM PC АТ. Характерное отличие ISA состоит в том, что ее тактовый сигнал не совпадает с тактовым сигналом процессора, как это было в IBM PC XT, поэтому скорость обмена по ней не пропорциональна тактовой частоте процессора. Магистраль ISA относится к немультиплексированным (то есть имею- щим раздельные шины адреса и данных) 16-разрядным системным маги- стралям среднего быстродействия. Обмен осуществляется 8-ми или 16-ти разрядными данными. На магистрали реализован раздельный доступ к па- мяти компьютера и к устройствам ввода/вывода (для этого имеются спе- циальные сигналы). Максимальный объем адресуемой памяти составляет 16 Мбайт (24 адресные линии). Максимальное адресное пространство для устройств ввода/вывода—64 Кбайт (16 адресныхлиний), хотя практически все выпускаемые платы расширения используют только 10 младших ад- ресных линий (1 Кбайт). Магистраль поддерживает регенерацию дина- мической памяти, радиальные прерывания и прямой доступ к памяти. До- пускается также захват магистрали. 346
Лекция 15 Системная магистраль ISA Разъем магистрали ISA разделен на две части, что позволяет уменьшать размеры 8-разрядных плат расширения, а также использовать платы, раз- работанные для компьютеров IBM PC XT. Внешний вид плат расширения показан на рис. 8.1. Назначение контактов разъемов представлено в Табл. 8.1 и 8.2. На магистрали присутствуют четыре напряжения питания: +5 В, —5 В, +12 В и —12 В, которые могут использоваться платами расширения. Сторона монтажа Сторона установки элементов В1 ... В31 D1 ... D18 Рис. 8.1. Нумерация контактов разъема ISA (для IBM PC XT — только Al ... А31 и Bl... В31). В роли задатчика (Master) магистрали могут выступать процессор, кон- троллер ПДП, контроллер регенерации или другое устройство. Исполни- телями (Slave) могут быть системные устройства компьютера, подключен- ные к ISA, или платы (карты) расширения. Наиболее распространенное конструктивное исполнение магистрали — разъемы (слоты), все одноименные контакты которых параллельно соеди- нены между собой, то есть все разъемы абсолютно равноправны. В слоты устанавливаются платы расширения, которые оснащены интерфейсными разъемами магистрали, выполненными печатными проводниками на краю платы. Количество установочных мест для плат расширения зависит от типа корпуса компьютера и составляет обычно от 2 до 8 и даже более. В таблицах 8.1 и 8.2 знак минус перед названием сигнала говорит о том, что активному (рабочему) уровню сигнала соответствует низкий уровень напряжения на соответствующей линии магистрали. На линиях адреса и 347
Глава 8 Инте,к{*дйсы персонального компьютера данных логическому нулю соответствует низкий уровень напряжения, а единице — высокий (то есть логика положительная). Контакт Цепь Контакт Цепь А1 -I/O СН СК В1 GND А2 SD7 В2 RESET DRV АЗ SD6 ВЗ +5 В А4 SD5 В4 IRQ9 (IRQ2) А5 SD4 В5 -5 В А6 SD3 В6 DRQ2 А7 SD2 В7 -12 В А8 SD1 В8 0WS А9 SD0 В9 +12 В А10 I/O CH RDY В10 GND АН AEN В11 -SMEMW А12 SA19 В12 -SMEMR А13 SA18 В13 -IOW А14 SA17 В14 -IOR А15 SA16 В15 -DACK3 А16 SA15 В16 DRQ3 А17 SA14 В17 -DACK1 А18 SA13 В18 DRQ1 А19 SA12 В19 -REFRESH А20 SA11 В20 SYSCLK А21 SA10 В21 IRQ7 Табл. 8.1. Назначение контактов разъема магистрали ISA. 348
Лекция 15 Системная магистраль ISA 1 Контакт Цепь Контакт Цепь А22 SA9 В22 IRQ6 А23 SA8 В23 IRQ5 А24 SA7 В24 IRQ4 А25 SA6 В25 IRQ3 А26 SA5 В26 -DACK2 А27 SA4 В27 Т/С А28 SA3 В28 BALE А29 SA2 В29 +5 В АЗО SA1 ВЗО OSC А31 SA0 В31 GND Табл. 8.1. Назначение контактов разъема магистрали ISA (продолжение в Табл. 8.2). Контакт Цепь Контакт Цепь С1 -SBHE D1 -MEM CS16 С2 LA23 D2 -I/O CS16 СЗ LA22 D3 IRQ 10 С4 LA21 D4 IRQ11 С5 LA20 D5 IRQ12 С6 LA19 D6 IRQ 15 С7 LA18 D7 IRQ 14 С8 LA17 D8 -DACK0 Табл. 8.2. Назначение контактов разъема магистрали ISA (начало в Табл. 8.1). 349
Глава 8 Интерфейсы персонального компьютера Контакт Цепь Контакт Цепь С9 -MEMR D9 DRQ0 СЮ -MEMW D10 -DACK5 СП SD8 D11 DRQ5 С12 SD9 D12 -DACK6 С13 SD10 D13 DRQ6 С14 SD11 D14 -DACK7 С15 SD12 D15 DRQ7 С16 SD13 D16 +5 В С17 SD14 D17 -MASTER С18 SD15 D18 GND Табл. 8.2. Назначение контактов разъема магистрали ISA (начало в табл. 8.1). 8.1.1. Назначение сигналов ISA Вкратце о сигналах ISA уже говорилось в разделе 2.2. Рассмотрим на- значение основных, наиболее часто используемых сигналов магистрали ISA подробнее. • SA0...SA19 — фиксируемые адресные разряды (они действительны в течение всего цикла обмена). 16-разрядным словам соответствуют четные адреса (SA0=0). • LA17...LA23 — нефиксируемые адресные разряды. Используются для адресации памяти. Действительны только в начале цикла обмена (в адресной фазе). • BALE — сигнал стробирования адресных разрядов (действительнос- ти адреса соответствует отрицательный фронт сигнала). Основное назначение — фиксация нефиксированных адресных разрядов в ре- гистре-защелке. • -SBHE — сигнал типа цикла передачи данных (8-ми или 16-разряд- ный цикл). Активен при передаче старшего байта. • SD0...SD15 — разряды данных. По линиям SD0...SD7 передается младший байт, по линиям SD8...SD15 — старший байт. 350
Лекция 15 Системная магисц>аль ISA • -SMEMR, -MEMR — стробы чтения данных из памяти. Сигнал - SMEMR вырабатывается только при обращении к адресам, не пре- вышающим FFFFF (находящимся в пределах младшего 1 Мбайта), а сигнал -MEMR — при обращении ко всем адресам памяти. • -SMEMW, -MEMW — стробы записи данных в память. Сигнал - SMEMW вырабатывается только при обращении к адресам, не пре- вышающим FFFFF (находящимся в пределах младшего 1 Мбайта), сигнал -MEMW — при обращении ко всем адресам памяти. • -IOR — строб чтения данных из устройств ввода/вывода. При актив- ном сигнале адресуемое устройство ввода/вывода должно выдать свои данные на шину данных. • -IOW — строб записи данных в устройства ввода/вывода. По этому сигналу адресуемое устройство ввода/вывода должно принять дан- ные с шины данных. • -MEM CS16 — сигнал выставляется памятью для сообщения задат- чику о том, что она имеет 16-разрядную организацию. Вырабатыва- ется в ответ на распознавание адреса памяти. • -I/O CS16 — сигнал выставляется устройством ввода/вывода для со- общения задатчику о том, что оно имеет 16-разрядную организацию, и необходим 16-разрядный цикл обмена. Вырабатывается в ответ на распознавание своего адреса. • I/O CH RDY — сигнал снимается (делается низким) исполнителем (устройством ввода/вывода или памятью) по переднему фронту сиг- налов -IOR и -1OW в случае, если он не успевает выполнить нужную операцию в темпе задатчика. То есть этот сигнал используется для асинхронного обмена по магистрали. • -I/O СН СК — сигнал вырабатывается любым исполнителем (устрой- ством ввода/вывода или памятью) для информирования задатчика о фа- тальной ошибке, например, об ошибке четности при доступе к памяти. • -0WS — сигнал выставляется исполнителем для информирования за- датчика о необходимости проведения цикла обмена без вставки так- та ожидания. • -REFRESH — сигнал регенерации, выставляется контроллером ре- генерации для информирования всех устройств на магистрали о выполнении циклов регенерации динамической памяти компью- тера. • RESET DRV — сигнал сброса в начальное состояние всех устройств на магистрали. Вырабатывается центральным процессором при включении или сбое питания, а также при нажатии на кнопку сброса RESET компьютера. 351
Глава 8 Интерфейсы персонального компьютера • SYSCLK — сигнал системного тактового генератора, тактовый сиг- нал магистрали. В большинстве компьютеров его частота равна 8 МГц независимо от тактовой частоты процессора. • OSC — не синхронизированный с SYSCLK сигнал кварцевого гене- ратора с частотой 14,31818 МГц. • IRQ — сигналы запроса радиальных прерываний. Запросом являет- ся положительный переход на соответствующей линии IRQ. • DRQ — сигналы запроса ПДП. • -DACK — сигналы предоставления ПДП. • AEN — сигнал выбора устройства, запросившего ПДП. Отключает все остальные устройства, не участвующие в данном цикле ПДП. 8.1.2. Циклы обмена по ISA О циклах обмена по магистрали ISA уже упоминалось в разделе 2.2. Здесь мы рассмотрим их несколько подробнее, на уровне, достаточном для практического использования. В режиме программного обмена информацией на магистрали ISA вы- полняется четыре типа циклов: • цикл записи в память; • цикл чтения из памяти; • цикл записи в устройство ввода/вывода; • цикл чтения из устройства ввода/вывода. Циклы обмена с памятью и с устройствами ввода/вывода различаются между собой используемыми стробами записи и чтения, а также времен- ными задержками между сигналами. Цикл обмена с устройствами ввода/вывода начинается с выставления за- датчиком кода адреса на линиях SA0...SA15 и сигнала -SBHE, определяющего разрядность информации. Чаще всего используются только 10 младших линий SA0...SA9, так как большинство разработанных ранее плат расширения задей- ствуют только их. В ответ на получение адреса исполнитель, распознавший свой адрес, должен сформировать сигнал -I/O CS16 в случае, если обмен дол- жен быть 16-разрядным. Далее следует собственно команда чтения или записи. При цикле чтения задатчик выставляет сигнал -IOR, в ответ на кото- рый исполнитель должен выдать данные на шину данных. Эти данные дол- жны быть сняты исполнителем после окончания сигнала -IOR. В цикле записи задатчик выставляет записываемые данные и сопро- вождает их стробом записи -IOW. Исполнитель должен принять эти дан- ные (для гарантии — по заднему фронту сигнала -IOW). На рис. 8.2 приведены временные диаграммы циклов обмена с устрой- ствами ввода/вывода. Для простоты на одном рисунке показаны как цикл записи, так и цикл чтения, хотя производятся они, конечно, в разное время. 352
Лекция 15 Системная магистраль ISA SYSCLK BALE SA0...SA15, SBHE -I/0CS16 -IOR SD0...SD15 SD0...SD15 -IOW I/O CH RDY >61 Рис. 8.2. Временные диаграммы циклов программного обмена с устройствами ввода/вывода (все интервалы в наносекундах). Если исполнитель не успевает выполнить команду в темпе магистра- ли, он может приостановить на целое число периодов Т сигнала SYSCLK завершение цикла чтения или записи за счет снятия (перевода в низкий уровень) сигнала I/O CH RDY (так называемый удлиненный цикл). Это производится в ответ на получение переднего фронта сигнала -IOR или -IOW. Сигнал I/O CH RDY может удерживаться низким не более 15,6 мкс, в противном случае процессор переходит в режим обработки немаскируе- мого прерывания NMI. Разработчику ISA-устройств необходимо, прежде всего, обращать вни- мание на те временные интервалы, которые связаны с быстродействием аппаратуры этих устройств. Например, на обработку адреса селектору ад- реса отводится не более 91 нс, а буфер данных в цикле чтения должен выдавать данные на магистраль не более чем за 110 нс. При циклах программного обмена с памятью используются те же са- мые сигналы, только вместо строба чтения -IOR применяются стробы чтения -MEMR и -SMEMR, а вместо строба записи -IOW—стробы записи -MEMW и -SMEMW. Для определения байтового или словного формата данных применяется сигнал -MEM CS16. Для асинхронного режима об- 23 — 3199 353
Глава 8 Интерфейсы персонального компьютера мена (удлиненного цикла) здесь также используется сигнал I/O CH RDY. Отметим, что память должна обрабатывать все адресные разряды магист- рали, включая и LA17...LA23. На рис. 8.3 показана временная диаграмма обмена с памятью, причем здесь указаны только временные интервалы, отличающиеся от аналогич- ных интервалов на Рис. 8.2. Для простоты на одном рисунке показаны как цикл записи в память, так и цикл чтения из памяти. Рис. 8.3. Временные диаграммы циклов программного обмена с памятью (все интервалы в наносекундах). В случае циклов прямого доступа к памяти (ПДП) используется другой протокол обмена. Так как магистраль ISA имеет раздельные стробы чте- ния и записи для устройств ввода/вывода и для памяти, пересылка дан- ных в режиме ПДП производится за один машинный цикл. То есть если данные надо переслать из устройства ввода/вывода в память, то одновре- менно производится чтение данных из устройства ввода/вывода (по сиг- налу -IOR) и их запись в память (по сигналу -MEMW). Аналогично осу- ществляется пересылка данных из памяти в устройство ввода/вывода (по сигналам -MEMR и -IOW). 354
Лекция 15 Системная магио, ггь ISA Цикл ПДП (рис. 8.4) начинается с запроса ПДП от исполнителя, же- лающего произвести обмен, с помощью одного из сигналов DRQ. После освобождения магистрали текущим задатчиком (например, процессором) контроллер ПДП через время t формирует соответствующий сигнал -DACK, говорящий о предоставлении ПДП запросившему его. Рис. 8.4. Временная диаграмма циклов прямого доступа к памяти (все интервалы в наносекундах). Затем контроллер ПДП вырабатывает адрес ячейки памяти, с которой будет производиться обмен в текущем цикле, и сигнал AEN, который го- ворит устройству ввода/вывода о том, что к нему идет обращение в режи- ме ПДП. После этого выставляется строб чтения (-IOR или -MEMR), в ответ на который источник передаваемых данных выставляет свою ин- формацию на шину данных, и строб записи (-MEMW или -IOW), по которому данные записываются в приемник данных. Здесь так же, как и в обычном цикле, возможен асинхронный обмен (удлиненный цикл) с ис- пользованием сигнала I/O CH RDY. Для простоты на одном рисунке показано два цикла: передачи из памяти в устройство ввода/вывода и передачи из устройства ввода/вывода в память. Временные интервалы этих двух циклов несколько различаются. 23* 355
Глава 8 Интерфейсы персонального компьютера При аппаратных прерываниях протокол обмена совсем простой, так как прерывания используются радиальные. Исполнитель, желающий иници- ировать прерывание, выставляет свой запрос (положительный переход на одной из линий IRQ) на магистраль. Контроллер прерываний, получив этот запрос, преобразует его в запрос прерываний процессора. Процессор, закончив выполнение текущей команды, переходит на адрес начала про- граммы обработки данного прерывания, который однозначно определя- ется по номеру используемого сигнала IRQ. После обработки прерывания процессор возвращается к основной программе. Для проведения регенерации динамической памяти компьютера исполь- зуются специальные циклы регенерации (Рис. 8.5). Рис. 8.5. Временные диаграммы циклов регенерации на ISA (все интервалы указаны в наносекундах). Такие циклы выполняет контроллер регенерации, который должен для этого получать управление магистралью каждые 15 микросекунд. Во вре- мя цикла регенерации производится чтение одной из 256 ячеек памяти (для адресации при этом используются только восемь младших разрядов адреса SA0...SA7). Читаемая информация нигде не применяется, то есть это цикл псевдочтения. Проведение 256 циклов регенерации, то есть псев- дочтение из 256 последовательных адресов памяти, обеспечивает полное обновление информации в памяти и ее непрерывное сохранение. Если по каким-то причинам цикл регенерации памяти не производится вовремя, возможна потеря информации. Цикл регенерации включает в себя выставление сигнала -REFRESH, сигналов кода адреса SA0...SA7 и строба чтения из памяти -MEMR. В слу- чае необходимости может использоваться сигнал I/O CH RDY, обеспечи- вающий асинхронный обмен. 356
Лекция 15 Системная магистраль ISA При включении питания, а также при нажатии кнопки RESET на пе- редней панели компьютера на магистрали вырабатывается сигнал RESET DRV, который используется всеми устройствами, подключенными к ма- гистрали для сброса в исходное состояние и отключения от магистрали. Захват магистрали сторонним задатчиком, в принципе, предусмотрен- ная стандартом, используется на практике довольно редко, так как требует от устройства, захватившего магистраль, полного управления ею, включая и поддержку периодической регенерации памяти. Электрические характеристики магистрали предъявляют жесткие тре- бования ко всем подключаемым устройствам по величине входных и вы- ходных токов, а также по потребляемой мощности. В противном случае возможен выход из строя всего компьютера в целом. Стандарт определяет, что выходной ток любого источника магистраль- ных сигналов не должен быть меньше 24 мА, а входной ток любого при- емника магистральных сигналов не должен превышать 0,8 мА. Кроме того, нарушения в работе компьютера может вызвать несоблюдение временных ограничений, накладываемых используемыми протоколами обмена во всех рассмотренных циклах. 8.1.3. Распределение ресурсов компьютера Помимо архитектуры аппаратных средств и параметров системной шины специфика любого компьютера определяется принятым стандарт- ным распределением всех его ресурсов. Соблюдать правила, установлен- ные этим распределением, должны и программисты (как системные, так и занимающиеся разработкой прикладных программ), и разработчики до- полнительного оборудования, и даже те пользователи, которые просто хо- тят установить в компьютер новую плату расширения. В случае малейше- го нарушения этих правил возможны как непредсказуемые сбои в работе компьютера, невозможность его начальной загрузки, так и полный выход компьютера из строя. Под распределением ресурсов в данном случае понимается: • распределение адресного пространства системной памяти, отведе- ние отдельных областей памяти под особые цели; • распределение адресного пространства устройств ввода/вывода, в том числе для системных средств компьютера; • распределение каналов запроса прерываний, в том числе для сис- темных устройств; • распределение каналов запроса прямого доступа к памяти. Понятно, что если программист захочет использовать те адреса памяти, которые отведены для системных нужд (например, для памяти дисплея или системных таблиц), то работоспособность компьютера нару- 357
Глава 8 Интерфейсы персонального компьютера шится. Если выполняемая программа попытается записать какую-либо ин- формацию по тем адресам системной памяти, которые стандартом отведены под постоянную память (ROM), то записываемая информация будет просто потеряна, и программа работать не будет. Если писать информацию по тем адресам памяти, которые отведены под видеопамять, то будет искажаться изображение на экране видеомонитора. Если вставляемая в компьютер плата расширения использует непра- вильные (занятые другими устройствами) адреса в адресном пространстве памяти, то ее работа будет невозможна, и не исключен даже выход из строя аппаратуры компьютера (так как при циклах чтения из перекрывающихся адресов памяти два устройства будут выставлять свои данные на шину од- новременно, что может стать причиной выгорания буферных микросхем). Если разработчик платы расширения с устройством ввода/вывода или пользователь, подключающий новую плату расширения, установят адрес своего устройства так, что он будет совпадать с адресом системного уст- ройства или адресом другой платы расширения, то возможны конфликты при обращении к данному устройству. При этом в цикле записи инфор- мация будет записываться не в одно, а в два или более устройств, а в цикле чтения на шину данных будут одновременно выставлять свои данные не одно, а несколько устройств. То есть в цикле записи возможно нарушение установленных режимов работы системных устройств (например, контрол- лера прерываний или контроллера ПДП) или неправильная работа новой платы расширения, а в цикле чтения — даже выход из строя одного из ус- тройств, выставляющих свои данные на магистраль одновременно. Если при подключении к компьютеру новой платы расширения уста- новить для нее неправильный канал запроса прерывания, это может при- вести к тому, что данное прерывание просто не будет обслуживаться. Мо- жет также перестать обслуживаться прерывание от системного устройства, с которым конфликтует новая плата. В худшем случае это может вызвать выход из строя новой платы расширения или же системного устройства. Точно так же при неправильном выборе номера канала запроса прямого доступа к памяти может перестать обслуживаться запрос ПДП системного устройства, а может выйти из строя системное устройство или новая плата расширения. То есть соблюдение правил стандартного распределения ре- сурсов компьютера — это не чья-то прихоть, а жизненная необходимость. Правда, в последнее время получила распространение снимающая дан- ные проблемы технология автоматического распределения ресурсов Plug- and-Play (PnP, Р&Р), что можно перевести как «Вставляй и работай». При этом пользователю достаточно просто подключить свою плату к компью- теру, а все операции по распределению ресурсов компьютер выполнит са- мостоятельно, и любые конфликты будут автоматически устранены. 358
Лекция 15 Системная магистраль ISA Но для этого необходимо обязательное выполнение двух условий. Во- первых, технологию РпР должен поддерживать данный компьютер и его программное обеспечение. Во-вторых, эту технологию должно поддержи- вать подключаемое к компьютеру устройство. Определить это довольно про- сто: если на плате имеются переставляемые перемычки или механические переключатели для задания параметров платы (адресов портов ввода/выво- да, номера используемого прерывания, базового адреса памяти, номера ка- нала ПДП), то можно смело утверждать, что выбор конфигурации, учет стан- дартного распределения ресурсов компьютера ложится на пользователя. Компьютер здесь не помощник. Конечно же, перед установкой в компью- тер новых плат расширения следует внимательно прочитать инструкцию и точно следовать ей. Подробнее о работе режима РпР будет рассказано ниже. А теперь рассмотрим принятое в персональных компьютерах стандар- тное распределение ресурсов. О стандартном распределении памяти уже говорилось в предыдущей главе. Чуть подробнее распределение адресов памяти описано в табл. 8.3. Из таблицы видно, что для памяти, входящей в состав устройств ввода/ вывода, отводится зона всего лишь в 92 Кбайта (адреса C8000...DFFFF). В этом пространстве может располагаться как оперативная память, так и по- стоянная память устройств ввода/вывода. Иногда память устройств вво- да/вывода захватывает также и зону адресов C0000...C7FFF. Адреса памяти Назначение 000000...0003FF Таблица векторов прерываний 000000.. .09FFFF Память DOS и пользовательских программ 0A0000...0AFFFF Память дисплея EGA или VGA 0B0000...0B7FFF Память монохромного дисплея MDA 0B8000...0BFFFF Память дисплея CGA 0C0000...0C3FFF ПЗУ BIOS для EGA/VGA 0C8000...0DFFFF Память устройств ввода/вывода 0E0000...0EFFFF Резерв ПЗУ BIOS на материнской плате 0F0000...0FFFFF ПЗУ BIOS на материнской плате Табл. 8.3. Распределение адресов памяти (адреса даны в шестнадцатеричном коде). 359
Глава 8 Интерфейсы персонального компьютера Важно помнить, что помимо этого распределения, общего для любых программных и аппаратных средств, существуют еще и распределения па- мяти, специфические для каждой операционной системы. Их также не- обходимо учитывать во избежание отказа при выполнении системных про- грамм. Отметим, что в современных компьютерах, конечно же, не используются давно устаревшие дисплеи стандартов CGA или MDA. Од- нако в том случае, если требуется универсальность программного обеспе- чения, надо учитывать и то, что его могут попытаться запустить на компь- ютерах с подобными дисплеями. Стандартное распределение адресов в адресном пространстве устройств ввода/вывода персонального компьютера приведено в табл. 8.4. Как уже отмечалось, стандарт допускает адресацию 64К устройств вво- да/вывода (то есть можно использовать 16 разрядов адреса). Однако по- давляющее большинство плат расширения для упрощения аппаратуры ис- пользует только 10 младших разрядов, что соответствует всего 1К (или 1024) адресов (от ООО до 3FF в шестнадцатеричном коде). При этом 16-разряд- ные порты ввода/вывода имеют четные адреса, то есть их может быть всего 512. 1 Адреса Назначение 000...01F Контроллер ПДП 1 020...03F Контроллер прерываний 1 040...05F Программируемый таймер 060...06F Контроллер клавиатуры 070...07F Часы реального времени 080...09F Регистр страницы ПДП 0A0...0BF Контроллер прерываний 2 0C0...0DF Контроллер ПДП 2 0F0...0FF Математический сопроцессор 170... 177 Накопитель на жестком диске (второй) 1F0...1F7 Накопитель на жестком диске (первый) Табл. 8.4. Распределение адресов устройств ввода/вывода. 360
Лекция 15 Системная магистраль ISA Адреса Назначение 200...207 Игровой порт (джойстик) 278...27F Параллельный порт LPT2 2C0...2DF Адаптер EGA 2 2F8...2FF Последовательный порт COM2 300...31F Прототипные платы 320...32F Накопитель на жестком диске XT 360...36F Резервные адреса 370...377 Накопитель на гибком диске (второй) 378...37F Параллельный порт LPT1 380...38F Контроллер бисинхронного обмена SDLC2 3A0...3AF Контроллер бисинхронного обмена SDLC1 3B0...3DF Адаптер VGA 3B0...3BF Адаптер дисплея MDA и принтера 3C0...3CF Адаптер EGA 1 3D0...3DF Адаптер CGA 3F0...3F7 Накопитель на гибком диске (первый) 3F8...3FF Последовательный порт СОМ1 Табл. 8.4. Распределение адресов устройств ввода/вывода (продолжение). Как видно из таблицы, значительная часть возможных адресов уже за- нята системными устройствами, свободных адресов не так много. Резерв- ные адреса — это те, которые зарезервированы под дальнейшее расшире- ние системы. В табл. 8.5 представлено стандартное распределение номеров аппарат- ных прерываний и соответствующих им номеров в таблице векторов пре- рываний (INT). Как видно из таблицы, большинство входов IRQ заняты системными ресурсами компьютера. Свободны (зарезервированы) только четыре ка- 361
Глава 8 Интерфейсы персонального компьютера. нала: 10, 11, 12, 15, причем они находятся на 16-разрядной части разъема магистрали ISA. Правда, иногда в компьютерах применяется только один параллельный порт или (гораздо реже) только один последовательный порт, и тогда свободными оказываются еще IRQ3 и IRQ5. Сигналы IRQ0...IRQ2, IRQ8 и IRQ 13 задействованы на системной плате и недоступны платам расширения. Номер Прерывания IRQ INT Назначение 0 08 Программируемый таймер 1 09 Контроллер клавиатуры 2 0А Каскадирование второго контроллера 8 70 Часы реального времени (только АТ) 9 71 Программно переадресовано на IRQ2 10 72 Резерв 11 73 Резерв 12 74 Резерв 13 75 Математический сопроцессор 14 76 Контроллер жесткого диска 15 77 Резерв 3 ОВ Последовательный порт COM2 4 ОС Последовательный порт СОМ1 5 0D Параллельный порт LPT2 6 0Е Контроллер гибкого диска 7 0F Параллельный порт LPT1 Табл. 8.5. Распределение каналов аппаратных прерываний. В компьютере используются два 8-разрядных контроллера прерываний. Сигналы IRQ0...IRQ7 относятся к первому из них, a IRQ8...IRQ15 — ко 362
Лекция 15 Системная магистраль ISA второму. Для каскадирования второго контроллера прерываний задейство- ван вход IRQ2 (рис. 8.6). В связи с этим запросы прерывания имеют сле- дующие приоритеты обслуживания в порядке возрастания: IRQ7, IRQ6, IRQ5, IRQ4, IRQ3, IRQ15, IRQ14, IRQ12, IRQ11, IRQ10, IRQ9. Такая схема включения сложилась исторически, так как в компьютере IBM PC XT ис- пользовался только один 8-канальный контроллер прерываний, а при пе- реходе на IBM PC АТ к нему был добавлен второй контроллер для удвоения количества каналов запросов прерываний. В современных компьютерах оба контроллера прерываний вместе с другими контроллерами могут вхо- дить в состав одной и той же микросхемы, но совместимость распределе- ния прерываний по-прежнему обеспечивается. Рис. 8.6. Включение двух контроллеров прерываний. Стандартное распределение каналов запроса прямого доступа к памяти представлено в табл. 8.6. Как и в случае с контроллерами прерываний, здесь применяется два контроллера, причем один из них каскадируется через другой. На каждой линии DRQ должен быть один выход ISA-устройства. Каналы, соответ- ствующие первому контроллеру ПДП (сигналы DRQ0...DRQ3), предназ- начены только для 8-битного обмена, а соответствующие второму кон- троллеру (DRQ5...DRQ7) — для 16-битного. Канал DRQ4 используется для каскадирования двух контроллеров ПДП и поэтому недоступен пользова- телям. Сигнал запроса DRQ0 имеет самый высокий приоритет, сигнал DRQ7 — самый низкий. В IBM PC XT канал DRQ0 использовался для 363
Глава 8 Интерфейсы персонального компьютера регенерации динамической памяти. Каждый канал ПДП может переда- вать данные в пределах 16-мегабайтного адресного пространства блоками длиной до 64 Кбайт (каналы 0, 1,2, 3) или до 128 Кбайт (каналы 5, 6, 7). Номер канала ПДП Назначение 0 Резервный 1 Контроллер бисинхронного обмена SDLC 2 Накопитель на гибком диске 3 Резервный 4 Каскадирование первого контроллера 5 Резервный 6 Резервный 7 Резервный Табл. 8.6. Стандартное распределение каналов прямого доступа к памяти. Естественно, обычному пользователю запомнить всю эту информацию о распределении ресурсов довольно сложно, к тому же при малейшей ошибке возможны неприятности. Именно из этих соображений фирмами Compaq Computer, Intel, Microsoft и Phoenix Technologies в 1993 году была предложена технология Plug-and-Play (РпР), возлагающая все заботы о кон- фигурации компьютера на сам компьютер. Пользователь при этом может даже ничего не знать об адресном пространстве, прерываниях и каналах прямого доступа, он просто подключает плату, и она сразу же начинает работать правильно. Правда, при этом все компоненты компьютера (ба- зовая система ввода/вывода BIOS, операционная система, прикладное программное обеспечение, подключаемые устройства) должны поддерживать режим РпР. В конце концов, технология РпР должна работать на всех используемых интерфейсах компьютера: ISA, PCI, VLB, IDE, RS-232C и т.д. Наиболее же приспособлена для этого системная шина PCI, имеющая специально предусмотренные средства, что еще более увеличивает ее шансы стать единственным стандартом системной шины. При включении компьютера с РпР его программа начального запуска BIOS определяет устройства, которые необходимы в процессе загрузки. Затем BIOS запрашивает у каждого из этих устройств его уникальный но- 364
Лекция 15 Системная магистраль ISA мер (идентификатор), хранящийся в памяти PnP-устройства. После этого BIOS разрешает все конфликты между устройствами. При этом устрой- ства, которые не нужны для загрузки компьютера, не обслуживаются. После загрузки операционной системы вступает в действие специаль- ный программный драйвер — менеджер конфигурации (configuration manager), который с помощью драйверов-нумераторов шин (bus enumerators) определяет устройства, требующие системных ресурсов. Если подключенное устройство не поддерживает РпР и не может выдать ин- формацию о себе, то такая информация должна быть заложена в форми- руемую вручную базу данных. Вся собранная информация о текущей кон- фигурации сохраняется в оперативной памяти, в области hardware tree. Эту информацию в дальнейшем использует программа-арбитр ресурсов (resource arbitrator) при распределении системных ресурсов между устрой- ствами. После этого менеджер конфигурации через нумераторы шин со- общает PnP-устройствам о том, какие ресурсы компьютера им присвое- ны, и данная информация в дальнейшем хранится в программно доступных регистрах (или flash-EPROM) этих устройств. На этом работа РпР по рас- пределению ресурсов заканчивается, и далее компьютер функционирует как обычно, обращаясь ко всем устройствам стандартным образом. Отметим также, что в некоторых компьютерах предусмотрена возмож- ность так называемого «горячего подключения» внешних устройств (то есть без выключения питания компьютера). Режим РпР должен поддер- живать и эту возможность, распределяя ресурсы не только при начальной загрузке, но и по мере подключения новых устройств.
Лекция 15 Вариант 1 1. В чем основное преимущество шины ISA перед другими шинами компьютера? □ большее число разрядов данных □ более высокое быстродействие □ больший выбор напряжений питания □ большее число слотов расширения □ большее число разрядов адресе 2. Какая операция на магистрали ISA не требует обмена сигналами? □ чтение данных из памяти □ запрос ПДП □ чтение данных из устройства ввода-вывода □ пересылка данных в режиме ПДП □ запрос прерывания 3. Какие адресные разряды участвуют в цикле регенерации памяти? □ SA0...SA7 □ SA0...SA9 □ SA0...SA15 □ SA0...SA19 □ LA17...LA23 367
Глава 8 Интерфейсы персонального компьютера Вариант 2 1. Какой сигнал используется для организации асинхронного обмена по магистрали ISA? □ I/O CH RDY □ I/O CS16 □ I/O СН СК □ AEN □ SBHE 2. Что такое удлиненный цикл обмена? □ цикл записи данных в память □ цикл чтения данных из устройства ввода-вывода □ цикл регенерации □ цикл с использованием сигнала I/O CYRDY □ цикл с использованием сигнала I/O CS16 3. Что подразумевает технология РпР? □ распределение ресурсов с помощью переключателей на плате □ распределение ресурсов с помощью программы-драйвера платы □ автоматическое распределение ресурсов □ отсутствие распределения ресурсов □ распределение ресурсов изготовителем компьютера 368
Лекция 15 Системная магистраль ISA Вариант 3 1. Какой сигнал на время ПДП отключает устройства, не участвующие в ПДП ? □ DRQ □ DACK □ AEN □ RESET DRV □ BALE 2. При каком цикле одновременно выставляются стробы обмена с памятью и с устройством ввода-вывода? □ цикл запроса прерывания □ цикл ПДП □ цикл регенерации □ цикл записи в 16-разрядную память □ удлиненный цикл записи в устройство ввода-вывода 3. Какие ресурсы компьютера не нуждаются в разделении при использовании ISA? □ каналы запроса прерываний □ адреса устройств ввода-вывода □ каналы запроса ПДП □ номера слотов плат расширения □ адреса ПЗУ 24—3199 369
Лекция 16 Дополнительные интерфейсы персонального компьютера Лекция 16. Дополнительные интерфейсы персонального компьютера В этой лекции рассказывается о некоторых часто используемых ин- терфейсах персонального компьютера, об их особенностях и протоколах обмена информацией по этим интерфейсам. Ключевые слова: Centronics, RS-232C, UART, PCI, конфигурирование, PC-card, USB. 8.2. Интерфейс Centronics Основным назначением интерфейса Centronics (отечественный аналог — стандарт ИРПР-М) является подключение к компьютеру принтеров различных типов (из-за чего его называют принтерным портом). Поэтому распределение контактов разъема, назначение сигналов, программные средства управления интерфейсом ориентированы именно на такое при- менение. В то же время, с помощью данного интерфейса можно подклю- чать к компьютеру и многие другие стандартные внешние устройства (на- пример, сканеры, дисководы и т.д.), а также нестандартные внешние устройства. Назначение 36 контактов разъема Centronics и соответствующих им контактов разъема принтера приведено в табл. 8.7. В таблице символ I обо- значает входной сигнал компьютера, а О — выходной сигнал. Сигналы интерфейса Centronics имеют следующее назначение: • D0...D7 — 8-разрядная шина данных для передачи из компьютера в принтер (предусматривается и возможность двунаправленной пере- дачи данных). • -STROBE — сигнал стробирования данных. Данные действительны как по переднему, так и по заднему фронту этого сигнала. Сигнал говорит приемнику (принтеру) о том, что можно принимать данные с шины данных. • -АСК — сигнал подтверждения принятия данных и готовности при- емника (принтера) принять следующие данные. То есть реализуется асинхронный обмен. • BUSY — сигнал занятости принтера обработкой полученных данных и неготовности принять следующую порцию данных. Активен так- же при переходе принтера в состояние off-line, при ошибке и при 24* 371
Глава 8 Интерфейсы персонального компьютера отсутствии бумаги. Компьютер начинает новый цикл передачи толь- ко после снятия -АСК и после снятия BUSY. • -AUTO FD — сигнал автоматического перевода строки. Получив его, принтер переводит каретку на следующую строку текста. Остальные сигналы не являются обязательными. • РЕ — сигнал конца бумаги. Получив его, компьютер переходит в ре- жим ожидания. Если в принтер вставить лист бумаги, то сигнал сни- мается. • SLCT — сигнал готовности приемника. С его помощью принтер со- общает о том, что он выбран и готов к работе. У многих принтеров имеет постоянно высокий уровень. • -SLCT IN — сигнал, посредством которого компьютер сообщает принтеру о том, что тот выбран, и последует передача данных. • -ERROR—сигнал ошибки принтера. Активен при внутренней ошиб- ке, переходе принтера в состояние off-line или при отсутствии бума- ги. Как видим, здесь многие сигналы дублируют друг друга. • -INIT — сигнал инициализации (сброса) принтера. Его длительность составляет не менее 2,5 мкс. По нему происходит очистка буфера печати. Контакт разъема компьютера Сигнал I/O Контакт разъема принтера 1 -STROBE О 1 2 DO о 2 3 DI о 3 4 D2 о 4 5 D3 о 5 6 D4 о 6 7 D5 о 7 8 D6 о 8 9 D7 о 9 Табл. 8.7. Назначение контактов разъемов Centronics. 372
Лекция 16 Дополнительные интерфейсы персонального компьютера Контакт разъема компьютера Сигнал I/O Контакт разъема принтера 10 -АСК I 10 11 BUSY I 11 12 РЕ I 12 13 SLCT I 13 14 -AUTO FD О 14 15 -ERROR I 32 16 -INIT о 31 17 -SLCT IN о 36 18...25 GND — 16, 17, 19...30, 33 Табл. 8.7. Назначение контактов разъемов Centronics (продолжение). Временная диаграмма цикла передачи данных представлена на рис. 8.7. Перед началом цикла передачи данных компьютер должен убедиться, что сняты сигналы BUSY и -АСК. После этого выставляются данные, форми- руется строб, снимается строб, и снимаются данные. Принтер должен ус- петь принять данные с выбранным темпом. При получении строба прин- тер формирует сигнал BUSY, а после окончания обработки данных выставляет сигнал -АСК, снимает BUSY и снимает -АСК. Затем может начинаться новый цикл. Максимальная длина соединительного кабеля по стандарту — 1,8 м. Максимальная скорость обмена — 100 Кбайт/с. Формирование и прием сигналов интерфейса Centronics производится путем записи и чтения выделенных для него портов ввода/вывода. В ком- пьютере может использоваться три порта Centronics, обозначаемых LPT1 (базовый адрес 378), LPT2 (базовый адрес 278) и LPT3 (базовый адрес ЗВС). Базовый адрес порта используется для передачи принтеру байта дан- ных. Установленные на линиях данные можно считать из этого же порта. Следующий адрес (базовый +1) служит для чтения битов состояния принтера (бит 3 соответствует сигналу -ERROR, бит 4 — сигналу SLCT, бит 5 — сигналу РЕ, бит 6 — сигналу -АСК, бит 7 — сигналу BUSY). После- дний используемый адрес (базовый + 2) применяется для записи битов 373
Глава 8 Интерфейсы персонального компьютера управления принтером (бит 0 соответствует сигналу -STROBE, бит 1 — сигналу -AUTO FD, бит 2 — сигналу -INIT, бит 3 — сигналу -SLCT IN и, наконец, бит 4, равный единице, разрешает прерывание от принтера). Рис. 8.7. Временные диаграммы цикла передачи данных в Centronics (все временные интервалы указаны в наносекундах). При сопряжении с компьютером через параллельный порт LPT како- го-нибудь другого устройства (не принтера) назначение сигналов и поря- док обмена могут быть другими, но тогда необходимы специальные про- граммные драйверы, реализующие выбранные протоколы обмена. При разработке нестандартных внешних устройств, сопрягаемых с компьюте- ром через Centronics, можно самостоятельно выбирать как назначение сиг- налов, так и протокол обмена. 8.3. Интерфейс RS-232C Интерфейс RS-232C предназначен для подключения к компьютеру стандартных внешних устройств (принтера, сканера, модема, мыши и др.), а также для связи компьютеров между собой. Основными преимущества- ми использования RS-232C по сравнению с Centronics являются возмож- ность передачи на большие расстояния (по стандарту длина соединитель- ного кабеля может доходить до 15 метров) и гораздо более простой кабель (с меньшим количеством проводов). В то же время работать с RS-232C несколько сложнее. Данные в интерфейсе RS-232C передаются в после- довательном коде (бит за битом) побайтно. Каждый байт обрамляется стар- товым и стоповыми битами. Данные могут передаваться как в одну, так и в другую сторону по разным проводам (дуплексный режим). Скорость передачи — до 14,4 Кбайт/с (115,2 Кбит/с). Компьютер имеет 25-контактный разъем (типа DB25P) или 9-контак- тный разъем (типа DB9P) для подключения кабеля интерфейса RS-232C. 374
Лекция 16 Дополнительные инте'гхуойсы персонального компьютера Назначение контактов разъема приведено в табл. 8.8 (в таблице примене- ны обозначения: I — входной сигнал компьютера, О — выходной сигнал компьютера). Сигнал Контакт DB25P Контакт DB9P I/O FG 1 — — -TxD 2 3 о -RxD 3 2 I RTS 4 7 о CTS 5 8 I DSR 6 6 I SG 7 5 — DCD 8 1 I DTR 20 4 0 RI 22 9 I Табл. 8.8. Назначение контактов разъемов интерфейса RS-232C. Назначение сигналов интерфейса RS-232C следующее: • FG — защитное заземление (экран). • -TxD — данные, передаваемые компьютером в последовательном коде (логика отрицательная). • -RxD — данные, принимаемые компьютером в последовательном коде (логика отрицательная). • RTS — сигнал запроса передачи. Активен во все время передачи. • CTS — сигнал сброса (очистки) для передачи. Активен во все время передачи. Говорит о готовности приемника. • DSR — готовность данных. Используется для задания режима модема. • SG — сигнальное заземление, нулевой провод. • DCD — обнаружение несущей данных (детектирование при- нимаемого сигнала). • DTR — готовность выходных данных. 375
Глава 8 Интерфейсы персонального компьютера • RI — индикатор вызова. Говорит о приеме модемом сигнала вызова по телефонной сети. Чаще всего используется трех- или четырехпроводная связь (для дву- направленной передачи). Схема соединения двух устройств при че- тырехпроводной линии связи показана на рис. 8.8. Внешнее Компьютер устройство TxD *—у— TxD RxD « S' -> RxD RTQ - r RTQ 1 1 J О CTS < , CTS псп x . <, ( - ППП Din * U1 n RI RI SG SG FG FG Рис. 8.8. Схема четырехпроводной линии связи для RS-232C. Для двухпроводной линии связи в случае передачи из компьютера во внешнее устройство используются сигналы SG и TxD. Все 10 сигналов ин- терфейса задействуются только при соединении компьютера с модемом. Формат передаваемых данных показан на рис. 8.9. Собственно данные (содержащие 5, 6, 7 или 8 бит) сопровождаются стартовым битом, битом четности и одним или двумя стоповыми битами. Получив стартовый бит, приемник выбирает из линии биты данных через определенные интерва- лы времени. Очень важно, чтобы тактовые частоты приемника и передат- чика были одинаковыми (допустимое расхождение — не более 10%). Ско- рость передачи по RS-232C может выбираться из ряда: ПО, 150, 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200 бит/с. Все сигналы RS-232C передаются специально выбранными уровнями, обеспечивающими высокую помехоустойчивость связи (рис. 8.10). Отме- тим, что данные передаются в инверсном коде (логической единице соот- ветствует низкий уровень, логическому нулю — высокий уровень). Обмен по RS-232C осуществляется компьютером с помощью обраще- ний по специально выделенным для этого портам СОМ1 (адреса 3F8..;3FF, прерывание IRQ4), COM2 (адреса 2F8...2FF, прерывание IRQ3), COM3 (адреса 3E8...3EF, прерывание IRQ10), COM4 (адреса 2E8...2EF, прерыва- ние IRQ11). 376
Лекция 16 Дополнительные интер<^ейсы персонального компиот>-ра Отсутствие Рис. 8.9. Формат данных RS-232C. Рис. 8.10. Уровни сигналов RS-232C на передающем и принимающем концах линии связи. Для реализации интерфейса применяются микросхемы универсальных асинхронных приемопередатчиков (УАПП, UART — Universal Asynchronous Receiver/Transmitter) типа i8250, 16550А или их аналоги. Компьютер с помощью посылки управляющих кодов может выбрать скорость обмена, формат передаваемых посылок (количество битов дан- ных, проверка четности, использование стоповых битов), разрешить или запретить прерывания, а также установить или сбросить управляющие 377
Глава 8 Интер|^йсы персонального компьютера сигналы. Имеется также возможность прочитать слово состояния UART для определения источника прерывания или состояний флагов. 8.4. Другие интерфейсы компьютера Интерфейс шины PCI (Peripheral Component Interconnect bus) стал ши- роко применяться с появлением процессоров Pentium. Шина PCI дает ком- пьютеру возможность наиболее быстро общаться с внешним миром, так как она существенно превосходит по быстродействию шину ISA. Предло- женная в начале как локальная шина для дополнения к основной магист- рали, PCI, тем не менее, обладает всеми достоинствами универсальной системной магистрали. Шина PCI имеет два варианта: 32-разрядный (в нем используется 124- контактный разъем) и 64-разрядный (188-контактный разъем). При этом гарантируется как прямая, так и обратная совместимость 32- и 64-разряд- ных устройств. Чаще всего применяется 32-разрядный вариант PCI. Тактовая частота PCI составляет 33 МГц (однако допускается и частота 66 МГц). Максимальная теоретически возможная скорость обмена при так- товой частоте 33 МГц достигает 132 или 264 Мбайт/с для 32 и 64 разрядов данных, соответственно, что в 20 раз превышает пропускную способность ISA. Предусмотрена возможность включения плат с напряжением питания как 5 В, так и 3,3 В (в раздельные разъемы). На магистрали предусмотрен арбитраж, то есть возможность поочередного захвата шины несколькими задатчиками, с разрешением конфликтов между ними. Предусмотрен высокоскоростной обмен по магистрали без участия процессора. Возмож- на автоконфигурация, то есть автоматическое распределение ресурсов между включенными платами (по принципу РпР). Каждое из устройств шины может захватить ее и провести необходимый обмен. Шина PCI представляет собой открытый непатентованный стандарт, который поддерживают все основные производители персональных ком- пьютеров и периферийных контроллеров. Сейчас она рассматривается как основа для таких распространенных компьютерных платформ, как DOS/ Windows, Macintosh и UNIX. Ведущие производители микросхем уже вы- пускают специальные комплекты микросхем для ее поддержки. Незави- симость от типа процессора обещает шине PCI большое будущее. Сейчас она занимает второе место по популярности после ISA. Большим недостатком шины PCI по сравнению с ISA является огра- ниченное количество устройств на шине (не более четырех), для большего количества устройств необходимо применение мостов PCI—PCI. Так как в компьютере одним из PCI-устройств является контроллер шины (то есть центральный процессор), для подключения карт расширения остается все- го три разъема (слота). Один из PCI-слотов, как правило, используется 378
Лекция 16 Дополнительные интерфейсы персонального компьютера для подключения контроллера дисплея, другой чаще всего применяется для включения контроллера локальной сети. Поэтому, несмотря на по- тенциально большие возможности PCI, в компьютере для дополнительных карт расширения остается всего один слот. К тому же надо учесть, что раз- работка и отладка PCI-устройств гораздо сложнее, чем ISA-устройств, а большее быстродействие PCI по сравнению с ISA нужно далеко не для всех задач. Поэтому о полном вытеснении шины ISA пока что речь не идет. Шина PCI относится к мультиплексированным шинам, она имеет пол- ностью мультиплексированную шину адреса/данных. При этом адрес мо- жет быть 32 разрядным или 64-разрядным (он передается по 32-разрядной шине за два такта, сначала младшие разряды, затем старшие) Точно так же и данные могут передаваться как 32-разрядные, так и 64-разрядные (за два такта при 32-разрядной шине). В 64-разрядной версии PCI шина адреса/данных имеет 64 разряда. Основной режим обмена по шине — синхронный, тактируемый поло- жительными фронтами тактового сигнала шины, но возможен и асинх- ронный обмен (как и в случае ISA), В цикл обмена (или транзакцию) вхо- дит фаза адреса (в начале) длительностью один такт и фаза данных длительностью в один или несколько тактов. Основные сигналы шины PCI следующие: • AD0...AD31 — шина адреса/данных. Адрес передается в начале цик- ла, затем — данные; • -C/BE0...-C/BE3 (Command/Byte Enable) — четыре линии, которые в фазе адреса определяют один из 16 возможных типов цикла пере- дачи данных (табл. 8.9), а в фазе данных определяют действитель- ность байтов данных; • -FRAME — строб адреса, активен во время передачи данных; • -IRDY (Initiator Ready) — готовность задатчика (инициатора обме- на) к обмену данными; • -TRDY (Target Ready) — готовность исполнителя (целевого устрой- ства) к обмену данными; • -DEVSEL (Device Select) — подтверждение опознания адреса от ис- полнителя; • -STOP — запрос на останов текущего цикла от исполнителя к задат- чику; • -RST — сброс всех устройств; • CLK — тактовый сигнал шины; • PAR — биг четности для линий AD0...AD31 и С/ВЕО... С/ВЕЗ; • -PERR — сигнал ошибки четности; • -REQ0...-REQ3 — запрос от PCI-устройств на захват шины; • -GNT0...-GNT3 — предоставление шины РС1-устройствам; 379
Глава 8 Интерфейсы персонального компьютера • -REQ64 — запрос на 64-битный обмен; • -ASK64 — подтверждение 64-разрядного обмена; • -INTRA, -INTRB, -INTRC, -INTRD — линии запросов прерываний; • IDSEL — выбор устройства-исполнителя в циклах записи и чтения конфигурации. Сигналы С/ВЕ Команда 0000 Подтверждение прерывания 0001 Специальный цикл 0010 Чтение порта ввода/вывода ООН Запись в порт ввода/вывода 0100...0101 Зарезервировано оно Чтение из памяти 0111 Запись в память 1000...1001 Зарезервировано 1010 Чтение конфигурации 1011 Запись конфигурации 1100 Множественное чтение памяти 1101 Двойной цикл адреса 1110 Чтение строки памяти 1111 Запись в память и проверка Табл. 8.9. Типы циклов обмена PCI. Операция конфигурирования (циклы записи и чтения конфигурации) служит для автоматического распределения ресурсов компьютера при вклю- чении питания. В этих циклах для выбора (адресации) конфигурируемого устройства-исполнителя применяется специальный сигнал IDSEL, пере- даваемый в фазе адреса. Каждому PCI-устройству соответствует 256-байтная область конфигурации, где находится информация как о самом устройстве, так и о выделенных ему ресурсах. Область конфигурации не относится ни к 380
Лекция 16 Дополнительные интерфейсы персонального компьютера адресному пространству памяти, ни к адресному пространству устройств ввода/вывода. Компьютер распределяет ресурсы между устройствами в со- ответствии с их особенностями, потребностями и ограничениями. При синхронном обмене (рис. 8.11) в начале цикла (адресная фаза) по шине AD передается код адреса, а по линиям С/ВЕ — код типа цикла (ко- манда). Действительность адреса определяется сигналом -FRAME (по по- ложительному фронту CLK после начала сигнала -FRAME). После опоз- нания адреса исполнитель выставляет сигнал подтверждения выборки -DEVSEL, после чего начинается фаза данных. То есть можно сказать, что адрес передается асинхронно. В фазе данных по шине данных передаются слова данных, тактируемые положительными фронтами сигнала CLK. Сиг- налы готовности -IRDY и -TRDY выставляются в начале фазы данных и остаются активными до окончания цикла. По линиям -С/ВЕ в фазе дан- ных передаются сигналы разрешения байтов (то есть определяется формат передаваемых данных). Перед последним тактом передачи данных задат- чик снимает сигнал -FRAME, после чего снимаются сигналы -IRDY, -TRDY и -DEVSEL. CLK -FRAME AD -С/ВЕ -IRDY -TRDY -DEVSEL 1 — / \ / у / ! \i i V । । । । । : : : i : < Адрес Дан. 1 (( Дан. 2 j( Дан. 3 , ( Дан. 4 ) {Командах 1 Разрешение байтов 1 Z ) i : 1 я ( ! \. Рис. 8.11. Синхронный обмен по шине PCI. При асинхронном обмене по шине PCI (рис. 8.12) фаза адреса осуще- ствляется как в предыдущем случае, а в фазе данных как задатчик, так и исполнитель могут приостанавливать обмен снятием своих сигналов го- товности (соответственно, -IRDY и -TRDY). Цикл обмена (транзакция) при этом удлиняется за счет введения дополнительных тактов ожидания. Сигналы -FRAME и -DEVSEL вырабатываются аналогично случаю синх- ронного обмена. 381
Глава 8 Интерфейсы персонального компьютера CLK -FRAME AD -С/ВЕ -IRDY -TRDY 11111 1 1 1 1 1 1 1 у ' г( Адрес!) 1 Дан. 1 — Дан. 2 —| Дан. 3 |— 1 1 (Командах 1 Разрешение байтов 1 J 1 \ ! Г 1 [ Ожи- У 1 1 г—-1 Ожи- — 1 1 Ожи- 1 — дание ] -devsel------:------^дание ; ;дание; Рис. 8.12. Асинхронный обмен по шине PCI. И в заключение несколько слов еще о двух внешних интерфейсах ком- пьютера. Стандарт интерфейса PCMCIA (Personal Computer Memory Card International Association) или PC-card был предложен в 1990 году для пор- тативных компьютеров (notebook) и используется для подключения к ним различных внешних устройств: модулей памяти (в том числе флэш-памя- ти), модемов и факс-модемов, сетевых контроллеров, дополнительных на- копителей и т.д. PC-card-адаптеры отличаются очень малыми габаритами (с обычную кредитную карточку) и довольно высокой, по сравнению с другими аналогичными устройствами, стоимостью. Сейчас уже выпуска- ются PC-card-адаптеры для обычных (настольных) компьютеров. Если первая версия PC-card была предназначена только для модулей памяти, то вторая (1991 год) позволяла включать устройства ввода/вывода и под- держивала два напряжения питания (5 В и 3,3 В). Последние разработки поддерживают режим РпР. Для подключения PCMCIA-карт используется 68-контактный разъем. Разрядность передаваемых данных — 16, количество разрядов адреса — 26, что позволяет адресовать до 64 Мбайт памяти. Тактовая частота шины - до 33 МГц. Стандарт определяет три различных длины контактов разъема для обеспечения правильной последовательности подачи напряжения пи- тания при подключении и отключении карты во время работы компьютера. Компьютер имеет обычно 2—3 слота (разъема) для PC-card. Стандарт пре- дусматривает автоматическое распределение ресурсов компьютера для ус- тройств PC-card (режим РпР). Последовательный интерфейс USB (Universal Serial Bus) специально разрабатывался для простого подключения периферийных устройств. 382
Лекция 16 Дополнительные интерфейсы персонального компьютера Шина USB представляет собой 4-проводную линию связи с пропускной способностью 1,5 Мбайт/с (12 Мбит/с). К ней можно подключать до 127 устройств по древовидной схеме с использованием одного или несколь- ких распределительных устройств. Длина соединительного кабеля между отдельными устройствами USB может достигать 5 метров. В шине USB реализована поддержка режима РпР и возможность «горячего» подклю- чения (без выключения питания). В данном стандарте уже выпускаются модемы, клавиатуры, мыши, сканеры, цифровые фотокамеры и т.д. Важ- но, что в шине предусмотрена подача на подключаемые устройства пита- ющего напряжения (в последовательном интерфейсе RS-232C, например, этого нет).
Лекция 16 Дополнительные интерфейсы персонального компьютера Вариант 1 1. Когда компьютер начинает цикл обмена по интерфейсу Centronics? □ при наличии кода, требующего передачи □ при готовности принтера □ сразу после окончания предыдущего цикла обмена □ при поступлении запроса от принтера 2. Как приемник сигнала RS-232C принимает биты данных? □ по фронту специального стробирующего сигнала □ по уровню специального стробирующего сигнала □ в момент поступления стартового бита □ с временной привязкой к стоповому биту □ через равные промежутки времени, начиная от стартового бита 3. Выберите неверное утверждение: □ PCI — быстродействующая шина □ PCI — немультиплексированная шина □ на шине PCI возможен синхронный и асинхронный обмен □ на шине PCI предусмотрена автоконфигурация □ количество слотов шины PCI мало 25 — 3199 385
Глава 8 Интерфейсы персонального компьютера Вариант 2 1. Как компьютер узнает об отсутствии бумаги в принтере при использовании Centronics? □ с помощью специального сигнала от принтера □ принтер долго не дает разрешения на обмен □ компьютер посылает специальный запрос о наличии бумаги □ компьютер не может узнать об отсутствии бумаги □ принтер выдает особую комбинацию нескольких сигналов 2. Что входит в транзакцию на шине PCI? ч □ фаза адреса и несколько фаз пересылки данных □ одна или несколько фаз пересылки данных □ полный процесс автоконфигурации □ фаза адреса □ запрос и предоставление прерывания 3. Какое главное преимущество интерфейса USB? □ максимальная скорость обмена □ минимальное число соединительных проводов □ максимальная длина соединительного кабеля □ скоростная последовательная передача □ максимально простой протокол обмена 386
Лекция 16 Дополнительные интерфейсы персонального компьютера Вариант 3 1. Каковы основные преимущества интерфейса Centronics перед RS-232C? □ большая длина кабеля, наличие линий питания □ двунаправленная передача, последовательная передача □ более высокая скорость, более простой протокол обмена □ более высокая скорость, меньше проводов □ большая помехоустойчивость, большая длина кабеля 2. Какого цикла нет на шине PCI? □ чтение конфигурации □ запись конфигурации □ подтверждение прерывания □ множественное чтение памяти □ изменение конфигурации 3. Выберите неверное утверждение: □ шина PC-card быстрее шины ISA □ шина PC-card последовательная □ шина PC-card имеет ту же разрядность данных, что и ISA □ шина PC-card допускает адресацию 64 Мбайт □ шина PC-card поддерживает режим РпР 25* 387
Системы команд некоторых микропроцессоров ПРИЛОЖЕНИЕ Системы команд некоторых микропроцессоров Система команд микропроцессора 18080/8085 Мнемоника Функция команды ACI Сложение байта с аккумулятором с переносом ADC Сложение регистра с аккумулятором с переносом ADD Сложение регистра с аккумулятором ADI Сложение байта с аккумулятором ANA Логическое И с регистром или памятью ANI Логическое И с байтом CALL Вызов подпрограммы CC Вызов подпрограммы при переносе CM Вызов подпрограммы при минусе CMA Инвертирование аккумулятора CMC Инвертирование флага переноса CMP Сравнение операндов CNC Вызов подпрограммы при отсутствии переноса CNZ Вызов подпрограммы при неравенстве нулю CP Вызов подпрограммы при плюсе CPE Вызов подпрограммы при четности CPI Сравнение байта с аккумулятором CPO Вызов подпрограммы при нечетности 389
Приложение Мнемоника Функция команды CZ Вызов подпрограммы при равенстве нулю DAA Десятичная коррекция результата сложения DAD Сложение содержимого пар регистров DCR Декремент регистра или памяти DCX Декремент пары регистров DI Запрет прерывания El Разрешение прерывания HLT Останов IN Ввод INR Инкремент регистра или памяти INX Инкремент пары регистров JC Переход, если есть перенос JM Переход, если минус JMP Безусловный переход JNC Переход, если нет переноса JNZ Переход, если не равно нулю JP Переход, если плюс JPE Переход, если четность JPO Переход, если нечетность JZ Переход, если нуль LDA Загрузка аккумулятора по указанному адресу LDAX Загрузка аккумулятора по адресу, указанному парой регистров LHLD Загрузка регистров из памяти 390
Системы команд некоторых микроор<<цессоров Мнемоника Функция команды LXI Загрузка парных регистров MOV Пересылка между памятью и регистрами MVI Пересылка байта в память NOP Нет операции ORA Логическое ИЛИ с регистром или памятью ORI Логическое ИЛИ с байтом OUT Вывод PCHL Загрузка счетчика команд POP Извлечение из стека PUSH Сохранение в стеке RAL Циклический сдвиг влево через перенос RAR Циклический сдвиг вправо через перенос RC Возврат при переносе RET Возврат из подпрограммы RLC Циклический сдвиг влево RM Возврат при минусе RNC Возврат при отсутствии переноса RNZ Возврат, если не равно нулю RP Возврат при плюсе RPE Возврат при четности RPO Возврат при нечетности RRC Циклический сдвиг вправо RST Повторный запуск RZ Возврат при нуле 391
Приложение Мнемоника Функция команды SBB Вычитание памяти или регистра с заемом SBI Вычитание байта с заемом SHLD Выгрузка регистров в память SPHL Загрузка указателя стека STA Выгрузка аккумулятора в память STAX Выгрузка аккумулятора в пару регистров STC Установка флага переноса SUB Вычитание регистра или памяти SUI Вычитание байта XCHG Обмен данными между парами регистров XRA Исключающее ИЛИ с регистром или памятью XRI Исключающее ИЛИ с байтом XHTL Обмен данными между регистром и указателем стека 392
Системы команд некоторых микропроцессоров Система команд микропроцессора Т-11 фирмы DEC Мнемоника Функция команды HALT Остановка WAIT Ожидание RTI Возврат из прерывания ВРТ Прерывание для отладки ЮТ Прерывание для ввода/вывода RESET Сброс внешних устройств RTT Возврат из прерывания JMP Прыжок RTS Возврат из подпрограммы JSR Вызов подпрограммы EMT Прерывания для системных программ TRAP Прерывание NOP Нет операции CLC Очистка флага С CLV Очистка флага V CLZ Очистка флага Z CLN Очистка флага N SEC Установка флага С SEV Установка флага V SEZ Установка флага Z SEN Установка флага N see Установка всех флагов ccc Очистка всех флагов 393
Приложение Мнемоника Функция команды SWAB Перестановка байтов CLR Очистка COM Инвертирование INC Инкремент DEC Декремент NEG Изменение знака ADC Прибавление переноса SBC Вычитание переноса TST Проверка ROR Циклический сдвиг вправо ROL Циклический сдвиг влево ASR Арифметический сдвиг вправо ASL Арифметический сдвиг влево MARK Восстановление указателя стека SXT Расширение знака MTPS Запись слова состояния MFPS Чтение слова состояния MOV Пересылка CMP Сравнение BIT Проверка битов BIC Очистка битов BIS Установка битов XOR Исключающее ИЛИ ADD Сложение 394
Системы команд некоторых микропроцессоров Мнемоника Функция команды SUB Вычитание BR Безусловный переход BNE Переход, если не равно BEQ Переход, если равно BGE Переход, если больше или равно BLT Переход, если меньше BGT Переход, если больше BLE Переход, если меньше или равно BPL Переход, если плюс BMI Переход, если минус BHI Переход, если выше BLOS Переход, если ниже или равно BVC Переход, если нет переполнения BVS Переход, если есть переполнение вес Переход, если нет переноса BCS Переход, если есть перенос SOB Вычитание единицы из операнда в регистре и переход, если не равно нулю MUL Умножение DIV Деление ASH Многократный арифметический сдвиг одного слова ASHC Многократный арифметический сдвиг двойного слова FADD Сложение с плавающей точкой FSUB FMUL Вычитание с плавающей точкой Умножение с плавающей точкой FDIV Деление с плавающей точкой 395
Приложение Система команд микропроцессора MC68000 Мнемоника Функция команды ADD Сложение SUB Вычитание NEG Инверсия ADDX Сложение с расширением SUBX Вычитание с расширением NEGX Инверсия с расширением ABCD Десятичное сложение с расширением SBCD Десятичное вычитание с расширением NBCD Десятичная инверсия с расширением MULS Умножение со знаком MULU Умножение без знака DIVS Деление со знаком DIVU Деление без знака EXT Расширение знака CLR Очистка операнда CMP Сравнение TST Проверка TAS Проверка и установка MOVE Пересылка операнда MOVEP Пересылка данных с периферийного устройства MOVEM Пересылка группы регистров MOVEQ Быстрая пересылка SWAP Обмен половин регистра 396
Системы команд некоторых микропроцессоров Мнемоника Функция команды EXG Обмен регистров LEA Загрузка действительного адреса PEA Сохранение в стеке действительного адреса LINK Связь стека UNLK Отцепка стека AND Логическое И OR Логическое ИЛИ EOR Логическое Исключающее ИЛИ NOT Логическое НЕ (инверсия) ASL Арифметический сдвиг влево ASR Арифметический сдвиг вправо LSL Логический сдвиг влево LSR Логический сдвиг вправо ROL Циклический сдвиг влево без переноса ROR Циклический сдвиг вправо без переноса ROXL Циклический сдвиг влево с переносом ROXR Циклический сдвиг вправо с переносом BCLR Проверка и очистка бита BSET Проверка и установка бита BCHG Проверка и изменение бита BTST Проверка бита JMP Прыжок BRA Безусловный переход JSR Переход к подпрограмме 397
Приложение Мнемоника Функция команды BSR Переход к подпрограмме RTS Возврат из подпрограммы RTR Возврат из подпрограммы вес Переход, если нет переноса BCS Переход, если есть перенос BEQ Переход, если равно BF Переход, если не истинно BGE Переход, если больше или равно BGT Переход, если больше В HI Переход, если выше BLE Переход, если меньше или равно BLS Переход, если не выше BLT Переход, если меньше BMI Переход, если минус BNE Переход, если не равно BPL Переход, если плюс ВТ Переход, если истинно BVC Переход, если нет переполнения BVS Переход, если есть переполнение DB уел. Вычитание единицы из регистра данных и пере- ход, если выполняется условие (всего 16 условий, см. BCC...BVC) S уел. Установить при выполнении условия (всего 16 условий, см. BCC...BVC) TRAP Прерывание 398
Системы команд некоторых микропроцессор? Мнемоника Функция команды TRAPV Прерывание при переполнении СНК Проверить регистр на границах диапазона ANDI Логическое И с регистром состояния ORI Логическое ИЛИ с регистром состояния EORI Исключающее ИЛИ с регистром состояния RESET Сброс внешних устройств STOP Остановка работы RTE Возврат из исключительной ситуации 399
Приложение Система команд микропроцессора 18086/8088 Мнемоника Функция команды ААА ASCII- коррекция результата сложения AAD ASCII- коррекция перед делением ДАМ ASCII- коррекция результата умножения AAS ASCII- коррекция результата вычитания ADC Сложение с переносом ADD Сложение AND Конъюнкция (функция И) CALL Вызов подпрограммы CBW Преобразование байта в слово CLC Сброс флага переноса CLD Сброс флага направления CLI Сброс флага прерывания CMC Инвертирование флага переноса CMP Сравнение операндов CMPS Сравнение символов строки CWD DAA Преобразование слова в двойное слово Десятичная коррекция результата сложения DAS Десятичная коррекция результата вычитания DEC Декремент операнда DIV Беззнаковое деление ESC Переключиться на сопроцессор HLT Останов IDIV Знаковое деление 400
Системы команд некоторых микропроцессоров Мнемоника Функция команды IMUL Знаковое умножение IN Ввод операнда из порта INC Инкремент операнда INT Прерывание INTO Прерывание при переполнении IRET Возврат из прерывания JB (JBNAF) Переход, если ниже JBE (JNA) Переход, если ниже или равно JE (JZ) Переход, если равно JL (JNGE) Переход, если меньше JLE (JNG) Переход, если меньше или равно JLNE (JG) Переход, если больше JMP Безусловный переход JNB (JAE) Переход, если не ниже JNBE (JA) Переход, если выше JNE (JNZ) Переход, если не равно JNL(JGE) Г ереход, если не меньше JNO Переход, если нет переполнения JNP (JPO) Переход, если нечетность JNS Переход, если положительный знак JO Переход, если переполнение JP (JPE) Переход, если четность JS Переход, если отрицательный знак LAHF Загрузка признаков в регистр АН __ТЮО 401
Приложение Мнемоника Функция команды LDS Загрузка селектора в регистр DS LEA Загрузка эффективного адреса в регистр LES Загрузка селектора в регистр ES LOCK Префикс захвата шины LODS Загрузка символа строки LOOP Реализация цикла LOOPE (LOOPZ) Зациклить, если равно (если нуль) LOOPNE (LOOPNZ) Зациклить, если не равно (если не нуль) MOV Пересылка данных MOVS Пересылка символа строки MUL Беззнаковое умножение NEG Перемена знака NOP Отсутствие операции NOT Логическая инверсия (операция НЕ) OR Дизъюнкция (операция ИЛИ) OUT Вывод операнда в порт POP Чтение операнда из стека POPF Чтение из стека содержимого регистра флагов PUSH Запись операнда в стек PUSHF Запись в стек содержимого регистра флагов RCL Циклический сдвиг влево RCR Циклический сдвиг вправо 402
Системы команд некоторых мик.'-опроцессо^а Мнемоника Функция команды REP Префикс повторения операции со строками символов REPE (REPZ) Повторение при совпадении (при равенстве нулю) REPNE (REPNZ) Повторение для несовпадения (при неравен- стве нулю) RET Возврат из подпрограммы ROL Циклический сдвиг влево через перенос ROR Циклический сдвиг вправо через перенос SAHF Запись содержимого АН в регистр флагов SAL (SHL) Арифметический сдвиг влево SAR Арифметический сдвиг вправо SBB Вычитание с заемом SCAS Сканирование строк символов SHR Логический сдвиг вправо STC Установка флага переноса STD Установка флага направления STI Установка флага прерываний STOS SUB Запись символов в строку Вычитание TEST Логическое сравнение операндов WAIT Ожидание XCHG Обмен операндов XLAT Преобразование кодов XOR Исключающее ИЛИ 26* 403
Приложение Система команд микропроцессора i486 Мнемоника Функция команды ААА ASCII- коррекция результата сложения AAD ASCII- коррекция перед делением ДАМ ASCII- коррекция результата умножения AAS ASCII- коррекция результата вычитания ADC Сложение с переносом ADD Сложение AND Конъюнкция (функция И) ARPL Коррекция запрещенного уровня привилегий BOUND Проверка границ массива BSF Прямое сканирование битов BSR Обратное сканирование битов BSWAP Перестановка байтов ВТ Проверка бита BTC BTR Проверка и инверсия бита Проверка и сброс бита BTS Проверка и установка бита CALL Вызов подпрограммы CBW Преобразование байта в слово CDO Преобразование двойного слова в четверное CLC Сброс флага переноса CLD Сброс флага направления CLI Сброс флага прерывания CLTS Сброс флага переключения задачи 404
Лекция 16 Дополнительные интерфейсы персонального компьютера Мнемоника Функция команды СМС Инвертирование флага переноса СМР Сравнение операндов CMPXCHG Сравнение операндов и обмен CMPS Сравнение символов строки CWD Преобразование слова в двойное слово DAA Десятичная коррекция результата сложения DAS Десятичная коррекция результата вычитания DEC Декремент операнда DIV Беззнаковое деление ENTER Обращение к процедуре HLT Останов I DIV Знаковое деление IMUL Знаковое умножение IN Ввод операнда из порта INC Инкремент операнда INS Ввод символа строки INT Прерывание INTO Прерывание при переполнении IRET Возврат из прерывания INVD Аннулирование строки кэш-памяти INVLPG Аннулирование указателя входа в таблицу страниц JECXZ Условный переход по (ЕСХ)=0 JMP Безусловный переход JB (JBNAF) Переход, если ниже 405
Глава 8 Интерфейсы персонального компьютера Мнемоника Функция команды JBE (JNA) Переход, если ниже или равно JE (JZ) Переход, если равно JL (JNGE) Переход, если меньше JLE (JNG) Переход, если меньше или равно JLNE (JG) Переход, если больше JNB (JAE) Переход, если не ниже JNBE (JA) Переход, если выше JNE (JNZ) Переход, если не равно JNL (JGE) Переход, если не меньше JNO Переход, если нет переполнения JNP (JPO) Переход, если нечетность JNS Переход, если положительный знак JO Переход, если переполнение JP (JPE) Переход, если четность JS Переход, если отрицательный знак LAHF Загрузка признаков в регистр АН LAR Загрузка прав доступа LDS Загрузка селектора в регистр DS LES Загрузка селектора в регистр ES LFS Загрузка селектора в регистр FS LGS Загрузка селектора в регистр GS LSS Загрузка селектора в регистр SS LEA Загрузка эффективного адреса в регистр LEAVE Выход из процедуры 406
Системы команд некоторых микр.лроцессоров Мнемоника Функция команды LGDT Загрузка регистра таблицы глобальных дескрипторов LIDT Загрузка регистра таблицы дескрипторов прерываний LLDT Загрузка регистра таблицы локальных дескрипторов LMSW Загрузка слова состояния машины (MSW) LOCK Префикс захвата шины LODS Загрузка символа строки LOOP Реализация цикла LOOPE (LOOPZ) Зациклить, если равно (если нуль) LOOPNE (LOOPNZ) Зациклить, если не равно (если не нуль) LTR Загрузка регистра задачи MOV Пересылка данных MOVS Пересылка символа строки MOVSX Пересылка с расширением знака MOVZX Пересылка с расширением нулями MUL Беззнаковое умножение NEG Перемена знака NOP Отсутствие операции NOT Логическая инверсия (операция НЕ) OR Дизъюнкция (операция ИЛИ) OUT Вывод операнда в порт OUTS Вывод символа строки POP Чтение операнда из стека 407
Приложение Мнемоника Функция команды РОРА Чтение из стека содержимого всех регистров POPF Чтение из стека содержимого регистра флагов PUSH Запись операнда в стек PUSHA Запись в стек содержимого всех регистров PUSHF Запись в стек содержимого регистра флагов RCL Циклический сдвиг влево RCR Циклический сдвиг вправо REP Префикс повторения операции со строками символов REPE (REPZ) Повторение при совпадении REPNE (REPNZ) Повторение при несовпадении RET Возврат из подпрограммы ROL Циклический сдвиг влево через перенос ROR Циклический сдвиг вправо через перенос SAHF Запись содержимого АН в регистр флагов SAL (SHL) Арифметический сдвиг влево SAR Арифметический сдвиг вправо SBB Вычитание с заемом SCAS Сканирование строк символов SETycn. Условная установка байта (16 условий — см. команды условных переходов JB...JS) SGDT Запись содержимого регистра GDT SHR Логический сдвиг вправо SHLD Двухоперандный сдвиг влево 408
Системы команд некотор ых микрон; < цессоров Мнемоника Функция команды SHRD Двухоперандный сдвиг вправо SIDT Запись содержимого регистра IDT SLDT Запись содержимого регистра LDT SMSW Запись слова состояния машины STC Установка флага переноса STD Установка флага направления STI Установка флага прерываний STOS Запись символов в строку SUB Вычитание TEST Логическое сравнение операндов VERR Проверка доступности сегмента при чтении VERW Проверка доступности сегмента при записи WAIT Ожидание XADD Обмен операндами и сложение XCHG Обмен XLAT Преобразование кодов XOR Исключающее ИЛИ Команды, выполняемые блоком обработки чисел с плавающей точкой FABS Получение абсолютного значения FADD Сложение вещественных чисел FADDP Сложение вещественных чисел с чтением из стека FBLD Загрузка двоично-десятичного числа 409
Приложение Мнемоника Функция команды FBSTP Запись в память двоично-десятичного числа с чтением из стека FCHS Изменение знака числа FCLEX Сброс флагов в регистре состояния SR FCOM Сравнение вещественных чисел FCOMP Сравнение вещественных чисел с чтением из стека FCOMPP Сравнение вещественных чисел с двойным чтением из стека FCOS Вычисление косинуса FDECSTP Декремент содержимого указателя стека FDIV Деление вещественных чисел FDIVP Деление вещественных чисел с чтением из стека FDIVR Обратное деление вещественных чисел FDIVRP Обратное деление вещественных чисел с чтением из стека FFREE Освобождение регистра ST F1ADD Сложение целых чисел FICOM Сравнение целых чисел FICOMP Сравнение целых чисел с чтением из стека FIDIV Деление целых чисел FIDIVR Обратное деление целых чисел FILD Загрузка целого числа FIMUL Умножение целых чисел FINCSTP Декремент содержимого указателя стека 410
Системы команд некоторых ми^ -.п .-цессо^. в Мнемоника Функция команды FINIT Инициализация FPU FIST Запись в память целого числа FISTP Запись в память целого числа с чтением из стека FISUB Вычитание целых чисел FISUBR Обратное вычитание целых чисел FLD Загрузка вещественного числа FLD1 Загрузка единицы FLDCW Загрузка управляющего числа FLDENV Загрузка содержимого вспомогательных регистров FLDL2E Загрузка log2e FLDL2T Загрузка log210 FLDLG2 Загрузка lg2 FLDLN2 Загрузка 1п2 FLDPL Загрузка числа Пи FLDZ Загрузка нуля FMUL Умножение вещественных чисел FMULP Умножение вещественных чисел с чтением из стека FNOP Отсутствие операции FPREM Нахождение частичного остатка деления FPREM1 Нахождение частичного остатка в стандарте IEEE-475 FPATAN Вычисление частичного арктангенса FPTAN Вычисление частичного тангенса 411
Приложение Мнемоника Функция команды FRNDINT Округление до целого значения FRSTOR Загрузка содержимого вспомогательных регист- ров и арифметического стека FSAVE Запись в память содержимого вспомогательных регистров и арифметического стека FSCALE Масштабирование (изменение порядка числа) FSIN Вычисление синуса FSINCOS Вычисление синуса и косинуса FSQRT Вычисление квадратного корня FST Запись в память вещественного числа FSTCW Передача слова состояния в память FCTENV Запись в память содержимого вспомогательных регистров FSTP Запись в память вещественного числа с чтением из стека FSTSW Передача слова состояния в память FSTSWAX Передача слова состояния в регистр АХ FSUB Вычитание вещественных чисел FSUBP Вычитание вещественных чисел с чтением из стека FSUBR Обратное вычитание вещественных чисел FSUBRP Обратное вычитание вещественных чисел с чтением из стека FTST Сравнение с нулем FUCOM Сравнение неупорядоченных чисел 412
Системы команд некоторых микропроцессоров Мнемоника Функция команды FUCOMP Сравнение неупорядоченных чисел с чтением из стека FUCOMPP Сравнение неупорядоченных чисел с двойным чтением из стека FXAM Анализ вещественного числа FXCH Обмен данными между регистрами стека FXTRACT Вычисление мантиссы и порядка F2XM1 Вычисление функции (2х-1) FYL2X Вычисление функции ylogx FYL2XP1 Вычисление функции ylog (х+1) FWAIT Ожидание готовности FPU 413
Система команд микроконтроллеров семейства MCS-51 (фирмы Intel, Atmel, Analog Devices) Мнемоника Функция команды ADD Сложение с аккумулятором ADDC Сложение с учетом переноса SUBB Вычитание из аккумулятора INC Инкремент DEC Декремент MUL Умножение DIV Деление DA Двоично-десятичная коррекция аккумулятора ANL Логическое И ORL Логическое ИЛИ XRL Исключающее ИЛИ CLR Очистка аккумулятора или бита CPL Инверсия аккумулятора или бита RL Сдвиг аккумулятора влево RLC Сдвиг аккумулятора влево через перенос RR Сдвиг аккумулятора вправо RRC Сдвиг аккумулятора вправо через перенос SWAP Перестановка тетрад аккумулятора MOV Пересылка MOVC Пересылка связанного байта в аккумулятор MOVX Пересылка байта из внешней памяти или во внешнюю память 414
Системы команд некоторых микропроцессоров । —........... 'Г1иилш'^имг,апэт1чил Мнемоника Функция команды PUSH Сохранение в стеке POP Извлечение из стека ХСН Обмен информацией XCHD Обмен младшими тетрадами между ячейкой памяти и аккумулятором SETB Установка бита JC Переход, если есть перенос JNC Переход, если нет переноса JB Переход, если бит установлен JNB Переход, если бит не установлен JBC Переход, если бит установлен, и очистка этого бита ACALL Короткий переход к подпрограмме с возвратом LCALL Длинный переход к подпрограмме с возвратом RET Возврат из подпрограммы RETI Возврат из прерывания AJMP Короткий переход без возврата UMP Длинный переход без возврата SJMP Короткий переход со смещением JMP Переход относительно указателя данных JZ Переход, если аккумулятор равен нулю JNZ Переход, если аккумулятор не равен нулю CJNE Переход, если не равно DJNZ Декремент и переход, если не равно нулю NOP Нет операции 415
южение Словарь терминов и сокращений 2S (2-States Output)—выход с двумя активными состояниями, 2С, стан- дартный выход ТТЛ. 3S (3-States Output) — выход с тремя состояниями, ЗС. Abort — аварийное завершение; тип прерывания. AND — логическая функция И. ALU (Arithmetic and Logic Unit) — АЛУ, арифметико-логическое устрой- ство. APIC (Advanced Peripheral Interrupt Controller) — усовершенствованный контроллер прерываний. ASCII (American Standard Code for Information Interchange) — стандарт- ный американский код обмена символьной информацией. BCD (Binary-Coded Decimal) — двоично-десятичный код. Bin — двоичная система счисления. BIOS (Basic Input/Output System) — базовая система ввода/вывода (в компьютере). BIST (Built In Self Test) — встроенное самотестирование. Buffer — буфер. Burst Mode — режим пакетной передачи информации по магистрали (один адрес на весь пакет данных). Bus — шина, магистраль. Cache — кэш-память. CAS (Column-Address Select) — сигнал выбора адреса столбца (в микро- схемах динамической памяти). Centronics — стандартный 8-разядный параллельный интерфейс. Chip — микросхема, чип. Chipset — набор микросхем контроллеров для организации компьюте- ра, чипсет. CISC (Complete Instruction Set Computer) — компьютер (или процессор) с полным набором команд. Clear — очистка, сброс в нуль. Clock, CLK — тактовый, тактирующий сигнал. CMOS (Complementary Metal-Oxide-Semiconductor)—комплементарная МОП технология (КМОП). COM Port (COMmunication Port) — последовательный порт, поддержи- вающий интерфейс RS-232C. Core Speed — внутренняя частота процессора, на которой работает его вычислительное ядро. CPU (Central Processor Unit) — центральный процессор. 416
Словарь терминов и сокращений CRC — циклическая контрольная сумма, а также метод, использую- щий такую сумму. DC (Direct Current) — постоянный ток. Desktop — настольный персональный компьютер. DIMM (Dual In-Line Memory Module) — модуль памяти с двусторонним расположением выводов. DMA (Direct Memory Access) — прямой доступ к памяти. DOS (Disk Operating System) — дисковая операционная система, ДОС. DRAM (Dynamic RAM) — динамическая оперативная память. Driver — выходной буфер, драйвер. DSP (Digital Signal Processor) — цифровой сигнальный процессор. EDA (Electronic Design Automation) — система автоматизации проекти- рования. EEPROM (Electrically Erasable Programmable ROM) — ПЗУ с электри- ческим стиранием и возможностью дальнейшего программирования. EISA (Enhanced ISA) — расширенный (32-разрядный) вариант систем- ной шины ISA, полностью совместимый с ISA. EMS (Expanded Memory Specification) — дополнительная (отображае- мая) память персонального компьютера. EPROM (Erasable Programmable ROM) — ПЗУ co стиранием (ультрафи- олетовым излучением) и перезаписью информации (РПЗУ). Fault — отказ; тип прерывания. FDD (Floppy Disk Drive) — внешний накопитель информации на гиб- ком диске. Female — разъем-розетка, гнездо. FIFO (First In, First Out) — «первым вошел — первым вышел», один из способов организации ОЗУ с последовательным доступом. Firmware — программы, хранящиеся в энергонезависимой памяти мик- ропроцессорной системы. Flash memory — разновидность постоянной памяти с перезаписью EEPROM, характеризующаяся высокой емкостью, малым энергопотребле- нием и большим допустимым количеством циклов перезаписи, флэш-память. FLOPS (Floating point Operations Per Second) — количество операций с плавающей точкой в секунду, единица измерения производительности процессора. GND (Ground) — общий провод схемы, «земля». Н (High) — высокий уровень сигнала, единичный уровень при поло- жительной логике. Н—признак шестнадцатеричной системы записи числа, например, 2FA9h. Handshake — асинхронный режим обмена, при котором используется сигнал подтверждения готовности исполнителя. 27 — 3199 417
Приложение Hardware — аппаратные (электронные) средства микропроцессорной системы. HDD (Hard Disk Drive) — внешний накопитель информации на жест- ком диске (винчестер). Hex — шестнадцатеричная система счисления. HMA (High Memory Area) — область «высокой памяти» в персональном компьютере. IC (Integrated Circuit) — интегральная микросхема, ИС. iCOMP (Intel Comparative Microprocessor Performance) — индекс оценки производительности микропроцессоров фирмы Intel. IDE (Integrated Drive Electronics) — интерфейс компьютера для подклю- чения дисководов. Idle — режим холостого хода. IDT (Interrupt Descriptor Table) — таблица дескрипторов прерываний. Instruction — команда, инструкция. Instruction Set — система команд (процессора). INT (Interrupt) — прерывание, вектор прерывания. IO, I/O (Input/Output) — ввод/вывод (В/В), вход/выход. IOPL (Input/Output Privilege Level) — уровень привилегий операций вво- да/вывода. IPC (Instruction Per Cycle) — количество операций, выполняемых про- цессором за один такт. IrDA (Infra-Red Data Association) — ассоциация передачи данных в ин- фракрасном диапазоне, а также стандартный интерфейс инфракрасного обмена, предложенный ей. IRQ (Interrupt ReQuest) — запрос прерывания. ISA (Industry Standard Architecture) — стандартная системная шина пер- сонального компьютера. Jumper — съемная перемычка, соединяющая штыревые контакты на плате, джампер. L (Low) — низкий уровень сигнала, нулевой уровень при положитель- ной логике. LI Cash и L2 Cash — кэш-память первого уровня (внутренний кэш) и второго уровня (внешний кэш). LCD (Liquid Crystal Display) — жидкокристаллический дисплей, инди- катор. LIFO (Last In, First Out) — тип оперативной памяти с принципом рабо- ты: «последний вошел — первый вышел». Line driver — драйвер линии, буфер. LPT (Line Printer) — порт для подключения принтера, работающий по интерфейсу Centronics. 418
Словарь терминов и сокращений LRU (Least Recently Used) — дольше всех не используемый элемент в кэш-памяти. LSB (Least Significant Bit) — младший значащий бит (в байте или слове). LVT (Low-Voltage Technology) — низковольтная технология микросхем (напряжение питания 3,3 В). Male — разъем-вилка, штекер. Master — ведущее, главное устройство, участвующее в обмене инфор- мацией, задатчик. МFLOPS (Mega FLOPS) — миллион операций с плавающей запятой в секунду (единица производительности процессора). MIPS (Mega Instructions Per Second) — миллион операций в секунду (единица производительности процессора). МСР (Math CoProcessor) — математический сопроцессор. MCU (Microprogram Control Unit)—блок микропрограммного управления. MMU (Memory Management Unit) — блок управления памятью. MMX (Multi Media extensions) — расширение системы команд процес- сора для работы с мультимедийными приложениями. Motherboard — материнская системная плата, на которой располага- ются дополнительные, дочерние платы. MSB (Most Significant Bit) — старший значащий бит (в байте или слове). MSW (Machine State Word) — слово состояния машины. NIC (Network Interface Card) — сетевая карта, адаптер локальной сети. NMI (Non Masked Interrupt) — немаскируемое прерывание. Notebook — класс портативных, «блокнотных» персональных компью- теров, отличающихся малыми размерами, небольшой массой, низким энергопотреблением. NPU (Numeric Processor Unit) — математический сопроцессор. NVRAM (Non-Volatile RAM) — энергонезависимое ОЗУ, сохраняющее информацию при отключении питания. ОС (Open-Collector Output) — выход микросхемы с открытым коллектором. Oct — восьмеричная система счисления. OEM (Original Equipment Manufacturer) — производитель оборудования. OTPROM (One-Time Programmable ROM) — ПЗУ, однократно програм- мируемые пользователем. OR — логическая функция ИЛИ. Parity — четность, паритет. PC (Personal Computer) — персональный компьютер (обычно IBM-со- вместимый). PC (Program Counter) — счетчик команд. PC Card (PCMCIA) — стандартный высокоскоростной параллельный интерфейс для подключения карт расширения миниатюрного формата. 27* 419
Приложение PCI (Peripheral Component Interconnect) — шина для периферийных ком- понентов (в персональном компьютере). Pentium — 32-разрядный процессор фирмы Intel. PIC (Programmable Interruption Controller)—программируемый контрол- лер прерываний. РЮ (Programming Input/Output) — программно управляемый ввод/вывод. PLD (Programmable Logic Device) — программируемая логическая мик- росхема, ПЛИС. Plug — разъем типа вилка. РпР, Р&Р (Plug-and-Play) — «вставляй и работай»—стандарт автомати- ческой настройки конфигурации компьютера. Pointer — указатель. Polling — опрос флага (бита состояния) программным путем. POP — извлечение из стека. POST (Power On Self Test) — тест начального включения. POST (Procedure Of Self-Testing) — процедура самотестирования. Power down — режим пониженного энергопотребления. PPI (Programmable Peripheral Interface) — программируемый интерфейс периферийных устройств. Preset — предварительная установка. Processor — процессор. PROM (Programmable ROM) — программируемое ПЗУ, ППЗУ. PSW (Processor Status Word) — слово состояния процессора, код во внут- реннем регистре состояния процессора. Pull-up Resistor — нагрузочный резистор, включаемый между выходом микросхемы и проводом напряжения питания. Push — сохранение в стеке. RAM (Random Access Memory) — оперативная память, ОЗУ. RAS (Row-Address Select) — сигнал выбора адреса строки (в микросхе- мах динамической памяти). Receiver — приемник, входной буфер. Refresh — регенерация (в динамической памяти). Reset — сброс в нуль. RISC (Reduced Instruction Set Computer) — компьютер (или процессор) с сокращенным набором команд. ROM (Read-Only Memory) — постоянная память, ПЗУ. RS-232C (Reference Standard) — стандартный интерфейс последователь- ной передачи данных. RTC (Real Time Clock) — часы реального времени. RxC (Received Clock) — принимаемый синхросигнал. RxD (Received Data) — принимаемые данные. 420
Словарь терминов и сокращений SCSI (Small Computer System Interface) — интерфейс компьютера для подключения внешних устройств, в том числе и дисководов. SDRAM (Synchronous Dynamic RAM) — синхронное динамическое ОЗУ. Set — установка в единицу. Setup — программа установки системных параметров персонального компьютера. Shadow Memory — теневая память. SIMM (Single In-Line Memory Module) — модуль памяти с однорядным расположением выводов. Slave — ведомое, пассивное устройство, участвующее в обмене инфор- мацией, исполнитель. Slot — щелевой разъем для подключения печатных плат с разъемом в виде печатных проводников, слот. Socket — контактирующее устройство для установки микросхем на пла- ту, сокет. Software — программные средства микропроцессорной системы (про- граммы). SP (Stack Pointer) — указатель стека. SRAM (Static RAM) — статическая оперативная память. Stack — стек, стековая память. Strobe — стробирующий сигнал, строб. Terminator — оконечное согласующее устройство на линии связи (обыч- но — резистор). Timer — таймер, таймерное устройство. TR (Terminate Resistor) — нагрузочный резистор для линии связи. Transceiver — приемопередатчик, трансивер, двунаправленный буфер. Transmitter — передатчик, выходной буфер. Trap — ловушка; тип прерывания. TTL (TYansistor-TYansistor Logic) — транзисторно-транзисторная (бипо- лярная) логика, ТТЛ. TTLS (TYansistor-TYansistor Logic Schottky) — транзисторно-транзистор- ная логика Шоттки, ТТЛШ. Tirbo — режим повышенного быстродействия. ТхС (Transmitted Clock) — передаваемый синхросигнал. TxD (Transmitted Data) — передаваемые данные. UART (Universal Asynchronous Receiver/Transmitter) — универсальный асинхронный приемопередатчик, контроллер для поддержки интерфейса RS-232C. UMA (Upper Memory Area) — область верхней памяти. Upgrade — модернизация персонального компьютера путем замены его отдельных блоков. 421
Приложение UPI (Universal Peripheral Interface) — универсальный периферийный интерфейс. USB (Universal Serial Bus) — стандартный последовательный интерфейс с высокой скоростью передачи (до 12 Мбит/с). V — напряжение (Voltage), вольт (Volt). VLB (VESA Local Bus) — локальная шина персонального компьютера. VLSI (Very Large Scale Integration) — сверхбольшая интегральная схема (СБИС). Witchdog — сторожевой таймер, служащий для вывода микропроцес- сорной системы из состояния зависания. WB (Write Back) — алгоритм кэширования с обратной записью. WT (Write Through) — алгоритм кэширования со сквозной (прямой) за- писью. XMS (extended Memory Specification) — расширенная память персональ- ного компьютера. XOR — исключающее ИЛИ. Z (Z-state) — третье (высокоимпедансное) состояние выхода микросхемы. ZIF (Zero Insertion Force) — разъем или сокет с нулевым усилием вставки. 2С — выход с двумя активными состояниями (нуль и единица), стан- дартный ТТЛ-совместимый выход. ЗС — выход с тремя состояниями (два активных: нуль и единица, тре- тье — пассивное, отключенное), а также само третье состояние выхода, в отличие от двух активных состояний. Адаптер — устройство сопряжения. Адрес — закодированный номер, определяющий, куда передается ин- формация или откуда она принимается. Адресация — способ задания адреса операнда. Адресное пространство — совокупность всех адресов, к которым может обращаться микропроцессорная система. Активный уровень сигнала — уровень, соответствующий приходу, нали- чию сигнала, то есть выполнению этим сигналом соответствующей ему функции. Аккумулятор — выделенный внутренний регистр процессора, который принимает участие в выполнении большинства команд. АЛУ — арифметико-логическое устройство (ALU). Аппаратное обеспечение — электронная аппаратура микропроцессор- ной системы. Аппаратное прерывание — прерывание, вызываемое устройствами-ис- полнителями. 422
Словарь терминов и сокращений Арбитраж — метод определения единственного активного устройства, способ разрешения конфликтов. Асинхронная магистраль — магистраль, в которой предусмотрен только асинхронный обмен. Асинхронный обмен — обмен по магистрали с подтверждением готов- ности исполнителя. Асинхронный сигнал — сигнал, не привязанный по времени к внутрен- ним процессам схемы, не синхронизированный со схемой. Ассемблер — язык программирования нижнего уровня, использующий мнемонические обозначения машинных команд. АЦП — аналого-цифровой преобразователь. Базовый адрес — младший адрес из группы адресов, приписанных ка- кому-то устройству или задаче. Байт — группа двоичных разрядов, битов (как правило, 8 бит), содер- жащая какой-то код. Байтовые операции — операции, производимые над отдельными байта- ми операндов процессорами, имеющими разрядность больше 8. Бит (от англ. Binary Digit — двоичное число) — единица двоичной ин- формации, разряд двоичного кода, принимающий значения 0 и 1. Бит четности — дополнительный контрольный бит, добавляемый к дан- ным и хранимый или передаваемый вместе с этими данными. Буфер — память или область памяти, используемая для временного хра- нения данных. Буфер — логический элемент (микросхема), используемый для элект- рического согласования входов и выходов других микросхем. В/В — ввод/вывод, I/O. Ввод данных — то же, что чтение, считывание, прием данных. Вектор прерывания — адрес начала программы обработки прерывания. Векторные прерывания — прерывания, при которых номер прерывания (адрес вектора) выдается устройством, запросившим прерывание. Вилка (штекер) — часть разъема, контакты которого входят в контакты розетки (гнезда). Виртуальная память — внешняя память большого объема, которую про- цессор с помощью специальных механизмов использует как свою соб- ственную системную память. ВКМ — внутренняя контроллерная магистраль. Внешние устройства — устройства, подключаемые к микропроцессор- ной системе посредством устройств сопряжения, устройств ввода/вывода. Временная диаграмма — графики зависимости от времени входных и выходных сигналов цифрового устройства в различных режимах работы. ВУ — внешние устройства. 423
Приложение Вывод данных — то же, что запись, передача данных. Гарвардская архитектура — архитектура микропроцессорной системы с раздельными шинами данных и команд (двухшинная архитектура). Г (гига-) — приставка для обозначения 230 = 1 073 741 824. Данные — передаваемая в закодированном виде цифровая информа- ция. Двунаправленная линия (шина) — линия (шина), по которой сигналы могут передаваться в обоих направлениях (по очереди). Двухшинная архитектура — архитектура микропроцессорной системы с раздельными памятями данных и команд и с раздельными шинами для обмена с каждой из них. Декремент — уменьшение на единицу. Дескриптор — описатель, код, содержащий информацию о сегменте па- мяти, о векторе прерывания и т.д. Джампер — съемная перемычка, устанавливаемая на плату для пере- ключения режимов ее работы. Драйвер — программа нижнего уровня, осуществляющая управление аппаратурой. Единичный сигнал — то же, что положительный сигнал. Зависание — переход микропроцессорной системы в непредусмотрен- ное состояние, остановка работы системы. Задатчик (master) — активное устройство на магистрали (чаще всего — процессор), которое производит обмен с исполнителем в данном цикле. Задержка — временной сдвиг между входным и выходным сигналами устройства, узла, микросхемы. Задний фронт сигнала (спад) — переход сигнала из активного уровня в пассивный. Запись — операция, при которой задатчик передает данные в память или в устройство ввода/вывода. Запрос — обращение к процессору для специального обслуживания (на- пример, для прерывания или ПДП). Защищенный режим—режим процессоров фирмы Intel, начиная с 80286, обеспечивающий многозадачный режим и объем памяти свыше 1 Мбайт (см. реальный режим). ЗУ — запоминающее устройство, память. Инициализация — приведение в начальное состояние, запуск работы. Инкремент — увеличение на единицу. Инструкция — то же, что команда. Интерфейс — соглашение об обмене между электронными устройства- ми. Включает в себя требования по электрическому, логическому и кон- структивному сопряжению устройств. 424
Словарь терминов и сокращений ИС — интегральная микросхема, ИМС (IC), чип. Исключения — разновидность прерываний, которые возникают авто- матически при определенных условиях в процессе работы процессора. Исполнитель (slave) — пассивное устройство на магистрали, с которым задатчик производит обмен в данном цикле. К (кило-) — приставка для обозначения 210 = 1024. Канал — то же, что системная шина, магистраль. Карта расширения — одноплатное устройство сопряжения, подключа- емое к магистрали персонального компьютера. Каскадирование — совместное включение нескольких одинаковых уст- ройств (обычно последовательное) для улучшения их характеристик. КМОП — комплементарная технология МОП (CMOS). Команда — код, определяющий элементарную функцию, которую дол- жен выполнить процессор. Конвейер — память типа FIFO небольшого объема, входящая в состав процессора и служащая для ускорения выборки исполняемых команд. Контроллер — устройство управления, управляющее устройство сопря- жения. Кристалл — то же, что микросхема, чип. Кэш-память — быстрая буферная память, содержащая копию части ос- новной памяти системы и позволяющая ускорить обмен с медленной ос- новной памятью. Линия — единичный проводник системной шины. М (мега-) — приставка для обозначения 220 = 1 048 576. Магистраль — системная шина микропроцессорной системы. Маска — управляющий код, который разрешает или запрещает отдель- ные разряды основного кода. Маскирование прерывания — временный запрет прерывания. МК — микроконтроллер. Монитор — программа для работы оператора с пультом управления с целью контроля функционирования микропроцессорной системы. Мониторинг — слежение, контроль состояния какого-либо устройства. МОП — полупроводниковая технология на основе полевых транзис- торов типа «металл — окисел — полупроводник» (MOS). МП — микропроцессор. МПК — микропроцессорный комплект микросхем. МПС — микропроцессорная система. Мультиплексирование — передача различных сигналов по одной линии (шине) в разные моменты времени. Мультиплексированная магистраль — магистраль с мультиплексирован- ными (полностью или частично) шинами адреса и данных. 28 — 3199 425
Приложение НМД — накопитель на магнитном диске. ^мультиплексированная магистраль — магистраль, в которой шины ад- реса и данных не мультиплексированы. Ножки — то же, что выводы микросхемы. Нулевой сигнал — то же, что отрицательный сигнал. Одношинная архитектура — архитектура микропроцессорной системы с общей памятью данных и команд и общей шиной для обмена с памятью. ОЗУ — оперативное запоминающее устройство, оперативная память (RAM). ОК — выход с открытым коллектором. Операнд — код данных, с которым производится операция данной ко- мандой. ОС — операционная система. Опрос (поллинг) — постоянное чтение информации из устройства для определения его состояния. Отрицательная логика — система сигналов, в которой логической еди- нице соответствует низкий уровень напряжения, а логическому нулю — высокий. Отрицательный сигнал (сигнал отрицательной полярности, нулевой сиг- нал) — сигнал, активный уровень которого — логический нуль. То есть единица — это отсутствие сигнала, нуль — сигнал пришел. Отрицательный фронт сигнала (спад) — переход сигнала из единицы (из высокого уровня) в нуль (в низкий уровень). Пассивный уровень сигнала — уровень, в котором сигнал не выполняет никакой функции. ПДП (прямой доступ к памяти) — режим обмена по системной шине между устройством ввода/вывода и памятью без участия центрального процессора. Перепад (переход) сигнала — переключение сигнала из нуля в единицу или из единицы в нуль, то же, что фронт сигнала. Передний фронт сигнала — переход сигнала из пассивного уровня в ак- тивный. ПЗУ—постоянное запоминающее устройство, постоянная память (ROM). ПК — персональный компьютер, PC. ПЛИС — программируемые логические микросхемы, PLD. ПО — программное обеспечение (software). Подпрограмма — вспомогательная программа, вызываемая из основной программы или из подпрограммы. Подтверждение — выработка сигнала, подтверждающего выполнение той или иной функции. Положительная логика — система сигналов, в которой логической единице соответствует высокий уровень напряжения, а логическому нулю — низкий. 426
Словарь терминов и сокращений Положительный сигнал (сигнал положительной полярности, единич- ный сигнал) — сигнал, активный уровень которого — логическая единица. То есть нуль — это отсутствие сигнала, единица — сигнал пришел. Положительный фронт сигнала (или просто фронт) — переход сигнала из нуля (из низкого уровня) в единицу (в высокий уровень). Полярность сигнала — уровень сигнала, соответствующий его активно- сти. Положительной полярности соответствует активный единичный сиг- нал, отрицательной полярности — активный нулевой сигнал. Порт — устройство сопряжения микропроцессорной системы с вне- шним устройством (обычно простейшее). ППЗУ — программируемое ПЗУ (PROM). Прерывание — временный перевод процессора на программную обра- ботку внешнего события или на выполнение подпрограммы. Принстонская архитектура — архитектура микропроцессорной системы с единой шиной для данных и команд (одношинная архитектура). Программа — последовательность команд микропроцессора, выполня- ющих требуемую задачу, алгоритм. Программное обеспечение — набор программ, выполняемых микропро- цессорной системой. Программное прерывание — программный переход к подпрограмме, об- служиваемый, как прерывание. Пространство памяти — весь объем системной памяти микропроцес- сорной системы. Протокол — порядок обмена сигналами между цифровыми устройствами. Радиальные прерывания — прерывания, при которых номер прерыва- ния (адрес вектора) определяется номером используемой линии запроса прерывания. Разрядность (кода, шины) — количество двоичных разрядов кода или количество цифровых сигналов для передачи кода по шине. Реальный режим (режим реальной адресации) — режим процессоров фир- мы Intel, начиная с 80286, обеспечивающий совместимость с процессором 8086 и объем памяти до 1 Мбайт (см. защищенный режим). Регенерация — периодическое восстановление, обновление информа- ции, записанной в динамическую память. Требует подачи специальной последовательности управляющих сигналов. Регистр процессора — внутренняя ячейка памяти процессора, в которой хранится управляющая информация, адрес или данные. Регистр состояния процессора — внутренний регистр процессора, в ко- тором хранятся флаги (биты) слова состояния процессора (ССП, PSW). Розетка (гнездо) — часть разъема, в контакты которого входят контакты вилки (штекера). 28* 427
Приложение РОН — регистр общего назначения (универсальный внутренний ре- гистр процессора). РПЗУ — репрограммируемое ПЗУ (EPROM), информация в котором стирается ультрафиолетовым излучением и может быть записана вновь. Рукопожатие — обмен сигналами между устройствами, участвующими в обмене с подтверждением выполнения операции (handshaking). СБИС — сверхбольшая интегральная схема (VLSI). Свопинг (подкачка) — процесс временного сохранения на диске облас- тей оперативной памяти и чтения их с диска. Сегмент — выделенная часть памяти, хранящая данные или команды, для адресации которой используются одни и те же регистры процессора. Сегментный регистр — регистр, указывающий на начало того или иного сегмента памяти. Селектор (дешифратор) адреса — узел в составе устройства-исполните- ля для распознавания адреса в циклах обмена по магистрали. Синхронизация — обеспечение согласованной во времени работы не- скольких устройств, например, по общему тактовому сигналу. Синхронная магистраль — магистраль, в которой основной тип обмена синхронный. Синхронный обмен — обмен информацией по магистрали в темпе за- датчика без учета быстродействия исполнителя. Синхросигнал — то же, что тактовый сигнал. Система команд — набор команд процессора, которые он способен вы- полнить. Системная память — прямо адресуемая память микропроцессорной си- стемы (оперативная и постоянная). СК — счетчик команд (PC). Слово (двоичное) — группа бит (обычно 16, 32 или 64 бита), состоящая из нескольких байт. Слот — разъем для подключения к системной магистрали плат расширения. Сокет (Socket) — то же, что колодка, контактирующее устройство-гнездо, в которое устанавливается микросхема с возможностью простой ее замены. Сопроцессор — микросхема специализированного процессора, подклю- чаемая к микросхеме основного процессора для улучшения ее характери- стик. Чаще всего используются математические сопроцессоры, ускоряю- щие выполнение сложных арифметических команд. Сиад сигнала — то же, что задний фронт сигнала (обычно — отрица- тельный фронт). ССП — слово состояния процессора, PSW. Стек — область памяти, адресация к которой построена по магазинному принципу (LIFO) — первым читается последний записанный в память код. 428
Словарь терминов и сокращений Строб (стробирующий сигнал) — управляющий сигнал, который своим уровнем определяет момент выполнения элементом или узлом его функ- ции. В более общем смысле строб — это любой синхронизирующий сиг- нал, тактовый сигнал. Счетчик команд — внутренний регистр процессора, определяющий адрес в памяти, в котором находится текущая команда. В обычном режиме состоя- ние счетчика команд наращивается после выполнения каждой команды. Т (тера-) — приставка для обозначения 240 = 1 099 511 627 776. Таймер — устройство отсчета времени. Такт — то же, что тактовый сигнал, а также период тактового сигнала. Тактовый сигнал — управляющий сигнал, который своим фронтом оп- ределяет момент выполнения элементом или узлом его функции. Иногда то же, что и стробирующий сигнал. Теневая память — часть оперативной памяти, используемая для хране- ния копии постоянной памяти с целью повышения скорости доступа к информации. Терминатор — оконечный согласователь линии связи. Тетрада (полубайт, ниббл) — группа из четырех бит, кодируемая одним символом в шестнадцатеричной системе счисления. Транзакция — то же, что цикл обмена. ТТЛ — транзисторно-транзисторная логика и соответствующая ей по- лупроводниковая технология (TTL). ТТЛШ — технология ТТЛ с диодами Шоттки (TTLS). Характеризуется более высоким быстродействием при той же потребляемой мощности. УВВ — устройство ввода/вывода. Указатель — код, определяющий адрес операнда в памяти. Указатель стека — внутренний регистр процессора, в котором хранится текущий адрес стека. УС — указатель стека (SP). Устройство ввода/вывода — устройство, осуществляющее сопряжение микропроцессорной системы с внешними устройствами. Устройство сопряжения — устройство для обмена информацией между компьютером и внешними устройствами. Фаза — часть цикла, в течение которой меняется состояние каких-то сигналов шины. Флаг — сигнал (бит), соответствующий какому-либо состоянию уст- ройства, например, готовности к обмену. Флэш-память (Flash Memory) — разновидность РПЗУ с электрическим стиранием информации и возможностью многократной перезаписи. Фон-неймановская архитектура — одношинная архитектура, то же, что принстонская архитектура. 429
Приложение Фронт сигнала — переход сигнала из нуля в единицу или из единицы в нуль, иногда в более узком значении «передний положительный фронт». ЦАП — цифроаналоговый преобразователь. Цикл — последовательность обмена сигналами, в течение которого вы- полняется только одна элементарная операция (например, ввод или вы- вод). ЦП — центральный процессор, основной процессор микропроцессор- ной системы. ЦПЭ — центральный процессорный элемент. Чип — то же, что интегральная микросхема, ИМС. Чипсет — набор микросхем, предназначенный для решения какой-то одной задачи. Чтение — операция получения задатчиком шины кода данных из памя- ти или из устройства ввода/вывода. Чтение-модификация-запись — операция, при которой в течение одно- го цикла данные читаются из какого-то устройства, преобразуются и за- писываются в то же самое устройство по тому же адресу. ШИМ — широтно-импульсная модуляция. Шина — группа сигнальных линий, объединенных по какому-либо принципу. Например, шиной называют сигналы, соответствующие всем разрядам какого-то двоичного кода (шина данных, шина адреса). Иногда шиной называют также провод питания («шина питания») и общий про- вод («шина земли»). Ширина — то же, что разрядность. ЭВМ — электронная вычислительная машина, то же, что компьютер. Эмуляция — моделирование, имитация работы реального устройства с использованием аппаратных и программных отладочных средств. Ядро микропроцессорной системы — основные устройства микропроцес- сорной системы: процессор, оперативная и постоянная память. Ячейка (памяти) — элемент памяти (одноразрядный или многоразряд- ный), который служит для хранения информационного кода и может быть выбран с помощью кода адреса памяти.
Список литературы Список литературы 1. Титце У., Шенк К. Полупроводниковая схемотехника: Справочное руководство. Пер. с нем. — М.: Мир, 1982. — 512 с.: ил. 2. Микропроцессоры и микроЭВМ в системах автоматического управ- ления: Справочник/ С.Т. Хвощ, Н.Н. Варлинский, Е.А. Попов; Под общ. ред. С.Т. Хвоща. — Л.: Машиностроение. Ленингр. отд-ние, 1987. — 640 с.: ил. 3. Лю Ю-Чжен, Гибсон Г. Микропроцессоры семейства 8086/8088. Архитектура, программирование и проектирование микрокомпьютерных систем: Пер. с англ. — М.: Радио и связь, 1987. — 512 с.: ил. 4. Бородин С.М., Новиков Ю.В. Модуль логического анализатора для контрольно-измерительных систем на базе микроЭВМ// Микропро- цессорные средства и системы. — 1987. — N 1. — с. 67—68. 5. Уильямс Г.Б. Отладка микропроцессорных систем: Пер. с англ. — М.: Энергоатомиздат, 1988. — 253 с.: ил. 6. Бородин С.М., Новиков Ю.В., Поддубный А.П.,ТомчукА.А. Сред- ства отображения информации для микропроцессорных систем измере- ния, контроля и управления// Микропроцессорные средства и системы. - 1988. - N 3. - с. 76-79. 7. Интерфейсы систем обработки данных: Справочник/ А.А. Мячев, В.Н. Степанов, В.К. Щербо; Под ред. А.А. Мячева. — М.: Радио и связь, 1989. - 416 с.: ил. 8. Новиков Ю.В. Универсальный параллельный интерфейс для мо- дульных микропроцессорных систем измерения, контроля и управления/ / Микропроцессорные средства и системы. — 1989. — N 6. — с. 71—72. 9. Шёвкопляс Б.В. Микропроцессорные структуры. Инженерные ре- шения: Справочник, —изд. 2-е, перераб. и доп. — М.: Радио и связь, 1990 — 512 с.: ил. 10. Новиков Ю.В. Функциональные модули контрольно-измеритель- ных систем на базе микроЭВМ// Микропроцессорные средства и систе- мы. - 1990.-N 3.- с. 75-77. 11. Руководство по архитектуре IBM PC АТ/Ж.К. Голенкова, А.В. Заб- лоцкий, М.Л. Мархасин и др.; Под общ. ред. М.Л. Мархасина. — Мн.: ООО «Консул», 1992. — 949 с.: ил. 12. Сопряжение датчиков и устройств ввода данных с компьютерами IBM PC: Пер. с англ./ Под ред. У. Томпкинса, Дж. Уэбстера. — М.: Мир, 1992. - 592 с.: ил. 13. Бродин В.Б., Шагурин И.И. Микропроцессор i486. Архитектура, программирование, интерфейс. — М.: ДИАЛОГ-МИФИ, 1993. — 240 с.: ил. 431
Приложение 14. The TTL Data Book. — Texas Instruments, 1997. 15. Новиков Ю.В., Калашников O.A., Гуляев С.Э. Разработка устройств сопряжения для персональных компьютеров типа IBM РС/ Под общ. ред. Ю.В. Новикова. Практ. пособие. — М.: ЭКОМ, 1997. — 224 с.: ил. 16. Хоровиц П., Хилл У. Искусство схемотехники. Пер. с англ. 5-е изд. перераб. — М.: Мир, 1998. — 704 с.: ил. 17. Новиков Ю.В., Карпенко Д.Г. Аппаратура локальных сетей: фун- кции, выбор, разработка/Под общ. ред. Ю.В. Новикова. — М.:ЭКОМ, 1998. — 288 с.: ил. 18. Мюллер С. Модернизация и ремонт персональных компьютеров. / Пер. с англ. — М.: БИНОМ, 1998. — 944 с.: ил. 19. Гук М. Процессоры Intel: от 8086 до Pentium II. — Спб.: Питер, 1998. — 224 с.: ил. 20. Гук М. Аппаратные средства IBM PC. Энциклопедия. — СПб: Пи- тер Ком, 1999. — 816 с.: ил. 21. Бродин В.Б., Шагурин И.И. Микроконтроллеры: архитектура, программирование, интерфейс. — М.: ЭКОМ, 1999. — 360 с.: ил. 22. Ремизевич Т.В. Микроконтроллеры для встраиваемых приложе- ний: от общих подходов — к семействам НС05 и НС08 фирмы Motorola/ Под ред. И.С. Кирюхина. — М.:ДОДЭКА, 2000. — 272 с.: ил. 23. Новиков Ю.В., Кондратенко С.В. Локальные сети: архитектура, алгоритмы, проектирование. — М.: ЭКОМ, 2000. — 312 с.: ил. 24. Ан П. Сопряжение ПК с внешними устройствами: Пер. с англ. — М.: ДМК Пресс, 2001. - 320 с.: ил. 25. Новиков Ю.В. Основы цифровой схемотехники. Базовые элементы и схемы. Методы проектирования. — М.: Мир, 2001. — 379 с.: ил. 26. Предко М. Руководство по микроконтроллерам. Том 1. М.: Пост- маркет, 2001. — 416 с.: ил. 27. Предко М. Руководство по микроконтроллерам. Том 2. М.: Пост- маркет, 2001. — 488 с.: ил. 28. Бродин В.Б., Калинин А.В. Системы на микроконтроллерах и БИС программируемой логики. — М.: ЭКОМ, 2002. — 400 с.: ил. 29. Журнал Upgrade, 2002. 30. Яценков В.С. Микроконтроллеры Microchip. Практическое руко- водство — М.: Горячая линия — Телеком, 2002. — 296 с.: ил. 31. Предко М. Справочник по PIC-микроконтроллерам: Пер. с англ. — М.: ДМК Пресс, 2002; «Издательский дом «Додэка-ХХ1», 2002. — 512 с.: ил. 32. Тавернье К. PIC-микроконтроллеры. Практика применения: Пер. с фр. — М.: ДМК Пресс, 2002. — 272 с.: ил.