Текст
                    УДК [681.51+004.31](075.8)
ББК 32.965-04я73+32.973-04я73
Н73
Новиков Ю. В.
Н73 Основы микропроцессорной техники : учебное пособие /
Ю. В. Новиков, П. К. Скоробогатов. — 4-е изд., испр. — М. : Ин-
тернет-Университет Информационных Технологий ; БИНОМ.
Лаборатория знаний, 2009. — 357 с. : ил. — (Основы информа-
ционных технологий).
ISBN 978-5-9963-0023-5 (БИНОМ. ЛЗ)
Краткое учебное пособие по основам микропроцессорной техники, в котором
рассматриваются принципы организации микропроцессорных систем различной
сложности, алгоритмы их функционирования, а также методы проектирования
устройств на основе микроконтроллеров.
Для тех, кто желает самостоятельно изучить микропроцессорную технику
и разрабатывать микропроцессорные системы, для студентов соответствующих
специальностей, а также для профессиональных разработчиков цифровых
электронных систем.
УДК [681.51+004.31](075.8)
ББК 32.965-04я73+32.973-04я73
Издание осуществлено при финансовой и технической поддержке
издательства «Открытые Системы», «РМ Телеком» и Kraftway Computers
Полное или частичное воспроизведение или размножение каким-либо
способом, в том числе и публикация в Сети, настоящего издания допускается
только с письменного разрешения Интернет-Университета
Информационных Технологий.
По вопросам приобретения обращаться:
БИНОМ. Лаборатория знаний
Телефон: (499)157-5272
e-mail: binom@Lbz.ru, http://www.Lbz.ru
ISBN 978-5-9963-0023-5 (БИНОМ. ЛЗ)
© ИнтерЙёТ-Унйверситет
Информационных Технологий,
2006-2009
© БИНОМ. Лаборатория знаний,
2009

О проекте Интернет-Университет Информационных Технологий — это первое в России высшее учебное заведение, которое предоставляет возможность получить дополнительное образование во Всемирной сети. Web-сайт уни- верситета находится по адресу www.intuit.ru. Мы рады, что вы решили расширить свои знания в области компью- терных технологий. Современный мир — это мир компьютеров и инфор- мации. Компьютерная индустрия — самый быстрорастущий сектор эко- номики, и ее рост будет продолжаться еще долгое время. Во времена жест- кой конкуренции от уровня развития информационных технологий, до- стижений научной мысли и перспективных инженерных решений зависит успех не только отдельных людей и компаний, но и целых стран. Вы вы- брали самое подходящее время для изучения компьютерных дисциплин. Профессионалы в области информационных технологий сейчас востребо- ваны везде: в науке, экономике, образовании, медицине и других облас- тях, в государственных и частных компаниях, в России и за рубежом. Ана- лиз данных, прогнозы, организация связи, создание программного обес- печения, построение моделей процессов — вот далеко не полный список областей применения знаний для компьютерных специалистов. Обучение в университете ведется по собственным учебным планам, разработанным ведущими российскими специалистами на основе между- народных образовательных стандартов Computer Curricula 2001 Computer Science. Изучать учебные курсы можно самостоятельно по учебникам или на сайте Интернет-Университета, задания выполняются только на сайте. Для обучения необходимо зарегистрироваться на сайте университета. Удостоверение об окончании учебного курса или специальности выдает- ся при условии выполнения всех заданий к лекциям и успешной сдачи итогового экзамена. Книга, которую вы держите в руках, — очередная в многотомной серии «Основы информационных технологий», выпускаемой Интернет- Университетом Информационных Технологий. В этой серии будут выпущены учебники по всем базовым областям знаний, связанным с компьютерными дисциплинами. Добро пожаловать в Интернет-Университет Информационных Технологий! Анатолий Шкред anatoli @shkred. ru
Предисловие Микропроцессорная техника сейчас все активнее входит в нашу жизнь, постепенно замещая и вытесняя традиционную цифровую техни- ку на «жесткой логике». Универсальность, гибкость, простота проектиро- вания аппаратуры, практически неограниченные возможности по услож- нению алгоритмов обработки информации - все это обещает микропро- цессорной технике большое будущее. На долю традиционной цифровой техники остаются только узлы и устройства, требующие максимального быстродействия, а также устройства с простейшими алгоритмами обра- ботки информации. Обычная цифровая техника сегодня применяется для увеличения возможностей микропроцессорных систем, для их сопря- жения с внешними устройствами, для увеличения их возможностей, то есть играет, но сути, вспомогательную роль. Таким образом, традицион- ную цифровую технику в самом недалеком будущем, по-видимому, ждет участь аналоговой техники, область применения которой в свое время сильно сузилась с появлением цифровой. За последние годы издано немало книг, посвященных микропроцес- сорной технике, внутреннему устройству микропроцессоров, микроконт- роллеров, микрокомпьютеров, принципам организации обмена инфор- мации и методам построения систем на их основе. Однако зачастую по- добные книги не дают читателю представления об особенностях микро- процессорных систем по сравнению с обычными цифровыми системами, об их возможностях, преимуществах, ограничениях и недостатках. В ре- зультате в сознании читателя микропроцессорные системы занимают свою обособленную нишу, представляются некой «вещью в себе», слабо связанной как с цифровой техникой, так и с электроникой вообще. Во- прос о том, когда надо проектировать микропроцессорную систему, а ког- да имеет смысл ограничиться обычной цифровой системой, остается от- крытым. К тому же в большинстве книг, на наш взгляд, недостаточно внима- ния уделяется разъяснению некоторых важнейших специфических поня- тий микропроцессорной техники. В результате часто наблюдается непо- нимание тонкостей функционирования микропроцессоров и микропро- цессорных систем. Это нередко приводит к тому, что проектировщик не использует значительной части возможностей микропроцессорной сис- темы ипримсняет неэффективные аппаратные и программные решения. В некоторых работах подробнейшим образом рассматриваются ха- рактеристики и возможности каких-нибудь стандартных микроконтрол- леров. Такие книги представляют собой пересказ технической документа- 4
ции, справочных материалов фирмы-изготовителя. Это тоже нужно, даже необходимо знать, но прежде не мешает понять, надо ли вообще исполь- зовать микроконтроллер данного типа, приведет ли его применение к эф- фективному решению задачи, соответствуют ли его возможности уровню решаемой проблемы. Данная книга посвящена основам микропроцессорной техники, ее азбуке, базовым понятиям, принципам и методам ее применения. От чи- тателя не требуется знаний о микропроцессорах, но необходимы хотя бы начальные знания по цифровой схемотехнике (желательно предвари- тельно прочесть «Основы цифровой схемотехники. Базовые элементы и схемы, методы проектирования» Ю.В. Новикова). Задача авторов состо- яла в том, чтобы научить будущего проектировщика цифровых и микро- процессорных систем обоснованно выбирать архитектурные, структур- ные и схемотехнические решения, рационально распределять выполняе- мые системой функции между аппаратурой и программным обеспечени- ем, профессионально оптимизировать используемые средства. Конечно, для решения такой сложнейшей задачи одной этой книги недостаточно, но содержащиеся в ней начальные сведения представляют собой тот не- обходимый минимум знаний, который должен иметь и которым должен свободно и активно пользоваться каждый профессиональный разработ- чик микропроцессорных систем. Любые дополнительные знания, конеч- но же, не повредят, но и заменить то, что изложено здесь, они не смогут. Книга ни в коем случае не претендует на роль справочника по мик- росхемам, хотя в ней и разъясняются функции некоторых микросхем. Она скорее должна дать читателю знания, необходимые для того, что- бы в дальнейшем правильно пользоваться всеми имеющимися справоч- никами; чтобы знать, какие справочники выбрать и что в них искать; что- бы быть готовым с помощью справочников самостоятельно проектиро- вать микропроцессорные системы. Возможно, подход, предлагаемый в данной работе, несколько отли- чается от общепринятого. Возможно также, что используемый набор тер- минов не полностью совпадает со стандартным (отечественные стандар- ты часто меняются). Но главное - научить проектировать микропроцес- сорные системы, а какие для этого используются подходы и термины, на- верное, не так уж принципиально. Книга написана на основе многолетнего личного опыта авторов по разработке микропроцессорных систем различного назначения, а также на базе материала учебных курсов, читаемых авторами, преподавателями кафедры электроники Московского инженерно-физического института (МИФИ). 5
Несколько слов о структуре книги. В первой главе рассматриваются основополагающие принципы ми- кропроцессорной техники, вводится базовая терминология, описывают- ся архитектурные особенности микропроцессорных систем, а также ос- новные типы микропроцессорных систем в зависимости от их возможно- стей. Вторая глава посвящена принципам организации обмена информа- цией в микропроцессорных системах. В ней рассматриваются особеннос- ти шин, циклы и протоколы обмена в программном режиме, в режиме об- работки прерываний, в режиме ПДП. Описаны также основные функции устройств микропроцессорной системы в процессе обмена информацией. Третья глава рассказывает об основных принципах функционирова- ния процессора, о его возможностях и структурных элементах, о системе команд процессора и методах адресации. Также рассматриваются прин- ципы сравнения процессоров между собой. Четвертая глава посвящена основным принципам организации од- нокристальных микроконтроллеров, назначению их основных узлов и принципам взаимодействия между узлами. В пятой главе более подробно рассматриваются особенности микро- контроллеров на примере одного из самых популярных семейств PIC. Опи- саны все узлы микроконтроллеров, методы обмена информацией, система команд, особенности программирования и средства разработки, применяе- мые при проектировании систем на базе этих микроконтроллеров. В шестой главе описываются методы проектирования аппаратных и программных средств микропроцессорных систем на основе микроконт- роллеров. Подробно описаны лабораторная установка, используемая при обучении студентов МИФИ, и программы, позволяющие реализовать различные алгоритмы се функционирования. Седьмая глава посвящена организации персонального компьютера как наиболее развитой и сложной микропроцессорной системы. Рассма- тривается эволюция процессоров персональных компьютеров, описана организация памяти и системных устройств персонального компьютера. Восьмая глава знакомит читателей с внешними интерфейсами пер- сонального компьютера, которые необходимо знать для построения сложных микропроцессорных систем различного назначения. Приведе- ны подробные описания часто используемых интерфейсов. Главы 1, 2, 3, 7 и 8 написаны доцентом, к.т.н. Ю.В. Новиковым. Гла- вы 4, 5 и 6 написаны профессором, д.т.н. П.К. Скоробогатовым. Авторы надеются, что эта книга реально поможет читателям осво- ить микропроцессорную технику. 6
Об авторах Новиков Юрий Витальевич Кандидат технических наук, доцент факультета автоматики и электроники МИФИ, автор шести книг по электронике и компьютерным локальным сетям: «Разработка устройств сопряжения для персонального компьютера типа IBM РС», «Аппаратура локальных сетей: функции, выбор, разработка», «Локальные сети: архитектура, алгоритмы, проектирование», «Основы цифровой схемотехники. Базовые элементы и схемы, методы проектирования», «Основы микропроцессорной техники», «Основы локальных сетей». Скоробогатов Петр Константинович Доктор технических паук, профессор факультета автоматики и элек- троники МИФИ, автор более двухсот научных трудов и изобретений, в том числе — более десяти учебных пособий. 7
Внимание! На сайте Интернет-университета информационных технологий Вы можете пройти тестирование по каждой лекции и курсу в целом. Добро пожаловать на наш сайт: www.intuit.ru
Лекции Лекция 1. Философия микропроцессорной техники............. 17 Лекция 2. Шины микропроцессорной системы и циклы обмена....38 Лекция 3. Функции устройств магистрали.....................56 Лекция 4. Адресация операндов и регистры процессора........73 Лекция 5. Система команд процессора........................85 Лекция 6. Процессорное ядро и память микроконтроллеров.....97 Лекция 7. Организация связи микроконтроллера с внешней средой и временем.................... 109 Лекция 8. Вспомогательные аппаратные средства микроконтроллера............................... 120 Лекция 9. Аппаратные средства микроконтроллеров серии PIC.. 134 Лекция 10. Специальные функции и система команд микроконтроллеров серии PIC.................... 165 Лекция 11. Особенности разработки цифровых устройств на основе микроконтроллеров.................... 183 Лекция 12. Разработка программного обеспечения для Р1С-микроконтроллеров...................... 192 Лекция 13. Архитектура и процессоры персональных компьютеров.....................................229 Лекция 14. Устройства, входящие в состав персонального компьютера......................................258 Лекция 15. Системная магистраль ISA........................280 Лекция 16. Дополнительные интерфейсы персонального компьютера......................................301 9
10 __
Содержание Глава 1. Философия микропроцессорной техники................. 17 Лекция 1. Философия микропроцессорной техники................ 17 1.1. Что такое микропроцессор?.............................20 1.2. Шинная структура связей...............................23 1.3. Режимы работы микропроцессорной системы...............28 1.4. Архитектура микропроцессорных систем..................33 1.5. Типы микропроцессорных систем.........................35 Глава 2. Организация обмена информацией.......................38 Лекция 2. Шины микропроцессорной системы и циклы обмена.......38 2.1. Шины микропроцессорной системы........................39 2.2. Циклы обмена информацией..............................43 2.2.1. Циклы программного обмена........................43 2.2.2. Циклы обмена по прерываниям......................47 2.2.3. Циклы обмена в режиме ПДП........................50 2.3. Прохождение сигналов по магистрали...................52 Лекция 3. Функции устройств магистрали........................56 2.4. Функции устройств магистрали..........................56 2.4.1. Функции процессора...............................56 2.4.2. Функции памяти...................................63 2.4.3. Функции устройств ввода/вывода...................69 Глава 3. Функционирование процессора..........................73 Лекция 4. Адресация операндов и регистры процессора...........73 3.1. Адресация операндов...................................74 3.1.1. Методы адресации.................................74 3.1.2. Сегментирование памяти...........................77 3.1.3. Адресация байтов и слов..........................81 3.2. Регистры процессора...................................81 Лекция 5. Система команд процессора...........................85 3.3. Система команд процессора.............................85 3.3.1. Команды пересылки данных.........................86 3.3.2. Арифметические команды...........................87 3.3.3. Логические команды...............................88 3.3.4. Команды переходов................................90 3.4. Быстродействие процессора.............................93 11
1лава 4. Организация микроконтроллеров.........................97 Лекция 6. Процессорное ядро и память микроконтроллеров.........97 4.1. Классификация и структура микроконтроллеров............97 4.2. Процессорное ядро микроконтроллера.....................99 4.2.1. Структура процессорного ядра МК...................99 4.2.2. Система команд процессора МК.................... 103 4.2.3. Схема синхронизации МК............................ 104 4.3. Память программ и данных МК.......................... 104 4.3.1. Память программ................................. 104 4.3.2. Память данных................................... 106 4.3.3. Регистры МК..................................... 106 4.3.4. Стек МК......................................... 107 4.3.5. Внешняя память.................................. 108 Лекция 7. Организация связи микроконтроллера с внешней средой и временем.................................. 109 4.4. Порты ввода/вывода................................... 109 4.5. Таймеры и процессоры событий.......................... НО 4.6. Модуль прерываний МК.................................... 118 Лекция 8. Вспомогательные аппаратные средства микроконтроллера............................................. 120 4.7. Минимизация энергопотребления в системах на основе МК ... 120 4.8. Тактовые генераторы МК............................... 122 4.9. Аппаратные средства обеспечения надежной работы МК...... 124 4.9.1. Схема формирования сигнала сброса МК............ 124 4.9.2. Блок детектирования пониженного напряжения питания. 126 4.9.3. Сторожевой таймер............................... 127 4.10. Дополнительные модули МК............................ 128 4.10.1. Модули последовательного ввода/вывода.......... 128 4.10.2. Модули аналогового ввода/вывода................ 130 Глава 5. Однокристальные микроконтроллеры серии ИС........... 134 Лекция 9. Аппаратные средства микроконтроллеров серии PIC....... 134 5.1. Основные особенности микроконтроллеров серии PIC........ 134 5.1.1. Состав и назначение семейств Р1С-контроллеров... 134 5.1.2. Микроконтроллеры семейств PIC16CXXX и Р1С17СХХХ....136 5.1.3. Особенности архитектуры микроконтроллеров семейства Р1С16СХХХ.................................... 137 5.2. Микроконтроллеры подгруппы P1C16F8X......... 138 5.2.1. Основные характеристики......................... 138 5.2.2. Особенности архитектуры......................... 140 5.2.3. Схема тактирования и цикл выполнения команды.... 143 12
5.2.4. Организация памяти программ и стека............ 144 5.2.5. Организация памяти данных...................... 145 5.2.6. Регистры специального назначения............... 147 5.2.7. Счетчик команд................................. 151 5.2.8. Прямая и косвенная адресации................... 152 5.2.9. Порты ввода/вывода............................. 153 5.2.10. Модуль таймера и регистр таймера.............. 158 5.2.7 7. Память данных в РПЗУ (EEPROM)................ 160 5.2.12. Организация прерываний........................ 162 Лекция 10. Специальные функции и система команд микроконтроллеров серии Р1С................................. 165 5.2.13. Специальные функции........................... 165 5.3. Система команд микроконтроллеров подгруппы PIC16F8X... 171 5.3.1. Перечень и форматы команд...................... 171 5.3.2. Команды работы с байтами....................... 175 5.3.3. Команды работы с битами........................ 178 5.3 4. Команды управления и работы с константами..... 178 5.3.5. Особенности программирования и отладки......... 180 Глава 6. Проектирование устройств на микроконтроллерах...... 183 Лекция 11. Особенности разработки цифровых устройств на основе микроконтроллеров................................. 183 6.1. Разработка микропроцессорной системы на основе микроконтроллера......................................... 183 6.7.1. Основные этапы разработки...................... 183 6.1.2. Разработка и отладка аппаратных средств.......... 188 6.1.3. Разработка и отладка программного обеспечения.. 188 6.1.4. Методы и средства совместной отладки аппаратных и программных средств................................. 189 Лекция 12. Разработка программного обеспечения для Р1С-микроконтроллеров................................... 192 6.2. Разработка программного обеспечения для Р1С-микроконтроллер6в................................ 192 6.2.1. Ассемблер MPASM................................ 192 Метки............................................... 195 Мнемоники........................................... 195 Операнды............................................ 196 Комментарии......................................... 199 Расширения файлов, используемые MPASM и утилитами..... 199 Директивы языка......................................200 6.2.2. Компоновщик MPLINK............................. 205 13
6.2.3. Менеджер библиотек MPL1B.........................206 6.2.4. Симулятор MPSIM..................................206 6.3. Практики программирования Р1С-микроконтроллеров.......211 6.3.1. Описание лабораторного макета................... 211 6.3.2. Инициализация микроконтроллера макета............212 6.3.3. Программирование учебных задач.................. 215 Глава 7. Организация персонального компьютера.................229 Лекция 13. Архитектура и процессоры персональных компьютеров .... 229 7.1. Архитектура персонального компьютера..................230 7.2. Процессоры персональных компьютеров...................235 7.2.1. Особенности процессоров 8086/8088............... 237 7.2.2. Особенности процессора 80286.................... 239 7.2.3. Особенности процессора 80386.................... 244 7.2.4. Особенности процессора 486.......................250 7.2.5. Особенности процессоров Pentium..................254 Лекция 14. Устройства, входящие в состав персонального компьютера......................................258 7.3. Память персонального компьютера.......................258 7.3.1. Оперативная память.............................. 258 7.3.2. Постоянная память................................262 7.4. Системные устройства..................................266 7.4.1. Тактовый генератор...............................266 7.4.2. Контроллер прерываний........................... 267 7.4.3. Контроллер прямого доступа к памяти............. 269 7.4.4. Системный таймер и часы реального времени........270 7.5. Средства интерфейса пользователя......................272 7.6. Внешняя память........................................277 Глава 8. Интерфейсы персонального компьютера..................280 Лекция 15. Системная магистраль ISA...........................280 8.1. Системная магистраль ISA............................. 281 8.1.1. Назначение сигналов ISA..........................285 8.1.2. Циклы обмена по ISA............................. 287 8.1.3. Распределение ресурсов компьютера................292 Лекция 16. Дополнительные интерфейсы персонального компьютера......................................301 8.2. Интерфейс Centronics..................................301 8.3. Интерфейс RS-232C.....................................304 8.4. Другие интерфейсы компьютера..........................308 14
Приложение.................................................... 314 Системы команд некоторых микропроцессоров...................314 Система команд микропроцессора i8080/8085................314 Система команд микропроцессора Т-11 фирмы DEC............318 Система команд микропроцессора MC68000 ................. 321 Система команд микропроцессора 18086/8088............... 325 Система команд микропроцессора i486 .................... 329 Система команд микроконтроллеров семейства MCS-51 (фирмы Intel, Atmel, Analog Devices)............. 339 Словарь терминов и сокращений..................................341 Список литературы..............................................356 15

Лекция 1 Философия микропроцессорной техники Глава 1. Философия микропроцессорной техники Лекция 1. Философия микропроцессорной техники В этой лекции рассказывается о базовой терминологии микропроцессорной техники, о принципах организации микропроцессорных систем, о структуре связей, режимах работы и об основных типах микропроцессорных систем. Ключевые слова: микропроцессор, микропроцессорная система, шина, архитектура, память, устройство ввода-вывода. В этой главе рассматриваются базовые концепции, которые лежат в основе любой микропроцессорной системы — от простейшего микрокон- троллера до сложного компьютера. Именно в этом смысле здесь исполь- зуется термин «философия». Для начала несколько основных определений. • Электронная система — в данном случае это любой электронный узел, блок, прибор или комплекс, производящий обработку информации. • Задача — это набор функций, выполнение которых требуется от элек- тронной системы. • Быстродействие — это показатель скорости выполнения электрон- ной системой ее функций. • Гибкость — это способность системы подстраиваться под различные задачи. • Избыточность — это показатель степени соответствия возможностей системы решаемой данной системой задаче. • Интерфейс — соглашение об обмене информацией, правила обмена информацией, подразумевающие электрическую, логическую и кон- структивную совместимость устройств, участвующих в обмене. Дру- гое название — сопряжение. Микропроцессорная система может рассматриваться как частный слу- чай электронной системы, предназначенной для обработки входных сиг- налов и выдачи выходных сигналов (рис. 1.1). В качестве входных и вы- ходных сигналов при этом могут использоваться аналоговые сигналы, одиночные цифровые сигналы, цифровые коды, последовательности циф- ровых кодов. Внутри системы может производиться хранение, накопле- ние сигналов (или информации), но суть от этого не меняется. Если сис- t 'lOJIiroFc? " If 17 СФ М; i II
Глава 1 Философия микропроцессорной техники тема цифровая (а микропроцессорные системы относятся к разряду циф- ровых), то входные аналоговые сигналы преобразуются в последователь- ности кодов выборок с помощью АЦП, а выходные аналоговые сигналы формируются из последовательности кодов выборок с помощью ЦАП. Обработка и хранение информации производятся в цифровом виде. Характерная особенность традиционной цифровой системы состоит в том, что алгоритмы обработки и хранения информации в ней жестко свя- заны со схемотехникой системы. То есть изменение этих алгоритмов воз- можно только путем изменения структуры системы, замены электронных узлов, входящих в систему, и/или связей между ними. Например, если нам нужна дополнительная операция суммирования, то необходимо добавить в структуру системы лишний сумматор. Или если нужна дополнительная функция хранения кода в течение одного такта, то мы должны добавить в структуру еще один регистр. Естественно, это практически невозможно сделать в процессе эксплуатации, обязательно нужен новый производ- ственный цикл проектирования, изготовления, отладки всей системы. Именно поэтому традиционная цифровая система часто называется сис- темой на «жесткой логике». Аналоговые сигналы Цифровые сигналы Цифровые коды Электронная система (обработка, хранение) Рис. 1.1. Электронная система. Аналоговые сигналы Цифровые сигналы Цифровые коды Любая система на «жесткой логике» обязательно представляет собой специализированную систему, настроенную исключительно на одну за- дачу или (реже) на несколько близких, заранее известных задач. Это имеет свои бесспорные преимущества. Во-первых, специализированная система (в отличие от универсальной) никогда не имеет аппаратурной избыточности, то есть каждый ее элемент обязательно работает в полную силу (конечно, если эта система грамотно спроектирована). Во-вторых, именно специализированная система может обеспечить максимально высокое быстродействие, так как скорость выполнения ал- горитмов обработки информации определяется в ней только быстродей- ствием отдельных логических элементов и выбранной схемой путей про- 18
Лекция 1 Философия микропроцессорной техники хождения информации. А именно логические элементы всегда обладают максимальным на данный момент быстродействием. Но в то же время большим недостатком цифровой системы на «жест- кой логике» является то, что для каждой новой задачи ее надо проектиро- вать и изготавливать заново. Это процесс длительный, дорогостоящий, требующий высокой квалификации исполнителей. А если решаемая за- дача вдруг изменяется, то вся аппаратура должна быть полностью заменена. В нашем быстро меняющемся мире это довольно расточительно. Путь преодоления этого недостатка довольно очевиден: надо постро- ить такую систему, которая могла бы легко адаптироваться под любую задачу, перестраиваться с одного алгоритма работы на другой без изменения аппаратуры. И задавать тот или иной алгоритм мы тогда могли бы путем ввода в систему некой дополнительной управляющей информации, программы работы системы (рис. 1.2). Тогда система станет универсальной, или программируемой, не жесткой, а гибкой. Именно это и обеспечивает микропроцессорная система. Аналоговые сигналы Цифровые сигналы Цифровые коды Аналоговые сигналы Электронная система (обработка, хранение) у Цифровые сигналы •X Цифровые 'z коды Управляющая информация (программа) Рис. 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 Философия микропроцессорной техники Рис. 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.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). Обмен процессора с каждым из двух типов памяти происходит по своей шине. Архитектура с общей шиной распространена гораздо больше, она при- меняется, например, в персональных компьютерах и в сложных микро- компьютерах. Архитектура с раздельными шинами применяется в основ- ном в однокристальных микроконтроллерах. Рассмотрим некоторые достоинства и недостатки обоих архитектур- ных решений. Архитектура с обшей шиной (принстонская, фон-неймановская) про- ще, она не требует от процессора одновременного обслуживания двух шин, контроля обмена по двум шинам сразу. Наличие единой памяти данных и 33
Философия микропроцессорной техники Глава 1 команд позволяет гибко распределять ее объем между кодами данных и команд. Например, в некоторых случаях нужна большая и сложная про- 1рамма, а данных в памяти надо хранить не слишком много. В других слу- чаях, наоборот, программа требуется простая, но необходимы большие объемы хранимых данных. Перераспределение памяти не вызывает ника- ких проблем, главное — чтобы программа и данные вместе помещались в памяти системы. Как правило, в системах с такой архитектурой память бывает довольно большого объема (до десятков и сотен мегабайт). Это по- зволяет решать самые сложные задачи. Рис. 1.16. Архитектура с раздельными шинами данных и команд. Архитектура с раздельными шинами данных и команд сложнее, она за- ставляет процессор работать одновременно с двумя потоками кодов, об- служивать обмен по двум шинам одновременно. Программа может разме- щаться только в памяти команд, данные — только в памяти данных. Такая узкая специализация ограничивает круг задач, решаемых системой, так как не дает возможности гибкого перераспределения памяти. Память данных и память команд в этом случае имеют не слишком большой объем, поэтому применение систем с данной архитектурой ограничивается обычно не слишком сложными задачами. В чем же преимущество архитектуры с двумя шинами (гарвардской)? В первую очередь, в быстродействии. Дело в том, что при единственной шине команд и данных процессор вынужден по одной этой шине принимать данные (из памяти или устрой- ства ввода/вывода) и передавать данные (в память или в устройство ввода/ вывода), а также читать команды из памяти. Естественно, одновременно эти пересылки кодов по магистрали происходить не могут, они должны Лекция 1 Философия микропроцессорной техники производиться по очереди. Современные процессоры способны совмес- тить во времени выполнение команд и проведение циклов обмена по сис- темной шине. Использование конвейерных технологий и быстрой кэш- памяти позволяет им ускорить процесс взаимодействия со сравнительно медленной системной памятью. Повышение тактовой частоты и совер- шенствование структуры процессоров дают возможность сократить время выполнения команд. Но дальнейшее увеличение быстродействия систе- мы возможно только при совмещении пересылки данных и чтения команд, то есть при переходе к архитектуре с двумя шинами. В случае двухшинной архитектуры обмен по обеим шинам может быть независимым, параллельным во времени. Соответственно, структуры шин (количество разрядов кода адреса и кода данных, порядок и скорость об- мена информацией и т.д.) могут быть выбраны оптимально для той зада- чи, которая решается каждой шиной. Поэтому при прочих равных усло- виях переход на двухшинную архитектуру ускоряет работу микропроцессорной системы, хотя и требует дополнительных затрат на аппаратуру, усложнения структуры процессора. Память данных в этом слу- чае имеет свое распределение адресов, а память команд — свое. Проще всего преимущества двухшинной архитектуры реализуются внутри одной микросхемы. В этом случае можно также существенно умень- шить влияние недостатков этой архитектуры. Поэтому основное ее при- менение — в микроконтроллерах, от которых не требуется решения слиш- ком сложных задач, но зато необходимо максимальное быстродействие при заданной тактовой частоте. 1.5. Типы микропроцессорных систем Диапазон применения микропроцессорной техники сейчас очень ши- рок, требования к микропроцессорным системам предъявляются самые разные. Поэтому сформировалось несколько типов микропроцессорных систем, различающихся мощностью, универсальностью, быстродействи- ем и структурными отличиями. Основные типы следующие: • микроконтроллеры — наиболее простой тип микропроцессорных систем, в которых все или большинство узлов системы выполнены в виде одной микросхемы; • контроллеры — управляющие микропроцессорные системы, выпол- ненные в виде отдельных модулей; • микрокомпьютеры — более мощные микропроцессорные системы с развитыми средствами сопряжения с внешними устройствами. • компьютеры (в том числе персональные) — самые мощные и наи- более универсальные микропроцессорные системы. 35 34
Глава 1 Философия микропроцессорной техники Четкую границу между этими типами иногда провести довольно сложно. Быстродействие всех типов микропроцессоров постоянно растет, и нередки ситуации, когда новый микроконтроллер оказывается быстрее, например, устаревшего персонального компьютера. Но кое- какие принципиальные отличия все-таки имеются. Микроконтроллеры представляют собой универсальные устройства, которые практически всегда используются не сами по себе, а в составе более сложных устройств, в том числе и контроллеров. Системная шина микроконтроллера скрыта от пользователя внутри микросхемы. Возможности подключения внешних устройств к микроконтроллеру ограничены. Устройства на микроконтроллерах обычно предназначены для решения одной задачи. Контроллеры, как правило, создаются для решения какой-то отдель- ной задачи или группы близких задач. Они обычно не имеют возможнос- тей подключения дополнительных узлов и устройств, например, большой памяти, средств ввода/вывода. Их системная шина чаще всего недоступна пользователю. Структура контроллера проста и оптимизирована под мак- симальное быстродействие. В большинстве случаев выполняемые про- граммы хранятся в постоянной памяти и не меняются. Конструктивно кон- троллеры выпускаются в одноплатном варианте. Микрокомпьютеры отличаются от контроллеров более открытой струк- турой, они допускают подключение к системной шине нескольких допол- нительных устройств. Производятся микрокомпьютеры в каркасе, корпу- се с разъемами системной магистрали, доступными пользователю. Микрокомпьютеры могут иметь средства хранения информации на маг- нитных носителях (например, магнитные диски) и довольно развитые средства связи с пользователем (видеомонитор, клавиатура). Микроком- пьютеры рассчитаны на широкий круг задач, но в отличие от контролле- ров, к каждой новой задаче его надо приспосабливать заново. Выполняе- мые микрокомпьютером программы можно легко менять. Наконец, компьютеры и самые распространенные из них — персональ- ные компьютеры — это самые универсальные из микропроцессорных си- стем. Они обязательно предусматривают возможность модернизации, а также широкие возможности подключения новых устройств. Их систем- ная шина, конечно, доступна пользователю. Кроме того, внешние устрой- ства могут подключаться к компьютеру через несколько встроенных пор- тов связи (количество портов доходит иногда до Ю). Компьютер всегда имеет сильно развитые средства связи с пользователем, средства длитель- ного хранения информации большого объема, средства связи с другими компьютерами по информационным сетям. Области применения компь- ютеров могут быть самыми разными: математические расчеты, обслужи- 36
Лекция 1 Философия микропроцессорной техники ванне доступа к базам данных, управление работой сложных электронных систем, компьютерные игры, подготовка документов и т.д. Любую задачу в принципе можно выполнить с помощью каждого из перечисленных типов микропроцессорных систем. Но при выборе типа надо по возможности избегать избыточности и предусматривать необхо- димую для данной задачи гибкость системы. В настоящее время при разработке новых микропроцессорных систем чаще всего выбирают путь использования микроконтроллеров (примерно в 80% случаев). При этом микроконтроллеры применяются или самосто- ятельно, с минимальной дополнительной аппаратурой, или в составе более сложных контроллеров с развитыми средствами ввода/вывода. Классические микропроцессорные системы на базе микросхем про- цессоров и микропроцессорных комплектов выпускаются сейчас довольно редко, в первую очередь, из-за сложности процесса разработки и отладки этих систем. Данный тип микропроцессорных систем выбирают в основ- ном тогда, когда микроконтроллеры не могут обеспечить требуемых ха- рактеристик. Наконец, заметное место занимают сейчас микропроцессорные сис- темы на основе персонального компьютера. Разработчику в этом случае нужно только оснастить персональный компьютер дополнительными ус- тройствами сопряжения, а ядро микропроцессорной системы уже готово. Персональный компьютер имеет развитые средства программирования, что существенно упрощает задачу разработчика. К тому же он может обес- печить самые сложные алгоритмы обработки информации. Основные не- достатки персонального компьютера — большие размеры корпуса и аппа- ратурная избыточность для простых задач. Недостатком является и неприспособленность большинства персональных компьютеров к работе в сложных условиях (запыленность, высокая влажность, вибрации, высо- кие температуры и т.д.). Однако выпускаются и специальные персональ- ные компьютеры, приспособленные к различным условиям эксплуатации. 37
Глава 2 Организация обмена информацией Глава 2. Организация обмена информацией Лекция 2. Шины микропроцессорной системы и циклы обмена В этой лекции речь идет об обмене информацией по шинам микропро- цессорных систем, о циклах обмена информацией и их фазах, о прин- ципах синхронизации обмена, принципах организации прерываний и ПДП. Ключевые слова: мультиплексирование, синхронный и асинхронный обмен, циклы ввода и вывода, векторное и радиальное прерывания, запросы прерывания и ПДП. Самое главное, что должен знать разработчик микропроцессорных сис- тем — это принципы организации обмена информацией по шинам таких систем. Без этого невозможно разработать аппаратную часть системы, а без аппаратной части не будет работать никакое программное обеспечение. За более чем 30 лет, прошедших с момента появления первых микро- процессоров, были выработаны определенные правила обмена, которым следуют и разработчики новых микропроцессорных систем. Правила эти не слишком сложны, но твердо знать и неукоснительно соблюдать их для успешной работы необходимо. Как показала практика, принципы органи- зации обмена по шинам гораздо важнее, чем особенности конкретных мик- ропроцессоров. Стандартные системные магистрали живут гораздо дольше, чем тот или иной процессор. Разработчики новых процессоров ориентиру- ются на уже существующие стандарты магистрали. Более того, некоторые системы на основе совершенно разных процессоров используют одну и ту же системную магистраль. То есть магистраль оказывается самым главным системообразующим фактором в микропроцессорных системах. Обмен информацией в микропроцессорных системах происходит в цик- лах обмена информацией. Под циклом обмена информацией понимается временной интервал, в течение которого происходит выполнение одной элементарной операции обмена по шине. Например, пересылка кода дан- ных из процессора в память или же пересылка кода данных из устройства ввода/вывода в процессор. В пределах одного цикла также может переда- 38
Лекция 2 Шины микропроцессорной системы и циклы обмена ваться и несколько кодов данных, даже целый массив данных, но это встре- чается реже. Циклы обмена информацией делятся на два основных типа: • Цикл записи (вывода), в котором процессор записывает (выводит) информацию; • Цикл чтения (ввода), в котором процессор читает (вводит) инфор- мацию. В некоторых микропроцессорных системах существует также цикл «чте- ние-модификация-запись» или же «ввод-пауза-вывод». В этих циклах про- цессор сначала читает информацию из памяти или устройства ввода/вывода, затем как-то преобразует ее и снова записывает по тому же адресу. Напри- мер, процессор может прочитать код из ячейки памяти, увеличить его на единицу и снова записать в эту же ячейку памяти. Наличие или отсутствие данного типа цикла связано с особенностями используемого процессора. Особое место занимают циклы прямого доступа к памяти (если режим ПДП в системе предусмотрен) и циклы запроса и предоставления преры- вания (если прерывания в системе есть). Когда в дальнейшем речь пойдет о таких циклах, это будет специально оговорено. Во время каждого цикла устройства, участвующие в обмене информа- цией, передают друг другу информационные и управляющие сигналы в строго установленном порядке или, как еще говорят, в соответствии с при- нятым протоколом обмена информацией. Длительность цикла обмена может быть постоянной или переменной, но она всегда включает в себя несколько периодов сигнала тактовой час- тоты системы. То есть даже в идеальном случае частота чтения информа- ции процессором и частота записи информации оказываются в несколько раз меньше тактовой частоты системы. Чтение кодов команд из памяти системы также производится с помо- щью циклов чтения. Поэтому в случае одношинной архитектуры на сис- темной магистрали чередуются циклы чтения команд и циклы пересылки (чтения и записи) данных, но протоколы обмена остаются неизменными независимо оттого, что передается — данные или команды. В случае двух- шинной архитектуры циклы чтения команд и записи или чтения данных разделяются по разным шинам и могут выполняться одновременно. 2.1. Шины микропроцессорной системы Прежде чем переходить к особенностям циклов обмена, остановимся под- робнее на составе и назначении различных шин микропроцессорной системы. Как уже упоминалось, в системную магистраль (системную шину) мик- ропроцессорной системы входит три основные информационные шины: адреса, данных и управления. 39
Глава 2 Организация обмена информацией Шина данных — это основная шина, ради которой и создается вся сис- тема. Количество ее разрядов (линий связи) определяет скорость и эф- фективность информационного обмена, а также максимально возможное количество команд. Шина данных всегда двунаправленная, так как предполагает передачу информации в обоих направлениях. Наиболее часто встречающийся тип выходного каскада для линий этой шины — выход с тремя состояниями. Обычно шина данных имеет 8, 16, 32 или 64 разряда. Понятно, что за один цикл обмена по 64-разрядной шине может передаваться 8 байт ин- формации, а по 8-разрядной — только один байт. Разрядность шины дан- ных определяет и разрядность всей магистрали. Например, когда говорят о 32-разрядной системной магистрали, подразумевается, что она имеет 32- разрядную шину данных. Шина адреса — вторая по важности шина, которая определяет макси- мально возможную сложность микропроцессорной системы, то есть до- пустимый объем памяти и, следовательно, максимально возможный раз- мер программы и максимально возможный объем запоминаемых данных. Количество адресов, обеспечиваемых шиной адреса, определяется как 2N, где N — количество разрядов. Например, 16-разрядная шина адреса обес- печивает 65 536 адресов. Разрядность шины адреса обычно кратна 4 и мо- жет достигать 32 и даже 64. Шина адреса может быть однонаправленной (когда магистралью всегда управляет только процессор) или двунаправленной (когда процессор может временно передавать управление магистралью другому устройству, напри- мер контроллеру ПДП). Наиболее часто используются типы выходных кас- кадов с тремя состояниями или обычные ТТЛ (с двумя состояниями). Как в шине данных, так и в шине адреса может использоваться положи- тельная логика или отрицательная логика. При положительной логике высо- кий уровень напряжения соответствует логической единице на соответству- ющей линии связи, низкий — логическому нулю. При отрицательной логике — наоборот. В большинстве случаев уровни сигналов на шинах — ТТЛ. Для снижения общего количества линий связи магистрали часто при- меняется мультиплексирование шин адреса и данных. То есть одни и те же линии связи используются в разные моменты времени для передачи как адреса, так и данных (в начале цикла — адрес, в конце цикла — данные). Для фиксации этих моментов (стробирования) служат специальные сиг- налы на шине управления. Понятно, что мультиплексированная шина ад- реса/данных обеспечивает меньшую скорость обмена, требует более дли- тельного цикла обмена (рис. 2.1). По типу шины адреса и шины данных все магистрали также делятся на мультиплексированные и немультиплек- сированные. 40
Лекция 2 Шины микропроцессорной системы и циклы обмена Шина адреса Шина данных Шина адреса/данных ^мультиплексированные шины Мультиплексированная шина Рис. 2.1. Мультиплексирование шин адреса и данных. В некоторых мультиплексированных магистралях после одного кода адреса передается несколько кодов данных (массив данных). Это позво- ляет существенно повысить быстродействие магистрали. Иногда в магис- тралях применяется частичное мультиплексирование, то есть часть раз- рядов данных передается по ^мультиплексированным линиям, а другая часть — по мультиплексированным с адресом линиям. Шина управления — это вспомогательная шина, управляющие сигналы на которой определяют тип текущего цикла и фиксируют моменты вре- мени, соответствующие разным частям или стадиям цикла. Кроме того, управляющие сигналы обеспечивают согласование работы процессора (или другого хозяина магистрали, задатчика, master) с работой памяти или устройства ввода/вывода (устройства-исполнителя, slave). Управляющие сигналы также обслуживают запрос и предоставление прерываний, запрос и предоставление прямого доступа. Сигналы шины управления могут передаваться как в положительной логике (реже), так и в отрицательной логике (чаще). Линии шины управ- ления могут быть как однонаправленными, так и двунаправленными. Типы выход! 1ых каскадов могут быть самыми разными: с двумя состояниями (для однонаправленных линий), с тремя состояниями (для двунаправленных линий), с открытым коллектором (для двунаправленных и мультиплекси- рованных линий). Самые главные управляющие сигналы — это стробы обмена, то есть сигналы, формируемые процессором и определяющие моменты време- ни, в которые производится пересылка данных по шине данных, обмен данными. Чаще всего в магистрали используются два различных строба обмена: • Строб записи (вывода), который определяет момент времени, когда устройство-исполнитель может принимать данные, выставленные процессором на шину данных; • Строб чтения (ввода), который определяет момент времени, когда устройство-исполнитель должно выдать на шину данных код дан- ных, который будет прочитан процессором. 41
Глава 2 Организация обмена информацией обмена t выд При этом большое значение имеет то, как процессор заканчивает об- мен в пределах никла, в какой момент он снимает свой строб обмена. Воз- можны два пути решения (рис. 2.2): • При синхронном обмене процессор заканчивает обмен данными са- мостоятельно, через раз и навсегда установленный временной ин- тервал выдержки (t ), то есть без учета интересов устройства-ис- полнителя; • При асинхронном обмене процессор заканчивает обмен только тогда, когда устройство-исполнитель подтверждает выполнение опера- ции специальным сигналом (так называемый режим handshake — рукопожатие). Строб ------г--------------- Строб - обмена Синхронный обмен Асинхронный обмен Рис. 2.2. Синхронный обмен и асинхронный обмен. Достоинства синхронного обмена — более простой протокол обмена, меньшее количество управляющих сигналов. Недостатки — отсутствие га- рантии, что исполнитель выполнил требуемую операцию, а также высо- кие требования к быстродействию исполнителя. Достоинства асинхронного обмена — более надежная пересылка дан- ных, возможность работы с самыми разными по быстродействию испол- нителями. Недостаток — необходимость формирования сигнала подтвер- ждения всеми исполнителями, то есть дополнительные аппаратурные затраты. Какой тип обмена быстрее, синхронный или асинхронный? Ответ на этот вопрос неоднозначен. С одной стороны, при асинхронном обмене требуется какое-то время на выработку, передачу дополнительного сиг- нала и на его обработку процессором. С другой стороны, при синхронном обмене приходится искусственно увеличивать длительность строба обме- на для соответствия требованиям большего числа исполнителей, чтобы они успевали обмениваться информацией в темпе процессора. Поэтому иногда в магистрали предусматривают возможность как синхронного, так и асинхронного обмена, причем синхронный обмен является основным и довольно быстрым, а асинхронный применяется только для медленных исполнителей. По используемому типу обмена магистрали микропроцессорных сис- тем также делятся на синхронные и асинхронные. 42
Лекция 2 Шины микропроцессорной системы и циклы обмена 2.2. Циклы обмена информацией 2.2.1. Циклы программного обмена Рассмотрим для примера два довольно типичных случая программного обмена по магистрали микропроцессорной системы. Первый пример — это обмен по мультиплексированной асинхронной магистрали Q-bus, предложенной фирмой DEC и широко применявшей- ся в микрокомпьютерах и промышленных контроллерах. Упрощенные вре- менные диаграммы циклов чтения (ввода) и записи (вывода) по этой ма- гистрали приведены на рис. 2.3 и 2.4. Отметим, что в дальнейшем тексте знак «минус» перед названием сиг- нала говорит о том, что активный уровень сигнала низкий, пассивный — высокий, то есть сигнал отрицательный. Если минуса перед названием сигнала нет, то сигнал положительный, его низкий уровень пассивный, а высокий — активный. На шине адреса/данных (AD) в начале цикла обмена (в фазе адреса) процессор (задатчик) выставляет код адреса. На этой шине используется отрицательная логика. Средний уровень сигналов на шине AD обознача- ет, что состояния сигналов на шине в данные временные интервалы не важны. Для стробирования адреса используется отрицательный синхро- сигнал -SYNC, выставляемый также процессором. Его передний (отри- цательный) фронт соответствует действительности кода адреса на шине AD. Фаза адреса одинакова в обоих циклах записи и чтения. Фаза адреса Фаза данных AD — QVNIC' , ( Адрес )— ( Чит. данные )- OTINL/ П1М UIN QDIV - \/ I П LT ~~\ f Рис. 2.3. Цикл чтения на магистрали Q-bus. Получив (распознав) свой код адреса, устройство ввода/вывода или па- мять (исполнитель) готовится к проведению обмена. Через некоторое вре- мя после начала (отрицательного фронта) сигнала -SYNC процессор сни- мает адрес и начинает фазу данных. 43
Глава 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. 44
Лекция 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 свой 45
Глава 2 Организация обмена информацией код данных (читаемые данные). Логика на шине данных положительная. Через установленное время строб обмена -IOR снимается процессором, после чего снимается также и код адреса с шины SA. Цикл заканчивается без учета быстродействия исполнителя. Рис. 2.6. Цикл чтения из УВВ на магистрали ISA. Рис. 2.7. Цикл записи в УВВ на магистрали ISA. Но так происходит только в случае основного, синхронного обмена. Кроме него на магистрали ISA также предусмотрена возможность асинх- ронного обмена. Для этого применяется сигнал готовности канала (маги- страли) I/O CH RDY Тип выходного каскада для данного сигнала — ОК, для предотвращения конфликтов между устройствами-исполнителями. При синхронном обмене сигнал I/O CH RDY всегда положительный. Но медленное устройство-исполнитель, не успевающее работать в темпе про- цессора, может этот сигнал снять, то есть сделать нулевым сразу после начала строба обмена. Тогда процессор до того момента, пока сигнал I/O CH RDY не станет снова положительным, приостанавливает завершение цикла, продлевает строб обмена. Конечно, слишком большая длительность этого сигнала рассматривается как аварийная ситуация. Для простоты по- нимания можно считать, что устройство-исполнитель формирует в дан- ном случае отрицательный сигнал неготовности завершить обмен. На вре- мя этого сигнала обмен на магистрали приостанавливается. 46
Лекция 2 Шины микропроцессорной системы и циклы обмена Принципиальное отличие асинхронного обмена по магистрали ISA от асинхронного обмена по магистрали Q-bus состоит в следующем. Если в случае Q-bus сигнал подтверждения обязателен, и его должен формиро- вать каждый исполнитель, то в случае ISA сигнал о неготовности испол- нитель может не формировать, если он успевает работать в темпе процес- сора. Зато в случае Q-bus к концу цикла обмена процессор всегда уверен, что устройство-исполнитель выполнило требуемую операцию, а в случае ISA такой уверенности нет. В фазе данных цикла записи по магистрали ISA (рис. 2.7) процессор выставляет на шину данных SD код записываемых данных и сопровожда- ет их стробом записи данных в устройство ввода/вывода -IOW. Получив этот сигнал, устройство-исполнитель должно принять с шины SD код за- писываемых данных. Если оно не успевает сделать это в темпе процессо- ра, то оно может снять на нужное время сигнал I/O CH RDY после полу- чения переднего фронта сигнала -IOW. Тогда процессор приостановит окончание цикла записи. Рассмотренные примеры, конечно, не раскрывают всех тонкостей об- мена по упомянутым магистралям. Они всего лишь иллюстрируют глав- ные принципы обмена по ним. 2.2.2. Циклы обмена по прерываниям Циклы обмена в режиме прерываний строятся по тем же принципам, что и циклы программного обмена, но имеют ряд специфических особен- ностей. Прерывания в микропроцессорных системах бывают двух основных типов: • векторные прерывания, которые требуют проведения цикла чтения по магистрали; • радиальные прерывания, которые не требуют никакого цикла обме- на по магистрали. Дело в том, что прерываний в микропроцессорной системе обычно бывает много. Поэтому процессору необходима информация о номере (или, как еще говорят, об адресе вектора) конкретного прерывания. Эта информация может быть передана процессору двумя путями. При векторном прерывании код номера прерывания передается про- цессору тем устройством ввода/вывода, которое данное прерывание зап- росило. Для этого процессор проводит цикл чтения по магистрали, и по шине данных получает код номера прерывания. Шина адреса в данном Цикле обычно не используется, так как устройство, запросившее преры- вание, и так знает, что процессор будет обращаться именно к нему. В этом случае в магистрали достаточно всего одной линии запроса прерывания 47
Глава 2 Организация обмена информацией для всех устройств ввода/вывода. Так организованы прерывания, напри- мер, в магистрали Q-bus. Системная магистраль Рис. 2.8. Сигналы запроса и предоставления прерывания в магистрали Q-bus. Схема распространения сигналов, участвующих в прерываниях на ма- гистрали Q-bus, показана на рис. 2.8. Упрощенная временная диаграмма цикла запроса и предоставления магистрали представлена на рис. 2.9. Рис. 2.9. Цикл запроса/предоставления векторного прерывания на магистрали Q-bus. Запрос прерывания осуществляется отрицательным сигналом -VIRQ, который может формироваться каждым из устройств, запрашивающих прерывание. Тип выходного каскада для этого сигнала — ОК, чтобы избе- жать конфликтов между запрашивающими прерывания устройствами. Получив сигнал -VIRQ, процессор предоставляет прерывание (закончив предварительно выполнение текущей команды). Для этого он выставляет сигнал чтения данных -DIN и сигнал предоставления прерывания IAKO. Этот сигнал IAKO последовательно проходит через все устройства, кото- рые могут запрашивать прерывания. Если устройство запросило преры- 48
Лекция 2 Шины микропроцессорной системы и циклы обмена ванне, то оно не пропускает через себя этот сигнал. В результате получается, что если прерывания одновременно запросили два или более устройств, то сигнал предоставления прерывания получит только одно устройство, а именно то, которое ближе к процессору. Такой механизм разрешения конфликтов называется иногда географическим приоритетом (или цепочечным приоритетом, Daisy Chain). Получив сигнал IAKO, устройство, запросившее прерывание, должно снять свой сигнал -VIRQ. Затем процессор проводит цикл безадресного чтения номера прерыва- ния. В ответ на полученные сигналы -DIN и IAKO устройство, которому предоставлено прерывание, должно выдать на шину адреса/данных AD код номера прерывания (адреса вектора прерывания) и выставить сигнал подтверждения -RPLY Процессор читает код номера прерывания и за- канчивает цикл безадресного чтения снятием сигналов -DIN и IAKO. Системная магистраль Рис. 2.10. Структура связей для организации радиальных прерываний на магистрали ISA. При радиальном прерывании в магистрали имеется столько линий зап- роса прерывания, сколько всего может быть разных прерываний. То есть каждое устройство ввода/вывода, желающее использовать прерывание, подает сигнал запроса прерывания по своей отдельной линии. Процессор узнает о номере прерывания по номеру линии, по которой пришел сигнал запроса прерывания. Никаких циклов обмена по магистрали при этом не требуется. В случае радиальных прерываний в систему обычно включается Дополнительная микросхема контроллера прерываний, обрабатывающая сигналы запросов прерываний. Именно так организованы прерывания, например, в магистрали ISA. Упрощенная структура связей между устройствами, участвующи- ми в обмене по прерываниям, на магистрали ISA показана на рис. 2.10. 49
Глава 2 Организация обмена информацией Процессор общается с контроллером прерываний как по магистрали (чтобы задать ему режимы работы), так и вне магистрали (при обра- ботке запросов на прерывание). Сигналы запросов прерываний IRQ распределяются между всеми устройствами магистрали. На каждую линию IRQ приходится одно устройство. Тип выходного каскада для этих линий — 2С, так как конфликты здесь не предусмотрены. Запро- сом прерывания является передний, положительный фронт сигнала IRQ. При одновременном поступлении сигналов IRQ от нескольких устройств порядок их обслуживания определяется контроллером пре- рываний. Какой тип прерываний лучше — векторный или радиальный? Векторные прерывания обеспечивают системе большую гибкость, в си- стеме их может быть очень много. Но зато они требуют дополнительных аппаратурных узлов во всех устройствах, запрашивающих прерывания, для обслуживания циклов безадресного чтения. Радиальных прерываний в системе обычно не очень много (от 1 до 16). При этом типе прерываний, как правило, требуется введение в систему специального контроллера прерываний. Каждое радиальное прерывание требует введения дополнительной линии в шину управления системной магистрали. Но работать с радиальными прерываниями проще, так как все сводится только к выработке единственного сигнала IRQ, и никаких циклов обмена по магистрали не требуется. 2.2.3. Циклы обмена в режиме ПДП Циклы обмена в режиме прямого доступа к памяти выполняются по тем же правилам, что и циклы программного обмена, и циклы предостав- ления прерываний. Прежде чем начать обмен в режиме ПДП, устройство, которому необ- ходим ПДП, должно запросить ПДП и получить его. Процедура запроса и предоставления ПДП очень похожа на процедуру запроса и предоставле- ния прерывания. В обоих случаях устройство, требующее обслуживания, посылает сигнал запроса процессору. Однако в случае ПДП процессор обя- зательно должен предоставить ПДП запросившему устройству с помощью специальных сигналов, так как на время ПДП процессор отключается от магистрали. А при радиальных прерываниях предоставления прерывания от процессора не требуется. На магистрали Q-bus запрос и предоставление ПДП организуются по- добно запросу и предоставлению прерывания. Упрощенная структура свя- зей устройств, участвующих в ПДП, показана на рис. 2.11. Временная ди- аграмма запроса/предоставления ПДП очень близка к временной диаграмме запроса/предоставления прерывания (см. рис. 2.9). 50
Лекция 2 Шины микропроцессорной системы и циклы обмена Рис. 2.11. Структура связей запроса/предоставления ПДП на магистрали Q-bus. Сигнал запроса ПДП, называемый -DMR, передается всеми устрой- ствами, нуждающимися в ПДП, по одной линии магистрали. Тип выход- ного каскада на этой линии — ОК. Процессор, получив сигнал -DMR, выдает сигнал предоставления ПДП DMGO, аналогичный сигналу IAKO. Этот сигнал также проходит через все устройства последовательно, в ре- зультате чего ПДП получает только то устройство, которое находится бли- же к процессору (географический приоритет). А затем устройство, полу- чившее ПДП, проводит циклы обмена по магистрали, аналогично циклам программного обмена. В циклах ПДП информация читается из памяти и записывается в устройство ввода/вывода, или наоборот — читается из ус- тройства ввода/вывода и передается в память. На магистрали ISA запрос/предоставление ПДП очень напоминает организацию радиальных прерываний (рис. 2.12). Точно так же в системе существует контроллер ПДП, к которому сходятся сигналы запроса ПДП, называемые DRQ, и от которого расходятся сигналы предоставления ПДП, называемые -DACK. К каждому каналу ПДП (пара сигналов DRQ и -DACK) подключается только одно устройство, запрашивающее ПДП. Тип выходных каскадов для этих сигналов —2С. Устройство, нуждающееся в ПДП, посылает сигнал запроса DRQ и получает в ответ сигнал предостав- ления -DACK. После этого контроллер ПДП проводит циклы обмена по магистрали между устройством ввода/вывода и памятью. Упрощенная временная диаграмма циклов ПДП на магистрали ISA по- казана на рис. 2.13. На магистрали ISA используются раздельные стробы записи в память (-MEMW) и записи в устройства ввода/вывода (-1OW), а также раздель- ные стробы чтения из памяти (-MEMR) и чтения из устройств ввода/вы- вода (-1OR). Это позволяет за один цикл обмена ПДП читать информа- цию из памяти и записывать ее в устройство ввода/вывода или же читать 51
Глава 2 Организация обмена информацией информацию из устройства ввода/вывода и записывать ее в память. При этом на шине адреса выставляется адрес памяти, а адрес устройства ввода/ вывода заменяется одним- единственным сигналом AEN. Естественно, в цикле обмена в режиме ПДП участвует только то устройство ввода/выво- да, которое предварительно запросило ПДП и которому ПДП было пре- доставлено. Поэтому никаких конфликтов между устройствами ввода/вы- вода из-за такой упрощенной адресации не возникает. Системная магистраль Рис. 2.12. Структура связей запроса/предоставления ПДП на магистрали ISA. Рис. 2.13. Цикл ПДП на магистрали ISA. 2.3. Прохождение сигналов по магистрали При организации обмена по магистралям и шинам разработчику не- обходимо учитывать несколько важных моментов, связанных как с осо- бенностью распространения сигналов по шинам, так и с самой природой 52
Лекция 2 Шины микропроцессорной системы и циклы обмена шин. В противном случае микропроцессорная система может попросту не работать или работать неустойчиво, хотя вся логика цифровых устройств, входящих в систему, будет спроектирована безошибочно. В случае, когда системная шина (магистраль) микропроцессорной си- стемы является внешней, а не скрыта внутри микросхемы, необходимо учитывать особенности распространения сигналов по длинным линиям. Хотя в большинстве случаев длина магистрали не слишком велика, не пре- вышает 1—2 десятков сантиметров, это все равно оказывает большое вли- яние на синхронизацию обмена. На прохождение сигналов по магистрали влияют следующие факторы: • конечная величина задержки распространения сигналов по линиям магистрали; • различие задержек распространения сигналов по разным линиям шины; • неодновременное выставление сигналов на линии шины; • искажение фронтов сигналов, проходящих по линиям магистрали; • отражение сигналов от концов линий связи (рис. 2.14). Рис. 2.14. Прохождение сигналов по шине. Для учета всех этих факторов разработчики стандартных магистралей обмена и стандартных протоколов обмена всегда закладывают необходи- мые задержки между сигналами, участвующими в обмене. Кроме того, за- держки между сигналами выбираются таким образом, чтобы устройство, которому адресован тот или иной сигнал, имело достаточно времени для его обработки. Если разрабатывается новая магистраль, все это тоже надо учитывать. Поэтому пытаться «модернизировать» какой-то стандартный протокол и ускорять обмен по магистрали путем уменьшения задержек, предусмот- ренных стандартом, очень опасно. Точно так же опасно, не изменяя про- токола обмена, пытаться увеличить длину магистрали, увеличивая тем са- 53
Глава 2 Организация обмена информацией мым задержки распространения сигналов по линиям и шинам. Особенно чувствительны к такого рода «модернизациям» синхронные магистрали, в которых не предусмотрено обязательное подтверждение выполнения каждой операции. Например, длительность фазы адреса в цикле обмена выбирается та- ким образом. В течение адресной фазы все сигналы всех разрядов кода адреса, пусть даже и сформированные процессором не одновременно, должны дойти до устройства-исполнителя по своим проводам шины. А устройство-исполнитель должно этот код адреса принять и обработать (то есть отличить свой адрес от чужого). Естественно, для гарантии в дли- тельность адресной фазы еще добавляется небольшая дополнительная задержка. Точно так же длительность фазы данных в цикле чтения должна выби- раться такой, чтобы устройство-исполнитель успело получить строб чте- ния и выдать код читаемых данных на шину данных. Затем этот код дол- жен успеть дойти до процессора и процессор должен успеть его прочитать. После чего процессор снимает сигнал строба чтения, этот задний фронт сигнала доходит с задержкой до устройства-исполнителя, которое также с задержкой снимает свой код данных. Аналогично и в цикле записи. Для улучшения формы сигналов, распространяющихся по магистрали, иногда применяют оконечные согласователи (терминаторы) на концах ли- ний магистрали. Особенно важно их применение в случае, когда допусти- мая длина магистрали превышает несколько метров. Например, в случае магистрали Q-bus применяются два типа согласователей: 120-омный и 250- омный (рис. 2.15). Рис. 2.15. Оконечные согласователи на магистрали Q-bus. Включение согласователей предъявляет дополнительные требования к нагрузочной способности передатчиков, работающих на линии магист- рали. В магистрали ISA подобные согласователи не используются, хотя к некоторым линиям присоединены резисторы, соединенные другим своим выводом с шиной питания (прежде всего это линии, тип выходного кас- када для которых — ОК). 54
Лекция 2 Шины микропроцессорной системы и циклы обмена В любом случае выходные каскады передатчиков, работающих на ли- нии магистрали, должны обеспечивать высокие выходные токи, так как к магистрали может подключаться несколько устройств, каждое из которых потребляет входной ток. Типичные величины требуемых выходных токов магистральных передатчиков находятся в пределах 20—30 мА. В то же вре- мя входные токи магистральных приемников должны быть малыми, что- бы не перегружать передатчики. Типичные величины допустимых вход- ных токов магистральных приемников лежат в пределах 0,2—0,8 мА. 55
Глава 2 Организация обмена информацией Лекция 3. Функции устройств магистрали В этой лекции рассказывается о функциях основных устройств микро- процессорной системы: процессора, памяти, устройств ввода-вывода, о принципах их устройства и подключения к магистрали. Ключевые слова: интерфейс, регистры, буферы, АЛУ, ОЗУ, ПЗУ, стек, селектор адреса. 2.4. Функции устройств магистрали Рассмотрим теперь, как взаимодействуют на магистрали основные ус- тройства микропроцессорной системы: процессор, память (оперативная и постоянная), устройства ввода/вывода. 2.4.1. Функции процессора Процессор (рис. 2.16) обычно представляет собой отдельную микросхе- му или же часть микросхемы (в случае микроконтроллера). В прежние годы процессор иногда выполнялся на комплектах из нескольких микросхем, но сейчас от такого подхода уже практически отказались. Микросхема про- цессора обязательно имеет выводы трех шин: шины адреса, шины данных и шины управления. Иногда некоторые сигналы и шины мультиплексиру- ются, чтобы уменьшить количество выводов микросхемы процессора. Важнейшие характеристики процессора — это количество разрядов его шины данных, количество разрядов его шины адреса и количество управ- ляющих сигналов в шине управления. Разрядность шины данных опреде- ляет скорость работы системы. Разрядность шины адреса определяет до- пустимую сложность системы. Количество линий управления определяет разнообразие режимов обмена и эффективность обмена процессора с дру- гими устройствами системы. Кроме выводов для сигналов трех основных шин процессор всегда име- ет вывод (или два вывода) для подключения внешнего тактового сигнала или кварцевого резонатора (CLK), так как процессор всегда представляет собой тактируемое устройство. Чем больше тактовая частота процессора, тем он быстрее работает, то есть тем быстрее выполняет команды. Впрочем, быстродействие процессора определяется не только тактовой частотой, но и особенностями его структуры. Современные процессоры выполняют боль- шинство команд за один такт и имеют средства для параллельного выполнения нескольких команд. Тактовая частота процессора не связана 56
Лекция 3 Функции устройств магистрали прямо и жестко со скоростью обмена по магистрали, так как скорость об- мена по магистрали ограничена задержками распространения сигналов и искажениями сигналов на магистрали. То есть тактовая частота процессо- ра определяет только его внутреннее быстродействие, а не внешнее. Иног- да тактовая частота процессора имеет нижний и верхний пределы. При пре- вышении верхнего предела частоты возможно перегревание процессора, а также сбои, причем, что самое неприятное, возникающие не всегда и нере- гулярно. Так что с изменением этой частоты надо быть очень осторожным. Системная магистраль Рис. 2.16. Схема включения процессора. Еще один важный сигнал, который имеется в каждом процессоре, — это сигнал начального сброса RESET. При включении питания, при аварийной ситуации или зависании процессора подача этого сигнала приводит к ини- циализации процессора, заставляет его приступить к выполнению програм- мы начального запуска. Аварийная ситуация может быть вызвана помехами по цепям питания и «земли», сбоями в работе памяти, внешними ионизи- рующими излучениями и еще множеством причин. В результате процессор может потерять контроль над выполняемой программой и остановиться в каком-то адресе. Для выхода из этого состояния как раз и используется сигнал начального сброса. Этот же вход начального сброса может исполь- зоваться для оповещения процессора о том, что напряжение питания стало ниже установленного предела. В таком случае процессор переходит к вы- полнению программы сохранения важных данных. По сути, этот вход пред- ставляет собой особую разновидность радиального прерывания. Иногда у микросхемы процессора имеется еще один-два входа ради- альных прерываний для обработки особых ситуаций (например, для пре- рывания от внешнего таймера). 57
Глава 2 Организация обмена информацией Шина питания современного процессора обычно имеет одно напря- жение питания (+5В или +3,ЗВ) и общий провод («землю»). Первые про- цессоры нередко требовали нескольких напряжений питания. В некото- рых процессорах предусмотрен режим пониженного энергопотребления. Вообще, современные микросхемы процессоров, особенно с высокими тактовыми частотами, потребляют довольно большую мощность. В резуль- тате для поддержания нормальной рабочей температуры корпуса на них нередко приходится устанавливать радиаторы, вентиляторы или даже спе- циальные микрохолодильники. Для подключения процессора к магистрали используются буферные микросхемы, обеспечивающие, если необходимо, демультиплексирова- ние сигналов и электрическое буферирование сигналов магистрали. Иногда протоколы обмена по системной магистрали и по шинам процессора не совпадают между собой, тогда буферные микросхемы еще и согласуют эти протоколы друг с другом. Иногда в микропроцессорной системе используется несколько магистралей (системных и локальных), тогда для каждой из магистралей применяется свой буферный узел. Такая структура характерна, например, для персональных компьютеров. После включения питания процессор переходит в первый адрес про- граммы начального пуска и выполняет эту программу. Данная програм- ма предварительно записана в постоянную (энергонезависимую) память. После завершения программы начального пуска процессор начинает вы- полнять основную программу, находящуюся в постоянной или опера- тивной памяти, для чего выбирает по очереди все команды. От этой про- граммы процессор могут отвлекать внешние прерывания или запросы на ПДП. Команды из памяти процессор выбирает с помощью циклов чтения по магистрали. При необходимости процессор записывает данные в память или в устройства ввода/вывода с помощью циклов записи или же читает данные из памяти или из устройств ввода/вывода с помощью циклов чтения. Таким образом, основные функции любого процессора следующие: • выборка (чтение) выполняемых команд; • ввод (чтение) данных из памяти или устройства ввода/вывода; • вывод (запись) данных в память или в устройства ввода/вывода; • обработка данных (операндов), в том числе арифметические опера- ции над ними; • адресация памяти, то есть задание адреса памяти, с которым будет производиться обмен; • обработка прерываний и режима прямого доступа. Упрощенно структуру микропроцессора можно представить в следую- щем виде (рис. 2.17). 58
Лекция 3 Функции устройств магистрали Шина Шина Шина Шина Тактовый данных адреса управления питания сигнал Рис. 2.17. Внутренняя структура микропроцессора. Основные функции показанных узлов следующие. Схема управления выборкой команд выполняет чтение команд из памяти и их дешифрацию. В первых микропроцессорах было невозможно одно- временное выполнение предыдущей команды и выборка следующей коман- ды, так как процессор не мог совмещать эти операции. Но уже в 16- разрядных процессорах появляется так называемый конвейер (очередь) команд, позволяющий выбирать несколько следующих команд, пока вы- полняется предыдущая. Два процесса идут параллельно, что ускоряет рабо- ту процессора. Конвейер представляет собой небольшую внутреннюю па- мять процессора, в которую при малейшей возможности (при освобождении внешней шины) записывается несколько команд, следующих за исполняе- мой. Читаются эти команды процессором в том же порядке, что и записы- ваются в конвейер (это память типа FIFO, First In — First Out, первый вошел — первый вышел). Правда, если выполняемая команда предполагает переход не на следующую ячейку памяти, а на удаленную (с меньшим или большим адресом), конвейер не помогает, и его приходится сбрасывать. Но такие команды встречаются в программах сравнительно редко. Развитием идеи конвейера стало использование внутренней кэш-па- мяти процессора, которая заполняется командами, пока процессор занят выполнением предыдущих команд. Чем больше объем кэш-памяти, тем меньше вероятность того, что ее содержимое придется сбросить при ко- 59
Глава 2 Организация обмена информацией манде перехода. Понятно, что обрабатывать команды, находящиеся во внутренней памяти, процессор может гораздо быстрее, чем те, которые расположены во внешней памяти. В кэш-памяти могут храниться и дан- ные, которые обрабатываются в данный момент, это также ускоряет ра- боту. Для большего ускорения выборки команд в современных процессорах применяют совмещение выборки и дешифрации, одновременную дешифрацию нескольких команд, несколько параллельных конвейеров команд, предсказание команд переходов и некоторые другие методы. Арифметико-логическое устройство (или АЛУ, ALU) предназначено для обработки информации в соответствии с полученной процессором коман- дой. Примерами обработки могут служить логические операции (типа ло- гического «И», «ИЛИ», «Исключающего ИЛИ» и т.д.) то есть побитные операции над операндами, а также арифметические операции (типа сло- жения, вычитания, умножения, деления и т.д.). Над какими кодами про- изводится операция, куда помещается ее результат — определяется вы- полняемой командой. Если команда сводится всего лишь к пересылке данных без их обработки, то АЛУ не участвует в ее выполнении. Быстродействие АЛУ во многом определяет производительность процес- сора. Причем важна не только частота тактового сигнала, которым тактиру- ется АЛУ, но и количество тактов, необходимое для выполнения той или иной команды. Для повышения производительности разработчики стремят- ся довести время выполнения команды до одного такта, а также обеспечить работу АЛУ на возможно более высокой частоте. Один из путей решения этой задачи состоит в уменьшении количества выполняемых АЛ У команд, создание процессоров с уменьшенным набором команд (так называемые RISC- процессоры). Другой путь повышения производительности процессора — использование нескольких параллельно работающих АЛУ. Что касается операций над числами с плавающей точкой и других спе- циальных сложных операций, то в системах на базе первых процессоров их реализовали последовательностью более простых команд, специальными подпрограммами, однако затем были разработаны специальные вычисли- тели — математические сопроцессоры, которые заменяли основной про- цессор на время выполнения таких команд. В современных микропроцес- сорах математические сопроцессоры входят в структуру как составная часть. Регистры процессора представляют собой по сути ячейки очень быстрой памяти и служат для временного хранения различных кодов: данных, ад- ресов, служебных кодов. Операции с этими кодами выполняются предель- но быстро, поэтому, в общем случае, чем больше внутренних регистров, тем лучше. Кроме того, на быстродействие процессора сильно влияет раз- рядность регистров. Именно разрядность регистров и АЛУ называется 60
Лекция 3 Функции устройств магистрали внутренней разрядностью процессора, которая может не совпадать с внеш- ней разрядностью. По отношению к назначению внутренних регистров существует два ос- новных подхода. Первого придерживается, например, компания Intel, ко- торая каждому регистру отводит строго определенную функцию. С одной стороны, это упрощает организацию процессора и уменьшает время вы- полнения команды, но с другой — снижает гибкость, а иногда и замедляет работу программы. Например, некоторые арифметические операции и об- мен с устройствами ввода/вывода проводятся только через один регистр — аккумулятор, в результате чего при выполнении некоторых процедур может потребоваться несколько дополнительных пересылок между реги- страми. Второй подход состоит в том, чтобы все (или почти все) регистры сделать равноправными, как , например, в 16-разрядных процессорах Т- 1] фирмы DEC. При этом достигается высокая гибкость, но необходимо усложнение структуры процессора. Существуют и промежуточные решения, в частности, в процессоре MC68000 фирмы Motorola половина регистров использовалась для данных, и они были взаимозаменяемы, а другая половина — для адресов, и они также взаимозаменяемы. Регистр признаков (регистр состояния) занимает особое место, хотя он так- же является внутренним регистром процессора. Содержащаяся в нем инфор- мация — это не данные, не адрес, а слово состояния процессора (ССП, PSW — Processor Status Word). Каждый бит этого слова (флаг) содержит информа- цию о результате предыдущей команды. Например, есть бит нулевого резуль- тата, который устанавливается в том случае, когда результат выполнения предыдущей команды — нуль, и очищается в том случае, когда результат выполнения команды отличен от нуля. Эти биты (флаги) используются ко- мандами условных переходов, например, командой перехода в случае нуле- вого результата. В этом же регистре иногда содержатся флаги управления, определяющие режим выполнения некоторых команд. Схема управления прерываниями обрабатывает поступающий на процес- сор запрос прерывания, определяет адрес начала программы обработки прерывания (адрес вектора прерывания), обеспечивает переход к этой про- грамме после выполнения текущей команды и сохранения в памяти (в сте- ке) текущего состояния регистров процессора. По окончании программы обработки прерывания процессор возвращается к прерванной программе с восстановленными из памяти (из стека) значениями внутренних регист- ров. Подробнее о стеке будет рассказано в следующем разделе. Схема управления прямым доступом к памяти служит для временного отключения процессора от внешних шин и приостановки работы про цессора на время предоставления прямого доступа запросившему его ус- тройству. 61
Глава 2 Организация обмена информацией Логика управления организует взаимодействие всех узлов процессора, перенаправляет данные, синхронизирует работу процессора с внешними сигналами, а также реализует процедуры ввода и вывода информации. Таким образом, в ходе работы процессора схема выборки команд выби- рает последовательно команды из памяти, затем эти команды выполняются, причем в случае необходимости обработки данных подключается АЛУ. На входы АЛУ могут подаваться обрабатываемые данные из памяти или из внут- ренних регистров. Во внутренних регистрах хранятся также коды адресов об- рабатываемых данных, расположенных в памяти. Результат обработки в АЛУ изменяет состояние регистра признаков и записывается во внутренний ре- гистр или в память (как источник, так и приемник данных указывается в со- ставе кода команды). При необходимости ш [формация может переписываться из памяти (или из устройства ввода/вывода) во внутренний регистр или из внутреннего регистра в память (или в устройство ввода/вывода). Внутренние регистры любого микропроцессора обязательно выполня- ют две служебные функции: • определяют адрес в памяти, где находится выполняемая в данный момент команда (функция счетчика команд или указателя команд)-, • определяют текущий адрес стека (функция указателя стека). В разных процессорах для каждой из этих функций может отводиться один или два внутренних регистра. Эти два указателя отличаются от дру- гих не только своим специфическим, служебным, системным назначени- ем, но и особым способом изменения содержимого. Их содержимое про- граммы могут менять только в случае крайней необходимости, так как любая ошибка при этом грозит нарушением работы компьютера, зависа- нием и порчей содержимого памяти. Содержимое указателя (счетчика) команд изменяется следующим об- разом. В начале работы системы (при включении питания) в него зано- сится раз и навсегда установленное значение. Это первый адрес програм- мы начального запуска. Затем после выборки из памяти каждой следующей команды значение указателя команд автоматически увеличивается (инк- рементируется) на единицу (или на два в зависимости от формата команд и типа процессора). То есть следующая команда будет выбираться из сле- дующего по порядку адреса памяти. При выполнении команд перехода, нарушающих последовательный перебор адресов памяти, в указатель ко- манд принудительно записывается новое значение — новый адрес в памя- ти, начиная с которого адреса команд опять же будут перебираться после- довательно. Такая же смена содержимого указателя команд производится при вызове подпрограммы и возврате из нее или при начале обработки прерывания и после его окончания. О стеке будет подробнее рассказано в следующем разделе. 62
Лекция 3 Функции устройств магистрали 2.4.2. Функции памяти Память микропроцессорной системы выполняет функцию временно- го или постоянного хранения данных и команд. Объем памяти определяет допустимую сложность выполняемых системой алгоритмов, а также в не- которой степени и скорость работы системы в целом. Модули памяти вы- полняются на микросхемах памяти (оперативной или постоянной). Все чаше в составе микропроцессорных систем используется флэш-память (англ. — flash memory), которая представляет собой энергонезависимую память с возможностью многократной перезаписи содержимого. Информация в памяти хранится в ячейках, количество разрядов кото- рых равно количеству разрядов шины данных процессора. Обычно оно кратно восьми (например, 8, 16, 32, 64). Допустимое количество ячеек па- мяти определяется количеством разрядов шины адреса как 2N, где N — количество разрядов шины адреса. Чаще всего объем памяти измеряется в байтах независимо от разрядности ячейки памяти. Используются также следующие более крупные единицы объема памяти: килобайт — 2'° или 1024 байта (обозначается Кбайт), мегабайт — 220 или 1 048 576 байт (обо- значается Мбайт), гигабайт — 230 байт (обозначается Гбайт), терабайт — 240 (обозначается Тбайт) Например, если память имеет 65 536 ячеек, каждая из которых 16-разрядная, то говорят, что память имеет объем 128 Кбайт. Совокупность ячеек памяти называется обычно пространством памяти системы. Для подключения модуля памяти к системной магистрали использу- ются блоки сопряжения, которые включают в себя дешифратор (селектор) адреса, схему обработки управляющих сигналов магистрали и буферы дан- ных (рис. 2.18). Оперативная память общается с системной магистралью в циклах чте- ния и записи, постоянная память — только в циклах чтения. Обычно в составе системы имеется несколько модулей памяти, каждый из которых работает в своей области пространства памяти. Селектор адреса как раз и определяет, какая область адресов пространства памяти отведена данному модулю памяти. Схема управления вырабатывает в нужные моменты сиг- налы разрешения работы памяти (CS) и сигналы разрешения записи в па- мять (WR). Буферы данных передают данные от памяти к магистрали или от магистрали к памяти. В пространстве памяти микропроцессорной системы обычно выделя- ются несколько особых областей, которые выполняют специальные фун- кции. Память программы начального запуска всегда выполняется на ПЗУ или флэш-памяти. Именно с этой области процессор начинает работу после включения питания и после сброса его с помощью сигнала RESET. 63
Глава 2 Организация обмена информацией Рис. 2.18. Структура модуля памяти. Память для стека или стек (Stack) — это часть оперативной памяти, пред- назначенная для временного хранения данных в режиме LIFO (Last In — First Out). Особенность стека по сравнению с другой оперативной памятью — это заданный и неизменяемый способ адресации. При записи любого числа (кода) в стек число записывается по адресу, определяемому как содержи- мое регистра указателя стека, предварительно уменьшенное (декремен- тированное) на единицу (или на два, если 16-разрядные слова расположены в памяти по четным адресам). При чтении из стека число читается из ад- реса, определяемого содержимым указателя стека, после чего это содер- жимое указателя стека увеличивается (инкрементируется) на единицу (или на два). В результате получается, что число, записанное последним, будет прочитано первым, а число, записанное первым, будет прочитано после- дним. Такая память называется LIFO или памятью магазинного типа (на- пример, в магазине автомата патрон, установленный последним, будет извлечен первым). Принцип действия стека показан на рис. 2.19 (адреса ячеек памяти выб- раны условно). Пусть, например, текущее состояние указателя стека 1000008, и в него надо записать два числа (слова). Первое слово будет записано по адресу 1000006 (перед записью указатель стека уменьшится на два). Второе — по адресу 1000004. После записи содержимое указателя стека — 1000004. Если затем прочитать из стека два слова, то первым будет прочитано слово из адреса 1000004, а после чтения указатель стека станет равным 1000006. Вто- 64
Лекция 3 Функции устройств магистрали рым будет прочитано слово из адреса 1000006, а указатель стека станет рав- ным 1000008. Все вернулось к исходному состоянию. Первое записанное слово читается вторым, а второе — первым. Оперативная у память' Чтение Адреса | 1000000 1000002 1000004 1000006 1000008 100000А 100000С Запись Рис. 2.19. Принцип работы стека. Необходимость такой адресации становится очевидной в случае много- кратно вложенных подпрограмм. Пусть, например, выполняется основная программа, и из нее вызывается подпрограмма 1. Если нам надо сохранить значения данных и внутренних регистров основной программы на время выполнения подпрограммы, мы перед вызовом подпрограммы сохраним их в стеке (запишем в стек), а после ее окончания извлечем (прочитаем) их из стека. Если же из подпрограммы 1 вызывается подпрограмма 2, то ту же самую операцию мы проделаем с данными и содержимым внутренних ре- гистров подпрограммы 1. Понятно, что внутри подпрограммы 2 крайними в стеке (читаемыми в первую очередь) будут данные из подпрограммы 1, а данные из основной программы будут глубже. При этом в случае чтения из стека автоматически будет соблюдаться нужный порядок читаемой инфор- мации. То же самое будет и в случае, когда таких уровней вложения под- программ гораздо больше. То есть то, что надо хранить подольше, прячется поглубже, а то, что скоро может потребоваться — с краю. В системе команд любого процессора для обмена информацией со сте- ком предусмотрены специальные команды записи в стек (PUSH) и чтения из стека (POP). В стеке можно прятать не только содержимое всех внут- ренних регистров процессоров, но и содержимое регистра признаков (сло- во состояния процессора, PSW). Это позволяет, например, при возвраще- нИи из подпрограммы контролировать результат последней команды, 65
Глава 2 Организация обмена информацией выполненной непосредственно перед вызовом этой подпрограммы. Мож- но также хранить в стеке и данные, для того чтобы удобнее было переда- вать их между программами и подпрограммами. В общем случае, чем боль- ше область памяти, отведенная под стек, тем больше свободы у программиста и тем более сложные программы могут выполняться. Следующая специальная область памяти — это таблица векторов пре- рываний. Вообще, понятие прерывания довольно многозначно. Под прерывани- ем в общем случае понимается не только обслуживание запроса внешнего устройства, но и любое нарушение последовательной работы процессора. Например, может быть предусмотрено прерывание по факту некоррект- ного выполнения арифметической операции типа деления на ноль. Или же прерывание может быть программным, когда в программе использует- ся команда перехода на какую-то подпрограмму, из которой затем после- дует возврат в основную программу. В последнем случае общее с истин- ным прерыванием только то, как осуществляется переход на подпрограмму и возврат из нее. Любое прерывание обрабатывается через таблицу векторов (указате- лей) прерываний. В этой таблице в простейшем случае находятся адреса начала программ обработки прерываний, которые и называются векторами. Длина таблицы может быть довольно большой (до нескольких сот элементов). Обычно таблица векторов прерываний располагается в начале пространства памяти (в ячейках памяти с малыми адресами). Адрес каждого вектора (или адрес начального элемента каждого вектора) представляет собой номер прерывания. В случае аппаратных прерываний номер прерывания или задается уст- ройством, запросившим прерывание (при векторных прерываниях), или же задается номером линии запроса прерываний (при радиальных прерыва- ниях). Процессор, получив аппаратное прерывание, заканчивает выполне- ние текущей команды и обращается к памяти в область таблицы векторов прерываний, в ту ее строку, которая определяется номером запрошенного прерывания. Затем процессор читает содержимое этой строки (код вектора прерывания) и переходит в адрес памяти, задаваемый этим вектором. Начиная с этого адреса в памяти должна располагаться программа обработки прерывания с данным номером. В конце программы обработки прерываний обязательно должна располагаться команда выхода из прерывания, выполнив которую, процессор возвращается к выполнению прерванной основной программы. Параметры процессора на время выполнения программы обработки прерывания сохраняются в стеке. Пусть, например, процессор (рис.2.20) выполнял основную программу и команду, находящуюся в адресе памяти 5000 (условно). В этот момент он 66
Лекция 3 Функции устройств магистрали получил запрос прерывания с номером (адресом вектора) 4. Процессор за- канчивает выполнение команды из адреса 5000. Затем он сохраняет в стеке текущее значение счетчика команд (5001) и текущее значение PSW После этого процессор читает из адреса 4 памяти код вектора прерывания. Пусть этот код равен 6000. Процессор переходит в адрес памяти 6000 и приступает к выполнению программы обработки прерывания, начинающейся с этого адреса. Пусть эта программа заканчивается в адресе 6100. Дойдя до этого адреса, процессор возвращается к выполнению прерванной программы. Для этого он извлекает из стека значение адреса (5001), на котором его прерва- ли, и бывшее в тот момент PSW. Затем процессор читает команду из адреса 5001 и дальше последовательно выполняет команды основной программы. 5000 5001 Прерывание с номером 4 Рис. 2.20. Упрощенный алгоритм обработки прерывания. Прерывание в случае аварийной ситуации обрабатывается точно так же, только адрес вектора прерывания (номер строки в таблице векторов) жестко привязан к данному типу аварийной ситуации. Программное прерывание тоже обслуживается через таблицу векторов прерываний, но номер прерывания указывается в составе команды, вы- зывающей прерывание. Такая сложная, на первый взгляд, организация прерываний позволяет программисту легко менять программы обработки прерываний, распола- гать их в любой области памяти, делать их любого размера и любой слож- ности. Во время выполнения программы обработки прерывания может по- ступить новый запрос на прерывание. В этом случае он обрабатывается точно так же, как описано, но основной программой считается прерван- ная программа обработки предыдущего прерывания. Это называется мно- гократным вложением прерываний. Механизм стека позволяет без про- 67
Глава 2 Организация обмена информацией блем обслуживать это многократное вложение, так как первым из стека извлекается тот код, который был сохранен последним, то есть возврат из обработки данного прерывания происходит в программу обработки пре- дыдущего прерывания. Отметим, что в более сложных случаях в таблице векторов прерываний могут находиться не адреса начала программ обработки прерываний, а так называемые дескрипторы (описатели) прерываний. Но конечным резуль- татом обработки этого дескриптора все равно будет адрес начала програм мы обработки прерываний. Наконец, еще одна специальная область памяти микропроцессорной системы — это память устройств, подключенных к системной шине. Такое решение встречается нечасто, но иногда оно очень удобно. То есть про- цессор получает возможность обращаться к внутренней памяти устройств ввода/вывода или каких-то еще подключенных к системной шине устройств, как к своей собственной системной памяти. Обычно окно в пространстве памяти, выделяемое для этого, не слишком большое. Все остальные части пространства памяти, как правило, имеют универ- сальное назначение. В них могут располагаться как данные, так и программы (конечно, в случае одношинной архитектуры). Иногда это пространство памяти используется как единое целое, без всяких границ. А иногда простран- ство памяти делится на сегменты с программно изменяемым адресом начала сегмента и с установленным размером сегмента. Оба подхода имеют свои плюсы и минусы. Например, использование сегментов позволяет защитить область программ или данных, но зато границы сегментов могут затруднять размещение больших программ и массивов данных. В заключение остановимся на проблеме разделения адресов памяти и адресов устройств ввода/вывода. Существует два основных подхода к ре- шению этой проблемы: • выделение в общем адресном пространстве системы специальной области адресов для устройств ввода/вывода; • полное разделение адресных пространств памяти и устройств ввода/ вывода. Первый подход хорош тем, что при обращении к устройствам ввода/ вывода процессор может использовать те же команды, которые служат для взаимодействия с памятью. Но адресное пространство памяти должно быть уменьшено на величину адресного пространства устройств ввода/вывода. Например, при 16-разрядной шине адреса всего может быть 64К адресов. Из них 56К адресов отводится под адресное пространство памяти, а 8К адресов — под адресное пространство устройств ввода/вывода. Преимущество второго подхода состоит в том, что память занимает все адресное пространство микропроцессорной системы. Для общения с ус- 68
Лекция 3 Функции устройств магистрали тройствами ввода/вывода применяются специальные команды и специ- альные стробы обмена на магистрали. Именно так сделано, например, в персональных компьютерах. Но возможности взаимодействия с устрой- ствами ввода/вывода в данном случае существенно ограничены по сравнению с возможностями общения с памятью. 2.4.3. Функции устройств ввода/вывода Устройства ввода/вывода обмениваются информацией с магистралью по тем же принципам, что и память. Наиболее существенное отличие с точки зрения организации обмена состоит в том, что модуль памяти имеет в адресном пространстве системы много адресов (до нескольких десятков миллионов), а устройство ввода/вывода обычно имеет немного адресов (обычно до десяти), а иногда и всего один адрес. Но модули памяти системы обмениваются информацией только с ма- гистралью, с процессором, а устройства ввода/вывода взаимодействуют еще и с внешними устройствами, цифровыми или аналоговыми. Поэтому разнообразие устройств ввода/вывода неизмеримо больше, чем модулей памяти. Часто используются еще и другие названия для устройств ввода/ вывода: устройства сопряжения, контроллеры, карты расширения, интер- фейсные модули и т.д. Объединяют все устройства ввода/вывода общие принципы обмена с ма- гистралью и, соответственно, общие принципы организации узлов, которые осуществляют сопряжение с магистралью. Упрощенная структура устройства ввода/вывода (точнее, его интерфейсной части) приведена на рис. 2.21. Как и в случае модуля памяти, она обязательно содержит схему селектора адреса, схему управления для обработки стробов обмена и буферы данных. Самые простейшие устройства ввода/вывода выдают на внешнее уст- ройство код данных в параллельном формате и принимают из внешнего устройства код данных в параллельном формате. Такие устройства ввода/ вывода часто называют параллельными портами ввода/вывода. Они наи- более универсальны, то есть удовлетворяют потребности сопряжения с большим числом внешних устройств, поэтому их часто вводят в состав мик- ропроцессорной системы в качестве стандартных устройств. Параллельные порты обычно имеются в составе микроконтроллеров. Именно через па- раллельные порты микроконтроллер связывается с внешним миром. Входной порт (порт ввода) в простейшем случае представляет собой параллельный регистр, в который процессор может записывать инфор- мацию. Выходной порт (порт вывода) обычно представляет собой просто однонаправленный буфер, через который процессор может читать инфор- мацию от внешнего устройства. Именно такие порты показаны для при- мера на рис. 2.21. Порт может быть и двунаправленным (входным/выход- 69
Г 2________________________________________Организация обмена информацией ним). В этом случае процессор пишет информацию во внешнее устрой- ство и читает информацию из внешнего устройства по одному и тому же адресу в адресном пространстве системы. Входные и выходные линии для связи с внешним устройством при этом могут быть объединены поразрядно, образуя двунаправленные линии. На внешнее С внешнего устройство устройства Рис. 2.21. Структура простейшего устройства ввода/вывода. При обращении со стороны магистрали селектор адреса распознает адрес, приписанный данному устройству ввода/вывода. Схема управле- ния выдает внутренние стробы обмена в ответ на магистральные стробы обмена. Входной буфер данных обеспечивает электрическое согласова- ние шины данных с этим устройством (буфер может и отсутствовать). Данные из шины данных записываются в регистр по сигналу С и выда- ются на внешнее устройство. Выходной буфер данных передает входные данные с внешнего устройства на шину данных магистрали в цикле чте- ния из порта. Более сложные устройства ввода/вывода (устройства сопряжения) име- ют в своем составе внутреннюю буферную оперативную память и даже могут иметь микроконтроллер, на который возложено выполнение функ- ций обмена с внешним устройством. Каждому устройству ввода/вывода отводится свой адрес в адресном пространстве микропроцессорной системы. Дублирование адресов долж- но быть исключено, за этим должны следить разработчики пользователь микропроцессорной системы. Лекция 3 Функции устройств магистрали Устройства ввода/вывода помимо программного обмена могут также поддерживать режим обмена по прерываниям. В этом случае они преоб- разуют поступающий от внешнего устройства сигнал запроса на прерыва- ние в сигнал запроса прерывания, необходимый для данной магистрали (или в последовательность сигналов при векторном прерывании). Если нужно использовать режим ПДП, устройство ввода/вывода должно вы- дать сигнал запроса ПДП на магистраль и обеспечить работу в циклах ПДП, принятых для данной магистрали. В составе микропроцессорных систем, как правило, выделяются три специальные группы устройств ввода/вывода: • устройства интерфейса пользователя (ввода информации пользова- телем и вывода информации для пользователя); • устройства ввода/вывода для длительного хранения информации; • таймерные устройства. К устройствам ввода для интерфейса пользователя относятся контрол- леры клавиатуры, тумблеров, отдельных кнопок, мыши, трекбола, джой- стика и т.д. К устройствам вывода для интерфейса пользователя относят- ся контроллеры светодиодных индикаторов, табло, жидкокристаллических, плазменных и электронно-лучевых экранов и т.д. В простейших случаях управляющих контроллеров или микроконтролле- ров эти средства могут отсутствовать. В сложных микропроцессорных системах они есть обязательно. Роль внешнего устройства в данном слу- чае играет человек. Устройства ввода/вывода для длительного хранения информации обес- печивают сопряжение микропроцессорной системы с дисководами (ком- пакт-дисков или магнитных дисков), а также с накопителями на магнит- ной ленте. Применение таких устройств существенно увеличивает возможности микропроцессорной системы в отношении хранения вы- полняемых программ и накопления массивов данных. В простейших кон- троллерах эти устройства отсутствуют. Таймерные устройства отличаются от других устройств ввода/вывода тем, что они могут не иметь внешних выводов для подключения к вне- шним устройствам. Эти устройства предназначены для того, чтобы мик- ропроцессорная система могла выдерживать заданные временные интер- валы, следить за реальным временем, считать импульсы и т.д. В основе любого таймера лежит кварцевый тактовый генератор и многоразрядные Двоичные счетчики, которые могут перезапускать друг друга. Процессор Может записывать в таймер коэффициенты деления тактовой частоты, ко- личество отсчитываемых импульсов, задавать режим работы счетчиков тай- мера, а читает процессор выходные коды счетчиков. В принципе выпол- нйть практически все функции таймера можно и программным путем, 70 71
Глава 2 Организация обмена информацией поэтому иногда таймеры в системе отсутствуют. Но включение в систему таймера позволяет решать более сложные задачи и строить более эффек- тивные алгоритмы. Еще один важный класс устройств ввода/вывода — это устройства для подключения к информационным сетям (локальным и глобальным). Эти устройства распространены не так широко, как устройства трех перечис- ленных ранее групп, но их значение с каждым годом становится все боль- ше. Сейчас средства связи с информационными сетями вводятся иногда даже в простые контроллеры. Иногда устройства ввода/вывода обеспечивают сопряжение с внешни- ми уст ройствами с помощью аналоговых сигналов. Это бывает очень удоб- но, поэтому в состав некоторых микроконтроллеров даже вводят внутрен- ние ЦАП и АЦП. 72
Лекция 4 Адресация операндов и регистры процессора Глава 3. Функционирование процессора Лекция 4. Адресация операндов и регистры процессора В этой лекции рассказывается о функциях основных узлов процессо- ра, о методах адресации операндов и о регистрах процессора. Ключевые слова: операнды, методы адресации, сегментирование, ре- гистры-указатели, счетчик команд, PSW. Основная функция любого процессора, ради которой он и создается, — это выполнение команд. Система команд, выполняемых процессором, представляет собой нечто подобное таблице истинности логических эле- ментов или таблице режимов работы более сложных логических микро- схем. То есть она определяет логику работы процессора и его реакцию на те или иные комбинации внешних событий. Написание программ для микропроцессорной системы — важнейший и часто наиболее трудоемкий этап разработки такой системы. А для со- здания эффективных программ необходимо иметь хотя бы самое общее представление о системе команд используемого процессора. Самые ком- пактные и быстрые программы и подпрограммы создаются на языке Ас- семблер, использование которого без знания системы команд абсолютно невозможно, ведь язык Ассемблер представляет собой символьную запись Цифровых кодов машинного языка, кодов команд процессора. Конечно, Для разработки программного обеспечения существуют всевозможные программные средства. Пользоваться ими обычно можно и без знания си- стемы команд процессора. Чаще всего применяются языки программи- рования высокого уровня, такие как Паскаль и Си. Однако знание системы команд и языка Ассемблер позволяет в несколько раз повысить эффек- тивность некоторых наиболее важных частей программного обеспечения любой микропроцессорной системы — от микроконтроллера до персо- нального компьютера. Именно поэтому в данной главе мы рассмотрим основные типы команд, имеющиеся у большинства процессоров, и особенности их применения. 73
Глава 3 Функционирование процессора Каждая команда, выбираемая (читаемая) из памяти процессором, оп- ределяет алгоритм поведения процессора на ближайшие несколько так- тов. Код команды говорит о том, какую операцию предстоит выполнить процессору и с какими операндами (то есть кодами данных), где взять ис- ходную информацию для выполнения команды и куда поместить резуль- тат (если необходимо). Код команды может занимать от одного до не- скольких байт, причем процессор узнает о том, сколько байт команды ему надо читать, из первого прочитанного им байта или слова. В процессоре код команды расшифровывается и преобразуется в набор микроопераций, выполняемых отдельными узлами процессора. Но разработчику микро- процессорных систем это знание не слишком важно, ему важен только результат выполнения той или иной команды. 3.1. Адресация операндов Большая часть команд процессора работает с кодами данных (операн- дами). Одни команды требуют входных операндов (одного или двух), дру- гие выдают выходные операнды (чаще один операнд). Входные операнды называются еще операндами-источниками, а выходные называются опе- рандами-приемниками. Все эти коды операндов (входные и выходные) должны где-то располагаться. Они могут находиться во внутренних реги- страх процессора (наиболее удобный и быстрый вариант). Они могут рас- полагаться в системной памяти (самый распространенный вариант). На- конец, они могут находиться в устройствах ввода/вывода (наиболее редкий случай). Определение места положения операндов производится кодом команды. Причем существуют разные методы, с помощью которых код команды может определить, откуда брать входной операнд и куда поме- щать выходной операнд. Эти методы называются методами адресации. Эффективность выбранных методов адресации во многом определяет эф- фективность работы всего процессора в целом. 3.1.1. Методы адресации Количество методов адресации в различных процессорах может быть от 4 до 16. Рассмотрим несколько типичных методов адресации операн- дов, используемых сейчас в большинстве микропроцессоров. Непосредственная адресация (рис. 3.1) предполагает, что операнд (вход- ной) находится в памяти непосредственно за кодом команды. Операнд обычно представляет собой константу, которую надо куда-то переслать, к чему-то прибавить и т.д. Например, команда может состоять в том, чтобы прибавить число 6 к содержимому какого-то внутреннего регистра про- цессора. Это число 6 будет располагаться в памяти, внутри программы в адресе, следующем за кодом данной команды сложения. 74
Лекция 4 Адресация операндов и регистры процессора Программа Рис. 3.1. Непосредственная адресация. Прямая (она же абсолютная) адресация (рис. 3.2) предполагает, что опе- ранд (входной или выходной) находится в памяти по адресу, код которого находится внутри программы сразу же за кодом команды. Например, ко- манда может состоять в том, чтобы очистить (сделать нулевым) содержи- мое ячейки памяти с адресом 1000000. Код этого адреса 1000000 будет рас- полагаться в памяти, внутри программы в следующем адресе за кодом данной команды очистки. Программа Данные Рис. 3.2. Прямая адресация. Регистровая адресация (рис. 3.3) предполагает, что операнд (входной или выходной) находится во внутреннем регистре процессора. Например, команда может состоять в том, чтобы переслать число из нулевого регистра в первый. Номера обоих регистров (0 и 1) будут определяться кодом ко- манды пересылки. Косвенно-регистровая (она же косвенная) адресация предполагает, что во внутреннем регистре процессора находится не сам операнд, а его адрес в памяти (рис. 3.4). Например, команда может состоять в том, чтобы очи- 75
Глава 3 Функционирование процессора стать ячейку памяти с адресом, находящимся в нулевом регистре. Номер этого регистра (0) будет определяться кодом команды очистки. Реже встречаются еще два метода адресации. Автоинкрементная адресация очень близка к косвенной адресации, но отличается от нее тем, что после выполнения команды содержимое используемого регистра увеличивается на единицу или на два. Этот метод адресации очень удобен, например, при последовательной об- работке кодов из массива данных, находящегося в памяти. После об- работки какого-то кода адрес в регистре будет указывать уже на сле- дующий код из массива. При использовании косвенной адресации в данном случае пришлось бы увеличивать содержимое этого регистра отдельной командой. Автодекрементная адресация работает похоже на автоинкрементную, но только содержимое выбранного регистра уменьшается на единицу или на два перед выполнением команды. Эта адресация также удобна при обра- ботке массивов данных. Совместное использование автоинкрементной и автодекрементной адресаций позволяет организовать память стекового типа (см. раздел 2.4.2). 76
Лекция 4 Адресация операндов и регистры процессора Из других распространенных методов адресации можно упомянуть об индексных методах, которые предполагают для вычисления адреса опе- ранда прибавление к содержимому регистра заданной константы (индек- са)- Код этой константы располагается в памяти непосредственно за ко- дом команды. Отметим, что выбор того или иного метода адресации в значительной степени определяет время выполнения команды. Самая быстрая адреса- ция — это регистровая, так как она не требует дополнительных циклов обмена по магистрали. Если же адресация требует обращения к памяти, то время выполнения команды будет увеличиваться за счет длительности необходимых циклов обращения к памяти. Понятно, что чем больше внут- ренних регистров у процессора, тем чаще и свободнее можно применять регистровую адресацию, и тем быстрее будет работать система в целом. 3.1.2. Сегментирование памяти Говоря об адресации, нельзя обойти вопрос о сегментировании памя- ти, применяемой в некоторых процессорах, например в процессорах IBM PC-совместимых персональных компьютеров. В процессоре Intel 8086 сегментирование памяти организовано следу- ющим образом. Вся память системы представляется не в виде непрерывного простран- ства, а в виде нескольких кусков — сегментов заданного размера (по 64 Кбайта), положение которых в пространстве памяти можно изменять про- граммным путем. Для хранения кодов адресов памяти используются не отдельные реги- стры, а пары регистров: • сегментный регистр определяет адрес начала сегмента (то есть по- ложение сегмента в памяти); • регистр указателя (регистр смещения) определяет положение рабо- чего адреса внутри сегмента. При этом физический 20-разрядный адрес памяти, выставляемый на внешнюю шину адреса, образуется так, как показано на рис. 3.5, то есть путем сложения смещения и адреса сегмента со сдвигом на 4 бита. Поло- жение этого адреса в памяти показано на рис. 3.6. Сегмент может начинаться только на 16-байтной границе памяти (так как адрес начала сегмента, по сути, имеет четыре младших нулевых разря- да, как видно из рис. 3.5), то есть с адреса, кратного 16. Эти допустимые границы сегментов называются границами параграфов. Отметим, что введение сегментирования, прежде всего, связано с тем, что внутренние регистры процессора 16-разрядные, а физический адрес Памяти 20-разрядный (16-разрядный адрес позволяет использовать па- 77
Глава 3 Функционирование процессора мять только в 64 Кбайт, что явно недостаточно). В появившемся в то же время процессоре MC68000 фирмы Motorola внутренние регистры 32-раз- рядные, поэтому там проблемы сегментирования памяти не возникает. Рис. 3.5. Формирование физического адреса памяти из адреса сегмента и смещения. Рис. 3.6. Физический адрес в сегменте (все коды — шестнадцатеричные). Применяются и более сложные методы сегментирования памяти. На- пример, в процессоре Intel 80286 в так называемом защищенном режиме адрес памяти вычисляется в соответствии с рис. 3.7. В сегментном регистре в данном случае хранится не базовый (началь- ный) адрес сегментов, а коды селекторов, определяющие адреса в памяти, 78
Лекция 4 Адресация операндов и регистры процессора по которым хранятся дескрипторы (то есть описатели) сегментов. Область памяти с дескрипторами называется таблицей дескрипторов. Каждый дес- криптор сегмента содержит базовый адрес сегмента, размер сегмента (от 1 до 64 Кбайт) и его атрибуты. Базовый адрес сегмента имеет разрядность 24 бит, что обеспечивает адресацию 16 Мбайт физической памяти. Процессор Рис. 3.7. Адресация памяти в защищенном режиме процессора Intel 80286. Таким образом, на сумматор, вычисляющий физический адрес памя- ти, подается не содержимое сегментного регистра, как в предыдущем слу- чае, а базовый адрес сегмента из таблицы дескрипторов. Еще более сложный метод адресации памяти с сегментированием ис- пользован в процессоре Intel 80386 и в более поздних моделях процессоров фирмы Intel. Этот метод иллюстрируется рис. 3.8. Адрес памяти (физический адрес) вычисляется в три этапа. Сначала вычисляется так называемый эффективный адрес (32-разрядный) путем суммирования трех компонентов: базы, индекса и смешения (Base, Index, Displacement), причем возможно умножение индекса на масштаб (Scale). Эти компоненты имеют следующий смысл: 79
Г лава 3 Функционирование процессора Рис. 3.8. Формирование физического адреса памяти процессора 80386 в защищенном режиме. • смещение — это 8-, 16- или 32-разрядное число, включенное в ко- манду. • база — это содержимое базового регистра процессора. Обычно оно используется для указания на начало некоторого массива. • индекс — это содержимое индексного регистра процессора. Обычно оно используется для выбора одного из элементов массива. • масштаб — это множитель (он может быть равен 1, 2, 4 или 8), ука- занный в коде команды, на который перед суммированием с други- ми компонентами умножается индекс. Он используется для указа- ния размера элемента массива. Затем специальный блок сегментации вычисляет 32-разрядный линей- ный адрес, который представляет собой сумму базового адреса сегмента из сегментного регистра с эффективным адресом. Наконец, физический 32- битный адрес памяти образуется путем преобразования линейного адреса блоком страничной переадресации, который осуществляет перевод линей- ного адреса в физический страницами по 4 Кбайта. В любом случае сегментирование позволяет выделить в памяти один или несколько сегментов для данных и один или несколько сегментов для программ. Переход от одного сегмента к другому сводится всего лишь к изменению содержимого сегментного регистра. Иногда это бывает очень удобно. Но для программиста работать с сегментированной памятью обыч- но сложнее, чем с непрерывной, несегментированной памятью, так как приходится следить за границами сегментов, за их описанием, переклю- чением и т.д. 80
Лекция 4 Адресация orюрандов и регистры процессора 3.1.3. Адресация байтов и слов Многие процессоры, имеющие разрядность 16 или 32, способны адре- совать не только целое слово в памяти (16-разрядное или 32-разрядное), но и отдельные байты. Каждому байту в каждом слове при этом отводится свой адрес. Так, в случае 16-разрядных процессоров все слова в памяти (16-раз- рядные) имеют четные адреса. А байты, входящие в эти слова, могут иметь как четные адреса, так и нечетные. Например, пусть 16-разрядная ячейка памяти имеет адрес 23420, и в ней хранится код 2А5Е (рис. 3.9). Слово Память (адрес 23420) Старший байт Младший байт (адрес 23421) —* 2А 5Е — (адрес 23420) Старший байт —. 48 7F .— Младший байт (адрес 23423) (адрес 23422) 16 бит Слово (адрес 23422) Рис. 3.9. Адресация слов и байтов. При обращении к целому слову (с содержимым 2А5Е) процессор выс- тавляет адрес 23420. При обращении к младшему байту этой ячейки (с со- держимым 5Е) процессор выставляет тот же самый адрес 23420, но ис- пользует команду, адресующую байт, а не слово. При обращении к старшему байту этой же ячейки (с содержимым 2А) процессор выставляет адрес 23421 и использует команду, адресующую байт. Следующая по порядку 16-разрядная ячейка памяти с содержимым 487F будет иметь адрес 23422, то есть опять же четный. Ее байты будут иметь адреса 23422 и 23423. Для различия байтовых и словных циклов обмена на магистрали в шине Управления предусматривается специальный сигнал байтового обмена. Для работы с байтами в систему команд процессора вводятся специальные ко- манды или предусматриваются методы байтовой адресации. 3.2. Регистры процессора Как уже упоминалось, внутренние регистры процессора представ- ляют собой сверхоперативную память небольшого размера, которая 81
Глава 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 — младший байт и АН — старший байт). 82
Лекция 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 и ' Н а указатель стека — парой регистров SP и SS. Регистры SI, DI использу- 83
Глава 3 Функционирование процессора ются в строковых операциях, то есть при последовательной обработке не- скольких ячеек памяти одной командой. Последний регистр FLAGS — это регистр состояния процессора (PSW). Из его 16 разрядов используются только девять (рис. 3.11): CF (Carry 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 О OF DF IF TF SF ZF AF PF CF Рис. 3.11. Регистр состояния процессора 8086. Биты регистра состояния устанавливаются или очищаются в зависи- мости от результата исполнения предыдущей команды и используются не- которыми командами процессора. Биты регистра состояния могут также устанавливаться и очищаться специальными командами процессора (о си- стеме команд процессора будет рассказано в следующем разделе). Во многих процессорах выделяется специальный регистр, называемый аккумулятором (то есть накопителем). При этом, как правило, только этот регистр-аккумулятор может участвовать во всех операциях, только через него может производиться взаимодействие с ус тройствами ввода/вывода. Иногда в него же помещается результат любой выполненной команды (в этом случае говорят даже об «аккумуляторной» архитектуре процессора). Например, в процессоре 8086 регистр данных АХ можно считать своеобразным аккуму- лятором, так как именно он обязательно участвует в командах умножения и деления, а также только через него можно пересылать данные в устройство ввода/вывода и из устройства ввода/вывода. Выделение специального регистра-аккумулятора упрощает структуру процессора и ускоряет пересылки кодов внутри процессора, но в некоторых случаях замедляет ра- боту системы в целом, так как весь поток информации должен пройти через один регистр-аккумулятор. В случае, когда несколько регистров процессо- ра полностью взаимозаменяемы, таких проблем не возникает. 84
Лекция 5 Система команд процессора Лекция 5. Система команд процессора В этой лекции рассказывается об основных группах команд процессо- ра, об особенностях выполнения различных команд, о методах органи- зации подпрограмм. Ключевые слова: арифметические и логические команды, команды пе- ресылки, команды переходов, подпрограммы, ветвления. 3.3. Система команд процессора В общем случае система команд процессора включает в себя следую- щие четыре основные группы команд: • команды пересылки данных; • арифметические команды; • логические команды; • команды переходов. Команды пересылки данных не требуют выполнения никаких опера- ций над операндами. Операнды просто пересылаются (точнее, копиру- ются) из источника (Source) в приемник (Destination). Источником и при- емником могут быть внутренние регистры процессора, ячейки памяти или устройства ввода/вывода. АЛУ в данном случае не используется. Арифметические команды выполняют операции сложения, вычитания, умножения, деления, увеличения на единицу (инкрементирования), уменьшения на единицу (декрементирования) и т.д. Этим командам тре- буется один или два входных операнда. Формируют команды один выход- ной операнд. Логические команды производят над операндами логические операции, например, логическое И, логическое ИЛИ, исключающее ИЛИ, очистку, инверсию, разнообразные сдвиги (вправо, влево, арифметический сдвиг, Циклический сдвиг). Этим командам, как и арифметическим, требуется один или два входных операнда, и формируют они один выходной операнд. Наконец, команды переходов предназначены для изменения обычно- го порядка последовательного выполнения команд. С их помощью орга- низуются переходы на подпрограммы и возвраты из них, всевозможные Никлы, ветвления программ, пропуски фрагментов программ и т.д. Ко- манды переходов всегда меняют содержимое счетчика команд. Переходы Могут быть условными и безусловными. Именно эти команды позволяют строить сложные алгоритмы обработки информации. 85
Глава 4 Организация микроконтроллеров памяти для размещения данных и стека, то существует опасность, что при переполнении стека произойдет запись в область данных либо будет сде- лана попытка записи загружаемых в стек данных в область ПЗУ. 4.3.5. Внешняя память Несмотря на существующую тенденцию по переходу к закрытой архи- тектуре МК, в некоторых случаях возникает необходимость подключения дополнительной внешней памяти (как памяти программ, так и данных). Если МК содержит специальные аппаратные средства для подключе- ния внешней памяти, то эта операция производится штатным способом (как для МП). Второй, более универсальный, способ заключается в том, чтобы ис- пользовать порты ввода/вывода для подключения внешней памяти и реа- лизовать обращение к памяти программными средствами. Такой способ позволяет задействовать простые устройства ввода/вывода без реализации сложных шинных интерфейсов, однако приводит к снижению быстродей- ствия системы при обращении к внешней памяти. 108
пекииЯ Z. Организация связи микроконтроллера с внешней средой и временем Лекция 7. Организация связи микроконтроллера с внешней средой и временем В этой лекции рассказывается о структуре и организации портов вво- да/вывода информации микроконтроллеров, режимах работы тайме- ров и процессоров событий, а также об организации обработки преры- ваний. Ключевые слова: порт, ввод, вывод, таймер, счетчик, процессор собы- тий, прерывания. 4.4. Порты ввода/вывода Каждый МК имеет некоторое количество линий ввода/вывода, кото- рые объединены в многоразрядные (чаще 8-разрядные) параллельные пор- ты ввода/вывода. В памяти МК каждому порту ввода/вывода соответству- ет свой адрес регистра данных. Обращение к регистру данных порта ввода/ вывода производится теми же командами, что и обращение к памяти дан- ных. Кроме того, во многих МК отдельные разряды портов могут быть опрошены или установлены командами битового процессора. В зависимости от реализуемых функций различают следующие типы параллельных портов: • однонаправленные порты, предназначенные только для ввода или только для вывода информации; • двунаправленные порты, направление передачи которых (ввод или вывод) определяется в процессе инициализации МК; • порты с альтернативной функцией (мультиплексированные порты). Отдельные линии этих портов используются совместно со встроен- ными периферийными устройствами МК, такими как таймеры, АЦП, контроллеры последовательных интерфейсов; • порты с программно управляемой схемотехникой входного/выход- ного буфера. Порты выполняют роль устройств временного согласования функци- онирования МК и объекта управления, которые в общем случае работают Синхронно. Различают три типа алгоритмов обмена информацией между МК и внешним устройством через параллельные порты ввода/вывода: * режим простого программного ввода/вывода; режим ввода/вывода со стробированием; 109
Глава 4 Организация микроконтроллеров • режим ввода/вывода с полным набором сигналов подтверждения об- мена. Типичная схема двунаправленного порта ввода/вывода МК приведена на рис. 4.4. ввода данных Рис. 4.4. Типовая схема двунаправленного порта ввода/вывода МК. Триггер управления разрешает вывод данных на внешний вывод. В со- временных МК, как правило, обеспечивается индивидуальный доступ к триггерам данных и управления, что позволяет использовать каждую ли- нию независимо в режиме ввода или вывода. Необходимо обратить особое внимание на то, что при вводе данных счи- тывается значение сигнала, поступающее на внешний вывод, а не содер- жимое триггера данных. Если к внешнему выводу МК подключены выходы других устройств, то они могут установить свой уровень выходного сигнала, который и будет считан вместо ожидаемого значения триггера данных. Другим распространенным вариантом схемотехнической организации порта ввода/вывода является вывод с «открытым истоком», называемый еще «квазидвунаправленным». Такая организация вывода позволяет со- здавать шины с объединением устройств по схеме «монтажное И». 4.5. Таймеры и процессоры событий Большинство задач управления, которые реализуются с помощью МК- требуют исполнения их в реальном времени. Под этим понимается спо- собность системы получить информацию о состоянии управляемого объекта, выполнить необходимые расчетные процедуры и выдать управляющие воздействия в течение интервала времени, достаточного для желаемого изменения состояния объекта. 110
Организация связи микроконтроллера с внешней средой и временем Возлагать функции формирования управления в реальном масштабе времени только на центральный процессор неэффективно, так как это за- нимает ресурсы, необхолимые для расчетных процедур. Поэтому в боль- шинстве современных МК используется аппаратная поддержка работы в реальном времени с использованием таймера (таймеров). Модули таймеров служат для приема информации о времени наступ- ления тех или иных событий от внешних датчиков событий, а также для формирования управляющих воздействий во времени. Модуль таймера 8-разрядного МК представляет собой 8-ми или 16-разрвдный счетчик со схемой управления. Схемотехникой МК обычно предусматриваегся возможность использования таймера в режиме счетчика внешних событий, поэтому его часто называют таймером/счетчиком. Структура типичного 16- разрядноготаймера/счетчика в составе МК приведена на рис. 4.5. TOCKI Управление КДЕЛ Выбор источника сигнала Пуск/ останов Сброс _ триггера Т/С Разрешение прерывания Т/С Счетчик таймера ЩЦМК Рис. 4.5. Структура модуля таймера/счетчика. В памяти МК 16-разрядный счетчик отображается двумя регистрами: TH — старший байт счетчика, TL — младший байт. Регистры доступны чтения и для записи. Направление счета — только прямое, то есть при вступлении входных импульсов содержимое счетчика инкрементируст- Ся- В зависимости от настройки счетчик может использоват ь один из ис- точников входных сигналов: 111
Глава 4 Организация микроконтроллеров • - — --------- - ... • ~ • импульсную последовательность с выхода управляемого делителя ча- стоты fBUS; • сигналы внешних событий, поступающие на вход TOCKI контроллера. В первом случае говорят, что счетчик работает в режиме таймера, во втором — в режиме счетчика событий. При переполнении счетчика устанавливается в «единицу» триггер переполнения TF, который генерирует запрос на прерывание, если прерывания от таймера разрешены. Пуск и останов таймера могут осуществляться только под управлением программы. Программным способом можно также установить старший и младший биты счетчика в произвольное состояние или прочитать текущий код счетчика. Рассмотренный «классический» модультаймера/счетчика широко при- меняется в различных моделях относительно простых МК. Он может ис- пользоваться для измерения временных интервалов и формирования пос- ледовательности импульсов. Основными недостатками «классического» таймера/счетчика являются: • потери времени на выполнение команд пуска и останова таймера, приводящие к появлению ошибки при измерении временных ин- тервалов и ограничивающие минимальную длительность измеряе- мых интервалов времени единицами мс; • сложности при формировании временных интервалов (меток вре мени), отличных от периода полного коэффициента счета, равного (К eAcs) • 2'6; • невозможность одновременного обслуживания (измерения или фор- мирования импульсного сигнала) сразу нескольких каналов. Первые их двух перечисленных недостатков были устранены в усовер- шенствованном модуле таймера/счетчика, используемом в МК семейства MCS-51 (Intel). Дополнительная логика счетного входа позволяет такто- вым импульсам поступать на вход счетчика, если уровень сигнала на од- ной из линий ввода равен «1». Такое решение повышает точность измере- ния временных интервалов, так как пуск и останов таймера производится аппаратно. Также в усовершенствованном таймере реализован режим пе- резагрузки счетчика произвольным кодом в момент переполнения. Это позволяет формировать временные последовательности с периодом, от- личным от периода полного коэффициента счета. Однако эти усовершенствования не устраняют главного недостатка мо- дуля «классического» таймера — одноканального режима работы. Совер- шенствование подсистемы реального времени МК ведется по следующим направлениям: • увеличение числа модулей таймеров/счетчиков. Этот путь характе- рен для фирм, выпускающих МК со структурой MCS-51, а также для МК компаний Mitsubishi и Hitachi; 112
Организация связи микроконтроллера с внешней средой и временем • модификация структуры модуля таймера/счетчика, при которой уве- личение числа каналов достигается не за счет увеличения числа счет- чиков, а за счет введения дополнительных аппаратных средств вход- ного захвата (input capture — IC) и выходного сравнения (output compare — ОС). Такой подход используется, в частности, в МК ком- пании Motorola. Принцип действия канала входного захвата таймера/счетчика иллюс- трирует рис. 4.6. Рис. 4.6. Структурная схема канала входного захвата таймера. Схема детектора события «наблюдает» за уровнем напряжения на одном из Вх°Дов МК. Чаще всего это одна из линий порта ввода/вывода. При изменении Уровня логического сигнала с «О» на «1» и наоборот вырабатывается строб 3аПиси, и текущее состояние счетчика таймера записывается в 16-разрядный 113
Глава 4 Организация микроконтроллеров регистр входного захвата. Описанное действие в микропроцессорной технике называют событием захвата. Предусмотрена возможность выбора типа сигнала на входе, и это воспринимается как событие: • положительный (передний) фронт сигнала; • отрицательный (задний) фронт сигнала; • любое изменение логического уровня сигнала. Выбор типа события захвата устанавливается в процессе инициализа- ции таймера и может неоднократно изменяться в ходе выполнения про- граммы. Каждое событие захвата приводит к установке в «1» триггера вход- ного захвата и появлению на его выходе флага (признака) входного захвата ICF. Состояние триггера входного захвата может быть считано программ- но, а если прерывания по событию захвата разрешены — формируется зап- рос на прерывание INT IC. Использование режима входного захвата позволяет исключить ошибки измерения входного интервала времени, связанные со временем перехода к подпрограмме обработки прерывания, так как копирование текущего состояния счетчика осуществляется аппаратными, а не программными средствами. Однако время перехода на подпрограмму обработки преры- вания накладывает ограничение на длительность измеряемого интервала времени, так как предполагается, что второе событие захвата произойдет позже, чем код первого события будет считан МК. Структура аппаратных средств канала выходного сравнения представ- лена на рис. 4.7. Цифровой компаратор непрерывно сравнивает текущий код счетчика таймера с кодом, который записан в 16-разрядном регистре выходного сравнения. В момент равенства кодов на одном из выходов МК (Pxj на рис. 4.7) устанавливается заданный уровень логического сигнала. Обычно предусмотрено три типа изменения сигнала на выходе Pxj в момент события выходного сравнения: • установка высокого логического уровня; • установка низкого логического уровня; • инвертирование сигнала на выходе. При наступлении события сравнения устанавливаются в «1» триггер выходного сравнения и соответствующий ему признак выходного сравие- ния OCF. Аналогично режиму входного захвата состояние триггера вы- ходного сравнения может быть считано программно, а если прерывания по событию сравнения разрешены — формируется запрос на прерывание INT ОС. Режим выходного сравнения предназначен, прежде всего, для форми- рования временных интервалов заданной длительности. Длительность сформированного временного интервала определяется только разностью 114
Организация связи микроконтроллера с внешней средой и временем кОдоб, последовательно загружаемых в регистр выходного сравнения, и не заВисит от программного обеспечения МК. Время, необходимое для запи- си нового значения кода в регистр канала сравнения, ограничивает мини- мальную длительность формируемого временного интервала. Рис. 4.7. Структурная схема канала выходного сравнения таймера. Модули усовершенствованного таймера используются в составе МК в Различных модификациях. При этом число каналов входного захвата и входного сравнения в модуле может быть различным. Так, в МК семей- ства НС05 фирмы Motorola типовыми решениями являются модули +Юс или 2IC+2OC, а модуль таймера в составе МК только один. В 115
Глава 4 Организация микроконтроллеру ряде модулей каналы могут быть произвольно настроены на функцию вход, ного захвата или выходного сравнения посредством инициализации. Счет, чик модуля усовершенствованного таймера может не иметь функции про. граммного останова. В этом случае состояние счетчика нельзя синхронизировать с каким-либо моментом работы МК, и такой счетчик характеризуется как свободно считающий (free counter). Аппаратные средства усовершенствованного таймера позволяют ре. шить многие задачи управления в реальном времени. Однако по мере роста сложности алгоритмов управления отчетливо проявляются ограничения модулей усовершенствованного таймера, а именно: • недостаточное число каналов захвата и сравнения, принадлежащих одному счетчику временной базы. Это не позволяет сформировать синхронизированные между собой многоканальные импульсные последовательности; • однозначно определенная конфигурация канала (или захват или сравнение) часто не удовлетворяет потребностям решаемой задачи; • формирование сигналов по методу широтно-импульсной модуляции (ШИМ) требует программной поддержки, что снижает максималь- но достижимую частоту выходного сигнала. Поэтому следующим этапом развития модулей подсистемы реального времени МК стали модули процессоров событий. Впервые модули про- цессоров событий были использованы компанией Intel в МК семейства 8хС51 Fx. Этот модуль получил название программируемого счетного мас- сива (Programmable Counter Array — РСА). РСА обеспечивает более широкие возможности работы в реальном мас- штабе времени и в меньшей степени расходует ресурсы центрального про- цессора, чем стандартный и усовершенствованный таймеры/счетчики. К преимуществам РСА также можно отнести более простое программирова- ние и более высокую точность. К примеру, РСА может обеспечить лучшее временное разрешение, чем таймеры 0, 1 и 2 МК семейства MCS-51, так как счетчик РСА способен работать с тактовой частотой, втрое большей, чем у этих таймеров. РСА также может решать многие задачи, выполнение которых с использованием таймеров требует дополнительных аппаратных затрат (например, определение фазового сдвига между импульсами ил” генерация ШИМ-сигнала). РСА состоит из 16-битного таймера-счетчика ” пяти 16-битных модулей сравнения-защелки, как показано на рис. 4.8. Таймер-счетчик РСА используется в качестве базового таймера Л-'”1 функционирования всех пяти модулей сравнения-защелки. Вход тайме' ра-счетчика РСА может быть запрограммирован на счет сигналов от сле' дующих источников: • выход делителя на 12 тактового генератора МК; 116 J
jleKj^EX Организация связи микроконтроллера с внешней средой и временем • выход делителя на 4 тактового генератора МК; • сигнал переполнения таймера 0; • внешний входной сигнал на выводе ECI (Р1.2). Рис. 4.8. Структура процессора событий МК семейства Intel 8хС51 Fx. Любой из модулей сравнения-защелки может быть запрограммирован для работы в следующих режимах: • защелкивания по фронту и/или спаду импульса на входе CEXi; • программируемого таймера; • высокоскоростного выхода; • широтно-импульсного модулятора. Модуль 4 может быть также запрограммирован как сторожевой таймер (Watchdog Timer — WDT). Режим защелкивания по импульсу на входе МК эквивалентен режиму входного захвата (IC) усовершенствованного таймера. Режимы програм- мируемого таймера и высокоскоростного выхода близки по своим функ- циональным возможностям к режиму выходного сравнения (ОС). В режиме ШИМ на соответствующем выводе МК формируется после- довательность импульсов с периодом, равным периоду базового таймера/ счетчика РСА. Значение 8-разрядного кода, записанное в младший байт Регистра-защелки соответствующего модуля задает скважность формиру- емого сигнала. При изменении кода от 0 до 255 скважность меняется от ЮО % до о д % Режим ШИМ очень прост с точки зрения программного обслужива- ния- Если изменения скважности не предполагается, то достаточно один РДз занести соответствующий код в регистр данных модуля, проинициа- Лизировать режим ШИМ, и импульсная последовательность будет вос- производиться с заданными параметрами без вмешательства программы. 117
Глава 4 Организация микроконтроллеров Назначение и особенности работы сторожевого таймера будут расе мот, рены далее отдельно. При работе модуля сравнения-защелки в режиме защелки, программируй емого таймера или высокоскоростного выхода модуль может сформировать сигнал прерывания. Сигналы от всех пяти модулей сравнения-защелки и сиг- нал переполнения таймера РСА разделяют один вектор прерывания. Иными словами, если прерывания разрешены, то и сигнал переполнения таймера РСА и сигнал от любого из модулей вызывают одну и ту же подпрограмму прерываний, которая должна сама идентифицировать источник, вызвавший ее. Для работы с внешними устройствами таймер-счетчик РСА и модули сравнения-защелки используют выводы Р1 порта МК. Если какой-либо вывод порта не используется при работе РСА, или РСА не задействован, порт может применяться стандартным образом. Реализованный в 8xC51FX РСА оказался настолько удачным, что ар- хитектура данных МК стала промышленным стандартом де-факто, а сам РСА многократно воспроизводился в различных модификациях микро- контроллеров разных фирм. Тенденция развития подсистемы реального времени современных МК находит свое отражение в увеличении числа каналов процессоров собы- тий и расширении их функциональных возможностей. 4.6. Модуль прерываний МК Обработка прерываний в МК происходит в соответствии с общими принципами обработки прерываний в МПС. Модуль прерываний прини- мает запросы прерывания и организует переход к выполнению опреде- ленной прерывающей программы. Запросы прерывания могут поступать как от внешних источников, так и от источников, расположенных в раз- личных внутренних модулях МК. В качестве входов для приема запросов от внешних источников чаше всего используются выводы параллельных портов ввода/вывода, для ко- торых эта функция является альтернативной. Источниками запросов вне- шних прерываний также могут быть любые изменения внешних сигналов на некоторых специально выделенных линиях портов ввода/вывода. Источниками внутренних запросов прерываний могут служить следу- ющие события: • переполнение таймеров/счетчиков; • сигналы от каналов входного захвата и выходного сравнения тайме- ров/счетчиков или от процессора событий; 118
jjeKUj^X Организация связи микроконтроллера с внешней средой и временем . готовность памяти EEPROM; > сигналы прерывания от дополнительных модулей МК, включая за- вершение передачи или приема информации по одному из последо- вательных портов и другие. Любой запрос прерывания поступает на обработку, если прерывания в МК разрешены и разрешено прерывание по данному запросу. Адрес, ко- торый загружается в программный счетчик при переходе к обработке пре- рывания, называется «вектор прерывания». В зависимости от организа- ции модуля прерываний конкретного МК различные источники прерываний могут иметь разные векторы или использовать некоторые из них совместно. Использование различными прерываниями одного век- тора обычно не вызывает проблем при разработке программного обеспе- чения, так как аппаратная часть МК фиксирована, а контроллер чаще всего выполняет одну-единственную программу. Вопрос о приоритетах при одновременном поступлении нескольких запросов на прерывание решается в различных МК по-разному. Есть МК с одноуровневой системой приоритетов (все запросы равноценны), мно- гоуровневой системой с фиксированными приоритетами и многоуровневой программируемой системой приоритетов. Отдельно необходимо описать аппаратные прерывания, связанные с включением питания, подачей сигнала «сброс» и переполнением сторо- жевого таймера. Они имеют немаскируемый характер и чаще всего разде- ляют один общий вектор прерывания. Это вполне логично, поскольку ре- зультатом каждого из событий является начальный сброс МК. 119
Глава 4 Организация микроконтроллер^^ Лекция 8. Вспомогательные аппаратные средства микроконтроллера В этой лекции рассказывается о режимах пониженного энергопотреб- ления микроконтроллера, а также о структуре и организации таких вспомогательных аппаратных средств как тактовые генераторы, схе- мы контроля напряжения питания, сторожевые таймеры и дополнитель- ные модули микроконтроллера. Ключевые слова: энергопотребление, тактовый генератор, сторожевой таймер, последовательный порт, АЦП, ЦАП. 4.7. Минимизация энергопотребления в системах на основе МК Малый уровень энергопотребления является зачастую определяющим фактором при выборе способа реализации цифровой управляющей сис- темы. Современные МК предоставляют пользователю большие возмож- ности в плане экономии энергопотребления и имеют, как правило, следу- ющие основные режимы работы: • активный режим (Run mode) — основной режим работы МК. В этом режиме МК исполняет рабочую программу, и все его ресурсы дос- тупны. Потребляемая мощность имеет максимальное значение PRUN- Большинство современных МК выполнено по КМОП-технологии, поэтому мощность потребления в активном режиме сильно зависит от тактовой частоты; • режим ожидания (Wait mode, Idle mode или Halt mode). В этом режи- ме прекращает работу центральный процессор, но продолжают фун- кционировать периферийные модули, которые контролируют состо- яние объекта управления. При необходимости сигналы от периферийных модулей переводят МК в активный режим, и рабо- чая программа формирует необходимые управляющие воздействия. Перевод МК из режима ожидания в рабочий режим осуществляется по прерываниям от внешних источников или периферийных моду лей, либо при сбросе МК. В режиме ожидания мощность потребл6' ния МК PWA|T снижается по сравнению с активным режимом в 5... 10 раз; • режим останова (Stop mode, Sleep mode или Power Down mode). В этом 120
Вспомогательные аппаратные средства микроконтроллера режиме прекращает работу как центральный процессор, так и большин- ство периферийных модулей. Переход МКиз состояния остановаврабочий режим возможен, как правило, только по прерываниям от внешних источников или после подачи сигнала сброса. В режиме останова мощность потребления МК PST0P снижается по сравнению с активным режимом примерно на три порядка и составляет единицы микроватт. Два последних режима называют режимами пониженного энергопотреб- ления. Минимизация энергопотребления системы на МК достигается за счет оптимизации мощности потребления МК в активном режиме, а также использования режимов пониженного энергопотребления. При этом необходимо иметь в виду, что режимы ожидания и останова существенно отличаются временем перехода из режима пониженного энергопотребления в активный режим. Выход из режима ожидания обычно происходит в течение 3...5 периодов синхронизации МК, в то время как задержка выхода из режима останова составляет несколько тысяч периодов синхронизации. Кроме снижения динамики работы системы значительное время перехода в активный режим является причиной дополнительного расхода энергии. Мощность потребления МК в активном режиме является одной из важ- нейших характеристик контроллера. Она в значительной степени зависит от напряжения питания МК и частоты тактирования. В зависимости от диапазона питающих напряжений все МК можно разделить на три основные группы: • МК с напряжением питания 5,0 В±10%. Эти МК предназначены, как правило, для работы в составе устройств с питанием от промыш- ленной или бытовой сети, имеют развитые функциональные возмож- ности и высокий уровень энергопотребления • МК с расширенным диапазоном напряжений питания: от 2,0...3,0 В до 5,0-7,0 В. МК данной группы могут работать в составе устройств как с сетевым, так и с автономным питанием. • МК с пониженным напряжением питания: от 1,8 до 3 В. Эти МК предназначены для работы в устройствах с автономным питанием и обеспечивают экономный расход энергии элементов питания. Зависимость тока потребления от напряжения питания МК почти прямо пропорциональная. Поэтому снижение напряжения питания весь- Ма существенно понижает мощность потребления МК. Необходимо, од- Нако, иметь в виду, что для многих типов МК с понижением напряжения Питания уменьшается максимально допустимая частота тактирования, то есть выигрыш в потребляемой мощности сопровождается снижением про- Изводительности системы. Большинство современных МК выполнено по технологии КМОП, по- Эт°Му мощность потребления в активном режиме PRUN практически пря- 121
Глава 4 Организация микроконтроллере^ мо пропорциональна тактовой частоте. Поэтому, выбирая частоту такто- вого генератора, не следует стремиться к предельно высокому быстродей- ствию МК в задачах, которые этого не требуют. Часто определяющим фак- тором оказывается разрешающая способность измерителей илц формирователей временных интервалов на основе таймера или скорость передачи данных по последовательному каналу. В большинстве современных МК используется статическая КМОП- технология, поэтому они способны работать при сколь угодно низких так- товых частотах вплоть до нулевых. В справочных данных при этом указы- вается, что минимальная частота тактирования равна de (direct current). Это означает, что возможно использование МК в пошаговом режиме, на- пример, для отладки. Мощность потребления МК при низких частотах так- тирования обычно отражает значение тока потребления при fosc = 32768 Гц (часовой кварцевый резонатор). 4.8. Тактовые генераторы МК Современные МК содержат встроенные тактовые генераторы, которые требуют минимального числа внешних времязадающих элементов. На практике используются три основных способа определения тактовой ча- стоты генератора: с помощью кварцевого резонатора, керамического ре- зонатора и внешней RC-цепи. Типовая схема подключения кварцевого или керамического резонато- ра приведена на рис. 4.9а. Рис. 4.9. Тактирование с использованием кварцевого или керамического резонаторов (а) и с использованием RC-цепи (б). Кварцевый или керамический резонатор Q подключается к выводам XTAL1 и XTAL2, которые обычно представляют собой вход и выход ин- вертирующего усилителя. Номиналы конденсаторов С1 и С2 определя- ются производителем МКдля конкретной частоты резонатора. Иногда тре' 122
Вспомогательные аппаратные средства микроконтроллера бубгся включить резистор порядка нескольких мегаом между выводами ^•fAL.1 и XTAL2 для стабильной работы генератора. Использование кварцевого резонатора позволяет обеспечить вы- сокую точность и стабильность тактовой частоты (разброс частот кварце®0™ резонатора обычно составляет менее 0,01%). Такой уро- вень точности требуется для обеспечения точного хода часов реаль- ного времени или организации интерфейса с другими устройствами. Основными недостатками кварцевого резонатора являются его низ- кая механическая прочность (высокая хрупкость) и относительно высокая стоимость. При менее жестких требованиях к стабильности тактовой частоты воз- можно использование более стойких к ударной нагрузке керамических резонаторов. Многие керамические резонаторы имеют встроенные кон- денсаторы, что позволяет уменьшить количество внешних подключаемых элементов с трех до одного. Керамические резонаторы имеют разброс ча- стот порядка нескольких десятых долей процента (обычно около 0,5 %). Самым дешевым способом задания тактовой частоты МК является ис- пользование внешней RC-цепи, как показано на рис. 4.96. Внешняя RC- цепь не обеспечивает высокой точности задания тактовой частоты (раз- брос частот может доходить до десятков процентов). Это неприемлемо для многих приложений, где требуется точный подсчет времени. Однако имеется масса практических задач, где точность задания тактовой частоты не имеет большого значения. Зависимость тактовой частоты МК от номиналов RC-цепи зависит от конкретной реализации внутреннего генератора и приводится в руковод- стве по применению контроллера. Практически все МК допускают работу от внешнего источника такто- вого сигнала, который подключается ко входу XTAL1 внутреннего усили- теля. При помощи внешнего тактового генератора можно задать любую тактовую частоту МК (в пределах рабочего диапазона) и обеспечить син- хронную работу нескольких устройств. Некоторые современные МК содержат встроенные RC или кольцевые генераторы, которые позволяют контроллеру работать без внешних цепей синхронизации. Работа внутреннего генератора обычно разрешается путем Программирования соответствующего бита регистра конфигурации МК. В большинстве моделей МК частота времязадающего элемента (резонато- ра или RC-цепи) и частота тактирования f жестко связаны коэффициентом Деления встроенного делителя частоты. Поэтому изменение частоты Программным путем не представляется возможным. Однако ряд последних семейств МК (например, НС08 фирмы Motorola) имеют в своем составе схему ^Датирования, основанную на принципе синтезатора частоты с контуром 123
Глава 4 Организация микроконтроллер^ фазовой автоподстройки (PLL — phase loop lock). Такая схема работает Kaj< умножитель частоты и позволяет задавать тактовую частоту с помощЬ1о низкочастотного кварцевого резонатора, что снижает уровець электромагнитного излучения МК. Коэффициенты деления контура PLL могут быть изменены программным путем, что позволяет снизить тактовую частоту (и, соответственно, потребляемую мощность) в промежутки времени, когда высокое быстродействие не требуется. В некоторых МК семейства AVR фирмы Atmel тактовая частота кон- троллера, задаваемая внутренней RC-цепью, также может изменяться про- граммными средствами. 4.9. Аппаратные средства обеспечения надежной работы МК Прикладная программа, записанная в память программ МК, должна обеспечивать его надежную работу при любых комбинациях входных сиг- налов. Однако в результате электромагнитных помех, колебаний напря- жения питания и других внешних факторов предусмотренный разработ- чиком ход выполнения программы может быть нарушен. С целью обеспечения надежного запуска, контроля работы МК и восстановления работоспособности системы в отсутствие оператора все современные МК снабжаются аппаратными средствами обеспечения надежной работы. К ним относятся: • схема формирования сигнала сброса МК; • модуль мониторинга напряжения питания; • сторожевой таймер. 4.9.1. Схема формирования сигнала сброса МК При включении напряжения питания МК должен начать выполнять записанную в памяти программу работы. На этапе нарастания напряже- ния питания МК принудительно переводится в начальное состояние, ко- торое называют состоянием сброса. При этом устанавливаются в исходное состояние внутренние магистрали МК, сигналы управления и регистры специальных функций. Последние определяют начальное состояние пе риферийных модулей МК, которое чаще всего по умолчанию неактивно- С целью обеспечения надежного запуска от любых источников пита- ния с различной динамикой нарастания напряжения большинство совре' менных МК содержат встроенный детектор напряжения питания (схема Power-On-Reset — POR), который формирует сигнал сброса при нараста- нии напряжения питания. В частности, входящий в состав МК семейства PIC16 таймер установления питания (PWRT) начинает отсчет времен!1 124
Вспомогательные аппаратные средства микроконтроллера „„ того, как напряжение питания пересекло уровень около 1,2...1,8 В. 0о истечении выдержки около 72 мс считается, что напряжение достигло номинала. Сразу после выхода из состояния сброса МК выполняет следующие дей- ствия: • запускает генератор синхронизации МК. Для стабилизации частоты тактирования внутренними средствами формируется задержка вре- мени; • считывает энергонезависимые регистры конфигурации в соответ- ствующие регистры ОЗУ (если необходимо); • загружает в счетчик команд адрес начала рабочей программы; • производит выборку первой программы из памяти программ и при- ступает к выполнению программы. Адрес ячейки памяти, в которой хранится код первой исполняемой ко- манды, называют вектором начального запуска или вектором сброса. В не- которых МК этот адрес однозначно определен и приведен в техническом описании. Про такие МК говорят, что они имеют фиксированный вектор сброса. В других МК вектор сброса может быть произвольно определен пользователем. На этапе программирования МК необходимый вектор на- чального запуска записывается в ячейки с фиксированными адресами, и при выходе МК из сброса автоматически загружается в счетчик команд. О таких МК говорят, что они имеют загружаемый вектор сброса. Загружае- мый вектор сброса имеют все 8-разрядные МК фирмы Motorola, выпол- ненные по структуре с единым адресным пространством команд и данных. Для перевода МК в состояние сброса при установившемся напряже- нии питания достаточно подать сигнал высокого или низкого уровня (в соответствии со спецификацией МК) на вход сброса (RESET). Обычно Для формирования сигнала сброса при включении напряжения питания и нажатии кнопки сброса используют RC-цепь. Типовые схемы формиро- вания сигнала сброса представлены на рис. 4.10. Кнопка Кн предназначена для «ручного» сброса МК при отладке. Диод препятствует попаданию на вход RESET отрицательного напряжения При выключении питания. Номиналы R и С определяют задержку време- ни, необходимую для завершения всех переходных процессов при сбросе (Указываются в техническом описании на МК). Триггер Шмитта на входе Допускает подачу сигнала сброса с ненормированной длительностью фрон- Та- При отсутствии триггера Шмитта на входе приходится использовать СГ1еЦиальную внешнюю схему формирователя. ^современных М К линия RESET обычно являетсядвунаправленной и имеет Озкий активный уровень. При нажатии кнопки «сброс» или включении питания УФер линии устанавливается в режим ввода иреализуеттак называемый внешний 125
Глава 4 Организация микроконтроллеру сброс. МК может перейти в состояние сброса также по сигналам устройств контроля состояния, которые имеются в составе контроллера. В этом случае говорят, что МК находится в состоянии внутреннего сброса. При этом буфер линии RESET устанавливается в состояние вывода с низким логическим уровне^ на выходе. Данный сигнал может быть использован для установки в начальное состояние периферийных ИС. V V DD *00 а) б) Рис. 4.10. Типовые схемы формирования сигнала внешнего сброса для МК с высоким активным уровнем сигнала сброса (а) и низким активным уровнем сигнала сброса (б). Порядок выхода МК из состояний внешнего и внутреннего сброса в целом одинаков. 4.9.2. Блок детектирования пониженного напряжения питания В реальных условиях эксплуатации может сложиться такая ситуация, при которой напряжение питания МК опустится ниже минимально допу- стимого, но не достигнет порога отпускания схемы POR. В этих условиях МК может «зависнуть». При восстановлении напряжения питания до но- минального значения МК останется неработоспособным. Для восстановления работоспособности системы после «просадки» на- пряжения питания МК необходимо снова сбросить. Для этой цели в со временных МК реализован дополнительный блок детектирования пони- женного напряжения питания. Такой модуль используется в МК семейства НС08 фирмы Motorola, аналогичный модуль имеется в составе семейства PIC17 фирмы Microchip. Рассматриваемый модуль генерирует сигнал внуТ' реннего сброса при снижении напряжения питания до уровня чуть ни*с минимально допустимого. Уровень срабатывания блока детектирования пониженного напряжения питания значительно превышает напряжений 126
Вспомогательные аппаратные средства микроконтроллера де^ияД охранения данных в ОЗУ МК. Событие сброса по сигналу блока пони- женного напряжения питания отмечается специальным битом в одном из егистров МК. Следовательно, программно анализируя этот бит после сброса МК, можно установить, что данные целы, и продолжить выполнение программы. 4.9.3. Сторожевой таймер Если, несмотря на все принятые меры, МК все же «завис» , то на слу- чай выхода из этого состояния все современные контроллеры имеют встро- енный модуль сторожевого таймера. Принцип действия сторожевого тай- мера показан на рис. 4.11. Рис. 4.11. Принцип действия сторожевого таймера. Основу сторожевого таймера составляет многоразрядный счетчик. При сбросе МК счетчик обнуляется. После перехода МК в активный режим Работы значение счетчика начинает увеличиваться независимо от выпол- няемой программы. При достижении счетчиком максимального кода ге- нерируется сигнал внутреннего сброса, и МК начинает выполнять рабо- чую программу сначала. Для исключения сброса по переполнению сторожевого таймера рабо- чая программа МК должна периодически сбрасывать счетчик. Сброс счет- чика сторожевого таймера осуществляется путем исполнения специаль- ной команды (например, CLRWDT) или посредством записи некоторого казанного кода в один из регистров специальных функций. Тогда при Нормальном, предусмотренном разработчиком, порядке исполнения ра- Чей программы переполнения счетчика сторожевого таймера не про- водит, и он не оказывает влияния на работу МК. Однако, если 127
Глава 4 Организация микроконтроллеру исполнение рабочей программы было нарушено, например, вследствце «зависания», то велика вероятность того, что счетчик не будет сброще(1 вовремя. Тогда произойдет сброс по переполнению сторожевого таймера и нормальный ход выполнения рабочей программы будет восстановлен Модули сторожевых таймеров конкретных МК могут иметь различные особенности: • в ряде М К векторы внешнего сброса и сброса по переполнению е го. рожевого таймера совпадают. Это не позволяет выявить причину сброса программным путем и затрудняет написание рабочей про- граммы. Более высокоуровневые МК имеют либо различные векторы сброса, либо отмечают событие сброса по переполнению стороже- вого таймера установкой специального бита в одном из регистров специальных функций; • в некоторых МК при переходе в один из режимов пониженного энергопотребления, когда рабочая программа не выполняется, ав- томатически приостанавливается работа сторожевого таймера. В других М К сторожевой таймер имеет независимый тактовый гене- ратор, который продолжает функционировать и в режиме ожида- ния. В этом случае необходимо периодически выводить МК из со- стояния ожидания для сброса сторожевого таймера. В PIC-контроллерах фирмы Microchip выработка таких сбросов мо- жет быть запрещена путем записи нуля в специальный бит конфи- гурации WDTE. Использование сторожевого таймера существенно повышает способ- ность к самовосстановлению системы на основе МК. 4.10. Дополнительные модули МК Описанные выше модули составляют так называемый базовый ком- плект МК и входят в состав любого современного контроллера. Оче- видна необходимость включения в состав МК дополнительных моду- лей, состав и возможности которых определяются конкретной решаемой задачей. Среди таких дополнительных модулей следуем прежде всего, отметить: • модули последовательного ввода/вывода данных; • модули аналогового ввода/вывода. 4.10.1. Модули последовательного ввода/вывода Наличие в составе 8-разрядного МК модуля контроллера последова- тельного ввода/вывода стало в последнее время обычным явлением. За- дачи, которые решаются средствами модуля контроллера последователь' ного ввода/вывода, можно разделить на три основные группы: 128
Вспомогательные аппаратные средства микроконтроллера . связь встроенной микроконтроллерной системы с системой управ- ления верхнего уровня, например, с персональным компьютером. Чаще всего для этой цели используются интерфейсы RS-232C и RS- 485; • связь с внешними по отношению к МК периферийными ИС, а так- же с датчиками физических величин с последовательным выходом. Для этих целей используются интерфейсы I2C, SPI, а также нестан- дартные протоколы обмена; • интерфейс связи с локальной сетью в мультимикроконтроллерных системах. В системах с числом МК до пяти обычно используются сети на основе интерфейсов I2C, RS-232C и RS-485 с собственными сетевыми протоколами высокого уровня. В более сложных системах все более популярным становится протокол CAN. С точки зрения организации обмена информацией упомянутые типы интерфейсов последовательной связи отличаются режимом передачи дан- ных (синхронный или асинхронный), форматом кадра (число бит в по- сылке при передаче байта полезной информации) и временными диаг- раммами сигналов на линиях (уровни сигналов и положение фронтов при переключениях). Число линий, по которым происходит передача в последовательном коде, обычно равно двум (I2C, RS-232C, RS-485) или трем (SPI, некоторые нестандартные протоколы). Данное обстоятельство позволяет спроекти- ровать модули контроллеров последовательного обмена таким образом, чтобы с их помощью на аппаратном уровне можно было реализовать не- сколько типов последовательных интерфейсов. При этом режим передачи (синхронный или асинхронный) и формат кадра поддерживаются на уров- нелогических сигналов, а реальные физические уровни сигналов для каж- дого интерфейса получают с помощью специальных ИС, которые назы- вают приемопередатчиками, конверторами, трансиверами. Среди различных типов встроенных контроллеров последовательного обмена, которые входят в состав тех или иных 8-разрядных МК, сложился стандарт «де-факто» — модуль UART (Universal Asynchronous Receiver and ransniitter). UART — это универсальный асинхронный приемопередат- Ч”К- Однако большинство модулей UART, кроме асинхронного режима НьМена, способны также реализовать режим синхронной передачи дан- т все производители МК используют термин UART для обозначения а модуля контроллера последовательного обмена. Так, в МК фирмы ^otorola модуль асинхронной приемопередачи, который поддерживает те ^Режимы асинхронного обмена, что и UART, принято называть SCI (Serial Illniunication Interface). Следует отметить, что модуль типа SCI обычно 129
Глава 4 Организация микроконтроллер^^ реализует только режим асинхронного обмена, то есть его функционал^ ные возможности уже по сравнению с модулями типа 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 ин- терфейса всегда выполняются в виде самостоятельного модуля. Интер- фейс PC с возможностью работы как в ведущем, так и ведомом режиме, также обычно поддерживается специальным модулем (модуль последова- тельного порта в МК 89С52 фирмы Philips). Но если реализуется только ведомый режим 12С, то в МК PIC16 фирмы Microchip он успешно сочетается с SPI: настройка одного и того же модуля на один из протоколов осуществляется путем инициализации. В последнее время появилось большое количество МК со встроенными модулями контроллеров CAN и модулями универсального последовательного интерфейса периферийных устройств USB (Universal Serial Bus). Каждый из этих интерфейсов имеет достаточно сложные протоколы обмена, для ознакомления с которыми следует обращаться к специальной литературе. 4.10.2. Модули аналогового ввода/вывода Необходимость приема и формирования аналоговых сигналов требует наличия в МК модулей аналогового ввода/вывода. Простейшим устройством аналогового ввода в МК является встроен- ный компаратор напряжения. Компаратор сравнивает входное аналого- вое напряжение с опорным потенциалом VREF и устанавливает на выход1 логическую «1», если входное напряжение больше опорного. Компарато- ры удобнее всего использовать для контроля определенного значения вход ного напряжения, например, в термостатах. В комбинации с внешним ге нератором линейно изменяющегося напряжения встроенный компарат0!1 позволяет реализовать на МК интегрирующий аналого-цифровой пре°^ разователь (АЦП). Однако более широкие возможности для работы с аналоговыми налами дает АЦП, встроенный в МК. Чаще всего он реализуется в в1^ 130
Вспомогательные аппаратные средства микроконтроллера модуля многоканального АЦП, предназначенного для ввода в МК анало- говых сигналов с датчиков физических величин и преобразования этих игналов в двоичный код. Структурная схема типового модуля АЦП пред- ставлена на рис. 4.12. Рис. 4.12. Структура модуля АЦП. Многоканальный аналоговый коммутатор К служит для подключения одного из источников аналоговых сигналов (РТхО...РТх7) ко входу АЦП. Ыбор источника сигнала для преобразования осуществляется посред- Ств°м записи номера канала коммутатора в соответствующие разряды Регистра управления АЦП. Два вывода модуля АЦП используются для задания опорного напряже- те °п: \EFH ~ верхний предел Uon, VREFL — нижний предел. Разность по- Иналов на входах VREFH и VREFL и составляет Uon. Разрешающая способ- ь АЦП составляет Uon/2n, где п — число двоичных разрядов в слове УДьтата. Максимальное значение опорного напряжения, как правило, 131
Глава 4 Организация микроконтроллер^ равно напряжению питания МК. Если измеряемое напряжение Е[и1м > VRtf то результат преобразования будет равен FF, код 00 соответствует напряже- ниям UmM J VREFL. Для достижения максимальной точности измерения сле- дует выбрать максимально допустимое значение Uon. В этом случае напря- жение смещения нуля входного буфера и нелинейность передаточной характеристики АЦП будут вносить относительно малые погрешности. Собственно аналого-цифровой преобразователь выполнен по методу последовательного приближения. Практически во всех моделях 8-разряд- ных МК разрядность АЦП также составляет 8 разрядов. Соответственно формат представления результатов измерения АЦП — однобайтовый. Ис- ключение составляют лишь модули АЦП микроконтроллеров для управ- ления преобразователями частоты для электроприводов, разрешающая способность которых равна 10 разрядам. Два младших разряда результата получают с помощью дополнительного емкостного делителя, не связан- ного с регистром последовательного приближения. Длительность такта преобразования задает генератор синхронизации: один цикл равен двум периодам частоты генератора t .. Время преобра- зования для типовых модулей АЦП микроконтроллеров составляет от еди- ниц до десятков микросекунд. Источником синхронизации модуля АЦП может служить встроенный RC-генератор (Г) или импульсная последовательность тактирования меж- модульных магистралей МК. В первом случае частота синхронизации АЦП обязательно окажется оптимальной, то есть той, которая рекомендуется в техническом описании. Во втором случае выбранная по другим сообра- жениям fBLS может оказаться неподходящей для модуля АЦП. На этот слу- чай в составе некоторых модулей предусмотрен программируемый дели- тель частоты fBUS. Момент завершения каждого цикла преобразования отмечается уста- новкой триггера готовности данных. Если прерывания от модуля АЦП разрешены, то генерируется запрос на прерывания. Как правило, чтение регистра результата сбрасывает триггер готовности. Большинство модулей АЦП имеют только режим программного запУс ка: установка одного из битов регистра режима запускает очередное изМе рение. Наиболее универсальные модули АЦП имеют также режим автс матического запуска, при котором после завершения одного циК-па преобразования немедленно начинается следующий. Однако данные мерения каждого цикла должны быть считаны программным способов Цифро-аналоговые преобразователи в составе МК являются болыи0" редкостью. Функция цифро-аналогового преобразователя реализуем средствами модуля программируемого таймера в режиме ШИМ. На 03 ном из выводов МК формируется высокочастотная импульсная после/ 132
рГи1ИЯ 8 ___Вспомогательные аппаратные средства микроконтроллера вательность с регулируемой длительностью импульса. Полученный сиг- нал сглаживается фильтром нижних частот на операционном усилителе, разрешающая способность такого ЦАП определяется дискретностью ре- агирования коэффициента заполнения в режиме ШИМ. 133
Глава 5 Однокристальные микроконтроллеры серии р| Глава 5. Однокристальные микроконтроллеры серии PIC Лекция 9. Аппаратные средства микроконтроллеров серии PIC В этой лекции рассказывается об особенностях организации и пара- метрах популярных PIC-микроконтроллеров фирмы «Microchip», а так- же более подробно о составе, структуре и возможностях аппаратных средств микроконтроллеров подгруппы PIC16F8X. Ключевые слова: PIC, структура, цикл команд, регистры, адресация, порты, таймер, прерывания. 5.1. Основные особенности микроконтроллеров серии PIC 5.1.1. Состав и назначение семейств PIC-контроллеров Микроконтроллеры семейств PIC (Peripheral Interface Controller) компа- нии Microchip объединяют все передовые технологии микроконтроллеров: электрически программируемые пользователем ППЗУ, минимальное энер- гопотребление, высокую производительность, хорошо развитую RISC-архи- тектуру, функциональную законченность и минимальные размеры. Широ- кая номенклатура изделий обеспечивает использование микроконтроллер06 в устройствах, предназначенных для разнообразных сфер применения. Первые микроконтроллеры компании Microchip Р1С16С5х появилие в конце 1980-х годов и благодаря своей высокой производительности11 низкой стоимости составили серьезную конкуренцию производившим01 в то время 8-разрядным МК с CISC-архитектурой. Высокая скорость выполнения команд в PIC-контроллерах достиг^ ся за счет использования двухшинной гарвардской архитектуры вМесТ традиционной одношинной фон-неймановской. Гарвардская архите^ ра основывается на наборе регистров с разделенными шинами и адреС ми пространствами для команд и данных. Все ресурсы микроконтр0^ ра, такие как порты ввода/вывода, ячейки памяти и таймер, представ11 собой физически реализованные аппаратные регистры. 134
Аппаратные средства микроконтроллеров серии 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-разрядных микроконтроллеров; 135
Глава 5 Однокристальные микроконтроллеры серии • Р1С18СХХХ - семейство высокопроизводительных микроконтр0л леров с расширенной системой команд 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-система команд, характеризующаяся малым набором одноа5' ресных инструкций (33, 35 или 58), каждая из которых имеет длину8 одно слово (12, 14 или 16 бит) и большинство выполняется за с^1”1 машинный цикл. В системе команд отсутствуют сложные арифме тические команды (умножение, деление), предельно сокращен Я бор условных переходов; • высокая скорость выполнения команд: при тактовой частоте 20 М , время машинного цикла составляет 200 нс (быстродействие равН° млн. операций/сек); 136
Аппаратные средства микроконтроллеров серии PIC , наличие мощных драйверов (до 25 мА) на линиях портов ввода/вы- вода, что позволяет подключать непосредственно к ним довольно мощную нагрузку, например, светодиоды. . низкая потребляемая мощность; • ориентация на ценовую нишу предельно низкой стоимости, опре- деляющая использование дешевых корпусов с малым количеством выводов (8, 14, 18,28), отказ от внешних шин адреса и данных (кроме PIC17C4X), использование упрошенного механизма прерываний и аппаратного (программно недоступного) стека. 5-1-3. Особенности архитектуры микроконтроллеров семейства PIC16СХХХ Микроконтроллеры семейства 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 разрядов. Десь есть и последовательный двунаправленный синхронно-асинхрон- нЫй порт, обеспечивающий возможность организации шины PC. Прибо- PbI PIC16C71 и PIC16C74 содержат встроенный многоканальный 8-раз- РяДный АЦП с устройством выборки-хранения. Помимо памяти программ в PIC предусмотрено несколько индивиду- ьНо прожигаемых перемычек, с помощью которых можно на этапе про- бирования кристалла выбрать тип тактового генератора, отключить 137
Глава 5 Однокристальные микроконтроллеры серии Pic сторожевой таймер или систему сброса, включить защиту памяти программ от копирования, а также записать серийный номер кристалла (16 бит). С программной точки зрения PIC-контроллер представляет собой 8-разряд- ныи RISC-процессор с гарвардской архитектурой. Число команд небольшое — от 33 до 35. Все команды имеют одинаковую длину и, кроме команд ветвления, выполняются за четыре периода тактовой частоты (в отличие, например, от 12 периодов для 187С51). Поддерживаются непосредственный, косвенный и отно- сительный методы адресации, можно эффективно управлять отдельными бита- ми в пределах всего регистрового файла. Стек реализован аппаратно. Его макси- мальная глубина составляет два или восемь уровней в зависимости от типа контроллера. Почти во всех микросхемах PIC есть система прерываний, источ- никами которых могут быть таймер и внешние сигналы. Система команд прак- тически симметрична и, как следствие, легка в освоении. Применение PIC-контроллеров целесообразно в несложных приборах с ограниченным током потребления (автономные устройства, приборы с питанием от телефонной линии и т.п.). Благодаря малому количеству компонентов, используемых при построении таких приборов, их размеры уменьшаются, а надежность увеличивается. Типичным представителем микроконтроллеров семейства PIC16CXXX являются микроконтроллеры подгруппы PIC16F8X. 5.2. Микроконтроллеры подгруппы PIC16F8X 5.2.1. Основные характеристики Микроконтроллеры подгруппы PIC16F8X относятся к семейству 8-раз- рядных КМОП микроконтроллеров группы PIC16CXXX, для которых ха- рактерны низкая стоимость, полностью статическая КМОП-технология и высокая производительность. В состав подгруппы входят МК P1C16F83, PIC16CR83, PIC16F84 и PIC16CR84. Основные характеристики МК подгруппы PIC16F8X приве- дены в табл. 5.1. Все микроконтроллеры подгруппы PIC16F8X используют гарвардскую архитектуру с RISC-процессором, обладающую следующими основными особенностями: • используются только 35 простых команд; • все команды выполняются за один цикл (400 нс при частоте 10 МГц), кроме команд перехода, которые требуют 2 циклов; • рабочая частота 0 Гц ... 10 МГц; • раздельные шины данных (8 бит) и команд (14 бит); • 512 х 14 или 1024 х 14 память программ, выполненная на ПЗУ или электрически перепрограммируемой Flash- памяти; 138
Лекция 9 Аппаратные средства микроконтроллеров серии PIC • 15 восьмиразрядных регистров специальных функций (SFR); • восьмиуровневый аппаратный стек; • прямая, косвенная и относительная адресация данных и команд; • 36 или 68 восьмиразрядных регистров общего назначения (GPR) или ОЗУ; • четыре источника прерывания: - внешний вход RB0/INT; — переполнение таймера TMR0; — изменение сигналов на линиях порта В; — завершение записи данных в память EEPROM; • 64 х 8 электрически перепрограммируемая EEPROM память данных с возможностью выполнения 1000000 циклов стирания/записи; • сохранение данных в EEPROM в течение как минимум 40 лет. Параметр P1C16F83 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. 139
Глава 5 Однокристальные микроконтроллеры серии Pic Микроконтроллеры подгруппы P1C16F8X обладают развитым и воз- можностями ввода/вывода: • 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В. Микроконтроллеры подгруппы P1C16F8X различаются между со- бой только объемом ОЗУ данных, а также объемом и типом памяти программ. Наличие в составе подгруппы МК с Flash-памятьиЮ про- грамм облегчает создание и отладку прототипов промышленных об- разцов изделий. 5.2.2. Особенности архитектуры Упрощенная структурная схема МК подгруппы PIC16F8X приведена на рис. 5.1. 140
Лекция 9 Аппаратные средства микроконтроллеров серии PIC OSC2/CLKOUT MCLR Vdd, Vss Порты В/В OSC1/CLKIN Рис. 5.1. Структурная схема МК подгруппы PIC16F8X. Архитектура основана на концепции раздельных шин и областей па- мяти для данных и для команд (гарвардская архитектура). Шина данных и память данных (ОЗУ) — имеют ширину 8 бит, а программная шина и про- граммная память (ПЗУ) имеют ширину 14 бит. Такая концепция обеспе- чивает простую, но мощную систему команд, разработанную так, что би- товые, байтовые и регистровые операции работают с высокой скоростью и с перекрытием по времени выборок команд и циклов выполнения. 14- битовая ширина программной памяти обеспечивает выборку 14-битовой команды в один цикл. Двухступенчатый конвейер обеспечивает одновре- менную выборку и исполнение команды. Все команды выполняются за один цикл, исключая команды переходов. Микроконтроллеры PIC16F83 и PIC16CR83 адресуют 512x14 памяти программ, a PIC16F84 и PIC16CR84 — 1Кх14 памяти программ. Вся па- мять программ является внутренней. Микроконтроллер может прямо или косвенно обращаться к регистрам или памяти данных. Все регистры специальных функций, включая счет- чик команд, отображаются на память данных. Ортогональная (симметрич- 141
Глава 5 Однокристальные микроконтроллеры серии PIC ная) система команд позволяет выполнять любую команду над любым регистром с использованием произвольного метода адресации. Ортого- нальная архитектура и отсутствие специальных исключений делает про- граммирование МК группы PIC16F8X простым и эффективным. Назначение выводов МК подгруппы PIC16F8X приведено в табл. 5.2. Обозна- чение Тип Буфер Описание OSC1/ CLKIN I ТШ/КМОП3’ Вход кристалла генератора, RC- цепочки или вход внешнего так- тового сигнала OSC2/ CLKOUT О — Выход кристалла генератора. В RC-режиме — выход 1/4 частоты OSC1 /MCLR I/P тш Сигнал сброса/вход программи- рующего напряжения. Сброс низким уровнем. RA0 RA1 RA2 RA3 RA4 /Т0СК1 I/O I/O I/O I/O I/O ТТЛ ТТЛ ТТЛ ТТЛ тш PORTA — двунаправленный порт ввода/вывода RA4/T0CKI может быть выбран как тактовый вход таймера/счет- чика TMR0. Выход с открытым стоком. RB0/INT RB1 RB2 RB3 RB4 RB5 RB6 RB7 I/O I/O I/O I/O I/O I/O I/O I/O ттл/тш1» ТТЛ ТТЛ ТТЛ ТТЛ ТТЛ ТТЛ/ТШ 2> ТТЛ/ТШ 2> PORTB — двунаправленный порт ввода/вывода. Может быть зап- рограммирован в режиме внут- ренних активных нагрузок на ли- нию питания по всем выводам. Вывод RB0/INT может быть выб- ран как внешний вход прерывания. Выводы RB4...RB7 могут быть программно настроены как вхо- ды прерывания по изменению состояния на любом из входов. При программировании МК RB6 используется как тактовый, а RB7 как вход/выход данных. 1 ! 5 Табл. 5.2. Назначение выводов МК подгруппы PIC16F8X. 142
Лекция 9 Аппаратные средства микроконтроллеров серии PIC Обозна- чение Тип Буфер Описание Vdd Р — Положительное напряжение питания Vss Р — Общий провод (земля) В таблице использованы следующие обозначения: I — вход; О — вы- ход; I/O — вход/выход; Р — питание; не используется; ТТЛ — ТТЛ вход; ТШ — вход триггера Шмитта. ° Этот буфер имеет вход триггера Шмитта, когда конфигурируется в качестве входа внешнего прерывания. 2) Этот буфер имеет вход триггера Шмитта, когда используется в режи- ме последовательного программирования. 3) Этот буфер имеет вход триггера Шмитта, когда конфигурируется в режиме RC-генератора и КМОП-вход в остальных случаях. Табл. 5.2. Назначение выводов МК подгруппы PIC16F8X (продолжение). Микроконтроллер содержит 8- разрядное АЛУ и рабочий регистр W. АЛУ является арифметическим модулем общего назначения и выполняет ариф- метические и логические функции над содержимым рабочего регистра и любого из регистров контроллера. АЛУ может выполнять операции сложе- ния, вычитания, сдвига и логические операции. Если не указано иное, то арифметические операции выполняются в дополнительном двоичном коде. В зависимости от результата операции, АЛУ может изменять значения бит регистра STATUS: С (Carry), DC (Digit carry) и Z (Zero). 5.2.3. Схема тактирования и цикл выполнения команды Входная тактовая частота, поступающая с вывода OSC1/CLKIN, делит- ся внутри на четыре, и из нее формируются четыре циклические не пере- крывающиеся тактовые последовательности QI, Q2, Q3 и Q4. Счетчик ко- манд увеличивается в такте Q1, команда считывается из памяти программы и защелкивается в регистре команд в такте Q4. Команда декодируется и выполняется в течение последующего цикла в тактах Q1...Q4. Схема такти- рования и выполнения команды изображена на рис. 5.2. Цикл выполнения команды состоит из четырех тактов: Q1...Q4. Вы- борка команды и ее выполнение совмещены по времени таким образом, что выборка команды занимает один цикл, а выполнение — следующий Цикл. Эффективное время выполнения команды составляет один цикл. 143
Глава 5 Однокристальные микроконтроллеры серии PIC Если команда изменяет счетчик команд (например, команда GOTO), то для ее выполнения потребуется два цикла, как показано на рис. 5.3. I Q1 | Q2 | Q3 | Q4 i Q1 | Q2 | Q3 | Q4 । Q1 | Q2 | Q3 | Q4 QSC1 1_ГЛ_ Q2 Q3 Q4 ) РС( OSC2/CLKOUT \ (RC-генератор) Выборка INST (PC) Выполнение INST (РС-1) Выборка INST (РС+1) Внутрен- ние тактовые частоты Выполнение INST (PC) Выборка INST (РС+2) [Выполнение INST (РС+1) Рис. 5.2. Схема тактирования и выполнения команды. 1.M0VLW55h[ Загрузка 1 2. MOVWF PORTB 3. CALL SUB_1 4. BSF PORTA, ВИЗ Выполнение 1 Загрузка 2 Выполнение 2 Загрузка 3 Выполнение 3 Загрузка 4 Пропуск Загрузка SUBJ Выполнение SUB11 Рис. 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 памяти (адреса 0000h-03FFh). Обращение к адресам выше IFFh (3FFh) фактически есть адресация в те же первые 512 адресов (первые 1К адресов). Организация памяти программ и стека приведена на рис. 5.4. В памяти программ есть выделенные адреса. Вектор сброса находится по адресу OOOOh, вектор прерывания — по адресу 0004h. Обычно по адресу 144
Лекция 9 Аппаратные средства микроконтроллеров серии PIC 0004h располагается подпрограмма идентификации и обработки преры- ваний, а по адресу OOOOh — команда перехода на метку, расположенную за подпрограммой обработки прерываний. Рис. 5.4. Организация памяти программ и стека. 5.2.5. Организация памяти данных Память данных МК разбита на две области. Первые 12 адресов — это область регистров специальных функций (SFR), а вторая — область реги- стров общего назначения (GPR). Область SFR управляет работой прибора. Обе области разбиты в свою очередь на банки 0 и 1. Банк 0 выбирается обнулением бита RP0 регистра статуса (STATUS). Установка бита RP0 в единицу выбирает банк 1. Каждый банк имеет протяженность 128 байт. Однако для PIC16F83 и PIC16CR83 память данных существует только до адреса 02Fh, а для PIC16F84 и PIC16CR84 — до адреса 04Fh. 145
Глава 5 Однокристальные микроконтроллеры серии PIC На рис. 5.5 изображена организация памяти данных. 0011 01h 02h 03h 04h 05h 0611 07h 08h 09h OAh OBh OCh 2Fh 30h 4Fh 50h 7Fh INDF 1> INDF ’> 80h TMRO OPTION 81h PCL PCL 82h STATUS STATUS 83h FSR FSR 84h PORTA TRISA 85h PORTB TRISB 86h - • 87h EEDATA EECON1 88h EEADR EECON2’> 89h PC LATCH PCLATCH 8Ah INTCON INTCON 8Bh 36 байт для PIC16F83, PIC16CR83 г для 1C16CR84 8Ch AFh 68 бай' PIC16F84, P BOh CFh DOh JFFh БанкО Банк 1 ” Регистр косвенной адресации (INDF) (не является физическим регистром) Рис. 5.5. Организация памяти данных. Некоторые регистры специального назначения продублированы в обо- их банках, а некоторые расположены в банке 1 отдельно. Регистры с адресами 0Ch-4Fh могут использоваться как регистры об- щего назначения, которые представляют собой статическое ОЗУ. Адреса регистров общего назначения банка 1 отображаются на банк 0. Следова- тельно, когда установлен банк 1, то обращение к адресам 8Ch-CFh факти- чески адресует банк 0. 146
Лекция 9 Аппаратные средства микроконтроллеров серии PIC В регистре статуса помимо бита RP0 есть еще бит RB1, что позволяет обра- щаться к четырем страницам (банкам) будущих модификаций этого кристалла. К ячейкам ОЗУ можно адресоваться прямо, используя абсолютный ад- рес каждого регистра, или косвенно, через регистр указатель FSR. Кос- венная адресация использует текущее значение разрядов RPERP0 для до- ступа к банкам. Это относится и к 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: 1RP: бит выбора страницы банка данных (используется при косвенной адресации) 0 = банк 0,1 (00h - FFh) 1 = банк 2,3 (100h — IFFh) Бит IRP не используется в МК подгруппы PIC16F8X Биты 6-5: RPERPO: биты выбора страницы банка данных (исполь- зуются при прямой адресации) 00 = банк 0 (00h — 7Fh) 01 = банк 1 (80h - FFh) 10 = банк 2 (1 OOh - 17Fh) 11 = банк 3 (180h — IFFh) В МК подгруппы P1C16F8X используется только бит RP0 Бит 4: /ТО: бит срабатывания сторожевого таймера 1 = после включения питания, а также командами CLRWDT и SLEEP 0 = по завершении выдержки сторожевого таймера Бит 3: /PD: бит снижения потребляемой мощности 1 = после включения питания, а также командой CLRWDT 0 = по команде SLEEP ----- —л--—-г—---г—---,.ж, _ _ Табл. 5.3. Назначение бит регистра STATUS (адрес 03h, 83h). 147
Глава 5 Однокристальные микроконтроллеры серии 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, где и — неизменяемое состояние. Поэтому рекомендуется для изменения регистра статуса использовать только команды битовой установки ВСЕ BSF, M0VWF, которые не изменяют остальные биты статуса. Воздействие всех команд на биты статуса рассматривается в разделе «Описание системы команд». Регистр конфигурации (OPTION) является доступным по чтению и за- писи регистром, который содержит управляющие биты для конфигура- ции предварительного делителя (пределителя), внешних прерываний, тай- 148
Лекция 9 Аппаратные средства микроконтроллеров серии 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 /RBPLJ INTEDG TOCS T0SE PSA PS2 PSI PSO Бит 7 Бит 6 Бит 5 Бит 4 Бит 3 Бит 2 Бит 1 Бит О Бит 7: /RBPU: бит установки резисторов «pull-up» на выводах PORTB 0 = резисторы «pull-up» подключены 1 = резисторы «pull-up» отключены Бит 6: INTEDG: бит выбора перехода сигнала прерывания 0 = прерывание по спаду сигнала на выводе RB0/INT 1 = прерывание по фронту сигнала на выводе RB0/INT Бит 5: T0CS: бит выбора источника сигнала таймера TMR0 0 = внутренний тактовый сигнал (CLKOUT) 1 = переход на выводе RA4/T0CKI Бит 4: T0SE: бит выбора перехода источника сигнала для TMR0 0 = приращение по фронту сигнала на выводе RA4/T0CKI 1 = приращение по спаду сигнала на выводе RA4/T0CKI Бит 3: PSA: бит назначения пределителя 0 = пределитель подключен к TMR0 1 = пределитель подключен к сторожевому таймеру WDT Биты 2-0: PS2:PS0: биты выбора коэффициента деления пределителя Значения бит Скорость TMR0 Скорость WDT ООО 1:2 1:1 001 1:4 1:2 010 1:8 1:4 ОН 1:16 1:8 100 1:32 1:16 101 1:64 1:32 НО 1:128 1:64 111 1:256 1:128 Табл. 5.4. Назначение бит регистра OPTION (адрес 81h). 149
Глава 5 Однокристальные микроконтроллеры серии 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 TOIF INTF RBIF | Бит 7 Бит 6 Бит 5 Бит 4 Бит 3 Бит 2 Бит 1 Бит 0 Бит 7: GIE: бит разрешения всех прерываний 0 = запрещены все прерывания 1 = разрешены все незамаскированные прерывания [ Бит 6: EEIE: бит разрешения прерывания записи в EEPROM 0 = запрещены прерывания записи в EEPROM 1 = разрешены прерывания записи в EEPROM I Бит 5: T0IE: бит разрешения прерывания по переполнению TMR0 | 0 = запрещены прерывания от TMRO । 1 = разрешены прерывания от TMRO 1 Бит 4: INTE: бит разрешения прерываний по входу RB0/INT 0 = запрещены прерывания по входу RB0/INT 1 = разрешены прерывания по входу RB0/INT Бит 3: RBIE: бит разрешения прерываний по изменению PORTB 0 = запрещены прерывания по изменению PORTB | 1 = разрешены прерывания по изменению PORTB Бит 2: T0IF: бит запроса прерывания по переполнению TMRO 0 = прерывание по переполнению TMRO отсутствует 1 = прерывание по переполнению TMRO имеет место Бит 1: INTF: бит запроса прерывания по входу RB0/INT 0 = прерывание по входу RB0/INT отсутствует 1 = прерывание по входу RB0/INT имеет место I Бит 0: RBTF: бит запроса прерывания по изменению PORTB 0 = ни на одном из входов RB7:RB4 состояние не изменилось 1 = хотя бы на одном из входов RB7:RB4 изменилось состояние Табл. 5.5. Назначение бит регистра INTCON (адреса OBh, 8Bh). 150
Лекция 9 Аппаратные средства микроконтроллеров серии PIC Бит разрешения всех прерываний GIE сбрасывается автоматически при следующих обстоятельствах: • по включению питания; • по внешнему сигналу /MCLR при нормальной работе; • по внешнему сигналу /MCLR в режиме 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. РСН PCL 12 8 7 О PC | I | 5'P~PCLATH<4:0> 8 ЕЕоЭш PCLATH РСН PCL 121110 87 0 рс । । ; ~ | 2^PCLATH<4:3> ^И~ । г L-i-i PCLATH PCL как регистр назначения Результат из АЛУ GOTO, CALL Биты кода операции <10:0> Рис. 5.6. Загрузка старших бит счетчика команд. 151
Глава 5 Однокристальные микроконтроллеры серии PIC Команды CALL и GOTO оперируют 11-разрядным адресным диапазо- ном, достаточным для смещения в пределах страницы профаммной па- мяти объемом 2К слов. Для МК подгруппы PIC16F8X этого хватает. С це- лью обеспечения возможности расширения памяти команд для будущих моделей МК предусмотрена загрузка двух старших бит счетчика команд из регистра PCLATH<4:3>. При использовании команд CALL и GOTO пользователь должен убедиться в том, что эти страничные биты запрог- раммированы для выхода на нужную страницу. При выполнении коман- ды CALL или выполнении прерывания весь 13-битный счетчик команд помещается в стек, поэтому для возвращения из подпрограммы не нужны манипуляции с разрядами PCLATH<4:3>. Микроконтроллеры подфуппы PICI6F8X игнорируют значения бит 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. 152
Лекция 9 Аппаратные средства микроконтроллеров серии PIC Прямая адресация Косвенная адресация (FSR) RP1RP0 6 из КОП О IRP 7 £ 1) для PIC17F83 и PIC16CR83 2) для PIC16F84 и PIC 16CR84 Рис. 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. 153
Глава 5 Однокристальные микроконтроллеры серии PIC Каждой линии порта поставлен в соответствие бит направления пере- дачи данных, который хранится в управляющем регистре TRISA, распо- ложенном по адресу 85h. Если бит управляющего TRISA регистра имеет значение 1, то соответствующая линия будет устанавливаться на ввод. Ноль переключает линию на вывод и одновременно выводит на нее содержи- мое соответствующего регистра-фиксатора порта. При включении пита- ния все линии порта по умолчанию настроены на ввод. На рис. 5.8 дана схема линий RA<3:0> порта А. Шина данных Запись в порт Запись в TRIS Чтение порта Рис. 5.8. Схема линий RA<3:0> порта А. Выводы порта имеют защитные диоды к Vdd и Vss. Операция чтения порта А считывает состояние выводов порта, в то вре- дя как запись в него изменяет состояние триггеров порта. Все операции с тортом являются операциями типа «чтение-модификация-запись». По- этому запись в порт предполагает, что состояние выводов порта вначале считывается, затем модифицируется и записывается в триггер-фиксатор. Вывод RA4 мультиплексирован с тактовым входом таймера TMRO. Схе- ла линии RA4 порта А приведена на рис. 5.9. Порт В (PORTB) — это двунаправленный 8-битовый порт, соответству- ощий выводам RB<7:0> контроллера и расположенный по адресу 06h. От- 154
Лекция 9 Аппаратные средства микроконтроллеров серии PIC носящийся к порту В управляющий регистр TRISB расположен на первой странице регистров по адресу 86h. Если бит управляющего TRISB регист- ра имеет значение 1, то соответствующая линия будет устанавливаться на ввод. Ноль переключает линию на вывод и одновременно выводит на нее содержимое соответствующего регистра защелки. При включении питания все линии порта по умолчанию настроены на ввод. Запись в порт Шина данных Q Q > Запись в TRIS Q D QO- Триггер TRIS Чтение порта Тактовый вход TMRO Триггер данных Вывод RA4 Vss Входной буфер Нт? (Триггер у Шмитта) Чтение TRIS EN — Рис. 5.9. Схема линии RA4 порта А. Вывод порта имеет защитный диод только к Vss. У каждой ножки порта В имеется небольшая активная нагрузка (около ЮОмкА) на линию питания (pull-up). Она автоматически отключается, если эта ножка запрограммирована как вывод. Более того, управляющий бит / RBPU регистра OPTION<7> может отключить (при RBPU=1) все нагруз- ки. Сброс при включении питания также отключает все нагрузки. Четыре линии порта В (RB<7:4>) могут вызвать прерывание при изме- нении значения сигнала на любой из них. Если эти линии настроены на ввод, то они опрашиваются и защелкиваются в цикле чтения Q1. Новая величина входного сигнала сравнивается со старой в каждом командном 155
Глава 5 Однокристальные микроконтроллеры серии PIC цикле. При несовпадении значения сигнала на ножке и в фиксаторе гене- рируется высокий уровень. Выходы детекторов «несовпадений» RB4, RB5, RB6, RB7 объединяются по ИЛИ и генерируют прерывание RBIF (запо- минаемое в регистре INTCON<0>). Любая линия, настроенная как вывод, в этом сравнении не участвует. Прерывание может вывести кристалл из режима SLEEP. В подпрограмме обработки прерывания следует сбросить запрос прерывания одним из следующих способов: • прочитать (или записать в) порт’ В. Это завершит состояние сравнения; • обнулить бит RBIF регистра INTCON<0>. При этом необходимо иметь в виду, что условие «несовпадения» будет продолжать устанавливать признак RBIF. Только чтение порта В может устранить «несовпадение» и позволит обнулить бит RBIF. Прерывание по несовпадению и программно устанавливаемые внут- ренние активные нагрузки на этих четырех линиях могут обеспечить про- стой интерфейс, например, с клавиатурой, с выходом из режима SLEEP по нажатию клавиш. Схемы линий порта В приведены на рис. 5.10 и 5.11. Vdd RBPU Шина Триггер данных данных Запись Вывод в порт Триггер TRIS Запись Входной буфер ТТЛ Чтение TRIS Установка Чтение порта RBIF ,—,_________ От других выводов порта В Чтение порта Рис. 5.10. Схема линий RB<7:4> порта В. Выводы порта имеют защитные диоды к Vdd и Vss. 156
Лекция 9 Аппаратные средства микроконтроллеров серии PIC RB0/INT Vdd RBPU Шина данных Запись, в порт Запись в TRIS ' ------------ Входной буфер (Триггер Шмитта) Чтение порта Рис. 5.11. Схема линий RB<3:0> порта В. Выводы порта имеют защитные диоды к Vdd и Vss. При организации двунаправленных портов необходимо учитывать особен- ности организации ввода/вывода данных МК. Любая команда, которая осу- ществляет запись, выполняет ее ; внутри как «чтение-модификация-запись». На- пример, команды BCF и BSF считывают порт целиком, модифицируют один бит и выводят результат обратно. Здесь необходима осторожность. В частно- сти, команда BSF PORTB, 5 (установить в единицу бит 5 порта В) сначала счи- тывает все реальные значения сигналов, присутствующие в данный момент на выводах порта. Затем выполняются действия над битом 5, и новое значение байта целиком записывается в выходные фиксаторы. Если другой бит регистра PORTB используется в качестве двунаправленного ввода/вывода (скажем, бит 0), и в данный момент он определен как входной, то входной сигнал на этом выводе будет считан и записан обратно в выходной триггер-фиксатор этого же вывода, стирая предыдущее состояние. До тех пор, пока эта ножка остается в режиме ввода, никаких проблем не возникает. Однако если позднее линия 0 переключится в режим вывода, ее состояние будет неопределенным. На ножку, работающую в режиме вывода, не должны нагружаться вне- шние источники токов («монтажное И», «монтажное ИЛИ»). Большие ре- зультирующие токи могут повредить кристалл. 157
Глава 5 Однокристальные микроконтроллеры серии PIC Необходимо выдерживать определенную последовательность обраще- ния к портам ввода/вывода. Запись в порт вывода происходит в конце командного цикла. Но при чтении данные должны быть стабильны в на- чале командного цикла. Будьте внимательны в операциях чтения, следу- ющих сразу за записью в тот же порт. Здесь надо учитывать инерцион- ность установления напряжения на выводах. Может потребоваться программная задержка, чтобы напряжение на ножке (которое зависит от нагрузки) успело стабилизироваться до начала исполнения следующей команды чтения. 5.2.10. Модуль таймера и регистр таймера Структура модуля таймера/счетчика TIMER0 и его взаимосвязь с ре- гистрами TMRO и OPTION показаны на рис. 5.12. TIMER0 является про- граммируемым модулем и содержит следующие компоненты: • 8-разрядный таймер/счетчик TMRO с возможностью чтения и запи- си как регистр; • 8-разрядный программно управляемый предварительный делитель (пределитель); • мультиплексор входного сигнала для выбора внутреннего или внеш- него тактового сигнала; • схему выбора фронта внешнего тактового сигнала; • формирователь запроса прерывания по переполнению регистра TMRO с FFh до 00h. Режим таймера выбирается путем сбрасывания в ноль бита TOCS реги- стра OPTION <5>. В режиме таймера TMRO инкрементируется каждый командный цикл (без пределителя). После записи информации в TMRO инкрементирование его начнется после двух командных циклов. Это про- исходит со всеми командами, которые производят запись или чтение-мо- дификацию-запись ТМR0 (например, MOVFTMRO, CLRFTMR0). Избе- жать этого можно при помощи записи в TMRO скорректированного значения. Если TMRO нужно проверить на равенство нулю без останова счета, следует использовать инструкцию MOVF TMR0,W. Режим счетчика выбирается путем установки в единицу бита TOCS ре- гистра 0PTI0N<5>. В этом режиме регистр TMRO будет инкрементиро- ваться либо нарастающим, либо спадающим фронтом на выводе RA4/ TOCKI от внешних событий. Направление фронта определяется управля- ющим битом TOSE в регистре OPTION<4>. При TOSE = 0 будет выбран нарастающий фронт. Пределитель может использоваться или совместно с TMRO, или со сто- рожевым (Watchdog) таймером. Вариант подключения делителя контро- лируется битом PSA регистра OPTION<3>. При PSA=O делитель будет под- 158
Лекция 9 Аппаратные средства микроконтроллеров серии PIC соединен к TMRO. Содержимое делителя программе недоступно. Коэф- фициент деления пределителя программируется битами PS2...PSO регист- ра OPTION<2:0>. Рис. 5.12. Структурная схема таймера/счетчика TMRO. Прерывание по TMRO вырабатывается тогда, когда происходит пере- полнение регистра таймера/счетчика при переходе от FFh к 00h. Тогда устанавливается бит запроса T0IF в регистре INTCON<2>. Данное пре- рывание можно замаскировать битом ТОГЕ в регистре INTCON<5>. Бит запроса T0IF должен быть сброшен программно при обработке прерывания. Прерывание по ТМ R0 не может вывести процессор из режима SLEEP потому, что таймер в этом режиме не функционирует. При PSA=1 делитель будет подсоединен к сторожевому таймеру как постделитель (делитель на выходе). Возможные варианты использования пределителя показаны на рис. 5.13. При использовании пределителя совместно с TMRO, все команды, из- меняющие содержимое TMRO, обнуляют пределитель. Если пределитель используется совместно с WDT, команда CLRWDT обнуляет содержимое пределителя вместе с WDT. При использовании модуля TIMER0 в режиме счетчика внешних со- бытий необходимо учитывать то, что внешний тактовый сигнал синхро- низируется внутренней частотой Fosc. Это приводит к появлению задер- жки во времени фактического инкрементирования содержимого TMRO. Синхронизация происходит по окончании 2-го и 4-го тактов работы МК, поэтому, если пределитель не используется, то для фиксации вход- ного события необходимо, чтобы длительности высокого и низкого со- стояний сигнала на входе RA4/T0CKI были бы не менее 2 периодов тактовой частоты Tosc плюс некоторая задержка ( ~ 20 нс). Если модуль TIMER0 используется совместно с пределителем, то час- тота входного сигнала делится асинхронным счетчиком так, что сигнал на выходе пределителя становится симметричным. При этом необходимо, 159
Глава 5 Однокристальные микроконтроллеры серии 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>. При записи байта автоматически стирается предыдущее значение, и записываются новые данные (стирание перед записью). Все эти операции 160
Лекция 9 Аппаратные средства микроконтроллеров серии 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 не используются (читаются как ‘О’) Бит 4: EEIF: бит запроса прерывания по записи в EEPROM О = операция записи не завершена или не начиналась 1 = операция записи завершена (должен быть сброшен программно) Бит 3: WRERR: бит признака ошибки записи в EEPROM О = операция записи завершена 1 = операция записи прервана преждевременно (сбросом по /MCLR или сбросом от WDT) Бит 2: WREN: бит разрешения записи в EEPROM О = запрещена запись в EEPROM 1 = разрешены циклы записи Бит 1: WR: бит управления записью О = цикл записи данных в EEPROM завершен 1 = инициирует цикл записи (сбрасывается аппаратно по завер- шении записи. Бит WR может быть только установлен (но не сброшен) программно) I Бит 0: RD: бит управления чтением 0 = чтение данных EEPROM не инициировано 1 = инициирует чтение данных EEPROM (чтение занимает один цикл. Бит RD сбрасывается аппаратно. Бит RD может быть только установлен (но не сброшен) программно) Табл. 5.6. Назначение бит регистра EECON 1 (адреса 88h). 161
Глава 5 Однокристальные микроконтроллеры серии 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. 162
Лекция 9 Аппаратные средства микроконтроллеров серии PIC Бит общего разрешения/запрещения прерывания GIE (INTCON <7>) разрешает (если = 1) все индивидуально незамаскированные прерывания или запрещает их (если = 0). Каждое прерывание в отдельности может быть дополнительно разрешено/запрещено установкой/сбросом соответ- ствующего бита в регистре INTCON. Бит GIE при сбросе обнуляется. Когда начинает обрабатываться пре- рывание, бит GIE обнуляется, чтобы запретить дальнейшие прерывания, адрес возврата посылается в стек, а в программный счетчик загружается адрес 000411. Время реакции на прерывание для внешних событий, таких как прерывание от ножки INT или порта В, составляет приблизительно пять циклов. Это на один цикл меньше, чем для внутренних событий, та- ких как прерывание по переполнению от таймера TMR0. Время реакции всегда одинаковое. В подпрограмме обработки прерывания источник прерывания может быть определен по соответствующему биту в регистре признаков. Этот флаг-признак должен быть программно сброшен внутри подпрограммы. Признаки запросов прерываний не зависят от соответствующих маскиру- ющих битов и бита общего маскирования GIE. Команда возврата из прерывания RETFIE завершает прерывающую под- программу и устанавливает бит GIE, чтобы опять разрешить прерывания. Логика прерываний контроллера изображена на рис. 5.14. TOIF TOIE INTF INTE RBIF RBIE EEIF EEIE GIE Рис.5.14. Логика прерываний микроконтроллера. Внешнее прерывание на ножке RB0/INT осуществляется по фронту: Либо по нарастающему (если в регистре OPTION бит INTEDG=1), либо По спадающему (если INTEDG=0). Когда фронт обнаруживается на нож- ке INT, бит запроса INTF устанавливается в единицу (INTCON <1>). Это 163
Глава 5 Однокристальные микроконтроллеры серии 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 — дело программы обработки. 164
Лекция 10 Специальные функции и система команд микроконтроллеров серии PIC Лекция 10. Специальные функции и система команд микроконтроллере! серии PIC В этой лекции рассказывается о специальных функциях, предназна- ченных для расширения возможностей системы на основе Р1С-микро- контроллеров и повышения ее надежности, а также рассматриваются особенности системы команд микроконтроллеров подгруппы PIC 16F8X. Ключевые слова: сброс, сторожевой таймер, режимы ожидания и оста- нова, генератор, конфигурация, система команд. 5.2.13. Специальные функции Микроконтроллеры подгруппы PIC16F8X имеют набор специальных функций, предназначенных для расширения возможностей системы, ми- нимизации стоимости, исключения навесных компонентов, обеспечения минимального энергопотребления и защиты кода от считывания. В PIC16F8X реализованы следующие специальные функции: • сброс; • сторожевой таймер (WDT); • режим пониженного энергопотребления (SLEEP); • выбор типа генератора; • защита кода от считывания; • биты идентификации; • последовательное программирование в составе схемы. В PIC16F8X существуют различия между вариантами сбросов: • сброс по включению питания; • сброс по внешнему сигналу /MCLR при нормальной работе; • сброс по внешнему сигналу /MCLR в режиме SLEEP; • сброс по окончании задержки таймера WDT при нормальной рабо- те; • сброс по окончании задержки таймера WDT в режиме SLEEP. Для реализации сброса по включению питания в МК подгруппы PIC16F8X предусмотрен встроенный детектор включения питания. Тай- мер установления питания (PWRT) начинает отсчет времени после того, Как напряжение питания пересекает уровень около 1,2... 1,8 Вольт. По ис- течении выдержки около 72мс считается, что напряжение достигло но- минала и запускается другой таймер - таймер запуска генератора (OST), 165
Глава 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). Биты регистра статуса /ТО и /Р^ 166
Лекция 10 Специальные функции и система команд микроконтроллеров серии PIC устанавливаются или сбрасываются в зависимости от варианта сброса. Эти биты используются программой для определения природы сброса (см. табл. 5.3). Регистр Адрес Сброс по включению питания Другие виды сброса W — xxxx xxxx uuuu uuuu INDF 0011 — TMR0 01b xxxx xxxx uuuu uuuu PCL 02b 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 1 TRISA 85h -11111 -1 1111 TRIS В 86h 1111 1111 1111 nil OPTION 81h 1111 1111 nil nil EEDATA 08h xxxx xxxx uuuu uuuu 1 EEADR 09h xxxx xxxx uuuu uuuu EECON 1 88h -0 0000 —0 qOOO I EECON2 89h — PC LATH OAh -0 0000 -0 0000 INTCON OBh 0000 OOOx 0000 OOOu Здесь: x — неизвестное значение; u — неизменяемый бит; «—» — 1 неиспользуемый бит (читается как «0»); q — значение бита зависит от условий сброса. Табл. 5.7. Состояние регистров МК после сброса. Режим пониженного энергопотребления SLEEP предназначен для °беспсчения очень малого тока потребления в ожидании (менее 1 мкА при 167
Глава 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. Пользователю следует помнить, что этот адрес находится ниже области кодов и недоступен программе. 168
Лекция 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. 169
Глава 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 FOSCEFOSCO: бит выбора типа генератора 11 = генератор RC 10 = генератор HS 01 = генератор XT 00 = генератор LP Табл. 5.9. Назначение бит конфигурации МК PIC15F83 и PIC16F84. Четыре слова памяти, расположенные по адресам 2000h-2003h, пред- назначены для хранения идентификационного кода (ID) пользователя, контрольной суммы или другой информации. Каки слово конфигурации, они могут быть прочитаны или записаны только с помощью программа- тора. Доступа из программы к ним нет. Микроконтроллеры подгруппы PIC16F8X могут быть запрограм- мированы последовательным способом в составе устройства. Для этого используется всего пять линий: две для данных и тактового сигнала и три для земли, напряжения питания и программирующего напряже- ния. Разработчик может создать и смакетировать устройство с незап- рограммированным прибором, а перед использованием ввести в него программу. 170
Лекция 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= 1 — результат в регистре f По умолчанию d=l label Имя метки TOS Вершина стека PC Счетчик команд PCLATH Регистр PCLATH GIE Бит разрешения всех прерываний Табл. 5.10. Описания полей команд МК семейства PIC16CXXX. 171
Глава 5 Однокристальные микроконтроллеры серии PIC Поле Описание WDT Сторожевой таймер /ТО Тайм-аут /PD Выключение питания dest Регистр назначения: рабочий регистр w или регистр, заданный в команде [1 Необязательные параметры О Содержание —> Присвоение < > Поле номера бита Е Из набора Табл. 5.10. Описания полей команд МК семейства PIC16CXXX (продолжение). Для команд работы с байтами f обозначает регистр, с которым произ- водится действие; d — бит, определяющий, куда положить результат. Если d =0, то результат будет помещен в регистр w, при d=l результат будет по- мещен в регистр «1», упомянутый в команде. Для команд работы с битами b обозначает номер бита, участвующего в команде, a f — это регистр, в котором данный бит расположен. Для команд передачи управления и операций с константами, к обозна- чает восьми- или одиннадцатибитную константу. Почти все команды выполняются в течение одного командного цикла. В двух случаях исполнение команды занимает два командных цикла: • проверка условия и переход; • изменение программного счетчика как результат выполнения коман- ды. Один командный цикл состоит из четырех периодов генератора. Таким образом, для генератора с частотой 4 МГц время исполнения командного цикла будет 1 мкс. Основные форматы команд МК изображены на рис. 5.15. Система команд МК под!руппы PIC16F8X приведена в табл. 5.11. 172
Лекция 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 к(константа) к = 8-разрядная константа Команды CALL и GOTO 13 11 10 0 OPCODE к(константа) к = 11 -разрядная константа Рис. 5.15. Основные форматы команд. 1 Мнемоника Описание команды Циклы Биты состояния Прим. 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. 173
Глава 5 Однокристальные микроконтроллеры серии PIC Мнемоника - Описание команды Циклы Биты состояния Прим. INCFSZ f, d Инкремент f, пропустить команду, если 0 1(2) 1,2,3 IORWF f, d Логическое ИЛИ Wnf 1 Z 1,2 MOVF f, d Пересылка регистра f ] 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 ANDLW k Логическое И константы и W 1 Z CALL k Вызов подпрограммы 2 CLRWDT - Сброс сторожевого таймера WDT 1 /ТО,/Р GOTO k Переход по адресу 2 TORLW k Логическое ИЛИ кон- станты и W 1 z MOVLW k Пересылка константы в W 1 Табл. 5.11. Система команд МК подгруппы PIC16F8X (продолжение). М 174
Лекция 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), то используется значение, считываемое с выводов. Например, если в выходной защелке порта, включенного на ввод, находится «1», а внешнее устройство формирует на этом выводе «0», то в разряде данных будет записан «0». 2 Если операндом команды является содержимое регистра TMRO (и, если допустимо, d=l), то предварительный делитель, если он подключен к TMRO, будет сброшен. 3 Если в результате выполнения команды изменяется счетчик ко- манд или выполняется переход по проверке условия, то команда выполняется за два цикла. Второй цикл выполняется как NOP. ИГ 5 I Табл. 5.11. Система команд МК подгруппы PIC16F8X (продолжение). 5.3.2. Команды работы с байтами Команды работы с байтами используются в PIC МК для пересылки дан- ных между регистрами и выполнения математических операций над их содержимым. Несмотря на относительно небольшой набор команд, они позволяют реализовать целый ряд операций. Это связано, в частности, с возможностью указать в команде адрес размещения результата операции. Преимуществом системы команд является также возможность ис- пользования различных способов обращения к регистрам. Адрес регистра Может быть указан непосредственно в команде соответствующим 7-бито- 175
Глава 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, 10RWF f, d и XORWF f, d позволяют выполнять основные логические операции над соответствую- щими битами содержимого указанного регистра и регистра w. Бит нуля в регистре STATUS устанавливается в 1 или сбрасывается в 0 в зависимости от значения полученного результата. Команду XORWF f, d удобно исполь- зовать для проверки содержимого некоторого регистра. Для этого необ- ходимо загрузить заданное число в регистр w и выполнить операцию XORWF f, d над содержимым проверяемого регистра и w. Если содержимое регистра равно содержимому w, то результат операции будет равен нулю, и бит нуля установится в 1. Команда COMF f, d используется для инвертирования значений всех битов в регистре источника. Следует отметить, что эта команда не делает число отрицательным, то есть нс переводит его в дополнительный код. 176
Лекция 10 Специальные функции и система команд микроконтроллеров серии 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 Для удаления части программного кода. Вследствие того, что код команды
Глава 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) 178
Лекция 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. Это позволяет после выполнения данной команды не- медленно перейти к обработке прерываний, ожидающих своей очереди. 179
Глава 5 Однокристальные микроконтроллеры серии PIC В противном случае перед окончанием обработки потребовалась бы про- верка наличия запросов других прерываний, и, в случае их поступления, переход к их обработке. Существует всего две команды, служащие для непосредственного уп- равления функционированием МК. Первая из них — CLRWDT — исполь- зуется для сброса сторожевого таймера. Вторая — SLEEP — обеспечивает сохранение текущего состояния МК в режиме ожидания, пока не произой- дет какое-либо внешнее событие, которое позволит PIC МК продолжить выполнение программы. Команда CLRWDT сбрасывает в 0 содержимое сторожевого таймера WDT и предслителя (если он используется для установки интервала вре- мени срабатывания WDT), запуская сначала отсчет времени сторожевого таймера. Целью введения команды CLRWDT является предотвращение перезапуска МК при нормальном выполнении программы. Команда SLEEP служит для двух целей. Первой из них является от- ключение МК после того, как он закончит выполнение программы. Такое использование МК предполагает, что он необходим только для решения определенной задачи, например, инициализации других устройств в сис- теме, а затем его функционирование не требуется. Второй целью использования команды SLEEP является реализация в МКрежима ожидания какого-либо события. Существует три события, спо- собные вывести МК из режима ожидания. Первым из них является подача сигнала запуска на вход сброса МК, что приведет к перезапуску процес- сора и началу выполнения программы с нулевого адреса. Второй способ - поступление сигнала «пробуждения» МК от сторожевого таймера. Треть- им способом «пробуждения» является прерывание от какого-либо внеш- него источника. При любом способе «пробуждения» использование ко- манды SLEEP позволяет избежать необходимости организации циклов ожидания, а также снизить потребляемую системой мощность. При этом необходимо иметь в виду, что выход МК из режима ожида- ния занимает, по меньшей мере, 1024 такта. Поэтому команду SLEEP нельзя использовать в тех случаях, когда требуется быстрая реакция на внешнее событие. 5.3.5. Особенности программирования и отладки Анализ архитектуры микроконтроллеров Р1С с точки зрения их про- граммирования и отладки систем позволяет сделать следующие выводы. • RISC-система команд обеспечивает высокую скорость выполнения инструкций, но вызывает затруднения и снижение производитель- ности при программировании нетривиальных алгоритмов. Посколь- ку все инструкции в системе команд являются одноадресными, заг- 180
Лекция 10 Специальные функции и система команд микроконтроллеров серии PIC рузка константы в любой из регистров требует двух инструкций. Вна- чале нужно загрузить константу в рабочий регистр w, а затем пере- слать его содержимое в нужную ячейку памяти данных: MOVLW к MOVWF f Аналогично, все бинарные арифметико-логические операции при- ходится выполнять с привлечением рабочего регистра w; • высокое быстродействие достигается в значительной степени за счет применения конвейера команд. Инструкции ветвления, изменяю- щие счетчик команд (безусловный переход, вычисляемый переход), не используют инструкцию из очереди, поэтому выполняются за два машинных цикла и снижают темп выполнения программы. Кроме того, сам анализ условий в архитектуре PIC требует выполнения «лишних» команд; • наличие одного вектора прерываний, отсутствие развитого механиз- ма обработки запросов по приоритетам и вложенных прерываний затрудняют решение сколько-нибудь сложных задач управления. При приходе запроса от любого из источников выполняется переход на процедуру обработки по единственному вектору. В процедуре при- ходится по битам признаков определять источник, причем условия ветвления, как указывалось выше, анализируются сложно, и все это увеличивает время реакции. После обработки прерывания нужно са- мостоятельно очистить бит запроса. Из-за отсутствия вложенных прерываний возможно длительное ожидание обработки запросом от источника с более высоким приоритетом; • аппаратный стек глубиной 8 слов не имеет признака переполнения и ограничивает вложенность процедур. За тем, чтобы он не пере- полнялся, программист должен следить самостоятельно; • память данных состоит из банков, для определения текущего банка использую гея биты регистров STATUS (для PIC 16) или BSR (для PIC17). На этапе трансляции принадлежность указанного регистра текущему активному банку проверить невозможно, для этого требу- ется моделирование хода выполнения программы; • память программ разбита на страницы размером 2К слов. Для пере- хода на нужный адрес по командам CALL и GOTO должны быть пра- вильно установлены биты выбора текущей страницы в регистре PCLATH. На этапе трансляции невозможно проверить корректность передачи управления во время выполнения, для этого также требу- ется моделирование выполнения программы; 181
Глава 5 Однокристальные микроконтроллеры серии PIC • ограниченность ресурсов МК серии PIC делает проблематичным их программирование на языках высокого уровня. Указанные особенности архитектуры микроконтроллеров PIC компен- сируются чрезвычайно низкой ценой, поэтому такие изделия (особенно семейства PIC16) весьма популярны. В настоящее время их используют даже вместо логических ИС средней степени интеграции. Но реализовать все преимущества этих МК можно только при наличии средств програм- мирования и отладки, адекватных по цене и функциональным возможно- стям решаемым задачам. Важнейшие требования к инструментальным средствам для МК, ориентированным на выполнение функций ввода-вы- вода, можно сформулировать следующим образом: • основным назначением этих средств является поддержка програм- мирования на языке ассемблер и перенос программы на плату сис- темы управления; • мощные драйверы портов ввода/вывода, состояние которых одно- значно описывается значениями в регистрах управления, упрощают функцию замещения электрофизических параметров прототипной БИС, поэтому такие порты можно имитировать с помощью БИС программируемой логики; • стоимость инструментальных средств должна соответствовать невы- сокой стоимости одноплатного контроллера. 182
Лекция 12 Разработка программного обеспечения для PIC-микроконтроллеров Глава 6. Проектирование устройств на микроконтроллерах Лекция 11. Особенности разработки цифровых устройств на основе микроконтроллеров В этой лекции рассказывается об основных этапах проектирования и разработки цифровых устройств и систем на основе микроконтролле- ров, а также приводится обзор методов совместной отладки аппарат- ных и программных средств. Ключевые слова: разработка, аппаратные средства, программные сред- ства, отладка. 6.1. Разработка микропроцессорной системы на основе микроконтроллера 6.1.1. Основные этапы разработки МПС на основе МК используются чаще всего в качестве встроенных систем для решения задач управления некоторым объектом. Важной осо- бенностью данного применения является работа в реальном времени, т.е. обеспечение реакции на внешние события в течение определенного вре- менного интервала. Такие устройства получили название контроллеров. Технология проектирования контроллеров на базе МК полностью со- ответствует принципу неразрывного проектирования и отладки аппарат- ных и программных средств, принятому в микропроцессорной технике. Это означает, что перед разработчиком такого рода МПС стоит задача ре- ализации полного цикла проектирования, начиная от разработки алго- ритма функционирования и заканчивая комплексными испытаниями в составе изделия, а, возможно, и сопровождением при производстве. Сло- жившаяся к настоящему времени методология проектирования контрол- леров может быть представлена так, как показано на рис. 6.1. В техническом задании формулируются требования к контроллеру с точки зрения реализации определенной функции управления. Техничес- кое задание включает в себя набор требований, который определяет, что пользователь хочет от контроллера и что разрабатываемый прибор должен 183
Глава 6 Проектирование устройств на микроконтроллерах делать. Техническое задание может иметь вид текстового описания, не сво- бодного в общем случае от внутренних противоречий. Рис. 6.1. Основные этапы разработки контроллера. 184
Лекция 12 Разработка программного обеспечения для PIC-микроконтроллеров На основании требований пользователя составляется функциональная спецификация, которая определяет функции, выполняемые контроллером для пользователя после завершения проектирования, уточняя тем самым, насколько устройство соответствует предъявляемым требованиям. Она включает в себя описания форматов данных, как на входе, так и на выходе, а также внешние условия, управляющие действиями контроллера. Функциональная спецификация и требования пользователя являются критериями оценки функционирования контролера после завершения проектирования. Может потребоваться проведение нескольких итераций, включающих обсуждение требований и функциональной спецификации с потенциальными пользователями контроллера, и соответствующую кор- рекцию требований и спецификации. Требования к типу используемого МК формулируются на данном этапе чаще всего в неявном виде. Этап разработки алгоритма управления является наиболее ответствен- ным, поскольку ошибки данного этапа обычно обнаруживаются только при испытаниях законченного изделия и приводят к необходимости до- рогостоящей переработки всего устройства. Разработка алгоритма обычно сводится к выбору одного из нескольких возможных вариантов алгорит- мов, отличающихся соотношением объема программного обеспечения и аппаратных средств. При этом необходимо исходить из того, что максимальное использо- вание аппаратных средств упрощает разработку и обеспечивает высокое быстродействие контроллера в целом, но сопровождается, как правило, увеличением стоимости и потребляемой мощности. Связано это с тем, что увеличение доли аппаратных средств достигается либо путем выбора более сложного МК, либо путем использования специализированных ин- терфейсных схем. И то, и другое приводит к росту стоимости и энерго- потребления. Увеличение удельного веса программного обеспечения по- зволяет сократить число элементов контроллера и стоимость аппаратных средств, но это приводит к снижению быстродействия, увеличению не- обходимого объема внутренней памяти МК, увеличению сроков разра- ботки и отладки программного обеспечения. Критерием выбора здесь и далее является возможность максимальной реализации заданных функ- ций программными средствами при минимальных аппаратных затратах и при условии обеспечения заданных показателей быстродействия и на- дежности в полном диапазоне условий эксплуатации. Часто определяю- щими требованиями являются возможность зашиты информации (про- граммного кода) контроллера, необходимость обеспечения максимальной продолжительности работы в автономном режиме и Другие. В результате выполнения этого этапа окончательно формулируются требования к параметрам используемого МК. 185
Глава 6 Проектирование устройств на микроконтроллерах При выборе типа МК учитываются следующие основные характерис- тики: • разрядность; • быстродействие; • набор команд и способов адресации; • требования к источнику питания и потребляемая мощность в раз- личных режимах; • объем ПЗУ программ и ОЗУ данных; • возможности расширения памяти программ и данных; • наличие и возможности периферийных устройств, включая средства поддержки работы в реальном времени (таймеры, процессоры со- бытий и т.п.); • возможность перепрограммирования в составе устройства; • наличие и надежность средств защиты внутренней информации; • возможность поставки в различных вариантах конструктивного ис- полнения; • стоимость в различных вариантах исполнения; • наличие полной документации; • наличие и доступность эффективных средств программирования и отладки МК; • количество и доступность каналов поставки, возможность замены изделиями других фирм. Список этот не является исчерпывающим, поскольку специфика про- ектируемого устройства может перенести акцент требований на другие па- раметры МК. Определяющими могут оказаться, например, требования к точности внутреннего компаратора напряжений или наличие большого числа выходных каналов ШИМ. Номенклатура выпускаемых в настоящее время МК исчисляется ты- сячами типов изделий различных фирм. Современная стратегия модульного проектирования обеспечивает потребителя разнообразием моделей МК с одним и тем же процессорным ядром. Такое структурное разнообразие открывает перед разработчиком возможность выбора оптимального МК, не имеющего функциональной избыточности, что минимизирует стоимость комплектующих элементов. Однако для реализации на практике возможности выбора оптималь- ного МК необходима достаточно глубокая проработка алгоритма управ- ления, оценка объема исполняемой программы и числа линий сопряжения с объектом на этапе выбора МК. Допущенные на данном этапе просчеты могут впоследствии привести к необходимости смены модели МК и по- вторной разводки печатной платы макета контроллера. В таких условиях целесообразно выполнять предварительное моделирование основных эле- 186
Лекция 12 Разработка программного обеспечения для PIC-микроконтроллеров ментов прикладной программы с использованием программно-логичес- кой модели выбранного МК. При отсутствии МК, обеспечивающего требуемые по ТЗ характери- стики проектируемого контроллера, необходим возврат к этапу разра- ботки алгоритма управления и пересмотр выбранного соотношения между объемом программного обеспечения и аппаратных средств. От- сутствие подходящего МК чаще всего означает, что для реализации не- обходимого объема вычислений (алгоритмов управления) за отведен- ное время нужна дополнительная аппаратная поддержка. Отрицательный результат поиска МК с требуемыми характеристиками может быть связан также с необходимостью обслуживания большого числа объектов управления. В этом случае возможно использование внешних схем обрамления МК. На этапе разработки структуры контроллера окончательно определя- ется состав имеющихся и подлежащих разработке аппаратных модулей, протоколы обмена между модулями, типы разъемов. Выполняется пред- варительная проработка конструкции контроллера. В части программного обеспечения определяются состав и связи программных модулей, язык программирования. На этом же этапе осуществляется выбор средств про- ектирования и отладки. Возможность перераспределения функций между аппаратными и про- граммными средствами на данном этапе существует, но она ограничена характеристиками уже выбранного МК. При этом необходимо иметь в виду, что современные МК выпускаются, как правило, сериями (семействами) контроллеров, совместимых программно и конструктивно, но различающихся по своим возможностям (объем памяти, набор периферийных устройств и т.д.). Это дает возможность выбора структуры контроллера с целью поиска наиболее оптимального варианта реализации. Нельзя не упомянуть здесь о новой идеологии разработки устройств на базе МК, предложенной фирмой «Scenix». Она основана на использова- нии высокоскоростных RISC-микроконтроллеров серии SX с тактовой ча- стотой до 100 МГц. Эти МК имеют минимальный набор встроенной пе- риферии, а все более сложные периферийные модули эмулируются программными средствами. Такие модули программного обеспечения на- зываются «виртуальными периферийными устройствами», они обеспечи- вают уменьшение числа элементов контроллера, времени разработки, уве- личивают гибкость исполнения. К настоящему времени разработаны целые библиотеки виртуальных устройств, содержащие отлаженные про- граммные модули таких устройств как модули ШИМ и ФАПЧ, последо- вательные интерфейсы, генераторы и измерители частоты, контроллеры прерываний и многие другие. 187
Глава 6 Проектирование устройств на микроконтроллерах 6.1.2. Разработка и отладка аппаратных средств После разработки структуры аппаратных и программных средств даль- нейшая работа над контроллером может быть распараллелена. Разработка аппаратных средств включает в себя разработку общей принципиальной схемы, разводку топологии плат, монтаж макета и его автономную отлад- ку. Время выполнения этих этапов зависит от имеющегося набора апро- бированных функционально-топологических модулей, опыта и квалифи- кации разработчика. На этапе ввода принципиальной схемы и разработки топологии используются, как правило, распространенные системы про- ектирования типа «ACCEL EDA» или «OrCad». Автономная отладка аппаратуры на основе МК с открытой архитекту- рой предполагает контроль состояния многоразрядных магистралей ад- реса и данных с целью проверки правильности обращения к внешним ре- сурсам памяти и периферийным устройствам. Закрытая архитектура МК предполагает реализацию большинства функций разрабатываемого уст- ройства внутренними средствами микроконтроллера. Поэтому разраба- тываемый контроллер будет иметь малое число периферийных ИС, а обмен с ними будет идти преимущественно по последовательным интерфейсам. Здесь на первый план выйдут вопросы согласования по нагрузочной спо- собности параллельных портов МК и отладка алгоритмов обмена по пос- ледовательным каналам. 6.1.3. Разработка и отладка программного обеспечения Содержание этапов разработки программного обеспечения, его транс- ляции и отладки на моделях существенно зависит от используемых сис- темных средств. В настоящее время ресурсы 8-разрядных МК достаточны для поддержки программирования на языках высокого уровня. Это по- зволяет использовать все преимущества структурного программирования, разрабатывать программное обеспечение с использованием раздельно транслируемых модулей. Одновременно продолжают широко использо- ваться языки низкого уровня типа ассемблера, особенно при необходи- мости обеспечения контролируемых интервалов времени. Задачи предва- рительной обработки данных часто требуют использования вычислений с плавающей точкой, трансцендентных функций. В настоящее время самым мощным средством разработки программ- ного обеспечения для МК являются интегрированные среды разработки, имеющие в своем составе менеджер проектов, текстовый редактор и си- мулятор, а также допускающие подключение компиляторов языков высо- кого уровня типа Паскаль или Си. При этом необходимо иметь в виду, что архитектура многих 8-разрядных МК вследствие малого количества ре- сурсов, страничного распределения памяти, неудобной индексной адре- 188
Лекция 12 Разработка программного обеспечения для Р1С-микроконтроллеров сации и некоторых других архитектурных ограничений не обеспечивает компилятору возможности генерировать эффективный код. Для обхода этих ограничений разработчики ряда компиляторов вынуждены были пе- рекладывать на пользователя заботу об оптимизации кода программы. Для проверки и отладки программного обеспечения используются так называемые программные симуляторы, предоставляющие пользователю возможность выполнять разработанную программу на программно-ло- гической модели МК. Программные симуляторы распространяются, как правило, бесплатно и сконфигурированы сразу на несколько МК одного семейства. Выбор конкретного типа МК среди моделей семейства обес- печивает соответствующая опция меню конфигурации симулятора. При этом моделируется работа ЦП, всех портов ввода/вывода, прерываний и другой периферии. Карта памяти моделируемого МК загружается в симулятор автоматически, отладка ведется в символьных обозначениях регистров. Загрузив программу в симулятор, пользователь имеет возможность за- пускать ее в пошаговом или непрерывном режимах, задавать условные или безусловные точки останова, контролировать и свободно модифициро- вать содержимое ячеек памяти и регистров симулируемого МК. 6.1.4. Методы и средства совместной отладки аппаратных и программных средств Этап совместной отладки аппаратных и программных средств в реаль- ном масштабе времени является самым трудоемким и требует использо- вания инструментальных средств отладки. К числу основных инструмен- тальных средств отладки относятся: • внутрисхемные эмуляторы; • платы развития (оценочные платы); • мониторы отладки; • эмуляторы ПЗУ. Внутрисхемный эмулятор — программно-аппаратное средство, способ- ное заменить эмулируемый МК в реальной схеме. Стыковка внутрисхем- ного эмулятора с отлаживаемой системой производится при помощи ка- беля со специальной эмуляционной головкой, которая вставляется вместо МК в отлаживаемую систему. Если МК нельзя удалить из отлаживаемой системы, то использование эмулятора возможно, только если этот мик- роконтроллер имеет отладочный режим, при котором все его выводы на- ходятся в третьем состоянии. В этом случае для подключения эмулятора используют специальный адаптер-клипсу, который подключается непос- редственно к выводам эмулируемого МК. Внутрисхемный эмулятор — это наиболее мощное и универсальное от- 189
Глава 6 Проектирование устройств на микроконтроллерах ладочное средство, которое делает процесс функционирования отлажи- ваемого контроллера прозрачным, т.е. легко контролируемым, произвольно управляемым и модифицируемым. Платы развития, или, как принято их называть в зарубежной литера- туре, оценочные платы (Evaluation Boards), являются своего рода конст- рукторами для макетирования электронных устройств. Обычно это печат- ная плата с установленным на ней МК и всей необходимой ему стандартной периферией. На этой плате также устанавливают схемы связи с внешним компьютером. Как правило, там же имеется свободное поле для монтажа прикладных схем пользователя. Иногда предусмотрена уже готовая разводка для установки дополнительных устройств, рекомендуемых фирмой. Например, ПЗУ, ОЗУ, ЖКИ-дисплей, клавиатура, АЦП и др. Кроме учебных или макетных целей, такие доработанные пользователем платы можно использовать в качестве одноплатных контроллеров, встраиваемых в малосерийную продукцию. Для большего удобства платы развития комплектуются еще и простей- шим средством отладки на базе монитора отладки. Используются два типа мониторов отладки: один для МК, имеющих внешнюю шину, а второй - для МК, не имеющих внешней шины. В первом случае отладочный монитор поставляется в виде микросхемы ПЗУ, которая вставляется в специальную розетку на плате развития. Плата также имеет ОЗУ для программ пользователя и канал связи с внешним компьютером или терминалом. Во втором случае плата развития имеет встроенные схемы программирования внутреннего ПЗУ МК, которые уп- равляются от внешнего компьютера. При этом программа монитора про- сто заносится в ПЗУ МК совместно с прикладными кодами пользователя. Прикладная программа должна быть специально подготовлена: в нужные места необходимо вставить вызовы отладочных подпрограмм монитора. Затем осуществляется пробный прогон. Чтобы внести в программу исправ- ления, пользователю надо стереть ПЗУ и произвести повторную запись. Готовую прикладную программу получают из отлаженной путем удале- ния всех вызовов мониторных функций и самого монитора отладки. Возможности отладки, предоставляемые комплектом «плата развития плюс монитор», не столь универсальны, как возможности внутрисхемного эмулятора, да и некоторая часть ресурсов МК в процессе отладки отбирает- ся для работы монитора. Тем не менее, наличие набора готовых программ - но-аппаратных средств, позволяющих без потери времени приступить к монтажу и отладке проектируемой системы, во многих случаях является ре- шающим фактором. Особенно если учесть, что стоимость такого комплекта несколько меньше, чем стоимость более универсального эмулятора. Эмулятор ПЗУ - программно-аппаратное средство, позволяющее за- 190
Лекция 12 Разработка программного обеспечения для PIC-микроконтроллеров мешать ПЗУ на отлаживаемой плате, и подставляющее вместо него ОЗУ, в которое может быть загружена программа с компьютера через один из стандартных каналов связи. Это устройство позволяет пользователю избежать многократных циклов перепрограммирования ПЗУ. Эмулятор ПЗУ нужен только для МК, которые могут обращаться к внешней памяти программ. Это устройство сравнимо по сложности и по стоимости с платами развития и имеет одно большое достоинство: универсальность. Эмулятор ПЗУ может работать с любыми типами МК. Эмулируемая память доступна для просмотра и модификации, но кон- троль над внутренними управляющими регистрами МК был до недавнего времени невозможен. В последнее время появились модели интеллектуальных эмуляторов ПЗУ, которые позволяют «заглядывать» внутрь МК на плате пользователя. Интеллектуальные эмуляторы представляют собой гибрид из обычного эмулятора ПЗУ, монитора отладки и схем быстрого переключения шины с одного на другой. Это создает эффект, как если бы монитор отладки был установлен на плате пользователя и при этом он не занимает у МК ника- ких аппаратных ресурсов, кроме небольшой зоны программных шагов, примерно 4К. Этап совместной отладки аппаратных и программных средств в реаль- ном масштабе времени завершается, когда аппаратура и программное обес- печение совместно обеспечивают выполнение всех шагов алгоритма рабо- ты системы. В конце этапа отлаженная программа заносится с помощью программатора в энергонезависимую память МК, и проверяется работа кон- троллера без эмулятора. При этом используются лабораторные источники питания. Часть внешних источников сигналов может моделироваться. Этап интеграции разработанного контроллера в изделие заключается в повторении работ по совместной отладке аппаратуры и управляющей программы, но при работе в составе изделия, питании от штатного источника и с информацией от штатных источников сигналов и датчиков. Состав и объем испытаний разработанного и изготовленного контрол- лера зависит от условий его эксплуатации и определяется соответствую- щими нормативными документами. Проведение испытаний таких функ- ционально сложных изделий, как современные контроллеры, может потребовать разработки специализированных средств контроля состоя- ния изделия во время испытаний. 191
Глава 6 Проектирование устройств на микроконтроллерах Лекция 12. Разработка программного обеспечения для PIC-микроконтроллеров В этой лекции рассматриваются основные этапы разработки программ- ного обеспечения микроконтроллеров, а также приводится обзор ос- новных программ для разработки и отладки программного обеспечения PIC-микроконтроллеров. Ключевые слова: разработка, программное обеспечение, ассемблер, си- мулятор. 6.2. Разработка программного обеспечения для PIC-микроконтроллеров Разработка программного обеспечения является центральным момен- том общего процесса проектирования. Центр тяжести функциональных свойств современных цифровых систем находится именно в программ- ных средствах. Основным инструментом для профессиональной разработки про- грамм является ассемблер, предполагающий детализацию на уровне ко- манд МК. Только ассемблер позволяет максимально использовать ре- сурсы кристалла. Для микроконтроллеров PIC выпущено большое количество различ- ных средств разработки. В данной главе речь пойдет о средствах, предос- тавляемых фирмой Microchip, которые весьма эффективны и широко ис- пользуются на практике. 6.2.1. Ассемблер MPASM Ассемблер MPASM представляет собой интегрированную программ- ную среду для разработки программных кодов PIC микроконтроллеров всех семейств. Выпускается фирмой Microchip в двух вариантах: для работы под DOS и для работы под Windows 95/98/NT. Ассемблер MPASM может использоваться как самостоятельно, так и в составе интегрированной среды разработки MPLAB. Он включает несколько программ: собственно MPASM, MPLINK и MPLIB, причем каждая из них обладает собствен- ным интерфейсом. Программа MPASM может использоваться для двух целей: • генерации исполняемого (абсолютного) кода, предназначенного для записи в МК с помощью программатора; 192
Лекция 12 Разработка программного обеспечения для PIC-микроконтроллеров • генерации перемещаемого объектного кода, который затем будет свя- зан с другими ассемблированными или компилированными моду- лями. Исполняемый код является для 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 выход непосредственно из ассемблера: Т*. '"Il '.W -ли. Табл. 6.1. Режимы работы ассемблера по умолчанию. 193
Глава 6 Проектирование устройств на микроконтроллерах Выбор Значение по умолчанию Описание с On Выбрать/запретить случай чувствитель- ности е On Выбрать/запретить файл ошибок h N/A Отобразить панель помощи MPASM 1 On Выбрать/запретить файл листинга, генерированный из макроассемблера. m 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> или допол- нительного выбора; | - для взаимоисключающих аргументов (выбор ИЛИ); строчные символы — для обозначения типа данных. 194
Лекция 12 Разработка программного обеспечения для PIC-микроконтроллеров Выбор по умолчанию, приведенный в табл. 6.1, может быть изменен командной строкой: /<option> разрешает выбор; /<option>+ разрешает выбор; /<option> — запрещает выбор. Исходный ассемблерный файл создается с использованием любого ASCII текстового редактора. Каждая линия исходного файла может со- держать до четырех типов информации: • метки (labels) • мнемоника (mnemonics) • операнды (operands) • комментарий (comments) Порядок и положение каждого типа имеет значение. Метка должна начинаться в колонке номер один. Мнемоника может начинаться в ко- лонке два или далее. Операнды идут за мнемоникой. Комментарий мо- жет следовать за операндом, мнемоникой или меткой или может начи- наться в любом столбце, если в качестве первого не пустого символа используется * или ;. Максимальная длина строки 255 символов. Один или несколько пробелов должны отделять метку и мнемонику или мнемонику и операнд(ы). Операнды могут отделяться запятой. Например: List р=16С54, г-НЕХ ORG 0x1 FF ;Вектор сброса GOTO START ; Возврат на начало ORG 0x000 ;Адрес начала исполнения программы START MOVLW 0х0А выполнение программы PIC МК MOVLW ОхОВ ; GOTO START ;Выполнять всегда END Метки В поле метки размещается символическое имя ячейки памяти, в кото- рой хранится отмеченный операнд. Все метки должны начинаться в ко- лонке 1. За ними может следовать двоеточие (:), пробел, табуляция или конец строки. Комментарий может также начинаться в колонке 1, если Используется одно из обозначений комментария. Метка может начинаться с символа или нижнего тире (_) и содержать буквенные символы, числа, нижние тире и знак вопроса. Длина метки мо- жет быть до 32 символов. 195
Глава 6 Проектирование устройств на микроконтроллерах Мнемоники Мнемоники представляют собой мнемонические обозначения коман- ды, которые непосредственно транслируются в машинный код. Мнемо- ники ассемблерных инструкций, директивы ассемблера и макровызовы должны начинаться, по крайней мере, в колонке 2. Если есть метка на той же линии, она должна быть отделена от этой метки двоеточием или одним или более пробелами или табуляцией. Операнды В этом поле определяются операнды (или операнд), участвующие в опера- ции. Операнды должны быть отделены от мнемоники одним или более пробе- лами или табуляцией. Операнды отделяются друг от друга запятыми. Если опе- рация требует фиксированного гюмера (числа) или операндов, то все i ia линии после операндов игнорируется. Комментарии разрешаются в конце линии. Если мнемоники позволяют использовать различное число операндов, конец списка операндов определяется концом строки или комментарием. Выражения используются в поле операнда и могут содержать константы, символы или любые комбинации констант и символов, разделенных арифме- тическими операторами. Перед каждой константой или символом может сто- ять + или — , что указывает на положительное или отрицательное выражение. В ассемблере MPASM используются следующие форматы выражений: • текстовая строка; • числовые константы и Radix; • арифметические операторы и приоритеты; • High / Low операторы. Текстовая строка — это последовательность любых допустимых ASCII символов (в десятичном диапазоне от 0 до 127), заключенная в двойные кавычки. Строка может иметь любую длину в пределах 132 колонок. При отсутствии ограничения строки она считается до конца линии. Если строка используется как буквенный операнд, она должна иметь длину в один символ, иначе будет ошибка. Числовая константа представляет собой число, выраженное в некоторой системе счисления. Перед константой может стоять + или —. Промежуточные величины в константах рассматриваются как 32-разрядные целые без знака. MPASM поддерживает следующие системы счисления (представления значений или Radix): шестнадцатиричную, десятичную, восьмиричную, двоичную и символьную. По умолчанию принимается шестнадцатирич- ная система. Табл. 6.2 представляет различные системы счисления. Операторы — это арифметические символы, подобные + и —, которые используются при формирова! ши выражений. Каждый оператор имеет свой 196
Лекция 12 Разработка программного обеспечения для PIC-микроконтроллеров приоритет. В общем случае приоритет устанавливается слева направо, а выражения в скобках оцениваются первыми. В табл. 6.3 приведены обозна- чения, описания и примеры применения основных операторов MPASM. Тип Синтаксис Пример Десятичная О'<цифры>' или ,<цифры> D'100’ или .100 16-ричная Н'<цифры>’ или Ох<цифры> H'9f или 0x9f Восьмиричная О'<цифры>' 0'777' Двоичная В'<цифры>' В'00111001' Символьная '<символ>' или А'<символ>' "С" или АС Г ihiit-W 11 "'. ------4------ Табл. 6.2. Системы счисления (Radix). Оператор Описание Пример $ Текущий счетчик команд goto $ + 3 ( левая скобка 1+(d*4) ) правая скобка (lenght + 1 ) * 255 ! операция «НЕ» (логическая инверсия) if! ( а - b ) — дополнение flags = ~ flags L - инверсия (двоичное дополнение) - 1 * lenght High выделить старший байт слова movlw high Hasid Low выделить младший байт слова movlw low (Hasid + .251) 1 upper .251) выделить наибольший байт movlw upper (Hasid + слова * Умножение a = c * b Табл. 6.3. Основные арифметические операторы MPASM. 197
Глава 6 Проектирование устройств на микроконтроллерах Оператор Описание Пример | / Деление а = b /с % Модуль 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 л errbit поразрядное «ИЛИ» flags = flags | err bit && логическое «И» if (len == 512)&&( b == c) j II логическое «ИЛИ» if (len == 512 ) || (b == c ) = установить равным... entryindex = 0 ++ увеличить на 1 (инкремент) i++ — уменьшить на 1 (декремент) i — > Табл. 6.3. Основные арифметические операторы MPASM (продолжение). Операторы high, low и upper используются для получения одного байта из многобайтного значения, соответствующего метке. Применяются для 198
Лекция 12 Разработка программного обеспечения для PIC-микроконтроллеров управления расчетом точек динамического перехода при чтении таблиц и записи программ. Операторы инкремента и декремента могут применяться к перемен- ной только в качестве единственного оператора в строке. Они не могут быть встроенным фрагментом более сложного выражения. Комментарии Поле комментария может использоваться программистом для тексто- вого или символьного пояснения логической организации программы. Поле комментария полностью игнорируется ассемблером, поэтому в нем можно применять любые символы. Комментарии, которые используются в строке сами по себе, должны начинаться с символа комментария (* или ;). Комментарии в конце строки должны быть отделены от остатка строки одним или более пробелами или табуляцией. Расширения файлов, используемые MPASM и утилитами Существует ряд расширений файлов, применяемых по умолчанию MPASM и связанными утилитами. Назначения таких расширений при- ведены в табл. 6.4. Расширение Назначение .ASM Входной файл ассемблера для MPASM <source_name>. AS M .OBJ Выходной файл перемещаемого объектного кода из MPASM <source_name>.OBJ ,LST Выходной файл листинга, генерируемый ассемблером MPASM или MPLINK: <source_name>. LST .ERR Выходной файл ошибок из MPASM: <source_name> .ERR .MAP Выходной файл распределения памяти из MPASM: <source_name>.MAP .HEX Выходной файл объектного кода в шестнадца- тиричном представлении из MPASM: < sourcename). Н EX Табл. 6.4. Используемые по умолчанию назначения расширений файлов. 199
Глава 6 Проектирование устройств на микроконтроллерах Расширение Назначение .HXL/.HXH Выходной файл объектного кода в шестнадца- тиричном представлении с раздельным пред- ставлением младших и старших байт: <source_name> .HXL, <source name> .НХН .LIB Библиотечный файл, созданный MPLIB и привязанный компоновщиком MPLINK:<source_name>.LIB .LNK Выходной файл компоновщика: < source nameXLNK .COD Выходной символьный файл или файл отлад- чика. Формируются MPASM или MPL1NK: <source_narneXCOD Табл. 6.4. Используемые по умолчанию назначения расширений файлов (продолжение). Листинг представляет собой текстовый файл в формате ASCII, кото- рый содержит машинные коды, сгенерированные в соответствии с каж- дой ассемблерной командой, директивой ассемблера или макрокомандой исходного файла. Файл листинга содержит: имя продукта и версии, дату и время, номер страницы вверху каждой страницы. В состав листинга входят также таблица символов и карта использова- ния памяти. В таблице символов перечисляются все символы, которые есть в программе, и где они определены. Карта использования памяти дает гра- фическое представление о расходовании памяти МК. Директивы языка Директивы языка — это ассемблерные команды, которые встречаются в исходном коде, но не транслируются прямо в исполняемые коды. Они используются ассемблером при трактовке мнемоники входного файла, раз- мещении данных и формировании файла листинга. Существует четыре основных типа директив в MPASM: • директивы данных; • директивы листинга; • управляющие директивы; • макро-директивы. 200
Лекция 12 Разработка программного обеспечения для PIC-микроконтроллеров Директивы данных управляют распределением памяти и обеспечива- ют доступ к символическим обозначениям данных. Директивы листинга управляют листингом файла MPASM и форма- том. Они определяют спецификацию заголовков, генерацию страниц и другие функции управления листингом. Директивы управления позволяют произвести секционирова! те обыч- ного ассемблерного кода. Макро-директивы управляют исполнением и распределением данных в пределах определений макротела. Ниже приводится описание некоторых директив ассемблера MPASM, используемых в данном учебном пособии. CODE — начало секции объектного кода Синтаксис: [<label>] code [ROM address>] Используется при генерации объектных модулей. Объявляет начало секции программного кода. Если <label> не указана, секция будет названа .code Стартовый адрес устанавливается равным указанному значению или нулю, если адрес не был указан. Пример: RESET code H'OIFF' goto START #DEFINE — определить метку замены текста Синтаксис: #define <name> [<string>] Директива задает строку <string>, замещающую метку <name> всякий раз, когда та будет встречаться в исходном тексте. Символы, которые определены директивой #DEFINE, не могут быть Просмотрены симулятором. Используйте вместо этой директивы EQU. Пример: I #define length 20 #define control 0x19,7 #define position (X,YZ) (y-(2 * Z +X)). 201
Глава 6 Проектирование устройств на микроконтроллерах 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 <<rncludefile>> include "<include_file>" Определяемый файл считывается как источник кода. По окончании включаемого файла будет продолжаться ассемблирование исходника. До- пускается до шести уровней вложенности. <include_file> может быть зак- лючен в кавычки или угловые скобки. Если указан полный путь к файлу- то поиск будет происходить только по этому пути. В противном случае порядок поиска следующий: текущий рабочий каталог, каталог, в которой находится исходник, каталог MPASM. 202
Лекция 12 Разработка программного обеспечения для PIC-микроконтроллеров Пример: include "c:\sys\sysdefs.inc" ; system defs include <addmain.asm> ; register defs LIST — установить параметры листинга Синтаксис: list [<list_option>, , <list option>] Директива <list> разрешает вывод листинга, если он до этого был зап- рещен. Кроме того, один из параметров листинга может быть изменен для управления процессом ассемблирования в соответствии с табл. 6.5. Параметр Значение по умолчанию Описание С=ппп 80 Количество символов в строке п=ппп 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. 203
Глава 6 Проектирование устройств на микроконтроллерах 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Х 116СХХ117СХХ] Для поддержания совместимости с новыми изделиями выбирается мак- симум доступной памяти. SET — определить ассемблерную переменную Синтаксис: <label> set <ехрг> Директива SET функционально эквивалентна директиве EQU, за ис- ключением того, что величина, определяемая SET, может быть изменена директивой SET. 204
Лекция 12 Разработка программного обеспечения для Р1С-микроконгроллеров Пример: 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, кото- рый может быть записан в память МК; • отслеживает конфликты адресов, т.е. гарантирует, что программа или дан- ные не будут размещаться в пространстве адресов, которое уже занято; • предоставляет символьную информацию для отладки. 205
Глава 6 Проектирование устройств на микроконтроллерах Для более подробного изучения работы компоновщика следует обра- титься к специальной литературе. 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. Этот текстовой файл создается пользователем и используется для задания всех задействованных в программе параметров. 206
Лекция12 Разработка программного обеспечения для Р1С-микроконтроллеров 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,В,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. Виа рабочего окна симулятора MPS1M. Один из примеров файла MPSIM.INI приведен ниже. ; MPSIM file for user4 P84 SRX ZR ZT RE использование МК семейства PIC16C84 представление данных в 16-ричном формате ;сброс регистров МК в нуль ;сброс таймера в нуль ;сброс времени выполнения команды и счетчика циклов VW,X,2 AD F1,X,2 ;вывод регистра W в hex формате на два знакоместа ;вывод на экран регистра TMR0 в hex формате на два знакоместа AD F2,X,3 ; вывод на экран регистра PCL в hex формате на три знакоместа 207
Глава 6 Проектирование устройств на микроконтроллерах 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[, Radixf, Digits]] Вывод содержимого регистра на экран в указанном форма- те и заданной системе счисле- ния X, В или D В [addr] Установка точки останова по текущему или указанному адресу Табл. 6.6. Основные команды симулятора MPSIM. 208
Лекция 12 Разработка программного обеспечения для PIC-микроконтроллеров Команда Параметр Комментарии С [#break] Продолжение выполнения программы с пропуском указанного L количества следующих точек останова 1 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 i Вывод на экран содержимого памяти , программ, начиная с адреса «addr» и возможность его редактирования. Ввод «Q» завершает команду. Табл. 6.6. Основные команды симулятора MPSIM (продолжение) 209
Глава 6 Проектирование устройств на микроконтроллерах Команда Параметр Комментарии Р 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 — Сброс таймера/счетчика МК F «-----'—----------Ега~~^ЧаИИИ Табл. 6.6. Основные команды симулятора MPSIM (продолжение). Для моделирования внешних тестовых событий (воздействий) на моде- лируемый МК используются файлы стимуляции с расширением .STL Эти файлы используются MPS1M для того, чтобы обеспечить подачу однократ- ных и повторяющихся входных сигналов в процессе выполнения програм- мы. При этом можно наблюдать на экране, как МК реагирует на сигналы. В качестве примера ниже приведен файл для тестирования програм- мы, выполняющей опрос состояния линии 1 порта А. 210
Лекция 12 Разработка программного обеспечения для PIC-микроконтроллеров ! testl.STI aieaa STEP RA1 1 1 Остановка на входе RA1 состояния "1" 200 0 Поступление на вход RA1 сигнала "0" 10ОО 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 порта В обслуживают семисегментный индикатор HI 1 с общим анодом. Поэтому свечение сегмента индикатора обеспечи- вается при низком уровне сигнала на соответствующем выходе порта В. Макет также содержит средства программирования и связи с компьюте- ром, которые на схеме не показаны. 211
Глава 6 Проектирование устройств на микроконтроллерах Рис. 6.3. Схема лабораторного макета. 6.3.2. Инициализация микроконтроллера макета Прежде чем переходить к созданию простейших пользовательских про- грамм, необходимо описать используемые в дальнейшем переменные и настроить МК на работу с выбранным макетом. С этой целью мы напи- шем и подробно рассмотрим листинг исходной программы init.asm, в со- став которой будут включаться все остальные программы пользователя. .****************************************************** ;*листинг исходной программы • it***************************************************** LIST Р=16С84, R=HEX директива, определяющая тип [процессора и систему счисления ;по умолчанию ****************************************************** *описание используемых переменных и назначения адресов *ячеек для хранения переменных пользователя ****************************************************** INTCON EQU OxOB OPTION EQU 0x81 TMRO EQU 0x01 212
Лекция 12 Разработка программного обеспечения для Р1С-микроконтроллеров INTF EQU 1 T0IF 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 ТЕМ PA EQU OxOC TEMPB EQU OxOD COUNT1 EQU OxOE COUNT2 EQU OxOF COUNTS EQU 0x10 ****************************************************** ^определение меток замены текста ****************************************************** #DEFINE Z STATUS, 2 ;бит нулевого результата #DEFINE BA1 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 HL1A PORTB, 1 ;индикатор-сегмент А #DEFINE HL1B PORTB,2 ;индикатор-сегмент В #DEFINE HL1C PORTB,3 ;индикатор-сегмент С #DEFINE HL1D PORTB,4 ;индикатор-сегмент D #DEFINE HL1E PORTB,5 ;индикатор-сегмент Е #DEFINE HL1F PORTB,6 ;индикатор-сегмент F #DEFINE HL1G PORTB,7 ;индикатор-сегмент G ****************************************************** Исполняемая программа ****************************************************** ORG 0x000 установка начального адреса по ;сбросу GOTO BEGIN ;переход на начало программы ORG 0x005 установка начального адреса размещения программы 213
Глава 6 Проектирование устройств на микроконтроллерах BEGIN CALL INITPORTS ; вызов подпрограммы инициализации портов МК *программа пользователя INITPORTS подпрограмма инициализации ; портов MOVLW OxFF установка линий портов MOVWF PORTA ;A и В в единичное MOVWF PORTB состояние BSF STATUS,RPO ;переход на банк 1 MOVLW 0x1 C ;настройка линий RA0 и MOVWF TRISA ;RA1 порта А на вывод - остальных - на ввод MOVLW 0x01 ;настройка линии RB0 MOVWF TRISB ;порта В на ввод - остальных - на вывод BCF RETURN STATUS, RPO ; возврат в банк 0 ;возврат из подпрограммы END ;конец программы Рассмотрим работу этой программы. Вначале она указывает ассембле- ру тип используемого МК и систему счисления по умолчанию. Идущие далее ассемблерные директивы EQU определяют ассемблерные констан- ты, используемые в этой и последующих программах. Они позволяют ис- пользовать в тексте программы более удобные мнемонические метки, при- вязанные к структуре конкретного МК, вместо корректных, но более сложных ассемблерных выражений. Указатели ТЕМРА, ТЕМРВ, COUNT1 и COUNT2 назначают адреса ячеек памяти для хранения промежуточных данных (текущих состояний, переменных циклов и т.п.). Ассемблерные директивы #DEFINE задают строку, замещающую со- ответствующую метку, каждый раз, когда та будет встречаться в исходном тексте. В нашем случае эти директивы позволяют использовать символи- ческие имена, привязанные к схеме макета, вместо физических адресов соответствующих разрядов портов и регистров. При этом необходимо иметь в виду, что символы, которые определены директивой #DEFINE, не могут быть просмотрены симулятором. Поэтому для просмотра 214
Лекция 12 Разработка программного обеспечения для PIC-микроконтроллеров необходимо использовать физические адреса портов и регистров. Директива 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) соответствует светящееся состояние светодиода, и наоборот. 215
Глава 6 Проектирование устройств на микроконтроллерах ;основная программа LOOP CLRWDT ;сброс сторожевого таймера CALL CALL GOTO GET RA ;вызов подпрограммы GET RA SB1 VD2 ;вызов подпрограммы SB1VD2 LOOP ; переход к метке LOOP для повторения процесса GET RA подпрограмма чтения состояния порта А MOVF MOVWF RETURN PORTA,W ;чтение состояния порта А в W ТЕМРА ;пересылка WbTEMPA ; возврат из подпрограммы 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 исключает влия- ние возможного сброса по переполнению сторожевого таймера на работу программы. Две следующие команды осуществляют вызов подпрограмм GET_RA и SB1VD2. Первая из них (GETRA) вначале считывает теку- щее состояние порта А, которое помещается в рабочий регистр W. По- скольку рабочий регистр может потребоваться при исполнении других команд, его состояние записывается в регистр ТЕМ РА, используемый 216
Лекция 12 Разработка программного обеспечения для Р1С-микроконтроллеров здесь для временного хранения состояния порта А. Таким образом, после возврата из подпрограммы GET RA в разряде 4 регистра ТЕМРА содержится информация о состоянии кнопки SB 1: «1» — не нажата, «О» — нажата. Подпрограмма SB1VD2 анализирует состояние разряда 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 GET RA GETRB ZAG 1110 ;сброс сторожевого таймера ;вызов подпрограммы GET RA ;вызов подпрограммы GET RB ;вызов подпрограммы ZAGJ110 GOTO LOOP ;переход к метке LOOP для повторения процесса GET RB MOVF MOVWF RETURN PORTBW ТЕМРВ подпрограмма чтения состояния порта В ;чтение состояния порта В в W ;пересылка W в ТЕМРВ ZAG 1110 ;зажигает светодиод VD2 только при следующем состоянии тумблеров и ;кнопок макета: 217
Глава 6 Проектирование устройств на микроконтроллерах ;SA1 = SA2 = SB1 = 1 и SB2 = О BTFSS ТЕМ РА,2 пропустить команду, если GOTO P0 ;TEMPA,2=1 BTFSS ТЕМРА,3 пропустить команду, если GOTO P0 ;ТЕМРА,3=1 BTFSS ТЕМРА,4 пропустить команду, если GOTO P0 ;ТЕМРА,4=1 BTFSC TEMPB.O пропустить команду, если GOTO P0 ;ТЕМРВ,0=0 BSF VD2 ;зажечь светодиод VD2 GOTO P1 Р0 BCF VD2 ; погасить светодиод VD2 Р1 RETURN > INCLUDE GET RA.ASM Подпрограммы GETRA и GETRB помещают в регистры ТЕМРА и ТЕМРВ текущие состояния портов А и В, соответственно. Подпрограмма ZAG1110 анализирует состояния разрядов 2,3 и 4 регистра ТЕМРА и раз- ряда 0 регистра ТЕМ РВ, и при условии ТЕМРА,2,3,4= 1,1,1 и ТЕМРВ,0 = 0, зажигает светодиод VD2. При невыполнении хотя бы одного из этих условий светодиод гасится. Использование директивы INCLUDE GET PORTA.ASM позволяет включать уже отлаженные модули подпрограмм в текущую программу. Для того чтобы этой возможностью можно было воспользоваться, необходимо сохранять отлаженные модули в виде отдельных ассемблерных файлов. Попробуем теперь использовать семисегментный индикатор для кон- троля состояния тумблеров макета. Вначале напишем программу, которая выводит на индикатор HL семисегментное изображение любого двоич- ного числа от 0Ь до 1111b в шестнадцатиричном представлении. .основная программа LOOP CLRWDT MOVLWOxOA CALL SEVSEG SEVEN_SEG MOVWF PORTB ;сброс сторожевого таймера ;пересылка константы 0А в W ;вызов подпрограммы ;пересылка W в PORTB 218
Лекция 12 Разработка программного обеспечения для PIC-микроконтроллеров GOTO LOOP ;переход к метке LOOP для повторения процесса SEV SEG подпрограмма обслуживания ;семисегментного индикатора ANDLWOxOF ;маскирование 4-х младших разрядов ;W и обнуление 4-х старших ADDWFPCL.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 OxOC ;возврат из подпрограммы с ОС в W RETLW 0x1C ;возврат из подпрограммы с 1С в W Программа начинает свою работу с пересылки константы ОхОА в рабо- чий регистр W. Затем производится вызов подпрограммы обслуживания семисегментного индикатора SEV_SEG. Работа подпрограммы SEVSEG начинается с маскирования 4-х младших разрядов W и обнуления 4-х стар- ших. Тем самым из анализа исключаются старшие разряды передаваемого из рабочего регистра W числа. Затем маскированное содержимое регистра W добавляется к текущему состоянию младшего байта счетчика команд PCL, и результат помещается в PCL. Таким образом, производится до- полнительное смешение счетчика команд на величину, которая была пе- редана в рабочем регистре. Например, если было W=0, то содержимое счет- чика кома! 1д не изменится, и будет выполнена следующая команда RETLW 0x80, которая вызовет возврат из подпрограммы с записью 0x80 = ВТ000000' в регистр W. Если, как было в приведенной программе, W=0A, то к содер- жимому PCL будет добавлено число ОхОА, и произойдет дополнительное 219
Глава 6 Проектирование устройств на микроконтроллерах смещен ие на 10 шагов. В результате будет выполнена команда RETLW Ох 10, которая вызовет возврат из подпрограммы с записью 0x10 = В'ОООЮОО' в регистр W. После возврата из подпрограммы производится пересылка W в PORTB и отображение его состояния на семисегментном индикаторе HL. В част- ности, если W = 0, то при выводе 1000000b на порт В семисегментный индикатор покажет а при W = А покажет /у.Таким образом, может быть отображено любое 4-разрядное двоичное число. Метод прямого управления счетчиком команд, использованный в под- программе SEVSEG, может применяться для реализации табличной кон- вертации чисел. При этом необходимо иметь в виду, что данный метод не позволяет конвертировать более 256 значений в одной таблице. Кроме того, программа табличной конвертации должна целиком располагаться внутри 256-байтного блока во избежание переполнения младшего байта счетчика команд. Используя подпрограмму SEV SEG, напишем теперь программу, ко- торая читает состояния тумблеров SA1 и SA2 и выводит на индикатор со- ответствующее число. ;основная программа LOOP CLRWDT CALL GET RA ;сброс сторожевого таймера ;вызов подпрограммы GET RA RRF ТЕМРА, F ;сдвиг вправо на один разряд RRF ТЕМРА,W ;через перенос ;сдвиг вправо на один разряд ANDLW0x03 CALL SEVSEG ; через перенос ;маска на два младших разряда ;вызов подпрограммы SEVEN_SEG MOVWF PORTB ;пересылка W в PORTB GOTO LOOP ; переход к метке LOOP для INCLUDE INCLUDE GET RA.ASM SEV SEG.ASM повторения процесса Подпрограмма GET RA помещает в регистр ТЕМРА текущее состо- яние порта А. Таким образом, в разрядах 2 и 3 регистра ТЕМРА хранит- ся текущее состояние тумблеров SA1 и SA2. Для того чтобы биты со- стояния тумблеров заняли позиции 0 и 1 регистра ТЕМРА, производится 220
Лекция 12 Разработка программного обеспечения для Р1С-микроконтроллеров два сдвига вправо через перенос, причем результат второго сдвига по- мещается в регистр W. Затем накладывается маска на два младших раз- ряда рабочего регистра и производится вызов подпрограммы SEVSEG После выхода из подпрограммы результат подается на порт В и отобра- жается на индикаторе. Рассмотрим теперь программы, работающие в реальном масштабе времени, т.е. выдающие сигналы определенной длительности и частоты следования, либо учитывающие временные параметры входных сигналов. Основным элементом таких программ является подпрограмма формирования временной задержки. Рассмотрим один из возможных вариантов такой подпрограммы с использованием программных методов формирования задержки, т.е. без применения встроенного таймера. ;основная программа MOVLWOxL CALL DELAY DELAY MOVWF LOOPD DECFSZ GOTO RETURN COUNT1 COUNT1.F LOOPD ;пересылка константы H'L' в W ;вызов подпрограммы DELAY подпрограмма формирования ;задержки времени ;загрузка W в регистр COUNT 1 ;декремент COUNT 1 повторение цикла 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 цикла, необходимых для загрузки константы в рабочий 221
Глава 6 Проектирование устройств на микроконтроллерах регистр, вызова подпрограммы и загрузки регистра пользователя COUNT1, то общее время исполнения подпрограммы DELAY (задержка) составит TD = 4 + 3*(L - 1) + 4 = 5 + 3*L циклов, где L - константа, переданная через рабочий регистр в подпрограмм, DELAY. При тактовой частоте fosc = 2МГц время цикла равно t = 2 мкс, поэто- му при загрузке L = Н’ОО' = .0 максимальный формируемый интервал вре- мени составит 1,55 мс. Такой результат связан с тем, что команда DECFS7 сначала декрементирует содержимое регистра (Н'00' — 1 = H'FF), а затем уже анализирует результат. Минимальный формируемый интервал времени составит при тех же условиях 5 циклов или 10 мкс. Для получения такого интервала необходи- мо перед вызовом подпрограммы DELAY загрузить в рабочий регистр чис- ло 0x01. Для расширения верхней границы формируемых временных интерва- лов, а также с целью повышения удобства работы с подпрограммой, мож- но добавить в цикл LOOPD одну или несколько дополнительных команд, в качестве которых чаще всего используется команда NOP. Для примера рассмотрим подпрограмму формирования задержки времени DELAY_C DELAY_C MOVWF LOOPD NOP DECFSZ GOTO RETURN подпрограмма формирования ;задержки времени (вариант С) COUNT 1 ;загрузка W в регистр COUNT1 ; пустая команда COUNT1.F ;декремент COUNT 1 LOOPD повторение цикла H'L' раз ;возврат из подпрограммы Общее время исполнения подпрограммы DELAY_C, включая ее вы- зов, составит TD = 4 + 4*(L — 1) + 4 = 4 + 4*L циклов. При тактовой частоте fosc = 2МГц и загрузке константы L = H'F9' = .249 формируемый интервал времени составит ровно 2 мс. Уменьшение 222
Лекция 12 Разработка программного обеспечения для PIC-микроконтроллеров константы на единицу уменьшает формируемый временной интервал на 8 мкс. В частности, при L = .124 образуется задержка в 1 мс. Для формирования больших задержек времени, лежащих в диапазоне долей и единиц секунд, такой подход неудобен. В этом случае использу- ются вложенные циклы, как показано в следующем примере. ;основная программа MOVLWOxL CALL DELAYD DELAYD (вариант D) MOVWF CLRF COUNT 1 LOOPD DECFSZ GOTO CLRWDT DECFSZ GOTO RETURN COUNT2 COUNT1 COUNT1.F LOOPD COUNT2.F LOOPD ;пересылка константы 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МГц время цикла равно t = 2 мкс, поэто- му при загрузке L = Н'ОО’ = .0 максимальный формируемый интервал вре- мени составит около 0,4 с. Поскольку формируемый интервал времени достаточно велик, во вне- шний цикл включена команда сброса сторожевого таймера. Интервал времени 0,4 с не совсем удобен для получения задержек вре- мени, кратных секунде, поэтому рассмотрим еще один вариант подпрог- раммы формирования больших задержек времени с дополнительной ко- мандой NOP во внутреннем цикле. 223
Глава 6 Проектирование устройств на микроконтроллерах DELAY Е подпрограмма формирования ;большой задержки времени (вариант Е) MOVWF CLRF COUNT2 COUNT1 ;загрузка W в регистр COUNT2 ;сброс содержимого регистра COUNT1 LOOPD NOP DECFSZ GOTO CLRWDT DECFSZ GOTO RETURN COUNT1.F LOOPD COUNT2.F LOOPD ; пустая команда ;декремент COUNT 1 повторение цикла 256 раз ;сброс сторожевого таймера ;декремент COUNT2 повторение цикла H'U раз ;возврат из подпрограммы Время исполнения внутреннего цикла подпрограммы DELAY Е со ставляет 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 ;сброс сторожевого таймера ;вызов подпрограммы 224
лекция 12 Разработка программного обеспечения для Р1С-микроконтроллеров GET PORTA CALL GOTO SB1BA1 LOOP ;вызов подпрограммы SB1BA1 ; переход к метке LOOP для повторения процесса SB1 _ВА1 подпрограмма подачи звука на ;динамик ВА1 при нажатии на ; кнопку SB1 BTFSC ТЕМРА,4 пропустить команду, если ;ТЕМРА,4=0 (кнопка нажата) GOTO BO ; перейти на ВО BSF MOVLWOx3E BA1 ; подача высокого уровня на RA0 ;пересылка константы ;Н'ЗЕ' = .62 в W CALL DELAY C ;вызов подпрограммы DELAY C BCF MOVLWOx3E BA1 ;подача низкого уровня на RA0 ; пересылка константы ;Н'ЗЕ'- ,62bW ВО CALL RETURN DELAYC ;вызов подпрограммы DELAY C INCLUDE GETRA.ASM INCLUDE DELAYC.ASM Как и раньше, подпрограмма GETRA считывает текущее состояние порта А, которое затем передается в регистр ТЕМРА, Подпрограмма SB1BA1 анализирует состояние разряда 4 регистра ТЕМРА и, в зависи- мости от результата, озвучивает динамик ВА1 или нет. Необходимая вы- держка линии RA0 в единичном и нулевом состояниях обеспечивается под- программой DELAYC с параметром L = Н'ЗЕ' = .62. Это соответствует времени задержки около 0,5 мс, что и дает в результате необходимую час- тоту' следования сигнала 1 Кгц. Рассмотрим далее программу, которая заставляет мигать светодиод VD2 при нажатии на кнопку SBI. Для того чтобы мигания были хорошо вид- ны, выберем их частоту равной 1 Гц. I ;основная программа LOOP CLRWDT ;сброс сторожевого таймера 225
Глава 6 Проектирование устройств на микроконтроллерах V0 V1 SB1 CALL CALL GOTO GET_RA SB1VD2M LOOP ;вызов подпрограммы GET RA ;вызов подпрограммы ;SB1VD2M ; переход к метке LOOP для повторения процесса VD2M BTFSC ТЕМРА,4 GOTO VO BSF VD2 MOVLWOxF3 CALL DELAY E BCF VD2 MOVLWOxF3 CALL DELAYE подпрограмма мигания ;светодиода VD2 при нажатии ;на кнопку SB1 пропустить команду, если ;ТЕМРА,4=0 (кнопка нажата) ;перейти на V0 ;зажечь светодиод VD2 ; пересылка константы ;H'F3' = .243 в W ;вызов подпрограммы DELAY Е ; погасить светодиод ;пересылка константы ;H'F3'= .243 в W ;вызов подпрограммы DELAY Е BTFSS ТЕМРА,4 GOTO V1 BCF VD2 пропустить команду, если ;ТЕМРА,4=1 (кнопка не нажата) ;перейти на V1 ; погасить светодиод RETURN INCLUDE INCLUDE GETRA.ASM DELAY E.ASM Программа работает почти так же, как и предыдущая. Первое отличие заключается в том, что светодиод принудительно гасится при не нажатой кнопке. Второе отличие заключается в величине интервала времени, который составляет здесь 0,5 с и формируется подпрограммой DELAYE. Подпрограммы формирования задержки времени могут быть также по- лезны при работе с такими внешними источниками сигналов, как тумб- леры, кнопки, переключатели и т.п. Дело в том, что все механические ком- мутаторы имеют одно негативное свойство, известное как «дребезг» 226
Лекция 12 Разработка программного обеспечения для PIC-микроконтроллеров контактов, которое обусловлено механическими колебаниями контактов при их замыкании и размыкании. Длительность колебаний составляет обычно несколько миллисекунд, в течение которых на вход МК может поступать пачка импульсов вместо идеального перепада. Аппаратные способы борьбы с «дребезгом» контактов основаны на ис- пользовании RS-триггеров, одновибраторов или триггеров Шмитта. В ус- тройствах на основе МК подавление «дребезга» контактов обычно осуще- ствляется программными способами, которые основаны на повторном считывании состояния линии порта через определенное время. В качестве примера рассмотрим «бездребезговый» вариант подпрограм- мы чтения состояния порта А. GETRAD подпрограмма чтения состояния ;порта А в регистр ТЕМРА ;с подавлением "дребезжания" DD MOVF PORTA,W ;чтение состояния порта А в W ANDLWOxIC .-наложение маски Ь'00011100' ;на неиспользуемые биты W MOVWF ТЕМРА ;пересылка W в ТЕМРА CLRWDT ;сброс сторожевого таймера WDT MOVLWOxOA ; пересылка константы ;Н'0А'= .10 в W CALL DELAY E ;вызов подпрограммы DELAY E MOVF PORTA,W ;чтение состояния порта А в W ANDLWOxIC наложение на Wмаски Ь’00011100' SUBWF ТЕМРА,W ;вычитание W из ТЕМРА BTFSS Z пропустить команду, если результат ; нулевой GOTO DD ;перейти на метку DD RETURN INCLUDE DELAYE.ASM Суть работы подпрограммы заключается в повторном чтении состоя- ния порта А спустя некоторое время после предыдущего и сравнении его с прежним значением. Константа Н'ОА = .10, пересылаемая в регистр W Перед вызовом подпрограммы DELAY_E, обеспечивает значение задержки 227
Глава 6 Проектирование устройств на микроконтроллерах времени около 20 мс - этого, как правило, достаточно для завершения пе- реходных процессов при переключении механических коммутаторов. Мас- кирование неиспользуемых разрядов порта повышает надежность работы подпрограммы. Сброс сторожевого таймера перед вызовом подпрограм- мы задержки нужен для исключения сброса МК между двумя процедура- ми опроса порта А. Рассмотрим теперь работу программы, которая использует некоторые из разработанных ранее подпрограмм. Пусть целью работы программы яв ляется подсчет числа нажатий на кнопку SB 1 с выводом результата на се- мисегментный индикатор в шестнадцатиричном коде. ;основная программа CLRF COUNTS ;сброс счетчика нажатий LOOP CLRWDT CALL GETRAD ;сброс сторожевого таймера .вызов подпрограммы GET RAD BTFSC TEMPA.4 проверка нажатия SB1 GOTO LOOP ;если не нажата - возврат INCF COUNTS,F ;на метку LOOP ;инкремент счетчика MOVF COUNTS,W .пересылка содержимого CALL SEV SEG ;счетчика в рабочий регистр ;вызов подпрограммы SEVENSEG MOVWF PORTB ;пересылка W в PORTB TEST CALL GET RAD ;вызов подпрограммы GET RAD BTFSS TEMPA.4 проверка нажатия SB1 GOTO TEST ;если еще нажата - возврат GOTO LOOP ;на метку TEST ; возврат на метку LOOP INCLUDE INCLUDE GETRAD.ASM SEVSEG.ASM Приведенные в главе программы не охватывают и малой доли возмож- ностей, которые предоставляет даже такой простой макет, как изображен- ный на рис. 6.3. Однако их освоение, надеюсь, будет полезным для начи- нающих пользователей Р1С-контроллеров. 228
Лекция 13 Архитектура и процессоры персональных компьютеров Глава 7. Организация персонального компьютера Лекция 13. Архитектура и процессоры персональных компьютеров В этой лекции рассказывается об особенностях архитектуры персональ- ных компьютеров семейства IBM PC, о процессорах, применяемых в персональных компьютерах, об их функциях, характеристиках, эта- пах их эволюции. Ключевые слова: архитектура, системные устройства, распределение памяти, чипсет, кэш, защищенный режим, многозадачный режим. Как уже отмечалось, персональный компьютер представляет собой наи- более развитый вид микропроцессорных систем. На основе персональных компьютеров можно строить самые сложные контрольно-измерительные, управляющие, вычислительные и информационные системы. Имеющие- ся в персональном компьютере аппаратные и программные средства де- лают его универсальным инструментом для самых разных задач. В случае вычислительных и информационных систем персональный компьютер не нуждается в подключении нестандартной аппаратуры, все сводится к подбору или написанию необходимого программного обеспе- чения. В случае же контрольно-измерительных и управляющих систем пер- сональный компьютер оснащается набором инструментов для сопряже- ния с внешними устройствами и соответствующими программными средствами. Во многих случаях строить систему на основе персонального компьютера оказывается гораздо проще, быстрее и даже дешевле, чем про- ектировать ее с нуля на базе какого-то микропроцессора, микропроцес- сорного комплекта или микроконтроллера. Конечно, в большинстве случаев система на основе персонального компьютера оказывается сильно избыточной, это плата за универсаль- ность. Но в то же время один и тот же компьютер может решать самые разнообразные задачи. Например, в системе управления технологичес- кими процессами или научными установками он может математически Моделировать происходящие процессы, выдавать в реальном времени уп- 229
Глава 7 Организация персонального компьютера равляющие сигналы, принимать в реальном времени ответные сигналы, накапливать информацию, обрабатывать се, обмениваться информацией с другими компьютерами и т.д. Развитый интерфейс пользователя (ви- деомонитор, полноразмерная клавиатура, мышь) делают работу с пер- сональным компьютером комфортной и эффективной. А стоимость пер- сональных компьютеров вследствие большого объема выпуска постоянно снижается. Поэтому их использование не только удобно, но и экономи- чески выгодно. Но чтобы грамотно и полноценно использовать персональный компь- ютер в составе любых систем, надо иметь представление о его архитектуре, об основных принципах построения, об устройствах, входящих в его со- став, наконец, о внешних интерфейсах. 7.1. Архитектура персонального компьютера Персональный компьютер типа IBM PC имеет довольно традицион- ную архитектуру микропроцессорной системы и содержит все обычные функциональные узлы: процессор, постоянную и оперативную память, ус- тройства ввода/вывода, системную шину, источник питания (рис.7.1). Ос- новные особенности архитектуры персональных компьютеров сводятся к принципам компоновки аппаратуры, а также к выбранному набору сис- темных аппаратных средств. Рис. 7.1. Архитектура персонального компьютера типа IBM PC. 230
Лекция 13 Архитектура и процессоры персональных компьютеров Функции основных узлов компьютера следующие: • Центральный процессор — это микропроцессор со всеми необходи- мыми вспомогательными микросхемами, включая внешнюю кэш- память и контроллер системной шины. (О кэш-памяти подробнее будет рассказано в следующих разделах). В большинстве случаев именно центральный процессор осуществляет обмен по системной шине. • Оперативная память может занимать почти все адресуемое простран- ство памяти процессора. Однако чаше всего ее объем гораздо мень- ше. В современных персональных компьютерах стандартный объем системной памяти составляет, как правило, от 64 до 512 Мбайт. Опе- ративная память компьютера выполняется на микросхемах динами- ческой памяти и поэтому требует регенерации. • Постоянная память (ROM BIOS — Base Input/Output System) имеет не- большой объем (до 64 Кбайт), содержит программу начального запус- ка, описание конфигурации системы, а также драйверы (программы нижнего уровня) для взаимодействия с системными устройствами. • Контроллер прерываний преобразует аппаратные прерывания систем- ной магистрали в аппаратные прерывания процессора и задает ад- реса векторов прерывания. Все режимы функционирования контрол- лера прерываний задаются программно процессором перед началом работы. • Контроллер прямого доступа к памяти принимает запрос на ПДП из системной магистрали, передает его процессору, а после предостав- ления процессором магистрали производит пересылку данных меж- ду памятью и устройством ввода/вывода. Все режимы функциони- рования контроллера ПДП задаются программно процессором перед началом работы. Использование встроенных в компьютер контрол- леров прерываний и ПДП позволяет существенно упростить аппа- ратуру применяемых плат расширения. • Контроллер регенерации осуществляет периодическое обновление информации в динамической оперативной памяти путем проведе- ния по шине специальных циклов регенерации. На время циклов регенерации он становится хозяином (задатчиком) шины. • Перестановщик байтов данных помогает производить обмен данны- ми между 16-разрядным и 8-разрядным устройствами, пересылать целые слова или отдельные байты. • Часы реального времени и таймер-счетчик — это устройства для внут- реннего контроля времени и даты, а также для программной выдер- жки временных интервалов, программного задания частоты и т.д. • Системные устройства ввода/вывода — это те устройства, которые не- 231
Глава 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. Другое направление совершенствования архитектуры персонального компьютера связано с максимальным ускорением обмена информацией с системной памятью. Именно из системной памяти компьютер читает все исполняемые команды, и в системной же памяти он хранит данные То есть больше всего обращений процессор совершает именно к памяти. Ускорение обмена с памятью приводит к существенному ускорению работы всей системы в целом. Но при использовании для обмена с памятью системной магистрали приходится учитывать скоростные ограничения магистрали. Системная магистраль должна обеспечивать сопряжение с большим числом устройств, поэтому она должна иметь 232
Лекция 13_______________Архитектура и процессоры персональных компьютеров довольно большую протяженность; она требует применения входных и выходных буферов для согласования с линиями магистрали. Циклы обмена по системной магистрали сложны, и ускорять их нельзя. В результате существенного ускорения обмена процессора с памятью по магистрали добиться невозможно. Разработчиками был предложен следующий подход. Системная память подключается не к системной магистрали, а к специальной высокоскоро- стной шине, находящейся «ближе» к процессору, не требующей сложных буферов и больших расстояний. В таком случае обмен с памятью идет с максимально возможной для данного процессора скоростью, и системная магистраль не замедляет его. Особенно актуальным это становится с рос- том быстродействия процессора (сейчас тактовые частоты процессоров персональных компьютеров достигают 1—3 ГГц). Таким образом, структура персонального компьютера из одношинной, применявшейся только в первых компьютерах, становится трехшинной (рис. 7.2). Рис. 7.2. Организация связей в случае трехшинной структуры. Назначение шин следующее: • к локальной шине подключаются центральный процессор и кэш- память (быстрая буферная память); • к шине памяти подключается оперативная и постоянная память ком- пьютера, а также контроллер системной шины; • к системной шине (магистрали) подключаются все остальные уст- ройства компьютера. Все три шины имеют адресные линии, линии данных и управляющие сигналы. Но состав и назначение линий этих шин не совпадают между собой, хотя они и выполняют одинаковые функции. С точки зрения про- 233
Глава 7 Организация персонального компьютера цессора, системная шина (магистраль) в системе всего одна, по ней он получает данные и команды и передает данные как в память, так и в уст- ройства ввода/вывода. Временные задержки между системной памятью и процессором в дан- ном случае минимальны, так как локальная шина и шина памяти соеди- нены только простейшими быстродействующими буферами. Еше меньше задержки между процессором и кэш-памятью, подключаемой непосред- ственно к локальной шине процессора и служащей для ускорения обмена процессора с системной памятью. Если в компьютере применяются две системные шины, например, ISA и PCI, то каждая из них имеет свой собственный контроллер шины, и ра- ботают они параллельно, не влияя друг на друга. Тогда получается уже четырехшинная, а иногда и пятишинная структура. Пример такой струк- туры компьютера приведен на рис. 7.3. Шина AGP Шина PCI Рис. 7.3. Пример многошинной структуры. В наиболее распространенных настольных компьютерах класса Desk- top в качестве конструктивной основы используется системная или мате- ринская плата (motherboard), на которой располагаются все основные си- стемные узлы компьютера, атакже несколько разъемов (слотов) системной шины для подключения дочерних плат — плат расширения (интерфейс- ных модулей, контроллеров, адаптеров). Как правило, современные сис- темные платы допускают замену процессора, выбор его тактовой частоты, замену и наращивание оперативной памяти, выбор режимов работы дру- гих узлов. 234
Лекция 13 Архитектура и процессоры персональных компьютеров На системной плате сейчас обычно располагаются также основные средства внешнего интерфейса, служащие для присоединения как встро- енных устройств (например, дисковых носителей), так и внешних устройств компьютера (например, клавиатуры, мыши, принтера, сканера, модема). Для подключения видеомонитора, как правило, используется специальная плата расширения (контроллер дисплея), вставляемая в один из слотов. Это позволяет заменять ее более мощной при необходимости установки нового монитора. Отметим, что для получающих все более широкое распространение пор- тативных персональных компьютеров класса ноутбуков (notebook) при- меняются несколько иные конструктивные решения. В частности, в них отсутствуют слоты расширения системной шины, а практически все узлы компьютера выполняются на одной плате. Но мы в основном будем гово- рить о компьютерах типа desktop (настольных), так как именно они наи- более приспособлены для построения сложных систем, допускают доволь- но простую модернизацию (upgrade) и настройку на конкретные нужды пользователя. 7.2. Процессоры персональных компьютеров Несмотря на то, что первый персональный компьютер был выпущен фирмой Apple, сейчас персональными компьютерами называют в основ- ном IBM PC-совместимые компьютеры. Это связано, прежде всего, с тем, что фирма IBM выбрала правильную рыночную политику: она не скрыва- ла принципов устройства своих компьютеров и не патентовала основных решений. В результате многие производители стали выпускать совмес- тимые компьютеры, и они быстро стали фактическим стандартом. Из-за большого объема выпуска персональные компьютеры начали быстро де- шеветь. К тому же для IBM-совместимых персональных компьютеров стали разрабатывать множество программных средств, что еще больше спо- собствовало их распространению. Поэтому, несмотря на некоторые су- щественные архитектурные недостатки, IBM-совместимые персональные компьютеры сейчас уверенно занимают первое место на рынке. С самого начала фирма IBM ориентировалась на процессоры Intel. У этих процессоров были очень мощные конкуренты, например, процессо- ры фирм Motorola или Zilog, превосходившие процессоры Intel по многим параметрам, но именно благодаря персональным компьютерам процес- соры Intel смогли выйти победителями в конкурентной борьбе. К тому же еще некоторые фирмы (например, AMD, VIA, Cyrix) выпускают Intel- совместимые процессоры. Поэтому мы рассмотрим основные особенности процессоров фирмы Intel. Это позволит нам также проследить основные тенденции в развитии процессоров за последние десятилетия. 235
Глава 7 Организация персонального компьютера Свой первый 16-разрядный процессор i8086 фирма 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-разряд- ная адресная шина). Он имел еще более развитую систему управления па- мятью ММи (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. 236
Лекция 13 Архитектура и процессоры персональных компьютеров В 1997 году Pentium был дополнен технологией ММХ, призванной ус- корять выполнение мультимедийных приложений (обработку изображе- ний и звука). И в этом же году появился процессор Pentium II, который включает в себя технологию ММХ и имеет более высокое быстродействие. Возможная тактовая частота достигла 400 МГц. В последние годы появились процессоры Pentium III и Pentium IV, име- ющие еще более развитую архитектуру и тактовую частоту, превышаю- щую 1 ГГц у Pentium III и 3 ГГц у Pentium IV. Таким образом, содружество компании Intel и производителей IBM- совместимых персональных компьютеров успешно продолжается. Другие фирмы, выпускающие процессоры, вряд ли существенно потеснят в бли- жайшие годы Intel. Поэтому рассмотрим чуть подробнее характерные особенности процессоров для персональных компьютеров этой компании. 7.2.1. Особенности процессоров 8086/8088 Описание микропроцессоров фирмы Intel мы начнем с процессоров 18086/8088. Именно заложенные в них архитектурные решения во многом определили архитектуру последующих моделей семейства Intel, поддер- живающих совместимость с более ранними моделями. В том числе и с не- достатками и ограничениями предыдущих моделей. Процессор i8086 имеет совмещенную (мультиплексированную) 20-раз- рядную внешнюю шину адреса/данных. Данные передаются по 16 разря- дам, адрес — по 20 разрядам. Шина управления имеет 16 разрядов (в част- ности, в нее входят строб адреса и стробы обмена с памятью и устройствами ввода/вывода). Среднее время выполнения команды занимает 12 тактов синхронизации, один цикл обмена по внешней шине требует 4 тактов (без учета тактов ожидания, вводимых при асинхронном обмене). У процессо- ра 18088 внешняя шина данных 8-разрядная. Одна из характерных особенностей процессоров 18086/8088 — принцип сегментирования памяти. То есть вся память представляется не в виде не- прерывного пространства, а в виде нескольких кусков — сегментов за- данного размера (по 64 Кбайта), положение которых в пространстве памяти можно программно изменять. Об этом уже говорилось в разделе 3.1.2 (см. рис. 3.5 и 3.6). Процессор 8086/8088 имеет 14 регистров разрядностью по 16 бит. Об их назначении также уже говорилось в разделе 3.2. Для ускорения выборки команд из памяти в процессоре 8086 предус- мотрен внутренний 6-байтный конвейер (в процессоре 8088 — 4-байтный). Конвейер заполняется читаемыми из памяти командами во время выпол- нения предыдущей команды и сбрасывается (считается пустым) при вы- 237
Глава 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), которое вырабатывается при поступлении внешнего сигнала NM1 и не зависит от состояния флага разрешения аппаратных прерыва- ний IF. В компьютере оно используется для контроля четности памяти, контроля корректности обмена с памятью и устройствами ввода/вывода, а также для обработки так называемых исключений, то есть особых условий, возникающих в процессе работы. Немаскируемым оно называется имен- но потому, что его нельзя запретить. Важная отличительная особенность процессора — разделение опера- ций обмена с устройствами ввода/вывода и с памятью. Для обмена с ус- 238
Лекция 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). То есть процессор 239
Глава 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) добавлены три используемых разряда, и, кроме того, появился еще один внутренний регистр — регистр управления со словом состояния машины 240 А
Лекция 13 Архитектура и процессоры персональных компьютеров (MSW — Machine State Word), в котором используется только четыре бита (рис. 7.4). 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 О NT IOPL i 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 имеют следу- ющее назначение (подробнее о них — в следующем разделе): • IOPL (Input/Output Privilege Level) — два бита, определяющие уро- вень привилегий ввода/вывода; • NT (Nested Task flag) — флаг вложенной задачи. Регистр MSW управляет режимом процессора. Для изменения его со- держимого и сохранения его в памяти предназначены специальные ко- манды. Назначение его битов следующее: • РЕ (Protection Enable) — разрешение зашиты. Установка этого флага переводит процессор в защищенный режим. Но очистка флага не переводит в реальный режим (требуется аппаратный сброс процес- сора). • MP (Monitor Processor extension) — мониторинг внешнего матема- тического сопроцессора. • ЕМ (Processor Extension Emulated) — эмуляция математического со- процессора. • TS (Task Switch) — переключение задач. Как и два предыдущих раз- ряда, этот разряд управляет сопроцессором. Сочетание МР=0 EM=0 TS=0, устанавливаемое по аппаратному сбро- су (по сигналу RESET), обеспечивает совместимость с 8086/8088. Сочета- ние МР=1 ЕМ=0 используется при совместном включении с сопроцессо- ром 80287, а сочетание МР=0 ЕМ=1 применяется в случае программной эмуляции сопроцессора, при которой функции сопроцессора выполня- ются основным процессором, но гораздо медленнее. Остановимся подробнее на организации памяти процессора 80286. 24- разрядная внешняя шина адреса позволяет адресовать 16 Мбайт физичес- кой памяти, но в реальном режиме доступен только 1 Мбайт, начинаю- 241
Глава 7 Организация персонального компьютера щийся с нулевого адреса (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 II 1 I 1 1 1 1 1 1-1 1 1 .J 1 1 1 1 1 TI RPL 1 INDEX Рис. 7.5. Формат селектора сегмента процессора 80286. О порядке вычисления адреса памяти в защищенном режиме процес- сора 80286 уже говорилось в разделе 3.1.2 (см. рис.3.7). На сумматор, вы- числяющий физический адрес памяти, подается не содержимое сегмент- ного регистра, а базовый адрес сегмента из таблицы дескрипторов. Дескрипторы хранятся в памяти и занимают по четыре смежных 16 разрядных слова (то есть 8 байт). При загрузке нового значения селектора дескрипторы считываются из памяти и сохраняются во внутренних про- граммно недоступных (и невидимых) регистрах процессора. До смены зна- 242
Лекция 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В. 243
Глава 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. 244
Лекция 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 L OF OF 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. 245
Глава 7 Организация персонального Компонент адресация 16-битная адресация 32-битная Базовый регистр ВХ или ВР Любой 32-битный общего назначения Индексный регистр SI или DI Любой 32-битный общего назначения, кроме ESP Масштаб Нет (всегда 1) 1,2, 4 или 8 Смешение 0, 8 или 16 бит 0, 8 или 32 бита ------------------------™--------- Табл. 7.1. Различия режимов адресации 80386. Так же, как и предшественники, процессор 80386 обрабатывает все виды прерывания: аппаратные (маскируемые и немаскируемые) и про- граммные, которые в данном случае обрабатываются как разновидность исключений, и собственно исключения. Исключения подразделяются на отказы, ловушки и аварийные завершения. • Отказ (Fault) — это исключение, которое обнаруживается и обслу- живается до выполнения команды, вызывающей ошибку. • Ловушка (Trap) — это исключение, которое обнаруживается и обслу- живается после выполнения команды, вызывающей это исключе- ние. К классу ловушек относятся и программные прерывания. • Аварийное завершение (Abort) — это исключение, которое не позво- ляет точно установить команду, вызвавшую его. Оно используется для сообщения о серьезной ошибке, такой как аппаратная ошибка или повреждение системных таблиц. Каждому номеру прерывания (0...255) или исключения соответствует элемент в таблице дескрипторов прерываний IDT (Interrupt Descriptor Table). В защищенном режиме IDT может иметь размер от 32 до 256 деск- рипторов, каждый из которых состоит из 8 байт. Отличия от предшествующего процессора 80286 в выполнении опера- ций ввода/вывода сводятся к добавлению возможностей обращения к 32- битным портам Важно отметить, что строковые команды процессора 80386 обеспечивают блочный ввод/вывод с большей скоростью, чем стандарт- ный контроллер прямого доступа к памяти. Процессор выпускался в 100-выводном корпусе. Была предусмотрена возможность подключения внешнего сопроцессора 80387. А теперь остановимся чуть подробнее на защищенном режиме, кото- рый используется на полную мощность именно начиная с 32-разрядных 246
Лекция 13 Архитектура и процессоры персональных компьютеров процессоров, так как процессор 80286 имел существенные ограничения и в большинстве случаев работал все-таки в реальном режиме. Защищенный режим был предложен для обеспечения независимости одновременного выполнения нескольких задач (как системных, так и при- кладных). Для этого предусмотрена защита ресурсов каждой задачи от дей- ствий других задач. Под ресурсами здесь понимается память с данными, программами, системными таблицами, а также используемая задачей ап- паратура. Защита основывается на сегментации памяти, причем, в отли- чие от реального режима, задача не может переопределять положения сво- их сегментов в памяти и использует только сегменты, определенные для нее операционной системой. Сегмент определяется дескриптором сегмен- та, который задает положение сегмента в памяти, его размер (или лимит), назначение и характеристики защиты. Зашита с помощью сегментации не позволяет: • использовать сегменты не по назначению, например, трактовать об- ласть данных как область программы; • нарушать права доступа (например, пытаться записывать информа- цию в сегмент, предназначенный только для чтения, или обращать- ся к сегменту, не имея достаточных привилегий); • адресоваться к элементам, выходящим за границу сегмента; • изменять дескрипторы сегментов, не имея достаточных привилегий. Защищенный режим предусматривает средства переключения задач. Состояние каждой задачи (то есть состояние всех регистров процессора) хранится в специальном сегменте состояния задачи, на который указыва- ет селектор в регистре задачи. При переключении задачи достаточно заг- рузить в регистр задачи новый селектор, и состояние предыдущей задачи автоматически сохранится, а в процессор загрузится состояние новой (или ранее прерванной) задачи. Это развитие идеи стека. В защищенном режиме предусматривается иерархическая четыреху- ровневая (уровни 0, 1,2, 3) система привилегий, предназначенная для управления выполнением привилегированных команд и доступом к дес- крипторам (рис. 7.7). Уровень 0 соответствует неограниченным правам доступа и отводится ядру операционной системы. Уровень 3 дает мини- мальные права и отводится прикладным задачам. Уровни привилегий от- носятся к дескрипторам, селекторам и задачам. Кроме того, в регистре флагов имеется двухбитовос поле привилегий ввода/вывода (см. рис. 7.4 и 7.6), управляющее доступом к командам ввода/вывода и флагом пре- рываний. Механизм виртуальной памяти, используемый в защищенном режи- ме, позволяет любой задаче использовать логическое пространство раз- мером до 64 Тбайт (16К сегментов по 4 Гбайта). Для этого каждый сегмент 247
Глава 7 Организация персонального компьютера в своем дескрипторе имеет специальный бит, указывающий на присутствие данного сегмента в оперативной памяти в текущий момент. Неиспользуе- мый сегмент может быть выгружен из оперативной памяти во внешнюю память (обычно — на диск), о чем делается пометка в его дескрипторе. На освободившееся место из внешней памяти может закачиваться другой сег- мент (это называется свопингом или подкачкой). При обращении задачи к отсутствующему в оперативной памяти сегменту вырабатывается спе- циальное исключение, которое и выполняет свопинг. С точки зрения вы- полняемой программы, виртуальная память ничем не отличается от ре- альной (говорят, что виртуальная память прозрачна), не считая задержки на процесс перекачки информации на диск и с диска. Рис, 7.7. Уровни привилегий 32-разрядных процессоров. Реальное использование системы зашиты и виртуальной памяти воз- лагается на операционную систему, которая в идеале должна обеспечивать работоспособность даже в случае некорректного выполнения приклад- ных задач. В памяти существует три типа таблиц дескрипторов: локальная табли- ца дескрипторов LDT, глобальная таблица дескрипторов GDT и таблица дескрипторов прерываний IDT. Каждой таблице соответствует свой ре- 248
Лекция 13 Архитектура и процессоры персональных компьютеров гистр процессора (соответственно, LDTR, GDTR и IDTR), где хранятся дескрипторы сегментов. Глобальная таблица содержит дескрипторы, до- ступные всем задачам, а локальная может быть для каждой задачи своя. Дескрипторы состоят из 8 байтов (как и у 80286). Однако назначение байтов различно. Для примера на рис. 7.8 показаны форматы дескрипторов сег- мента программ и данных процессоров 80286 и 80386. +7 +5 +3 +1 Iг Зарезервировано (всегда 0) р DPL S 1 1 TYPE i i A BASE 23-16 BASE 15-0 LIMIT 15-0 . i Дескриптор 80286 31 1615 0 BASE 31-24 G D/BC ) AVL UMIT19-16 P “Г” DPL I S I I TYPE I I A BASE 23-16 BASE 15-0 LIMIT 15-0 Дескриптор 80386 и выше Рис. 7.8. Дескрипторы сегментов программы и данных. Существуют также системные сегменты, предназначенные для хране- ния локальных таблиц дескрипторов и таблиц состояния задач. Их деск- рипторы (тоже 8-байтные) определяют базовый адрес, лимит сегмента, права доступа (чтение, чтение/запись, только исполнение или исполне- ние/чтение) и присутствие сегмента в оперативной памяти. Задачи, дескрипторы и селекторы имеют свои уровни привилегий. Привилегии задач действуют на выполнение команд и использование дескрипторов. Текущий уровень привилегии задач определяется двумя младшими битами регистра CS. Привилегии дескриптора описываются полем DPL (рис. 7.8). DPL определяет наименьший уровень привилегий, с которым возможен доступ к данному дескриптору. Привилегии селектора задаются полем RPL (см. рис. 7.5). Привилегии проверяются при попытках записи в сегментные регистры, а также при выполнении некоторых команд. Таким образом, начиная с процессора 80386, появляются средства об- служивания многозадачного режима. Естественно, процессор не может обрабатывать несколько задач одновременно, выполняя по несколько ко- 249
Глава 7 Организация персонального компьютера манд сразу. Он только периодически переключается между задачами. Но с точки зрения пользователя получается, что компьютер параллельно ра- ботает с несколькими задачами. 7.2.4, Особенности процессора 486 Процессор 486 является представителем второго поколения 32-раз- рядных процессоров. Он сохраняет основные принципы архитектуры про- цессора 80386, а также обеспечивает полную совместимость со своими предшественниками. Но в то же время он имеет ряд преимуществ. • В процессор введена внутренняя кэш-память 1-го уровня (Internal cache Level 1) размером 8 Кбайт и предусмотрены средства для дву- хуровневого кэширования. • В процессор введен математический сопроцессор (в модели процес- сора 486SX сопроцессор отсутствует). • Повышена производительность обмена по внешней шине — введе- ны так называемые пакетные циклы, передающие одно слово за один такт шины. • В архитектуре процессора применено скоростное RISC-ядро, кото- рое позволяет наиболее часто встречающиеся команды выполнять за один такт. • В структуру введены буферы отложенной записи. • В отдельных моделях предусмотрено внутреннее умножение такто- вой частоты (на 2, 2,5 или 3). Все это обеспечило существенное увеличение быстродействия. А усо- вершенствованный защищенный режим дает некоторые дополнительные возможности. Рассмотрим подробнее принцип действия кэш-памяти. Кэш-память (или просто кэш, от англ. Cache — склад, тайник) пред- назначена для промежуточного хранения информации из системной памяти с целью ускорения доступа к ней. Ускорение достигается за счет использования более быстрой памяти и более быстрого доступа к ней. При этом в кэш-памяти хранится постоянно обновляемая копия некоторой области основной памяти. Необходимость введения кэша связана с тем, что системная память пер- сонального компьютера выполняется на микросхемах динамической па- мяти, которая характеризуется меньшей стоимостью, но и более низким быстродействием, по сравнению со статической памятью. Идея состоит в том, что благодаря введению быстрой буферной, промежуточной стати- ческой памяти можно ускорить обмен с медленной динамической памя- тью. По сути, кэш-память делает то же, что и применявшийся ранее кон- вейер команд, но на более высоком уровне. В кэш-памяти хранится копия 250
Лекция 13 Архитектура и процессоры персональных компьютеров некоторой части системной памяти, и процессор может обмениваться с этой частью памяти гораздо быстрее, чем с системной памятью. Причем в кэш-памяти могут храниться как команды, так и данные. Выигрыш в быстродействии от применения кэша связан с тем, что про- цессор в большинстве случаев обращается к адресам памяти, расположен- ным последовательно, один за другим, или же близко друг к другу. Поэто- му высока вероятность того, что информация из этих адресов памяти окажется внутри небольшой кэш-памяти. Если же процессор обращается к адресу, расположенному далеко от тех, к которым он обращался ранее, кэш оказывается бесполезным и требует перезагрузки, что может даже за- медлить обмен по сравнению со структурой без кэш-памяти. В принципе кэш-память может быть как внутренней (входить в состав процессора), так и внешней. Внутренний кэш называется кэшем первого уровня, внешний — кэшем второго уровня. Объем внутреннего кэша обычно невелик — типовое значение 32 Кбайт. Объем внешнего кэша может достигать нескольких мегабайт. Но принцип функционирования у них один и тот же. Кэш первого уровня процессора 486 имеет четырехканальную струк- туру (рис. 7.9). Каждый канал состоит из 128 строк по 16 байт в каждой. Одноименные строки всех четырех каналов образуют 128 наборов из четырех строк, каждый из которых обслуживает свои адреса памяти. Каждой строке соответствует 21-разрядная информация об адресе скопированного в нее блока системной памяти. Эта информация называется тегом (Tag) строки. Канал 1 Канал 4 действительности Диспетчер Рис. 7.9. Структура внутреннего кэша процессора 486. Кроме того, в состав кэша входит так называемый диспетчер, то есть об- ласть памяти с организацией 128 х 7, в которой хранятся 4-битные теги дей- 251
Глава 7 Организация персонального компьютера ствительности (достоверности) для каждого из 128 наборов и 3-битныс коды LRU (Least Recently Used) для каждого из 128 наборов. Тег действительности набора включает в себя 4 бита достоверности каждой из 4 строк, входящих в данный набор. Бит достоверности, установленный в единицу, говорит о том, что соответствующая строка заполнена; если он сброшен в нуль, то строка пуста. Биты LRU говорят о том, как давно было обращение к данному набору. Это нужно для того, чтобы обновлять наименее используемые наборы. Адресация кэш-памяти осуществляется с помощью 28 разрядов адреса. Из них 7 младших разрядов выбирают один из 128 наборов, а 21 старший разряд сравнивается с тегами всех 4 строк выбранного набора. Если теги совпадают с разрядами адреса, то получается ситуация кэш-попадания, а если нет, то ситуация кэш-промаха. В случае цикла чтения при кэш-попадании байт или слово читаются из кэш-памяти. При кэш-промахе происходит обновление (перезагрузка) од- ной из строк кэш-памяти. В случае цикла записи при кэш-попадании производится запись как в кэш-память, так и в основную системную память. При кэш-промахе за- пись производится только в системную память, а обновление строки кэш- памяти не производится. Эта строка становится недостоверной (се бит до- стоверности сбрасывается в нуль). Такая политика записи называется сквозной или прямой записью (Write Through). В более поздних моделях процессоров применяется и обратная запись (Write Back), которая является более быстрой, так как требует го- раздо меньшего числа обращений по внешней шине. При использовании обратной записи в основную память записывае- мая информация отправляется только в том случае, когда нужной строки в кэше нет. В случае же попадания модифицируется только кэш. В основ- ную память измененная информация попадет только при перезаписи но- вой строки в кэш. Прежняя строка при этом целиком переписывается в основную память, и тем самым восстанавливается идентичность содер- жимого кэша и основной памяти. В случае, когда требуемая строка в кэше не представлена (ситуация кэш- промаха), запрос на запись направляется на внешнюю шину, а запрос на чтение обрабатывается несколько сложнее. Если этот запрос относится к кэшируемой области памяти, то выполняется цикл заполнения целой стро- ки кэша (16 байт из памяти переписывается в одну из строк набора, об- служивающего данный адрес). Если затребованные данные не укладываются в одной строке, то заполняется и соседняя строка. Заполнение строки процессор старается выполнить самым быстрым способом — пакетным циклом, однако внешний контроллер памяти может потребовать использования более медленных пересылок. 252
Лекция 13 Архитектура и процессоры персональных компьютеров Внутренний запрос процессора на данные удовлетворяется сразу, кактоль- ко данные считываются из памяти, а дальнейшее заполнение строки может идти параллельно с обработкой данных. Если в наборе, который обслужива- ет данный адрес памяти, имеется свободная строка, заполнена будет именно она. Если же свободных строк нет, заполняется строка, к которой дольше всех не обращались. Для этого используются биты LRU, которые модифи- цируются при каждом обращении к строке данного набора. Кроме того, существует возможность аннулирования строк (объявле- ния их недостоверными) и очистки всей кэш-памяти. При сквозной за- писи очистка кэша проводится специальным внешним сигналом процес- сора, программным образом с помощью специальных команд, а также при начальном сбросе - по сигналу RESET При обратной записи очистка кэша подразумевает также выгрузку всех модифицированных строк в основную память. Отметим, что в пространстве памяти персонального компьютера име- ются области, для которых кэширование принципиально недопустимо (например, разделяемая память аппаратурных адаптеров — плат расшире- ния). Режим пакетной передачи (Burst Mode), впервые появившийся в процес- соре 486, предназначен для быстрых операций со строками кэша. Пакет- ный цикл обмена (Burst Cycle) отличается тем, что для пересылки всего пакета адрес по внешней шине адреса передается только один раз — в нача- ле пакета, а затем в каждом следующем такте передаются только данные. Адрес для каждого следующего кода данных вычисляется из начального адреса по правилам, установленным как передатчиком данных, так и их приемником. Например, адрес каждого следующего слова данных вычис- ляется как инкрементированный адрес предыдущего. В результате время передачи одного слова данных значительно сокращается. Понятно, что обмен пакетными циклами возможен только с устройствами, изначально способными обслуживать такой цикл. Допустимая длина пакета не слиш- ком велика, например, при чтении размер пакета ограничен одной стро- кой кэша. Режим внутреннего умножения тактовой частоты процессора был пред- ложен для того, чтобы повысить быстродействие процессора, но при этом устанавливать его в системные платы, рассчитанные на невысокие такто- вые частоты. Например, модель процессора 486DX2-66 работает в систем- ной плате с тактовой частотой 33, но эту частоту внутри себя преобразует в удвоенную частоту — 66 МГц. Это позволяет уменьшить обшую стоимость системы, так как снижает требования к элементам системной платы. Процессор 486 выпускался в 168- или 169-выводных корпусах. Напря- жение питания — 5 В или 3,3 В. Введение пониженного напряжения пи- 253
Глава 7 Организация персонального компьютера тания 3,3 В связано с необходимостью снижения величины рассеиваемой мощности. Растущая тактовая частота и усложнение структуры процессо- ров приводят к тому, что рассеиваемая ими мощность достигает несколь- ких ватт. Для современных процессоров уже обязательно применение вен- тиляторов на корпусе процессора. 7.2.5. Особенности процессоров Pentium Процессоры Pentium относятся к пятому поколению процессоров или к третьему поколению 32-разрядных процессоров. По своим основным ар- хитектурным принципам они совместимы с процессорами 386 и 486. Но имеются существенные отличия, позволяющие говорить о новом поколе- нии: • Суперскалярная архитектура процессора, то есть процессор имеет два пятиступенчатых параллельно работающих конвейера обработки информации, благодаря чему он способен одновременно выполнять две команды за один такт. Необходимо отметить, что преимущества такой архитектуры проявляются только в случае специальной ком- пиляции программного обеспечения, позволяющей осуществлять параллельную обработку. • Внешняя 64-разрядная шина данных для повышения производитель- ности. Это требует соответствующей организации памяти. Из-за та- кой особенности процессор иногда неправильно называют 64-раз- рядным (хотя внутри он все-таки остался 32-разрядным). Внешняя шина адреса процессора — 32-разрядная. • Применение технологии динамического предсказания ветвлений (переходов). • Раздельный кэш для команд и данных объемом 8 Кбайт каждый. Дли- на строки кэша — 32 байта. Оба кэша работают в режиме обратной записи. • Повышенная в 2—10 раз по сравнению с процессором 486 произво- дительность встроенного математического сопроцессора. В нем при- менена восьмиступенчатая конвейеризация и специальные блоки сложения, умножения и деления, что позволяет выполнять опера- ции с плавающей точкой за один такт процессора. • Сокращено время (число тактов) выполнения команд. • Предусмотрена возможность построения двухпроцессорных систем. • Введены средства управления энергопотреблением и тестирования. Предсказание ветвлений позволяет продолжать выборку и декодиро- вание потока команд после выборки команды ветвления (перехода), не дожидаясь проверки условия перехода. В прежних моделях в данном слу- 254
Лекция 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) работает в обычном однопро- 255
Глава 7 Организация персонального компьютера цессорном режиме. Проверочный процессор (Checker) выполняет все те же операции внутри себя, не управляя внешней шиной, и сравнивает сиг- налы основного процессора с теми, которые генерирует сам. В случае не- совпадения формируется сигнал ошибки, обрабатываемый как прерывание. То есть в данном случае увеличивается надежность системы в целом (в идеале — вдвое). Развитием Pentium стало добавление технологии ММХ, рассчитанной на мультимедийное, графическое и коммуникационное применение. Ос- новная идея ММХ заключается в одновременной обработке нескольких элементов данных за одну команду (SIMD, Single Instruction — Mutiple Data). Расширение MMX использует новые типы упакованных 64-битных данных: • упакованные байты — восемь байт; • упакованные слова — четыре слова; • упакованные двойные слова (два двойных слова); • учетверенное слово (одно слово). Эти типы данных могут обрабатываться в восьми дополнительных 64- разрядных регистрах ММХО — ММХ7. В систему команд для поддержки ММХ введено 57 дополнительных команд для одновременной обработки нескольких единиц данных (команды пересылки, арифметические, логи- ческие команды и команды преобразования форматов данных). Команды ММХ доступны из любого режима процессора. Кроме того, в процессорах Pentium ММХ увеличен объем кэша данных и программ (до 16 Кбайт каждый), увеличено число ступеней конвейеров и введено еще несколько усовершенствований, повышающих производи- тельность обычных (не мультимедийных) операций. От процессора Pentium Pro принято отсчитывать шестое поколение процессоров. Pentium Pro по сравнению с Pentium имеет следующие усо- вершенствования : • Динамическое исполнение команд предполагает, что команды, не зависящие от результатов предыдущих операций, могут выполнять- ся в измененном порядке (последующие раньше предыдущих), од- нако последовательность обмена с внешними устройствами (памя- тью и устройствами ввода/вывода) будет соответствовать программе. То есть процессор сам выбирает удобный ему порядок выполнения команд. Это позволяет повысить производительность процессора без увеличения тактовой частоты. • Архитектура двойной независимой шины повышает суммарную пропускную способность. Одна шина (системная) служит для об- мена с основной памятью и устройствами ввода/вывода, а другая (локальная) предназначена только для обмена с вторичным кэшем (см. рис. 7.3). 256
Лекция 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. 257
Глава 7 Организация персонального компьютера Лекция 14. Устройства, входящие в состав персонального компьютера В этой лекции рассматриваются основные устройства, входящие в со- став персонального компьютера, их функции, принципы их организа- ции, принципы обмена информацией с ними. Ключевые слова: оперативная, постоянная и внешняя память ПК, тактовый генератор, системный таймер, контроллеры прерываний и ПДП. 7.3. Память персонального компьютера Как и в любой другой микропроцессорной системе, память персональ- ного компьютера состоит из двух частей: оперативной памяти и постоян- ной памяти. Обе части расположены в адресном пространстве памяти, к обеим компьютер может обращаться одинаковым образом. Обе памяти допускают обращения к отдельным байтам, 16-разрядным словам (имею- щим четные адреса), к 32-разрядным двойным словам (имеющим адреса, кратные четырем) и к 64-разрядным учетверенным словам (имеющим ад- реса, кратные восьми). Различие только в том, что оперативную память используют для временного хранения программ и данных, а в постоянной памяти хранятся программы начального запуска, начального самотести- рования компьютера, атакже набор программ ввода/выводанижнего уров- ня, то есть то, что не должно теряться при выключении питания компью- тера. Объем оперативной памяти гораздо больше, чем постоянной памяти. 7.3.1. Оперативная память Оперативная память занимает значительную часть адресного простран- ства компьютера. Ее установленный объем и быстродействие оказывают огромное влияние на быстродействие персонального компьютера в целом (порой даже большее, чем скорость процессора). Надежность ее работы во многом определяет надежность всего компьютера. Поэтому всеми раз- работчиками ей уделяется большое внимание. Все персональные компьютеры используют оперативную память дина- мического типа (DRAM — Dynamic Random Access Memory), основным преимуществом которой перед статической оперативной памятью (SRAM — Static RAM) является низкая цена. Это связано с тем, что если элемент 258
Лекция 14 Устройства, входящие в состав персонального компьютера статической памяти (триггер) требует 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 битам данных каждого адреса памяти добавля- 259
Глава 7 Организация персонального компьютера ется девятый бит четности. Он записывается при каждой записи инфор- мации в соответствующий байт памяти и проверяется при чтении инфор- мации из соответствующего байта памяти. Если обнаруживается несоот- ветствие бита четности байту информации, то вырабатывается сигнал, вызывающий немаскируемое прерывание NMT. Все адресное пространство памяти компьютера разделяется на несколь- ко областей, что связано, в первую очередь, с необходимостью обеспече- ния совместимости с первыми компьютерами семейства. В компьютере 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 Кбайт. Поэтому сейчас она применяется довольно редко. 260
Лекция 14 Устройства, входящие в состав персонального компьютера В настоящее время область памяти с адресами C0000..DFFFF чаще ис- пользуется для оперативной и постоянной памяти, входящей в состав раз- личных адаптеров и плат расширения компьютера. В результате логическая организация адресного пространства в пределах 1 Мбайт получилась довольно сложной (рис. 7.10). И такую же организацию должны поддерживать все персональные компьютеры семейства IBM PC для обеспечения совместимости с предшествующими моделями. 16M/4G 1М 896 К 832 К 768 К 640 К Extended- память -100000- ROM BIOS ----0Е0000---- Page Frame ----0D0000---- ROM адаптеров ----0С0000---- Видеопамять 32 М Четыре страницы по 16 Кбайт Expanded- память 0А0000 Стандартная (conventional) память ОК 000000 0К Рис. 7.10. Распределение адресного пространства памяти. При дальнейшем расширении адресуемого пространства памяти в пос- ледующих моделях компьютеров вся память объемом свыше 1 Мбайт по- лучила название расширенной памяти (Extended memory). Для доступа к ней микропроцессор должен переходить из реального режима в защищенный и обратно. Общий объем памяти персонального компьютера (верхняя граница расширенной памяти) может доходить до 16 Мбайт (24 разряда адреса) или до 4 Гбайт (32 разряда адреса). Особого упоминания заслуживает так называемая теневая память (Shadow RAM), представляющая собой часть оперативной памяти, в ко- торую при запуске компьютера переписывается содержание постоянной памяти, и заменяющая эту постоянную память на время работы компь- 261
Глава 7 Организация персонального компьютера ютера. Необходимость данной процедуры вызвана тем, что даже срав- нительно медленная динамическая оперативная память оказывается все- таки быстрее, чем постоянная память. Постоянная память часто заметно сдерживает быстродействие компьютера. Поэтому было предложено вы- делять часть оперативной памяти для исполнения обязанностей как си- стемной постоянной памяти ROM BIOS, так и постоянной памяти, вхо- дящей в состав дополнительных адаптеров, которые подключаются к компьютеру. Переписывание информации обычно предусмотрено в про- грамме начального пуска. В связи с особенностями работы динамической памяти для сокраще- ния времени доступа к ней применяются специальные режимы работы опе- ративной памяти: режим расслоения (интерливинг) и страничный режим. Использование режима интерливинга предполагает не совсем обычное разбиение памяти на банки (части). Если при обычном разбиении ( пос- ледовательной адресации) адреса следующего банка начинаются после окончания адресов предыдущего, то при интерливинге адреса банков че- редуются. То есть, например, после первого адреса первого банка следует первый адрес второго банка, затем второй адрес первого банка и второй адрес второго банка и т.д. Получается, что в одном банке четные слова, а в другом — нечетные. Таких чередующихся банков может быть не только два, а четыре, восемь, шестнадцать. Объемы банков при этом должны быть одинаковыми. В результате такого подхода появляется возможность на- чинать обращение к следующему слову еще до окончания процесса доступа к предыдущему. Страничный режим предполагает постраничную работу микросхем па- мяти, когда выбор страницы производится один раз на всю страницу, а выбор ячейки внутри страницы может происходить гораздо быстрее. Для поддержки обоих режимов применяются специальные технологические решения. Здесь же отметим, что при замене памяти компьютера или при уста- новке дополнительных банков памяти надо строго следовать рекоменда- циям изготовителей системных плат, так как порядок заполнения банков может быть далеко не очевиден. 7.3.2. Постоянная память Системная постоянная память (ПЗУ) занимает сравнительно неболь- шой объем (обычно 64 Кбайта). Однако ее значение для компьютера очень велико. Само ее название ROM BIOS (ROM Basic Input/Output System) — базовая система ввода/вывода — говорит о том, что в ней находится фун- кционально полный набор программ нижнего уровня для управления ус- тройствами ввода/вывода. Поэтому даже до загрузки в оперативную память 262
Лекция 14 Устройства, входящие в состав персонального компьютера исполняемых программ с диска компьютер имеет возможность обслужи- вать клавиатуру, дисплей, подавать звуковые сигналы, общаться с диска- ми и т.д. Важно отметить, что большинство современных видеоадаптеров, а также контроллеров накопителей имеют собственную систему 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 позволяет производить простей- шую диагностику основных узлов компьютера, включая определение пол- 263
Глава 7 Организация персонального компьютера ного объема установленной оперативной памяти. Информация о ее ре- зультатах выводится тремя способами: • сообщениями на дисплее (наиболее наглядно и понятно пользова- телю); • звуковыми сигналами (что очень полезно при неработоспособном дисплее); • выдачей кодов в определенный порт ввода/вывода, обычно это порт с адресом 080 (на этом основаны все диагностические приборы). Сообщения на дисплее могут прямо называть обнаруженную неисп- равность или неисправный блок или же выдавать специальный код ошиб- ки, по которому впоследствии в прилагаемой документации можно найти причину неисправности компьютера. Звуковые сигналы Неисправность 1 короткий Все в порядке 2 коротких Ошибка монитора Нет сигналов Источник питания, системная плата Непрерывный сигнал Источник питания, системная плата Повторяющиеся короткие сигналы Источник питания, системная плата 1 длинный, 1 короткий Системная плата 1 длинный, 2 коротких Адаптер дисплея (MDA, CGA) 1 длинный, 3 коротких Адаптер дисплея (EGA) Табл. 7.2. Звуковые сигналы POST BIOS. Звуковые сигналы не отличаются особым разнообразием, но, тем не менее, позволяют обнаружить и идентифицировать основные ошибки. Для примера в табл. 7.2 приведены звуковые сигналы об ошибках, ис- пользуемые BIOS компании IBM (для BIOS других фирм сигналы могут быть иными). Использование специальных диагностических приборов особенно эф- фективно: по некоторым опенкам, с их помощью можно обнаружить до 95% неисправностей. Однако их применяют только специальные сотруд- ники сервисных служб. 264
Лекция 14____________Устройства, входящие в состав персонального компьютере Начиная с компьютеров на процессоре 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 (приос- 265
Глава 7 Организация персонального компьютера тановки работы) при отсутствии обращений к узлам компьютера в тече- ние заданного времени. Режимы перечислены в порядке снижения по- требления электроэнергии. Компьютеры (а также их системные платы), где применяются такие режимы, называются иногда «зелеными». 7.4. Системные устройства Помимо микропроцессора и системной памяти на системной (мате- ринской) плате располагаются и другие важные модули, обеспечивающие работоспособность компьютера: контроллеры прерываний и прямого до- ступа, тактовый генератор, системный таймер, буферные микросхемы, контроллер шины и т.д. В первых компьютерах семейства все эти функ- ции выполняли отдельные специализированные микросхемы сравнитель- но низкой степени интеграции. В современных компьютерах применя- ются сверхбольшие интегральные схемы, которые, тем не менее, обеспечивают полную программную и аппаратную совместимость с пре- дыдущими моделями. Эти микросхемы называются набором микросхем или chipset (чипсет). Преимущества такого подхода — chipset занимает меньше места на плате, меньшая потребляемая мощность, значительно большая надежность. Компьютеры, выполненные на системных платах с chipset известных фирм, имеют лучшую репутацию. В большинство набо- ров микросхем входит так называемый периферийный контроллер, вклю- чающий два контроллера прерываний, два контроллера прямого доступа к памяти, таймер, часы реального времени, а также CMOS-память. 7.4.1. Тактовый генератор Системный тактовый генератор генерирует сигналы синхронизации для работы микропроцессора, всех контроллеров и системной шины. Для обеспечения высокой стабильности тактовых частот и их независимости от температуры применяются кварцевые резонаторы, то есть кристаллы кварца, имеющие высокостабильную частоту собственных колебаний. Как правило, в состав системной платы входит несколько кварцевых резона- торов, каждый из которых обеспечивает свой тактовый сигнал. Тактовую частоту процессора можно выбирать путем установки перемычек на сис- темной плате. Это позволяет пользователю модернизировать компьютер путем замены процессора на другой, рассчитанный на более высокую так- товую частоту. Иногда удается заставить процессор работать на более вы- сокой тактовой частоте, чем та, на которую он рассчитан, но здесь нужно соблюдать осторожность, так как повышение частоты ведет не только к увеличению потребляемой мощности и перегреву микросхемы, но и к ошибкам и сбоям в работе, причем проявляющихся только в отдельных режимах, например, в многозадачном. 266
Лекция 14 Устройства, входящие в состав персонального компьютера В компьютерах на базе процессоров 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) — это тактовая частота систем- ной шины ISA (сигнал 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. Контроллер прерываний Контроллеры радиальных прерываний в первых компьютерах выпол- нялись на микросхемах 18259, каждая из которых имела 8 входов запроса прерываний. В IBM PC АТ применялось две таких микросхемы, в резуль- тате чего количество входов запросов прерываний увеличилось до 15. Ре- жимы работы контроллеров прерываний определяются процессором пу- 267
Глава 7 Организация персонального компьютера тем записи соответствующих управляющих кодов по адресам в простран- стве устройств ввода/вывода. О циклах обмена по прерываниям уже говорилось в разделе 2.2.2. При поступлении запроса прерывания на один из входов IRQ и удовлетворении этого запроса контроллер прерываний вырабатывает выходной сигнал запро- са прерывания, поступающий на процессор. В ответ на это процессор запрашивает контроллер о том, прерывание с каким адресом вектора необхо- димо обслужить. Всего прерываний может быть 256 (от 00 до FF). Номер прерывания, полученный от контроллера, процессор умножает на 4 и получает, таким образом, адрес памяти, где хранится адрес начала программы обработки прерываний (вектор прерывания). Присваивание каждому из каналов IRQ своего номера процессор осуществляет на этапе инициализации контроллера. Контроллер прерываний может выполнять следующий набор операций: • маскирование запросов на прерывание, то есть временное запреще- ние реакции на них; • установка приоритетов запросов по различным входам, то есть раз- решение конфликтов при одновременном приходе нескольких зап- росов на прерывание; • работа в качестве основного контролера (Master) или подчиненного (Slave). Для маскирования прерываний используется внутренний регистр кон- троллера, программно доступный процессору как по записи, так и по чте- нию. Замаскирован может быть каждый запрос (по каждой из линий IRQ), путем установки соответствующего бита маскирования в записываемом в контроллер управляющем байте. Схема приоритетов прерываний может быть задана процессором про- граммным путем. В базовом варианте все приоритеты фиксированы (то есть IRQ0 имеет высший приоритет, a IRQ7 — низший). Но в принципе высший уровень приоритета задается для любого из входов запросов, мож- но также установить циклическое переключение приоритетов (последний обслуженный запрос получает низший приоритет), обеспечивая тем са- мым всем запросам равные приоритеты. Если во время обработки преры- вания с меньшим уровнем приоритета приходит более приоритетный зап- рос, то процессор переходит на программу обработки более приоритетного запроса, а после ее выполнения возвращается к программе обработки ме- нее приоритетного запроса. Отметим, что немаскируемое прерывание NMI имеет приоритет выше любого другого аппаратного прерывания. Завершив выполнение программы обработки прерывания, процессору необходимо с помощью специальной команды сообщить об этом контрол- леру прерываний, чтобы разрешить ему дальнейшую работу, в частности, вновь обрабатывать тот же самый запрос. 268
Лекция 14 Устройства, входящие в состав персонального компьютера Контроллер 8259 предусматривает возможность выбора способа рас- познавания запроса на прерывание — по фронту сигнала IRQ и по уровню этого сигнала, В архитектуре компьютера типа PC используется запрос по фронту. При каскадировании контроллеров основному контроллеру надо ука- зать, к какому из его входов подключен подчиненный контроллер, а под- чиненному контроллеру необходимо указать, к какому входу основного контроллера подключен его выходной сигнал запроса. Все операции начальной настройки контроллеров прерываний выпол- няет BIOS, и пользователю нужно прибегать к программированию этих контроллеров только при необходимости смены режимов обслуживания прерываний или при написании собственной программы обработки ап- паратных прерываний. 7.4.3. Контроллер прямого доступа к памяти Контроллер прямого доступа к памяти имеет более сложную структуру по сравнению с контроллером прерываний, что связано с его более слож- ными функциями. На время ПДП контроллер ПДП становится задатчи- ком (активным устройством) системной шины, выставляя все основные сигналы шины самостоятельно. Однако все режимы работы контроллера ПДП, все его параметры устанавливаются процессором на этапе инициа- лизации контроллера. В частности, процессор определяет тип решаемой задачи, задает начальный адрес передаваемого или принимаемого масси- ва данных, а также размер этого массива. В персональном компьютере применяется два четырехканальных кон- троллера ПДП типа 18237, обеспечивающих 7 каналов ПДП (один канал задействован под каскадирование контроллеров по тому же принципу, что и контроллеры прерываний). Помимо собственно контроллеров ПДП в подсистему ПДП входят также программно доступные регистр старшего байта адреса и регистры страниц ПДП. О циклах обмена в режиме ПДП уже говорилось в разделе 2.2.3. Получив сигнал запроса ПДП по одной из линий DRQ, контроллер формирует запрос процессору на захват шины и, получив разрешение от процессора, сообщает о предоставлении ПДП запросившему прямой доступ устройству по соответствующей линии DACK. После этого производится цикл ПДП, пере- сылающий данные из устройства ввода/вывода в память или наоборот. При этом сам контроллер ПДП формирует только 16 младших разрядов адреса памяти, а восемь старших разрядов содержатся в регистре страниц. Свой собственный регистр страниц соответствует каждому из каналов ПДП. Передача данных в случае ПДП возможна по одному из следующих ре- жимов: 269
Глава 7 Организация персонального компьютера • Режим одиночной (поцикловой) передачи. В этом случае за время предоставления ПДП выполняется только один цикл передачи дан- ных, и для следующей передачи надо опять же запросить ПДП. Од- нако адрес памяти, с которым осуществляется обмен, автоматически меняется после каждого цикла. Этот режим позволяет процессору вставлять свои циклы обмена после каждого цикла ПДП. • Режим передачи блока (режим блочной передачи). В этом режиме за один раз передается целый блок данных определенной длины (до 64 Кбайт). Режим обеспечивает более высокую скорость передачи по сравнению с режимом одиночной передачи, но может на длительное время захватить системную шину, не допуская к ее управлению про- цессор. • Режим передачи по требованию. Этот режим позволяет продолжать ПДП до тех пор, пока устройство, запросившее ПДП, не исчерпает весь объем данных. • Каскадный режим позволяет объединять контроллеры для увеличе- ния количества каналов ПДП. • В принципе, возможен режим передачи в режиме ПДП из памяти в память, но в компьютере он не используется. Как и в случае контроллера прерываний, возможны две схемы приорите- тов каналов ПДП, выбираемые программно, — фиксированный и цикличес- кий. Исходная схема — фиксированные приоритеты, причем нулевой канал имеет максимальный приоритет, а седьмой — минимальный. Во время обслуживания любого запроса ПДП остальные запросы не могут вмешаться, но после завершения обслуживания данного запроса будет обслуживаться запрос с наибольшим приоритетом. Как и в случае контроллера прерываний, возможно программное маскирование каждого канала ПДП. Перед началом работы каждому из каналов контроллера процессор дол- жен указать режим, в котором он будет работать, базовый адрес памяти, с которого начнется обмен, количество передаваемых байтов или слов, на- правление записи в память или чтения из памяти (от старших адресов к младшим или наоборот). Возможен режим автоинициализации, при кото- ром после окончания пересылки всего массива данных контроллер автома- тически восстанавливает все параметры, и для этого не требуется вмеша- тельство процессора. Предусмотрена также возможность программного запроса ПДП, обслуживаемого так же, как и аппаратный запрос. 7.4.4. Системный таймер и часы реального времени В качестве системного таймера компьютера используется микросхема трехканального 16-разрядного таймера i8254 или ее аналог. Таймер предназначен для получения программно управляемых временных 270
Лекция 14 Устройства, входящие в состав персонального компьютера задержек и генерации сигналов заданной частоты. Таймер позволяет повысить эффективность программирования процессов управления и синхронизации внешних устройств, особенно в реальном времени. Таймер содержит три независимых канала (0, 1 и 2), каждый из кото- рых может быть, в принципе, запрограммирован на работу в одном из шести режимов счета: • прерывание терминального счета; • программируемый генератор одиночного импульса; • генератор импульсов заданной частоты; • генератор прямоугольных импульсов типа «меандр»; • программно формируемый строб; • аппаратно формируемый строб. На каждый канал могут подаваться входные синхросигналы. Из каж- дого канала можно получать сигнал с частотой, равной входной частоте, деленной на произвольное 16-разрядное число. В компьютере на все вхо- ды поступают синхросигналы частотой 1,19 МГц. Все каналы таймера в компьютере имеют специальное назначение, поэтому особой свободы в выборе режима работы или переназначении функций у пользователя нет. • Выход канала 0 связан с сигналом запроса прерывания IRQ0 и обес- печивает прерывание для счетчика реального времени (использует- ся режим работы 3). Пользователю не рекомендуется перепрограм- мировать этот канал. При старте компьютера канал программируется так, чтобы выдавать импульсы примерно 18,2 раза в секунду. По этому прерыванию программно увеличивается состояние счетчика реаль- ного времени. Пользователь может читать состояние данного счет- чика из специально выделенной ячейки памяти и применять его для задержек в своих программах. • Выход канала 1 генерирует сигнал запроса регенерации динамической памяти (режим работы 2). Использование этого канала не по назначе- нию может привести к потере содержимого оперативной памяти. • Выход канала 2 генерирует тональный сигнал для встроенного ди- намика компьютера (режим работы 3). Однако разрешение этого то- нального сигнала производится установкой выделенных разрядов (О и 1) программно доступного параллельного порта контроллера пе- риферийных устройств. Один разряд (0) разрешает работу канала, другой разряд (1) пропускает выходной сигнал на динамик. Таким образом, пользователь компьютера может задействовать только канал 2. Чаше всего его применяют для генерации звуков заданной частоты и длительности. Кроме того, выходной сигнал данного канала программно доступен по чтению из одного из разрядов параллельного порта. Это позво- ляет, запрограммировав таймер соответствующим образом, выдерживать 271
Глава 7 Организация персонального компьютера нужные временные интервалы. Для этого следует программно разрешить генерацию (при отключенном динамике), а затем программно опрашивать выходной сигнал таймера и принимать решения по изменению его уровня. Подсистема часов реального времени в первых компьютерах выполня- лась на микросхеме контроллера MCI46818 фирмы Motorola. Этот кон- троллер содержит 64 байта CMOS-памяти, из которых первые 14 байт ис- пользуются для часов реального времени, а остальные 50 байт хранят информацию о конфигурации системы. Для входного тактового сигнала контроллера применяется специаль- ный «часовой» кварцевый генератор с частотой 32 768 кГц, что позволяет с помощью деления частоты получить импульсы с частотой 1 Гц. Кон- троллер считает секунды, минуты, часы, дни недели, месяцы и годы. Причем работает он даже при отключении питания компьютера, подпитываясь от батареи или аккумулятора. Это позволяет сохранять информацию о текушем времени постоянно. Помимо счетчика текущего времени, контроллер имеет в своем составе будильник. Будильник может формировать прерывания (IRQ8) с про- граммно заданной периодичностью. Состояния всех счетчиков (секунд, минут, часов и т.д.) программно доступны как по чтению, так и по записи, что позволяет устанавливать нужное время и следить за ним. 7.5. Средства интерфейса пользователя Для связи компьютера с пользователем (то есть организации интер- фейса пользователя) применяются видеоадаптер, управляющий видео- монитором, клавиатура и графический манипулятор типа «мышь» (mouse), touch pad или stick pointer. Видеоадаптер представляет собой устройство сопряжения компьютера с видеомонитором и чаще всего выполняется в виде специальной платы расширения, вставляемой в системную шину или локальную шину ком- пьютера. При этом изображение, формируемое на экране монитора, хра- нится в видеопамяти, входящей в состав видеоадаптера. Видеопамять представляет собой оперативную память, которая, хотя и не является, по сути, системной памятью, рассматривается процессором как часть системной памяти с адресами А0000 — BFFFF (всего 128 Кбайт). То есть с этой памятью процессор может взаимодействовать как с сис- темной оперативной памятью: писать информацию в любую ячейку и читать информацию из любой ячейки. Но одновременно эта же память постоянно сканируется (то есть последовательно опрашивается) самим ви- деоадаптером для формирования растрового изображения на экране монитора. То есть доступ к этой памяти имеют как процессор, так и видеоадаптер. 272
Лекция 14 Устройства, входящие в состав персонального компьютера Скорость обмена с видеопамятью — довольно важный параметр, он вли- яет на удобство работы с компьютером и часто определяет круг задач, кото- рый может им выполняться. Поэтому для видеопамяти используют самые быстродействующие микросхемы. Кроме того, применяют специальные ар- хитектурные решения, позволяющие облегчить разделение доступа к па- мяти со стороны процессора и видеоадаптера. Например, в случае двухпор- товой памяти 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. Отсюда нетрудно рассчитать требуемый для полного экрана объем 273
Глава 7 Организация персонального компьютера видеопамяти. Так, например, при разрешении 800x600 точек и при 256 цветах (8 бит или 1 байт) требуется 800x600x1 = 480 000 байт памяти. При разрешении 1024x768 и 65 536 цветов (2 байта) требуется 1024x768x2 = 1572 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. Другое направление ускорения формирования изображения—совершенствование принципов обмена с компьютером. Первые видеоадаптеры были рассчитаны на то, чтобы все манипуляции с изображением проводил сам центральный процес- сор компьютера. Принципиально иной подход — использование графического 274
Лекция 14 Устройства, входящие в состав персонального компьютера сопроцессора. При этом центральный процессор только дает команды на форми- рование изображения, а сопроцессор, расположенный на плате видеоадаптера, сам уже выполняет всю обработку, расчеты и формирование объектов на экране, что дает большое увеличение скорости формирования изображений. Промежуточный вариант — это применение так называемых графических ускорителей, то есть узлов, выполняющих наиболее трудоемкие операции по формированию изображений, но центральный процессор при этом не освобождается полностью от управления видеопамятью. В настоящее время наиболее распространены два стандарта дисплеев: • 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, в отличие otXGA, используется только прогрессивная (сплошная, non-interlaced, NI), а не чересстрочная (interlaced) развертка изображения на экране монитора, что обеспечивает малые мерцания. Оба стандарта поддер- живают полную совместимость с SVGA. • UVGA (Ultra VGA) — основным разрешением считается 1280x1024 точек. • UXGA — разрешение 1600x1200 точек, XVGA — 1280x768 точек. Для подключения к компьютеру клавиатуры применяется специальный интерфейс с последовательной передачей информации. Это позволяет ис- пользовать для присоединения клавиатуры всего два двунаправленных про- вода (линия данных и тактовый сигнал). Обмен информацией идет 11-би- товыми посылками, включающими 8 разрядов данных и служебную информацию (то есть стартовый бит, бит четности и столовый бит). В ком- пьютере IBM PC XT для подключения клавиатуры использовалась микро- схема PPI (Programmable Peripheral Interface) i8255, а в PC AT — микросхема UP1 (Universal Peripheral Interface) i8042. Принцип работы клавиатуры довольно прост. Он сводится к постоян- ному сканированию (последовательному опросу) всех клавиш (обычно 275
Глава 7 Организация персонального компьютера применяется 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 в следующей главе. Сейчас используется 276
Лекция 14 Устройства, входящие в состав персонального компьютера также подключение мыши через интерфейс PS/2, похожий на RS-232C, но не совместимый с ним ни электрически, ни конструктивно. Альтернатива мыши — это манипуляторы Stick Pointer и Touch Pad, которые не имеют движущихся механических частей. Сначала они применялись только в ноутбуках, но затем их стали размещать и на клавиатурах обычных настольных компьютеров. Stick Pointer представляет собой небольшой рычажок, расположенный между клавишами. Давление на него в разные стороны вызывает перемещение курсора на экране. При этом сам рычажок остается неподвижным. Touch Pad представляет собой небольшую площадку, расположенную рядом с клавишами, по которой необходимо двигать пальцем или ручкой, причем движение пальца вызывает такое же перемещение курсора на экране. С точки зрения компьютера эти манипуляторы ничем не отличаются от мыши, они используют тот же интерфейс. Игровой адаптер джойстик подключается к компьютеру через собствен- ный специальный интерфейс. Для связи с джойстиком не требуется ника- ких прерываний. Используется только один адрес ввода/вывода. 7.6. Внешняя память Внешняя память компьютера представляет собой дисковые накопители информации — встроенный накопитель на жестком диске (винчестер) и нако- питель на сменных гибких дисках (дискетах). В обоих случаях магнитные диски хранят информацию в виде намагниченных концентрических дорожек (цилиндров) на магнитном покрытии, разбитых на сектора. Диск в накопителе постоянно вращается, а запись и чтение информации производятся перемещае- мыми вдоль радиуса диска магнитными головками. Благодаря постоянному прогрессу технологии производства накопителей, развитию технологии магнитных покрытий и магнитных головок, емкость винчестеров повысилась до нескольких десятков гигабайт, а емкость дискет — до сотен мегабайт (правда, стандартным пока считается объем дискеты 1,44 Мбайт). Подробное описание работы дисководов и принципов хранения информа- ции на магнитных дисках потребовало бы слишком много места, к тому же оно не имеет прямого отношения к теме данной книги, поэтому мы здесь приве- дем только некоторые особенности организации обмена информацией. Важный параметр любого дисковода — это его быстродействие, которое определяется, с одной стороны, достижимой скоростью записи/чтения ин- формации, а с другой — временем позиционирования (то есть установки в нужное положение) магнитной головки дисковода. Немаловажно и быст- родействие интерфейса, осуществляющего связь компьютера с накопите- лем, а также применяемые способы организации обмена информацией. В настоящее время наиболее распространены два стандартных интер- фейса для винчестеров: 277
Глава 7 Организация персонального компьютера • 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). Так как винчестер — это блочно- 278
Лекция 14 Устройства, входящие в состав персонального компьютера ориентированное устройство (размер блока равен 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. На компакт-диск записываются не только данные, но и звук, а также изображение. Существуют компакт-диски с возможностью однократной записи или даже многократной перезаписи информации с компьютера. Возможно, дисководы, поддерживающие такие диски, вскоре войдут в стандартную комплектацию персонального компьютера. Правда, скорость записи информации на компакт-диски обычно существенно ниже скорости чтения информации. 279
Глава 8 Интерфейсы персонального компьютера Глава 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. Кроме того, компьютеры могут иметь разъемы для подключения внеш- него монитора, клавиатуры, мыши. Некоторые компьютеры имеют встро- енные модемы и сетевые адаптеры, тогда они располагают, соответствен- но, телефонным и сетевым внешними интерфейсами. Подключение стандартных внешних устройств обычно не вызывает никаких проблем: надо только присоединить устройство к компьютеру со- ответствующим стандартным кабелем и (возможно) установить на ком- 280
Лекция 15 Системная магистраль ISA пьютер программный драйвер. Знать особенности внешних интерфейсов пользователю в данном случае не обязательно. В случае инфракрасного порта не нужен даже кабель. Гораздо сложнее ситуация, когда к компьютеру требуется присоеди- нить нестандартное внешнее устройство. В этом случае необходимо дос- кональное знание особенностей используемых интерфейсов и умение эф- фективно с ними работать. Ограниченный объем книги не позволяет полностью рассмотреть данный вопрос, поэтому мы остановимся только на общем описании некоторых внешних интерфейсов компьютера. Чаще всего для подключения нестандартных внешних устройств ис- пользуются системная магистраль 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 Кбайт). Магистраль поддерживает регенерацию дина- мической памяти, радиальные прерывания и прямой доступ к памяти. До- пускается также захват магистрали. 281
Глава 8 Интерфейсы персонального компьютера Разъем магистрали ISA разделен на две части, что позволяет уменьшать размеры 8-разрядных плат расширения, а также использовать платы, раз- работанные для компьютеров IBM PC XT. Внешний вид плат расширения показан на рис. 8.1. Назначение контактов разъемов представлено в Табл. 8.1 и 8.2. На магистрали присутствуют четыре напряжения питания: +5 В. -5 В, +12 В и -12 В, которые могут использоваться платами расширения. Сторона установки элементов Сторона монтажа Рис. 8.1. Нумерация контактов разъема ISA (для IBM PC XT — только Al... А31 и Bl ... В31). В роли задатчика (Master) магистрали могут выступать процессор, кон- троллер ПДП, контроллер регенерации или другое устройство. Исполни- телями (Slave) могут быть системные устройства компьютера, подключен- ные к ISA, или платы (карты) расширения. Наиболее распространенное конструктивное исполнение магистрали — разъемы (слоты), все одноименные контакты которых параллельно соеди- нены между собой, то есть все разъемы абсолютно равноправны. В слоты устанавливаются платы расширения, которые оснащены интерфейсными разъемами магистрали, выполненными печатными проводниками на краю платы. Количество установочных мест для плат расширения зависит от типа корпуса компьютера и составляет обычно от 2 до 8 и даже более. В таблицах 8.1 и 8.2 знак минус перед названием сигнала говорит о том, что активному (рабочему) уровню сигнала соответствует низкий уровень напряжения на соответствующей линии магистрали. На линиях адреса и 282
Лекция 15 Системная магистраль ISA данных логическому нулю соответствует низкий уровень напряжения, а единице — высокий (то есть логика положительная). Контакт Цепь Контакт Цепь А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 BL4 -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 B2I 1RQ7 Табл. 8.1. Назначение контактов разъема магистрали ISA. 283
Глава 8 Интерфейсы персонального компьютера Контакт Цепь Контакт Цепь А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 С1 -SBHE D1 -MEM CS16 & ;S С2 LA23 D2 -I/O CS16 СЗ LA22 D3 IRQ 10 С4 LA21 D4 IRQ 11 й С5 LA20 D5 IRQ12 С6 LA19 D6 IRQ15 I С7 LA18 D7 IRQ14 1 С8 LA17 D8 -DACK0 Табл. 8.2. Назначение контактов разъема магистрали ISA (начало в Табл. 8.1). 284
Лекция 15 Системная магистраль ISA Контакт Цепь Контакт Цепь С9 -MEMR D9 DRQ0 СЮ -MEMW D10 -DACK5 С11 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 — старший байт. 285
Глава 8 Интерфейсы персонального компьютера • -SMEMR, -MEMR — стробы чтения данных из памяти. Сигнал - SMEMR вырабатывается только при обращении к адресам, не пре- вышающим FFFFF (находящимся в пределах младшего 1 Мбайта), а сигнал -MEMR — при обращении ко всем адресам памяти. • -SMEMW, -MEMW — стробы записи данных в память. Сигнал - SMEMW вырабатывается только при обращении к адресам, не пре- вышающим FFFFF (находящимся в пределах младшего 1 Мбайта), сигнал -MEMW — при обращении ко всем адресам памяти. • -TOR — строб чтения данных из устройств ввода/вывода. При актив- ном сигнале адресуемое устройство ввода/вывода должно выдать свои данные на шину данных. • -IOW — строб записи данных в устройства ввода/вывода. По этому сигналу адресуемое устройство ввода/вывода должно принять дан- ные с шины данных. • -MEM CS16 — сигнал выставляется памятью для сообщения задат- чику о том, что она имеет 16-разрядную организацию. Вырабатыва- ется в ответ на распознавание адреса памяти. • -I/O CS16 — сигнал выставляется устройством ввода/вывода для со- общения задатчику о том, что оно имеет 16-разрядную организацию, и необходим 16-разрядный цикл обмена. Вырабатывается в ответ на распознавание своего адреса. • I/O CH RDY — сигнал снимается (делается низким) исполнителем (устройством ввода/вывода или памятью) по переднему фронту сиг- налов -IOR и -IOW в случае, если он не успевает выполнить нужную операцию в темпе задатчика. То есть этот сигнал используется для асинхронного обмена по магистрали. • -I/O СН СК — сигнал вырабатывается любым исполнителем (устрой- ством ввода/вывода или памятью) для информирования задатчика о фа- тальной ошибке, например, об ошибке четности при доступе к памяти. • -0WS — сигнал выставляется исполнителем для информирования за- датчика о необходимости проведения цикла обмена без вставки так- та ожидания. • - REFRESH — сигнал регенерации, выставляется контроллером ре- генерации для информирования всех устройств на магистрали о выполнении циклов регенерации динамической памяти компью- тера. • RESET DRV — сигнал сброса в начальное состояние всех устройств на магистрали. Вырабатывается центральным процессором при включении или сбое питания, а также при нажатии на кнопку сброса RESET компьютера. 286
Лекция 15 Системная магистраль ISA • 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 приведены временные диаграммы циклов обмена с устрой- ствами ввода/вывода. Для простоты на одном рисунке показаны как цикл записи, так и цикл чтения, хотя производятся они, конечно, в разное время. 287
Глава 8 Интерфейсы персонального компьютера Рис. 8.2. Временные диаграммы циклов программного обмена с устройствами ввода/вывода (все интервалы в наносекундах). Если исполнитель не успевает выполнить команду в темпе магистра- ли, он может приостановить на целое число периодов Т сигнала SYSCLK завершение цикла чтения или записи за счет снятия (перевода в низкий уровень) сигнала I/O CH RDY (так называемый удлиненный цикл). Это производится в ответ на получение переднего фронта сигнала -IOR или -IOW. Сигнал I/O CH RDY может удерживаться низким не более 15,6 мкс, в противном случае процессор переходит в режим обработки немаскируе- мого прерывания NMI. Разработчику ISA-устройств необходимо, прежде всего, обращать вни- мание на те временные интервалы, которые связаны с быстродействием аппаратуры этих устройств. Например, на обработку адреса селектору ад- реса отводится не более 91 нс, а буфер данных в цикле чтения должен выдавать данные на магистраль не более чем за ПО нс. При циклах программного обмена с памятью используются те же са- мые сигналы, только вместо строба чтения -1OR применяются стробы чтения -MEMR и -SMEMR, а вместо строба записи -IOW — стробы записи -MEMW и -SMEMW. Для определения байтового или словного формата данных применяется сигнал -MEM CS16. Для асинхронного режима об- 288
Лекция 15 Системная магистраль ISA мена (удлиненного цикла) здесь также используется сигнал I/O CH RDY. Отметим, что память должна обрабатывать все адресные разряды магист- рали, включая и LA17...LA23. На рис. 8.3 показана временная диаграмма обмена с памятью, причем здесь указаны только временные интервалы, отличающиеся от аналогич- ных интервалов на Рис. 8.2. Для простоты на одном рисунке показаны как цикл записи в память, так и цикл чтения из памяти. Рис. 8.3. Временные диаграммы циклов программного обмена с памятью (все интервалы в наносекундах). В случае циклов прямого доступа к памяти (ПДП) используется другой протокол обмена. Так как магистраль ISA имеет раздельные стробы чте- ния и записи для устройств ввода/вывода и для памяти, пересылка дан- ных в режиме ПДП производится за один машинный цикл. То есть если данные надо переслать из устройства ввода/вывода в память, то одновре- менно производится чтение данных из устройства ввода/вывода (по сиг- налу -IOR) и их запись в память (по сигналу -MEMW). Аналогично осу- ществляется пересылка данных из памяти в устройство ввода/вывода (по сигналам -MEMR и -IOW). 289
Глава 8 Интерфейсы персонального компьютера Цикл ПДП (рис. 8.4) начинается с запроса ПДП от исполнителя, же- лающего произвести обмен, с помощью одного из сигналов DRQ. После освобождения магистрали текущим задатчиком (например, процессором) контроллер ПДП через время t формирует соответствующий сигнал -DACK, говорящий о предоставлении ПДП запросившему его. Рис. 8.4. Временная диаграмма циклов прямого доступа к памяти (все интервалы в наносекундах). Затем контроллер ПДП вырабатывает адрес ячейки памяти, с которой будет производиться обмен в текущем цикле, и сигнал AEN, который го- ворит устройству ввода/вывода о том, что к нему идет обращение в режи- ме ПДП. После этого выставляется строб чтения (-IOR или -MEMR), в ответ на который источник передаваемых данных выставляет свою ин- формацию на шину данных, и строб записи (-MEMW или -IOW), по которому данные записываются в приемник данных. Здесь так же, как и в обычном цикле, возможен асинхронный обмен (удлиненный цикл) с ис- пользованием сигнала I/O CH RDY. Для простоты на одном рисунке показано два цикла: передачи из памяти в устройство ввода/вывода и передачи из устройства ввода/вывода в память. Временные интервалы этих двух циклов несколько различаются. 290
Лекция 15 Системная магистраль ISA При аппаратных прерываниях протокол обмена совсем простой, так как прерывания используются радиальные. Исполнитель, желающий иници- ировать прерывание, выставляет свой запрос (положительный переход на одной из линий IRQ) на магистраль. Контроллер прерываний, получив этот запрос, преобразует его в запрос прерываний процессора. Процессор, закончив выполнение текущей команды, переходит на адрес начала про- граммы обработки данного прерывания, который однозначно определя- ется по номеру используемого сигнала IRQ. После обработки прерывания процессор возвращается к основной программе. Для проведения регенерации динамической памяти компьютера исполь- зуются специальные циклы регенерации (Рис. 8.5). -REFRESH SA0...SA7 -МЕМТ, -SMEMR I/O CH RDY Рис. 8.5. Временные диаграммы циклов регенерации на ISA (все интервалы указаны в наносекундах). Такие циклы выполняет контроллер регенерации, который должен для этого получать управление магистралью каждые 15 микросекунд. Во вре- мя цикла регенерации производится чтение одной из 256 ячеек памяти (для адресации при этом используются только восемь младших разрядов адреса SA0...SA7). Читаемая информация нигде не применяется, то есть это цикл псевдочтения. Проведение 256 циклов регенерации, то есть псев- дочтение из 256 последовательных адресов памяти, обеспечивает полное обновление информации в памяти и ее непрерывное сохранение. Если по каким-то причинам цикл регенерации памяти не производится вовремя, возможна потеря информации. Цикл регенерации включает в себя выставление сигнала -REFRESH, сигналов кода адреса SA0...SA7 и строба чтения из памяти -MEMR. В слу- чае необходимости может использоваться сигнал I/O CH RDY, обеспечи- вающий асинхронный обмен. 291
Глава 8 Интерфейсы персонального компьютера При включении питания, а также при нажатии кнопки RESET на пе- редней панели компьютера на магистрали вырабатывается сигнал RESET DRV, который используется всеми устройствами, подключенными к ма- гистрали для сброса в исходное состояние и отключения от магистрали. Захват магистрали сторонним задатчиком, в принципе, предусмотрен- ная стандартом, используется на практике довольно редко, так как требует от устройства, захватившего магистраль, полного управления ею, включая и поддержку периодической регенерации памяти. Электрические характеристики магистрали предъявляют жесткие тре- бования ко всем подключаемым устройствам по величине входных и вы- ходных токов, а также по потребляемой мощности. В противном случае возможен выход из строя всего компьютера в целом. Стандарт определяет, что выходной ток любого источника магистраль- ных сигналов не должен быть меньше 24 мА, а входной ток любого при- емника магистральных сигналов не должен превышать 0,8 мА. Кроме того, нарушения в работе компьютера может вызвать несоблюдение временных ограничений, накладываемых используемыми протоколами обмена во всех рассмотренных циклах. 8.1.3. Распределение ресурсов компьютера Помимо архитектуры аппаратных средств и параметров системной шины специфика любого компьютера определяется принятым стандарт- ным распределением всех его ресурсов. Соблюдать правила, установлен- ные этим распределением, должны и программисты (как системные, так и занимающиеся разработкой прикладных программ), и разработчики до- полнительного оборудования, и даже тс пользователи, которые просто хо- тят установить в компьютер новую плату расширения. В случае малейше- го нарушения этих правил возможны как непредсказуемые сбои в работе компьютера, невозможность его начальной загрузки, так и полный выход компьютера из строя. Под распределением ресурсов в данном случае понимается: • распределение адресного пространства системной памяти, отведе- ние отдельных областей памяти под особые цели; • распределение адресного пространства устройств ввода/вывода, в том числе для системных средств компьютера; • распределение каналов запроса прерываний, в том числе для сис- темных устройств; • распределение каналов запроса прямого доступа к памяти. Понятно, что если программист захочет использовать те адреса памяти, которые отведены для системных нужд (например, для памяти дисплея или системных таблиц), то работоспособность компьютера нару- 292
Лекция 15 Системная магистраль ISA шится. Если выполняемая программа попытается записать какую-либо ин- формацию по тем адресам системной памяти, которые стандартом отведены под постоянную память (ROM), то записываемая информация будет просто потеряна, и программа работать не будет. Если писать информацию по тем адресам памяти, которые отведены под видеопамять, то будет искажаться изображение на экране видеомонитора. Если вставляемая в компьютер плата расширения использует непра- вильные (занятые другими устройствами) адреса в адресном пространстве памяти, то ее работа будет невозможна, и не исключен даже выход из строя аппаратуры компьютера (так как при циклах чтения из перекрывающихся адресов памяти два устройства будут выставлять свои данные на шину од- новременно, что может стать причиной выгорания буферных микросхем). Если разработчик платы расширения с устройством ввода/вывода или пользователь, подключающий новую плату расширения, установят адрес своего устройства так, что он будет совпадать с адресом системного уст- ройства или адресом другой платы расширения, то возможны конфликты при обращении к данному устройству. При этом в цикле записи инфор- мация будет записываться не в одно, а в два или более устройств, а в цикле чтения на шину данных будут одновременно выставлять свои данные не одно, а несколько устройств. То есть в цикле записи возможно нарушение установленных режимов работы системных устройств (например, контрол- лера прерываний или контроллера ПДП) или неправильная работа новой платы расширения, а в цикле чтения — даже выход из строя одного из ус- тройств, выставляющих свои данные на магистраль одновременно. Если при подключении к компьютеру новой платы расширения уста- новить для нее неправильный канал запроса прерывания, это может при- вести к тому, что данное прерывание просто не будет обслуживаться. Мо- жет также перестать обслуживаться прерывание от системного устройства, с которым конфликтует новая плата. В худшем случае это может вызвать выход из строя новой платы расширения или же системного устройства. Точно также при неправильном выборе номера канала запроса прямого доступа к памяти может перестать обслуживаться запрос ПДП системного устройства, а может выйти из строя системное устройство или новая плата расширения. То есть соблюдение правил стандартного распределения ре- сурсов компьютера — это не чья-то прихоть, а жизненная необходимость. Правда, в последнее время получила распространение снимающая дан- ные проблемы технология автоматического распределения ресурсов Plug- and-Play (PnP, Р&Р), что можно перевести как «Вставляй и работай». При этом пользователю достаточно просто подключить свою плату к компью- теру, а все операции по распределению ресурсов компьютер выполнит са- мостоятельно, и любые конфликты будут автоматически устранены. 293
Г лава 8 Интерфейсы персонального компьютера Но для этого необходимо обязательное выполнение двух условий. Во- первых, технологию РпР должен поддерживать данный компьютер и его программное обеспечение. Во-вторых, эту технологию должно поддержи- вать подключаемое к компьютеру устройство. Определить это довольно про- сто: если на плате имеются переставляемые перемычки или механические переключатели для задания параметров платы (адресов портов ввода/выво- да, номера используемого прерывания, базового адреса памяти, номера ка- нала ПДП), то можно смело утверждать, что выбор конфигурации, учет стан- дартного распределения ресурсов компьютера ложится на пользователя. Компьютер здесь не помощник. Конечно же, перед установкой в компью- тер новых плат расширения следует внимательно прочитать инструкцию и точно следовать ей. Подробнее о работе режима РпР будет рассказано ниже. А теперь рассмотрим принятое в персональных компьютерах стандар- тное распределение ресурсов. О стандартном распределении памяти уже говорилось в предыдущей главе. Чуть подробнее распределение адресов памяти описано в табл. 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. Распределение адресов памяти (адреса даны в шестнадцатеричном коде). 294
Лекция 15 Системная магистраль ISA Важно помнить, что помимо этого распределения, общего для любых программных и аппаратных средств, существуют еще и распределения па- мяти, специфические для каждой операционной системы. Их также не- обходимо учитывать во избежание отказа при выполнении системных про- грамм. Отметим, что в современных компьютерах, конечно же, не используются давно устаревшие дисплеи стандартов CGA или MDA. Од- нако в том случае, если требуется универсальность программного обеспе- чения, надо учитывать и то, что его могут попытаться запустить на компь- ютерах с подобными дисплеями. Стандартное распределение адресов в адресном пространстве устройств ввода/вывода персонального компьютера приведено в табл. 8.4. Как уже отмечалось, стандарт допускает адресацию 64К устройств вво- да/вывода (то есть можно использовать 16 разрядов адреса). Однако по- давляющее большинство плат расширения для упрощения аппаратуры ис- пользует только 10 младших разрядов, что соответствует всего 1К (или 1024) адресов (от ООО до 3FF в шестнадцатеричном коде). При этом 16-разряд- ные порты ввода/вывода имеют четные адреса, то есть их может быть всего 512. Адреса Назначение 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. Распределение адресов устройств ввода/вывода. 295
Г лава 8 Интерфейсы персонального компьютера Адреса Назначение 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 представлено стандартное распределение номеров аппарат- ных прерываний и соответствующих им номеров в таблице векторов пре- рываний (TNT). Как видно из таблицы, большинство входов IRQ заняты системными ресурсами компьютера. Свободны (зарезервированы) только четыре ка- 296
Лекция 15 Системная магистраль ISA нала: 10, 11, 12, 15, причем они находятся на 16-разрядной части разъема магистрали ISA. Правда, иногда в компьютерах применяется только один параллельный порт или (гораздо реже) только один последовательный порт, и тогда свободными оказываются еще IRQ3 и IRQ5. Сигналы IRQ0...IRQ2, IRQ8 и TRQ13 задействованы на системной плате и недоступны платам расширения. Номер прерывания 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 Параллельный порт LPT 1 Табл. 8.5. Распределение каналов аппаратных прерываний. В компьютере используются два 8-разрядных контроллера прерываний. Сигналы IRQ0...IRQ7 относятся к первому из них, a IRQ8...IRQ15 — ко 297
Глава 8 Интерфейсы персонального компьютера второму. Для каскадирования второго контроллера прерываний задейство- ван вход IRQ2 (рис. 8.6). В связи с этим запросы прерывания имеют сле- дующие приоритеты обслуживания в порядке возрастания: IRQ7, IRQ6, IRQ5, TRQ4, IRQ3, IRQ 15, IRQ 14, IRQ 12,1RQ11, 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 использовался для 298
Лекция 15 Системная магистраль ISA регенерации динамической памяти. Каждый канал ПДП может переда- вать данные в пределах 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, К8-232Сит.д. Наиболее же приспособлена для этого системная шина PCI, имеющая специально предусмотренные средства, что еще более увеличивает ее шансы стать единственным стандартом системной шины. При включении компьютера с РпР его программа начального запуска BIOS определяет устройства, которые необходимы в процессе загрузки. Затем BIOS запрашивает у каждого из этих устройств его уникальный но- 299
Глава 8 Интерфейсы персонального компьютера мер (идентификатор), хранящийся в памяти РпР-устройства. После этого BIOS разрешает все конфликты между устройствами. При этом устрой- ства, которые не нужны для загрузки компьютера, не обслуживаются. После загрузки операционной системы вступает в действие специаль- ный программный драйвер — менеджер конфигурации (configuration manager), который с помощью драйверов-нумераторов шин (bus enumerators) определяет устройства, требующие системных ресурсов. Если подключенное устройство не поддерживает РпР и не может выдать ин- формацию о себе, то такая информация должна быть заложена в форми- руемую вручную базу данных. Вся собранная информация о текущей кон- фигурации сохраняется в оперативной памяти, в области hardware tree. Эту информацию в дальнейшем использует программа-арбитр ресурсов (resource arbitrator) при распределении системных ресурсов между устрой- ствами. После этого менеджер конфигурации через нумераторы шин со- общает PnP-устройствам о том, какие ресурсы компьютера им присвое- ны, и данная информация в дальнейшем хранится в программно доступных регистрах (или flash-EPROM) этих устройств. На этом работа РпР по рас- пределению ресурсов заканчивается, и далее компьютер функционирует как обычно, обращаясь ко всем устройствам стандартным образом. Отметим также, что в некоторые компьютерах предусмотрена возмож- ность так называемого «горячего подключения» внешних устройств (то есть без выключения питания компьютера). Режим РпР должен поддер- живать и эту возможность, распределяя ресурсы не только при начальной загрузке, но и по мерс подключения новых устройств. 300
Лекция 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, при ошибке и при 301
Глава 8 Интерфейсы персонального компьютера отсутствии бумаги. Компьютер начинает новый цикл передачи толь- ко после снятия -АСК и после снятия BUSY. • -AUTO FD — сигнал автоматического перевода строки. Получив его, принтер переводит каретку на следующую строку текста. Остальные сигналы не являются обязательными. • РЕ — сигнал конца бумаги. Получив его, компьютер переходит в ре- жим ожидания. Если в принтер вставить лист бумаги, то сигнал сни- мается. • SLCT — сигнал готовности приемника. С его помощью принтер со- общает о том, что он выбран и готов к работе. У многих принтеров имеет постоянно высокий уровень. • -SLCT IN — сигнал, посредством которого компьютер сообщает принтеру о том, что тот выбран, и последует передача данных. • -ERROR — сигнал ошибки принтера. Активен при внутренней ошиб- ке, переходе принтера в состояние off-line или при отсутствии бума- ги. Как видим, здесь многие сигналы дублируют друг друга. • -INIT — сигнал инициализации (сброса) принтера. Его длительность составляет не менее 2,5 мкс. По нему происходит очистка буфера печати. Контакт разъема компьютера Сигнал I/O Контакт разъема принтера 1 -STROBE 0 1 2 DO 0 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. 302
Лекция 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) применяется для записи битов 303
Глава 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. 304
Лекция 16 Дополнительные интерфейсы персонального компьютера Назначение контактов разъема приведено в табл. 8.8 (в таблице примене- ны обозначения: I — входной сигнал компьютера, О — выходной сигнал компьютера). Сигнал Контакт DB25P Контакт DB9P I/O FG 1 —- -TxD 2 3 0 -RxD 3 2 I RTS 4 7 0 CTS 5 8 I DSR 6 6 I SG 7 5 — DCD 8 1 DTR 20 4 0 RI 22 9 I ...................... ... Табл. 8.8. Назначение контактов разъемов интерфейса RS-232C. Назначение сигналов интерфейса RS-232C следующее: • FG — защитное заземление (экран). • -TxD — данные, передаваемые компьютером в последовательном коде (логика отрицательная). • -RxD — данные, принимаемые компьютером в последовательном коде (логика отрицательная). • RTS — сигнал запроса передачи. Активен во все время передачи. • CTS — сигнал сброса (очистки) для передачи. Активен во все время передачи. Говорит о готовности приемника. • DSR — готовность данных. Используется для задания режима модема. • SG — сигнальное заземление, нулевой провод. • DCD — обнаружение несущей данных (детектирование при- нимаемого сигнала). • DTR — готовность выходных данных. 305
Глава 8 Интерфейсы персонального компьютера • RI — индикатор вызова. Говорит о приеме модемом сигнала вызова по телефонной сети. Чаще всего используется трех- или четырехпроводная связь (для дву- направленной передачи). Схема соединения двух устройств при че- тырехпроводной линии связи показана на рис. 8.8. Компьютер Внешнее устройство ТхD ------->----<------------ ТхD R х D -----« >--------------- R х D RTS > ---* RTS CTS < -----------------> CTS DSR -----<-- 1-->--- DSR DCD -----«—ф |>------ DCD DTR ----->--1 ।---<--- DTR 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, прерыва- ние IRQ 11). 306
Лекция 16 Дополнительные интерфейсы персонального компьютера +15В +5В О -5В -15В Отсутствие передачи Рис. 8.9. Формат данных RS-232C. +25В Высокий уровень Высокий уровень Зона неопределенности Низкий уровень +ЗВ О -ЗВ Зона^ неопределенности Низкий уровень -25В Передатчик Приемник Рис. 8.10. Уровни сигналов RS-232C на передающем и принимающем концах линии связи. Для реализации интерфейса применяются микросхемы универсальных асинхронных приемопередатчиков (УАПП, UART — Universal Asynchronous Receiver/Transmitter) типа i8250, 16550A или их аналоги. Компьютер с помощью посылки управляющих кодов может выбрать скорость обмена, формат передаваемых посылок (количество битов дан- ных, проверка четности, использование стоповых битов), разрешить или запретить прерывания, а также установить или сбросить управляющие 307
Глава 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-слотов, как правило, используется 308
Лекция 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-устройствам; 309
Глава 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-байтная область конфигурации, где находится информация как о самом устройстве, так и о выделенных ему ресурсах. Область конфигурации не относится ни к ЗЮ
Лекция 16 Дополнительные интерфейсы персонального компьютера адресному пространству памяти, ни к адресному пространству устройств ввода/вывода. Компьютер распределяет ресурсы между устройствами в со- ответствии с их особенностями, потребностями и ограничениями. При синхронном обмене (рис. 8.11) в начале цикла (адресная фаза) по шине AD передается код адреса, а по линиям С/ВЕ — код типа цикла (ко- манда). Действительность адреса определяется сигналом -FRAME (по по- ложительному фронту СЕК после начала сигнала -FRAME). После опоз- нания адреса исполнитель выставляет сигнал подтверждения выборки -DEVSEL, после чего начинается фаза данных. То есть можно сказать, что адрес передается асинхронно. В фазе данных по шине данных передаются слова данных, тактируемые положительными фронтами сигнала CLK. Сиг- налы готовности -IRDY и -TRDY выставляются в начале фазы данных и остаются активными до окончания цикла. По линиям -С/ВЕ в фазе дан- ных передаются сигналы разрешения байтов (то есть определяется формат передаваемых данных). Перед последним тактом передачи данных задат- чик снимает сигнал -FRAME, после чего снимаются сигналы -IRDY, -TRDY и -DEVSEL. CLK -FRAME AD -С/ВЕ -IRDY -TRDY -DEVSEL I (Команда)) [ 1 Разрешение байтов 1 1 с. ; 1 1 1 1 1 1 - '1 Рис. 8.11. Синхронный обмен по шине PCI. При асинхронном обмене по шине PCI (рис. 8.12) фаза адреса осуще- ствляется как в предыдущем случае, а в фазе данных как задатчик, так и исполнитель могут приостанавливать обмен снятием своих сигналов го- товности (соответственно, -IRDY и -TRDY). Цикл обмена (транзакция) при этом удлиняется за счет введения дополнительных тактов ожидания. Сигналы -FRAME и -DEVSEL вырабатываются аналогично случаю синх- ронного обмена. 311
Глава 8 Интерфейсы персонального компьютера CLK / ' 1 1 । । । । । -FRAME ' 1 1 \ 1. 1 1 1 I у । 1 1 1 л 1 AD -( Адрес и -{ Дан. 1 1 1 1. 1 1 1 1 ) ( Дан. 2) -( Дан. 3 ) ”"1 Г f г 1 1 1 1 1 1 -С/ВЕ 1 Команда)( 1 1 Разрешение байтов J J । । । । । -IRDY Г ! 1 1 —; ; / ожи-1/ -IHDY 1 л \ । Ожи- у < Дании ( —{ Ожи- 1 i „4 | п О LJ МО 1 1 -DEVSEL \ ДаНИс 5 ! 1 ДаНИи 1 j 1 1 1 1 / Рис. 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) специально разрабатывался для простого подключения периферийных устройств. 312
Лекция 16 Дополнительные интерфейсы персонального компьютера Шина USB представляет собой 4-проводную линию связи с пропускной способностью 1,5 Мбайт/с (12 Мбит/с). К ней можно подключать до 127 устройств по древовидной схеме с использованием одного или несколь- ких распределительных устройств. Длина соединительного кабеля между отдельными устройствами USB может достигать 5 метров. В шине USB реализована поддержка режима РпР и возможность «горячего» подклю- чения (без выключения питания). В данном стандарте уже выпускаются модемы, клавиатуры, мыши, сканеры, цифровые фотокамеры и т.д. Важ- но, что в шине предусмотрена подача на подключаемые устройства пита- ющего напряжения (в последовательном интерфейсе RS-232C, например, этого нет). 313
Приложение Системы команд некоторых микропроцессоров ПРИЛОЖЕНИЕ Системы команд некоторых микропроцессоров Система команд микропроцессора i8080/8085 Мнемоника Функция команды ACI Сложение байта с аккумулятором с переносом ADC Сложение регистра с аккумулятором с переносом Г ADD Сложение регистра с аккумулятором ADI Сложение байта с аккумулятором ANA Логическое И с регистром или памятью ANT Логическое И с байтом CALL Вызов подпрограммы CC Вызов подпрограммы при переносе CM Вызов подпрограммы при минусе CMA Инвертирование аккумулятора CMC Инвертирование флага переноса CMP Сравнение операндов CNC Вызов подпрограммы при отсутствии переноса CNZ Еызов подпрограммы при неравенстве нулю CP Вызов подпрограммы при плюсе CPE Вызов подпрограммы при четности CPI Сравнение байта с аккумулятором CPO Вызов подпрограммы при нечетности Мнемоника Функция команды CZ Вызов подпрограммы при равенстве нулю В DAA Десятичная коррекция результата сложения Е DAD Сложение содержимого пар регистров Е DCR Декремент регистра или памяти В I DCX Декремент пары регистров В [ DI Запрет прерывания В 1 EI Разрешение прерывания Ц HLT Останов В IN Ввод Ц INR Инкремент регистра или памяти В INX Инкремент пары регистров В JC Переход^ если есть перенос В 1 JM Переход, если минус 1 JMP Безусловный переход В JNC Переход, если нет переноса 1 В JNZ Переход, если не равно нулю В 1 JP Переход, если плюс В JPE Переход, если четность В JPO Переход, если нечетность и 1 1 1 JZ Переход, если нуль В LDA Загрузка аккумулятора по указанному адресу И I LDAX Загрузка аккумулятора по адресу, указанному Ц парой регистров В LHLD Загрузка регистров из памяти Ц 315
Приложение Мнемоника Функция команды LXI Загрузка парных регистров MOV Пересылка между памятью и регистрами MVI Пересылка байта в память NOP Нет операции ORA Логическое ИЛИ с регистром или памятью ORI Логическое ИЛИ с байтом OUT Вывод PCHL Загрузка счетчика команд POP Извлечение из стека PUSH Сохранение в стеке RAL Циклический сдвиг влево через перенос RAR Циклический сдвиг вправо через перенос RC Возврат при переносе RET ) Возврат из подпрограммы RLC Циклический сдвиг влево RM Возврат при минусе RNC Возврат при отсутствии переноса RNZ Возврат, если не равно нулю RP Возврат при плюсе RPE Возврат при четности RPO Возврат при нечетности RRC Циклический сдвиг вправо RST Повторный запуск RZ Возврат при нуле "W £ И в В 316 й
Системы команд некоторых микропроцессоров Мнемоника Функция команды SBB Вычитание памяти или регистра с заемом SBI Вычитание байта с заемом SHLD Выгрузка регистров в память SPHL Загрузка указателя стека STA Выгрузка аккумулятора в память STAX Выгрузка аккумулятора в пару регистров STC Установка флага переноса SUB Вычитание регистра или памяти SUI Вычитание байта XCHG Обмен данными между парами регистров XRA Исключающее ИЛИ с регистром или памятью XRI Исключающее ИЛИ с байтом XHTL Обмен данными между регистром и указателем стека 317
Приложение Система команд микропроцессора Т-11 фирмы DEC Мнемоника Функция команды ГНАЬТ Остановка I Г WAIT I Ожидание I ГRTI Возврат из прерывания I Г врт | Прерывание для отладки I ют I Прерывание для ввода/вывода I Г RESET I Сброс внешних устройств I | RTT I Возврат из прерывания I Г jmp Прыжок I Г RTS Возврат из подпрограммы I I JSR Вызов подпрограммы I ЕМТ Прерывания для системных программ I Г TRAP Прерывание I Г nop Нет операции I | I CLC Очистка флага С I ГCLV Очистка флага V | ГCLZ Очистка флага Z I I CLN Очистка флага N I SEC Установка флага С II SEV Установка флага V | I I SEZ Установка флага Z | 1 SEN Установка флага N 1 | I SCC Установка всех флагов 1 I CCC Очистка всех флагов 1 | s> Системы команд некоторых микропроцессоров Мнемоника Функция команды В SWAB Перестановка байтов И CLR Очистка В СОМ Инвертирование Й INC Инкремент Ц DEC Декремент И NEG Изменение знака 1 ADC Прибавление переноса Н SBC Вычитание переноса TST Проверка В ROR I Циклический сдвиг вправо 1 ROL Циклический сдвиг влево В ASR Арифметический сдвиг вправо i ASL Арифметический сдвиг влево Ц MARK Восстановление указателя стека В SXT Расширение знака [ MTPS Запись слова состояния MFPS Чтение слова состояния Ц MOV Пересылка И CMP Сравнение | BIT роверка битов BIC Очистка битов Г BIS 1 г _ 1В Установка битов и XOR Исключающее ИЛИ К ADD Сложение |В 319
Приложение Мнемоника Функция команды SUB Вычитание BR Безусловный переход BNE Переход, если не равно BEQ Переход, если равно BGE Переход, если больше или равно BLT Переход, если меньше BGT Переход, если больше BLE Переход, если меньше или равно BPL Переход, если плюс BMI Переход, если минус BHI Переход, если выше BLOS Переход, если ниже или равно BVC Переход, если нет переполнения BVS Переход, если есть переполнение BCC Переход, если нет переноса BCS Переход, если есть перенос SOB Вычитание единицы из операнда в регистре и переход, если не равно нулю MUL Умножение - DIV Деление ASH Многократный арифметический сдвиг одного слова ASHC Многократный арифметический сдвиг двойного слова FADD Сложение с плавающей точкой FSUB FMUL Вычитание с плавающей точкой Умножение с плавающей точкой FDIV Деление с плавающей точкой •• .f ж
Системы команд некоторых микропроцессоров Система команд микропроцессора MC68000 Мнемоника Функция команды ADD Сложение SUB Вычитание ( NEG Инверсия ADDX Сложение с расширением SUBX Вычитание с расширением NEGX Инверсия с расширением ABCD Десятичное сложение с расширением SBCD Десятичное вычитание с расширением NBCD Десятичная инверсия с расширением MULS Умножение со знаком MULU Умножение без знака DIVS Деление со знаком DIVU Деление без знака EXT Расширение знака CLR Очистка операнда CMP Сравнение TST Проверка TAS Проверка и установка MOVE Пересылка операнда MOVEP Пересылка данных с периферийного устройства MOVEM Пересылка группы регистров MOVEQ Быстрая пересылка SWAP Обмен половин регистра £• Ж С ш I и « О' 321 I
Приложение Мнемоника Функция команды EXG Обмен регистров LEA Загрузка действительного адреса PEA Сохранение в стеке действительного адреса LINK Связь стека UNLK Отцепка стека AND Логическое И OR Логическое ИЛИ EOR Логическое Исключающее ИЛИ NOT Логическое НЕ (инверсия) ASL Арифметический сдвиг влево ASR Арифметический сдвиг вправо LSL Логический сдвиг влево LSR Логический сдвиг вправо ROL Циклический сдвиг влево без переноса ROR Циклический сдвиг вправо без переноса ROXL Циклический сдвиг влево с переносом ROXR Циклический сдвиг вправо с переносом BCLR Проверка и очистка бита BSET Проверка и установка бита BCHG Проверка и изменение бита BTST Проверка бита JMP Прыжок BRA Безусловный переход JSR Переход к подпрограмме 322
Системы команд некоторых микропроцессоров Мнемоника Функция команды BSR Переход к подпрограмме RTS Возврат из подпрограммы RTR Возврат из подпрограммы вес Переход, если нет переноса BCS Переход, если есть перенос BEQ Переход, если равно BF Переход, если не истинно BGE Переход, если больше или равно BGT Переход, если больше BHI Переход, если выше BLE Переход, если меньше или равно BLS Переход, если не выше BLT Переход, если меньше BMI Переход, если минус BNE Переход, если не равно BPL Переход, если плюс ВТ Переход, если истинно BVC Переход, если нет переполнения BVS Переход, если есть переполнение DB усл. Вычитание единицы из регистра данных и пере- ход, если выполняется условие (всего 16 условий, см. BCC...BVC) S усл. Установить при выполнении условия (всего 16 условий, см. BCC...BVC) TRAP Прерывание ? 323
Приложение Мнемоника Функция команды TRAPV Прерывание при переполнении Р СНК Проверить регистр на границах диапазона • ANDI Логическое И с регистром состояния к ORI Логическое ИЛИ с регистром состояния В EOR! Исключающее ИЛИ с регистром состояния 1 RESET Сброс внешних устройств Т STOP Остановка работы и RTE Возврат из исключительной ситуации 1 П|
Системы команд некоторых микропроцессоров Система команд микропроцессора 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 Знаковое деление 325
Приложение Мнемоника Функция команды 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 Загрузка признаков в регистр АН
Системы команд некоторых микропроцессоров Мнемоника Функция команды 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 Циклический сдвиг вправо 327
Приложение Мнемоника Функция команды 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 Исключающее ИЛИ I В? а: Ml л ’ -А-ЛХ*: i а ®Й 328
Системы команд некоторых микропроцессоров Система команд микропроцессора 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 Сброс флага переключения задачи о ж § 329
Глава 8 Интерфейсы персонального компьютера Мнемоника Функция команды СМС Инвертирование флага переноса СМР Сравнение операндов CMPXCHG Сравнение операндов и обмен CMPS Сравнение символов строки CWD Преобразование слова в двойное слово DAA Десятичная коррекция результата сложения DAS Десятичная коррекция результата вычитания DEC Декремент операнда DIV Беззнаковое деление ENTER Обращение к процедуре НЕТ Останов IDIV Знаковое деление IMUL Знаковое умножение IN Ввод операнда из порта INC Инкремент операнда INS Ввод символа строки INT Прерывание INTO Прерывание при переполнении IRET Возврат из прерывания INVD Аннулирование строки кэш-памяти INVLPG Аннулирование указателя входа в таблицу страниц JECXZ Условный переход по (ЕСХ)=0 JMP Безусловный переход JB (JBNAF) Переход, если ниже 330
Лекция 16 Дополнительные интерфейсы персонального компьютера Мнемоника Функция команды 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 Выход из процедуры 331
Приложение Мнемоника Функция команды LGDT Загрузка регистра таблицы глобальных дескрипторов с LIDT Загрузка регистра таблицы дескрипторов прерываний LLDT Загрузка регистра таблицы локальных дескрипторов В§Ия LMSW Загрузка слова состояния машины (MSW) LOCK Префикс захвата шины LODS Загрузка символа строки LOOP Реализация цикла 1 .* LOOPE (LOOPZ) Зациклить, если равно (если нуль) LOOPNE (LOOPNZ) Зациклить, если не равно (если не нуль) LTR Загрузка регистра задачи MOV Пересылка данных MOVS Пересылка символа строки MOVSX Пересылка с расширением знака MOVZX Пересылка с расширением нулями й MUL Беззнаковое умножение NEG Перемена знака NOP Отсутствие операции я NOT Логическая инверсия (операция НЕ) OR Дизъюнкция (операция ИЛИ) OUT Вывод операнда в порт в OUTS Вывод символа строки POP Чтение операнда из стека 332
Системы команд некоторых микропроцессоров Мнемоника Функция команды 1 РОРА Чтение из стека содержимого всех регистров В POPF Чтение из стека содержимого регистра || флагов В 1 ё PUSH Запись операнда в стек В PUSHA Запись в стек содержимого всех регистров в PUSHF Запись в стек содержимого регистра флагов | RCL Циклический сдвиг влево Ь RCR Циклический сдвиг вправо | REP Префикс повторения операции со строками | символов 1 REPE(REPZ) Повторение при совпадении | REPNE (REPNZ) Повторение при несовпадении К RET Возврат из подпрограммы Ц ROL Циклический сдвиг влево через перенос В ROR Циклический сдвиг вправо через перенос В SAHF Запись содержимого АН в регистр флагов В SAL (SHL) Арифметический сдвиг влево L SAR Арифметический сдвиг вправо В SBB Вычитание с заемом к SCAS Сканирование строк символов й SETycn. Условная установка байта (16 условий — см. В команды условных переходов JB...JS) | SGDT Запись содержимого регистра GDT | SHR Логический сдвиг вправо 1 SHLD Двухоперандный сдвиг влево В ж. ши 333
Приложение Мнемоника Функция команды SHRD Двухоперандный сдвиг вправо SIDT Запись содержимого регистра IDT SLDT Запись содержимого регистра LDT SMSW Запись слова состояния машины STC Установка флага переноса STD Установка флага направления STI Установка флага прерываний STOS Запись символов в строку SUB Вычитание TEST Логическое сравнение операндов VERR Проверка доступности сегмента при чтении VERW Проверка доступности сегмента при записи WAIT Ожидание XADD Обмен операндами и сложение XCHG Обмен XLAT Преобразование кодов XOR Исключающее ИЛИ Команды, выполняемые блоком обработки чисел с плавающей точкой FABS Получение абсолютного значения FADD Сложение вещественных чисел FADDP Сложение вещественных чисел с чтением из стека FBLD Загрузка двоично-десятичного числа 334
Системы команд некоторых микропроцессоров Мнемоника Функция команды FBSTP Запись в память двоично-десятичного числа с чтением из стека FCHS Изменение знака числа FCLEX Сброс флагов в регистре состояния SR FCOM Сравнение вещественных чисел FCOMP Сравнение вещественных чисел с чтением из стека FCOMPP Сравнение вещественных чисел с двойным чтением из стека FCOS Вычисление косинуса FDECSTP Декремент содержимого указателя стека FDIV Деление вещественных чисел FDIVP Деление вещественных чисел с чтением из стека FDIVR Обратное деление вещественных чисел FDIVRP Обратное деление вещественных чисел с чтением из стека FFREE Освобождение регистра ST FIADD Сложение целых чисел FICOM Сравнение целых чисел FICOMP Сравнение целых чисел с чтением из стека FIDIV Деление целых чисел FIDIVR Обратное деление целых чисел FILD Загрузка целого числа FIMUL Умножение целых чисел FINCSTP Декремент содержимого указателя стека 335
Приложение Мнемоника Функция команды Ш FINIT Инициализация FPU 1 FIST Запись в память целого числа 1 FISTP Запись в память целого числа с чтением из стека В FISUB Вычитание целых чисел В FISUBR Обратное вычитание целых чисел И FLD Загрузка вещественного числа 1 FLD1 Загрузка единицы j FLDCW Загрузка управляющего числа | FLDENV Загрузка содержимого вспомогательных В регистров Ц FLDL2E Загрузка log2e В FLDL2T Загрузка log210 И FLDLG2 Загрузка lg2 1 FLDLN2 Загрузка 1п2 В FLDPL Загрузка числа Пи 1 FLDZ Загрузка нуля В FMUL Умножение вещественных чисел В FMULP Умножение вещественных чисел с чтением из 1 ЕЯ _ _ _ стека | FNOP Отсутствие операции й FPREM Нахождение частичного остатка деления г FPREM1 Нахождение частичного остатка в стандарте В IEEE-475 I FPATAN Вычисление частичного арктангенса Ц FPTAN Вычисление частичного тангенса В оМНВгаОММВЯНМШВ 336
Системы команд некоторых микропроцессоров Мнемоника Функция команды FRNDINT Округление до целого значения FRSTOR Загрузка содержимого вспомогательных регист- ров и арифметического стека FSAVE Запись в память содержимого вспомогательных регистров и арифметического стека FSCALE Масштабирование (изменение порядка числа) FSIN Вычисление синуса FSINCOS Вычисление синуса и косинуса FSQRT Вычисление квадратного корня FST Запись в память вещественного числа FSTCW Передача слова состояния в память В FCTENV Запись в память содержимого вспомогательных |Д| регистров Rd FSTP Запись в память вещественного числа с чтением в к из стека FSTSW Передача слова состояния в память FSTSWAX Передача слова состояния в регистр АХ FSUB Вычитание вещественных чисел FSUBP Вычитание вещественных чисел с чтением из и стека FSUBR Обратное вычитание вещественных чисел й FSUBRP Обратное вычитание вещественных чисел с ц чтением из стека 1 ° |М FTST Сравнение с нулем да FUCOM Сравнение неупорядоченных чисел К. виг г вижгж,'' ж few 337
Приложение Мнемоника Функция команды FUCOMP Сравнение неупорядоченных чисел с чтением из стека FUCOMPP Сравнение неупорядоченных чисел с двойным чтением из стека FXAM Анализ вещественного числа FXCH Обмен данными между регистрами стека FXTRACT Вычисление мантиссы и порядка F2XM1 Вычисление функции (2х-1) FYL2X Вычисление функции ylogx FYL2XP1 Вычисление функции ylog (х+1) FWAIT Ожидание готовности FPU 338
Системы команд некоторых микропроцессоров Система команд микроконтроллеров семейства 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 Пересылка байта из внешней памяти или во внешнюю память S ? • 339
Приложение Мнемоника Функция команды PUSH Сохранение в стеке POP Извлечение из стека хсн Обмен информацией XCHD Обмен младшими тетрадами между ячейкой памяти и аккумулятором SETB Установка бита JC Переход, если есть перенос JNC Переход, если нет переноса JB Переход, если бит установлен JNB Переход, если бит не установлен JBC Переход, если бит установлен, и очистка этого бита ACALL Короткий переход к подпрограмме с возвратом LCALL Длинный переход к подпрограмме с возвратом RET Возврат из подпрограммы RETI Возврат из прерывания AJMP Короткий переход без возврата LJMP Длинный переход без возврата SJMP Короткий переход со смещением JMP Переход относительно указателя данных JZ Переход, если аккумулятор равен нулю JNZ Переход, если аккумулятор не равен нулю CJNE Переход, если не равно DJNZ Декремент и переход, если не равно нулю NOP Нет операции 340
Словарь терминов и сокращений Словарь терминов и сокращений 2S (2-States Output) — выход с двумя активными состояниями, 2С, стан- дартный выход ТТЛ. 3S (3-States Output) — выход с тремя состояниями, ЗС. Abort — аварийное завершение; тип прерывания. AND — логическая функция И. ALU (Arithmetic and Logic Unit) — АЛУ, арифметико-логическое устрой- ство. ABIC (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) — центральный процессор. 341
Приложение 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 — асинхронный режим обмена, при котором используется сигнал подтверждения готовности исполнителя. 342
Словарь терминов и сокращений 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. 343
Приложение LRU (Least Recently Used) — дольше всех не используемый элемент в кэш-памяти. LSB (Least Significant Bit) — младший значащий бит (в байте или слове). LVT (Low-Voltage Technology) — низковольтная технология микросхем (напряжение питания 3,3 В). Male — разъем-вилка, штекер. Master — ведущее, главное устройство, участвующее в обмене инфор- мацией, задатчик. MFLOPS (Mega FLOPS) — миллион операций с плавающей запятой в секунду (единица производительности процессора). MIPS (Mega Instructions Per Second) — миллион операций в секунду (единица производительности процессора). МСР (Math CoProcessor) — математический сопроцессор. MCU (Microprogram Control Unit) — блок микропрограммного управления. MMU (Memory Management Unit) — блок управления памятью. ММХ (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) — стандартный высокоскоростной параллельный интерфейс для подключения карт расширения миниатюрного формата. 344
Словарь терминов и сокращений 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) — принимаемые данные. 345
Приложение 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 (Transistor-Transistor Logic) — транзисторно-транзисторная (бипо- лярная) логика, ТТЛ. TTLS (Transistor-Transistor Logic Schottky) — транзисторно-транзистор- ная логика Шоттки, ТТЛШ. Turbo — режим повышенного быстродействия. ТхС (Transmitted Clock) — передаваемый синхросигнал. TxD (Transmitted Data) — передаваемые данные. UART (Universal Asynchronous Receiver/Transmitter) — универсальный асинхронный приемопередатчик, контроллер для поддержки интерфейса RS-232C. UMA (Upper Memory Area) — область верхней памяти. Upgrade — модернизация персонального компьютера путем замены его отдельных блоков. 346
Словарь терминов и сокращений UPI (Universal Peripheral Interface) — универсальный периферийный интерфейс. USB (Universal Serial Bus) — стандартный последовательный интерфейс с высокой скоростью передачи (до 12 Мбит/с). V — напряжение (Voltage), вольт (Volt). VLB (VESA Local Bus) — локальная шина персонального компьютера. VLSI (Very Large Scale Integration) — сверхбольшая интегральная схема (СБИС). Watchdog — сторожевой таймер, служащий для вывода микропроцес- сорной системы из состояния зависания. WB (Write Back) — алгоритм кэширования с обратной записью. WT (Write Through) — алгоритм кэширования со сквозной (прямой) за- писью. XMS (extended Memory Specification) — расширенная память персональ- ного компьютера. XOR — исключающее ИЛИ. Z (Z-state) — третье (высокоимпедансное) состояние выхода микросхемы. ZIF (Zero Insertion Force) — разъем или сокет с нулевым усилием вставки. 2С — выход с двумя активными состояниями (нуль и единица), стан- дартный ТТЛ-совместимый выход. ЗС — выход с тремя состояниями (два активных: нуль и единица, тре- тье — пассивное, отключенное), а также само третье состояние выхода, в отличие от двух активных состояний. Адаптер — устройство сопряжения. Адрес — закодированный номер, определяющий, куда передается ин- формация или откуда она принимается. Адресация — способ задания адреса операнда. Адресное пространство — совокупность всех адресов, к которым может обращаться микропроцессорная система. Активный уровень сигнала — уровень, соответствующий приходу, нали- чию сигнала, то есть выполнению этим сигналом соответствующей ему функции. Аккумулятор — выделенный внутренний регистр процессора, который принимает участие в выполнении большинства команд. АЛУ — арифметико-логическое устройство (ALU). Аппаратное обеспечение — электронная аппаратура микропроцессор- ной системы. Аппаратное прерывание — прерывание, вызываемое устройствами-ис- полнителями. 347
Приложение Арбитраж — метод определения единственного активного устройства, способ разрешения конфликтов. Асинхронная магистраль — магистраль, в которой предусмотрен только асинхронный обмен. Асинхронный обмен — обмен по магистрали с подтверждением готов- ности исполнителя. Асинхронный сигнал — сигнал, не привязанный по времени к внутрен- ним процессам схемы, не синхронизированный со схемой. Ассемблер — язык программирования нижнего уровня, использующий мнемонические обозначения машинных команд. АЦП — аналого-цифровой преобразователь. Базовый адрес — младший адрес из группы адресов, приписанных ка- кому-то устройству или задаче. Байт — группа двоичных разрядов, битов (как правило, 8 бит), содер- жащая какой-то код. Байтовые операции — операции, производимые над отдельными байта- ми операндов процессорами, имеющими разрядность больше 8. Бит (от англ. Binary Digit — двоичное число) — единица двоичной ин- формации, разряд двоичного кода, принимающий значения 0 и 1. Бит четности — дополнительный контрольный бит, добавляемый к дан- ным и хранимый или передаваемый вместе с этими данными. Буфер — память или область памяти, используемая для временного хра- нения данных. Буфер — логический элемент (микросхема), используемый для элект- рического согласования входов и выходов других микросхем. В/В — ввод/вывод, I/O. Ввод данных — то же, что чтение, считывание, прием данных. Вектор прерывания — адрес начала программы обработки прерывания. Векторные прерывания — прерывания, при которых номер прерывания (адрес вектора) выдается устройством, запросившим прерывание. Вилка (штекер) — часть разъема, контакты которого входят в контакты розетки (гнезда). Виртуальная память — внешняя память большого объема, которую про- цессор с помощью специальных механизмов использует как свою соб- ственную системную память. ВКМ — внутренняя контроллерная магистраль. Внешние устройства — устройства, подключаемые к микропроцессор- ной системе посредством устройств сопряжения, устройств ввода/вывода. Временная диаграмма — графики зависимости от времени входных и выходных сигналов цифрового устройства в различных режимах работы. ВУ — внешние устройства. 348
Словарь терминов и сокращений Вывод данных — то же, что запись, передача данных. Гарвардская архитектура — архитектура микропроцессорной системы с раздельными шинами данных и команд (двухшинная архитектура). Г (гига-) — приставка для обозначения 230 = 1 073 741 824. Данные — передаваемая в закодированном виде цифровая информа- ция. Двунаправленная линия (шина) — линия (шина), по которой сигналы могут передаваться в обоих направлениях (по очереди). Двухшинная архитектура — архитектура микропроцессорной системы с раздельными памятями данных и команд и с раздельными шинами для обмена с каждой из них. Декремент — уменьшение на единицу. Дескриптор — описатель, код, содержащий информацию о сегменте па- мяти, о векторе прерывания и т.д. Джампер — съемная перемычка, устанавливаемая на плату для пере- ключения режимов ее работы. Драйвер — программа нижнего уровня, осуществляющая управление аппаратурой. Единичный сигнал — то же, что положительный сигнал. Зависание — переход микропроцессорной системы в непредусмотрен- ное состояние, остановка работы системы. Задатчик (master) — активное устройство на магистрали (чаще всего — процессор), которое производит обмен с исполнителем в данном цикле. Задержка — временной сдвиг между входным и выходным сигналами устройства, узла, микросхемы. Задний фронт сигнала (спад) — переход сигнала из активного уровня в пассивный. Запись — операция, при которой задатчик передает данные в память или в устройство ввода/вывода. Запрос — обращение к процессору для специального обслуживания (на- пример, для прерывания или ПДП). Защищенный режим — режим процессоров фирмы Intel, начиная с 80286, обеспечивающий многозадачный режим и объем памяти свыше 1 Мбайт (см. реальный режим). ЗУ — запоминающее устройство, память. Инициализация — приведение в начальное состояние, запуск работы. Инкремент — увеличение на единицу. Инструкция — то же, что команда. Интерфейс — соглашение об обмене между электронными устройства- ми. Включает в себя требования по электрическому, логическому и кон- структивному сопряжению устройств. 349
Приложение ИС — интегральная микросхема, ИМС (IC), чип. Исключения — разновидность прерываний, которые возникают авто- матически при определенных условиях в процессе работы процессора. Исполнитель (slave) — пассивное устройство на магистрали, с которым задатчик производит обмен в данном цикле. К (кило-) — приставка для обозначения 210 = 1024. Канал — то же, что системная шина, магистраль. Карта расширения — одноплатное устройство сопряжения, подключа- емое к магистрали персонального компьютера. Каскадирование — совместное включение нескольких одинаковых уст- ройств (обычно последовательное) для улучшения их характеристик. КМОП — комплементарная технология МОП (CMOS). Команда — код, определяющий элементарную функцию, которую дол- жен выполнить процессор. Конвейер — память типа FIFO небольшого объема, входящая в состав процессора и служащая для ускорения выборки исполняемых команд. Контроллер — устройство управления, управляющее устройство сопря- жения. Кристалл — то же, что микросхема, чип. Кэш-память — быстрая буферная память, содержащая копию части ос- новной памяти системы и позволяющая ускорить обмен с медленной ос- новной памятью. Линия — единичный проводник системной шины. М (мега-) — приставка для обозначения 220 = 1 048 576. Магистраль — системная шина микропроцессорной системы. Маска — управляющий код, который разрешает или запрещает отдель- ные разряды основного кода. Маскирование прерывания — временный запрет прерывания. МК — микроконтроллер. Монитор — программа для работы оператора с пультом управления с целью контроля функционирования микропроцессорной системы. Мониторинг — слежение, контроль состояния какого-либо устройства. МОП — полупроводниковая технология на основе полевых транзис- торов типа «металл — окисел — полупроводник» (MOS). МП — микропроцессор. МПК — микропроцессорный комплект микросхем. МПС — микропроцессорная система. Мультиплексирование — передача различных сигналов по одной линии (шине) в разные моменты времени. Мультиплексированная магистраль — магистраль с мультиплексирован- ными (полностью или частично) шинами адреса и данных. 350
Словарь терминов и сокращений НМД — накопитель на магнитном диске. ^мультиплексированная магистраль — магистраль, в которой шины ад- реса и данных не мультиплексированы. Ножки — то же, что выводы микросхемы. Нулевой сигнал — то же, что отрицательный сигнал. Одношинная архитектура — архитектура микропроцессорной системы с общей памятью данных и команд и общей шиной для обмена с памятью. ОЗУ — оперативное запоминающее устройство, оперативная память (RAM). ОК — выход с открытым коллектором. Операнд — код данных, с которым производится операция данной ко- мандой. ОС — операционная система. Опрос (поллинг) — постоянное чтение информации из устройства для определения его состояния. Отрицательная логика — система сигналов, в которой логической еди- нице соответствует низкий уровень напряжения, а логическому нулю — высокий. Отрицательный сигнал (сигнал отрицательной полярности, нулевой сиг- нал) — сигнал, активный уровень которого — логический нуль. То есть единица — это отсутствие сигнала, нуль — сигнал пришел. Отрицательный фронт сигнала (спад) — переход сигнала из единицы (из высокого уровня) в нуль (в низкий уровень). Пассивный уровень сигнала — уровень, в котором сигнал не выполняет никакой функции. ПДП (прямой доступ к памяти) — режим обмена по системной шине между устройством ввода/вывода и памятью без участия центрального процессора. Перепад (переход) сигнала — переключение сигнала из нуля в единицу или из единицы в нуль, то же, что фронт сигнала. Передний фронт сигнала — переход сигнала из пассивного уровня в ак- тивный. ПЗУ—постоянное запоминающее устройство, постоянная память (ROM). ПК — персональный компьютер, PC. ПЛИС — программируемые логические микросхемы, PLD. ПО — программное обеспечение (software). Подпрограмма — вспомогательная программа, вызываемая из основной программы или из подпрограммы. Подтверждение — выработка сигнала, подтверждающего выполнение той или иной функции. Положительная логика — система сигналов, в которой логической единице соответствует высокий уровень напряжения, а логическому нулю — низкий. 351
Приложение Положительный сигнал (сигнал положительной полярности, единич- ный сигнал) — сигнал, активный уровень которого — логическая единица. То есть нуль — это отсутствие сигнала, единица — сигнал пришел. Положительный фронт сигнала (или просто фронт) — переход сигнала из нуля (из низкого уровня) в единицу (в высокий уровень). Полярность сигнала — уровень сигнала, соответствующий его активно- сти. Положительной полярности соответствует активный единичный сиг- нал, отрицательной полярности — активный нулевой сигнал. Порт — устройство сопряжения микропроцессорной системы с вне- шним устройством (обычно простейшее). ППЗУ — программируемое ПЗУ (PROM). Прерывание — временный перевод процессора на программную обра- ботку внешнего события или на выполнение подпрограммы. Принстонская архитектура — архитектура микропроцессорной системы с единой шиной для данных и команд (одношинная архитектура). Программа — последовательность команд микропроцессора, выполня- ющих требуемую задачу, алгоритм. Программное обеспечение — набор программ, выполняемых микропро- цессорной системой. Программное прерывание — программный переход к подпрограмме, об- служиваемый, как прерывание. Пространство памяти — весь объем системной памяти микропроцес- сорной системы. Протокол — порядок обмена сигналами между цифровыми устройствами. Радиальные прерывания — прерывания, при которых номер прерыва- ния (адрес вектора) определяется номером используемой линии запроса прерывания. Разрядность (кода, шины) — количество двоичных разрядов кода или количество цифровых сигналов для передачи кода по шине. Реальный режим (режим реальной адресации) — режим процессоров фир- мы Intel, начиная с 80286, обеспечивающий совместимость с процессором 8086 и объем памяти до 1 Мбайт (см. защищенный режим}. Регенерация — периодическое восстановление, обновление информа- ции, записанной в динамическую память. Требует подачи специальной последовательности управляющих сигналов. Регистр процессора — внутренняя ячейка памяти процессора, в которой хранится управляющая информация, адрес или данные. Регистр состояния процессора — внутренний регистр процессора, в ко- тором хранятся флаги (биты) слова состояния процессора (ССП, PSW). Розетка (гнездо) — часть разъема, в контакты которого входят контакты вилки (штекера). 352
Словарь терминов и сокращений РОН — регистр общего назначения (универсальный внутренний ре- гистр процессора). РПЗУ — ре программируемое ПЗУ (EPROM), информация в котором стирается ультрафиолетовым излучением и может быть записана вновь. Рукопожатие — обмен сигналами между устройствами, участвующими в обмене с подтверждением выполнения операции (handshaking). СБИС — сверхбольшая интегральная схема (VLSI). Свопинг (подкачка) — процесс временного сохранения на диске облас- тей оперативной памяти и чтения их с диска. Сегмент — выделенная часть памяти, хранящая данные или команды, для адресации которой используются одни и те же регистры процессора. Сегментный регистр — регистр, указывающий на начало того или иного сегмента памяти. Селектор (дешифратор) адреса — узел в составе устройства-исполните- ля для распознавания адреса в циклах обмена по магистрали. Синхронизация — обеспечение согласованной во времени работы не- скольких устройств, например, по общему тактовому сигналу. Синхронная магистраль — магистраль, в которой основной тип обмена синхронный. Синхронный обмен — обмен информацией по магистрали в темпе за- датчика без учета быстродействия исполнителя. Синхросигнал — то же, что тактовый сигнал. Система команд — набор команд процессора, которые он способен вы- полнить. Системная память — прямо адресуемая память микропроцессорной си- стемы (оперативная и постоянная). СК — счетчик команд (PC). Слово (двоичное) — группа бит (обычно 16, 32 или 64 бита), состоящая из нескольких байт. Слот — разъем для подключения к системной магистрали плат расширения. Сокет (Socket) — то же, что колодка, контактирующее устройство-гнездо, в которое устанавливается микросхема с возможностью простой ее замены. Сопроцессор — микросхема специализированного процессора, подклю- чаемая к микросхеме основного процессора для улучшения ее характери- стик. Чаще всего используются математические сопроцессоры, ускоряю- щие выполнение сложных арифметических команд. Спад сигнала — то же, что задний фронт сигнала (обычно — отрица- тельный фронт). ССП-- слово состояния процессора, PSW. Стек — область памяти, адресация к которой построена по магазинному принципу (LIFO) — первым читается последний записанный в память код. 353
Приложение Строб (стробирующий сигнал) — управляющий сигнал, который своим уровнем определяет момент выполнения элементом или узлом его функ- ции. В более общем смысле строб — это любой синхронизирующий сиг- нал, тактовый сигнал. Счетчик комацд — внутренний регистр процессора, определяющий адрес в памяти, в котором находится текущая команда. В обычном режиме состоя- ние счетчика команд наращивается после выполнения каждой команды. Т (тера-) — приставка для обозначения 240 = 1 099 511 627 776. Таймер — устройство отсчета времени. Такт — то же, что тактовый сигнал, а также период тактового сигнала. Тактовый сигнал — управляющий сигнал, который своим фронтом оп- ределяет момент выполнения элементом или узлом его функции. Иногда то же, что и стробирующий сигнал. Теневая память — часть оперативной памяти, используемая для хране- ния копии постоянной памяти с целью повышения скорости доступа к информации. Терминатор — оконечный согласователь линии связи. Тетрада (полубайт, ниббл) — группа из четырех бит, кодируемая одним символом в шестнадцатеричной системе счисления. Транзакция — то же, что цикл обмена. ТТЛ — транзисторно-транзисторная логика и соответствующая ей по- лупроводниковая технология (TTL). ттлш — технология ТТЛ с диодами Шоттки (TTLS). Характеризуется более высоким быстродействием при той же потребляемой мощности. УВВ — устройство ввода/вывода. Указатель — код, определяющий адрес операнда в памяти. Указатель стека — внутренний регистр процессора, в котором хранится текущий адрес стека. УС — указатель стека (SP). Устройство ввода/вывода — устройство, осуществляющее сопряжение микропроцессорной системы с внешними устройствами. Устройство сопряжения — устройство для обмена информацией между компьютером и внешними устройствами. Фаза — часть цикла, в течение которой меняется состояние каких-то сигналов шины. Флаг — сигнал (бит), соответствующий какому-либо состоянию уст- ройства, например, готовности к обмену. Флэш-память (Flash Memory) — разновидность РПЗУ с электрическим стиранием информации и возможностью многократной перезаписи. Фон-неймановская архитектура — одношинная архитектура, то же, что принстонская архитектура. 354
Список литературы Фронт сигнала — переход сигнала из нуля в единицу или из единицы в нуль, иногда в более узком значении «передний положительный фронт». ЦДЛ — цифроаналоговый преобразователь. Цикл — последовательность обмена сигналами, в течение которого вы- полняется только одна элементарная операция (например, ввод или вы- вод). ЦП — центральный процессор, основной процессор микропроцессор- ной системы. ЦПЭ — центральный процессорный элемент. Чип — то же, что интегральная микросхема, ИМС. Чипсет — набор микросхем, предназначенный для решения какой-то одной задачи. Чтение — операция получения задатчиком шины кода данных из памя- ти или из устройства ввода/вывода. Чтение-модификация-запись — операция, при которой в течение одно- го цикла данные читаются из какого-то устройства, преобразуются и за- писываются в то же самое устройство по тому же адресу. ШИМ — широтно-импульсная модуляция. Шина — группа сигнальных линий, объединенных по какому-либо принципу. Например, шиной называют сигналы, соответствующие всем разрядам какого-то двоичного кода (шина данных, шина адреса). Иногда шиной называют также провод питания («шина питания») и общий про- вод («шина земли»). Ширина — то же, что разрядность. ЭВМ — электронная вычислительная машина, то же, что компьютер. Эмуляция — моделирование, имитация работы реального устройства с использованием аппаратных и программных отладочных средств. Ядро микропроцессорной системы — основные устройства микропроцес- сорной системы: процессор, оперативная и постоянная память. Ячейка (памяти) — элемент памяти (одноразрядный или многоразряд- ный), который служит для хранения информационного кода и может быть выбран с помощью кода адреса памяти. 355
Приложение Список литературы 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 с.: ил. 356
Список литературы 14. The TTL Data Book. — Texas Instruments, 1997. 15. Новиков Ю.В., Калашников О.А., Гуляев С.Э. Разработка устройств сопряжения для персональных компьютеров типа 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 с.: ил. 357
Учебное издание Серия: «Основы информационных технологий» Новиков Юрий Витальевич Скоробогатов Павел Константинович ОСНОВЫ МИКРОПРОЦЕССОРНОЙ ТЕХНИКИ Учебное пособие Литературный редактор Е. Петровичева Обложка М. Автономова Компьютерная верстка М. Алексеева Подписано в печать 11.12.08. Формат 60x90/16. Усл. печ. л. 22,5. Тираж 1500 экз. Заказ 8382 ООО «ИНТУИТ.РУ» Интернет-Университет Информационных Технологий www.intuit.ru Москва, Электрический пер., 8, стр. 3 E-mail: admin@intuit.ru, http://www.intuit.ru БИНОМ. Лаборатория знаний 125167, Москва, проезд Аэропорта, д. 3 Телефон: (499)157-5272 e-mail: binom@Lbz.ru, http://www.Lbz.ru При участии ООО “ЭМПРЕЗА” Отпечатано с готовых файлов заказчика в ОАО «ИПК «Ульяновский Дом печати». 432980, г. Ульяновск, ул. Гончарова, 14