Текст
                    СОВРЕМЕННАЯ МИКРОПРОЦЕССОРНАЯ ТЕХНИКА
Бродим В.Б., Калинин А.В.
Системы на
микроконтроллерах и БИС
программируемой логики
ТОЧКА ОПОРЫ
• Язык AlteraHDL
Проектирование цифровых
устройств на основе ПЛИС
• Учебные практикумы для
студентов и специалистов
Инструментальные
средства и методы
• Микроконтроллеры Atmel
с архитектурой AVR
• Микроконвертер ADuC812
фирмы Analog Devices
Технология проектирования
систем на микроконтрол-
лерах и ПЛИС
Микроконтроллеры MCS-51
с модернизированными
структурами
• Архитектура MCS-51
и микроконтроллеры
Atrpel АТ89

| ANALOG I DEVICES .analog.com - за зт имеет ш БЕЖДТЫ Усилители АЦГ ЦАП сигналь™. e npoIierwfJw и микро». лыроллеры миф.схемы ,l я систем ci чи. источников ni-гания, в /цеотелники; датчика KO'JWV^ & L/' - sS oowta «. 5S •Sk>; f= t® магнитного поля, температуры, ускорения и наклона; компараторы синтезаторы часгрты; мультиплексоры, интерфейсные микросхемы и супервизоры-весь спектр продукции ANALOG.DEVIC ES. * Комплексная поставка электронных компонентов и MH0opMaunoHHaj поддержка проектов Заказчика. Консультации по цифровой обработке сигналов, проектированию и программированию устройств на о. зе DSP. >' ч» Весы спектр инструментальных и прей раммных средств разработки, а также специальные комплекту для начального освоения сигнальных процессоров (DSF, • Помощь з организации пр 'изводсва
Бродин В.Б., Калинин А.В. Системы на микроконтроллерах и БИС программируемой логики Издательство ЭКФМ Москва, 2002
ББК 32.97 Б88 УДК 681.3 Б 88 Бродин В.Б., Калинин А.В. Системы на микроконтроллерах и БИС программируемой логики —М.: Издательство ЭКОМ, 2002.—400 с.: илл. ISBN 5-7163-0089-8 Рассматривается технология проектирования микроэлектронных систем на основе мик- роконтроллеров и БИС программируемой логики (ПЛИС). Описаны «ядра» MCS-51 и AVR современных микроконтроллеров, микроконвертер ADpC812 фирмы Analog Devices, семейства ПЛИС на примере изделий фирмы Altera. Рассмотрено проектирование цифровых устройств на основе ПЛИС с использованием языка AHDL. Описаны раз- личные средства программирования и отладки микропроцессорных контролеров. Книга включает многочисленные примеры схем и фрагменты программ, которые могут быть использованы в практической работе. Одновременно с вопросами проектирования обсуждаются проблемы обучения студентов и повышения квалификации специалистов, возникающие в связи с быст- рым изменением элементной базы. В книге описаны учебные практикумы, постро- енные по принципу «делай как я» и позволяющие быстро передать практические навыки разработки систем на основе рассматриваемых микроконтроллеров и ПЛИС Особенностью продемонстрированного подхода к обучению является использова- ние только профессиональных инструментальных средств и методов, что исключа- ет необходимость дальнейшего переучивания. Книга для широкого круга специалистов В области проектирования микроэлек- тронных систем, аппаратуры и программного обеспечения. Материал соответству- ет ряду учебных курсов, необходим преподавателям и студентам. Текст печатается в авторской редакции. ББК 32.97 © Бродин В.Б., Калинин АВ., 2002 © Издательство ЭКОМ, Москва, 2002 ISBN 5-7163-0089-8
СОДЕРЖАНИЕ От авторов.....................................................6 Глава 1. Разработка систем на микроконтроллерах и ПЛИС.........9 1.1. Предпосылки нового подхода к проектированию...........9 1.2. Технология разработки микропроцессорных контроллеров.............................................12 1.3. Квазипараллельные процессы в микроконтроллерных системах управления......................................18 1.4. Спецификация сигналов управления.....................34 1.5. Особенности систем управления на микроконтроллерах и ПЛИС...................................................45 Глава 2. Архитектура MCS-51 и микроконтроллеры Atmel АТ89.....52 2.1. Особенности архитектуры MCS-51.......................52 2.2. Структура микроконтроллеров MCS-51...................54 2.3. Организация памяти и программно доступные ресурсы....59 2.4. Синхронизация, тактовая сетка, циклы команд..........62 2.5. Методы адресации и система команд....................67 2.6. Система прерываний...................................79 2.7. Параллельные порты..................................-82 2.8. Таймеры/счетчики.....................................87 2.9. Последовательный порт................................89 2.10. Режимы пониженного энергопотребления................94 2.И.М икроконтроллеры типа 8хС52.........................95 2.12. Микроконтроллеры семейства АТ89 фирмы Atmel........102 2.12.1. Программирование flash-памяти программ......104 2.12.2. Микроконтроллеры AT89S......................105 2.12.3. Микроконтроллеры AT89C51RC/55WD.............110 2.12.4. Микроконтроллер T89C51RD2.................. 112 2.12.5. Микроконтроллеры с уменьшенным числом выводов АТ89С1051/2051/4051.........................ИЗ 2.12.6. Алгоритм последовательной загрузки flash-памяти.......................................114 2.13. Другие микроконтроллеры MCS-51 с flash-памятью программ..115
4 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Глава 3. Микроконвертер AduC812 фирмы Analog Devices.........120 3.1 Структура микроконвертера ADp812......................120 3.2. Организация памяти и программно доступные ресурсы.....124 3.3. Аналого-цифровой преобразователь.....................129 3.4. Цифро-аналоговые преобразователи.....................135 3.5. Таймеры/счетчики.....................................136 3.6. Последовательные интерфейсы UART, I2C, SPI...........139 3.7. Система прерываний................................. 147 3.8. Внутреняя flash-память программ и данных.............149 3.9. Монитор напряжения питания и сторожевой таймер.......150 Глава 4. Микроконтроллеры фирмы Atmel с архитектурой AVR......152 4.1, Особенности семейства AVR............................152 4.2. Структура и функционирование микроконтроллера AT90megal03...............................................155 4 3. Методы адресации и система команд................. 164 4.4. Параллельные порты...................................176 4.5 Система прерываний....................................182 4.6. Таймеры счетчики.....................................187 4.7. Последовательные интерфейсы - SPI и UART.............202 4.8. Аналоговый компаратор и АЦП..........................211 4.9. Пример реализации широтно-импульсного модулятора с использованием встроенного счетчика-таймера.............. 216 Глава 5. Проектирование цифровых устройств на БИС программируемой логики......................... ...............222 5.1. Основные типы и семейства ПЛИС фирмы Altera..........222 5.2. Система проектирования MAX+plusII....................230 5.3. Графический ввод схемы и функциональная симуляция в системе MAX+plusII...................................... 233 5.4. Описание схемы на AHDL, использование монитора иерархии проекта MAX+plusII.....................,.........240 5.5. Проект АЛУ RISC-микроконтроллера......................245 5.6. Язык AlteraHDL........................................257 5.6.1. Структура программы на языке AHDL............257 5.6.2. Числа........................................264 5.6.3. Имена........................................264 5.6.4. Константы.....................................266 5.6.5. Переменные...................................267 5.6.6. Порты...................................... 267 5.6.7. Цепи.........................................267 5.6.8. Группы, шины (группы цепей)..................268 5.6.9. Примитивы....................................268
ОГЛАВЛЕНИЕ 5 5.6.10. Арифметические и логические выражения........269 5.6 11. Комбинационная логика................... .274 5 6.12. Посл едовательностная логика...-.............277 5.6.13. Машина состояний.............................279 5.7. Комплекс учебных средств «Проектирование цифровых устройств на ПЛИС».... ................................. 282 Глава 6. Инструментальные и учебные средства.................287 6.1. Средства для разработки систем на микроконтроллерах и ПЛИС..................................287 6.2. Средства разработки програмного обеспечения..........288 6.3. Средства отладки в реальном масштабе времени.........294 6.3 1. Одноплатные контроллеры, отладочные платы...,.296 6.3.2. Эмулятор ПЗУ/логический анализатор на основе FPGA.......................................304 6.3.3. Схемные эмуляторы.............................307 6.4. Средства программирования микросхем энергонезависимой памяти, микроконтроллеров и ПЛИС.....................314 6.5. Учебные практикумы микропроцессорной техники и ПЛИС..326 Приложение 1. Система команд микроконтроллеров MCS-51.................................... 330 Приложение 2. Система команд микроконтроллеров AVR фирмы Atmel......................... 365 Литература................................................. 399
ОТ АВТОРОВ Современный этап развития микропроцессорных систем управления характеризуется комбинированным применением микроконтроллеров и БИС программируемой логики (ПЛИС). Это позволяет значительно улучшить характеристики систем на основе известных и освоенных разра- ботчиками микроконтроллерных архитектур за счет дополнения их спе- циализированными блоками, реализованными с учетом особенностей объ- ектов управления. Значительно ускоряют проектирование и конструирова- ние полноцикловые системы автоматизации проектирования типа EDA (Electronic Design Automation), пришедшие на смену традиционным сис- темам типа CAD (Computer Aided Design), которые помогали разработчи- ку на отдельных этапах, например при проектировании печатных плат. В области микроконтроллеров, на наш взгляд, наиболее широкий круг задач покрывают семейства с архитектурой MCS-51 (архитектура фирмы Intel) и AVR фирмы Atmel (название этой фирмы является аббре- виатурой от Advanced Technology for Memory and Logic). Архитектура MCS-51 получила в последнее время новый импульс развития с появлением таких приборов, как 89С51 фирм Atmel и Philips, ADuC812 фирмы Analog Devices, W78 фирмы Winbond, AN21 фирмы Cy- press, Р-51 фирмы Cybernetic Micro Systems и ряда других. В них на од- ном кристалле с ядром MCS-51 объединены flash-память объемом до 64 Кбайт, 12-разрядные АЦП и ЦАП, интерфейсы USB, CAN и (E)ISA. Это дает возможность разработчикам использовать при решении новых задач большой имеющийся задел. Дополнительные возможности предос- тавляют версии микроконтроллеров MCS-51 с пониженным до 1,8 В на- пряжением питания, а также приборы со сжатой тактовой сеткой и повы- шенной (до 40 МГц) тактовой частотой. Микроконтроллеры семейства AVR фирмы Atmel, появившиеся на мировом рынке в 1997г., имеют современную RISC-архитектуру, которая в сочетании с технологией flash-памяти обеспечивает очень хорошие показа- тели по таким критериям, как скорость выполнения кода программы, эф- фективность генерации кода при использовании языков высокого уровня (поддержка ЯВУ системой команд), низкая цена. Важным преимуществом некоторых микроконтроллеров AVR явля- ется их совместимость по функциям выводов с микроконтроллерами архи-
ОТ АВТОРОВ 7 тектуры MCS-51. Это позволяет во многих случаях увеличить производи- тельность имеющейся системы управления посредством замены микрокон- троллера, разработки и отладки рабочей программы. Одним из наиболее известных производителей ПЛИС является фир- ма Altera. Ее продукция стала одним из стандартов «де-факто», микро- схемы и САПР отличаются высокими характеристиками, весьма скромны требования к инструментальному компьютеру разработчика. Особенностью проектирования на ПЛИС является, в настоящее время, широкое исполь- зование высокоуровневых языков описания аппаратуры AHDL, VHDL. Несмотря на публикации в периодической печати, издание несколь- ких монографий [1-3], ощущается значительный неудовлетворенный спрос на информацию об элементной базе, методах и инструментах для разра- ботки реальных современных систем управления на микроконтроллерах и ПЛИС. Эта книга создавалась как методическое и информационное ядро комплекса средств проектирования и обучения, разработанных в лабора- тории «Микропроцессорные системы» МИФИ. В ней мы изложили свое понимание современного этапа развития микропроцессорных систем управления, методов их проектирования, рассмотрели характеристики со- временной элементной базы в части 8-разрядных микроконтроллеров и ПЛИС, описали наши инструментальные и учебные средства. Одновременно с вопросами проектирования обсуждаются проблемы обучения и повышения квалификации специалистов, возникающие в связи с быстрым изменением элементной базы. Концептуально с книгой связаны учебные практикумы, построенные по принципу «делай как я» и позво- ляющие быстро передать практические навыки разработки систем управ- ления на основе рассматриваемых микроконтроллеров и ПЛИС. Главы книги включают примеры схем и фрагменты программ, которые могут быть использованы при практической работе, часть материала взята из упомянутых практикумов. Особенностью нашего подхода является то, что в практической и учебной работе мы используем только профессиональные инструментальные средства и методы, так что после разбора примеров в дальнейшем не требуется переучивания. Первая глава посвящена анализу современного состояния микропро- цессорных систем управления, методов их проектирования с использова- нием механизма квазипараллельных процессов и разделения функций ме- жду микроконтроллерами и ПЛИС. Во второй главе описывается архитектура MCS-51, ставшая одним из стандартов «де-факто» на мировом рынке микроконтроллеров. Приводится обзорная информация по микроконтроллерам серии АТ89 фирмы Atmel В третьей главе рассмотрен бесстселлер мирового рынка от фирмы Analog Devices — микроконвертер ADpC812, представляющий собой одно- кристальную систему сбора данных и управления, реализованную в виде комбинации микроконтроллерного ядра MCS-51 с прецизионным 12-
8 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ разрядным АЦП и двумя 12-разрядными ЦАП. Подобный прибор ждали и он сразу же привлек большой интерес отечественных разработчиков. В четвертой главе книги на примере микроконтроллера ATmegalO3 рассмотрена фирменная RISC-архитектура AVR компании Atmel. Пятая глава посвящена вопросам проектирования цифровых уст- ройств на ПЛИС. Рассмотрены: характеристики семейств ПЛИС фирмы Altera, способы описания проекта в графической форме и на языке AHDL, обработка проекта системой автоматизированного проектирования MAX+plusII, синтаксические конструкции языка AHDL. В шестой главе описаны инструментальные и учебные средства, раз- работанные в лаборатории «Микропроцессорные системы» МИФИ. Книга написана сотрудниками лаборатории «Микропроцессорные системы» МИФИ, имеющими опыт проектирования микропроцессорных систем космических приборов, сложных технологических установок и се- рийно выпускаемых медицинских аппаратов. Отражен опыт обучения сту- дентов и специалистов промышленности. Книга адресована широкому кругу специалистов в области проекти- рования информационных и управляющих систем, микроэлектронной ап- паратуры, программного обеспечения. Изложенный материал соответству- ет планам ряда учебных курсов, необходим преподавателям и студентам. Мы считаем, что эту книгу целесообразно будет иметь библиотекам технических ВУЗов. Благодарности: Заведующий кафедрой микроэлектроники МИФИ профессор В.С.Першенков тщательно поддерживает доброжелательную и творческую атмосферу, которая издавна существует в коллективе. Ему и всем колле- гам выражаем признательность. Профессор А.В.Шальнов, многие годы ректор МИФИ и заведующий кафедрой микроэлектроники, первым проделал практикум «Проектирова- ние цифровых устройств на ПЛИС с использованием системы MAX+plusII». Выражаем ему признательность за всегда внимательное и конструктивное обсуждение всех проблем, желаем здоровья. Профессор И.И.Шагурин в 1985г. основал отраслевую лабораторию министерства электронной промышенности СССР «Микропроцессорные системы» МИФИ. Свидетельствуем ему свое уважение и благодарим за многолетнюю совместную работу. Аспирант Л.Хохлов является одним из соавторов практикума «Про- ектирование цифровых устройств на ПЛИС с использованием системы MAX+plusII». В пятой главе книги параграф «Проект АЛУ RISC- микроконтроллера» написан по материалам его работы. Выражаем ему свою благодарность и желаем успехов. Авторы считают приятной обязанностью выразить признательность Т.Ю.Макаровой за помощь в подготовке книги.
ГЛАВА 1 РАЗРАБОТКА СИСТЕМ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ 1.1. Предпосылки нового подхода к проектированию До последнего времени в отечественной практике микроконтроллеры использовались для создания систем управления, а БИС программируемой логики (ПЛИС) служили элементной базой вычислителей и других спе- циализированных устройств. Системы управления на основе микропроцессоров и микроконтролле- ров быстро получили массовое применение, поскольку были сформулиро- ваны ясные правила их проектирования. Создание аппаратной компоненты велось на основе магистрально-модульной структуры, прикладные про- граммы вначале были несложными и разрабатывались известными метода- ми. В качестве метода комплексной отладки аппаратуры и программного обеспечения фирмой Intel уже в середине 70-х годов был предложен метод внутрисхемной эмуляции. Идея совместной работы нескольких микропро- цессорных БИС на одну магистраль в области систем управления не полу- чила развития. При необходимости увеличить производительность системы разработчики шли по пути увеличения разрядности - переходили от 8- к 16- или 32-разрядной микропроцессорной БИС. До середины 90-х годов увеличение разрядности означало, кроме прямого результата, переход в
10 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ другой класс качества микропроцессорных БИС. «Серьезные» 16- и 32- разрядные микропроцессорные БИС имели передовые архитектурные и структурные решения, которых в дешевых 8-разрядных изделиях быть не могло. Заметным явлением в конце 80-х годов стало использование во вновь разрабатываемых 8- и 16-разрядных системах управления преиму- щественно микроконтроллеров. Микропроцессоры соответствующей раз- рядности продолжают выпускаться для поддержки серийных изделий. Ос- новной областью применения микропроцессоров стала 32-разрядная обра- ботка данных в компьютерах, сигнальных и коммуникационных процессо- рах. Первоначально проектированием устройств на ПЛИС, из которых в нашей стране использовались преимущественно микросхемы фирмы Xilinx, занимался узкий круг высококвалифицированных специалистов, которые, по существу используя традиционный «вентильный» подход, создавали уникальные устройства. Проектирование велось и ведется на уровне графического ввода схемы устройства и ручной трассировки меж- соединений ячеек, характеризуется большими сроками выполнения проек- тов, поскольку возможности БИС существенно превышают возможности системы проектирования в плане автоматизированного синтеза. По сущест- ву, это традиционное проектирование, но на основе современных БИС и с привлечением САПР, поддерживающих разработчика на отдельных этапах создания проекта. Во второй половине 90-х годов ситуация существенно изменилась. Прежде всего, изменилась топология микропроцессорных систем управле- ния. В прежней магистрально-модульной структуре схемы обслуживания отдельных узлов и оконечных устройств были драйверами без интеллекта. Они выполняли функции преобразования протоколов, служили усилите- лями мощности, но не имели возможности обрабатывать свою информа- цию. Функцию обработки выполнял ведущий микроконтроллер, к которо- му от периферийных схем тянулись жгуты проводов. В литературе [4] приводятся данные, что автомобили на этом этапе содержали до трех миль проводов весом более 90 кг. Быстрое удешевление микроконтроллеров привело к целесообразности замены ими некоторых периферийных схем. Появилась возможность предобработки локальных данных и пересылки ведущему микроконтроллеру только результатов, да и то в случае необхо- димости. Это привело к широкому внедрению существовавших последова- тельных интерфейсов (RS-232, I2C, SPI) и разработке новых (CAN, Mi- croLan). Топология развитых систем управления приобрела характер сети локальных ведомых микроконтроллеров, связанных между собой и с ве- дущим микроконтроллером через последовательные интерфейсы. В на- стоящее время используются последовательные каналы как радиального, так и магистрального типов, синхронные и асинхронные.
ГЛАВА 1. РАЗРАБОТКА СИСТЕМ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ 11 Значительное улучшение характеристик собственно микроконтролле- ров, достигнутое в это время, связано с внедрением RISC-архитектур, flash-памяти программ и EEPROM-памяти данных, прецизионных блоков АЦП и ЦАП. Гарвардская архитектура микроконтроллеров (с раздельны- ми матрицами памяти программ и данных) позволила оптимизировать формат команд и обеспечить выборку и выполнение большинства из них за один машинный такт. Производительность, например, микроконтролле- ров AVR фирмы Atmel достигла значения 10 MIPS на частоте 10 МГц. Технология flash-памяти обеспечила резкое снижение стоимости мик- роконтроллеров с перезаписываемой памятью программ, позволив отка- заться от металлокерамических корпусов с кварцевым стеклом, которые были необходимы для памяти с ультрафиолетовым стиранием. Важным аспектом для надежности и мобильности систем стало появление в струк- туре микроконтроллеров энергонезависимой памяти данных. Совершенствование микроэлектронной технологии позволило фирме Analog Devices объединить на одном кристалле ядро микроконтроллеров MCS-51 с прецизионными 12-разрядными модулями АЦП и ЦАП. Микро конвертер ADp.812, по существу, является первой измерительно- управляющей микропроцессорной системой на кристалле. Важно, что передовые структурные решения в настоящее время при- меняются в классе 8-разрядных микроконтроллеров. Именно здесь рост степени интеграции направляется на реализацию новых функциональных модулей и структурных решений. Качественные изменения в области применения БИС программируе- мой логики наступили, когда в качестве средств описания проектов стали применяться языки высокого уровня типа HDL (Hardware Description Language). В это время ведущие мировые производители ПЛИС путем постепенного согласованного усложнения элементной базы и средств про- ектирования решили задачу автоматического синтеза устройства на основе текстового описания. Таким образом, появилась возможность значительно сократить сроки разработки проектов на ПЛИС и сделать процесс проек- тирования доступным широкому кругу инженеров. В настоящее время ПЛИС имеют степень интеграции до нескольких миллионов эквивалент- ных вентилей, а их быстродействие (ввода/вывода) достигло рубежа 400 МГц. Из наиболее известных производителей ПЛИС следует отметить фирму Altera. Ее микросхемы и системы проектирования дают возмож- ность быстро реализовать нужную функцию на кристалле, используя ав- томатическую компиляцию графического или текстового описания проекта. Качество и стоимость такого метода проектирования вполне соответствуют требованиям интеграции разрабатываемой схемы в структуру системы управления на основе микроконтроллеров. Микроконтроллеры и ПЛИС настолько удачно дополняют друг друга, что несколько фирм приступили к выпуску БИС, интегрирующих на од-
12 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ ном кристалле и в одном корпусе как микроконтроллер, так и матрицу программируемой логики. В качестве примера можно привести семейство БИС серии Е5 фирмы Triscend. Старшая модель семейства объединяет на кристалле ядро микроконтроллера 8051, ОЗУ объемом до 64 Кбайт и мат- рицу программируемой логики объемом до 3200 ячеек. Другим примером может служить семейство FPSLIC фирмы Atmel. БИС этого семейства включают ядро RISC-микроконтроллера AVR, стати- ческую память SRAM и матрицу FPGA типа АТ40К. Память разделена на ОЗУ программ, память данных и память общего назначения. Поскольку микроконтроллер выбирает команды из быстродействующего ОЗУ, его производительность достигает значения 40 MIPS на частоте 40 МГц. Кро- ме того, к ядру AVR-микроконтроллера добавлен 8-разрядный умножи- тель. С конфигурационной EEPROM AVR-микроконтроллер общается че- рез интерфейс 12С. Матрица FPGA программируется таким образом, что разработанное устройство доступно в общем адресном пространстве мик- роконтроллера. 1.2. Технология разработки микропроцессорных контроллеров Технология проектирования контроллеров на основе микропроцессо- ров и микроконтроллеров полностью соответствует концепции неразрывно- сти процесса проектирования и отладки аппаратной и программной со- ставляющих, принятой во всей микропроцессорной технике. Единый про- цесс проектирования микропроцессорной системы и ее отладки в англоя- зычной литературе обозначается словом development, мы будем употреб- лять термин разработка. Важной особенностью применения контроллеров является работа в реальном масштабе времени, т.е. гарантированная реак- ция на внешние события в течение определенного интервала времени. Очевидно, что решение задачи комплексной разработки аппаратуры и про- граммного обеспечения в реальном масштабе времени при произвольной структуре и схемотехнике контроллера является весьма сложной, дорого- стоящей и долговременной работой. В качестве основного метода разработки микропроцессорных систем фирмой Intel в 70-х годах был предложен метод внутрисхемной эмуля- ции. Основой этого метода является моделирование разрабатываемой сис- темы с использованием средств специализированного инструментального компьютера - схемного эмулятора. В соответствии с первоначальной идеей схемный эмулятор, представляющий из себя по сути конструктор, должен был иметь все аппаратные средства, которые могли понадобиться для реа- лизации целевой системы, плюс средства управления отладкой. Вначале контроллер конфигурировался из аппаратуры эмулятора и разрабатыва-
ГЛАВА 1. РАЗРАБОТКА СИСТЕМ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ 13 лась управляющая программа, далее на пустую макетную плату устанав- ливалась розетка целевого микропроцессора и схемы ближайшего обрам- ления, эмулятор своей эмуляционной вилкой включался в розетку вместо микропроцессора и начинался поэтапный перенос аппаратных средств с соответствующими программными фрагментами из эмулятора на плату контролера. Чтобы обеспечить такой перенос, адресное пространство памя- ти картируется с образованием сегментов, которые физически могут нахо- диться как в эмуляторе, так и на целевой плате. Основным преимуществом метода внутрисхемной эмуляции является упорядоченность процесса проектирования, который может быть разделен на ряд отдельных этапов. На каждом этапе все ошибки локализованы во вновь создаваемом аппаратном и программном обеспечении, фундаментом являются заведомо работоспособные средства эмулятора. Основным недос- татком такого глобального подхода к эмуляции является дороговизна ин- струментальных средств. Это усугублялось в первое время тем, что до по- явления персональных ЭВМ фирма Intel пошла по пути создания отла- дочных комплексов типа Intellec в виде собственной специализированной мини-ЭВМ с оригинальной операционной системой ISIS. В настоящее время средства моделирования в схемных эмуляторах, которые мы называем имитирующим процессором, в большинстве случаев замещают только целевую микропроцессорную БИС и память. Разработка остальных частей контроллера, который в настоящее время часто пред- ставляет собой сложную систему управления, ложится на разработчика. В лаборатории «Микропроцессорные системы» МИФИ при проектировании и отладке микропроцессорных контроллеров используется методика типо- вых функционально-топологических и программных (ФТП) модулей. Термин функционально-топологический и программный модуль в данном случае подразумевает, что аппаратура выполняет законченную типовую функцию, реализована в виде устоявшейся совокупности компонент (мик- росхем, пассивных элементов и т.п.) на печатной плате с определенными технологическими нормами, процедура управления аппаратурой представ- ляет собой программный модуль. Топология является неотъемлемой со- ставляющей модуля, поскольку характеристики современной прецизион- ной элементной базы могут быть реализованы только при правильном кон- струировании печатной платы. Таким образом, после определения схемо- технических решений не рекомендуется использовать автоматическое раз- мещение элементов и трассировку, а после получения хороших результа- тов эксплуатации нельзя произвольно менять топологию функционального модуля. Предпосылкой к использованию ФТП модулей является принцип ма- гистрально-модульного построения систем на основе микропроцессоров и микроконтроллеров (рис. 1.1).
14 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Объекты управления (датчики, исполнительные устройства) Рис. 1.1. Магистрально-модульная организация микропроцессорных систем Магистрально-модульная организация подразумевает, что память и интерфейс ввода/вывода выполнены в виде модулей, которые обменива- ются информацией с микропроцессорной БИС через магистраль. Обработ- ку данных осуществляет микропроцессорная БИС, как правило и обмен данными ведется под ее управлением и через ее внутренние регистры. На логическом уровне микропроцессорная система представляется в виде ре- гистровой модели. Обращение микропроцессорной БИС к ячейкам памяти и регистрам модулей ввода/вывода осуществляется по адресам, которые сводятся разработчиком в карту памяти и устройств ввода/вывода. Пара- метры магистрали (разрядность шин адреса, данных и управления, про- токол и диаграммы обмена) определяются либо каким-либо официальным стандартом, либо аналогичными параметрами микропроцессорной БИС, которые являются в этом случае стандартом «де-факто». Параметры маги- страли во многом определяют предельные характеристики производитель- ности микропроцессорной системы. Проектирование микропроцессорных контроллеров с использованием ФТМ модулей осуществляется в два этапа. На первом этапе на макетной плате создается и испытывается сам модуль, разрабатывается программное обеспечение для его обслуживания. При этом макетная плата проектирует- ся с полноценной топологией печатных проводников, обеспечивающей со- гласование по волновому сопротивлению и экранирование от наводок, но с дополнительными элементами, обеспечивающими отладку. Модуль отла- живается во взаимодействии с работоспособным процессорным модулем, с которым он в дальнейшем будет объединяться на плате. На втором этапе на основе процессорного ядра и отработанных ФТП модулей обрамления
ГЛАВА 1. РАЗРАБОТКА СИСТЕМ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ 15 разрабатывается заказной контроллер. Очевидно, что набор ФТП модулей в значительной степени привязан к тому процессорному ядру, с которым был отлажен. Особенностью микропроцессорных контроллеров является то, что они сами интегрируются в некоторый объект (embedded controllers). Это пред- полагает, что перед разработчиком микропроцессорной системы такого ро- да стоит задача полного цикла проектирования, начиная от разработки алгоритма функционирования и заканчивая комплексными испытаниями в составе изделия, а возможно и сопровождением при производстве. Основ- ные этапы цикла разработки микропроцессорного контроллера отображе- ны на рис. 1.2. Технические требования начинают цикл проектирования микропро- цессорного контроллера. Особенностью именно микропроцессорных кон- троллеров является то, что возможности их программирования подвигают заказчика заложить максимально широкие функции управления, чтобы иметь возможность использовать контроллер для управления целой гаммой аналогичных приборов. Критерием выбора должна служить экономическая целесообразность любого увеличения объема аппаратных средств, что оп- ределяется в результате исследования рынка приборов данного типа, и максимальное улучшение показателя цена/функциональные_возможности. На этом этапе явно или неявно формулируются требования к типу исполь- зуемого микропроцессора или микроконтроллера. Этап разработки алгоритма управления является наиболее ответст- венным, поскольку ошибки этого этапа обнаруживаются при испытаниях законченного изделия и приводят к дорогостоящей переработке всей сис- темы управления. Прорабатывается несколько варйантов алгоритма, обес- печивающих выполнение технических требований с использованием нара- ботанных ранее функционально-топологических модулей. Основные вари- анты отличаются соотношением объема программного обеспечения и аппа- ратуры. Критерием выбора является максимальное увеличение программы и уменьшение аппаратуры при обеспечении заданных показателей быстро- действия и надежности в полном диапазоне эксплуатационных воздейст- вий. Часто определяющим требованием является возможность размещения кода управляющей программы во внутренней памяти микроконтроллера, что позволяет обеспечить ее защиту. На этом этапе окончательно опреде- ляется тип микропроцессорной БИС и важнейших схем обрамления (flash- памяти, ПЛИС, программируемых интерфейсов, АЦП и т.п.). На этапе разработки структуры микропроцессорного контроллера окончательно определяется состав имеющихся и подлежащих разработке аппаратных модулей, протоколы обмена между модулями, типы разъемов. Поскольку контроллер встраивается в изделие, выполняется предвари- тельная проработка конструкции плат. В части программного обеспечения
16 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ определяется состав и связи программных модулей, язык программирова- ния. На этом же этапе производится выбор средств проектирования и от- ладки. Рис. 1.2. Основные этапы разработки микропроцессорного контроллера Содержание этапов разработки исходного текста программы, транс- ляции и отладки логических связей на модели существенно зависит от ис- пользуемых системных средств. В настоящее время ресурсы 8-разрядных микроконтроллеров достаточны для поддержки программирования на язы- ках высокого уровня. Это позволяет использовать все преимущества структурного программирования, разрабатывать программное обеспечение как проект с использованием раздельно транслируемых модулей. Одно-
ГЛАВА 1. РАЗРАБОТКА СИСТЕМ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ 17 временно продолжают широко использоваться языки уровня ассемблера, особенно при необходимости обеспечить контролируемые интервалы вре- мени. Задачи предобработки данных часто требуют использования вычис- лений с плавающей точкой, трансцендентных функций. В настоящее время самым мощным средством разработки программного обеспечения для кон- троллеров являются интегрированные кросс-системы программирования на языках высокого уровня типа Паскаль, Си. Система Паскаль-51, напри- мер, включает редактор текста, компилятор с редактором связей, библио- теку стандартных функций периода выполнения и символический отлад- чик. Такие системы позволяют резко сократить затраты времени на созда- ние и коррекцию программного обеспечения, что весьма важно, поскольку на рис. 1.2 видно, что эти этапы составляют внутренний, наиболее часто повторяющийся цикл в последовательности этапов разработки микропро- цессорной системы. Другой внутренний цикл, выполняемый параллельно, составляют эта- пы создания аппаратуры: разработка общей прнципиальной схемы и раз- водка топологии плат, монтаж макета и его автономная отладка. Эти эта- пы можно считать завершенными после того, как «оживает» магистраль микропроцессорной системы и через нее можно обратиться к памяти и блокам ввода/вывода. Время выполнения этих этапов зависит от имеюще- гося набора опробованных функционально-топологических модулей и ква- лификации разработчика. Распространенными системами проектирования, используемыми на этапе ввода принципиальной схемы и разработки топо- логии являются ACCEL EDA и OrCad. Эффективность их использования значительно зависит от имеющегося у разработчика объема библиотек ис- пользуемых элементов. Этап совместной отладки аппаратуры и программного обеспечения в реальном масштабе времени является самым трудоемким и обязательно требует использования таких высокопроизводительных средств (development tools), как схемный эмулятор, эмулятор ПЗУ, логический анализатор и генератор программируемых последовательностей. Выбор одного из перечисленных средств обусловлен используемым методом от- ладки. Этап завершается, когда аппаратура и программное обеспечение совместно обеспечивают выполнение всех шагов алгоритма работы систе- мы. В конце этапа код программы управления «зашивается» с помощью программатора в энергонезависимую память и проверяется работа кон- троллера без участия эмулятора. Отладка на этом этапе ведется в лабора- торных условия с питанием от источника, обеспечивающего максимальную защиту аппаратуры. Часть внешних источников информации может моде- лироваться. Этап интеграции контроллера в изделие заключается в повторении работ по совместной отладке аппаратуры и управляющей программы, но
18 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ при работе в собственном отсеке изделия, питании от штатного источника, с информацией от штатных устройств и датчиков. Осложнения, как пра- вило, возникают из-за электромагнитной несовместимости исполнительных устройств, разработанных ранее, с микропроцессорной системой управле- ния. Много времени на этом этапе уходит на ликвидацию одиночных сбо- ев. Эту проблему можно решить с помощью программного резервирова- ния, но только при наличии резерва памяти программ. На этом же этапе проводится и калибровка прибора с занесением параметров во flash- память. Испытания изделия с микропроцессорным контроллером можно раз- делить на комплексные и специальные. Особенностью комплексных испы- таний является то, что для наблюдением за микропроцессорным контрол- леров в реальных условиях не всегда применимы лабораторные средства отладки. Автономные отладочные средства менее развиты и при этом су- щественно дороже. Специальные испытания (на электромагнитную совмес- тимость, климатические и т.п.) проводятся по обычным методикам. После успешного проведения испытаний появляется файл с окончательной верси- ей кода управляющей программы для программатора или для завода- изготовителя микроконтроллеров, который осуществляет масочное про- граммирование внутренней памяти программ. 1.3. Квазипараллельные процессы в микропроцессорных системах управления Задачи управления в микропроцессорных системах решаются как про- граммно, так и аппаратно. Программную часть реализации функций управления осуществляет модуль центрального процессора, аппаратную - специализированные интерфейсные модули. Эти модули: последователь- ный порт, контроллер прямого доступа к памяти и другие, - выполняют свои операции преобразования данных после получения команд и данных от процессора, работают параллельно с ним. В традиционной системе на основе комплекта микропроцессорных БИС (рис. 1.1) результатом выполнения микропроцессором фрагмента программы являются данные на магистрали и модифицированное содер- жимое регистров и ячеек памяти данных. Ввод и вывод данных через бу- феры шины данных представляет собой элементарную операцию, привя- занную к тактовой сетке процессора, поэтому можно говорить о чисто про- граммной реализации функций управления. События при этом отражаются сигналами на линиях магистрали. Чисто программное управление, таким образом, реализуется там, где сигналы на линиях магистрали могут быть использованы непосредственно для управления без дальнейшего аппарат-
ГЛАВА 1. РАЗРАБОТКА СИСТЕМ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ 1 9 кого логического преобразования, например при работе с другим микро- процессором. Часть типовых операций управления, необходимых для связи с реаль- ными объектами, реализованы в традиционной системе аппаратно в виде специализированных интерфейсных БИС. Эти операции не являются три- виальными, поскольку реализуются сложными самостоятельно функцио- нирующими цифровыми автоматами, преобразующими данные. Такие ав- томаты, как последовательный порт, тактируются некоторым синхросигна- лом и проходят в процессе работы ряд состояний. Они самостоятельно воспринимают внешние события (сигналы) и обрабатывают их, привязка к сетке процессора производится по прерываниям. То же касается и форми- рования выходных сигналов управления. При отсутствии интерфейсной БИС с нужной операцией прежде приходилось создавать требуемый авто- мат из схем малой степени интеграции. Очевидно, что в общем случае микропроцессорная система управляет объектами, используя комбинированную аппаратно-программную реализа- цию функций управления. Микроконтроллер отличается от микропроцессора тем, что аппаратные операции, наиболее часто используемые в микропроцессорных системах управления, выполняются внутренними модулями, интегрированными на кристалл вместе с процессорным ядром. Это, кроме памяти программ и данных, таймеры/счетчики, последовательные порты, модули АЦП и ЦАП, модули управления электродвигателями и т.п. Модуль процессора в микроконтроллере способен выполнять с разде- лением времени несколько функций управления. При этом функции управления реализуются как процессы на временной сетке с некоторым элементарным интервалом времени ATn , и можно говорить о квазипарал- лельных процессах. Организацию и взаимодействие квазипараллельных процессов управ- ления рассмотрим на примере работы ведущего микроконтроллера системы управления рентгенотелевизионного аппарата. Связи платы ведущего мик- роконтроллера с панелью управления и другими объектами видны из рис. 1.3. При включении аппарата процедура инициализации ведущего микро- контроллера устанавливает режим автоматического просвечивания, на про- граммируемое устройство питания рентгеновского излучателя (РИ) пода- ются логические сигналы управления и аналоговые сигналы уставок анод- ного напряжения КС и анодного тока МС. Формируются также сигналы для блока диафрагм, усилителя рентгеновского изображения (УРИ) и сис- темы обработки изображений (СОИ). Аппарат переходит в состояние го- товности текущего режима, тип и параметры режима могут изменяться с панели управления, но высокое анодное напряжение на РИ подается толь-
20 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ ко при нажатии педали или ручного включателя. Включение высокого на- пряжения сопровождается формированием логических сигналов в соответ- ствии с определенной циклограммой. Рис. 1.3. Микропроцессорная СУ рентгенотелевизионного аппарата и связи с объектами управления При включенном РИ ведущий микроконтроллер обслуживает процесс автоматического регулирования мощности дозы. При этом он получает цифровой сигнал обратной связи, частота которого зависит от величины рассогласования аналогового сигнала ОС относительно опорного значения, и формирует новое значение кода уставки, из которого далее образуется аналоговый сигнал КС. Каждый импульс цифрового сигнала ОС вызывает прерывание, процедура которого инкрементирует или декрементирует внутренний счетчик микроконтроллера, являющийся источником кода ус- тавки. Между прерываниями анализируется посылка от панели управле- ния на предмет изменения раскрыва диафрагм. Отпускание педали или включателя приводит к снятию высокого напряжения с РИ, аппарат вновь переходит в состояние готовности текущего режима. Система обеспечения безопасности функционирования формирует общий сигнал неготовности и код ошибки. Сигнал неготовности приводит к снятию высокого напряже- ния с РИ и выдаче кода ошибки на панель оператора.
ГЛАВА 1. РАЗРАБОТКА СИСТЕМ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ 21 Из вышеизложенного можно заключить, что в сложных системах управления ведущий микроконтроллер должен обеспечить реализацию следующих процессов: • формирование временной сетки с заданным элементарным интервалом; • обслуживание подсистемы безопасности; • формирование циклограмм сигналов управления объектами; • регулирование параметров непрерывных процессов в аппарате на осно- ве анализа сигналов обратных связей. • взаимодействие с оператором через панель управления и отдельные включатели/педали, переключение режимов работы. Организация параллельных процессов управления на микроконтрол- лерах требует предварительного (статического) планирования их выполне- ния: расчета времени, механизмов взаимодействия и необходимых ресур- сов. Рассмотрим временную диаграмму реализации перечисленных выше процессов в СУ рентгенотелевизионного аппарата, представленную на рис. 1.4. Каждый процесс в СУ на микроконтроллерах реализуется как после- довательность операторов на сетке системного времени. Операторы выпол- няются с использованием процедур. Процедуры могут прерывать друг друга, но операторы определенных процессов должны быть выполнены к определенному времени. Рассмотрим каждый из перечисленных выше процессов. При этом мы не будем подробнее, чем это сделано в комментариях, анализировать текст программы. Нашей целью является анализ структуры программы и опре- деление времени выполнения операторов каждого из процессов. Текст фрагментов программы служит для демонстрации того, что в развитой системе программная реализация функций управления требует значитель- ного времени и ресурсов из-за необходимости реализовать взаимодействие квазипараллельных процессов. Формирование временной сетки. Для взаимодействия процессов вна- чале необходимо определить величину элементарного интервала времени и сформировать временную сетку. Сетка формируется с использованием вы- деленного аппаратного модуля микроконтроллера - таймера/счетчика, ра- ботающего в режиме счета внутренних импульсов синхронизации. Таймер при переполнении формирует запрос прерывания, процедура обслужива- ния которого вызывает его перезагрузку. Прерывание таймера системного времени должно иметь наивысший приоритет. Поскольку процесс формирования циклограмм сигналов управления использует интервалы системного времени и это является ос- новой программного управления, временная сетка должна быть непрерыв- ной и равномерной AT N = TN+t TN =const - ЛТсистемы . Важной задачей является определение длительности элементарного интервала системного
22 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ времени. Слишком длительный интервал вызывает недозагрузку ведущего микроконтроллера, ухудшение параметра «реального времени». Слишком короткий интервал может привести к нарушению циклограмм сигналов управления и аварийной ситуации. Рис. 1.4. Диаграмма квазипараллельных процессов в системе управления Если в качестве ведущего используется микроконтроллер семейства MCS-51, то таймер (например ТО) считает машинные циклы (Тц= 12/FOCU). Перезагрузка таймера системного времени производится процедурой в две команды по два цикла, еще два цикла тратится на вход в процедуру. Следовательно, перезагрузка выполняется за 6 машинных циклов. Чтобы не накапливалась ошибка, это время должно быть учтено коррекцией начального значения, например следующим образом: intTO: mov THO, #High (TORLD+6) ; перезагрузка ст. байта ТО mov TLO, #Low (TORLD+6) ; перезагрузка мл. байта ТО
ГЛАВА 1. РАЗРАБОТКА СИСТЕМ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ 23 Таким образом, процесс формирования временной сетки включает один оператор перезагрузки таймера, который выполняется после завер- шения текущего интервала сетки. Нас интересует длительность выполне- ния этого оператора, представляющая собой сумму машинных циклов его команд X Qi Как указано выше, команды занимают 6 машинных циклов микроконтроллера. При тактовой частоте Еосц = 12 МГц оператор форми- рования временной сетки нашего примера выполняется за AtCB = 6,0 мксек. Обслуживание подсистемы безопасности. Микроконтроллер может обслуживать подсистему безопасности, самостоятельно анализируя значе- ния сигналов с некоторых датчиков, а также обрабатывая запрос прерыва- ния от внешней схемы контроля функционирования. Самостоятельно ана- лизируемые сигналы с датчиков отражают состояние медленно меняющих- ся параметров аппарата - например, температуры. Результатом анализа может быть подача сигналов предупреждения — например мигание индика- тора на панели управления. Запрос прерывания является результатом ра- боты схемы контроля функционирования, которая следит за быстро изме- няющимися параметрами - например, основной частотой синхронизации. При пропадании этого сигнала запрос прерывания приводит к снятию вы- сокого напряжения, отображению сообщения об ошибке функционирова- ния. Если анализируемые сигналы с датчиков имеют логическую форму, то процедура, реализующая оператор рассматриваемого процесса, может иметь следующий вид: TCntr: mov OBRP5, P5 * ввод значения из порта в регистр-образ порта mov C, IDTP * значение линии копируем mov IdTank, C * в бит светодиода IdTank jb TP2, KTP3 * если ТР2 пассивный ( активный «0»), выходим mov A, BLINK * иначе мигаем jz KTP1 * если счетчик мигания обнулился, перезагружаем djnz BLINK, KTP2 если нет КТР1: mov BUNK, #TankRLD * перезагружаем счетчик мигания epi Tblink * и инвертируем флаг мигания КТР2: mov C.Tblink * флаг мигания копируем во флаг индикации mov IdTank, C * перегрева КТРЗ: setb TankSh ; * установка бита отображения температуры РИ ret Эта процедура читает данные с порта Р5 (микроконтроллер 80С552) и копирует данные в регистр-образ порта OBRP5, второй и третий биты которого хранят информацию о значениях сигналов с датчиков температу- ры. Если сигналы образуются на выходах компараторов напряжения, то температурный диапазон разбивается на три участка. Текущая температура показывается оператору светодиодом на панели.
24 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Т<Т1 Т1<Т<Т2 Т>Т2 IDTP=1, ТР2=1 IDTP=O, ТР2=1 IDTP=O, ТР2=0 Светодиод не горит Светодиод горит Светодиод мигает Мигание светодиода реализуется посредством программного счетчика BLINK, константа перезагрузки которого TankRLD определяет частоту вспышек. Результом работы этого фрагмента программы и процесса явля- ется установленный флаг TankSh и значение бита IdTank (активное значе- ние «О» управляет зажиганием светодиода). Команды последовательного порта на зажигание и гашение светодио- да формируются далее процедурами TankOn и TankOFF. Эти процедуры уже относятся к процессу взаимодействия с оператором через последовательный порт. Рассматриваемый процесс использует следующие ресурсы внутренне- го ОЗУ микроконтроллера: Tbllnk IdTANK TankSh IDTP KTP2 BLINK Счетчик мигания IdTank FLAG Байт дополнительных флагов OBRP5 Образ Р5 Таким образом, процесс обслуживания подсистемы безопасности включает один оператор, реализуется одной процедурой, выполняемой на каждом интервале системной сетки. Последовательность выполняемых команд в процедуре зависит от входных условий (значений IDTP и ТР2). Наиболее длинная (в машин- ных циклах) последовательность команд max (X Qt) реализуется при пе- реходе на метку КТР2 и занимает 19 циклов микроконтроллера. При Focu= 12 МГц время обслуживания подсистемы безопасности нашего при- мера составляет Д1бп=19,0 мксек. Формирование временных диаграмм логических сигналов управле- ния. Для формирования временных диаграмм внутренних и внешних сиг- налов при программном управлении используются программные счетчики, временная сетка системы и последовательный опрос флагов, которые ха- рактеризуют активность сигналов. При этом в течение каждого элементар- ного интервала системной сетки процедура формирования циклограммы производит опрос каждого флага, при его активности инкрементирует или декрементирует регистр счетчика сигнала, при наличии переполнения сбрасывает флаг и изменяет значение сигнала. Таким образом, циклограм- ма сигналов управления формируется с точностью не хуже элементарного интервала системной сетки. Для реализации указанного механизма под
ГЛАВА 1. РАЗРАБОТКА СИСТЕМ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ 25 буферы счета и флаги для каждого сигнала в памяти данных микрокон- троллера должны быть выделены ресурсы. Модель части ресурсов для СУ рентгенотелевизионного аппарата может выглядеть так: Счетчик просвечивания Флаг просвечивания FLUOON Регистр счетчика просвечивания (ст.) FLUOT1 Регистр счетчика просвечивания (мл.) FLUOTO Счетчик короткой задержки 1 Флаг короткой задержки SHRTON Регистр счетчика короткой задержки SHRT Счетчик короткой задержки 2 Флаг короткой задержки DLAYON Регистр счетчика короткой задержки DLAY Счетчик сигнала COPY Счетчик сигнала FIX Флаг сигнала COPYON Регистр счетчика сигнала COPYT COPY Бит порта Р1 Флаг сигнала F1XON Регистр счетчика сигнала FIXT FIX Бит порта Р1 Счетчик длинной задержки Флаг длинной задержки LONGON Регистр счетчика дл. задержки (ст.) LONGT1 Регистр счетчика дл. задержки (мл.) LONGOTO Счетчик задержки клавиатуры Флаг сигнала KBLockON Регистр счетчика сигнала KBLock Рис. 1.5. Модель ресурсов для обслуживания циклограммы сигналов В модели имеются счетчики, обслуживающие циклограмму внешних сигналов (FLUO - включение высокого напряжения, COPY, FIX - сигна- лы управления СОИ) и счетчики, обслуживающие внутренние протоколы СУ (KBLock - обслуживания клавиатуры панели управления, SHRT, DLAY, LONG - формирования интервалов времени). Флаги событий ус- танавливаются в соответствии с командами от панели управления. Отме- тим, что флаги и счетчики реализуются программно и могут быть привя- заны к любой ячейке памяти данных микроконтроллера. Определенные выше ресурсы обслуживаются программой в следующей последовательно- сти: • сохранение в стеке аккумулятора и регистра флагов; • перезагрузка сторожевого таймера; • проверка флага просвечивания FLUO, наращивание счетчика FLUOT1, FLUОТО, проверка значения счетчика и включение звуково- го сигнала при значениях времени 5 мин. и 10 мин.; • проверка флага короткой задержки SHRTON, наращивание счетчика SHRT, проверка значения счетчика и сброс флага при переполнении;
26 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ • проверка флага короткой задержки DLAYON, наращивание счетчика DLAY, проверка значения счетчика и сброс флага при переполнении; • проверка флага FIXON, наращивание счетчика FIXT, проверка значе- ния счетчика, сброс флага и снятие сигнала FIX при переполнении, гашение индикатора; • проверка флага COPYON, наращивание счетчика COPYT, проверка значения счетчика, сброс флага и снятие сигнала COPY при перепол- нении, гашение индикатора; • проверка флага длинной задержки LONGON, наращивание счетчика LONGT1, LONGTO, проверка значения счетчика и сброс флага при пе- реполнении; • проверка флага KBLockON, наращивание счетчика KBLock, проверка значения счетчика и сброс флага при переполнении; Текст процедуры формирования сигналов управления может быть сле- дующим: Циклограмма’ IsRdy: push push ACC PSW orl PCON, #10h ; перезагрузка сторожевого таймера mov T3, WATCHT jnb FLUOON, OUTET ; если установлен флаг просвечивания inc FLUOTO ; увеличим мл байт счетчика на 1 mov A.FLUOTO jnz FT1 inc FLUOT1 ; если ноль, прибавим перенос к ст. байту mov A.LastFL ; сравним текущее время с отображаемым xrl A.FLUOT1 jz FT4 ; если не совпадает, setb TOSOW ; установим флаг вывода на дисплей FT4: mov LastFL,FLUOT1 ; переустановим отображаемое время FT1: mov A.FLUOT1 , проверим текущее время проев ния cjne A,#T5MIN,FT2 ; если оно равно 5 мин. setb BELL ; включим звуковой сигнал FT2: cjne A,#T10MIN,FT3 ; если оно равно 10 мин. FT3: jc OUTFT setb BELL ; включим звуковой сигнал setb FLTMNR ; установим флаги ошибки просвечивания setb NTRDERR ; установим флаг общей ошибки ajmp OUTLG OUT FT: jnb SHRTON, OUTSH ; если уст флаг короткой задержки 1 mov A.SHRT ; проверим его счетчик jz STPSH ; djnz SHRT, OUTSH ; если не ноль, инкрементируем его STPSH: clr SHRTON ; если ноль, сбросим флаг OUTSH: jnb DLAYON,OUTDL ; если уст флаг короткой задержки 2 mov A, DLAY , проверим его счетчик
ГЛАВА 1 РАЗРАБОТКА СИСТЕМ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ 27 jz djnz STPDL ; DLAY, OUTDL ; если не ноль, инкрементируем его STPDL: clr DLAYON- OUTDL: jnb FIXON,OUTFX mov A.FIXT jz STPFX ; djnz FIXT, OUTFX STPFX: clr FIXON setb FIX setb IdFIX setb LEDOUT OUTFX: jnb COPYON,OUTCP mov A.COPYT jz STPCP ; djnz COPYT, OUTCP STPCP: clr COPYON setb COPY setb IdCOPY setb LEDOUT OUTCP: jnb LONGON,OUTLG clr C mov A, LONGO subb A,#1 mov LONGO,A ; mov A.LONG1 subb A,#0 ; mov LONG1.A ; jnz OUTLG mov A,LONGO jnz OUTLG dr LONGON OUTLG: jnb KBIockON.OUTKB jb KBRQ,STPKB mov A.Kblock jz STPKB djnz Kblock.OUTKB mov A.Kblock jz STPKB ; djnz Kblock.OUTKB STPKB: clr KblockON jb KBRQ,NORMKB ; setb KblockFast ;если не нажата клавиша, sjmp OUTKB NORMKB: clr KblockFast ; если ноль, сбросим флаг ; если уст. флаг FIX ; проверим его счетчик ; если не ноль, инкрементируем его ; если ноль, сбросим флаг ; уст. пассивное значение линии ; и пассивное значение индикатора ; уст. флаг обновления светодиодов ; если уст. флаг COPY ; проверим его счетчик ; если не ноль, инкрементируем его ; если ноль, сбросим флаг ; уст. пассивное значение линии ; и пассивное значение индикатора ; уст. флаг обновления светодиодов ; если уст. флаг длинной задержки ; декремент мл. байта счетчика > ; декремент ст. байта счетчика ; проверим ст. байт на 0 ; проверим мл. байт на ; счетчик обнулен, сбросим флаг ; если уст. флаг задержки клавиатуры ; и нажата клавиша ; ; проверим счетчик ; если не ноль, инкрементируем его ; проверим счетчик ; если не ноль, инкрементируем его ; очистка флага уст. "быстрый режим ; и уйдем ; если нажата клавиша, ; сбросим "быстрый режим" pop pop ret PSW ACC ;**************************************************************
28 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Процедура формирования циклограммы сигналов управления может следовать непосредственно за процедурой обслуживания подсистемы безо- пасности. Последовательность выполняемых команд в этом фрагменте про- граммы зависит от входных условий (значений флагов FLUOON, SHRTON, DLAYON, COPYON, FIXON, LONGON, и KBLockON). Наи- более длинная последовательность команд max (X Qi) включает 114 ма- шинных циклов микроконтроллера и при тактовой частоте Focu = 12 МГц занимает Д1ЦИКЛ= 114,0 мксек. Регулирование параметров непрерывных процессов. Регулирование целесообразно выполнять с использованием процедуры прерывания, за- просом может служить сигнал от компаратора при рассогласовании, вели- чина которого превышает интервал нечувствительности. Кроме величины рассогласования необходимо знать его знак. В рассматриваемом примере, рентгенотелевизионном аппарате, сигнал рассогласования преобразуется в последовательность импульсов, частота которых пропорциональна напряжению рассогласования. Каждый импульс вызывает прерывание, а значение логического сигнала UPAuto говорит о необходимости увеличивать или уменьшать значение уставок анодного на- пряжения КС и тока МС. Их аналоговые значения формируются в два этапа: вначале процедура прерывания анализирует сигнал UP Auto, а также определяет, не достигнуты ли границы регулирования (LOWLIM,UPLIM). Если границы не достигнуты, формируются новые значения кодов уставок. Далее вызывается процедура LDDAC, которая записывает эти коды по 8-разрядной шине в регистры двухканального ЦАП. Затем формируются сигналы управления LDAC и ЕА, по которым на выходе ЦАП появляются аналоговые значения КС и МС. регулирование по прерыванию IntO’ IntO: push push push mov jb Уменьшение ACC 00 PSW RO, #KVCNTH UP_AUTO,IUP ; ♦ проверяем линию UpAuto cjne ©RO,#High (LOWUM+8), IDN2 ;если High=Low предел dec RO cjne ©RO,#LOW (LOWUM+8) , IDN2 ;Low<Low предел, то IDN2: jnc IDN1 Noldec: mov KVCNTL, #Low (LOWLIM) mov KVCNTL, #High (LOWLIM) sjmp IPASS регулировать не будем IDN1: ; иначе уменьшаем KVCNT clr C mov A, KVCNTL subb A, #8 mov KVCNTL,A
ГЛАВА 1. РАЗРАБОТКА СИСТЕМ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ 29 mov A, KVCNTL subb A, #0 mov KVCNTL.A sjmp TODAC IUP: Увеличение cjne ©RO,#High (UPLIM-8), IUP1 ; * если High=Up предел dec RO ; * cjne ©R0,#Low (UPLIM-8) , IUP2 ; * и Low+8>Up предел IUP2: jc IUP1 ; • mov KVCNTL, #Low (UPLIM) mov KVCNTL, #High (UPLIM) sjmp IPASS регулировать не будем IUP1: ;иначе увеличиваем mov А, #8 ; * add A, KVCNTL ; * mov KVCNTL.A ; * mov A.KVCNTH ; * addc А, #0 ; * mov KVCNTH.A ; * TODAC: ; Загрузка ЦАП leal! LDDAC ; * IPASS: POP PSW ; * POP 00 ; * POP АСС ; * IOUT: dr IE0 ; * reti 1 Последовательность выполняемых команд в этом фрагменте програм- мы включает две независимых ветви (наращивание и уменьшение счетчика KVCNT) с одинаковым количеством команд. После проверки значения на линии UP_AUTO выполняется одна из них. Наиболее длинная последова- тельность команд имеет место, если пределы регулирования не достигну- ты. Такая последовательность команд (отмечена символом *) включает 33 машинных цикла микроконтроллера. Еще 54 цикла занимают процедуры извлечения кодов значений напряжения и тока из таблиц (по значению указателя KVCNT) и загрузки их в регистры двухканального ЦАП. Эти процедуры представляют собой линейную последовательность команд и из- за недостатка места мы их приводить не будем. Таким образом, оператор регулирования реализуется процедурой пре- рывания, которая включает две процедуры второго уровня (процедура LDDAC вызывает процедуру GetKVWord). Максимальная длина команд набора процедур регулирования max (X Qi) включает 87 машинных цик- лов микроконтроллера и при тактовой частоте Focu = 12 МГц занимает АЦ>ег= 87,0 мксек. Взаимодействие с оператором через панель управления. Взаимодей- ствие с оператором заключается в приеме кода нажатых на клавиатуре па- нели клавиш, переключении режимов работы аппарата и установке пара-
30 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ метров текущего режима, передаче параметров текущего режима для ото- бражения на дисплеях и индикаторах панели управления. Электрофизические установки типа рентгенотелевизионного аппарата могут иметь достаточно сложные панели управления, с многочисленными клавишами и переключателями, отдельными индикаторами и дисплеями. Рассматриваемый в качестве примера аппарат имеет следующие устройства на панели управления: Устройства панели управления Кол-во устройств Клавиши 36 Светодиоды 18 Дисплеи 1 Включатели и педали 4 В случае возникновения ошибки на панель должно быть передано со- ответствующее сообщение, код ошибки и, желательно, диагностическая информация. В целях диагностики аппарат должен оставаться в состоянии готовности текущего режима (высокое напряжение снимается), поэтому временная сетка не должна нарушаться. Для сокращения количества линий связи меду панелью и платой ве- дущего микроконтроллера, а также увеличения помехоустойчивости обме- на, передача обычно ведется по последовательному каналу. В рассматри- ваемом примере используется интерфейс RS232, при его использовании желательно сформировать систему команд обмена, например такую: Код (КОП) Мнемоника Действие 02 readkey чтение кода клавиши 23 lightjed засветить светодиод № 24 darkled погасить светодиод № 86 show_data2 высветить данные (2 байта) 87 show data3 высветить данные (3 байта) Обмен при использовании подобной системы команд обмен строится по принципу Master - Slave. Устройством Master является плата ведущего микроконтроллера, устройством Slave - микроконтролер панели управле- ния. Все информационные посылки между платами начинаются со специ- ального кода - EscByte. Ведущее устройство посылает команду ведомому в посылке: EscByte, КОП, В1 ... Вп где В1.. Вп - байты данных (п= 0.. 4, определяется кодом команды).
ГЛАВА 1. РАЗРАБОТКА СИСТЕМ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ 31 Если при получении посылки нет ошибок (первый байт равен EscByte, правильный КОП, верное количество байтов данных), то по окончании приема посылки ведомый выдает ответ «понял» в формате EscByte, cmOk и выполняет команду. По окончании выполнения команды ведущему уст- ройству высылается байт готовности в формате EscByte, ReadyByte. Использование системы команд увеличивает надежность последова- тельного обмена, но увеличивает время на обслуживание соответствующего процесса. При работе через последовательный порт время реакции складывается из двух компонент: • Ладанные _ времени обслуживания процессором квазипараллельного процесса подготовки передаваемых и обработки принятых данных; • tnnopT ~ времени работы процедуры прерывания последовательного пор- та и собственно обмена по линии. ^-панель ^пданные + tnnopm Процедура обработки прерывания последовательного порта весьма короткая, при передаче она, в основном, заключается в загрузке байта в регистр данных порта (SBUF в архитектуре MCS-51). Далее последова- тельный порт работает автономно, а процессор освобождается для обра- ботки программно реализуемых процессов. Поэтому сейчас нас интересует интервал времени . Фрагмент программы нашего примера, отвечающий за процесс взаи- модействия с панелью управления, может иметь следующий вид: Work: WKB: jb KBRQ,WNoKey * если нажата клавиша, lead GETKBD * чтение клавиатуры jnb FO,WNoKey * если байт принят setb TOSHOW ж cjne A,#kbAUTO,W1 * проверяем код клавиши Icall InitA установим автоматический режим sjmp WNoKey W1: cjne A,#kbMNL,W2 * jb GRFMOD, WNoKey если не съемка, Icall InitM установим ручной режим sjmp WNoKey
32 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ W2: cjne jb Icall sjmp A,#kbPLS,W3 GRFMOD,WNoKey InitP WNoKey * если не съемка, установим импульсный режим W3: cjne Icall sjmp A,#kbGRF,W5 ; * InitG установим режим съемки WNoKey W5: Icall VICTRL ; * обработка клавиш упр. видео и диафрагмами WNoKey. Wrun: Icall FTHDTP jnb F1, WNS jnb GRFMOD, Wrun mov OBRP5, P5 jb HDSW, WNS Icall GRFSW sjmp WNS Icall RunFluo нажата педаль/кнопка (F1=true/false) ★ * * * * * * Fluo автоматический/ручной(импульсный) WNS: ajmp Work * No GRF, Fluo * В начале программы анализируется линия KBRQ, активный низкий уровень на которой свидетельствует о нажатой клавише. Если это имеет место, то вызывается процедура обслуживания последовательного порта GETKBD, которая читает код нажатой клавиши. Далее этот код сравнива- ется с эталонами и при совпадении вызывается процедура переключения в указанный режим. Если совпадения с основными эталонами нет, то проце- дурой VICTRL проверяются клавиши второго уровня, устанавливающие параметры текущего режима (положение диафрагм, вид взаимодействия с СОИ и т.д.). Эта процедура длинная (62 машинных цикла), по структуре похожа на опрос счетчиков в процессе формирования циклограммы. При отсутствии нажатых клавиш проверяются включатели и педали (актив- ность характеризует значение флага Fl=l) и при наличии сигнала вызы- ваются процедуры RunFluo и GRFSW подачи высокого напряжения при просвечивании и съемке, соответственно. Наибольшую длительность этот процесс имеет при анализе клавиш второго уровня (клавиши параметров текущего режима в процедуре VICTRL). Длина последовательности команд при этом max (XQi) состав- ляет 105 машинных циклов микроконтроллера и при тактовой частоте Еосц = 12 МГц занимает АЦ^нны» = 105,0 мксек. Критерии планирования квазипараллельных процессов. Основные цели планирования квазипараллельных процессов в системе управления на микроконтроллерах состоят в следующем:
ГЛАВА 1. РАЗРАБОТКА систем на микроконтроллерах и бис программируемой логики 33 • определить возможность реализация заданного в ТЗ алгоритма управ- ления на данном типе микроконтроллера; • организовать реализацию алгоритма управления преимущественно про- граммным образом, с минимальным привлечением внешних (относи- тельно микроконтроллера) аппаратных средств. Следующие критерии, последовательно применяемые при отборе вариан- тов, могут привести к нужному решению (рис. 1.4): • Циклограммы сигналов должны формироваться с необходимой точно- стью, поэтому элементарный интервал времени системной сетки не должен превышать минимального допуска временной диаграммы сиг- налов управления: АТсистемы — mtn {АТсигналов} (W^) Это условие является обязательным. Оно же дает первое приближение («сверху») величины интервала системной сетки. • Все операции процессов формирования системной временной сетки, контроля функционирования, формирования циклограмм внутренних и внешних сигналов должны быть выполнены в течении элементарного интервала времени сетки: пшх Qij) — АТсистемы (W^) Это условие также является обязательным, его нарушение может вы- звать аварийную ситуацию. Применение этого условия дает второе приближение величины («снизу») интервала системной сетки. • Времени, оставшегося в интервалах системной сетки после выполнения обязательных операторов, должно хватить на выполнение нужного ко- личества операторов регулирования параметров технологических про- цессов за определенное время (должно обеспечиваться необходимое быстродействие аппарата): A, R Р / t {^Тсистемы * А1рег, (W^y) H = ]F /AUpei[ К — ] F /V *АТсистемы [ где Р - количество команд i-ro оператора предшествующего процесса в последовательности наибольшей длины; R ~ количество предшествующих обязательных (фиксированных) процессов;
34 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Н - количество операторов регулирования, посредством которых достигается изменение значения сигнала на указанную вели- чину F; К — количество интервалов системного времени, за которое сигнал должен измениться на заданную величину F при заданном времени нарастания v. В нашем примере это означает, что при требуемой скорости нарастания сигнала на выходе KV равной v = 10,0 В/с и дискрете регулирования AUpel = 0,25 В (в одном операторе) при максимальном разбалансе за десять 10-миллисекундных циклов должно выполняться четыре опера- тора регулирования. Величина изменения напряжения сигнала KV принята равной F = 1,0 В. Это третье приближение величины («снизу») интервала системной сет- ки. • При развитой панели управления и сложном протоколе обмена с ней ведущего микроконтроллера времени, оставшегося в интервалах сис- темной сетки после выполнения обязательных операторов и оператора регулирования, должно хватить на выполнение нужного количества операторов обмена с панелью за определенное время. R+S Р у {ДТсисиемы -тах{ 22 220.У)}^ — КТоператора , (W4) где F+5 - количество предшествующих фиксированных и плавающих процессов; М — количество интервалов системного времени, за которые дол- жен быть выполнен обмен с панелью; ДТоператора - допустимое время ожидания оператором отклика системы. Это четвертое приближение величины («снизу») интервала системной сетки. 1.4. Спецификация сигналов управления В предыдущем параграфе были рассмотрены программные квазипа- раллельные процессы, посредством которых в системе на микроконтрол- лерах реализуются программные компоненты функций управления. Анализ сложных СУ на микроконтроллерах, в том числе рассматри- ваемого примера, показывает, что каждая функция управления может ха- рактеризоваться следующими параметрами:
ГЛАВА 1. РАЗРАБОТКА СИСТЕМ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ 35 • количеством линий входных и выходных сигналов. В набор сигналов должны быть включены как внешние, так и внутренние сигналы (фла- ги, регистры микроконтроллера), служащие для взаимодействия про- цессов; • типом выполняемой операции преобразования данных. Особенностью микропроцессорной техники является использование типовых операций типа AD- и DA-преобразований, счетчиков и т.д., которые реализова- ны в виде модулей ввода/вывода микроконтроллеров или отдельных микросхем. В этом случае может быть указано имя операции и разряд- ность, например ADC-8. При реализации произвольной цифровой опе- рации ее имя может быть связано с описанием на одном из языков ти- па HDL; • временем выполнения операции преобразования данных. Имеется в виду полное время аппаратно-программной реализации, входящее в параметр «реальное время» всей системы управления; • временем программной реализации оператора квазипараллельного про- цесса; • объемом используемых внутренних ресурсов микроконтроллера; • объемом аппаратуры, внешней относительно ведущего микроконтрол- лера и необходимой для аппаратной реализации операций управления. С учетом использования в микропроцессорной технике типовых моду- лей ввода/вывода и интерфейсных БИС можно сделать заключение, что задача проектирования структуры аппаратных средств системы управле- ния на микроконтроллерах представляет собой задачу анализа возможных (применяемых) решений и отбора вариантов на основе системы критериев. Критерии взаимодействия квазипараллельных процессов мы обсудили в первую очередь, поскольку этот механизм является основой процесса управления. Теперь рассмотрим топологический аспект структурных вари- антов - спецификацию сигналов управления. Определим набор сигналов и линий обмена нашего примера - СУ рентгенотелевизионного аппарата, в форме, не зависящей от варианта реализации. Рассмотрим также транс- формацию этого набора во входные и выходные сигналы микроконтролле- ра при традиционном магистрально-модульном подходе и преимуществен- но параллельном обмене с внешними схемами. Взаимодействие с оператором. Взаимодействие с оператором осуще- ствляется в основном через панель управления, отдельные команды (на- пример, включения РИ) подаются посредством выносных ручных включа- телей и педалей. Панель оператора представляется для системы управле- ния как клавиатура, набор индикаторов (например, светодиодов) и дис- плеев для отображения символьной информации. Светодиоды индицируют активность выбранного клавишей режима, а также подают сигналы преду-
36 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ преждения (наличие излучения, нагрев излучателя выше нормы и т.п.). На дисплеях отображается информация о режиме работы установки и его текущих параметрах. Количество клавиш, светодиодов, дисплеев нашего примера, а также линий для их обслуживания системой управления приведено в следующей таблице. Устройства и служебные сигналы Кол-во устройств Кол-во линий при обслуживании клавиа- туры как матрицы Кол-во линий при обслужи- вании панели отдельным контроллером Клавиши 32 12 Светодиоды 18 18 - Дисплеи 1 11 - Включатели и педали 4 3 3 Служебные сигналы 0-N 4 Общее кол-во линий >44 7 Общее количество устройств взаимодействия с оператором определя- ется формулой: Non= МКл + ^инд + Мдисп + Мв где Мкл, Минд> Мдцсп> Мв - количество клавиш, индикаторов, дисплеев и выносных устройств (включателей, педалей). Обычно клавиатуру орга- низуют как матрицу, число сигналов от устройств взаимодействия с опера- тором, обслуживаемых микропроцессорной системой при этом равно: Lon = LMkji + + 2ЬдИСП + LB где ЬМКл ~ сумма строк и столбцов в матрице клавиатуры, Ьц^д ~ коли- чество сигналов обслуживания индикаторов, ЯЬдцсп ~ общее количество сигналов для обслуживания дисплеев, NB - количество сигналов от вы- носных устройств. Во втором столбце таблицы приведено количество сиг- налов панели нашего примера при одном дисплее и организации клавиату- ры в виде матрицы 4x8. Даже при матричной организации клавиатуры число линий часто превышает возможности одного микроконтроллера по обслуживанию па- нели одновременно с другими объектами управления. Для сокращения числа линий и увеличения помехоустойчивости целесообразно организо- вать обмен между панелью управления и ведущим микроконтроллером по последовательному каналу. При этом панель управления должна иметь собственную плату ведомого микроконтроллера (рис. 1.6).
ГЛАВА 1 РАЗРАБОТКА СИСТЕМ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ 37 Рис. 1.6. Обслуживание панели управления ведомым микроконтроллером Для ведущего микроконтроллера число сигналов и линий взаимодей- ствия с оператором при последовательном обмене с платой ведомого мик- роконтроллера равно: L'on ~ Lcr + ^п-индивид + LB где LCT и ЬП-ннднвид ~ число соответственно стандартных линий канала и линий индивидуальных сигналов. При дуплексном канале =2) индивидуальными целесообразно сделать сигналы активности клавиатуры и инициализации процессора панели. Управление рентгеновским излучателем. Устройство питания РИ по- лучает от системы управления два аналоговых сигнала уставок напряже- ния и тока. Операция цифро-аналогового преобразования может быть 12- разрядной (DAC-12). Логических сигналов четыре: подачи высокого на- пряжения на РИ при просвечивании, идентификации режима съемки, включения цепи преднакала РИ, подачи высокого напряжения на РИ при съемке. Таким образом,, система управления должна обеспечить формиро- вание двух аналоговых сигналов управления Ьриа и четырех цифровых ^риц Общее число линий системы для управления РИ равно: ^ри ~ LPIIA + ^риц
38 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ При использовании двухканального 12-разрядного ЦАП с параллель- ной загрузкой (рис. 1.7) для микроконтроллера два аналоговых сигнала представляются 11 цифровыми сигналами и четырьмя служебными. Рис. 1.7. Формирование сигналов управления РИ Для микроконтроллера число линий обслуживания РИ равно Ь'ри ~ ^д + ^ри-адр + ^ри-сл + 1-риц где Ьд — разрядность шины данных, ^ри-адр и ^ри-сл ~ число соответственно необходимых линий адреса и необходимых служебных сигналов (записи/чтения, выборки микросхемы и т.п.). В целом ^'ря=19, но при мультиплексированной шине адрес/данные Ь’Рц =16. Управление диафрагмами. Привод диафрагмы представляет собой электромеханическую систему, включающую электродвигатель постоянно- го тока и потенциометр обратной связи. Таких приводов три: раскрыва ирисовой диафрагмы, раскрыва шторной диафрагмы, поворота шторной диафрагмы. Драйвер управления диафрагмами получает сигналы уставок для каждого привода, с потенциометров приводов получает сигналы об- ратной связи и формирует биполярные сигналы необходимой мощности для питания электродвигателей. В современных цифровых системах управления в качестве уставок используются коды, которые после цифро- аналогового преобразования образуют сигналы управления драйверами электродвигателей. При такой структуре система управления с помощью ЦАП (операция, например, DAC-8) должна сформировать три аналоговых сигнала для управления электромоторами диафрагм (рис. 1.8).
ГЛАВА 1 РАЗРАБОТКА СИСТЕМ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ 39 - ЬдЛ Микроконтроллер должен обеспечить загрузку кодов уставок в три ЦАП. Общее количество сигналов ведущего микроконтроллера для управ- ления диафрагмами при параллельной загрузке можно определить по формуле: Ь'дф = Ьд+ ЬдфАдр + Ьдф-СД где Ьд - разрядность шины данных, Ьдф АдР и ЬдФ сл ~ число соответственно необходимых линий адреса и служебных сигналов. При 8-разрядной шине данных, трех линиях адреса и двух сигналах чтения/записи Ьдф = 13. Рис. 1.8. Управление диафрагмами Взаимодействие с усилителем рентгеновского изображения (УРИ). Система управления должна формировать для УРИ цифровые сигналы переключения полей РЭОП и включения высокого напряжения при про- свечивании, а также принимать и обрабатывать аналоговый сигнал управ- ления мощностью дозы. Количество линий аналоговых и цифровых сигналов между УРИ и системой управления равно Ьури = ^уриа + LypHii Внешняя относительно микроконтроллера схема обработки входного аналогового сигнала управления мощностью дозы представляет собой пре- образователь напряжение-частота. Микроконтроллер получает с этой схе- мы три цифровых сигнала: запрос прерывания для вызова процедуры ре- гулирования (F_KC), логический сигнал «напряжение больше/меньше»
40 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ (UpDown), логический сигнал разрешения регулирования (F_Enable). Таким образом, для микроконтроллера функция взаимодействия с УРИ представляется пятью цифровыми сигналами L'ypn = L’ypim Взаимодействие с системой обработки изображений (СОИ). Систе- ма управления выдает на СОИ шесть командных логических сигналов, таких как вращение изображения вправо, вращение изображения влево и т.п. Кроме того, система управления и СОИ должны обеспечить взаимо- действие при включении и снятии рентгеновского излучения для правиль- ного формирования видеоизображения. Для этого необходимы пять логи- ческих сигналов: наличие режима просвечивания; запрос на подготовку СОИ; ответ СОИ; наличие режима импульсного просвечивания; наличие режима одноимпульсного просвечивания. Таким образом, число цифровых сигналов и линий связи между СУ (ведущим микроконтроллером ) и СОИ Lcoh ~ L'ycoH = 11- Контроль функционирования аппарата и обеспечение безопасности. Подсистемы контроля функционирования и безопасности сложных устано- вок и приборов строятся по иерархическому принципу. Нижний уровень составляют локальные схемы защиты мощных цепей. Средний уровень представляет собой схему анализа параметров важнейших сигналов и формирования флагов предупреждения. Верхний уровень в микрокон- троллерных системах реализуется системой прерываний, процедуры кото- рых выполняют аварийный сброс системы и собирают информацию о со- стоянии флагов предупреждений. Отображение этой информации входит в функцию взаимодействия с оператором. СУ рентгенотелевизионного аппарата должна обеспечить : 1. Контроль температуры излучателя РИ. 2. Индикацию на панели оператора наличия высокого напряжения на РИ (наличия рентгеновского излучения). 3. Формирование звукового сигнала при просвечивании более 5,0 мин. и 10,0 мин. 4. Снятие высокого напряжения с РИ при превышении временем съем- ки значения 4,0 сек. Кроме того, целесообразно дополнительно контролировать следующие параметры: значения напряжений низковольтных цепей питания; напря- жение и ток источника питания РИ; значение частоты основного системно- го синхросигнала; готовность диафрагм; значение логического сигнала «СОИ занята».
ГЛАВА 1. РАЗРАБОТКА СИСТЕМ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ 41 Аналоговые значения напряжений с терморезистора РИ, высоко- вольтного преобразователя РИ (после делителя), ряд напряжений низко- вольтного питания могут анализироваться внешними аналоговыми компа- раторами или внутренним блоком АЦП микроконтроллера. Сигнал от тай- мера просвечивания является внутренним для микроконтроллера. Схемы контроля частоты синхронизации и ограничения времени съемки должны быть внешними из соображений безопасности. Функционирование цепи накала РИ, готовность диафрагм, тока высоковольтного источника пита- ния контролируются локально в соответствующих цепях и на микрокон- троллер приходят логические сигналы аварийного состояния. Возникновение любого аварийного сигнала приводит к формированию сигнала неготовности, по которому ведущий микроконтроллер снимает вы- сокое напряжение с РИ и отображает код ошибки на панели управления. Для определения кода ошибки он должен прочитать состояние всех фла- гов ошибок. Количество линий сигналов контроля системы управления можно оп- ределить по формуле: Lk ~ Lka + ЬКц + ЬКспец где Lka - число аналоговых контролируемых сигналов, ЬКц - число цифровых сигналов предупреждения, LKcheu ~ количество специальных сигналов, контролируемых СУ (синхросигнал). Для микроконтроллера функция контроля и обеспечения безопасно- сти представляется сигналами L'k ~ L'ka + Ь'Кц где L'kA - число аналоговых сигналов (контролируемых микроконтролле- ром), Ь'кц — число цифровых сигналов предупреждения. При большом количестве внешних сигналов предупреждения их целе- сообразно фиксировать во внешних регистрах и читать флаги через шину данных (рис. 1.9). При этом число линий микропроцессора, необходимых для реализации функции безопасности, равно: L'k~ L'KA + кд+ Lк-адр + LK_Cj] + Ьк.ИНдИВИд где Lk-ддр, Lk.CJ] и Ьк_Индивид ~ число соответственно необходимых линий адреса, служебных сигналов и индивидуально обслуживаемых сигналов системы контроля. При 8-разрядной шине данных и двух линиях адреса, которые одновременно служат стробами чтения, трех индивидуальных сигналах общее количество линий микроконтроллера для обслуживания подсистемы контроля L'K = 13.
42 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Компараторы температуры Рис. 1.9. Внешняя схема контроля функционирования установки Итоговая таблица сигналов, которые должны быть обработаны систе- мой управления и ведущим микроконтроллером, имеет следующий вид:
ГЛАВА 1. РАЗРАБОТКА СИСТЕМ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ 43 Объекты управления Система управления Ведущий микроконтроллер Линии цифровых сигналов Линии аналоговых сигналов Линии цифровых сигналов Линии аналоговых сигналов Входы Выходы Входы Выходы Входы/Выходы Входы Панель управления 5(15*) 2(29*) 7 Излучатель РИ 4 2 16**(19) Блок диафрагм 3 0**‘ (13) УРИ 2 1 5 СОИ 1 10 11 Устройство контроля 9 4 3(13) Итого 15(25) 18(45) 5 5 42(68) ' При обслуживании клавиатуры ведущим микроконтроллером ’* С учетом мультиплексированного вывода данных и младшего байта адреса через один порт. " *С учетом того, что шины данных и адреса уже сформированы Данные таблицы о номенклатуре аналоговых и цифровых сигналов системы управления определяются типом объектов управления и протоко- лами обмена с ними. Эти данные являются исходными при разработке системы управления. Набор сигналов ведущего микроконтроллера опреде- ляется вариантом структуры системы управления. В данном случае специ- фицирован вариант с преимущественно параллельным обменом через ма- гистраль, аналоговые входы микроконтроллера не используются. В таблице учтено, что при обмене с устройством управления диафраг- мами и устройством контроля по 8-разрядным мультиплексированным ши- нам данных и адреса общее количество цифровых сигналов сокращается с 68 до 42. На основе проведенного анализа функций, квазипараллельных про- цессов и сигналов управления объектами можно произвести выбор типа ведущего микроконтроллера и варианта структуры системы управления. Выбор ведущего микроконтроллера и структурного варианта сис- темы управления. Выбор типа микроконтроллера и структуры СУ являет- ся итерационным процессом. В целом сущность отбора можно сформули- ровать как распределение и перераспределение между ведущим микрокон- троллером и схемами его обрамления программных операторов и аппарат- ных операций, в совокупности реализующих необходимые функции управления. Основной целью является минимизация схем обрамления и выводов корпуса микроконтроллера, реализация функций управления
44 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ преимущественно программным образом или аппаратно-программным об- разом с использованием внутренних модулей микроконтроллера. Последовательность отбора вариантов может быть следующей. • В качестве исходного проверяется вариант структуры СУ, состоящий только из микроконтроллера, возможно с обрамлением в виде драйве- ров, не выполняющих операций преобразования данных. Выбирается микроконтроллер, у которого количество выводов портов и служебных линий обслуживания обмена минимально превышает количество линий системы управления. Этот микроконтроллер должен быть обеспечен инструментальными средствами (система программирования, схемный эмулятор). Для этого варианта выполняется планирование и расчет времени квазипараллельных процессов на основе критериев, приведен- ных в предыдущем параграфе. • Если не найден микроконтроллер, способный обеспечить непосредст- венное формирование нужного числа сигналов системы управления, или внутренние модули ввода-вывода не могут обеспечить нужного на- бора операций, или квазипараллельные процессы с привлечением внутренних модулей не обеспечивают нужного значения параметра ре- ального времени т, то нужно использовать внешние схемы обрамления. При сложной панели управления в первую очередь целесообразно рас- смотреть вариант, в котором панель обслуживается ведомым микро- контроллером и связь с ведущим микроконтроллером осуществляется через последовательный канал. • При использовании внешних схем обрамления важнейшим моментом является определение типа обмена их с микроконтроллером: парал- лельный или последовательный. Критерием является время выполне- ния функций управления при выполнении операций преобразования данных внешними схемами. Часто это время определяется скоростью операций аналого-цифрового и цифро-аналогового преобразований. В системах на микроконтроллерах в настоящее время характерной скоро- стью таких операций является значение 1,5 - 2,0 Мбит/сек. Эту ско- рость может обеспечить последовательный интерфейс SPI при тактовой частоте микроконтроллера 6-8 МГц. Если скорость выше и выбран параллельный обмен, то большинство внешних схем должно поддер- живать этот протокол, поскольку уже существующая магистраль по- зволяет сократить количество линий обмена (см. предыдущую табли- цу). Использование последовательных интерфейсов существенно со- кращает объем аппаратуры и позволяет вынести внешние схемы к объ- ектам управления. • При использовании внешних схем обрамления могут высвободиться выводы портов микроконтроллера. При наличии у микроконтролера внутреннего модуля АЦП, входы которого мультиплексированы с ли-
ГЛАВА 1. РАЗРАБОТКА СИСТЕМ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ 45 ниями цифровых портов, следует освободить именно эти выводы и ис- пользовать их для выполнения функций контроля или регулирования. При выборе варианта следует обратиться к циклограммам квазипарал- лельных процессов, откуда видно, что оператор контроля занимает фиксированное время в каждом системном интервале, а оператор регу- лирования распределен по нескольким интервалам и не предъявляет жестких требований к величине интервала системного времени. • При освобождении линий цифровых портов после добавления к струк- туре системы внешней схемы в качестве очередного варианта следует по циклограммам квазипараллельных процессов провести расчет воз- можности программной реализации всех остальных цифровых сигна- лов (расширение набора сигналов процесса формирования цикло- грамм). • В завершение отбора вариантов при наличии свободных выводов сле- дует проверить возможность применения микроконтроллера выбранной архитектуры с меньшим количеством выводов корпуса. Исходя из предыдущей таблицы и с учетом приведенных критериев в качестве ведущего микроконтроллера рассматриваемого примера может быть выбран микроконтроллер типа MCS-51, у которого пользователю предоставлены 6 портов, например Siemens SAB 80С537 или Philips 87С552. 1.5. Особенности систем управления на микроконтроллерах и ПЛИС Комбинированное применение микроконтроллеров и ПЛИС в системах управления может быть осуществлено в следующих формах. • Описание функций микроконтроллера известной архитектуры (или его части) на языке HDL, описание функций внешних специализирован- ных модулей, компоновка иерархического проекта и загрузка файла, описывающего всю систему управления, в одну СБИС программируе- мой логики. Основными проблемами такого подхода являются: вери- фикация проекта, тестопригодность системы, необходимость использо- вания дорогостоящего оборудования и печатных плат с очень высокими технологическими нормами. • Использование СБИС, объединяющей на кристалле микроконтроллер- ное ядро и матрицу программируемой логики. Это могут быть упомя- нутые выше изделия фирм Triscend и Atmel. Такой подход позволяет выполнить предварительное макетирование частей системы, но вопросы верификации всего проекта и отладки системы управления совместно с объектами остаются сложными.
46 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ • Совместное использование БИС микроконтроллеров и ПЛИС, связан- ных преимущественно через последовательные интерфейсы. Один из микроконтроллеров может выполнять функции ведущего и по коман- дам оператора осуществлять общее управление (переключать режимы, управлять памятью данных и т.п.). ПЛИС способна быстро выполнить операции преобразования данных, формально описанные на одном из языков HDL, причем в одну микросхему могут быть упакованы опера- ции различных функций управления. Преимуществом этого подхода являются: доступность линий связи между компонентами и тестопри- годность всей системы управления, невысокая стоимость разработки и производства системы. В качестве примера рассмотрим вариант системы управления рентгеноте- левизионного аппарата, в котором ведущий микроконтроллер и ПЛИС связаны по интерфейсу SPI, функционируют параллельно и выполняют общие распределенные функции управления. В данном примере ПЛИС выполняет роль расширителя портов и су- щественно сокращает число линий ввода-вывода микроконтроллера, а также осуществляет контроль частоты синхронизации системы управления и формирует общий сигнал неготовности. Схема связи микроконтроллера с ПЛИС через интерфейс SPI приведена на рис. 1.10. Микроконтроллер с портом SPI LDOUT LDIN SCLOCK MOSI MISO SPI-устройство, реализованное на ПЛИС ЕХР LDOUT LDIN <—MUSVNC <—GCK1 <- 600Hz -►COPY -► GRFON -►IMRL -►IMRR -►IMREV -►SUB -►FLUO -> FLIMP MOSI 0 15 * MISO 0 15 Рис. 1.10. Связь микроконтроллера и ПЛИС через интерфейс SPI В данном случае SPI-устройство, реализованное на ПЛИС, имеет два 16-разрядных сдвиговых регистра. Один из них работает только на вывод данных из микроконтроллера, другой - только на ввод. Устройство, реализованное на ПЛИС, содержит схемы обрамления, которые реализуют следующие операции:
ГЛАВА 1. РАЗРАБОТКА СИСТЕМ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ 47 • формирование сдвигового регистра вывода данных из микроконтрол- лера в ПЛИС; • формирование сигнала копирования кадра COPY; • формирование сигнала съемки GRFON; • формирование сигнала аварии по времени съемки TIMAL; • формирование сигналов: IMRL (вращение изображения влево), IMRR (вращение изображения вправо), IMREV (инверсия изображения), SUB (вычитание кадров), FLUO (управление СОИ), FLIMP (режим импульсного просвечивания); • формирование сигнала аварии синхронизации CLAL; • формирование сдвигового регистра ввода данных в микроконтроллер из ПЛИС. Здесь мы рассмотрим только регистр вывода и связанные с ним схемы. Регистр ввода формируется аналогично и в данной системе управления позволяет передать микроконтроллеру флаги ошибок. Формирование сдвигового регистра вывода данных из микрокон- троллера в ПЛИС. Регистр имеет следующий формат 15 14 13 12 11 10 9 8 | IMRL | IMRR | IMREV | COPY I o | SUB | FLUO | FLIM | 7 6 5 4 3 2 1 0 I о I CERR | VIDERR | TPAL I SAL I o I 0 | 0 I Биты регистра вывода: • IMRL - для выработки внешнего сигнала вращения изображения вле- во; • IMRR — для выработки внешнего сигнала вращения изображения вправо; • IMREV - для выработки внешнего сигнала инверсии изображения; • COPY ~ для выработки внешнего сигнала копирования кадра; • SUB - для выработки внешнего сигнала вычитания кадров; • FLU О - для выработки внешнего сигнала управления СОИ; • FLIM - для выработки внешнего сигнала импульсного просвечивания; • CERR — сигнал ошибки: нет ответного сигнала СОИ; • VIDERR - сигнал ошибки: нет стабилизации при автоматическом про- свечивании; • TPAL — сигнал ошибки: недопустимая температура блока РИ; • SAL - сигнал ошибки: источник питания не готов. Формирование сигнала COPY. Этот сигнал формируется (активный уровень - логический ноль), если нажата соответствуюшая клавиша на
48 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ панели оператора. Сигнал импульсный, его длительность равна 0,5 сек. В ПЛИС приходит 16-разрядное слово от микроконтроллера, в котором на- ходится флаг этого сигнала (если нажата клавиша - логический ноль). Формирование сигнала GRFON. Этот сигнал команды на включение высокого напряжения в режиме съемки становится активным (уровень ло- гической единицы), если сигнал на входе ЕХР имеет активный высокий уровень. Формирование сигнала TIMAL. Этот сигнал ошибки по превышению времени съемки формируется, если длительность сигнала GRFON превы- шает 5 сек. Активный уровень сигнала ошибки TIMAL - логическая еди- ница. Формирование сигналов IMRL, IMRR, IMREV, SUB, FLUO, FLIMP. Эти сигналы формируются на соответствующих выводах ПЛИС исходя из значений битов регистра вывода, сформированных микрокон- троллером. Активным значением сигналов IMRL, IMRR, IMREV, SUB является логический ноль, а сигналов FLUO и FLIMP логическая едини- ца. Активным значением всех битов регистра вывода является логический ноль. Формирование сигнала CLAL. Это сигнал ошибки с активным уров- нем логической единицы. Он формируется, если на вход ПЛИС «600Hz» подается частота меньше 500 Гц или больше 700 Гц. Используется вспомо- гательный сигнал GCK1 = 32,768 кГц. Если рассматриваемое SPI-устройство реализуется на ПЛИС фирмы Altera, то текстовый файл его описания на языке AHDL может иметь сле- дующий вид: SUBDESIGN masha ( —-входы—- ЕХР_Н :INPUT; MNSYNC :INPUT; GCK1 INPUT; 600HZ :INPUT; MOS .INPUT; CLK : IN PUT; nLDIN :INPUT; nLDOUT :INPUT; выходы nIMRL : OUTPUT; nIMRR : OUTPUT; nIMREV : OUTPUT; nFLUO : OUTPUT; nCOPY : OUTPUT; nSUB : OUTPUT; FLIM : OUTPUT; - - сигнал команды на включение таймера и сигнала GRFON при съемке - - синхронизирующий сигнал 50Гц - тактовые импульсы 32,768кГц - системная частота синхронизации 600Гц - линия ввода данных в ПЛИС - синхросигнал обмена - строб ввода из ПЛИС в микроконтроллер - - строб вывода в ПЛИС из микроконтроллера - - сигнал вращения изображения влево - - сигнал вращения изображения вправо - - сигнал инверсии изображения - - сигнал режима просвечивания - - сигнал для СОИ - - сигнал для СОИ - - сигнал импульсного просвечивания
ГЛАВА 1. РАЗРАБОТКА СИСТЕМ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ 49 GRFON ) :OUTPUT; -- сигнал команды на включение высокого напряжения при съемке VARIABLE — триггеры TR_grfon :DFFE; триггер для формирования сигнала RADON TR_sub :DFFE; -- триггер для формирования сигнала SUB TRJmrr :DFFE; -- триггер для формирования сигнала IMRR TRJmrl :DFFE; — триггер для формирования сигнала IMRL TRJmrev :DFFE; — триггер для формирования сигнала IDSRH0 TR_flim :DFFE; — триггер для формирования сигнала IDFUT TR_fluo :DFFE; — триггер для формирования сигнала COFL TR_clal :DFFE; -- триггер для формирования сигнала CLAL TR_copy :DFFE; -- триггер для формирования сигнала СОРУ TR_600hz ;DFFE; -- триггер для формирования сигнала CLAL EnaB :DFFE; -- триггер, работающий no ILDOUT Count_sec[6..0] : DFFE; -- триггеры 0.5 и 2 секунд для сигнала СОРУ Count_5sec[7.. 0] :DFFE ; - счетчик для форирования сигнала ошибки TIMAL Count_600hz[5. .0] :DFFE ; - счетчик для формирования сигнала ошибки CLAL-H Reg_out[15..0] :DFFE; - регистр вывода данных в ПЛИС из микроконтроллера -- временные переменные, сигналы ошибок TIMAL :NODE; CLAL :NODE; CLALtemp :NODE; COPYtemp :NODE; COPY_L :NODE; FLUO_L :NODE; IMREV_L :NODE; IMRR_L :NODE; IMRL.L :NODE; FLIM_H :NODE; SUB_L :NODE; CERR :NODE; VIDERR :NODE; TPAL :NODE; nSAL :NODE; - сигнал ошибки: авария по аремени съемки - сигнал ошибки: авария синхронизации - временная переменная CLAL - временная переменная СОРУ - временная переменная СОРУ - временная переменная COFL - временная переменная IDSRH0 - - временная переменная IMRR - - временная переменная IMRL - временная переменная IDFUT - временная переменная SUB - временная переменная CERR - временная переменная VIDERR - временная переменная TPAL - временная переменная SAL BEGIN DEFAULTS SUB_L=VCC; FUM_H=GND; COPY_L=VCC; CLUO_L=VCC; IMREV_L=VCC; IMRR_L=VCC; IMRL_L=VCC; CLAL=GND; - начало программы - значения, присвоенные по умолчанию - временная переменная SUB - временная переменная IDFLIT - временная переменная СОРУ - временная переменная COFL - временная переменная IDSRH0 - временная переменная IMRR - временная переменная IMRL - сигнал ошибки: авария синхронизации END DEFAULTS; - формирование сигналов GRFON, SUB, FLIM, FLUO, IMREV, IMRR, IMRL- TR_grfon.D=EXP_H; -- вход триггера, есть сигнал RADON TR_grfon.clk=GCK1; - вход тактовых импульсов, 32,768 кГц GRFON=TR_grfon.Q; -- сигнал RADON - активный уровень TR_sub.D=SUB_L; - вход триггера, временная переменная SUB
50 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И .БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ TR_sub.clk=GCK1; nSUB=TR_SUb.Q; - вход тактовых импульсов, 32,768 кГц - сигнал вычитания кадров TR_fiim.D=FLIM_H; TR_flim.clk=GCK1; FLIM=TR_flim; - вход триггера, временная переменная IDFLIT - вход тактовых импульсов, 32,768 кГц - сигнал импульсного просвечивания TR fluo.D=FLUO_L; TR_fluo.c1k=GCK1; nFLUO=TR fluo; - вход триггера, временная переменная FLUO - вход тактовых импульсов, 32,768 кГц ~ сигнал управление, видеопроцессором TRJmrev.D=IMREV_L;--Bxofl триггера, временная переменная IMREV TR_imrev.clk=GCK1; nlMREV=TRJmrev; - вход тактовых импульсов, 32,768 кГц - сигнал инверсии изображения TRJmrr.D=IMRR_L; TR_imrr.clk=GCK1; nlMRR=TR_lmrr; - вход триггера, временная переменная IMRR - вход тактовых импульсов, 32,768 кГц - сигнал вращения изображения вправо TR hnrt.D=IMRL_L; -- вход триггера, временная переменная IMRL TR imri.clk=GCK1; nlMRL=TRJmrt; -- вход тактовых импульсов, 32,768 кГц - сигнал вращения изображения влево ....- формирование сигнала COPYtemp длительностью 0.5 секунды; активный низкий уро вень IF (COPY_L==GND)&(Coiint_sec[].Q<25) THEN -- длительность им- пульса COPY < 0.5 секунды Count_sec[].ena=VCC; -- сигнал разрешения COPYtemp=GND - временная переменная COPY, активный уровень ELSIF (COPY_L==GND)&(Count_sec[] .Q>25) THEN - длительность пульса COPY > 0.5 секунды COPYtemp=VCC; - временная переменная COPY; начальный уровень Count_sec[] .ena=GND; - сигнал, запрещающий работу ELSE - если сигнал COPY=VCC COPYtemp=VCC; END IF; -- временная переменная COPY,начальный уровень ..- счетчик для сигнала COPY-- Count_sec[].clm=nLDOUT; - сигнал, обнуляющий счетчик Count_Sec[).dk=MNSYNC; - вход тактовых импульсов Count_sec[].d=(Count_sec[].Q+1)&nLDOUT; - счетчик,который на- чинает работать при ILDOUT --------формирование сигнала COPY.....— TR_copy.d=COPYtemp; - вход триггера TR_copy.clk=GCK1; - вход тактовых импульсов nCOPY=TR_copy.Q; - выход триггера, сигнал COPY ----формирование сигнала ошибки TIMAL, 5сек. продолжительность сигнала GRFON,— IF (Count_5sec[].Q<250)&(EXP_H==VCC) THEN - длительность сигнала GRFON< 5 сек Count_5sec[].clk= MNSYNC; -- вход тактовых импульсов Count_5sec[].d=Count_5sec[].Q+1; - счетчик тактовых импульсов TIMAL= GND; - нет сигнала ошибки ELSIF (EXP_H==GND) THEN - нет сигнала GRFON TIMAL= GND; нет сигнала ошибки
ГЛАВА 1. РАЗРАБОТКА СИСТЕМ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ 51 ELSE TIMAL= VCC; END IF; -- длительность сигнала GRFON > 5 секунд -- есть сигнал ошибки формирование сигнала ошибки CLAL, на вход 600HZ подается <500 Гц или >700 Гц - - вход триггера, 600 Гц - вход тактовых импульсов - - 1/2 периода импульса 600 Гц - вход тактовых импульсов - - счетчик такт, импульсов - - очистка счетчика TR 600hz.d=600HZ; TR_600hz.clk= GCK1; IF (TR_600hz.Q==1) THEN Count_600hz[].clk = GCK1; Count_600hz[] .d=Count_600hz[].Q+1; Count_600hz[] .clm=TR_600hz; END IF; IF (Count_600hz[]>=33)#(Count_600hz[J<23) THEN - если число импульсов >=33 или <23 CLALtemp=VCC; - есть ошибка ELSE - если число импульсов <33 или >=23 CLALtemp=GND; -- нет ошибки END IF; TR clal.d=CLALtemp; TR_clal.clc=!600HZ; CLAL=TR_clal.Q; -- сигнал ошибки CLAL ...ввод д анных в ПЛИС из микроконтроллера........ Reg_out[] .de = CLK; - - вход тактовых импульсов Reg_out[].ena = InLDOUT; - сигнал разрешения Reg_out[].d = (Reg_out[14..0].Q,MOSI); -- сдвиговый регистр - вспомогательный триггер ...выработка внешних сигналов EnaB.clk= nLDOUT; EnaB.d= VCC; EnaB.clm=nLDOUT; IF EnaB.Q==VCC THEN-- если выход Tpnrrepa=VCC, т.е. сдвиговый регистр не работает IMRL_L=RegJn[15]; - временная переменная nIMRL IMRR_L=RegJn[14]; - временная переменная nIMRR IMREV_L=Reg_in[13]; - временная переменная nIMRV COPY_L=Reg_in[12]; - временная переменная nCOPY SUB_L=Reg_in[10]; - временная переменная nSUB FLU0_L=Reg_in[9J; -- временная переменная nFLUO FLIM_H=Reg_in[8]; - временная переменная FLIM CERR=Reg_in[6]; - сигнал ошибки: нет ответа CMXRSC ‘VIDERR=Reg_in[5]; - сигнал ошибки: нет Стабилизации при автомат, просвечивании TPAL=Reg_in[4]; - сигнал ошибки: недопустимая температура блока РИ nSUL=Reg_in[3]; - сигнал ошибки SUL-L: источник питания не готов END IF; END; -- конец программы Синтаксические конструкции языка AHDL описаны в главе 5. Там же приведены примеры реализации программируемого счетчика/таймера и регистрового АЛУ RISC микроконтроллера, тексты которых, кроме ком- ментариев, снабжены дополнительными комментариями.
ГЛАВА 2 АРХИТЕКТУРА MCS-51 2.1. Особенности архитектуры MCS-51 Архитектура MCS-51 фирмы Intel была в свое время определена на- столько удачно, что является сегодня, по существу, одним из стандартов «де-факто» на мировом рынке 8-разрядных микроконтроллеров. Эту архи- тектуру воспроизводит в том или ином виде в своих изделиях ряд фирм. По совокупному объему производства этих фирм микроконтроллеры MCS-51 занимают первое место. Понятие «архитектура» микроконтроллеров далее трактуется как со- вокупность внутренних и внешних программно доступных ресурсов, сис- темы команд, системы прерываний, функций ввода/вывода и протоколов обмена по магистрали. Архитектура воплощается производителем в виде набора связанных функционально-топологических модулей. Конкретный микроконтроллер представляет собой определенную комбинацию этих мо- дулей, основой которой является операционное ядро («соте» у фирмы Intel). Исходная архитектура MCS-51 характеризуется следующими особен- ностями: • архитектура «гарвардская», т.е. память программ и данных разделе- ны; • операционное ядро имеет «аккумуляторную» организацию, т.е. ре- зультат операции, как правило, помещается в регистр-аккумулятор; • 8-разрядное АЛУ с аппаратным умножителем обрабатывает целочис- ленные операнды;
ГЛАВА 2. АРХИТЕКТУРА MCS-51 53 • имеются внутренние память программ (4Кбайт) и ОЗУ данных (128 байт); • имеются четыре универсальных программируемых параллельных 8- разрядных порта ввода/вывода с возможностью реализации опреде- ленных альтернативных функций; • набор блоков ввода/вывода включает два 16-разрядных программи- руемых счетчика/таймера и дуплексный последовательный порт; • все регистры управления блоков ввода/вывода сведены в группу ре- гистров спецфункций, которая имеет свой диапазон адресов в пространстве внутренней памяти данных. Первая линия (product line) микроконтроллеров с исходной архитек- турой MCS-51 была разработана на основе nMOS технологии (HMOS). Эта линия включала микросхемы 8051АН/8751ВН/8031АН с постоянной памятью программ, с перезаписываемой памятью программ (стираемой ультрафиолетом) и без внутренней памяти программ. Отечественной про- мышленностью до сих пор выпускается аналог микросхемы 8031АН - микроконтроллер К1816ВЕ31. Мощность, потребляемая микроконтролле- рами этой группы, довольно велика. Современные версии микроконтроллеров с исходной архитектурой MCS-51 выполнены с использованием комплементарной МОП технологии (CHMOS). Они имеют маркировку 80С51/31 и выпускаются несколькими фирмами, поскольку дешевы и позволяют решать многие задачи. Техноло- гия CHMOS позволила уменьшить рассеиваемую мощность при обычной работе и ввести особые режимы, дополнительные снижающие энергопо- требление. Отечественным аналогом микросхемы 80С31 является микро- контроллер К1830ВЕ31. В последние годы бурно развивается технология перезаписываемой flash-памяти программ, которая в значительной степени вытеснила память, стираемую ультрафиолетом. Это объясняется дороговизной металлокера- мического корпуса с кварцевым стеклом, необходимого для УФ- микросхем. Микроконтроллеры с исходной архитектурой MCS-51 и flash- памятью выпускаются фирмами Atmel, Philips и другими под маркировкой 89С51. Микроконтроллеры с УФ-памятью остались, в основном, в виде однократно программируемых (ОТР) версий в пластмассовом корпусе без окна. Они имеют маркировку 87С51ОТР. Усовершенствование технологии, рост степени интеграции позволил в рамках архитектуры MCS-51 расширить набор внутренних интерфейсных блоков, увеличить внутреннюю память программ и данных. Таким образом появились микроконтроллеры типа 80С52/54/58 и микроконтроллеры типа 80L52/54/58 с пониженным напряжением питания. Модернизиро- ванная архитектура MCS-51 характеризуется увеличенным до 256 байт внутренним ОЗУ данных, внутренней памятью программ 8/16/32 Кбайт,
54 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ логики наличием сторожевого таймера (watchdog timer). Расширение набора внутренних блоков привело к увеличению числа регистров спецфункций, несколько изменилась система прерываний. Наиболее широко используе- мыми микроконтроллерами с модернизированной MCS-51 архитектурой можно, в настоящее время, считать микросхемы типа 87С52/89С52/80С32, которые выпускаются большинством производите- лей, поддерживающих архитектуру MCS-51. Такие фирмы, как Intel, Philips, Siemens, Dallas Semiconductor, At- mel, Winbond и ряд других, производят семейства микроконтроллеров с архитектурой MCS-51. В целях повышения производительности некоторые из них используют такие отличия, как расширенная система команд, сжа- тый цикл обмена по магистрали, увеличенное количество портов вво- да/вывода. В таблице указаны характеристики некоторых представителей се- мейств микроконтроллеров с архитектурой MCS-51. 2.2. Структура микроконтроллеров MCS-51 На рис. 2.1 приведена внутренняя структура микроконтроллера Intel 8051, соответствующая исходной архитектуре MCS-51. Она включает следующий набор функциональных модулей: • 8-разрядное АЛУ с аппаратной реализацией операций типа умноже- ние; • внутренние память программ (4Кбайт) и ОЗУ данных (128 байт); • четыре универсальных параллельных 8-раЗрядных порта вво- да/ вывода с возможностью реализации определенных альтернативных функций; • два 16-разрядных программируемых счетчика/таймера; • дуплексный последовательный порт. Этот набор аппаратных средств и совокупность реализуемых функций делают микроконтроллеры семейства 8051 эффективным средством сбора, предобработки информации и управления объектами. Внешний вид микросхем MCS-51 в 40-выводном корпусе и функции выводов представлены на рис. 2.2. Функции выводов микроконтроллеров MCS-51 следующие. Port 0. Двунаправленный программируемый 8-разрядный параллель- ный порт ввода/вывода с возможностью установки в высокоимпедансное состояние. При работе в качестве выходов каждая линия обеспечивает на- грузочную способность, равную 8 входам маломощной серии LS TTL.
ГЛАВА 2. АРХИТЕКТУРА MCS-51 55 Микроконтроллеры с архитектурой MCS-51 Микро- контроллер (п роизводитель) Память программ RAM Таймеры АЦП/ ЦАП Fosc (МГц) Особенности 8031АН Intel (снят с произ- водства) 128 2 - 12 Исходная архитектура, нМОП К1816ВЕ31 Россия - 128 2 - 12 нМОП 80С31 Intel - 128 2 - 12 КМОП К183ОВЕ31 Россия - 128 2 12 КМОП 87С51 Intel AT87F51 Atmel АТ89С51 Atmel 4K EPROM OTP 4K Flash 128 2 12,16, 24,33 3 бита защиты Flash с пере- записью 80С32 Intel - 256 3 • 12,16, 24,33 КМОП 87C52 Intel 8K EPROM OTP 256 3 • 12,16, 24,33 КМОП AT89C52 Atmel 8K Rash 256 3 - 12,16, 24,33 КМОП 80C52 Intel 8K ROM 256 3 - 12,16, 20,24 КМОП 87C54 Intel 16K EPROM OTP 256 3 - 12,16, 20,24 КМОП 80C54 Intel 16K ROM 256 3 - 12,16, 24,33 КМОП 87C58 Intel 32K EPROM OTP 256 3 - 12,16, 24,33 КМОП 80C58 Intel 32K ROM 256 3 - 12,16, 24,33 КМОП 87L52/54/58 Intel 8/16/32K OTP 256 3 - 12,16, 20 Низковольтная серия (Vcc=3B), 8OL52/54/58 Intel 8/16/32K ROM 256 3 • 12,16,20 КМОП AduC812 Analog Devices 8K Rash 256 3 1/2 16 12-разрядные ЦАП и 2 АЦП, Vcc=(3,0-5,0)B
56 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Рис. 2.1. Структура микроконтроллеров MCS-51
ГЛАВА 2. АРХИТЕКТУРА MCS-51 57 При обращении микроконтроллера к внешней памяти программ или данных порт работает в режиме мультиплексирования младшего байта ад- реса и 8-разрядной шины данных. При записи в разряд регистра порта РО логической «1» соответствую- щая линия порта переходит в режим высокоимпедансного входа. Для ра- боты в режиме порта ввода/вывода необходимо внешнее подтягивание каждой линии порта к уровню логической «1». Port 1. Двунаправленный 8-разрядный параллельный порт вво- да/вывода. При работе в качестве выходов каждая линия обеспечивает нагрузочную способность, равную 4 входам маломощной серии LS TTL. При записи в разряд регистра порта Р1 логической «1» соответствующая линия порта переходит в режим высокоимпедансного входа со слабым подтягиванием сигнала к уровню логической «1». Альтернативная функция Р1.0 Р1.1 п PI.2 О р Р1.3 т 1 Р1Л PI.5 PI .6 PI .7 RST RxD P3.0 TxD P3.1 п INTO# P3.2 О р INTI# P3.3 т 3 ТО РЗЛ Т1 P3.5 WR# рз.е RD# P3.7 XTAL2 XTAL1 Ves Усс Альтернативная функция PO.O ADO P0.1 ADI P0.2 AD2 n P0.3 AD3 0 p РОЛ AD4 T 0 P0.5 AD5 P0.6 ADO P0.7 AD7 EA# ALE PSEN# P2.7 A15 P2.6 A14 P2.5 A13 Р2Л A12 П 0 P2.3 All p T P2.2 A10 2 P2.1 A9 P2.0 A9 Рис. 2.2. Микроконтроллер MCS-51 в 40-выводном корпусе и функции выводов
58 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Port 2. Двунаправленный 8-разрядный параллельный порт вво- да/вывода. При работе в качестве выходов каждая линия обеспечивает нагрузочную способность, равную 4 входам маломощной серии LSTTL. При записи в разряд регистра порта Р2 логической «1» соответствующая линия порта переходит в режим высокоимпедансного входа со слабым подтягиванием сигнала к уровню логической «!►. При обращении микроконтроллера к внешней памяти программ или дан- ных с использованием 16-разрядного адреса (команды MOVX @DPTR) через порт Р2 выдается старший байт адреса. При обращении микрокон- троллера к внешней памяти данных с использованием 8-разрядного адреса (команды MOVX @Ri) на выводы порта Р2 выдается содержимое регист- ра специальных функций Р2. Port 3. Двунаправленный 8-разрядный параллельный порт вво- да/вывода. При работе в качестве выходов каждая линия обеспечивает нагрузочную способность, равную 4 входам маломощной серии LS TTL. При записи в разряд регистра порта РЗ логической «1» соответствующая линия порта переходит в режим высокоимнедансного входа со слабым подтягиванием сигнала к уровню логической «1>. Выводы порта РЗ могут выполнять альтернативные функции в соот- ветствии со следующей таблицей. Вывод Альтернативная функция РЗ.О. RxD - вход приемника последовательного порта Р3.1. TxD - выход передатчика последовательного порта Р3.2. INTO - вход внешнего прерывания 0 РЗ.З. INT1 - вход внешнего прерывания 1 Р3.4. ТО - внешний вход таймера/счетчика 0 Р3.5. Т1 - внешний вход таймера/счетчика 1 Р3.6. WR# - сигнал разрешения записи во внешнюю память данных Р3.7. RD# - сигнал разрешения чтения из внешней памяти данных RST. Вход инициализации. Высокий уровень на этом входе в течении двух машинных тактов запускает процесс инициализации микроконтрол- лера. ALE. Активное значение сигнала на этом выходе разрешает фиксацию младшего байта адреса при обращениях к внешней памяти. У микроконтроллеров типа 8751 с внутренней памятью программ это вывод имеет альтернативную функцию PROG#. При программировании внутренней памяти на него подается стробирующий сигнал. PSEN#. Активное значение сигнала на этом выходе разрешает чтение из внешней памяти программ. ЕА#. Сигнал на этом входе переключает источник кода при обраще- нии к младшим 4 Кбайтам памяти программ. При ЕА = 0 и диапазоне ад- ресов 0000Н - FFFFH микроконтроллер 8051 выполняет цикл обращения
ГЛАВА 2. АРХИТЕКТУРА MCS-51 59 к внешней памяти программ, при ЕА = 1 обращение по одному из этих адресов приводит к чтению кода из внутренней памяти. XTAL1. Вход инвертирующего усилителя для синхрогенератора. XTAL2. Выход инвертирующего усилителя для синхрогенератора. Vcc. Напряжение питания (+5 В). Vss. Земля. 2.3. Организация памяти и программно доступные ресурсы В архитектуре MCS-51 память программ и память данных разделены (гарвардская архитектура). Каждая из них имеет размер 64 Кбайта, выбор одной из двух матриц памяти осуществляется сигналами PSEN, RD#, WR#. Организация памяти в микроконтроллерах семейства 8051 иллюст- рируется рис. 2.3. Память программ может быть целиком внешней (сигнал ЕА = 0), либо при обращении по младшим 4 К адресов код извлекается из ячеек внут- ренней памяти микроконтроллера, а содержимое старших 60 К берется из внешней памяти системы (сигнал ЕА =1). Регистры специальных функций (SFR) Младшие 128 ячеек ОЗУ (прямая адре- сация) FFFF: 0000: Внешняя память данных Внутренняя память данных Рис. 2.3. Организация памяти в архитектуре MCS-51
60 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Микроконтроллеры 87С51 имеют 3 бита секретности, предназначен- ных для защиты внутренней памяти программ от доступа извне. При уста- новленных битах секретности запрещается не только чтение внутренней памяти извне, но и ее допрограммирование. Механизмы программирова- ния и верификации внутренней памяти программ в данной книге рассмат- риваться не будут, поскольку в продаже имеются программаторы различ- ных типов и стоимости. Возможности универсального профессионального программатора KROM описаны в главе 6. Память данных делится на внешнюю и внутреннюю, каждая из них имеет свое пространство адресов. В архитектуре MCS-51 пространство ад- ресов внутренней памяти данных объединяет все внутренние программно доступные ресурсы. Это пространство размером 256 байт в свою очередь делится на пространство адресов внутреннего ОЗУ (размером 128 байт) и пространство адресов регистров специальных функций. Область внутреннего ОЗУ изображена на рис. 2.4, ячейки области за- нимают младшие адреса внутренней памяти данных с ООН по 7FH. Шестнадцатеричный Десятичный адрес адрес 7F: | 127 2F: 7F 7E 7D 7C 7B 7А 79 78 47 2Е: 77 76 75 74 73 72 71 70 46 2D: 6F 6E 6D 6C 6B 6А 69 68 45 2С: 67 66 65 64 63 62 61 60 44 2В: 5F 5E 5D 5C 5В 5А 59 58 43 2А: 57 56 55 54 53 52 51 50 42 29: 4F 4Ё 40 4G 4В 4А 49 46 41 28: 47 46 45 44 43 42 41 40 40 27: 3F 3E 3D 3C ЗВ ЗА 39 38 39 26: 37 36 35 34 33 32 31 36 38 25: 2F 2E 2D 2C 2В 2А 29 28 37 24: 27 26 25 24 23 22 21 20 36 23: IF IE ID 1C 1В 1А 19 18 35 22: 17 16 15 14 13 12 11 10 34 21: OF 0E 0D ОС 0В 0А 09 06 33 20: 07 06 05 04 03 02 01 00 32 1F: 1В: R7 R0 БАНКЗ 31 24 17: 10: R7 R0 БАНК2 23 16 0F: 08: R7 1 : R0 БАНК1 15 8 07: 00: R7 R0 БАНКО 7 0 Рис. 2.4. Структура внутреннего ОЗУ данных
ГЛАВА 2. АРХИТЕКТУРА MCS-51 61 В этой области памяти выделяются два особых фрагмента: • младшие 32 адреса занимают четыре регистровых банка, каждый из которых содержит по восемь регистров общего назначения RO - R7. Текущий банк определяется значением битов RSO, RS1 регистра PSW. Таким образом, младшие 32 ячейки ОЗУ, кроме адресов, имеют име- на; • ячейки с адресами в диапазоне 32 - 48 имеют прямо адресуемые биты, адреса битов этой части ОЗУ находятся в диапазоне ООН - 7FH. На рис. 2.5 изображена область регистров специальных функций. В нее включены все программно доступные регистры (управления и данных) внутренних блоков ввода/вывода. Эта область формально занимает стар- шие 128 байт внутренней памяти данных, но обращение должно осуществ- ляться по определенным адресам ячеек или отдельных битов. Обращение по промежуточным адресам приведет к ошибочному результату. Шестнадцатеричный адрес Десятичный Имя После адрес регистра сброса OFF: OFO: F7 F6 F5 F4 F3 F2 F1 F0 240 В ООН 0Е0: Е7 Е6 Е5 Е4 ЕЗ Е2 Е1 Е0 224 АСС ООН ODO: CY D7 АС D6 FO D5 RS1 D4 RSO D3 OV D2 р DO 208 PSW ООН 0В8: РТ2 BD PS ВС РТ1 ВВ РХ1 ВА РТО В9 РХО В8 184 IP ХХООООООВ 0В0: B7 В6 В5 В4 ВЗ В2 В1 ВО 176 РЗ FFH 0А8: ЕА AF ЕТ2 АО ES АС ЕТ1 АВ ЕХ1 АА ЕГО А9 ЕХО А8 168 IE охоооооов ОАО: А7 А6 А5 А4 АЗ А2 А1 АО 160 Р2 FFH 99: 153 SBUF ххххххххв 98: SM0 9F SM1 9Е SM2 9D REN 9С ТВ8 9В RB8 9А П 99 RI 98 152 SCON ООН 90: 97 96 95 94 93 92 91 90 144 Р1 FFH 8D: 141 ТН1 ООН 8С: 140 ТНО ООН 8В: 139 TL1 ООН 8А: 138 TL0 ООН 89: 137 TMOD ООН 88: TF1 8F TR1 8Е TFO 8D TRO 8С 1Е1 8В 1Т1 8А 1Е0 89 1Т0 88 136 TCON ООН 87: 135 PCON ооххоооов 83: 131 DPH ООН 82: 130 DPL ООН 81: 129 SP 07Н 80: 87 86 85 84 83 82 81 80 128 РО FFH Рис. 2.5. Регистры специальных функций
62 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Видно, что все регистры имеют как символические имена, так и адреса в качестве ячеек внутренней памяти. Часть регистров содержит прямо адре- суемые биты. Адреса битов находятся в диапазоне 80Н - F7H. Назначение регистров специальных функций следующее: Имя регистра Назначение АСС Аккумулятор, основной операционный регистр В Дополнительный регистр для операций умножения и деления; в других командах может рассматриваться как обычный РОН PSW Регистр, хранящий слово состояния процессора IP Регистр приоритетов прерываний РЗ Регистр порта РЗ IE Регистр разрешения прерываний Р2 Регистр порта Р2 SBUF Регистр данных последовательного порта SCON Регистр управления последовательного порта Р1 Регистр порта Р1 ТН1 Старший регистр таймера/счетчика 1 ТНО Старший регистр таймера/счетчика 0 TL1 Младший регистр таймера/счетчика 0 TLO Младший регистр таймера/счетчика 0 TMOD Регистр режима таймеров/счетчиков TCON Регистр управления таймеров/счетчиков PCON Регистр управления энергопотреблением SP Регистр указателя стека DPH, DPL Указатель данных DPTR состоит из регистра старшего байта DPH и регистра младшего байта DPL, содержит 16-разрядный адрес для обращения к внешней памяти данных РО Регистр порта РО Формат всех регистров специальных функций будет рассмотрен в раз- делах, посвященных описанию функций отдельных блоков ввода/вывода и системы прерываний. 2.4. Синхронизация, тактовая сетка, циклы команд Синхронизация микроконтроллеров MCS-51 осуществляется с исполь» зованием внутреннего инвертирующего усилителя, который превращается в синхрогенератор посредством подключения к выводам XTAL1 и XTAL2 внешнего кварцевого резонатора. Вывод XTAL1 является входом, а вывод XTAL2 выходом внутреннего усилителя. Для синхронизации может быть
ГЛАВА 2. АРХИТЕКТУРА MCS-51 63 Кварц или керамический резонатор б) Рис. 2.6. Синхронизация: использование внутреннего генератора (а); использование внешнего генератора для нМОП микросхем (6); использование внешнего генератора для кМОП микросхем (в) Внутри микроконтроллера частота внешнего синхросигнала делится на 2. Период внутреннего синхросигнала определяет длительность интер- вала времени, который фирма Intel называет состоянием Si («state»). Этот интервал состоит из двух фаз Р1 и Р2. Более крупной единицей времени является машинный цикл, включающий шесть состояний SI - S6. По дли- тельности он равен 12 периодам внешнего синхросигнала. Машинный цикл служит в основном для целей внутреннего микропрограммного управле- ния. При описании последовательности сигналов или событий фазам в машинном цикле присваивают номера с S1P1 по S6P2. Цикл выполнения
64 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ логики каждой команды состоит из одного, двух или четырех машинных циклов. Протоколы обмена микроконтроллеров семейства MCS-51 по магистрали реализованы в виде комбинаций следующих трех типов магистральных циклов (рис. 2.7): • ввод кода команды из внешней памяти программ без обращения к внешней памяти данных; • чтение из внешней памяти данных; • запись во внешнюю память данных. Первый тип магистрального цикла (рис. 2.7а) является основным, имеет длительность 6 состояний (12 периодов XTAL). Он характеризуется выработкой двух импульсов сигнала ALE, который служит для промежу- точной фиксации младшего байта адреса при обращении к внешней памяти (из порта РО в регистр-защелку). В этом типе магистрального цикла сиг- нал ALE стробирует адрес памяти программ, источником которого являет- ся счетчик команд (регистры РСН и PCL). Сигнал PSEN# является сиг- налом чтения кода из внешней памяти программ. В этом типе магистраль- ного цикла он также вырабатывается дважды. Оба сигнала становятся ак- тивными первый раз на фазе S1P2, а второй раз на фазе S4P2. Во время второй выборки производится чтение следующего байта кода. Если этот байт в данной команде не нужен, он игнорируется, а счетчик команд не инкрементируется. Этот тип магистрального цикла является основным, поскольку отсутствие обращения к внешней памяти данных позволяет реа- лизовать с его помощью самые короткие команды (рис. 2.8а,6) длительно- стью в один машинный цикл (6 тактов, 12 периодов Е^). Поскольку сиг- нал ALE вырабатывается постоянно, с частотой Fosc/6, он может быть ис- пользован для целей внешней синхронизации. Второй тип магистрального цикла (рис. 2.76) имеет длительность 12 состояний и характеризуется тем, что второй сигнал ALE на фазе S1P2 второго машинного цикла не вырабатывается. Сигнал PSEN# остается пас- сивным с фазы S4P2 первого машинного цикла до фазы S6P1 следующего цикла, запрещая чтение байта кода. Второй импульс сигнала ALE строби- рует фиксацию адреса памяти данных, источником которого в микрокон- троллере является регистр DPTR (DPH и DPL) или регистр Ri (при кос- венной адресации). Во втором случае содержимое регистра выдается через порт РО, а старшие восемь разрядов определяются значением в регистре порта РО. Далее, начиная с фазы S1P1 первого цикла до фазы S4P1 вто- рого цикла, становится активным сигнал RD#. Он стробирует ввод дан- ных через порт РО. Последующие импульсы сигналов ALE и PSEN# вво- дят код следующего байта команды. Третий тип магистрального цикла (рис. 2.7в) имеет длительность 12 состояний и в основном аналогичен второму типу. Отличие заключаются в том, что активным становится сигнал разрешения записи WR#.
ГЛАВА 2. АРХИТЕКТУРА MCS-51 65 SI I S2 I S3 I S4 I S5 I S6 I S1 I S2 P1 | P2 J PI | P2 J PI | P2 J P1 | P2 J P1 | P2 | PI | P2 | P1 | P2 J P1 | P2 XTAL а) Выборка из внешней памяти программ S4 I S5 I S6 I SI I S2 I S3 I S4 I S5 Р1 | Р2 I Р1 | Р2 | Р1 | Р2 | Р1 | Р2 | Р1 | Р2 | Р1 | Р2 | Р1 | Р2 | Pt | Р2 XTAL ALE [ RD# —►i н— Выбранныеданныв РО Вывод Высокий импеданс г {Высокий импеданс Вывод РРЬили Ri 1 PCL Р2 Вывод РСН или Вывод DPH или Вывод РСН или регистра Р2 регистра Р2 регистра Р2 б) Чтение из внешней памяти данных
66 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ S4 I S5 I S6 I S1 I S2 I S3 I S4 I S5 Р1 I Р2 Р1 I Р2 Р1 I Р2 Р1 I Р2 Р1 I Р2 Р1 I Р2 Р1 I Р2 Р1 I Р2 XTAL ALE [ WD# Р2 Вывод РСН или Вывод DPH или Вывод РСН или регистра Р2 регистра Р2 регистра Р2 в) Запись во внешнюю память данных Рис. 2.7. Типы магистральных циклов Особенностью архитектуры MCS-51 является то, что циклы всех ко- манд формируются из циклов магистрали и имеют строго определенную длительность. Примеры циклов ряда характерных команд приведены на рис. 2.8. Самыми короткими по времени выполнения являются однобайтные и двухбайтные команды, выполняемые за один машинный цикл (рис. 2.8.а,б). Это команды с быстрыми операциями, не использующие обращений к внешней памяти данных. В однобайтных командах (рис. 2.8а) информация хранится в ячейках внутренней памяти данных или регистрах. По второму импульсу сигнала ALE читается код операции следующей команды, который игнорируется. В начале следующей коман- ды он читается вновь. В двухбайтных командах (рис. 2.86) во втором бай- те хранятся либо данные, либо адрес внутренней ячейки памяти. В этом случае второй импульс ALE стробирует ввод второго байта текущей ко- манды. Еще одну группу характерных команд составляют однобайтные ко- манды длительностью два машинных цикла (рис. 2.8в). Это команды с медленными операциями, не использующие обращений к внешней памяти данных. Такими операциями являются, например, наращивание указателя данных DPTR, операции умножения и деления, возврат из подпрограммы. В командах такого типа после чтения кода операции по первому сигналу
ГЛАВА 2. АРХИТЕКТУРА MCS-51 67 ALE три раза подряд выбирается один и тот же следующий байт кода, ко- торый игнорируется. _S1 I S2 I S3 I S4 I S5 I S6 I S1 I S2 I S3 I S4 I S5 I S6 I S1 "pi | Р2 |Р1 | Р2 | PI | Р2 |Р1 | Р2 | Р1 | Р2 | Р1 |Р2 | PI ) Р2 | Р1 | Р2 | Р1 |Р2 IР1 | Р2 I PI | Р2 I PI | Р2 |Р1| Р2 Чтение КОП Чтение следующего Чтение КОП (игнорируется) следующего КОП I S1 I S2 I S3 I S4 I S5 I S6 1' S1 ’ ' а) Команды 1 байт, 1 цикл, например INC А Чтение КОП Чтение второго байта Чт^ие следующего КОП I S1 I S2 I S3 I S4 I S5 I S6 1 ’ S1 ’ ” б) Команды 2 байта, 1 цикл, например ADD A,#data Чтение КОП Чтение следующего Чтение следующего Чтение Чтение КОП (игнорируется) КОП (игнорируется) следующего КОП следующего (игнорируется) КОП повторно | S1 I S2 I S3 I S4 I S5 I S6 I SI | S2 | S3 | S4 | S5 | S6 Т" _ ЪТ в) Команды 1 байт, 2 цикла, например INC DPTR Чтение КОП | S1 | S2 I S3 Чтение следующего КОП (игнорируется) ri Нет выборки нет ALE ---------------i—--------------- S5 | S6 | S1 | S2 | S3 Адрес | Данные Обращение к внешней памяти данных Чтение Нет выборки следующего нет ALE КОП повторно .—i____._____._______ -. I- -. | S4 | S5 | S6 | SJ г) Команда MOVX (1 байт, 2 цикла) Рис. 2.8. Примеры циклов команд Короткими, но медленными являются команды типа MOVX с обраще- нием к внешней памяти данных. Они однобайтные, но выполняются за два машинных цикла (рис. 2.8г). После выборки кода операции команды по первому импульсу ALE следующий импульс выбирает следующий байт кода, который игнорируется. Далее импульс ALE стробирует адрес внеш- ней памяти данных, по которому производится операция чтения или запи- си. По последнему импульсу ALE вводится следующий байт кода. 2.5. Методы адресации и система команд Система команд микроконтроллеров MCS-51 ориентирована на орга- низацию гибкого ввода/вывода данных через параллельные и последова- тельный порты, первичную обработку информации. Особое внимание уде- лено операциям с битами и передаче управления по их значению. Коман- ды, выполняющие такие операции, составляют многочисленную группу и
68 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ образуют вместе с соответствующими аппаратными механизмами так назы- ваемый «булев процессор» (Boolean ргосессог по терминологии фирмы Intel) в составе архитектуры MCS-51. В целом систему команд MCS-51 можно охарактеризовать как весьма мощную и симметричную в том смысле, что программист имеет возмож- ность использовать большинство операций с полным набором методов ад- ресации и программно доступных ресурсов аппаратуры. В отличие от большинства RISC микроконтроллеров, система команд MCS-51 весьма удобна для программирования на ассемблере. Разработчик изделия при создании рабочей программы работает с ка- кой-либо кросс-системой, имеющей свою версию языка программирования. Подробнее о системах программирования будет сказано в главе 6. Ниже изложены основные правила, которые поддерживаются во всех системах программирования на языке ассемблер. Каждая команда сообщает процессору выполняемую операцию и мето- ды доступа к операндам. Командная строка языка ассемблер содержит метку (символический адрес), мнемонику (символическое имя) команды, операнды, комментарий. Имя команды однозначно связано с выполняемой ею операцией (действием). В командах микроконтроллеров MCS-51 могут обрабатываться до двух операндов. Первым при этом указывается регистр- приемник, вторым регистр-источник. Многие команды по умолчанию ис- пользуют аккумулятор как один из источников операнда и/или как при- емник результата. Методы адресации представляют собой набор механизмов доступа к операндам. Одни из них просты и поэтому приводят к компактному фор- мату команды и быстрому доступу к операнду, но объем доступных с их помощью ресурсов ограничен. Другие методы адресации позволяют опери- ровать со всеми имеющимися в системе ресурсами, но команда получается длинной, на ее ввод и выполнение тратится много времени. Набор методов адресации в каждой системе команд является компромиссным сочетанием известных механизмов адресации, выбранным проектировщиками архитек- туры исходя из набора решаемых задач. При этом для процессоров с ар- хитектурой CISC (complete instruction set computer), к которой принад- лежит MCS-51, большую роль имеет удобство работы программиста. Команды микроконтроллеров семейства MCS-51 могут быть одно-, двух- и трехбайтными. Используется четыре основных метода адресации. • Регистровая адресация. Операнд находится в одном из регистров об- щего назначения R0-R7 банка, номер которого определяется разрядами RSO, RS1 регистра PSW. Номер регистра определяется тремя младшими битами байта кода операции (КОП - первый байт команды). Регистровая адресация позволяет в одном байте указать код операции и адрес операн- да. Поскольку операнд находится во внутренней ячейке, не требуется цик-
ГЛАВА 2. АРХИТЕКТУРА MCS-51 69 лов обращения к внешней памяти данных. Формат команды сложения ADD A,Rn следующий: 7 о Код операции n n п ADD A, Rn • Прямая адресация. Операнд находится во внутренней памяти данных, адрес ячейки определяет отдельный байт команды. Таким образом, коман- ды с использованием прямой адресации имеют минимум два байта, дос- тупны только 256 ячеек, обращения за операндом к внешней памяти не требуется. Формат команды сложения ADD A,direct следующий: 7 0 7 О Код операции прямой адрес ADD A, direct • Косвенно—регистровая адресация. Этот метод адресации использует регистры R0 и R1 в качестве указателей. Регистры берутся из банка, опре- деляемого разрядами RSO, RS1 регистра PSW. Содержимое этих регистров используется как адрес для обращения к ячейке внутренней памяти дан- ных, хранящей операнд. Команда получается однобайтной, номер регистра указывает младший бит. Длина команды при этом соответствует длине ко- манды с использованием регистровой адресации, но косвенная адресация дает доступ ко всему пространству внутренней памяти данных. Формат команды сложения ADD A, @Ri следующий: 7 о Код операции i ADD A, ©Ri • Непосредственная адресация. Операнд находится в отдельном байте команды, это константа. Таким образом, команды с использованием непо- средственной адресации имеют минимум два байта, обращения за операн- дом к внешней памяти не требуется. Формат команды сложения ADD А, #data следующий: 7 о Код операции ADD А, Отметим, что в общем случае для указания места нахождения каждого из двух операндов, а также приемника результата, в команде должен быть использован свой метод адресации. В «аккумуляторной» архитектуре MCS-51 результат всегда помещается в аккумулятор, поэтому адресуются только два операнда. Иногда один из операндов берется из определенного 7 о байт д анных #data
70 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ логики регистра, что определяется уникальным кодом операции. По существу это пятый метод — неявная адресация. Состояние процессора после выполнения очередной команды опреде- ляется состоянием аккумулятора и регистра PSW, который хранит «слово состояния процессора». Формат этого регистра и функции отдельных би- тов следующие: PSW | CY | АС | F0 | RS1 | RSO | ОУ | | Р | Флаг Бит Функция CY PSW.7 Флаг переноса АС PSW.6 Флаг вспомогательного переноса (между тетрадами) F0 PSW.5 Флаг 0, возможно программирование пользователем в общих целях RS1 PSW.4 Первый бит селектора регистрового банка RS0 psw.a Нулевой бит селектора регистрового банка OV PSW.2 Флаг переполнения PSW.1 Флаг, определяемый пользователем Р PSW.0 Флаг чётности. Указывает чётное число “1" в аккумуляторе При описании системы команд далее используются следующие обозна- чения: Rn - один из регистров RO - R7 в банке регистров, определенном би- тами регистра PSW; Direct - адрес ячейки внутренней памяти данных. @Ri - ячейка внутренней памяти данных, косвенно адресуемая через регистры R0 или R1 текущего банка; #data - 8-разрядная константа, включенная в команду; #data 16 - 16-разрядная константа, включенная в команду; addr 16 - 16-разрядный адрес перехода в командах LCALL и LJMP; addr И - И-разрядный адрес перехода в командах ACALL и AJMP; rel - 8-разрядная константа со знаком (в дополнительном коде). Оп- ределяет смешение в команде SJMP и всех командах условных переходов; bit - адрес бита во внутренней памяти данных. Всего в системе команд семейства MCS-51 можно выделить 5 групп. Команды следующим образом изменяют значение флагов регистра PSW: Команда Флаг Команда Флаг C OV AC C OV AC ADD X X X CLRC 0 ADDC X X X CPLC X SUBB X X X ANL C,bit X MUL 0 X ANL C,/bit X DIV 0 X ORL C.bit X DA X ORL C,/bit X RRC X MOV C.bit X RLC X CJNE X SETBC 1
ГЛАВА 2. АРХИТЕКТУРА MCS-51 71 Арифметические команды. Обеспечивают выполнение операций сло- жения и вычитания (в том числе с учетом переноса) над целочисленными 8-разрядными операндами, инкремент и декремент регистров и ячеек внут- ренней памяти данных, двоично-десятичную коррекцию содержимого ак- кумулятора. Краткая сводка этих команд приведена в следующей таблице, а более подробное их описание можно найти в Приложении 1. Арифметические команды микроконтроллеров MCS-51 Мнемоника Описание Байт Тактов Действие АРИФМЕТИЧЕСКИЕ ОПЕРАЦИИ ADD A,Rn Сложение регистра с аккумулятором 1 12 ADD (A)<-(A)+(Rn) ADD A, direct Сложение ячейки внутренней памяти данных с аккумулятором 2 12 ADD (A)<-(A)+(direct) ADD A,@Ri Сложение косвенно адресуемой ячейки внутренней памяти данных с аккумулятором 1 12 ADD (A)4-(A)+((Ri)) ADD A,#data Сложение непосредственного байта данных с аккумулятором 2 12 ADD (A)<-(A)+#data ADDC A,Rn Сложение регистра с аккумулятором с учетом переноса 1 12 ADDC (A)<-(A)+(C)+(Rn) ADDC A,direct Сложение ячейки внутренней памяти данных с аккумулятором с учетом переноса 2 12 ADDC (A)«-(A)+(C)+(direct) ADDC A,@Ri Сложение косвенно адресуемой ячейки внутренней памяти даных с аккумулятором с учетом переноса 1 12 ADDC (A)<-{A)+(C)+((Ri)) ADDC A,#data Сложение непосредственного байта данных с аккумулятором с учетом переноса 2 12 ADDC (A)<-(A)+(C)+#data SUBB A,Rn Вычитание регистра из аккумулятора с учетом заема 1 12 SUBB (A)<-(AHC)-(Rn) SUBB A,direct Вычитание ячейки внутренней памяти данных из аккумулятора с учетом заема 2 12 SUBB (A)4-(A)-(C)-(direct) SUBB A,©Ri Вычитание косвенно адресуемой ячейки внутренней памяти данных из аккумулятора с учетом заема 1 12 SUBB (A)<—(A)-(C)-((Ri)) SUBB A,#data Вычитание непосредственного байта данных из аккумулятора с учетом заема 2 12 SUBB (A)<-(A)-(C)-#data INC A Инкремент аккумулятора 1 12 INC (A)<-(A)+1 INC Rn Инкремент регистра 1 12 INC (Rn)<-(Rn)+1 INC direct Инкремент ячейки внутренней памяти данных 2 12 INC (direct)<-(direct)+1 INC ©Ri Инкремент косвенно адресуемой ячейки внутренней памяти данных 1 12 INC ((Ri))«-((Ri))+1
72 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Мнемоника Описание Байт Тактов Действие DEC A Декремент аккумулятора 1 12 DEC (А)<-(А)-1 DEC Rn Декремент регистра 1 12 DEC (Rn)«-(Rn)-1 DEC direct Декремент ячейки внутренней памяти данных 2 12 DEC (direct)<-( direct)-1 DEC @Ri Декремент косвенно адресуемой ячейки внутренней памяти данных 1 12 DEC ((Ri))«-((Ri))-1 INC DPTR Инкремент указателя данных 1 24 INC (DPTR)<-(DPTR)+1 MUL AB Умножение А на В 1 48 MUL (A)70<-(A)X(B); (B)1S8 DIV AB Деление А на В 1 48 DIV (A),5 j<—(A)/(B); (B)70 DA A Двоично-десятичная коррекция аккумулятора 1 12 DA - содержимое аккумулятора в BCD IF[[(A3.0)>9]V[(AC)=1]] THEN (АнНАмНб AND IF [[(A7.a)>9]V[(C)=1 ]] THEN (A7.4)<-(A7.4)+6 Особенностью системы команд MCS-51 является наличие в составе этой группы команд умножения и деления 8-разрядных целочисленных операндов. Получающийся 16-разрядный результат хранится в регистрах А и В. Результатом выполнения арифметических команд является, кроме нового содержимого аккумулятора, измененное значение регистра PSW. Логические команды. Выполняют операции AND, OR, «исключающее ИЛИ», сдвиги содержимого аккумулятора вправо и влево, очистку акку- мулятора и перестановку его тетрад. В качестве операндов могут исполь- зоваться непосредственные данные и содержимое ячеек внутренней памяти данных. Выполнение некоторых логических команд влияет на значение флага С (перенос) регистра PSW. Логические команды микроконтроллеров MCS-51 Мнемоника Описание Байт Тактов Действие ЛОГИЧЕСКИЕ ОПЕРАЦИИ ANL A,Rn AND регистра и аккумулятора 1 12 ANL (А)<—(A)A(Rn) ANL A,direct AND ячейки внутренней памяти данных и аккумулятора 2 12 ANL (А)<- (A)A(direct) ANL A.@Ri AND косвенно адресуемой ячейки внутренней памяти данных и аккумулятора 1 12 ANL (А)<—(A)A((Ri)) ANL A,#data AND непосредственного байта данных и аккумулятора 2 12 ANL (A)<-(A)A#data
ГЛАВА 2. АРХИТЕКТУРА MCS-51 73 Мнемоника Описание Байт Тактов Действие ANL direct.A AND аккумулятора и ячейки внутренней памяти данных 2 12 ANL (direct)-*—(direct)A( А) ANL direct, #data AND непосредственного байта данных и ячейки внутренней памяти данных 3 24 ANL (direct)*-(direct)A#data ORL A,Rn OR регистра и аккумулятора 1 12 ORL (A)*-(A)V(Rn) ORL A,direct OR ячейки внутренней памяти данных и аккумулятора 2 12 ORL (A)*-(A)V(direct) ORL A,@Ri OR косвенно адресуемой ячейки внутренней памяти данных и аккумулятора 1 12 ORL (A)<-(A)V((Ri)) ORL A,#data OR непосредственного байта данных и аккумулятора 2 12 ORL (A)*-(A)V#data ORL direct.A OR аккумулятора и ячейки внутренней памяти данных 2 12 ORL (direct)«-(direct)V(A) ORL direct, #data OR непосредственного байта данных и ячейки внутренней памяти данных 3 24 ORL (direct)*-(direct)V#data XRL A.Rn XOR регистра и аккумулятора 1 12 XRL (A)<-(A)V(Rn) XRL A.direct XOR ячейки внутренней памяти данных и аккумулятора 2 12 XRL (A)*-(A)V(direct) XRL A,@Ri XOR косвенно адресуемой ячейки внутренней памяти данных и аккумулятора 1 12 XRL (A)<-(A)V((Ri)) XRL A,#data XOR непосредственного байта данных и аккумулятора 2 12 XRL (A)*-(A)V#data XRL direct.A XOR аккумулятора и ячейки внутренней памяти данных 2 12 XRL (direct )<-(direct)V(A) XRL direct,#data XOR непосредственного байта данных и ячейки внутренней памяти данных 3 24 XRL (direct )<-(direct)V#data CLR A Очистка аккумулятора 1 12 CLR (A)<-0 CPL A Инверсия аккумулятора 1 12 CPL (A)*--.(A) RL A Сдвиг аккумулятора влево 1 12 RL (An+1)<-(An) n = 0-6 (A0)*-(A7) RLC A Сдвиг аккумулятора влево через перенос 1 12 RLC (An+1 )<—(An) n = 0-6 (A0)<-(C) (C)<-(A7) RR A Сдвиг аккумулятора вправо 1 12 RL (An)«-(An+1) n = 0-6 (A7)<—(AO) RRC A Сдвиг аккумулятора вправо через перенос 1 12 RRC (An)*-(An+1) n = 0-6 (A7)<—(C) (C)<-(A0) SWAP A Перестановка тетрад аккумулятора 1 12 SWAP (A3-o) <->(A7 4)
74 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Команды пересылки данных. Осуществляют передачу данных между ячейками внутренней памяти данных (команды MOV), внешней памяти данных (команды MOVX) и аккумулятором. Команды пересылки данных микроконтроллеров MCS-51 В Лнемоника Описание Байт Тактов Действие MOV ПЕРЕСЫЛКА ДАННЫХ A,Rn Пересылка из регистра в 1 12 MOV MOV A,direct аккумулятор Пересылка из ячейки внутренней 2 (A)<-(Rn) 12 MOV MOV A,@Ri памяти данных в аккумулятор Пересылка из косвенно 1 (А)ч—(direct) 12 MOV MOV A,#data адресуемой ячейки внутренней памяти данных в аккумулятор Пересылка непосредственного 2 (direct)-*—((Ri)) 12 MOV MOV Rn,A байта данных в аккумулятор Пересылка из аккумулятора в 1 (A)«-#data 12 MOV MOV Rn, direct регистр Пересылка из ячейки внутренней 2 (Rn)«-(A) 24 MOV MOV Rn,#data памяти данных в регистр Пересылка непосредственного 2 (Rn)<-(direct) 12 MOV MOV direct.A байта данных в регистр Пересылка из аккумулятора в 2 (Rn)«-#data 12 MOV MOV direct, Rn ячейку внутренней памяти данных Пересылка из регистра в ячейку 2 (direct)«-(A) 24 MOV MOV direct,direct внутренней памяти данных Пересылка из ячейки внутренней 3 (direct)«-(Rn) 24 MOV MOV direct,@Ri памяти данных в ячейку внутрен- ней памяти данных Пересылка из косвенно 2 (direct)<-(direct) 24 MOV MOV direct, #data адресуемой ячейки внутренней памяти данных в ячейку внутрен- ней памяти данных Пересылка непосредственного 3 (direct)*—((Ri)) 24 MOV MOV @Ri,A байта данных в ячейку внутренней памяти данных Пересылка из аккумулятора в 1 (direct)«-#data 12 MOV MOV @Ri,direct косвенно адресуемую ячейку внутренней памяти данных Пересылка из ячейки внутренней 2 ((Ri))<-(A) 24 MOV MOV @Ri,#data памяти данных в косвенно адресуемую ячейку внутренней памяти данных Пересылка непосредственного 2 ((Ri))<-(direct) 12 MOV MOV DPTR,data16 байта данных в косвенно адресуемую ячейку Загрузка 16-разрядной константы в 3 ((Ri))<-(data) 24 MOV Move A,@A+DPTR указатель данных Пересылка байта кода, 1 (DPTR)<-#data150 DPH «-#data,5 8 DPL <-#data70 24 MOVC связанного с DPTR, в аккумулятор (A)<—((A)+(DPTR))
ГЛАВА 2. АРХИТЕКТУРА MCS-51 75 Мнемоника Описание Байт Тактов Действие MOVC А,@А+РС Пересылка байта кода, связанного с PC, в аккумулятор 1 24 MOVC (РС)<-(РС)+1 (А)<—((А)+(РС)) MOVX A,@Ri Пересылка байта из внешней памяти данных (8-разр. адрес) в аккумулятор 1 24 MOVX (A)<-((Ri)) MOVX A,@DPTR Пересылка байта из внешней памяти данных (16-разр. адрес) в аккумулятор 1 24 MOVX (A)<-«DPTR)) MOVX @Ri,A Пересылка из аккумулятора в ячейку внешней памяти данных (8-разр. адрес) 1 24 MOVX ((Ri))<—(A) MOVX ©DPTR.A Пересылка из аккумулятора в ячейку внешней памяти данных (16-разр. адрес) 1 24 MOVX (DPTR)<-(A) PUSH direct Загрузка ячейки внутренней памяти данных в стек 2 24 PUSH (SP)<-(SP)+1 ((SP))<-(direct) POP direct Выгрузка из стека в ячейку внутренней памяти данных 2 24 POP (direct)<-((SP)) (SP)<-(SP)-1 XCH A,Rn Обмен между регистром и аккумулятором 1 12 XCH (A)o((Rn)) XCH A,direct Обмен меаду ячейкой внутренней памяти данных и аккумулятором 2 12 XCH (A)o(direct) XCH A,©Ri Обмен между косвенно адресуемой ячейкой внутренней памяти данных и аккумулятором 1 12 XCH (A)o(R,)) XCHD A,@Ri Обмен младшими тетрадами между косвенно адресуемой ячейкой внутренней памяти данных и аккумулятором 1 12 XCHD (Аз о)<->((П|з o)) Существуют две команды MOVC, позволяющие читать в аккумулятор содержимое памяти программ. К этой группе относятся парные команды PUSH и POP, осуществляющие загрузку и выгрузку содержимого прямо адресуемой ячейки в стек (из стека). Имеются четыре команды взаимного обмена информацией между ячейками внутренней памяти данных (ХСН и XCHD). Команды пересылки данных значения флагов в регистре PSW не изменяют. Команды работы с битами. Эти команды устанавливают в «1» (SETB) или «О» (CLR) прямо адресуемый бит внутренней памяти данных, изменяют его значение на противоположное (CPL), выполняют операции AND и OR над флагом переноса С и прямо адресуемым битом (ANL и ORL), осуществляют пересылку значения между флагом С и прямо адре- суемым битом (MOV), осуществляют передачу управления по состоянию флага С или прямо адресуемого бита (JC, JNC, JB, JNB, JBC).
76 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Команды работы с битами микроконтроллеров MCS-51 Мнемоника Описание Байт Тактов Действие ОПЕРАЦИЯ С БУЛЕВЫМИ ПЕРЕМЕННЫМИ CLR С Очистка флага переноса 1 12 CLR (С)<-0 CLR bit Очистка бита 2 12 CLR (bit)<- 0 SETB С Установка флага переноса 1 12 SETB (С)<-1 SETB bit Установка бита 2 12 SETB (bit)-*—1 CPL С Инверсия флага переноса 1 12 CPL (C)<— —. (С) CPL bit Инверсия бита 2 12 CPL (bit)<--i (bit) ANL C,bit AND бита и флага переноса 2 24 ANL (C)<-(C) A (bit) ANL C,/bit AND инверсии бита и флага переноса 2 24 ANL (C)<-(C) A(bit) ORL C.bit OR бита и флага переноса 2 24 ORL (C)<-(C) V (bit) ORL C,/bit OR инверсии бита и флага переноса 2 24 ORL (C)<—(С) V —.(bit) MOV C.bit Пересылка бита во флаг переноса 2 12 MOV (C)<-(bit) MOV bit.C Пересылка флага переноса в бит 2 24 MOV (bit)f-(C) JC rel Переход» если флаг переноса установлен 2 24 JC (PC)<-(PC) + 2 IF (C)=1 THEN (PC)<-(PC)+ rel JNC rel Переход, если флаг переноса установлен 2 24 JNC (PC)<-(PC) + 2 IF (C)=0 THEN (PC)<-(PC)+ rel JB bit, rel Переход, если бит установлен 3 24 JB (PC)<-(PC) + 3 IF (bit)=1 THEN (PC)<-(PC)+ rel JNB bit, rel Переход, если бит не установлен 3 24 JNB (PC)<-(PC) + 3 IF (bit)=O THEN (PC)«-(PC)+rel JBC bit, rel Переход, если бит установлен, и очистка этого бита 3 24 JBC (PC)<-(PC) + 3 IF (bit)=1 THEN (bit)-*—0 (PC)<-(PC)+ rel
ГЛАВА 2. АРХИТЕКТУРА MCS-51 77 Команды этой группы, выполняющие логические операции и осущест- вляющие пересылку значения бита, изменяют значение флага С регистра PSW. Остальные команды на флаги не действуют. Команды передачи управления. Передача управления может осуще- ствляться безусловно или по условию, без возврата или с возвратом. В последнем случае для возврата необходимо хранить состояние процессора. Система команд MCS-51 кроме обычных «длинных» переходов с исполь- зованием 16-разрядного адреса унаследовала от семейства MCS-48 коман- ды передачи управления с «коротким» ll-разрядным адресом. Команды передачи управления микроконтроллеров MCS-51 Мнемоника Описание Байт Тактов Действие ПЕРЕДАЧА УПРАВЛЕНИЯ ACALL addrl 1 Короткий переход с возвратом. 2 24 ACALL (РС)ч-(РС)+ 2 (SP)<-(SP) + 1 ((SP))<-{PC70) (SP)<-(SP) + 1 ((SP)MPC».) (PC100)«-page address LCALL addrl 6 Длинный переход с возвратом 3 24 LCALL (PC)«-(PC)+ 3 (SP)<-(SP) + 1 ((SP))<-(PC7o) (SP)«-(SP) +1 ((SP))<—(PCl5e) (PCX-addrtso RET Возврат из Подпрограммы 1 24 RET (PC,5.e)<H(SP)) (SP)<-(SP)-1 (PC7.o)H(SP)) (SP)<-(SP)-1 RETI Возврат из подпрограм- мы прерывания 1 24 RETI (PC,se)«-((SP)) (SP)<-(SP)-1 (PC7o)<-((SP)) (SP)«-(SP)-1 AJMP addrl 1 Короткий переход без возврата 2 24 AJMP (PC)<-(PC)+2 (PCioo)«-page address LJMP addrl 6 Длинный переход без возврата 3 24 LJMP (PC)<—add гi5-o SJMP rel Короткий переход с 8-разрядным смещением 2 24 SJMP (PC)<—(PC)+2 (PC)«-(PC)+rel JMP @A+DPTR Переход относительно DPTR 1 24 JMP (PC)<—(A)+(DPTR)
78 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Мнемоника Описание Байт Тактов Действие JZ rel Переход, если аккумулятор равен нулю 2 24 JZ (РС)<—(PQ+2 IF (А)= 0 THEN (PC)«-(PC)+rel JNZ rel Переход, если аккумулятор не равен нулю 2 24 JNZ (РС)<—(РС)+2 IF (А)* 0 THEN (PC)«-(PC)+rel CJNE A,direct,rel Переход, если ячейка внутренней памяти данных не идентична аккумулятору 3 24 (РС)<-(РС)+3 IF(A)< > (direct) THEN (PC)«-(PC)+relative offset IF(A) < (direct) THEN (C)<-1 ELSE (C)<-0 CJNE A,#data,rel Переход, если непосредственный байт данных не равен аккумулятору 3 24 (PC)<-(PC)+3 IF(A)< > (data) THEN (PC)<-(PC)+relative offset IF(A) < (data) THEN (C)<-1 ELSE (C)«-0 CJNE Rn,#data,rel Переход, если непосредственный байт данных не равен регистру 3 24 (PC)<-(PC)+3 IF((Ri))< > data THEN (PC)«-(PC)+relative offset IF((Ri)) < data THEN (C)«-1 ELSE (C)<-0 CJNE ©Ri,#data, rel Переход, если непосредственный байт данных не равен косвенно адресуемой ячейке внутренней памяти данных 3 24 (PC)<-(PC) + 3 IF ((Ri)) <> data THEN (РС)ч-(РС) +relative offset IF((Ri)) < data THEN (C)<-1 ELSE (C)«-0 DJNZ Rn.rel Декремент регистра и переход, если он не равен нулю 2 24 DJNZ (PC)<-(PC) + 2 (Rn)«-(Rn) - 1 IF (Rn) > 0 or (Rn) < 0 THEN (PC)<-(PC) + rel DJNZ direct, rel Декремент ячейки внутренней памяти данных и переход, если она не равна нулю 3 24 DJNZ (PC)<-(PC) + 2 (direct)«-(direct) - 1 IF(direct)>Oor(direct)< 0 THEN (PC)<-(PC) + rel NOP Нет операции 1 12 NOP (PC)<-(PC) + 1 Группа команд передачи управления включает четыре команды безус- ловного перехода без возврата («ультракороткая» SJMP, «короткая»
ГЛАВА 2. АРХИТЕКТУРА MCS-51 79 AJMP, «длинная» LJMP и переход по значению A+DPTR в команде JMP), две команды безусловного перехода с возвратом («короткая» ACALL и «длинная» LCALL), восемь команд условного перехода без воз- врата. Имеются две команды возврата: из обычной подпрограммы - ко- манда RET и из подпрограммы обработки прерывания - команда RETI. Завершает эту группу и всю систему команд NOP - «нет операции». Команды передачи управления значения флагов в регистре PSW не изменяют, кроме команд условного перехода CJNE, влияющих на значение флага С. 2.6. Система прерываний Исходная система прерываний в архитектуре MCS-51 включает пять источников - два внешних и три внутренних. Система развивается, с по- явлением микроконтроллеров типа 80С52 число источников прерываний в архитектуре семейства постоянно увеличивается, что определяется увели- чением количества внутренних блоков ввода/вывода. Некоторые усовер- шенствования претерпел механизм приоритете® прерываний. Здесь мы рассмотрим исходную систему прерываний, а все отличия будут указаны при описании старших версий микроконтроллеров. Из пяти источников прерываний внешними являются входы INTO# и INT1#, а внутренними - два счетчика/таймера и последовательный порт. Активные сигналы на входах INTO#, INTI# устанавливают флаги IE0, IE1 регистра TCON- Таймер 0 и Таймер 1 используют для выработки запросов прерываний флаги переполнения TFO, TF1 в регистре управления TCON, а последовательный порт использует для этого два флага - приемника RI и передатчика Т1 в регистре управления SCON. Каждый из флагов после- довательного порта может вызвать прерывание, а конкретный источник определяет процедура обслуживания посредством опроса. Реакция на любой запрос, разрешенный к обслуживанию, заключается в передаче управления от текущей программы специальной процедуре об- служивания прерывания данного типа. Осуществляется эта передача по- средством команды LCALL, код которой не выбирается из памяти, а фор- мируется внутри микроконтроллера. Адрес перехода в архитектуре MCS- 51 соответствует вектору прерывания и фиксирован для каждого источни- ка: Векторы системы поерываний Источник прерывания Вектор прерывания Внешнее прерывание INTO 0003Н Таймер/счетчик Т/СО ооовн Внешнее прерывание INT1 001 зн Таймер/счетчик Т/С1 001 вн Последовательный порт 0023Н
80 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Из таблицы видно, что интервал между адресами составляет всего 8 ячеек памяти программ, поэтому по первым четырем адресам может рас- полагаться либо очень короткая процедура, либо команда JMP перехода на область памяти, где находится более длинная процедура обслуживания. По адресу последовательного порта места больше. Если по адресам векто- ров прерываний находятся команды JMP, то имеет место так называемая таблица переходов системы прерываний. Когда запрос прерывания принят на обслуживание, выполняется сле- дующая последовательность действий. Текущая команда выполняется до конца. Затем внутренне формируемая команда LCALL сохраняет текущее значение счетчика команд PC (адрес следующей команды) в стеке. Это позволяет после завершения процедуры обслуживания прерывания вер- нуться в прерванную программу. Далее эта команда загружает в PC адрес- вектор. Сохранение в стеке других регистров микроконтроллера, кроме PC, осуществляется программистом командами PUSH в начале процедуры обслуживания. В конце процедуры должны стоять соответствующие ко- манды выгрузки POP. Этот процесс отдан на усмотрение разработчика, поскольку от объема сохраняемой информации сильно зависит время ре- акции на прерывание. Процедура обслуживания прерывания завершается командой RETI, которая выгружает из стека адрес возврата и помещает его в PC. Каждый из источнике» прерываний может быть разрешен или запре- щен с использованием соответствующего бита регистра IE. Кроме того, в этом регистре есть бит общего запрета всех прерываний. При появлении запросов от нескольких источников очередность их об- служивания определяется с помощью механизма приоритетов прерываний. В архитектуре MCS-51 имеет место двухступенчатый механизм определе- ния приоритетов. IE I ЕА I ' I ~ | ES | ЕТ1 | ЕХ1 | ЕТО | ЕХО | Имя бита Номер бита Функция ЕА IE.7 Запрещение запросов от всех источников, имеет место при ЕА = 0 - IE.6 Зарезервирован - IE. 5 Зарезервирован ES IE.4 Запрещение запроса от последовательного порта, имеет место при ES = 0 ЕТ1 IE.3 Запрещение запроса от Таймера 1, имеет место при ЕТ1 = 0 ЕХ1 IE.2 Запрещение запроса по входу INT1#, имеет место при ЕХ1 = 0 ЕТО IE.1 Запрещение запроса от Таймера 0, имеет место при ЕТО = 0 ЕХО IE.0 Запрещение запроса по входу INTO#, имеет место при ЕХО = 0 В исходной системе прерываний микроконтроллеров 8051АН приори- теты на первой ступени имеют два уровня: «высокий» и «низкий», и опре- деляются значениями битов регистра IP.
ГЛАВА 2. АРХИТЕКТУРА MCS-51 81 ip I - I - I - | PS IPT1 IPX1 [ PTO IPXO I Имя бита Номер бита Функция IP.7 Зарезервирован - IP.6 Зарезервирован - IP.5 Зарезервирован PS IP.4 Определяет приоритет последовательного порта РТ1 IP.3 Определяет приоритет Таймера 1 РХ1 IP.2 Определяет приоритет входа INT1# РТО IP.1 Определяет приоритет Таймера 0 РХО 1Р.0 Определяет приоритет входа INTO# При «1» в определенном разряде регистра IP приоритет соответст- вующего источника прерывания высокий, а при «О» - низкий. При одно- временном появлении нескольких запросов одного уровня очередность об- служивания определяется с помощью внутренней процедуры поллинга (последовательного опроса), который производится в порядке фиксиро- ванного старшинства источников внутри одного уровня приоритета. Этот порядок следующий: Приоритеты прерываний при поллинге Источник Приоритет внутри уровня Вход INTO# Таймер 0 Вход INT1# Таймер 1 Последовательный порт Высший Низший Действие механизма приоритетов прерываний заключается в выборе для обслуживания одного из источников при одновременном приходе не- скольких запросов, а также в принятии решения о прерывании текущей процедуры обслуживания вновь поступившим запросом. Все источники прерываний проверяются на наличие запроса во время S5P2 каждого ма- шинного цикла (рис. 2.9). В течении следующего машинного цикла анали- зируются биты приоритетов регистра IP и выполняется внутренняя проце- дура поллинга. На основе двухступенчатого анализа выбирается запрос с наиболее высоким приоритетом из поступивших. Если какое либо прерывание уже обслуживается, то его процедуру может прервать только прерывание с бо- лее высоким приоритетом. Механизм приоритетов прерываний использует два внутренних программно недоступных флага текущего уровня обслу- живания (первой ступени). Прием на обслуживание прерывания устанав- ливает флаг того уровня приоритета, к которому относится запрос. Этот флаг определяет порог чувствительности системы прерываний. Команда RETI в конце процедуры обслуживания очищает флаг своего уровня и, таким образом, ликвидирует порог чувствительности.
82 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ С1 С2 сз С4 С5 е S5P2 S6 м 11 II Поллинг запросов U Команда LCALL Ц—... Процедура обработки прерывания Запрос Фиксация прерывания запроса Наиболее быстрый вариант, когда С2 является последним машинным циклом команды (кроме RETL а также команд обращения к IE; и IP). Рис. 2.9. Вызов процедуры обслуживания прерывания Из рис. 2.9 видно, что между запросом и началом процедуры обслу- живания проходит не менее трех машинных циклов. Запрос прерывания не принимается на обслуживание и откладывается на более позднее время при следующих обстоятельствах: • выполняется процедура обслуживания прерывания с более высоким приритетом; • текущий машинный цикл не является последним в цикле команды; • выполняется команда RETI, команды обращения к регистрам IE, IP или следующие за ними. В текст процедуры обслуживания любого источника прерывания ре- комендуется включить команду сброса флага данного источника. Особенности запросов внешних прерываний. По входам INTO#, INTI# могут восприниматься сигналы запросов, активными значениями которых является либо низкий уровень входного сигнала, либо перепад «1» - «О». Тип активного значения определяется битами ITO, IT1 регистра TCON. При Itx = 0 запрос фиксируется по низкому уровню сигнала на соответствующем входе INTx#, а при Itx = 1 по перепаду. Если запрос прерывания формируется перепадом сигнала на входе INTx#, высокий и низкий уровни сигнала должны удерживаться не менее одного машинного цикла каждый. При запросе в виде низкого уровня сигнала активное значение должно удерживаться на входе до начала обработки данного запроса. Далее сиг- нал должен стать пассивным до завершения процедуры обслуживания. 2.7. Параллельные порты Все линии ввода/вывода микроконтроллеров в исходной архитектуре MCS-51 сгруппированы в четыре параллельных двунаправленных
ГЛАВА 2. АРХИТЕКТУРА MCS-51 83 8-разрядных порта РО-РЗ. Эти порты могут использоваться как для вы- полнения функций обмена данными (допуская при этом поразрядное про- граммирование на ввод или на вывод), так и для выполнения альтерна- тивных функций, таких как обращение к внешней памяти, прием запросов прерываний и другие. При обращении к внешней памяти используются порты РО и Р2. Через порт РО выдается младший байт адреса, который должен быть зафиксиро- ван во внешнем регистре, поскольку вслед за ним на линиях порта появ- ляются данные для записи или чтения. Через порт Р2 выдается старший байт адреса. В микроконтроллерах типа 8051 и 8751 с внутренней памятью программ в условиях, когда внешняя память программ не используется, порты РО и Р2 могут служить для обмена данными как порты общего на- значения. В микроконтроллерах с программируемой внутренней памятью программ порт РО используется для ввода или вывода байта кода при за- писи и верификации. Младший байта адреса при программировании и чтении внутренней памяти вводится через порт Р1, а старший байт адреса - через порт Р2. На рис. 2.10 приведены структурные схемы аппаратных средств, об- служивающих одну линию каждого из портов РО-РЗ. Все линии парал- лельных портов имеют защелки (типа D-триггера), которые объединены в группы по восемь и рассматриваются как регистры специальных функций РО-РЗ. Кроме защелки, каждая линия ввода/вывода имеет входной буфер и формирователь выходного сигнала. На рис. 2.10 видно, что на внутрен- нюю шину микроконтроллера может быть прочитано как состояние каждой из защелок, так и значения сигналов на внешних выводах. Часть команд микроконтроллера во время выполнения читают защелки (регистры пор- тов), а другие - значение сигналов на линиях портов. Для выполнения портом РЗ альтернативных функций в соответствую- щий разряд регистра порта должна быть записана «1». Во время обраще- ния к внешней памяти во все разряды порта РО автоматически записыва- ются «1», значения защелок порта Р2 не изменяются. Чтобы вывести значение «0» или «1» на внешний вывод, необходимо записать это значение в соответствующий разряд регистра параллельного порта. Значение появится на внешнем выводе на фазе S1P1 первого ма- шинного цикла следующей команды. Для использования линии порта в качестве входа, ее защелка должна содержать «1». При этом у портов Р1, Р2, РЗ соответствующая линия внутри подтягивается к уровню «1», но может быть внешним источником переведена в состояние «0». Из-за такого механизма порты Р1-РЗ называют «квазидвунаправленными». Порт Р0 элементов постоянного подтягивания к уровню «1» не имеет. Запись «1» в защелку порта Р0 переводит соответствующую линию в высокоимпе- дансное состояние, поэтому этот порт является действительно двунаправ- ленным. Верхний транзистор выходного формирователя открыт только
84 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ при выдаче «1» на линию в качестве бита адреса внешней памяти. При работе порта РО на ввод/вывод данных его линии должны быть подтяну- ты к уровню «1» внешними резисторами. Управление Адрес/данные Внутренняя шина Запись в защелку Чтение вывода Чтение защелки а) Vcc Внутренняя шина Запись в защелку Чтение вывода Чтение защелки б) Рис. 2.10. Аппаратные средства портов РО-РЗ
ГЛАВА 2. АРХИТЕКТУРА MCS-51 85 Vcc Управление Адрес Внутренняя шина Запись в защелку Чтение вывода Чтение защелки В) Чтение защелки Альтернативная функция входа Альтернативная функция выхода Внутренняя шина Запись в защелку Чтение вывода Vcc Рис. 2.10. Аппаратные средства портов РО-РЗ (продолжение) Поскольку функция записи «1» и функция чтения для выходного формирователя представляют собой одно и то же состояние с малым вы- ходным током, для ускорения переключения внешних устройств выходные формирователи портов обеспечивают в течение первого машинного такта (S1P1 - S1P2) увеличенный ток. Обновление данных в портах. В командах, которые изменяют значе- ния в защелках, образующих регистры портов РО-РЗ, новые данные фик- сируются на фазе S6P2 последнего машинного цикла. На выводе эти дан- ные появляются на фазе S1P1 следующего цикла, поскольку выходной
86 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ буфер на фазе Р2 текущего состояния удерживает значение, имевшееся на фазе Р1 (рис. 2.11). | S4 | S5 | S6 | S1 | S2 | S3 | S4 | S5 I Р1 | Р2 | Р1 | Р2 | Р1 | Р2 J Р1 | Р2 I Р1 | Р2 | Р1 | Р2 | Р1 | Р2 | Р1 | Р2 XTAL MOV PORT, S Выбран- -н ные входы Р0,Р1, Р2, РЗ |«- RST Старые данные Новые данные Строб сдвига последовательного порта I «— Данные, полученные по входу Rx по входу RxD Данные, полученные Рис. 2.11. Временные параметры обновления данных в портах Если при такой операции на линии портов Р1, 2 или 3 имеет место переход «О» - «1», то в такте S1 включается элемент "pull-up", обеспечи- вающий ток, приблизительно в сто раз превышающий обычный рабочий ток. Это ускоряет перезарядку емкостей нагрузки и сокращает время пере- ключения. Операции типа «чтение-модификация-запись*. При обращении к портам РО-РЗ одни команды читают состояние регистра порта (или от- дельной защелки), а другие читают значение сигнала на выводе. Команды, читающие состояние регистра, затем выполняют некоторую операцию, ре- зультат которой вновь записывается в регистр. Они называются команда- ми типа «чтение-модификация-запись». Если приемником является порт или бит порта, следующие команды обращаются к регистру (защелке) порта: ANL <port>, <sourse> ORL <port>, <sourse> XRL <port>, <sourse> JBC <port.bit>, <addr> CPL <port.bit> INC <port> DEC <port> DJNZ <port>, -<addr> CLR <port.bit> SETB <port.bit> MOV <port.bit>, <sourse>
ГЛАВА 2. АРХИТЕКТУРА MCS-51 87 Эти команды дают возможность изнутри правильно прочитать значе- ние порта, когда он высоким значением открывает транзисторный вентиль и на линии потенциал падает до логического «О». 2.8. Таймеры/счетчики В исходной архитектуре MCS-51 два 16-разрядных таймера/счетчика, Таймер 0 и Таймер 1. Каждый из них независимо может быть запрограм- мирован на работу в качестве либо таймера (отсчет времени через подсчет внутренних импульсов синхронизации), либо счетчика (подсчет событий на внешнем входе). В обоих случаях переход через заранее установленный рубеж приводит к формированию запроса прерывания. Выбор режима работы каждого из таймеров производится битами С/Тх# (х = 0,1) регистра TMOD. Подсчет событий производится посред- ством инкремента программно доступного регистра данных, который со- стоит из регистра младшего байта TLx и регистра старшего байта ТНх. При работе в режиме таймера (С/Тх# = 0) регистр TLx наращивается в каждом машинном цикле и частота счета равна Fosc/12. В режиме счетчика (С/Тх# = 1) регистр TLx наращивается при пере- ходе сигнала на входе Тх из «1» в «0». Входы опрашиваются во время фазы S5P2 каждого машинного цикла. При обнаружении высокого уровня сйгнала в одном цикле и низкого уровня в следующем цикле счетчик ин- крементируется. Новое значение в регистре появляется во время фазы S3P1 цикла, следующего за тем, в котором был обнаружен переход. По- скольку на распознавание перехода уходит два машинных цикла, макси- мальная частота счета составляет Fosc/24. Ограничений на скважность входного сигнала нет, но для уверенной фиксации перепада сигнал должен удерживаться в каждом значении по крайней мере один машинный цикл. Счетчики/таймеры обслуживаются регистром режима TMOD и реги- стром управления TCON. TMOD | GATE1 | C/T1# | М1.1 | М1.0 | GATEO | C/T0# | М0.1 | МО.О | Имя бита Номер бита Функция GATE1 TM0D.7 Бит управления Таймером 1. При GATE1=1 Таймер 1 работает всегда при TR1=1. При GATE1 =0 для работы необходимо условие TR1=1 и INT1#=1. СД1# TMOD.6 Бит выбора типа событий для Таймера 1. При СД1#=1 он работает как счетчик, при СД1 #=0 как таймер. М1.1 TMOD.5 Бит 1 определения режима работы Таймера 1. М1.0 TMOD.4 Бит 0 определения режима работы Таймера 1. GATE0 TMOD.3 Бит управления Таймером 0. При GATE0=1 Таймер 0 работает всегда при TR0=1. При GATE0=0 для работы необходимо условие TR0=1 и INT0#=1.
88 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ ОДО# TMOD.2 Бит выбора типа событий для Таймера 0. При СД0#=1 он работает как счетчик, при СД0#=0 как таймер. М1.0 TMOD.1 Бит 1 определения режима работы Таймера 0. мо.о TMOD.O Бит 0 определения режима работы Таймера 0. Биты Ml и МО следующим образом определяют режимы работы тай- меров/ счетчиков: М1 МО Режим работы 0 0 Режим 0. ТНх как 8-разрядный таймер/счетчик. TLx как 5-разрядный п редделитель 0 1 Режим 1. 16-разрядный таймер/счетчик. ТНх и TLx включены последовательно 1 0 Режим 2. 8-разрядный таймер/счетчик TLx с автоперезагрузкой значением из ТНх 1 1 Режим 3. TLO как 8-разрядный таймер/счетчик, управляемый битами управления Таймера 0. ТНО как 8-разрядный таймер/счетчик, управляемый битами управления Таймера 1. Таймер 1 не работает. TCON I TF1 I TR1 I TF0 I TR0 I IE1 I IT1 I IE0 I IT0 I Имя бита Номер бита Функция TF1 TCON.7 Флаг переполнения Таймера 1. Устанавливается при переходе счетно- го регистра таймера из состояния FFH в состояние ООН. Очищается при передаче управления на процедуру обработки прерывания. TR1 TCON.6 Бит запуска Таймера 1. При TR1=1 счет разрешен. TFO TCON.5 Флаг переполнения Таймера 0. Устанавливается при переходе счетно- го регистра таймера из состояния FFH в состояние ООН. Очищается при передаче управления на процедуру обработки прерывания. TR0 TCON.4 Бит запуска Таймера 0. При TR0=1 счет разрешен. |Е1 TCON.3 Флаг запроса прерывания по вход INT1#. IT1 TCON.2 Бит селектора типа активного сигнала на входе INT1 #. При 1Т1=1 активным является переход ”1" - "0”, при 1Т1=0 активным является низкий уровень сигнала. IE0 TCON.1 Флаг запроса прерывания по вход INTO#. IT0 TCON.O Бит селектора типа активного сигнала на входе INTO#. При 1Т0=1 активным является переход “1” - "0", при 1Т0=0 активным является низкий уровень сигнала. Выбор типа подсчитываемых событий для Таймера 0 и Таймера 1, т.е. назначение им функции таймера или счетчика, определяется значением бита управления С/Тх# регистра TMOD. Таймеры способны работать в трех режимах, выбор режима для каждого таймера производится комби- нацией битов Mix, МОх того же регистра. Счет разрешается битом TRx, если бит GATEx - 0. Когда счетное значение переходит из состояния все «1» в состояние все «0», устанавли- вается флаг запроса прерывания TFx. Установка бита GATEx = 1 дает возможность управлять таймером от входа INTx# и измерять таким обра-
ГЛАВА 2. АРХИТЕКТУРА MCS-51 89 зом ширину импульсов. Установка битов запуска не очищает счетные ре- гистры. Режим 0. В этом режиме имеет место 13-разрядный счетный регистр, в котором регистр ТНх работает как 8-разрядный счетчик, а регистр TLx используется как 5-битный предделитель. Режим 1. Этот режим аналогичен режиму 0, но используются все 16 разрядов регистров ТНх и TLx. Режим 2. В этом режиме регистр TLx работает 8-разрядный счетный регистр. После переполнения он автоматически перезагружается значением из регистра ТНх, который при этом своего предварительно запрограмми- рованного значения не теряет. Режим 3. Таймер 1 в этом режиме блокирован, как если бы бит TR1 был сброшен. Таймер 0 в режиме 3 работает как два независимых счетных регистра, причем регистр TL0 управляется битами управления Таймера 0, а регистр ТНО управляется битами управления Таймера 1. 2.9. Последовательный порт Последовательный порт микроконтроллеров MCS-51 является дуп- лексным и обеспечивает работу в одном синхронном режиме (режим 0) и трех асинхронных режимах (режимы 1, 2, 3). Поддерживается также по- следовательный обмен в многопроцессорных системах. При синхронном приеме синхросигнал выдается по линии TxD, а дан- ные принимаются или передаются по линии RxD. При асинхронном обме- не блрк последовательного порта передает данные по линии TxD, а при- нимает по линии RxD. Прием и передача могут осуществляться одновре- менно, поскольку регистр данных SBUF состоит из двух частей. Чтобы передать данные необходимо произвести запись в регистр SBUF, а для приема информации необходимо прочитать содержимое регистра SBUF. Приемник буферизирован, т.е. возможен прием следующего байта, когда предыдущий еще находится в регистре SBUF. Однако, если подпрограмма обслуживания не успела прочесть байт данных из регистра SBUF к момен- ту завершения приема следующего байта, то этот следующий принятый байт затрет предыдущий. Прием и передача обслуживаются битами преры- вания RI и TI, которые формируют общий запрос прерывания. Управляется последовательный порт с помощью регистра SCON. SCON I SMO I SM1 I SM2 I REN I TB8 I RB8 I TI I rT“
90 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ логики Имя бита Номер бита Функция SM0 SCON.7 Бит 0 определения режима работы последовательного порта. SM1 SCON.6 Бит 1 определения режима работы последовательного порта. SM2 SCON.5 Разрешение обмена в многопроцессорных системах. В режиме 0 должен быть сброшен. В режиме 1 при SM2=1 бит RI не устанавливает- ся, если принятый стоп-бит=0. В режимах 2 и 3 при SM2=1 бит RI не устанавливается, если принятый девятый бит данных RB8=0. REN SCON.4 Разрешение приема. При REN=1 прием разрешен. тве SCON.3 9-й бит данных, который будет передаваться в режимах 2 и 3. Значение устанавливается программно по усмотрению разработчика. RB8 SCON.2 В режиме 0 не используется. В режиме 1 при SM2=0 в него заносится принятый стоп-бит. В режимах 2 и 3 в него заносится 9-й принятый бит данных. TI SCON.1 Флаг запроса прерывания передатчика. Должен быть сброшен программно. RI SCON.O Флаг запроса прерывания приемника. Должен быть сброшен программно. Биты SM0 и SM1 следующим образом определяют режимы работы по- следовательного порта: SM0 SM1 Скорость передачи Режим работы 0 0 Fosc/12 Режим 0. Сдвиговый регистр. 0 1 переменная Режим 1. Асинхронный приемо-передатчик, 8 бит данных в кадре. 1 0 Foso/64 или Fosc/32 Режим 2. Асинхронный приемо-передатчик, 9 бит данных в кадре. 1 1 переменная Режим 3. Асинхронный приемо-передатчик, 9 бит данных в кадре. Кроме битов регистра SCON последовательный порт управляется так- же битом SMOD регистра PCON. В основном регистр PCON управляет режимами энергопотребления, назначение его битов описано в разделе 2.11 «Микроконтроллеры типа 8ХС52». Бит SMOD этого регистра управляет опцией удвоения скорости обмена. При SMOD = 1 скорость обмена дан- ными через последовательный порт в режимах 1, 2 и 3 удваивается. Синхронный обмен (режим 0). В этом режиме по линии TxD выдает- ся восемь синхроимпульсов, а по линии RxD принимается или передается байт данных. Передача и прием данных осуществляются начиная с млад- шего бита, сдвиг происходит в S6P2 каждого машинного цикла (рис. 2.12). Таким образом последовательный обмен производится с фик- сированной частотой Fosc/12. Это максимально возможная скорость об- мена через последовательный порт микроконтроллера. Передача информации заключается в реализации следующих дейст- вий: • запись в регистр SCON байта управления, очищающего биты SM0, SMI, REN; • запись байта данных в регистр SBUF.
ГЛАВА 2. АРХИТЕКТУРА MCS-51 91 | Передача-] |si ... S6 |S1 ... S6 |si ... S6 |si ... S6 |S1 ... S6 |si ... S6 |S1 ... S6 |si ... S6 | RxD _____________________________________________________________________________ (Вых. данные) | DO | DI | D2 | D3 | D4 | D5 | D6 | D7 | | Прием ~| [S1 ... S6 |S1 ... S6 |sl ... S6 |S1 ... S6 |sl ... S6 |S1 ... S6 |S1 ... S6 |S1 ... S6 [ Рис. 2.12. Работа последовательного порта в режиме О Передача начинается в следующем (после записи в регистр SBUF) машинном цикле с выдвижения бита DO на линию RxD в фазе S6P2. В S3P1 следующего цикла на линии TxD появляется «О» первого импульса синхронизации. Выдвижение битов данных продолжается в каждом цикле до девятого включительно, когда на линии RxD появляется старший бит D7. В начале десятого цикла линия RxD переводится в высокоуровневое состояние и устанавливается флаг RI, что свидетельствует об окончании передачи. Прием информации инициируется записью в регистр SCON байта управления, очищающего биты SMO, SMI, RI и устанавливающего бит REN. Во втором цикле после этой операции записи в фазе S3P1 на линии TxD появляется «О» первого импульса синхронизации, а на фазе S5P2 выполняется ввод младшего бита данных DO с линии RxD в сдвиговый регистр. Ввод повторяется в последующих циклах и после восьми сдвигов в регистр вводится старший бит D7, устанавливается флаг TL После этого подпрограмма обслуживания может прочесть байт данных из SBUF. Асинхронный обмен (режимы 1, 2, 3). При асинхронном обмене данные передаются по линии TxD, а принимаются по линии RxD. В режиме 1 кадр данных состоит из 10 бит (рис. 2.13): старт-бит, во- семь битов данных, стоп-бит. При приеме в разряд RB8 регистра SCON
92 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ записывается стоп-бит. Скорость обмена определяется переполнением тай- мера 1. В режимах 2 и 3 кадр данных состоит из 11 бит (рис. 2.14): старт-бит, восемь битов данных, программируемый бит, стоп-бит. При приеме под- программа обслуживания может прочитать девятый бит из разряда RB8 регистра SCON. При передаче девятый бит записывается в ТВ8 регистра SCON. Пользователь может использовать девятый бит по своему усмотре- нию (часто это бит контроля). Скорость обмена в режиме 2 равна 1/32 (SMOD = 1) или 1/64 (SMOD = 0) частоты синхросигнала. Скорость передачи в режиме 3 опре- деляется переполнением таймера 1. SMOD-1 | Передача-] синхр. тх пппппп пп ппппппп п (внутренний) сл™г --------------------------п____п____п____п____п____п____п_____п___п_______________ (внутренний) TxD | д | DO | D1 | D2 | РЗ | D4 | D5 | D6 | D7 | д Старт-бит I I Стоп-бит TI | (внутренний) [Прием [ . Сброс Rx синхр. rx _п_пппппппппппппп (внутренний) RxD | а | DO | DI | D2 | РЗ | D4 | D5 | D6 | D7 | д Старт-бит I I Стоп-бит Сдвиг ___ПППППППППП_________________ (внутренний) | RI (внутренний) Рис. 2.13. Работа последовательного порта в режиме 1 Передача информации заключается в реализации следующих дейст- вий:
ГЛАВА 2. АРХИТЕКТУРА MCS-51 93 запись в регистр SCON байта управления, определяющего биты SMO, SM1 (выбор режима) и очищающего бит REN. Для режимов 2 и 3 следует записать значение девятого бита данных в ТВ8; запись байта данных в регистр SBUF. SMOD-1 | Передача-] Синхр. Тх ПППППППППППППППП (внутренний) сла1г ---------п_п_п__л_п_л_п__п__п______ (внутренний) TxD _____ | । | DO | D1 | D2 | РЗ | D4 | D5 | D6 | D7 |ТВ8 ( « Старт-бит I Т стоп-бит Т1 _______________________________I (внутренний) I Прием I . Сброс Rx синхр. rx л___пппп п_п ппппппп п (внутренний) RxD | а | DO | D1 | D2 | РЗ | D4 | D5 | D6 | D7 |ПВ8( t Старт-бит Т Т Стоп-бит Сдвиг ________ПППППППППП_________________________ (внутренний) Rl _______________________________ I (внутренний) Рис. 2.14. Работа последовательного порта в режимах 2 и 3 Для инициализации приема следует установить бит REN регистра SCON. Прием данных начинается после идентификации перехода «1» - «О» на линии RxD. При синхронизации последовательного порта от Таймера 1, работаю- щего в режиме автоперезагрузки, скорость обмена определяется по форму- ле: Скорость = (2SMOn*Fosc)/(32* 12*[256 - (TH)]), где (TH) - содержимое регистра ТН1 в десятичном представлении.
94 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Обмен в многопроцессорных системах. Последовательный порт мик- роконтроллеров MCS-51 способен поддерживать с использованием Режи- мов 2 и 3 обмен в многопроцессорных системах. При этом передающий микроконтроллер играет роль ведущего, а принимающие микроконтролле- ры - роль ведомых. Механизм такой передачи аппаратно поддерживается битом SM2 регистра SCON. Ведущий микроконтроллер посылает вначале посылки кадр, содержащий адрес одного из ведомых микроконтроллеров. Адрес отличается от данных тем, что его девятый бит данных установлен в 1, в то время время как у кадра данных девятый бит равен 0. При SM2 = 1 кадр адреса вызывает прерывание, а кадр данных нет. Процедуры прерываний всех ведомых анализируют принятый адрес, при идентифика- ции своего адреса микроконтроллер сбрасывает бит SM2 и читает после- дующие данные. Остальные ведомые оставляют бит SM2 установленным и продолжают выполнять текущую программу. 2.10. Режимы пониженного энергопотребления У микроконтроллеров MCS-51, выполненных по CHMOS технологии, существует два режима пониженного энергопотребления. Управление эти- ми режимами осуществляется при помощи регистра PCON. PCON | SMOD I SMODO | | - I GF1 I GFO I PD I IDL ] Имя бита Номер бита Функция SMOD PCON.7 Бит управления скоростью обмена последовательного порта. При SMOD = 1 скорость обмена в режимах 1,2,3 удваивается. SMODO PCON.6 Бит выбора значения SCON.7 (начиная с 8ХС52/54/58). При SMODO = 0 бит SCON.7 представляет флаг SM0, при SMODO =1 бит SCON.7 представляет флаг FE . — PCON.5 Зарезервирован. — PC0N.4 Зарезервирован. GF1 PCON.3 Флаг общего назначения. GF0 PCON.2 Флаг общего назначения. PD PCON.1 Бит управления режимом микропотребления. При PD = 1 этот режим включен. IDL PCON.O Бит управления режимом холостого хода. При IDL = 1 этот режим включен. Если установлены оба бита, PD и IDL, больший вес имеет бит PD и микроконтроллер переходит в режим микропотребления. Режим холостого хода (Idle). В этом режиме центральный процессор отключается, система прерываний, счетчики/таймеры и другие блоки вво- да/ вывода продолжают функционировать. Счетчик команд, регистры и внутреннее ОЗУ сохраняют свои значения. Последней выполненяемой ко-
ГЛАВА 2. АРХИТЕКТУРА MCS-51 95 мандой перед приостановкой процессора является команда, устанавли- вающая бит IDL. Потребляемая мощность в режиме холостого хода со- ставляет около 15% от номинальной для микроконтроллеров типа 8ХС51 и около 30% для микроконтроллеров типа 8XC51GB. Разница объясняется большим количеством блоков ввода/вывода у старших моделей. Одним из двух возможных способов выхода из режима холостого хода является формирование любого разрешенного запроса прерывания. При- нятое на обслуживание прерывание сбрасывает бит IDL регистра PCON. После команды RETI процедуры обслуживания возобновляется выполне- ние основной программы. Флаги GFO, GF1 регистра PCON могут исполь- зоваться процедурой прерывания для определения того, выполняется она в режиме холостого хода или в обычном режиме. Для этого, например, ко- манда, устанавливающая флаг IDL, может установить определенную ком- бинацию в битах GFO, GF1. В процедуре прерывания наличие этой ком- бинации должно проверяться. Другим способом выхода из состояния холостого хода является подача активного сигнала на вход RESET. Длительность этого сигнала должна быть не менее 24 периодов частоты синхронизации. Режим микропотребления (Power down). Команда, в которой уста- навливается бит PD является последней перед переходом в режим микро- потребления. В этом режиме приостанавливается выполнение всех функ- ций микроконтроллера, поскольку прекращает работать синхрогенератор. Состояние внутреннего ОЗУ данных сохраняется, содержимое регистров специальных функций теряется. Выход из состояния микропотребления может быть осуществлен толь- ко подачей активного сигнала на вход RESET. Длительность сигнала должна быть не меньше 10 мс. 2.11. Микроконтроллеры типа 8хС52 Микроконтроллеры типа 8хС52 (80С52, 87С52, 80С32) реализуют мо- дифицированную архитектуру MCS-51, в которой исходные принципы развиты с тем, чтобы оперировать ресурсами большего объема. Они изго- тавливаются только с использованием кМОП технологии, отличаются от микроконтроллеров типа 8051 наличием внутренней памяти программ объ- емом 8 Кбайт, внутреннего ОЗУ данных размером 256 байт и трех счетчи- ков/таймеров. Вывод Р1.0 получил альтернативную функцию Т2 (счет- ный вход Таймера 2), а вывод Р1.1 альтернативную функцию Т2ЕХ (вход управления фиксацией/перезагрузкой значения Таймера 2). Последова- тельный порт этих микроконтроллеров может тактироваться от Таймера 2, он получил функции определения ошибки кадра и автоматического распо- знавания адреса. В систему прерываний введен второй регистр приорите-
96 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ тов IPH, работающий совместно с регистром IP. Кроме того, появился от- ладочный режим ONCE (on-circuit emulation). Внутренняя память программ. Микроконтроллеры 80С52, 87С52, 89С52 имеют внутреннюю память программ размером 8 Кбайт (рис. 2.15). В первом случае это ПЗУ, программируемое при помощи маски на заводе- изготовителе. В остальных случаях это память, программируемая пользо- вателем (ОТР или перезаписываемая flash). Память программ FF: 80: 7F: 00: Старшие 128 ячеек ОЗУ (косвен- ная адресация) Младшие 128 ячеек ОЗУ (прямая адресация) Регистры специальных функций (SFR) Внутренняя память данных FFFF: 0000: Внешняя память данных Рис. 2.15. Организация памяти микроконтроллеров типа 8X52 Внутренняя память программ имеет защиту от чтения информации. В микроконтроллерах разных фирм и модификаций это могут быть от одно- го до трех битов секретности и кодировочная таблица. Внутренняя память данных и регистры специальных функций. Уве- личение размера внутренней памяти данных привело к наложению стар- ших 128 байт ОЗУ данных и пространства регистров специальных функ- ций (рис. 2.15). Выбор той или иной области при обращении осуществля- ется аппаратурой микроконтроллера на основе используемого метода адре- сации. Обращение к старшим 128 байтам ОЗУ производится с использова- нием косвенно-регистровой адресации, а к регистрам специальных функ- ций с использованием прямой адресации. К набору регистров специальных функций добавлены регистры дан- ных, перезагрузки и управления Таймера 2, а также регистр приоритетов прерываний IPH. Область регистров специальных функций микрокон- троллеров 8хС52 можно представить так, как изображено на рис. 2.16.
ГЛАВА 2. АРХИТЕКТУРА MCS-51 97 F8 FO Е8 ЕО D8 DO С8 СО В8 ВО А8 АО 98 90 88 80 В 00000000 АСС 00000000 PSW 00000000 IP хООООООО РЗ 11111111 IE 00000000 Р2 11111111 SCON 00000000 SBUF хххххххх Р1 11111111 TCON 00000000 TMOD 00000000 TLO 00000000 TL1 00000000 THO 00000000 TH1 00000000 Р0 11111111 SP 00000111 DPL 00000000 DPH 00000000 PCON 00x0000 FF F7 EF Е7 DF D7 CF С7 BF В7 AF А7 9F 97 8F 87 Рис. 2.16. Регистры специальных функций микроконтроллеров 8хС52 Вновь добавленные регистры выделены, их функции рассмотрены да- лее. Алгоритм формирования сигнала ALE у этих микроконтроллеров имеет небольшое отличие. Выдача этого сигнала на внешний вывод может быть запрещена с помощью установки младшего бита регистра с адресом 8ЕН. В результате на этом выводе удерживается «1», за исключением цик- лов обращения к внешней памяти при помощи команд MOVX и MOVC. Таймер 2. Представляет собой 16-разрядный таймер/счетчик, кото- рый способен работать в трех режимах: • режиме захвата (фиксации) текущего счетного значения; • режиме прямого и обратного счета с автоперезагрузкой исходно- го значения; • режиме задающего генератора для последовательного порта. Режимы работы определяются следующими комбинациями битов управления регистра T2CON:
98 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ RCLK+TCLK CP/RL2# TR2 Режим 0 0 1 16-разрядный таймер/счетчик с автоперезагрузкой 0 1 1 16-разрядный таймер/счетчик с захватом текущего значения 1 X 1 Задающий генератор для последовательного порта Регистр данных Таймера 2 состоит из регистров спецфункций ТН2 (старший байт) и TL2 (младший байт). Данные для автоперезагрузки хра- нятся в регистрах RCAP2H (старший) и RCAP2L (младший), а регистра- ми управления являются T2CON и T2MOD. Выбор типа фиксируемых Таймером 2 событий определяется битом C/T2# регистра T2CON. При C/T2# = 1 он работает как счетчик, а при C/T2# = 0 как таймер. В обоих случаях битом CP/RL2# может быть ус- тановлен режим захвата счетного значения (CP/RL2# = 1), либо режим счета с автоперезагрузкой (CP/RL2# = 0). Захват значения из регистров данных ТН2, TL2 и перезагрузка этих регистров исходным значением производится с использованием регистров RLAP2H, RLAP2L. T2CON I TF2 I EXF2 | RCLK | TCLKO | EXEN2 | TR2 | C/T2# | CP/RL2# | Имя бита Номер бита Функция TF2 T2CON.7 Флаг переполнения Таймера 2. Устанавливается при переходе счетного регистра таймера из состояния FFH в состояние ООН. Должен очищаться программно. TF2 не устанавливается, если RCLK=1 или TCLK=1. EXF2 T2CON.6 Флаг внешнего события Таймера 2. Устанавливается, по перепаду на входе Т2ЕХ, если EXEN2=1. Является запросом прерывания от Таймера 2. RCLK T2CON.5 Бит выбора источника синхрочастоты для приемника последовательного порта в его режимах 1 и 3. При RCLK=1 источником является Таймер 2, при RCLK=0 источником является Таймер 1. TCLK T2CON.4 Бит выбора источника синхрочастоты для передатчика последовательного порта в его режимах 1 и 3. При TCLK=1 источником является Таймер 2, при TCLK=0 источником является Таймер 1. EXEN2 T2CON.3 Бит разрешения внешнего события Таймера 2. При EXEN 2=1 разрешена установка флага EXF2. TR2 TCON.2 Бит запуска/останова Таймера 2. При TR2=1 таймер запускается. C/T2# T2CON.1 Бит выбора типа событий для Таймера 2. При С/Т2#=1 он работает как счетчик, при С/Т2#=0 как таймер. CP/RL2# TCON.O Бит выбора режима Таймера 2. При CP/RL2#=1 по пере- паду на входе Т2ЕХ (если EXEN2=1) он переходит в режим захвата. При CP/RL2#=0 по перепаду на входе Т2ЕХ (если EXEN2=1) или по переполнению Тайме- ра 2 он переходит в режим автоперезагрузки. Если RCLK=1 или TCLK=1, этот бит игнорируется, а Таймер 2 работает в режиме перезагрузки по переполнению.
ГЛАВА 2. АРХИТЕКТУРА MCS-51 99 T2MOD | | | | | | | T20E | DCEN | Имя бита Номер бита Функция Т20Е DCEN T2MOD.1 T2MOD.O Бит разрешения выдачи сигнала программируемой частоты от Таймера 2 на внешний вывод Р1.0. Бит разрешения счета Таймера 2 в режиме автоперезагрузки. При Т20Е=1 счет разрешен в прямом или обратном направлении, в за- висимости от значения сигнала на входе Т2ЕХ. При Т20Е = 0 (значе- ние после сброса) счет разрешен в прямом направлении. Бит DCEN этого регистра после сброса очищен. При этом Таймер 2 в режиме автоперезагрузки считает в прямом направлении. Если бит DCEN установлен, направление счета определяется значением внешнего сигнала на входе Т2ЕХ. Бит EXF2 при этом не является флагом прерывания и может служить в качестве индикатора переполнения при счете в прямом и обратном направлениях. При Т2ЕХ = 1 счет идет в прямом направлении, при переполнении устанавливается флаг прерывания TF2 и осуществляет- ся перезагрузка счетных регистров ТН2, TL2 заранее запрограммирован- ными значениями из регистров RCAP2H, RCAP2L. При Т2ЕХ = 0 счет идет в обратном направлении, при достижении значения, занесенного в регистры RCAP2H, RCAP2L, устанавливается флаг прерывания TF2 и осуществляется перезагрузка счетных регистров ТН2, TL2 16-разрядным значением 0FFFFH. Таймер 2 имеет два флага запросов прерывания, TF2 и EXF2. Оба за- проса обслуживаются с использованием одного вектора 2ВН. Идентифи- кацию запроса производит процедура обслуживания прерывания. Флаг TF2 устанавливается при переполнении счетного регистра Таймера 2 (RCLK = TCLK = 0), а флаг EXF2 устанавливается по перепаду «1» - «0» на входе Т2ЕХ, если EXEN2 = 1. В режиме задающего генератора (RCLK = 1 или TCLK = 1) приемник или передатчик последовательного порта тактируются синхроимпульсами, формируемыми при переполнении счетного 16-разрядного регистра Тайме- ра 2. При C/T2# = 0 скорость работы последовательного порта определя- ется формулой: Скорость = FOSc/[32*(65536 - (RCAP2H, RCAP2L))]. Значение регистров RCAP2H,RCAP2L для нужной скорости обмена можно получить по формуле: RCAP2H, RCAP2L = 65536 - Fosc/(32 - Скорость). Fqut = Fosc/[4*(65536 - - (RCAP2H, RCAP2L))].
100 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Последовательный порт. У микроконтроллеров 8хС52 последователь- ный порт имеет функции определения ошибки кадра и автоматического распознавания адреса. • Определение ошибки кадра. Эта функция реализуется через про- верку уровня сигнала во время интервала времени, когда на линии должен проходить стоп-бит. Проверка выполняется при работе в ре- жимах 1, 2, 3. Если стоп-бит в определенное время не обнаружен, ус- танавливается флаг ошибки кадра FE. Этот флаг делит с битом управления SM0 один и тот же разряд SCON. 7. Бит SMODO (PCON.6) указывает при обращении на бит управления или на флаг ошибки кадра (см. выше формат регистра PCON). Флаг FE может проверяться после каждой операции приема. Сбрасываться этот флаг должен программно, прием правильного кадра не сбрасывает ранее установленного флага FE. • Автоматическое распознавание адреса. При работе нескольких микропроцессоров по одному последовательному каналу ведущий мо- жет обратиться к ведомому по индивидуальному адресу, либо к группе ведомых по широковещательному адресу. Для хранения индивидуального адреса введен регистр спецфункций SADDR (адрес 0А9Н), а для хранения маски - регистр SADEN (адрес 0В9Н). Именно маска дает возможность адресовать в каждый момент одно или несколько устройств. Например: Ведомый 1 SADDR 11116661 SADEN 11111010 Адрес отклика 11110Х0Х Ведомый. 2 SADDR '11110011 SADEN 11111001 Адрес отклика 11110ХХ1 В приведенном примере в адресе первого ведомого замаскирован бит О, в то время как для выбора второго ведомого этот бит должен быть ра- вен 1. Следовательно, для обращения к ведомому! младший бит адреса должен быть равен 0 (например 11110000). Аналогично, бит! = 0 для ве- домого! и замаскирован у ведомого2. Для обращения к ведомому2 бит! адреса должен быть равен 1 (например 11110111). Для обращения к обоим ведомым одновременно могут быть использованы адреса, где битО = 1 и бит! = 0 (широковещательными являются адреса 11110001 и 11110101). Система прерываний. Включает шесть источников запросов - к ис- ходной системе добавлено прерывание от Таймера 2, который имеет два флага (TF2 и Т2ЕХ). Это прерывание с вектором 002ВН. Таблица при- оритетов прерываний при внутреннем поллинге следующая:
ГЛАВА 2. АРХИТЕКТУРА MCS-51 101 Приоритеты прерываний 8052 при поллинге Источник Приоритет внутри уровня Вход INTO# Таймер 0 Вход INT1# Таймер 1 Последовательный порт Таймер 2, флаг TF2 Таймер 2, флагТ2ЕХ Высший Низший Число уровней приоритетов увеличено до трех. Система прерываний 8хС52 обслуживается регистрами IE, IP и IPH: ЕА - ЕТ2 ES ЕТ1 ЕХ1 ЕТО ЕХО - - РТ2 PS РТ1 РХ1 РТО РХО - - РТ2Н PSH РТ1Н РХ1Н РТОН РХОН Имя бита Номер бита Функция ЕА IE.7 Запрещение запросов от всех источников, имеет место при ЕА = 0. - IE.6 Зарезервирован. ЕТ2 IE.5 Запрещение запроса от Таймера 2, имеет место при ЕТ2 = 0. ES IE.4 Запрещение запроса от последовательного порта, имеет место при ES = 0. ЕТ1 IE.3 Запрещение запроса от Таймера 1, имеет место при ЕТ1 = 0. ЕХ1 IE.2 Запрещение запроса по входу INT1#, имеет место при ЕХ1 = 0. ЕТО IE.1 Запрещение запроса от Таймера 0, имеет место при ЕТО = 0. ЕХО 1Е;0 Запрещение запроса по входу INTO#, имеет место при ЕХО = 0. - IP.7 Зарезервирован. IP.6 Зарезервирован. РТ2 IP.5 Определяет приоритет Таймера 2. PS IP.4 Определяет приоритет последовательного порта. РТ1 IP.3 Определяет приоритет Таймера .1. РХ1 IP.2 Определяет приоритет Входа INT1#. РТО IP.1 Определяет приоритет Таймера 0. РХО IP.0 Определяет приоритет входа INTO#. - IPH.7 Зарезервирован. - IPH.6 Зарезервирован. РТ2Н IPH.5 Определяет приоритет Таймера 2, старший бит. PSH IPH.4 Определяет приоритет последовательного порта, старший бит. РТ1Н IPH.3 Определяет приоритет Таймера 1, старший бит. РХ1Н IPH.2 Определяет приоритет входа INT1, старший бит #. РТОН IPH.1 Определяет приоритет Таймера 0, старший бит. РХОН IPH.0 Определяет приоритет входа INTO#, старший бит. Уровень приоритета конкретного источника определяется значением комбинации битов IPH.x и IP.x (х = 0..6) следующим образом:
102 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ IPH.x IP.X Приоритет 0 0 Уровень 0 (низший) 0 1 Уровень 1 1 0 Уровень 2 1 1 Уровень З(высший) Режим ONCE. Отладочный режим ONCE позволяет производить от- ладку и тестирование платы без удаления микроконтроллера (при запаян- ной микросхеме). Для перевода микроконтроллера в этот режим необхо- димо подать на вывод ALE сигнал логического «О» в процессе сброса и инициализации (сигнал PSEN# при этом имеет пассивный уровень «1») и удерживать его до снятия сигнала RESET. В режиме ONCE линии порта РО находятся в третьем состоянии. Ли- нии других портов, а также сигналы ALE и PSEN находятся в состоянии логической «1». Это позволяет внешнему активному устройству управлять магистралью микропроцессорной системы. Выход из режима ONCE производится посредством общего сброса. 2.12. Микроконтроллеры семейства АТ89 фирмы Atmel Микроконтроллеры с архитектурой MCS-51 фирмы Atmel - одно из первых семейств, все представители которого имеют версию с flash- памятью программ. Такой подход обеспечил популярность продукции фирмы Atmel среди разработчиков. Последовавшее снижение стоимости микроконтроллеров и выпуск семейства AVR, все представители которого также имеют flash-память и возможность внутрисистемного программиро- вания, заставили такие фирмы, как Motorola, Philips, Texas Instruments, Microchip активизировать программы выпуска flash-микроконтроллеров. Семейство микроконтроллеров фирмы Atmel с flash-памятью программ и ядром MCS-51 имеет маркировку «89». Это правило поддерживается другими производителями аналогичных микроконтроллеров - Philips, Temic, SST, ISSI, за исключением фирмы Winbond, выпускающей семей- ства W77 и W78. Номенклатура семейства АТ89 приведена в следующей таблице. В последней строке приведены параметры микроконтроллера, выпус- каемого подразделением полупроводников фирмы Temic. Но, так как это подразделение в настоящее время приобретено фирмой Atmel и называется теперь Atmel Wireless and Microcontrollers, то можно включить микрокон- троллер «51RD2» в семейство АТ89.
ГЛАВА 2. АРХИТЕКТУРА MCS-51 103 Микроконтроллеры фирмы Atmel семейства АТ89 Тип Has h RAM Питание Частота, МГц Корпус Комментарии AT89C1051U IK 128 ЗВ, 5В 12, 24 DIP20.SOIC20 lout,low = 20 mA АТ89С2051 2К 128 ЗВ, 5В 12, 24 DIP20.SOIC20, lout,low = 20 mA АТ89С4051 4К 256 ЗВ, 5В 12, 24 DIP20.SOIC20 lout,low = 20 mA АТ89С51 4К 128 5В 24,33 DIP40, PLCC44, TQFP44 AT89LV51 4К 128 ЗВ, 5В 12 DIP40, PLCC44, TQFP44 АТ89С52 8К 256 5В 24,33 DIP40, PLCC44, TQFP44 AT89LV52 8К 256 ЗВ, 5В 12 DIP40, PLCC44, TQFP44 AT89C55WD 20К 256 5В 24,33 DIP40, PLCC44, TQFP44 WD, 2 DPTR AT89LV55 20К 256 ЗВ, 5В 12 PLCC44, TQFP44 AT89S8252 8К 256 5В 24 DIP40, PLCC44, TQFP44 ISP, SPI, WD, 2K EEPROM, 2 DPTR AT89LS8252 8К 256 ЗВ, 5В 12 DIP40, PLCC44, TQFP44 ISP, SPI, 2K EEPROM, 2 DPTR AT89S53 12К 256 5В 24 DIP40, PLCC44, TQFP44 ISP, SPI, 2 DPTR AT89LS53 12К 256 ЗВ, 5В 12 DIP40, PLCC44, TQFP44 ISP, SPI, 2 DPTR AT89S4D12 4К 128 ЗВ 12 SOIC32 128K DataFlash, ISP, SPI AT89C51RC 32К 256 5В 24,33 DIP40, PLCC44, TQFP44 256 bytes XRAM, 2 DPTR T89C51RD2 64К 256 ЗВ, 5В 40 DIP40, PLCC44, VQFP44, VQFP64, PLCC68 ISP, Boot Flash, 1К XRAM, 2K EEPROM, 2 DPTR, PCA В таблице использованы следующие обозначения: Iout,low - нагрузочная способность выходов в состоянии логического «нуля». ISP (In-System Programmability) - возможность программирования в сис- теме. Boot Flash - наличие области flash-памяти для размещения пользователь- ского монитора-загрузчика памяти. XRAM - дополнительная RAM на кристалле, доступная как внешняя па- мять данных с использованием команд MOVX. WD - Watchdog, сторожевой таймер. РСА (Programmable Counter Array) - многорежимный программируемый таймер.
104 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Количество циклов перепрограммирования для микроконтроллеров семейства АТ89 составляет не менее 1000. По маркировке микроконтроллеров семейства АТ89 можно определить ряд параметров кристалла. Буква «С» после имени семейства (АТ89С) указывает, что кристалл выполнен по CMOS технологии и параметры соответствуют аналогичным микросхемам других фирм (Intel 80С51, Philips 87С52 и т.д.). Обозначение AT89LV отличает версии кристаллов с пониженным на- пряжением питания (2.7В). Маркировку AT89S имеют микроконтроллеры, имеющие режим внут- рисистемного программирования (ISP) через интерфейс SPI. Микроконтроллеры AT89LS аналогичны AT89S, но имеют пониженное напряжение питания (2.7В). Существует два основных ядра микроконтроллеров семейств MCS-51: • С51, «родоначальник», стандартное ядро, включающее 128 байт RAM, 2 таймера-счетчика; • С52, модифицированное ядро, имеет 256 байт RAM и 3 таймера- счетчика. Маркировка С55 (или С54, С58 у других фирм) указывает на увели- ченный объем памяти программ - от 16 до 32К. Микроконтроллеры AT89C51RC и T89C51RD2 являются представите- лями серии «C51Rx», введенной фирмами Intel и Philips. Отличительные особенности этой серии — наличие дополнительной памяти данных на кри- сталле и второго указателя данных DPTR. Рассмотрим подробнее особенности микроконтроллеров семейства АТ89. 2.12.1. Программирование flash-памяти программ В микроконтроллерах АТ89С предусмотрен параллельный режим про- граммирования flash-памяти. Для записи информации требуется подать напряжение программирования +12В, а для управления используются поч- ти все линии портов. Поэтому процесс программирования flash-памяти вы- полняется на специализированных программаторах ПЗУ. В микроконтроллерах AT89S кроме параллельного режима програм- мирования имеется последовательный режим, через интерфейс SPI. При использовании последовательного режима не требуется внешнего напряже- ния программирования +12В, так как на кристалле предусмотрен преобра- зователь напряжения. Для загрузки flash-памяти необходимо управлять четырьмя линиями - RESET, SCK (Pl.7), MOSI (Pl.5), MISO (Pl.6). Если при разработке проекта на базе микроконтроллеров AT89Sxx преду- смотреть возможность подключения к перечисленным линиям внешнего программирующего устройства, то легко обеспечивается возможность об-
ГЛАВА 2. АРХИТЕКТУРА MCS-51 105 новления встроенного программного обеспечения (upgrade). Этот меха- низм называется внутрисистемным программированием - ISP (in-system programmability). Простой способ реализации цепей ISP в схеме показан на рис. 2.17. Рис. 2.17. Способ реализации цепей ISP Программирующее устройство подключается непосредственно к мик- роконтроллеру через соединитель ХР1. Для устранения конфликтов меж- ду сигналами программирования и периферийными устройствами, под- ключенными к тем же портам, установлены резисторы R1-R4. Алгоритм внутрисистемного программирования описан в параграфе 2.12.7. Так как в интерфейсе типа SPI импульсы синхронизации формирует ведущее устройство (в нашем случае это внешнее программирующее уст- ройство), а частота импульсов не ограничена снизу, то для программиро- вания можно использовать, например, порт LPT компьютера. При этом временная диаграмма обмена формируется программно. В лаборатории «Микропроцессорные системы» МИФИ для этой цели используется ка- бель ByteBlaster, специфицированный фирмой Altera для внутрисистемной загрузки конфигурации ПЛИС. 2.12.2. Микроконтроллеры AT89S Отличительными особенностями этой серии являются: • EEPROM память данных (только у AT89S8252);
106 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ логики • последовательный интерфейс SPI; • сторожевой таймер (Watchdog); • два регистра-указателя данных DPTR. Карта адресного пространства регистров специальных функций микро- контроллеров AT89S приведена на рис. 2.18. F8 FF F0 В 00000000 F7 Е8 EF ЕО АСС 00000000 E7 D8 DF DO PSW 00000000 SPCR ев D7 С8 T2CON 00000000 T2MOD 00000000 RCAP2L 00000000 RCAP2H 00000000 TL2 00000000 TH2 00000000 CF СО C7 В8 IP ХООООООО BF ВО РЗ 11111111 B7 АВ IE 00000000 айОёёйЁ AF АО Р2 1111111 A7 98 SCON 00000000 SBUF юоооооос 9F 90 Р1 11111111 eta 97 88 TCON 00000000 TMOD 00000000 TL0 00000000 TL1 00000000 тно 00000000 ТН1 00000000 8F 80 Р0 11111111 SP 00000111 DPL 00000000 DPH 00000000 W5R PCON 00x0000 87 Рис. 2.18. Регистры специальных функций микроконтроллеров AT89Sxx Управление доступом к EEPROM, сторожевым таймером и переклю- чение указателей DPTR производится через регистр WMCON (адрес 096h). Биты этого регистра не входят в битовое адресное пространство микроконтроллера. Для установки битов можно использовать инструкцию ORL WMCON, #OrMask. Если имя WMCON не поддерживается используемым компилятором, то можно объявить его как константу: WMCON .equ 096h, где OrMask - это константа, содержащая «1» в тех битах, которые нужно установить.
ГЛАВА 2. АРХИТЕКТУРА MCS-51 107 Аналогично, для сброса битов можно использовать инструкцию ANL WMCON, #AndMask, где AndMask — это константа, содержащая «О» в тех битах, которые нужно сбросить. WMCON | PS21 PS1 | PSO | EEMWE | EEMEN | DPS | WDTRST | WDTEN ] Имя бита Номер бита Функция PS2 WMCON.7 Установка периода срабатывания сторожевого таймера в диапазо- PS1 PS0 WMCON.6 WMCON.5 не от 16 мс (по умолчанию) до 2048 мс. EEMWE WMC0N.4 Бит разрешения записи в EEPROM. Перед записью нужно устано- вить в “1". По окончании записи в EEPROM нужно установить в “0". EEMEN WMCON.3 Бит разрешения доступа к EEPROM. Когда бит установлен в “1” инструкции MOVX, использующие DPTR, обеспечивают доступ к EEPROM. Если бит равен “О”, то производится обращение к внеш- ней памяти данных. DPS WMCON.2 Выбор регистра DPTR. При DPS=0 в качестве DPTR используется пара DP0H-.DP0L, а при DPS=1 пара DP1H:DP1L. WDTRST RDY/BSY WMCON. 1 Бит сброса сторожевого таймера и флаг занятости EEPROM. При записи "1" в этот бит генерируется импульс сброса Watchdog и затем бит автоматически сбрасывается в "0". При чтении обраще- ние идет к флагу, отражающему состоние EEPROM: если "0", то процесс записи байта данных не закончен, если "1", то EEPROM готова к записи. WDTEN WMCON.O Бит разрешения сторожевого таймера. При WDTEN = 1 таймер Watchdog запщен и будет генерировать импульс Reset микро- контроллера с периодом, заданным битами PS2 - PS0. В микроконтроллере AT89S53 память EEPROM отсутствует, поэтому биты 4 и 5 зарезервированы, а регистр называется WCON. Память EEPROM. Этот вид энергонезависимой памяти отличается от flash-памяти тем, что допускает перезапись одного байта без стирания ин- формации в остальных. Ячейка EEPROM занимает значительно больше места на кристалле, чем ячейка flash-памяти, поэтому стоимость EEPROM выше. Количество циклов перепрограммирования также выше - не менее 100000. В микроконтроллерах AT89S8252 блок памяти данных EEPROM дос- тупен так же, как внешняя память данных, инструкциями MOVX A,@DPTR и MOVX @E)PTR,A. Для доступа к памяти EEPROM нужно установить бит EEMEN регистра WMCON. Для записи данных в EEPROM нужно дополнительно установить бит EEMWE регистра WMCON. В процессе записи бит RDY/BSY регистра WMCON находится в состоянии «0», по окончании записи этот бит переходит в состояние «1». Кроме того, окончание записи байта можно проверять циклическим чтени-
108 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ ем байта: пока запись не закончена старший бит данных читается в ин- версном виде. Пример процедуры записи байта в EEPROM: Loop: mov A,#data mov DPTR,#Address orl WMCON,#18h movx ©DPTR,A mov A.WMCON jnb ACC.1, Loop anl WMCON,#E7h данные для записи ;адрес в памяти установим биты разрешения EEMEN и EEMWE '.инициируем запись ;цикл ожидания конца записи байта ; читаем содержимое регистра управления проверяем бит RDY/BSY дались закончена, сбросим EEMEN и EEMWE Watchdog — сторожевой таймер. Watchdog приобретает все боль- шую популярность у производителей микроконтроллеров. Он предназна- чен для формирования сброса микроконтроллера на аппаратном уровне, если прикладная программа выполняет неконтролируемые действия, на- пример, «зависла». Время срабатывания Watchdog устанавливается про- граммно в пределах 16. .2048 мс. В течение заданного времени программа должна выполнить процедуру сброса таймера Watchdog. Управление сто- рожевым таймером производится через регистр WMCON. Для запуска Watchdog нужно установить бит WDTEN в «1». Период срабатывания таймера задается битами PS2-PS0: PS2 PS1 PS0 Период 0 0 0 16 мс 0 0 1 32 мс 0 1 0 64 мс 0 1 1 128 мс 1 0 0 256 мс 1 0 1 512 мс 1 1 0 1024 мс 1 1 1 2048 мс Для сброса сторожевого таймера следует записать «1» в бит WDTRST. Так как данный бит регистра WMCON разделяет функции с битом занятости EEPROM, то проверять его для оценки состояния Watch- dog не имеет смысла. Два регистра-указателя данных DPTR. Стандартное ядро MCS-51 имеет один 16-разрядный указатель данных для доступа к полному про- странству памяти программ и данных. При использовании памяти данных объемом более 256 байт это единственный указатель, обеспечивающий дос- туп к памяти. В результате, при обработке сложных структур данных его требуется часто перезагружать и, что еще более неудобно, сохранять те- кущее состояние перед загрузкой. Введение второго 16-разрядного указа- теля облегчает программирование и позволяет ускорить обработку данных. Второй регистр-указатель данных расположен по адресам 84h и 85h. В каждый момент времени доступен только один из двух регистров, поэтому все инструкции, работающие с DPTR, сохраняют свои функции. Бит DPS
ГЛАВА 2. АРХИТЕКТУРА MCS-51 109 регистра WMCON определяет, какой из двух указателей активен в данный момент. Если DPS = 0, то активен DPO, а если DPS = 1, то активен DPI. Таким образом, обеспечивается значительное повышение эффективности программы при работе одновременно с двумя массивами данных. Последовательный интерфейс SPI. Serial Peripheral Interface (SPI) — это синхронный последовательный периферийный интерфейс. В микро- контроллерах AT89S максимальная скорость обмена равна 1,5 Мбит/сек. Для соединения используются 3 линии: • SCK (Р1.7) - Serial ClocK, линия синхронизации; тактовые импульсы задает ведущее (Master) устройство • MOSI (Р1.5) - Master Output Slave Input, линия данных; является выходной у ведущего и входной у ведомого (Slave); • MISO (Pl.6) - Master Input Slave Output, линия данных; является входной у ведущего и выходной у ведомого. • SS (Р1.4) — Slave Select, линия выбора устройства определена для ведомого. Активный («О») уровень подключает устройство к магист- рали SPI. Это позволяет объединять несколько ведомых устройств параллельно. Подробно принцип обмена данными и временные диаграммы интер- фейса SPI приведены в параграфах 3.6 и 4.7. Ниже описаны регистры управления SPI микроконтроллеров AT89S. Регистр управления — SPI Control Register, размещен по адресу 0D5h. SPCR | SPIE | SPEO | DORP | MSTR |СР01 |СРНА |SPRO |SPR1 | Имя бита Номер бита Функция SPIE SPCR.7 Бит разрешения прерываний SPI. Должен быть установлен в «1» совместно с битом ES регистра разрешения прерываний IE. SPE SPCR.6 Бит разрешения SPI. При SPE=1 линии интерфейса подключены к порту Р1 как альтернативные функции порта. DORD SPCR.5 Порядок следования данных. При D0RD=1 первым передается млад- ший бит, при DORD=0 первым передается старший бит. MSTR SPCR.4 Выбор ведущего. При MSTR=1 устройство является ведущим, при MSTR=O - ведомым. CPOL SPCR.3 Выбор полярности синхросигнала. При СР01_=1 линия SCK=1 в пас- сивном состоянии, при СР01_=0 линия SCK=O в пассивном состоянии. СРНА SPCR.2 Выбор фазы синхросигнала. Определяет активный фронт сигнала SCK. SPR1 SPCR.1 Выбор скорости передачи. Биты задают коэффициент деления такто- SPRO SPCR.0 вой частоты микроконтроллера: SPR1 SPRO К 0 0 4 0 1 16 1 0 64 1 1 128
110 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Регистр состояния - SPI Status Register, размещен по адресу OAAh. SPSR | SPIF | WCOL | - ] - Имя бита Номер бита Функция SPIF SPSR.7 Бит запроса прерывания SPI. Процедура обработки прерывания вызы- вается, если установлены биты SPCR.SPIE и IE.ES. Бит очищается авто- матически, если производится чтение SPCR при установленном WCOL, а затем производится обращение к регистру SPDR. WCOL SPSR.6 Бит ошибки записи. Устанавливается, если попытка записи в регистр SPDR производилась в процессе передачи байта данных. Бит очища- ется автоматически, если производится чтение SPCR при установлен- ном бите SPIF, а затем производится обращение к регистру SPDR. - SPSR.5 Зарезервирован - SPSR.4 Зарезервирован - SPSR.3 Зарезервирован - SPSR.2 Зарезервирован - SPSR.1 Зарезервирован - SPSR.0 Зарезервирован Регистр данных - SPDR, размещен по адресу 086h. Запись данных в регистр, если устройство определено как ведущее (MSTR =1), запускает цикл передачи байта. Если устройство определено как ведомое (MSTR = 0), то запись в регистр подготавливает данные для последующего чтения ведущим устройством. 2.12.3. Микроконтроллеры AT89C51RC/55WD Особенностями этих микроконтроллеров являются: • дополнительная память данных - только в AT89C51RC; • сторожевой таймер (Watchdog); • два регистра-указателя данных DPTR. Ниже описаны регистры специальных функций, вновь включенные в данные кристаллы. Вспомогательный регистр AUXR1 размещен по адресу 0A2h. AUXR1 | - | - | - | - | - | - | - | DPS~| Имя бита Номер бита Функция - AUXR1.7 Зарезервирован. - AUXR1.6 Зарезервирован. AUXR1.5 Зарезервирован. AUXR1.4 Зарезервирован. AUXR1.3 Зарезервирован. - AUXR1.2 Зарезервирован. - AUXR1.1 Зарезервирован. DPS AUXR1.0 Выбор регистра DPTR. При DPS=0 в качестве DPTR используется пара DP0H:DP0L, а при DPS=1 пара DP1H:DP1L.
ГЛАВА 2. АРХИТЕКТУРА MCS-51 111 Вспомогательный регистр AUXR размещен по адресу 08Eh. AUXR | - | - | - | WDIDLE | DISRTO | - | EXTRAM | DI SALE] Имя бита Номер бита Функция - AUXR.7 Зарезервирован. - AUXR.6 Зарезервирован. - AUXR.5 Зарезервирован. WDIDLE AUXR.4 Запрещение работы сторожевого таймера в режиме Idle. Если WDIDLE=1, то в режиме Idle сторожевой таймер остановлен. DISRTO AUXR.3 Запрещение формирования сигнала RST. Если DISRTO=0, то при переполнении сторожевого таймера на входе RST формируется импульс сброса, если DISRTO=1, то RST является только входом. - AUXR.2 Зарезервирован. EXTRAM только в 51RC AUXR.1 Разрешение доступа к внешней памяти данных. Если EXTRAM=0, то инструкции MOVX обращаются к дополнительной памяти дан- ных на кристалле, если EXTRAM=1, то обращение идет к внеш- ней памяти данных, как в стандартном 89С51. DISALE AUXR.0 Запрещение выдачи сигнала ALE. Если бит установлен в «1», то ALE выдается только при выполнении инструкций MOVX и MOVC. Сторожевой таймер в микроконтроллерах AT89C51RC и AT89C55WD. Программирование сторожевого таймера в данном микро- контроллере отличается от микроконтроллеров AT89Sxx. Для доступа с сторожевому таймеру введен регистр WDTRST с адресом 0A6h. Это ре- гистр служит только для записи, чтение по данному адресу не имеет смыс- ла. Существует единственный способ обращения к WDTRST. Следует произвести два последовательных цикла записи в WDTRST кодов 01 Eh и OElh. Типовая процедура имеет вид: clr IE запретим прерывания, чтобы обеспечить mov WDTRST,#01 Eh непрерывность двух циклов записи mov WDTRST,#0E1h ;в регистр setb IE Данная последовательность действий обеспечивает сброс сторожевого таймера. Эта же последовательность, выполненная впервые после сброса микроконтроллера, запускает сторожевой таймер. Период срабатывания сторожевого таймера не программируется и ра- вен 16383 машинных цикла микроконтроллера. Чтобы обеспечить нор- мальную работу программы, использующей режим Idle - пассивного ожи- дания асинхронного события - предусмотрена возможность запрещения работы Watchdog в этом режиме, установкой бита WDIDLE в регистре AUXR.
112 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Дополнительная память данных (XRAM) в микроконтроллере AT89C51RC доступна так же, как внешняя память данных, используя ин- струкции MOVX. Для установки режима доступа к XRAM нужно сбро- сить бит EXTRAM в регистре AUXR (состояние после сброса микрокон- троллера). Два регистра-указателя данных DPTR в микроконтроллерах AT89C51RC и AT89C55WD функционируют так же, как в AT89Sxx. Карта адресного пространства регистров специальных функций мик- роконтроллеров AT89C51RC и AT89C55WD приведена на рис. 2.19. F8 FF F0 В 00000000 F7 Е8 EF ЕО АСС 00000000 Е7 D8 DF DO PSW 00000000 D7 С8 T2CON 00000000 T2MOD 00000000 RCAP2L 00000000 RCAP2H 00000000 TL2 оооооооо TH2 оооооооо CF СО С7 В8 IP хООООООО BF ВО РЗ 1111111 В7 А8 IE 00000000 AF АО Р2 AUXR1 ев А7 11111111 rxw.xxxO хххххххх?. 98 SCON 00000000 SBUF хххххххх 9F 90 Р1 11111111 97 88 TCON 00000000 TMOD 00000000 TLO 00000000 TL1 оооооооо тно оооооооо ТН1 оооооооо х>:хСОххЗ 8F 80 Р0 11111111 SP 00000111 DPL 00000000 DPH оооооооо PCON 00x0000 87 Рис. 2.19. Регистры специальных функций микроконтроллеров AT89C51RC, AT89C55WD 2.12.4. Микроконтроллер T89C51RD2 Рассмотрим кратко особенности микроконтроллера T89C51RD2. EEPROM память данных доступна с помощью инструкций MOVX. Запись может производиться блоками от 1 до 64 байт. Начало и конец цикла записи контролируется через управляющий регистр.
ГЛАВА 2. АРХИТЕКТУРА MCS-51 113 Дополнительная память данных также доступна с помощью инструк- ций MOVX. Переключение адресных пространств производится аналогич- но AT89C51RC, адрес и функция управляющего бита совпадают. Сторожевой таймер (Watchdog) управляется так же, как в AT89C51RC, но есть возможность программно установить период срабаты- вания таймера. Размещение регистров-указателей данных DPTR и управление ими такие же, как в AT89C51RC. Многорежимный программируемый таймер РСА аналогичен описан- ному в [ 1 ]. Имеется режим повышенной производительности, в котором машин- ный цикл содержит не 12 тактов, как в стандартном ядре MCS-51, а 6 так- тов. Переключение между режимами производится программно. Режим называется «Х2», на его поддержку указывает цифра 2 в маркировке микроконтроллера. Режим внутрисистемного программирования отличается от соответ- ствующего режима микроконтроллеров AT89Sxx. Программирование про- изводится через интерфейс RS232 при стандартном напряжении питания +3 В или +5 В. Микроконтроллер имеет встроенную программу загрузки памяти. Кроме того имеется возможность программирования собственной памяти программ. Запись производится по секторам, при этом цикл стира- ния сектора выполняется автоматически. Имеется возможность использо- вать пользовательскую программу-загрузчик Flash памяти программ, при этом можно установить новый вектор Reset, отличный от нулевого. 2.12.5. Микроконтроллеры с уменьшенным числом выводов - АТ89С1051/2051/4051 Вариант микроконтроллера с ядром MCS-51 в корпусе с 20 выводами был впервые введен фирмой Atmel. Основные особенности этой серии кри- сталлов: • повышенная нагрузочная способность выходов в состоянии логическо- го нуля; обеспечивается ток до 20мА, что позволяет без дополнитель- ных буферных схем управлять светодиодными индикаторами и реле; • наличие аналогового компаратора. В этой серии микроконтроллеров используется стандартное ядро 8051, отсутствуют только порты РО и Р2. Вид корпуса микроконтроллеров АТ89СхО51 и функции выводов при- ведены на рис. 2.20.
114 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ PDIP/SOIC RST Е 1 20 □ Vcc (RXD) РЗ.О Е 2 19 □ Р1.7 (TXD) Р3.1 Е 3 18 □ Р1.6 XTAL2 Е 4 17 □ Р1.5 XTAL1 Е 5 16 □ Р1.4 (INTO) Р3.2 Е 6 15 □ Р1.3 (INT1) РЗ.З Е 7 14 □ Р1.2 (ТО) Р3.4 Е 8 13 □ Р1.1 (AIN1) (Т1) Р3.5 Е 9 12 □ P1.0(AIN0) GND Е 10 11 □ Р3.7 Рис. 2.20. Корпус и функции выводов микроконтроллеров АТ89СхО51 2.12.6. Алгоритм последовательной загрузки flash-памяти микроконтроллеров AT89Sxx Алгоритм последовательной загрузки flash-памяти программ этих микроконтроллеров состоит из следующей последовательности действий: • подать питание Vcc=2.7 В — 5 В. Обеспечить тактовую частоту Fosc в диапазоне от 3 до 12МГц. Установить RST = 1. Выдержать паузу 10 мс; • послать команду «разрешение программирования» по линиям SCK, MOSI. Частота передачи должна быть меньше, чем Fosc/40; • память программ и данных программируется по одному байту за цикл. Команда, адрес и данные передаются каждый раз в виде 3- байтной посылки. Типовое время записи байта равно 2.5 мс при Vcc=5B. Запись производится автоматически; • ячейку памяти программ или данных можно прочитать для проверки завершения цикла записи. Допускается циклический опрос данных после посылки команды записи; • после окончания записи перевод RST в состояние «0» запускает про- грамму на выполнение; При формировании временной диаграммы последовательной загрузки flash-памяти следует придерживаться следующих правил. 1. Тактовый импульс SCK имеет форму 0-1-0. 2. Входные данные (MOSI) защелкиваются по переднему фронту SCK (0-1). Первым следует старший бит.
ГЛАВА 2. АРХИТЕКТУРА MCS-51 115 3. Выходные данные (MISO) обновляются по заднему фронту SCK (1-0). Первым следует старший бит. Чтение первого бита нужно производить до завершения импульса SCK. Таблица команд последовательной загрузки flash-памяти программ имеет следующий вид. Команды последовательной загрузки микроконтроллеров AT89Sxx Команда Байт 1 Байт 2 Байт 3 Описание Разрешение программирования 10101100 0101 0011 хххххххх Переводит кристалл в режим программирования после пода- чи RST = 1 Стирание памяти 10101100 xxxxxlOO хххххххх Стирание Rash и EEPROM Чтение памяти программ аааа а001 для S53: аааа аа01 мл. байт адреса хххххххх Старшие биты адреса переда- ются в байте 1. В цикле пере - дачи 3-го байта производится ч тение данных Запись памяти программ аааа аОЮ для S53: аааа аа 10 мл. байт адреса данные Старшие биты адреса переда- ются в байте 1 Чтение памяти данных (только S8252) ООаа а101 мл. байт адреса хххххххх Старшие биты адреса передают ся в байте 1. В цикле передачи 3-го байта производится чте- ние данных Запись памяти данных (только S8252) ООаа а110 мл. байт адреса данные Старшие биты адреса пере- даются в байте 1 Запись битов защиты 10101100 ВВВххШ хххххххх “0" в поле “В’ устанавливает бит защиты. Маски для установки битов защиты: 0111 1111 - запрещено выполнение инструкции MOVC, если инст- рукция размещается во внешней памяти программ, а читает код из внутренней памяти; состояние входа ЕА защелкивается по фронту сигнала RST, запрещена дальнейшая запись в память программ. ООН 1111 — то же, что в предыдущем пункте, дополнительно запре- щено чтение памяти программ и данных. 0001 1111 — то же, что в предыдущем пункте, дополнительно запре- щено выполнение программы, находящейся во внешней памяти. 2.13. Другие микроконтроллеры MCS-51 с flash-памятью программ Микроконтроллеры с архитектурой (процессорным ядром) MCS-51 выпускают такие известные фирмы, как Philips, Siemens, Dallas Semicon- ductor, Winbond и ряд других.
116 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Весьма интересны микроконтроллеры типа MCS-51, выпускаемые фирмой Winbond. Их основные характеристики приведены в следующей таблице. Микроконтроллеры MCS-51 с Flash-памятью фирмы Winbond Тип Flash RAM Питание Частота, МГц Корпус Комментарии W78E51B 4К 128 5В 24, 40 DIP40, PLCC44, TQFP44 WD, Extra I/O port W78LE51 4К 128 2.4В-5В 24 DIP40, PLCC44, TQFP44 WD, Extra I/O port W78E52B 8К 256 5В 24, 40 DIP40, PLCC44, TQFP44 WD, Extra I/O port W78LE52 8К 256 2.4В-5В 24 DIP40, PLCC44, TQFP44 WD, Extra I/O port W78E54 16К 256 5В 24, 40 DIP40, PLCC44, TQFP44 WD, Extra I/O port W78LE54 16К 256 2.4В-5В 24 DIP40, PLCC44, TQFP44 WD, Extra I/O port W78E58 32К 256 5В 24, 40 DIP40, PLCC44, TQFP44 WD, Extra I/O port W78LE58 32К 256 2.4В-5В 24 DIP40, PLCC44, TQFP44 WD, Extra I/O port W78E516 64К 256 5В 24, 40 DIP40, PLCC44, TQFP44 WD, Extra I/O port, ISP, 256 XRAM W78LE516 64К 256 2.4В-5В 24 DIP40, PLCC44, TQFP44 WD, Extra I/O port, ISP, 256 XRAM W77E58 32К 256 5В 25, 40 DIP40, PLCC44, TQFP44 Turbo, 2 UART, 2DPTR, WD, 1К XRAM, Extra I/O port W77LE58 32К 256 2.4В-5В 25 DIP40, PLCC44, TQFP44 Turbo, 2 UART, 2DPTR, WD, 1К XRAM, Extra I/O port W77E468F 32К 256 5В 25, 40 QFP100 Turbo, 2 UART, 2DPTR, WD, 1К XRAM, 52 I/Os В таблице приведены характеристики микроконтроллеров с flash- памятью. Однако в семействе микроконтроллеров Winbond почти все представители имеют варианты с масочным ПЗУ, с маркировкой W78C и W78L. При этом версии с расширенным напряжением питания и масочным ПЗУ специфицированы для работы при Vcc = 1,8 В, в то время, как вер- сии с Flash памятью имеют нижнюю границу 2,4 В. Рассмотрим особенности микроконтроллеров Winbond. В микроконтроллерах, имеющих корпуса типа PLCC44 и TQFP44, существует дополнительный порт ввода-вывода Р4 (Extra I/O port),
ГЛАВА 2. АРХИТЕКТУРА MCS-51 117 включающий 4 бита. В этот порт введены 2 дополнительных входа внеш- них прерываний Int2 и Int3. Серия W77xx отличается тем, что может обеспечивать значительное повышение производительности по сравнению с классическими микрокон- троллерами MCS-51. Для этого введен режим Turbo, использующий 4- тактовый машинный цикл вместо 12-тактового. Данный режим впервые был введен в микроконтроллерах фирмы Dallas Semiconductor (80С320, 87С520, 87С530, только ROM и EPROM версии). Кроме сжатой времен- ной диаграммы, в режиме Turbo исключены холостые циклы обращения к памяти, что позволяет еще в 1,5 раза повысить производительность. По- скольку тактовая частота повышена до 40 МГц, можно утверждать, что микроконтроллеры серии W77 на сегодняшний день имеют наибольшую производительность среди Flash микроконтроллеров MCS-51. Дополнительные преимущества серии W77 - наличие двух регистров DPTR, двух последовательных интерфейсов UART, дополнительной памя- ти данных на кристалле. При подключении внешней памяти данных мож- но программно регулировать длительность циклов чтения и записи, что позволяет совмещать высокоскоростной микроконтроллер и ОЗУ среднего быстродействия. Внутрисистемное программирование в микроконтроллерах типа W78E516 отличается от описанных для AT89S и T89C51RD2. Для загруз- ки flash-памяти используется последовательный порт RS232, но система команд отличается от Atmel; при этом для пользовательской программы- загрузчика имеется дополнительный блок flash-памяти объемом 4 Кбайт. Маркировка семейств W77 и W78 отличается от стандартной «89» вполне обоснованно. Фирма Winbond использует для репрограммируемой памяти программ собственную технологию, называя эту память МТР - Multiple-Time Programmable. Для пользователя это отличие означает, что программаторы, использовавшиеся ранее, могут не поддерживать данные микроконтроллеры, так как при перепрограммировании требуется уста- навливать два вида напряжения программирования, временные диаграммы также изменены. Фирма Philips в настоящее время лидирует по общему объему и но- менклатуре выпускаемых микроконтроллеров MCS-51. В программе по- ставок Philips представлены микроконтроллеры MCS-51 с напряжениями питания от 1,8 В, в корпусах от 20 до 80 выводов, имеющие такие пери- ферийные блоки, как 8- и 10-разрядные АЦП, 8-разрядные ЦАП, ШИМ, интерфейсы 12С и CAN. Большая часть микроконтроллеров Philips имеет версии с EPROM и с масочным ПЗУ. В таблице приведены только версии с Flash памятью. Серия Rx+ объединяет возможности Flash технологии и широкую но- менклатуру периферийных устройств на кристалле. В микроконтроллерах серии Rx+ внутрисистемное программирование Flash производится через
118 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ интерфейс RS232. Система команд для загрузки Flash совпадает с микро- контроллерами T89C51RD2, но, в отличие от них, для внутрисхемной за- грузки требуется подать напряжение программирования +12 В. Микроконтроллеры MCS-51 с Flash-памятью фирмы Philips Тип Flash RAM Vcc Частота, МГц Корпус Комментарии P89C51RA+ 8К 256 5В 33 DIP40, PLCC44, TQFP44 WD, РСА, 2 DPTR P89C51RB+ 16К 256 5В 33 DIP40, PLCC44, TQFP44 WD, РСА, 2 DPTR P89C51RC+ 32К 256 5В 33 DIP40, PLCC44, TQFP44 WD, РСА, 2 DPTR, 256 XRAM, ISP P89C51RD+ 64К 256 5В 33 DIP40, PLCC44, TQFP44 WD, PCA, 2 DPTR, 768XRAM, ISP Р89С138 16К 256 5В 3.5-40 DIP40, PLCC44, TQFP44 Р89С238 32К 256 5В 3.5-40 DIP40, PLCC44, TQFP44 Р89С738 64К 256 5В 3.5-16 DIP40, PLCC44, TQFP44 256 XRAM Р89СЕ558 32К 256 5В 3.5-16 QFP80 WD, 2 PWM, 10 bit ADC, I2C, 768 XRAM, ISP Для решения задач, требующих повышенной производительности микроконтроллеров, фирма Philips выпустала семейство 80С51ХА. Се- мейство совместимо с MCS-51 только по особенностям архитектуры и сис- теме команд на уровне мнемоник. Совместимость можно рассматривать в том плане, что наработанное для MCS-51 программное обеспечение может быть перетранслировано для установки на платформу 51 ХА с минималь- ными изменениями. Для облегчения переноса программного обеспечения с платформы MCS-51 на 51ХА существует специальная программа- транслятор исходного текста на ассемблере 51 в исходный текст для ас- семблера 51ХА. В целом, семейство 51ХА имеет более развитые способы адресации и систему команд, другую топологию выводов корпуса и другую кодировку инструкций процессора. Основные характеристики семейства 51ХА: • 16-раз рядное АЛУ; • 24-разрядное адресное пространство (16 Мбайт памяти) для памяти программ и данных; • восемь 16-разрядных регистров, организованных в виде регистрового файла, т.е. каждый может выполнять функцию аккумулятора; • расширенный набор инструкций и способов адресации; • аппаратная поддержка мультизадачного!; • напряжение питания от 2,7 В.
ГЛАВА 2. АРХИТЕКТУРА MCS-51 119 Архитектура ХА обеспечивает увеличение производительности на два порядка по сравнению с архитектурой MCS-51 (по оценкам фирмы Philips). Сравнительно недавно выпущенные flash-микроконтроллеры фирм ISSI и SST не имеют принципиальных отличий от рассмотренных выше. Фирмы ISSI и SST специализируются на выпуске быстродействующих микросхем памяти - ОЗУ, flash. Выпуск этими фирмами микроконтрол- леров с ядром MCS-51 и flash-памятью свидетельствует о том, что потреб- ности рынка этих микросхем не удовлетворены усилиями Atmel, Philips, Winbond. Микроконтроллеры MCS-51 с Flash-памятью фирмы ISSI Тип Rash RAM Vcc Частота, МГц Корпус Комментарии IS89C51 4К 128 5В 12,24,40 DIP40, PLCC44, TQFP44 Стандартная архи- тектура IS89C52 8К 256 5В 12,24,40 DIP40, PLCC44, TQFP44 Стандартная архи- тектура IS89LV52A 8К 256 ЗВ, 5В 24 DIP40, PLCC44, TQFP44 Стандартная архи- тектура IS89C54A 16К 256 5В 40 DIP40, PLCC44, TQFP44 Стандартная архи- тектура IS89C58A 32К 256 5В 40 DIP40, PLCC44, TQFP44 Стандартная архи- тектура IS89C64A 64К 256 5В 40 DIP40, PLCC44, TQFP44 Стандартная архи- тектура Микроконтроллеры MCS-51 с Flash-памятью фирмы SST Тип Rash RAM Vcc Частота, МГц Корпус Комментарии SST89C54 16К 256 5В 33 DIP40, PLCC44, TQFP44 ISP, 4К Boot SST89C58 32К 256 5В 33 DIP40, PLCC44, TQFP44 ISP, 4К Boot SST89C59 64К 256 5В 33 DIP40, PLCC44, TQFP44 ISP, 4К Boot, 256XRAM В целом можно сделать вывод, что несмотря на то, что микроконтрол- леры типа MCS-51 уступают по производительности современным RISC- микроконтроллерам, эта архитектура вряд ли будет полностью вытеснена новыми семействами, так как для определенного класса задач имеет пре- имущество по соотношению цена/качество. Большое значение имеет нали- чие развитых инструментальных средств и опыт разработчиков.
ГЛАВА 3 МИКРОКОНВЕРТЕР ADpC812 ФИРМЫ ANALOG DEVICES 3.1. Структура микроконвертера ADgC812 Фирма Analog Devices представляет микроконвертер ADpC812 как однокристальную систему сбора данных и управления, которая включает прецизионный 12-разрядный АЦП, два 12-разрядных ЦАП и ядро микро- контроллера с архитектурой MCS-51. Эта микросхема сразу привлекла внимание специалистов, подобный прибор давно ждали и микроконвертер ADpC812 стал настоящим бестселлером 2000г. как за рубежом, так и на отечественном рынке. Микроконвертер имеет следующие основные характеристики: • 12-разрядный 8-канальный АЦП со скоростью выборки 200 kSPS и каналом прямого доступа к памяти; • два 12-разрядных ЦАП с потенциальными выходами; • 8-разрядное ядро микроконтроллера с архитектурой MCS-51 (Fmax = 16 МГц); • 8 Кбайт внутренней flash-памяти программ; • 640 байт внутренней flash-памяти данных типа ЭРПЗУ; • последовательные порты: UART, I2C, SPI; • монитор напряжения питания, сторожевой таймер, встроенный источ- ник опорного напряжения.
ГЛАВА 3. МИКРОКОНВЕРТЕР АОцС812 ФИРМЫ ANALOG DEVICES 121 Микросхема заключена в 52-выводный корпус типа PQFP, способна работать при напряжениях питания +5В/ +ЗВ в индустриальном диапазоне температур. Структура микроконвертера приведена на рис. 3.1, а функции выводов корпуса — на рис. 3.2. РО.О Р0.7 Р1.0 Р1.7 Р2.0 Р2.7 РЗ.О <->Р3.7 ADUC812 ADCO (Р1.0 ADC7 (Р1.7) Мульти- плексор 12-бит АЦП последовательного приближения Схема управления АЦП и логика калибровки Схема управле- ния ЦАП 12 бит ЦАПО 12 бит ЦАП1 Буфер Буфер -odaco -rtDAC! -ОТО (Р3.4) Буфер Источник опорного напряжения 2,5В Датчик температуры Процессорное ядро 8051 8К байт флэш-памяти программ о—о •о AVco AGND DVpo DGND -Ati (рз.5) »Т2 (Р1.0) Т2ЕХ(Р1.1) 640 байт флэш Мультиплексор памяти данных Тактовый генератор Сторожевой таймер Порт 12С Порт SPI 256 байт ОЗУ данных Последовательный загрузчик Таймеры/ счетчики 3 х 16 бит Монитор напряжения питания INTI# (РЗ.З) ALE PSEN# EA# RESET XE&L1 XTAL2 W RxD SCUXK МС61/ MEO (P3.0) (P3.1) SCAIA (P33) Рис. 3.1. Структура микроконвертера ADpC812 Порт UART OlNT0#(P3.2) Функции выводов микроконвертера следующие. DVDD. Напряжение питания цифровой части микросхемы (+5В/+ЗВ). AVDD. Напряжение питания аналоговой части микросхемы (+5В/+ЗВ). DGND. Цифровая земля. AGND. Аналоговая земля. PortO (РО.О — Р0.7). Двунаправленный 8-разрядный параллельный порт ввода/вывода с открытым стоком. Альтернативной функцией порта при обращении к внешней памяти является функция адресных выходов А7 — АО (адрес и данные передают- ся с разделением времени - мультиплексированная шина). При записи в бит регистра порта логической «1» соответствующая ли- ния порта переходит в режим высокоимпедансного входа. Для работы в режиме порта ввода/вывода необходимо внешнее подтягивание каждой линии порта к уровню логической «1». Portl (Pl.О - Pl.7). Входной порт, по умолчанию настроен на ввод аналоговых сигналов (функции ADCO - ADC7). Каждый вывод может
122 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ быть переведен в режим цифрового входа, для этого в соответствующий бит порта должен быть P1.0/ADC0/T2 P1.1/ADC1/T2EX P1.2/ADC2 P1.3/ADC3 avdd AGN Cref VREF DACO DAC P1.4/ADC4 P1.5/ADC5/SS P1.6/ADC записан логический «О». P2.7/A15/A23 P2.6/A14/A22 P2.5/A13/A21 P2.4/A12/A20 DGND DVod XTAL2 (OUTPUT) XTAL1 (INPUT) P2.3/A11/A19 P2.2/A10/A18 P2.1/A9/A17 P2.0/A8/A16 SDATA/MOSI Рис. 3.2. Микроконвертер ADpC812 в 52-выводном корпусе Кроме работы в качестве аналоговых входов выводы порта Р1 могут выполнять другие альтернативные функции в соответствии со следующей таблицей. Вывод Альтернативная функция Р1.0 Т2 - вход Таймера 2 в режиме счетчика. Р1.1 Т2ЕХ - вход захвата Таймера 2 в режиме счетчика, а также вход управления направлением счета. Р1.5 SS# - выбор микроконвертера в качестве ведомого при обмене по интерфейсу SPL
ГЛАВА 3. МИКРОКОНВЕРТЕР ADjiC812 ФИРМЫ ANALOG DEVICES 123 Port2 (P2.0 — P2.7). Двунаправленный 8-разрядный параллельный порт ввода/вывода. При записи в бит регистра порта Р2 логической «1» соответствующая линия порта переходит в режим высокоимпедансного входа со слабым подтягиванием сигнала к уровню логической «1». Альтернативной функцией этого порта является функция адресных выходов. При обращении к внешней памяти программ через порт Р2 выда- ется старший байт А8 — А15 16-разрядного адреса. При обращении к внешней памяти данных на выводы порта Р2 выдаются средний и старший байты А16 — А23, А8 — А15 24-разрядного адреса (с разделением време- ни). Port3 (РЗ.О — Р3.7). Двунаправленный 8-разрядный параллельный порт ввода/вывода. При записи в бит регистра порта РЗ логической «1» соответствующая линия порта переходит в режим высокоимпедансного входа со слабым подтягиванием сигнала к уровню логической «1». Выводы порта РЗ могут выполнять альтернативные функции в соот- ветствии со следующей таблицей. Вывод Альтернативная функция РЗ.О RxD - вход приемника последовательного порта Р3.1 TxD - выход передатчика последовательного порта Р3.2 INTO - вход внешнего прерывания 0 РЗ.З INT1 - вход внешнего прерывания 1 MISO - у ведущего SPI устройства вход, у ведомого - выход Р3.4 ТО - внешний вход таймера/счетчика 0 Р3.5 Т1 - внешний вход таймера/счетчика 1 CONVST - вход запуска преобразования АЦП при внешнем запуске Р3.6 WR# - сигнал разрешения записи во внешнюю память данных Р3.7 RD# - сигнал разрешения чтения из внешней памяти данных DACO, DAC1. Выходы ЦАПО и ЦАП1. RESET. Вход инициализации. Высокий уровень на этом входе в тече- нии 24 периодов Fosc запускает процесс инициализации микроконтролле- ра. ALE. Активное значение сигнала на этом выходе разрешает фиксацию младшего байта адреса (при 24-разрядном адресе - среднего байта) при обращениях к внешней памяти. PSEN#. Активное значение сигнала на этом выходе разрешает чтение из внешней памяти программ. Для разрешения последовательной загрузки в ЭРПЗУ этот вывод должен быть через резистор подключен к земле на время включения питания или активного сигнала RESET. ЕА#. Сигнал на этом входе переключает источник кода при обраще- нии к младшим 8 Кбайтам памяти программ. При ЕА = 0 и диапазоне ад- ресов 0000Н — 1FFFH микроконвертер выполняет цикл обращения к
124 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ внешней памяти программ, при ЕА = 1 обращение по одному из этих адре- сов приводит к чтению кода из внутренней памяти. SDATA/MOSI. Линия данных интерфейсов I2C, SPI. SCLOCK. Линия синхронизации интерфейсов I2C, SPI. XTAL1. Вход инвертирующего усилителя для синхрогенератора. XTAL2. Выход инвертирующего усилителя для синхрогенератора. CREF. Вывод подключения внешнего конденсатора к внутреннему ис- точнику опорного напряжения (0,1 мкФ). VREF. Вход/выход опорного напряжения для аналоговой части схе- мы. Этот вывод соединен с внутренним источником опорного напряжения. Напряжение (+2,5 В) появляется на нем при разрешенных АЦП и ЦАП. 3.2. Организация памяти и программно доступные ресурсы Микроконвертер ADpC812 имеет микроконтроллерное ядро с модер- низированной архитектурой MCS-51. Точнее, основой является ядро 8ХС52, но пространство внешней памяти данных увеличено до 16 Мбайт, а к внутренним ресурсам добавлено 640 байт энергонезависимой памяти данных типа ЭРП ЗУ (рис. 3.3). Эта внутренняя память данных доступна косвенно через регистры специальных функций. Набор регистров, предна- значенных для работы с внутренней энергонезависимой памятью данных, включен в состав регистров специальных функций. Память программ Внутренняя память данных Внешняя память данных Рис. 3.3. Организация памяти и программно доступных ресурсов в AD|iC812
ГЛАВА 3. МИКРОКОНВЕРТЕР АОцС812 ФИРМЫ ANALOG DEVICES 125 К блокам ввода/вывода исходного микроконтроллерного ядра добав- лены: АЦП и два ЦАП, два интерфейса последовательных портов (SPI и 12С). Кроме того, надежность работы систем на основе микроконвертера существенно повышают введенные в его структуру блоки монитора напря- жения питания и сторожевого таймера. Все регистры управления и данных перечисленных блоков также внесены в список регистров специальных функций микроконтроллерного ядра. Ряд регистров специальных функций у микроконвертера ADpC812 от- сутствуют из-за упрощения порта UART, механизма прерываний и Тайме- ра 2. Область младших 128 байт внутреннего ОЗУ изображена на рис. 3.4. Шестнадцатеричный адрес 7F: Десятичный 127 2F: 2Е: 2D: 2C: 2В: 2А: 29: 28: 27: 26: 25: 24: 23: 22: 21: 20: 1F: 18: 17: 10: 0F: 08: 07: 00: 7F 7Е 7D 7С 7В 7А 79 78 77 76 75 74 73 72 71 70 6F 6Е 6D 6С 6В 6А 69 68 67 66 65 64 63 62 61 60 5F 5Е 5D 5С 5В 5А 59 58 57 56 55 54 53 52 51 50 4F 4Е 4D 4С 4В 4А 49 48 47 46 45 44 43 42 41 40 3F ЗЕ 3D ЗС ЗВ ЗА 39 38 37 36 35 34 33 32 31 30 2F 2Е 2D 2С 2В 2А 29 28 27 26 25 24 23 22 21 20 1F 1Е 1D 1С 1В 1А 19 18 17 16 15 14 13 12 11 10 0F 0Е 0D ОС 0В 0А 09 08 07 06 05 04 03 02 01 00 R7 БАНКЗ R0 R7 БАНК2 R0 R7 БАНК1 R0 R7 БАНКО R0 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 24 23 16 15 8 7 0 Рис. 3.4. Структура внутреннего ОЗУ данных Ячейки ОЗУ занимают адреса внутренней памяти данных с ООН по 7FH. В этой области памяти выделяются два особых фрагмента: • младшие 32 адреса занимают четыре регистровых банка, каждый из которых содержит по восемь регистров общего назначения R0 — R7.
126 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Текущий банк определяется значением битов RSO, RS1 регистра PSW. Таким образом, младшие 32 ячейки ОЗУ, кроме адресов, имеют име- на; ячейки с адресами в диапазоне 32 - 48 имеют прямо адресуемые би- ты, адреса битов этой части ОЗУ находятся в диапазоне ООН - 7FH. На рис. 3.5 изображена область регистров специальных функций. SPICON ' HF 0». : DACOL* Р9 Об- DACOH FA 00 пйяс-J га.-.. . оо DAC1H ' FC . 00. DACC0N ГО. В F0 00 АПСЭДМ.. и Ы! COHSH fe- :20» а 4DCGAINL *®gainkj На* Off i АГЮСОНЗ Пв 'to-? '-.«вдад1 ' «7:2 Лй..- АСС Е0 00 жиж ЙМК "досдагж; DA' . Об" . PSW DO 00 се’ ж С»'--' ® «4 00 . T2CON С8 00 RCAP2L СА 00 RCAP2H СВ 00 TL2 СС 00 m2 CD 00 -WR0H.: паяц» -. : IP B8 00 Й-К... ад й 1 РЗ ВО FF * Ж IE А8 00 йо Р2 АО FF SCON 98 00 SBUF 99 00 9А Эй Р1 90 FF TCON 88 00 TMOD 89 00 TL0 8А 00 TL1 8В 00 то 8С 00 mi 8D 04 РО 80 FF SP 81 07 DPL 82 00 DPH 83 00 PCON 87 00 Рис. 3.5. Регистры специальных функций ADpC812. Указаны имя, адрес и начальное состояние каждого регистра В область регистров специальных функций включены все программно доступные регистры (управления и данных) внутренних блоков вво- да/вывода. Эта область формально занимает старшие 128 байт внутренней памяти данных, но обращение должно осуществляться по определенным адресам ячеек или отдельных битов. Обращение по промежуточным адре- сам приведет к ошибочному результату. Видно, что все регистры имеют как символические имена, так и адреса в качестве ячеек внутренней памя- ти. Часть регистров содержит прямо адресуемые биты, адреса этих битов находятся в диапазоне 80Н - FFH. Кроме адресов эти биты имеют имена, которые предопределены в системах программирования. Таким образом, к
ГЛАВА 3. МИКРОКОНВЕРТЕР ADjiCB 12 ФИРМЫ ANALOG DEVICES 127 прямо адресуемым битам регистров специальных функций можно обра- щаться по именам. Если в регистре биты не прямо адресуемые, то их име- на служат только для удобства описания функционирования соответст- вующего блока ввода/вывода. Для обращения к определенному биту должна производиться выборка байта, а затем накладываться нужная мас- ка. Назначение основных регистров специальных функций ядра 8ХС52 следующее: Имя регистра Назначение АСС В PSW IP РЗ IE Р2 SBUF SCON Р1 ТН1 Аккумулятор, основной операционный регистр Дополнительный регистр для операций умножения и деления Регистр, хранящий слово состояния процессора Регистр приоритетов прерываний Регистр порта РЗ Регистр разрешения прерываний Регистр порта Р2 Регистр данных последовательного порта Регистр управления последовательного порта Регистр порта Р1 Старший регистр таймера/счетчика 1 тно TL1 TLO TMOD TCON PCON SP DPH, DPL РО Старший регистр таймера/счетчика 0 Младший регистр таймера/счетчика 0 Младший регистр таймера/счетчика 0 Регистр режима таймеров/счетчиков Регистр управления таймеров/счетчиков Регистр управления энергопотреблением Регистр указателя стека Указатель данных DPTR Регистр порта РО Отметим, что по сравнению с исходным ядром 8ХС52 микроконвертер ADpC812 имеет отличия в наборе регистров общего назначения: 1. добавлены регистры специальных функций АЦП, ЦАП, последова- тельных интерфейсов I2C и SPI, EEPROM, сторожевого таймера; 2. отсутствуют регистры T2MOD, SADEN, SADDR, IPH. Эти отличия отмечены в карте регистров цветом. Отсутствие указан- ных регистров связано с упрощением Таймера 2, механизма приоритетов системы прерываний и последовательного порта UART. Эти особенности, а также формат остальных регистров специальных функций будут обсуж- даться в разделах, посвященных описанию работы отдельных блоков вво- да/вывода и системы прерываний. Здесь рассмотрим два основных реги- стра, которые непосредственно связаны с работой всего микроконвертера. Это регистр PSW, хранящий слово состояния процессора, и регистр
128 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ PCON, через который осуществляется управление режимами пониженного энергопотребления. Формат регистра PSW и функции отдельных битов следующие: DOH 7 6 5 4 3 2 1 0 PSW CY АС F0 RS1 RSO OV F1 р Hex. код 0 0 0 0 0 0 0 0 Имя флага Номер бита Функция CY АС F0 RS1 RSO OV F1 Р PSW.7 PSW.6 PSW.5 PSW.4 PSW.3 PSW.2 PSW.1 PSW.0 Флаг переноса Флаг вспомогательного переноса (между тетрадами) Флаг 0, возможно программирование пользователем в общих целях Первый бит селектора регистрового банка Нулевой бит селектора регистрового банка Флаг переполнения Флаг, определяемый пользователем Флаг чётности. Устанавливается/очищается аппаратно каждый цикл инструкции и показывает нечётное/чётное число 'Г в аккумуляторе У микроконтроллеров, выполненных с использованием технологии CHMOS, обычно имеются режимы пониженного энергопотребления. В микроконверторе ADpC812 управление этими режимами осуществляется при помощи регистра PCON. 7 6 5 4 3 2 1 0 87Н PCON Hex. код 0 0 0 0 0 0 0 0 Номер бита Функция PCON.7 Бит управления скоростью обмена последовательного порта. При SMOD=1 скорость обмена в режимах 1, 2, 3 удваивается. PCON.6 PCON.5 PC0N.4 Не используется. Не используется. Бит запрещения сигнала ALE. Если бит = 0 сигнал формируется, если бит = 1 на выводе всегда высокий потенциал. PCON.3 PCON.2 PCON.1 Флаг общего назначения. Флаг общего назначения. Бит управления режимом микропотребления (power down). Если бит =1 этот режим включен. PCON.O Бит управления режимом холостого хода (idle). Если бит =1 этот режим включен. Если установлены оба бита, PCON.1 и PCON.О, больший вес имеет бит PCON. 1, и микроконтроллер переходит в режим микропотребления. Режим микропотребления (Power down). Команда, в которой уста- навливается бит PCON. 1 является последней перед переходом в режим
ГЛАВА 3. МИКРОКОНВЕРТЕР ADgC812 ФИРМЫ ANALOG DEVICES 129 микропотребления. В этом режиме приостанавливается выполнение всех функций микроконтроллера, поскольку прекращает работать синхрогене- ратор. Состояние внутреннего ОЗУ данных сохраняется, содержимое ре- гистров специальных функций теряется. Потребляемая мощность в режиме микропотребления составляет около 20% от номинальной. Выход из состояния микропотребления может быть осуществлен толь- ко подачей активного сигнала на вход RESET. Режим холостого хода (Idle). В этом режиме центральный процессор отключается, система прерываний, счетчики/таймеры и другие блоки вво- да/вывода продолжают функционировать. Счетчик команд, регистры и внутреннее ОЗУ сохраняют свои значения. Последней выполненяемой ко- мандой перед приостановкой процессора является команда, устанавли- вающая бит PCON.O. Потребляемая мощность в режиме холостого хода составляет около 50% от номинальной. Одним из двух возможных способов выхода из режима холостого хода является формирование любого разрешенного запроса прерывания. При- нятое на обслуживание прерывание сбрасывает бит PCON.O. После коман- ды RETI процедуры обслуживания возобновляется выполнение основной программы. Флаги общего назначения регистра PCON могут использо- ваться процедурой прерывания для определения того, выполняется она в режиме холостого хода или в обычном режиме. Для этого, например, ко- манда, устанавливающая флаг PCON.O, может установить определенную комбинацию в этих битах. В процедуре прерывания наличие этой комби- нации должно проверяться. Другим способом выхода из состояния холостого хода является подача активного сигнала на вход RESET. Длительность этого сигнала должна быть не менее 24 периодов частоты синхронизации. 3.3. Аналого-цифровой преобразователь Блок АЦП представляет собой 8-канальный 12-разрядный аналого- цифровой преобразователь с быстродействием 5 мксек и однополярным питанием. Блок включает 9-канальный мультиплексор, встроенный источ- ник опорного напряжения, систему калибровки и собственно преобразова- тель последовательного типа. Блок управляется через три регистра специ- альных функций. Преобразователь воспринимает входные аналоговые сигналы в диапа- зоне от 0 до +Vrep. Может использоваться опорное напряжение Vref , формируемое встроенным источником, либо подаваемое от внешнего ис- точника. Встроенный источник опорного напряжения представляет собой прецизионную схему с низким дрейфом, откалиброванную на напряжение 2,5В. Опорное напряжение может использоваться внешними схемами, для этого оно выводится на линию Vref- Аналоговые цепи микроконвертера
130 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ могут использовать внешнее опорное напряжение (в диапазоне от 2,3В до +AVdd). При подаче этого напряжения на вывод Vref оно подавляет внутреннее опорное напряжение. В диапазоне входных напряжений АЦП от 0 до +Vref смена кодов происходит посередине очередного приращения, равного младшему знача- щему разряду LSB (1/2LSB, 3/2LSBs, 5/2LSBs, FS-3/2LSBs). При Vref = +2,5В 1LSB = 2.5В/4096 = 0.61 мВ. Идеализированная переда- точная характеристика показана на Рис. 3.6. Рис. 3.6. Передаточная функция АЦП ADuC812 Режимы преобразования (однократный или циклический) могут быть установлены программно. Кроме того, преобразование может быть ини- циировано внешним сигналом запуска на выводе CONVST#. Для запуска повторяющегося процесса преобразования можно использовать сигнал Таймера 2. АЦП можно установить в режим передачи данных по каналу прямого доступа к памяти (DMA), когда блок повторяет циклы преобразования и посылает выборки во внешнюю память данных, минуя процессор. Этот процесс может использовать все 16 МБ внешней памяти данных. Микроконвертер ADuC812 поставляется с заводскими калибровочны- ми коэффициентами, которые загружаются автоматически после включе- ния питания и обеспечивают оптимальную работу устройства. Блок АЦП содержит внутренние регистры калибровок смещения (ADCOFSL, AD- COFSH) и усиления (ADCGAINL, ADCGAINH), причем программная процедура калибровки пользователя подавляет заводские установки. Это дает возможность минимизировать ошибки в конечной системе. При необ-
ГЛАВА 3. МИКРОКОНВЕРТЕР АОцСв 12 ФИРМЫ ANALOG DEVICES 131 ходимости через АЦП можно преобразовать сигнал внутреннего датчика температуры (канал 9). Работой блока АЦП можно управлять через три регистра спецфунк- ций: ADCCON1, ADCCON2 и ADCCON3. Регистрами данных блока АЦП являются ADCDATAL, ADCDATAH. Регистр ADCCON1 управляет режимом работы АЦП, значением так- товой частоты АЦП, временем переключения каналов, внешним запуском. Регистр не имеет отдельно адресуемых битов. 7 6 5 4 3 2 1 0 EFH MD1 MD0 СК1 СКО AQ1 AQ0 Т2С ЕХС ADCCON1 Исх.код 00100000 Бит Мнемоника Описание ADCCON1.7 ADCCON1.6 ADCCON1.5 ADCC0N1.4 ADCCON1.3 ADCCON1.2 ADCCON1.1 ADCCON1.0 MD1 MD0 СК1 СКО AQ1 AQ0 Т2С ЕХС Биты режима работы АЦП. Определяют следующие режимы работы: MD1 MD0 Режим работы АЦП 0 0 Режим микропотребления 0 1 Нормальный режим 1 0 Режим микропотребления, если нет преобра- зования 1 1 Пассивный режим, если нет преобразования Биты деления тактовой частоты. Определяют коэффициент деления основной частоты микроконтроллера для получе- ния тактовой частоты АЦП. Цикл преобразования АЦП занимает 16 тактов поделен- ной частоты, в дополнение к числу тактов переключения. СК1 СКО Делитель для MCLK 0 0 1 0 1 2 1 0 4 1 1 8 Биты задержки переключения. Выбирают время, необхо- димое для переключения мультиплексора: AQ1 АСЮ Число тактов задержки запуска АЦП 0 0 1 0 1 2 1 0 3 1 1 4 Если импеданс источника сигналов <8 Ком, может быть AQ1-AQ0=00 . Иначе задержку увеличивают до 2 - 4 тактов. Бит запуска преобразования от Таймера 2. Если бит уста- новлен, то сигнал переполнения Таймера 2 используется для запуска АЦП. Бит разрешения внешнего запуска. Если установлен, то сигнал на выводе CONVST# будет использоваться как сигнал запуска (активный низкий уровень должен длиться не менее100 нс).
132 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Если АЦП находится в пассивном режиме, источник опорного напря- жения включен и на соответствующем выводе присутствует напряжение Vref- В режиме микропотребления вся периферия блока АЦП выключена. Среднее потребление тока блоком АЦП примерно равно 1,6 мА при VDD = 5В. Регистр ADCCON2 управляет установкой флага прерывания, режима- ми однократного и циклического преобразования. Имеется возможность индивидуального управления битами. D8H 7 6 5 4 3 2 1 0 ADCCON2 ADCI DMA CCONV SCONV CS3 CS2 CS1 CSO Исх.код 0 0 0 0 0 0 0 0 Бит Мнемоника Описание ADCCON2.7 ADCI Бит прерывания АЦП устанавливается аппаратно по окон- чании однократного преобразования или по окончании передачи блока в режиме DMA. ADCI очищается аппаратно при переходе на процедуру обслуживания прерывания. ADCCON2.6 DMA Бит разрешения режима DMA. Устанавливается пользовате- лем для начала цикла DMA от АЦП. ADCCON2.5 CCONV Бит циклического преобразования. Устанавливается пользо- вателем для перевода АЦП в режим непрерывного цикли- ческого преобразования. В этом режиме АЦП выполняет преобразование в соответствии с типом синхронизации и конфигурацией каналов, определенными в других регист- рах спецфункций. ADCCON2.4 SCONV Бит запуска однократного преобразования. Устанавливается пользователем для однократного запуска АЦП. Бит сбрасы- вается автоматически по завершению преобразования. ADCCON2.3 CS3 Биты выбора входных каналов . Позволяют программно ADCCON2.2 CS2 выбрать номер канала АЦП. ADCCON2.1 CS1 В режиме DMA номер канала записывается во внешнюю ADCCON2.0 CSO память. CS3 CS2 CS1 CSO 0 п2 п1 пО Номер входного канала (п2п1п0) 1 0 0 0 Температурный сенсор (внутренний) 1 X X X Не используемые комбинации 11 11 Останов DMA Регистр ADCCON3 позволяет определить занятость АЦП. F5H 7 6 5 4 3 2 1 0 ADCCON3 BUSY RSVD RSVD RSVD CTYP CAL1 CALO CALST Исх.код 0 0 0 0 0 0 0 0
ГЛАВА 3. МИКРОКОНВЕРТЕР АОцС812ФИРМЫ ANALOG DEVICES 133 Бит Мнемоника Описание ADCCON3.7 ADCCON3.6 ADCCON3.0 BUSY RSVD Бит занятости АЦП (только для чтения). Устанавливается на время преобразования или калибровки АЦП. Автомати- чески очищается по завершении цикла преобразования или калибровки. Биты ADCCON3.6- ADCCON3.0 - зарезервированы. Они считываются с нулевымзначением, и в них следует записывать только нули. При использовании внутреннего источника опорного напряжения па- раллельно выводам Vref и Gref должны быть подключены конденсаторы 100 нФ (второй вывод каждого конденсатора соединен с аналоговой зем- лей AGND). Емкости следует располагать возможно ближе к выводам. Если напряжение Vref внутреннего источника опорного напряжения предполагается использовать во внешних схемах, этот эту линию нужно дополнительно буферизировать. Следует отметить, что внутренний источ- ник опорного напряжения будет выключен до тех пор, пока АЦП или ЦАП не будут активизированы соответствующими битами разрешения. После программирования блока АЦП с использованием регистров ADCCON1-3 он начнет выполнять преобразования аналоговых входных сигналов и формировать 12-разрядные выходные коды в регистрах AD- CDATAH(L). В старшие четыре разряда регистра ADCDATAH записыва- ется номер канала. Формат слова результата показан на рис. 3.7. 1 1 1 4 разряда номера канала । —г 1 старшие 4 разряда результата 1 1 । ADCDATAH । 1 1 1 1 1 младшие 8 разрядов результата । । । 1_ । । ADCDATAL Рис. 3.7. Формат слова результата АЦП-преобразования Внутренний АЦП способен осуществлять выборки каждые 5 мксек. Таким образом, программа пользователя должна обслужить прерывание (прочитать результат и записать его для дальнейшей обработки) в течение 5 мксек, иначе результат следующей выборки может быть потерян. Для приложений, в которых процессор не успевает обслужить прерывания, предусмотрен режим прямого доступа к памяти. Режим DMA включается битом ADCCON2.6. после чего АЦП работает в соответствии с запрограм- мированным режимом, а результат каждой выборки записывается во внешнюю память данных, минуя микропроцессор. Этот режим работы обеспечивает реализацию максимального быстродействия АЦП. До вклю- чения режима DMA необходимо разметить внешнюю память, в которую будут записываться выборки. Разметка состоит в записи номеров каналов во внешнюю память. На рис. 3.8 показана типовая разметка внешней па- мяти. После завершения разметки в регистры DM АР, DMAH и DMAL заносится стартовый адрес DMA. В примере на рис. 3.8 этот адрес равен
134 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ 000000Н. Три байта стартового адреса должны быть записаны в следую- щем порядке: DMAL, DMAH, DMAP. Конец таблицы DMA указывается записью кода «1111» в поле номера канала. Теперь можно инициировать режим DMA установкой бита разрешения (ADCCON2.6, DMA). ОООООАН оооооон команда СТОП повторить последний канал для данных канала Ns3 для данных с датчика температуры для данных канала Ns5 для данных канала Ns2 Рис. 3.8. Разметка внешней памяти данных для режима DMA Режим DMA включается только в том случае, если пользователь предварительно установил время преобразования и режим запуска в реги- страх ADCCON1 и ADCCON2. В конце цикла DMA устанавливается бит прерывания АЦП (ADCCON2.7, ADCI), а внешняя память данных оказы- вается загруженной результатами, как показано на рис. 3.9. Результаты разметки сохраняются. ОООООАН оооооон 1 I 1 I 1 I 1 данные не записываются мл.байт данных канала Ns3 0 I 0 I 1 I 1 ст. байт данных канала №3 мл.байт данных канала Ns3 0 I 0 I 1 I 1 ст. байт данных канала Ns3 мл.байт данных датчика температуры 1 | 0 I 0 I 0 ст.байт датчика температуры мл.байт данных канала Ns5 0 I 1 I 0 I 1 ст.байт данных канала Ns5 мл.байт данных канала №2 0 1 0 I 1 I 0 ст. байт данных канала Ns2 Рис. 3.9. Внешняя память данных после цикла DMA Во время цикла DMA процессор свободен и может выполнять коман- ды, однако доступ процессора к портам Port2 и PortO (которые использу- ются контроллером DMA) в это время запрещен. Это означает, что если при выполнении программы встретится обращение к портам Port2 и PortO, данные с внешних выводов прочитаны не будут. Как только блок данных DMA будет записан во внешнюю память, инициируется прерывание и процедура обслуживания может обработать данные уже не соблюдая тре- бований реального времени.
ГЛАВА 3. МИКРОКОНВЕРТЕР АОцСв 12 ФИРМЫ ANALOG DEVICES 135 3.4. Цифро-аналоговые преобразователи Микроконвертер ADpC812 содержит на кристалле два 12-разрядных ЦАП. Они управляются регистром управления DACCON, данные хранят- ся в регистрах данных DAC0L/DAC1L и DAC0H/DAC1H. Значение на выходе каждого ЦАП модифицируется после записи в ре- гистр младшего байта данных (DACxL). Возможна одновременная уста- новка новых значений в обоих ЦАП, для этого предусмотрен бит SYNC в регистре DACCON. При 8-разрядном режиме работы байт, записанный в регистры DACxL, автоматически направляется в верхнюю часть 12-разрядного регистра данных. Регистр DACCON управляет режимами работы обоих ЦАП, его биты имеют следующее назначение: FDH 7 6 5 4 3 2 1 0 DACCON MODE RNG1 RNGO CLR1 CLRO SYNC PD1 PDO Исх.код 0 0 0 0 0 1 0 0 Бит Мнемоника Описание DACCON.7 MODE Бит устанавливает режим работы обоих ЦАП Если =1, то 8-разрядный режим преобразования (запись 8 бит в DACxL Если =0, то 12-разрядный режим преобразования DACCON.6 RNG1 Бит выбора диапазона ЦАП1 Если = 1, то диапазон 0. .Veld Если = 0, то диапазон O..Vref DACCON.5 RNGO Бит выбора диапазона ЦАПО Если = 1, то диапазон O..Vdd Если = 0, то диапазон O..Vref DACCON.4 CLR1 Бит очистки ЦАП1 Если = 1, то значение на выходе ЦАП1 соответствует коду Если = 0, то значение на выходе ЦАП1=0В DACCON.3 CLRO Бит очистки ЦАПО Если = 1, то значение на выходе ЦАПО соответствует коду Если = 0, то значение на выходе ЦАП0=0В DACCON.2 SYNC Бит синхронизации ЦАПО/1 Если=1, то выходы ЦАП изменяются, как только данные записаны в регистры DACxL Можно одновременно обновить выходы обоих ЦАП, если предварительно записать данные в DACxL/H при SYNC=0, а затем установить SYNC=1 DACCON. 1 PD1 Бит выключения ЦАП1 Если = 1, то ЦАП1 включен Если =0, то ЦАП1 выключен DACCON.O PDO Бит выключения ЦАПО Если = 1, то ЦАПО включен Если =0, то ЦАПО выключен
136 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ 3.5. Таймеры/счетчики Микроконвертер ADpC812 имеет три 16-разрядных тайме- ра/счетчика: Таймер 0, Таймер 1 и Таймер 2. Структура и режимы рабо- ты таймеров/счетчиков соответствуют общим принципам архитектуры MCS-51, изложенным в главе 2. Здесь мы для удобства работы с микро- конвертером приведем краткую информацию о регистрах и управлении таймерами/счетчиками. Каждый таймер/счетчик может быть запрограммирован на работу в качестве либо таймера (отсчет времени через подсчет внутренних импуль- сов синхронизации), либо счетчика (подсчет событий на внешнем входе). В обоих случаях переполнение счетного регистра приводит к формирова- нию запроса прерывания. Таймеры 0 и 1. Выбор режима работы Таймеров 0 и 1 производится битами С/Тх# (х = 0,1) регистра TMOD. Подсчет событий производится посредством инкремента программно доступного регистра данных, кото- рый состоит из регистра младшего байта TLx и регистра старшего байта ТНх. При работе в режиме таймера (С/Тх# = 0) регистр TLx наращивается в каждом машинном цикле и частота счета равна Fosc/12. В режиме счетчика (С/Тх# =1) регистр TLx наращивается при пере- ходе сигнала на входе Тх из «1» в «0». Для уверенной фиксации перепада сигнал должен удерживаться в каждом значении по крайней мере один машинный цикл, максимальная частота счета составляет Fosc/24. Таймеры 0 и 1 обслуживаются регистром режима TMOD и регистром управления TCON. 89Н 7 6 5 4 3 2 1 0 TMOD GATE1 СД1# М1.1 М1.0 GATEO СДО# М0.1 мо.о Исх.код 0 0 0 0 0 1 0 0 7 6 5 4 3 2 1 0 88Н TF1 TR1 TFO TRO IE1 IT1 1Е0 1Т0 TCON Исх.код 0 0 0 0 0 1 0 0 Имя бита Номер бита Функция GATE1 TMOD.7 Бит управления Таймером 1. При GATE1=1 Таймер 1 работает всегда при TR1=1. При GATE1=0 для работы необходимо условие TR1=1 и INT1#=1. C/T1# TMOD.6 Бит выбора типа событий для Таймера 1. При СД1#=1 он работает как счетчик, при С/Т1#=0 как таймер. М1.1 TMOD.5 Бит 1 определения режима работы Таймера 1. М1.0 TMOD.4 Бит 0 определения режима работы Таймера 1.
ГЛАВА 3. МИКРОКОНВЕРТЕР АОцС812ФИРМЫ ANALOG DEVICES 137 GATEO TMOD.3 Бит управления Таймером 0. При GATE0=1 Таймер 0 работает сдо# TMOD.2 всегда при TR0=1. При GATE0=0 для работы необходимо условие TR0=1 и INT0#=1. Бит выбора типа событий для Таймера 0. При СД0#=1 он М1.0 TMOD.1 работает как счетчик, при СД0#=0 как таймер. Бит 1 определения режима работы Таймера 0. мо.о TMOD.O Бит 0 определения режима работы Таймера 0. Имя бита Номер бита Функция TF1 TCON.7 Флаг переполнения Таймера 1. Устанавливается при переходе счетного регистра таймера из состояния FFH в состояние ООН. Очищается при передаче управления на процедуру обработки прерывания. TR1 TCON.6 Бит запуска Таймера 1. При TR1=1 счет разрешен. TFO TCON.5 Флаг переполнения Таймера 0. Устанавливается при переходе счетного регистра таймера из состояния FFH в состояние ООН. Очищается при передаче управления на процедуру обработки прерывания. TR0 TCON.4 Бит запуска Таймера 0. При TR0=1 счет разрешен. IE1 TCON.3 Флаг запроса прерывания по вход INT1 #. IT1 TCON.2 Бит селектора типа активного сигнала на входе INT1#. При 1Т1=1 активным является переход “1"-"0", при 1Т1=0 активным является низкий уровень сигнала. 1Е0 TCON.1 Флаг запроса прерывания по вход INTO#. 1Т0 TCON.O Бит селектора типа активного сигнала на входе INTO#. При 1Т0= 1 активным является переход “Г-"0”, при 1Т0=0 активным является низкий уровень сигнала. Биты Ml и МО следующим образом определяют режимы работы этих таймеров/счетчиков: М1 МО Режим работы 0 0 Режим 0. ТНх как 8-разрядный таймер/счетчик. TLx как 5-разрядный предделитель 0 1 Режим 1. 16-разрядный таймер/счетчик. ТНх и TLx включены последовательно 1 0 Режим 2. 8-разрядный таймер/счетчик TLx с автоперезагрузкой значением из ТНх 1 1 Режим 3. TLO как 8-разрядный таймер/счетчик, управляемый битами управления Таймера 0. ТНО как 8-разрядный таймер/счет- чик, управляемый битами управления Таймера 1. Таймер 1 не работает. Счет разрешается битом TRx, если бит GATEx=0. Когда счетное зна- чение переходит из состояния все «1» в состояние все «О», устанавливает- ся флаг запроса прерывания TFx. Установка бита GATEx = 1 дает воз- можность управлять таймером от входа INTx# и измерять таким образом ширину импульсов. Установка битов запуска не очищает счетные регист- ры.
138 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Таймер 2. Представляет собой 16-разрядный таймер/счетчик, кото- рый способен работать в трех режимах. Режимы работы определяются комбинациями битов управления регистра T2CON. RCLK+TCLK CP/RL2# TR2 Режим 0 0 1 16разрядный таймер/счетчик с автоперезагрузкой 0 1 1 16-разрядный таймер/счетчик с захватом (фиксацией) текущего значения 1 X 1 Задающий генератор для последовательного порта Шестнадцатиразрядный регистр данных Таймера 2 состоит из регист- ров ТН2 и TL2. Данные захвата, а также данные для перезагрузки хра- нятся в регистрах RCAP2H и RCAP2L, а регистром управления является T2CON. С8Н 7 6 5 4 3 2 1 0 T2CON TF2 EXF2 RCLK TCLK EXEN2 TR2 CNT2 САР2 Исх.код 0 0 0 0 0 0 0 0 Имя бита Номер бита Функция TF2 T2CON.7 Флаг переполнения Таймера 2. Устанавливается при переходе счетного регистра таймера из состояния FFH в состояние ООН. Должен очищаться программно. TF2 не устанавливается, если RCLK=1 nnnTCLK=1. EXF2 T2CON.6 Флаг внешнего события Таймера 2. Устанавливается по пере- паду на входе Т2ЕХ, если EXEN2=1. Является запросом прерывания от Таймера 2. RCLK T2CON.5 Бит выбора источника синхрочастоты для приемника последо- вательного порта в его режимах 1 и 3. При RCLK=1 источником является Таймер 2, при RCLK=O источником является Таймер 1. TCLK T2CON.4 Бит выбора источника синхрочастоты для передатчика после- довательного порта в его режимах 1 и 3. При TCLK=1 источником является Таймер 2, при TCLK=0 источником является Таймер 1. EXEN2 T2CON.3 Бит разрешения внешнего события Таймера 2. При EXEN2=1 разрешена установка флага EXF2. TR2 TCON.2 Бит запуска/останова Таймера 2. При TR2=1 таймер запускается. CNT2 T2CON.1 Бит выбора типа событий для Таймера 2. При СЫТ2=1 он работает как счетчик, при CNT2=0 как таймер. САР2 TCON.O Бит выбора режима Таймера 2. При САР2#=1 по перепаду на входе Т2ЕХ происходит захват состояния. При САР2=0 по перепаду на входе Т2ЕХ или по переполнению Таймера 2 переходит автоперезагрузка. Выбор типа фиксируемых Таймером 2 событий определяется битом C/T2# регистра T2CON. При С/Т2#=1 он работает как счетчик, а при
ГЛАВА 3. МИКРОКОНВЕРТЕР АОцС812ФИРМЫ ANALOG DEVICES 139 C/T2# = 0 как таймер. В обоих случаях битом САР2 может быть уста- новлен режим захвата счетного значения (САР2 =1), либо режим счета с автоперезагрузкой исходного значения (САР2 = 0). Захват (фиксация) счетного значения из регистров данных ТН2, TL2 и перезагрузка этих ре- гистров исходным значением производится с использованием регистров RLAP2H, RLAP2L. Таймер 2 имеет два флага запросов прерывания, TF2 и EXF2. Оба за- проса обслуживаются с использованием одного вектора 2ВН. Идентифи- кацию запроса производит процедура обслуживания прерывания. Флаг TF2 устанавливается при переполнении счетного регистра Таймера 2 (RCLK = TCLK = 0), а флаг EXF2 устанавливается по перепаду «1» - «0» на входе Т2ЕХ. 3.6. Последовательные интерфейсы UART, 1%, SPI Микроконвертер ADp.C812 имеет три последовательных порта: асин- хронный порт UART и синхронные порты SPI, 12С. Порт UART. Последовательный порт UART обеспечивает асинхрон- ный дуплексный последовательный обмен с программируемым форматом передаваемого кадра. В целом, порт UART микроконвертера ADp.C812 соответствует блоку последовательного порта ядра 8x52, но отсутствуют регистры SADEN, SADDR и связанные с ними режимы работы. Регистр SBUF является сдвоенным регистром данных порта UART. Под одним именем и адресом выступают регистры приемника и передатчи- ка, что обеспечивает одновременный прием и передачу данных. Регистр SCON является регистром управления порта UART, он имеет индивиду- ально программируемые биты. 7 6 5 4 3 2 1 0 99Н DATA7 DATA6 DATA5 DATA DATA3 DATA2 DATA1 DATAO SBUF Исх.код 0 0 0 0 0 0 0 0 7 6 5 4 3 2 1 0 98Н ISPI WCOL SPE SPIM CPOL СРНА SPR1 SPRO SCON Исх.код 0000 0 0 00
140 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Бит Мнемо- ника Описание SCON.7 SMO Биты управления режимами работы SMO SM1 Режимы работы Скорость обмена SCON.6 SM1 0 0 8-битный сдвиговый регистр Fdsc/12 0 1 8-битный асинхронный обмен Скорость переполнения таймера/32 (х2) 1 0 9-битный асинхронный обмен ftsc/64 (х2) 1 1 9-битный асинхронный обмен Скорость переполнения таймера/32 (х2) SCON.5 SM2 Бит разрешения работы в многопроцессорной системе в режимах 2 и 3 SCON.4 REN Бит разрешения приемника SCON.3 TB8 9-й бит передаваемого кадра в режимах 2 и 3 SCON. 2 RB8 9-й бит принятого кадра в режимах 2 и 3 SCON.1 Tl Флаг прерывания передатчика SCON.O RI Флаг прерывания приемника Порт SPI. Последовательный порт SPI обеспечивает скоростной син- хронный обмен данными. Максимальная скорость передачи данных через порт SPI микроконвертера ADpC812 достигает 4 Мбит/сек при Ро5с=16МГц. Данные передаются пакетами по 8 бит. Кроме двух линий данных в состав SPl-интерфейса входят линии CSx# выбора устройств и линия синхронизации SCLOCK (рис. 3.10). Рис. 3.10. Соединение устройств по каналу SPI Интерфейс SPI является локальным, для совместной работы устройств достаточно согласовать уровни на линиях (питание устройств +3 В или
ГЛАВА 3. МИКРОКОНВЕРТЕР АОцСВ 12 ФИРМЫ ANALOG DEVICES 141 +5 В). С точки зрения программирования, драйвер микроконвертера ADpC812, обслуживающий связь с конкретным SPI устройством, должен обеспечить передачу и прием данных в соответствии со спецификацией этого устройства. Протоколы обмена и временные диаграммы обеспечива- ются встроенными в микроконтроллер и каждое устройство блоками SPI- интерфейса. При необходимости можно передавать данные в обоих направлениях по одной линии с разделением времени. Чтобы при этом исключить экс- тремальные состояния, если оба устройства захотят выдать данные на ли- нию одновременно, в линию данных включается последовательно резистор номиналом 1-10 кОм. Соединение между ведущим и ведомым устройствами с использовани- ем SPI интерфейса, показано на рис. 3.11. Вывод SCLOCK является вы- ходом тактового сигнала ведущего устройства и входом тактового сигнала ведомого. После команды записи ведущим устройством в регистр данных SPI-порта начинает работать тактовый генератор интерфейса SPI и запи- санные данные сдвигаются через вывод MOSI ведущего микроконтроллера на вывод MOSI ведомого. После сдвига байта данных тактовый генератор останавливается, устанавливается флаг окончания передачи ISPI. Если в регистре IE2 установлен бит разрешения прерывания ESI, то возникнет запрос прерывания. Тактовый генератор SPI SCK SCK MSB Ведущий MSB , r Ведомый LSB — 8-разрядный сдвиговый регистр MISO MISO 8-разрядный сдвиговый регистр MOSI MOSI Рис. 3.11. Обмен данными между устройствами по каналу SPI Для выбора SPI-устройства в качестве ведомого служит вход SS# с активным низким уровнем сигнала. Режим ведущий/ведомый может быть установлен и программным способом посредством установки или очистки бита SPIM в регистре управления SPICON. Два сдвиговых регистра ведущего и ведомого микроконтроллеров можно рассматривать как один разнесенный 16-разрядный циклический сдвиговый регистр. При сдвиге данных из ведущего микроконтроллера в
142 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ ведомый одновременно происходит сдвиг данных из ведомого микрокон- троллера в ведущий, т.е. в течение одного цикла сдвига происходит обмен данными между ведущим и ведомым микроконтроллерами. Передаваемые символы не могут быть записаны в регистр данных SPI прежде, чем будет полностью завершен цикл сдвига. С другой стороны, при приеме данных принимаемый символ должен быть считан из регистра данных SPI прежде, чем будет завершен прием следующего символа, в противном случае предыдущий символ будет потерян. Существует четыре варианта комбинации фазы и полярности сигнала SCLOCK относительно данных. Они задаются битами СРНА и CPOL. Форматы передачи данных по каналу SPI показаны на рис. 3.12. Рис. 3.12. Передача данных по каналу SPI при различных комбинациях фазы и полярности синхросигнала относительно данных
ГЛАВА 3. МИКРОКОНВЕРТЕР АОрС812 ФИРМЫ ANALOG DEVICES 143 Регистр SPIDAT является регистром данных порта SPI, а регистр SPICON управляет режимом работы порта SPI, а также содержит флаги прерывания и ошибки записи. Этот регистр управления имеет индивиду- ально программируемые биты. F7H Исхжод 7 6 5 4 3 2 1 0 SPIDAT DATA7 DATA6 DATA5 DATA4 DATA3 DATA2 DATA1 DATAO 0 0 0 0 0 0 0 0 7 6 5 4 3 2 1 0 F8H ISPI WCOL SPE SPIM CPOL СРНА SPR1 SPRO SPICON Исх.код 0 0 0 0 0 0 0 0 Бит Мнемоника Описание SPICON.7 ISPI Флаг прерывания порта SPI. Бит устанавливается аппаратно в конце передачи SPICON.6 WCOL Флаг ошибки записи SPICON.5 SPE Бит разрешения SPI Если = 1, то порт разрешен Если = 0, то порт запрещен SPICON.4 SPIM Бит установки режима ведущего Если = 1, то устройство яляется ведущим Если = 0, то устройство является ведомым SPICON.3 CPOL Бит выбора полярности синхросигнала Если = 1, то пассивный уровень высокий Если = 0, то пассивный уровень низкий SPICON.2 CPHA Бит выбора фазы синхросигнала Если=1, то фиксация по спадающему фронту Если = 0, то фиксация по нарастающему фронту SPICON. 1 SPR1 Биты выбора коэффициента деления синхрочастоты SPICON.O SPRO процессора для образования синхросигнала SPI Fspi=Fosc/[418,32,641 Порт 12С. Последовательный порт 12С обеспечивает меньшую скорость обмена, чем порт SPI. Его преимуществом является возможность переда- вать данные по локальной шине всего из двух линий, поскольку адрес устройства входит в посылку. По одной из линий передаются данные, а вторая служит для передачи синхросигнала. Каждая линия «подтянута» через резистор 1 - 10 кОм к потенциалу шины питания (рис. 3.13). Скорость обмена по каналу 12С определяется частотой синхросигнала SCLOCK, который формирует ведущее устройство.
144 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Рис. 3.13. Организация последовательного канала 12С Передача начинается стартовым битом, который идентифицируется в том случае, когда на линии данных имеет место переход «1» - «О», а ли- ния синхронизации имеет потенциал «1» (рис. 3.14). Рис. 3.14. Передача данных по каналу 12С За стартовым битом ведущее устройство посылает байт (у которого первым следует старший бит MSB), содержащий адрес ведомого устройст- ва и бит управления R/W# (рис. 3.15). Этот бит управляет направлением передачи: при R/W# = 0 ведущее устройство будет записывать данные в ведомое, а при R/W# = 1 будет читать.
ГЛАВА 3. МИКРОКОНВЕРТЕР АОцСВ 12 ФИРМЫ ANALOG DEVICES 145 MSB LSB R/W АДРЕС ВЕДОМОГО Рис. 3.15. Формат первого байта передачи по каналу 12С Операция чтения/записи будет иметь место, если будет получен пра- вильный бит подтверждения от ведомого устройства (рис. 3.16). Все ведо- мые устройства сравнивают посланный ведущим устройством адрес со сво- им собственным и устройство, идентифицировавшее адрес как свой, посы- лает бит подтверждения. Бит подтверждения представляет собой «О» во время 9-го импульса синхронизации и должен посылаться ведомым уст- ройством в конце каждого байта обмена. Рис. 3.16. Подтверждение от ведомого на шине 12С При отсутствии бита подтверждения и в конце обмена ведущее уст- ройство формирует условие «STOP». Этим условием является переход «О» - «1» на линии данных при «1» на линии синхронизации. В микроконвертере ADp.812 порт 12С обеспечивает аппаратную реали- зацию режима ведомого и программную реализацию режима ведущего. После включения питания или инициализации порт 12С настроен на режим ведомого.
146 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ логики Регистр I2CDAT является регистром данных, регистр I2CADD явля- ется регистром адреса, а регистр I2CCON — регистром управления порта 12С. Регистр I2CCON управляет режимом работы порта 12С, а также со- держит флаг прерывания. Этот регистр управления имеет индивидуально программируемые биты. 7 6 5______4_______3_______2______1 О 9АН DAT7 DAT6 DATS DAT4 DATS DAT2 DAT1 DATO I2CDAT Исх.код 0 0 0 0 0 0 0 0 7 6 5 4 3 2 1 0 9ВН AD7 AD6 AD5 AD4 AD3 AD2 AD1 ADO I2CADD Исх.код 0 0 0 0 0 0 0 0 Е8Н 7 6 5 4 3 2 1 0 I2CCON MDO MDE мео MDI I2CM I2CRS I2CTX I2CI Исх.код 0 0 0 0 0 0 0 0 Бит Мнемоника Описание I2CCON.7 MDO Бит данных на выходе в режиме ведущего. I2CCON.6 MDE Бит разрешения выходных данных в режиме ведущего. I2CCON.5 МСО Бит синхронизации на выходе режиме ведущего. I2CCON.4 MDI Бит данных на входе в режиме ведущего. I2CCON.3 I2CM Бит выбора режима ведущего. I2CCON.2 I2CRS Бит инициализации порта 12С. I2CCON.1 I2CTX Бит статуса передачи. I2CCON.O I2CI Флаг прерывания порта 12С. Ведомое устройство использует три младших бита регистра I2CCON. Поскольку этот режим поддержан аппаратно, идентификация бита START, выдача бита подтверждения, определение конца передачи и формирование запроса прерывания выполняются автоматически. Ведущее устройство использует старшие четыре бита регистра I2CCON для формирования сигналов на линиях SCLOCK и SDATA. По- скольку режим ведущего реализован программно, процедура обслужива- ния порта SPI должна управлять сигналами на этих линиях, используя прямо адресуемые биты регистра I2CCON.
ГЛАВА 3. МИКРОКОНВЕРТЕР ADpC812 ФИРМЫ ANALOG DEVICES 147 3.7. Система прерываний Система прерываний микроконвертера ADpC812 включает восемь ис- точников прерываний, которые обслуживаются в соответствии с двухуров- невой системой приоритетов. Источники прерываний, порядок их опроса при одинаковом установленном уровне приоритета, адреса векторов (таб- лицы прерываний) приведены в следующей таблице. Адреса векторов прерываний Прерывание Источник прерывания Адреса вектора Уровень приоритета PSMI Монитор напряжения питания 43Н 1 1Е0 Внешнее прерывание INTO/ ОЗН 2 ADCI Конец преобразования АЦП ЗЗН 3 TF0 Переполнение Таймера 0 овн 4 IE1 Внешнее прерывание INT1/ 13Н 5 TF1 Переполнение Таймера 1 1ВН 6 I2CI/ISPI Прерывание синхронного последовательного интерфейса звн 7 RI/TI Прерывание асинхронного интерфейса UART 23Н 8 TF2/EXF2 Прерывание от Таймера 2 2ВН 9 Для того, чтобы прерывания могли быть обслужены необходимо вы- полнить следующие подготовительные действия: 1. Расположить процедуру обслуживания прерывания по адресу, ука- занному в таблице переходов (соответствующего прерывания). 2. Установить в регистре IE бит разрешения всех прерываний (ЕА) в 3. Установить в регистре IE или IE2 бит разрешения индивидуального прерывания в «1». Для разрешения и установки приоритетов прерываний используются регистры IE, IP и IE2. В регистрах IE и IP могут адресоваться отдельные биты, а регистр IE2 адресуется только целиком как байт. Регистр IE содержит общий и индивидуальные бит разрешения всех источников прерываний. Для разрешения прерываний соответствующие биты должны быть установлены в «1». 08Н 7 6 5 4 3 2 1 0 ЕА EADC ЕТ2 ES ЕТ1 ЕХ1 ЕТО ЕХО Исх.код 0 0 0 0 0 0 0 0 IE
148 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Бит Мнемоника Описание IE.7 ЕА Общий бит разрешения прерываний. Должен быть установлен для обслуживания любого источника прерывания. Если ЕА=0, все прерывания запрещены IE.6 EADC Бит разрешения прерывания АЦП IE.5 ЕТ2 Бит разрешения прерывания по Переполнению Таймера 2 IE.4 ES Бит разрешения прерывания от Последовательного Порта UART IE.3 ЕТ1 Бит разрешения прерывания по Переполнению Таймера 1 IE.2 ЕХ1 Бит разрешения внешнего Прерывания INT1 IE.1 ЕТО Бит разрешения прерывания по Переполнению Таймера 0 IE.0 ЕХО Бит разрешения внешнего Прерывания INTO ЕХО) Регистр IE2 содержит индивидуальные биты разрешения прерываний от монитора питания и последовательных портов SPI и 12С. Для разреше- ния прерываний соответствующие биты должны быть установлены в «1». Битовой адресации у этого регистра нет. 7 6 5 4 3 2 1 0 09Н - - - - - EPSM ESI IE2 Исх.код 0 0 0 0 0 0 0 0 Бит Мнемоника Описание IE2.7-2.2 IE2.1 IE2.0 EPSM ESI Не используются Бит разрешения прерывания от монитора питания Бит разрешения прерывания от интерфейсов SPI/I2C Регистр IP устанавливает один из двух возможных уровней приорите- тов для источников прерывания. Установка соответствующего бита в «1» присваивает прерыванию высокий уровень, «О» - низкий. Биты могут про- граммироваться индивидуально. В8Н 7 6 5 4 3 2 1 0 IP PS1 PADC РТ2 PS РТ1 РХ1 РТО РХО Исх.код 0 0 0 0 0 0 0 0 Бит Мнемоника Описание IP.7 PSI Устанавливает приоритет прерывания от SPI/I2C IP.6 PADC Устанавливает приоритет прерывания от АЦП IP.5 РТ2 Устанавливает приоритет прерывания от Таймера 2 IP.4 PS Устанавливает приоритет прерывания от порта UART IP.3 РТ1 Устанавливает приоритет прерывания от Таймера 1 IP.2 РХ1 Устанавливает приоритет прерывания от внешнего источника INT1 IP.1 РТО Устанавливает приоритет прерывания от Таймера 0 IP.0 РХО Устанавливает приоритет прерывания от внешнего источника INTO
ГЛАВА 3. МИКРОКОНВЕРТЕР AD(iC812 ФИРМЫ ANALOG DEVICES 149 В регистре IP отсутствует бит приоритета запроса от монитора пита- ния, поскольку этот источник всегда имеет высокий приоритет. 3.8. Внутренняя flash-память программ и данных Внутренняя память программ. Внутренняя flash-память программ микроконвертера объемом 8 Кбайт может быть запрограммирована прямо на плате через последовательный порт UART, либо перед установкой мик- росхемы с использованием одного из промышленных программаторов. Ре- жим загрузки через последовательный порт устанавливается после вклю- чения питания, если вывод PSEN# через резистор (около 1 кОм) подклю- чен к земле. Опция загрузки памяти программ (Load+Run) появляется в команде RUN интегрированной системы программирования «ТурбоАс- семблер-51» при настройке этой системы на программирование микрокон- вертера ADpC812 (см. главу 6). Внутренняя flash-память данных. Внутренняя энергонезависимая па- мять данных имеет объем 640 байт и разбита на страницы по 4 байта. Все- го страниц 160 (рис. 3.17), обращение к этой памяти производится с ис- пользованием нескольких регистров спецфункций. Регистры EDAT1- EDAT4 предназначены для хранения данных страницы, регистр EADRL используется для хранения адреса страницы, а в регистр ECON записыва- ется текущая команда обращения к памяти. Байт 1 Байт 2 БайтЗ Байт 4 I I Рис. 3.17. Внутренняя flash-память данных Команда, записанная в регистр ECON, сразу выполняется. Стирание одной страницы и всей flash-памяти данных выполняется за 20 мс, запись одной страницы занимает 250 мксек, а чтение страницы Длится командный цикл. Следует обратить внимание на эти цифры, по- скольку на время обслуживания flash-памяти данных запросы прерываний откладываются. Сразу после записи команды в регистр ECON процессор переходит в режим пониженного энергопотребления (таймеры/счетчики продолжают функционировать) и находится в нем до конца работы с этой памятью. Команды работы с flash-памятью данных, коды которых могут быть записаны в регистр ECON, приведены ниже.
150 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Код команды Описание 01Н Чтение страницы. Данные страницы с адресом EADRL заносятся в регистры EDATAx 02Н Запись страницы. Данные из регистров EDATAx записываются в страницу с адресом EADRL ОЗН Резервный код. Не использовать 04Н Верификация. Сравниваются данные страницы по адресу EADRL с содержимым регистров EDATAx. При следующем чтении регистра ECON в нем будет 0, если данные совпадают 05Н Стирание страницы по адресу EADRL 06Н Стирание всей flash-памяти данных 07Н - FFH Резервные коды. Не использовать Программирование байта памяти данных возможно после стирания его содержимого. Особенностью flash-памяти является то, что команду стира- ния можно выполнить только для всей страницы (или матрицы). После стирания каждый байт страницы содержит код FFh. Запись нового значе- ния в ячейку flash-памяти данных можно выполнить при помощи следую- щей процедуры: MOV MOV MOV MOV MOV EADRL, #03h ECON, #01h EDATA2, #0F3h ECON, #02h ECON, #05h ; загрузка указателя страницы ; чтение страницы ; запись нового значения в регистр ; стирание страницы ; запись страницы Эта процедура вначале копирует содержимое страницы в регистры данных, затем меняет содержимое нужного байта, затирает страницу и по- сле этого копирует содержимое регистров данных во flash-память. 3.9. Монитор напряжения питания и сторожевой таймер Монитор напряжения питания (PSM) формирует запрос прерывания, если цифровое или аналоговое питание становится меньше значения, кото- рое может быть установлено программно (от 2,6 В до 4,6 В). Процедура обслуживания этого прерывания должна сохранить состояние регистров процессора в энергонезависимой памяти. Флаг прерывания очищается при нормализации питания, но не ранее 256 мсек с момента установки. Монитор напряжения питания управляется регистром PSMCON. DFH Исх.код PSMCON
ГЛАВА 3. МИКРОКОНВЕРТЕР А0цС812ФИРМЫ ANALOG DEVICES 151 Бит Описание PSMCON.7 PSMCON.6 PSMCON.5 PSMC0N.4 PSMCON.3 PSMCON.2 PSMCON.1 PSMCON.O Не используется Бит состояния монитора: "Г - нормальная работа, “0" - ошибка Флаг прерывания PSM Биты выбора порогового напряжения [4,63 В, 4,37 В, 3,08 В, 2,93 В, 2,63 В] Бит выбора контролируемого напряжения: "Г = AVDD, "0" = DVDD Бит управления PSM Powerdown Сторожевой таймер (WDT) предназначен для вывода системы из за- висаний рабочей программы. Сторожевой таймер управляется регистром WDCON. 7 6 5 4 3 2 1 0 СОН PRE2 PRE1 PREO - WDR1 WDR2 WDS WDE WDCON Исхжод 0 0 0 0 0 0 0 0 Бит Мнемоника Описание WDCON.7 WDCON.6 WDCON.5 WDCON .4 WDCON .3 WDCON .2 WDCON .1 WDCON .0 PRE2 PRE1 PREO WDR1 WDR2 WDS WDE Биты выбора интервала времени до сброса [16, 32, 64, 128, 256, 512, 1024, 2048] мсек Не используется Биты перезагрузки сторожевого таймера, должны уста- навливаться последовательно Бит состояния сторожевого таймера Бит разрешения строжевого таймера Сторожевой таймер функционирует, если установлен бит WDE реги- стра WDCON. Биты PRE2, PRE1 определяют интервал времени, в конце которого сторожевой таймер формирует системный сброс микроконверте- ра. Рабочая программа при всех вариантах реализации алгоритма должна периодически перезагружать сторожевой таймер, не допуская его срабаты- вания. Перезагрузка осуществляется последовательной установкой битов WDR1, WDR2. Отсутствие перезагрузки свидетельствует о непредусмот- ренной задержке, идентифицируется как зависание и вызывает системный сброс и перезагрузку микроконвертера.
ГЛАВА 4 МИКРОКОНТРОЛЛЕРЫ ФИРМЫ ATMEL С АРХИТЕКТУРОЙ AVR 4.1. Особенности семейства AVR В этой главе мы рассмотрим фирменную RISC-архитектуру AVR компании Atmel на примере 8-разрядного микроконтроллера ATmegalO3. Микроконтроллер ATmegalO3 является старшей моделью семейства AVR фирмы Atmel. Семейство AVR (АТ90) удачно воплощает современ- ные тенденции архитектуры RISC-микроконтроллеров, что в сочетании с достижениями фирмы Atmel в области создания flash-памяти сделало его весьма популярным на мировом рынке 8-разрядных микроконтроллеров. Высокие характеристики семейства AVR обеспечиваются следующи- ми особенностями архитектуры: • В качестве памяти программ используется внутренняя flash-память. Она организована в виде матрицы 16-разрядных ячеек и может за- гружаться программатором, либо через порт SPI; • Система команд включает 120 инструкций. Все инструкции 16 и 32- разряд ные; • 16-разрядные память программ и шина команд вместе с одноуровне- вым конвейером позволяют выполнить большинство инструкций за один такт синхрогенератора (50 нс при частоте Fosc = 20 МГц); • память данных имеет 8-разрядную организацию. Младшие 32 адреса пространства занимают регистры общего назначения, далее следуют 64 адреса регистров ввода-вывода, затем внутреннее ОЗУ данных
ГЛАВА 4. МИКРОКОНТРОЛЛЕРЫ ФИРМЫ ATMEL С АРХИТЕКТУРОЙ AVR 153 объемом до 4000 ячеек. Возможно применение внешнего ОЗУ дан- ных объемом до 60 Кбайт; • внутренняя энергонезависимая память типа EEPROM объемом до 4 Кбайт представляет собой самостоятельную матрицу, обращение к которой осуществляется через специальные регистры ввода/вывода; Важным преимуществом микроконтроллеров classic AVR является их совместимость по функциям выводов с микроконтроллерами архитектуры MCS-51. Это позволяет во многих случаях увеличить производительность имеющейся системы управления посредством замены микроконтроллера, разработки и отладки рабочей программы. Семейство AVR включает около двух десятков типов 8-разрядных микроконтроллеров трех основных линий: . Tiny AVR представляют собой низкостоимостные микроконтролле- ры, как правило, в 8-выводном корпусе. Их особенностью является встроенная схема контроля напряжения питания; • Classic AVR является основной линией семейства. Быстродействие некоторых моделей достигает 16 MIPS, flash-память программ 2-8 Кбайт, EEPROM данных 64-512 байт, ОЗУ данных 128-512 байт; • Меда AVR представляет собой старшую модель, ориентированную на высокопроизводительную работу со сложными задачами, требую- щими больших ресурсов памяти. Flash ROM программ составляет 16-128 Кбайт, EEPROM данных 512 байт, ОЗУ данных 1-4 Кбайт. Имеются 10-разрядный АЦП и аналоговый компаратор Благодаря универсальности, широкому набору функциональных воз- можностей, высоким техническим характеристикам микроконтроллеры семейства AVR находят все более широкое применение в системах управ- ления различными объектами. В составе семейства существуют модифи- кации с низковольтным питанием (3 В). Ниже в таблице приведены параметры некоторых микроконтролле- ров семейства AVR. В верхней части таблицы указаны поставляемые микросхемы, а в нижней перспективные. Все микроконтроллеры семейства AVR имеют общие принципы функционирования, единую систему команд, используют одинаковые ме- тоды адресации. Микроконтроллер ATmegalO3 является типичным представителем семейства AVR. Знакомство с ним позволит освоить основные методы проектирования, программирования и отладки систем управления на базе современных RISC микроконтроллеров.
154 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ логики Микроконтроллеры семейства AVR Тип Flash память программ, Кбайт ОЗУ, байт EEPROM, байт Тайме- ры Поел, порты АЦП, компа- ратор Частота, МГц Корпус ATiny11 (L) 1 0 0 1 - комп. 0...6 DIP8 SOIC8 ATiny12 (L) 1 0 64 1 - комп. 0...8 DIP8 SOIC8 ATiny15(L) 1 0 64 2 PWM - АЦП комп. 1,6 DIP8 SOIC8 ATiny22 (L) 2 128 128 1 - - 0...8 DIP8 SOIC8 ATiny28 (L) 2 0 0 1 - - 0...4 DIP8 TQFP32 AT90S1200 1 0 64 1 — комп. 0...12 DIP20 SOIC20 SSOP20 AT90S2313 2 128 128 2 PWM UART комп. 0...10 DIP20 SOIC20 AT90S2323 AT90S2343 2 128 128 1 — - 0...10 DIP8 SOIC8 AT90S2333 2 128 128 2 2*PWM SPI UART комп. АЦП 0...8 DIP28 TQFP32 AT90S4414 4 256 256 2 2*PWM SPI UART комп. 0...8 DIP40 PLCC44 TQFP44 AT90S4433 4 128 256 2 2‘PWM SPI UART АЦП комп. 0...8 DIP28 TQFP32 AT90S4434 4 256 256 3 3*PWM SPI UART АЦП комп. 0...8 DIP40 PLCC44 TQFP44 AT90S8515 8 512 512 2 2*PWM SPI UART комп. 0...8 DIP40 PLCC44 TQFP44 AT90S8535 8 512 512 3 3‘PWM SPI UART АЦП комп. 0...8 DIP40 PLCC44 TQFP44 ATmega163(L) 16 1К 512 3 4*PWM SPI UART АЦП комп. 0...6 DIP40 PLCC44 TQFP44 ATmega103(L) 128 4К 4К 3 4*PWM SPI UART АЦП комп. 0...6 TQFP64 ATmega161(L) 16 1К 512 3 4*PWM SPI 2 UART комп. 0...6 DIP40 PLCC44 TQFP44 ATmega83 (L) 8 512 512 3 4*PWM SPI UART АЦП, комп. 0...6 DIP40 PLCC44 TQFP44 ATmega128 128 4К 4К 3 PWM SPI UART АЦП комп. 0...16 TQFP64
ГЛАВА 4. МИКРОКОНТРОЛЛЕРЫ ФИРМЫ ATMEL С АРХИТЕКТУРОЙ AVR -| 55 4.2. Структура и функционирование микроконтроллера АТтедаЮЗ Структура микроконтроллера включает следующие функциональные блоки: • 8-разрядное арифметическо-логическое устройство (АЛУ); • внутреннюю flash-память программ объемом 128 Кбайт с возможно- стью внутрисистемного программирования через последовательный интерфейс; • 32 регистра общего назначения; • внутреннюю EEPROM память данных объемом 4 Кбайт; • внутреннее ОЗУ данных объемом 4 Кбайт; • 6 параллельных 8-разрядных портов; • 3 программируемых таймера-счетчика; • 10-разрядный 8-канальный АЦП и аналоговый компаратор; • последовательные интерфейсы UART и SPI; • блоки прерывания и управления (включая сторожевой таймер). На рис. 4.1 изображен корпус и приведено назначение выводов мик- роконтроллера. В скобках указана альтернативная функция вывода, если она существует. Port А (РА7..РА0). 8-разрядный двунаправленный порт. К выводам порта могут быть подключены встроенные нагрузочные резисторы (от- дельно к каждому разряду). Выходные буферы обеспечивают ток 20 мА и способны прямо управлять светодиодным индикатором. При использова- нии выводов порта в качестве входов и установке внешнего сигнала в низкое состояние, ток будет вытекать только при подключенных встроен- ных нагрузочных резисторах. Порт А при наличии внешней памяти дан- ных используется для организации мультиплексируемой шины адре- са/ данных. Port В (РВ7..РВ0). 8-разрядный двунаправленный порт со встроен- ными нагрузочными резисторами. Выходные буферы обеспечивают ток 20 мА. При использовании выводов порта в качестве входов и установке внешнего сигнала в низкое состояние, ток будет вытекать только при подключенных встроенных нагрузочных резисторах. Порт В использует- ся также при реализации специальных функций. Port С (РС7..РС0). Порт С является 8-разрядным выходным пор- том. Выходные буферы обеспечивают ток 20 мА. Порт С при наличии внешней памяти данных используется для организации шины адреса. Port D (PD7..PD0). 8-разрядный двунаправленный порт со встро- енными нагрузочными резисторами. Выходные буферы обеспечивают ток 20 мА. При использовании выводов порта в качестве входов и установке внешнего сигнала в низкое состояние, ток будет вытекать только при
156 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ подключенных встроенных нагрузочных резисторах. Порт D использует- ся также при реализации специальных функций. пппппппппппппппп (AD2) РА2 Е (AD1)PAlE (ADO) PAOC Vcc Г GND C (ADC7) PF7 E (ADC6) PF6 C (ADC5) PF5 E (ADC4) PF4 E (ADC3) PF3 C (ADC2) PF2 C (ADC1) PF1 C (ADCO) PFO E arefE agndE AVcc E 49 50 51 52 53 54 55 56 57 58 59 60 61 64 АТтедаЮЗ Метка первого вывода 3 PD7 (T2) 3PD6(T1) 30 3 PD5 32 31 27 26 25 24 23 22 21 20 19 18 17 3 PD1 (INT1) I)PDO(INTO) ЗХТАЫ 3XTAL2 3gnd 3 Vcc □reset 3tosci 3TOSC2 3 РВ7 (OC2/PWM2) Рис. 4.1. Вид корпуса и назначение выводов микроконтроллера АТтедаЮЗ Port Е (РЕ7..РЕ0). 8-разрядный двунаправленный порт со встроен- ными нагрузочными резисторами. Выходные буферы обеспечивают ток 20 мА. При использовании выводов порта в качестве входов и установке внешнего сигнала в низкое состояние, вытекающий через них ток обеспе- чивается только при подключенных встроенных нагрузочных резисторах. Порт Е используется также при реализации специальных функций. Port F (PF7..PF0). 8-разрядный входной порт. Входы порта ис- пользуются также как аналоговые входы аналого-цифрового преобразова- теля.
ГЛАВА 4. МИКРОКОНТРОЛЛЕРЫ ФИРМЫ ATMEL С АРХИТЕКТУРОЙ AVR 157 RESET. Вход сброса. Для выполнения сброса необходимо удержи- вать низкий уровень на входе более 50 нс. XTALi, XTAL2. Вход и выход инвертирующего усилителя генерато- ра тактовой частоты. TOSC1, TOSC2. Вход и выход инвертирующего усилителя генерато- ра таймера/счетчика. WR#, RD#. Стробы записи и чтения внешней памяти данных. ALE. Строб разрешения фиксации адреса внешней памяти. Строб ALE используется для фиксации младшего байта адреса с выводов ADO - AD7 в защелке адреса в течение первого цикла обращения. В тече- ние второго цикла обращения выводы ADO - AD7 используются для пе- редачи данных. AVCC. Напряжение питания аналого-цифрового преобразователя. Вывод подсоединяется к Vcc через низкочастотный фильтр. AREF. Вход опорного напряжения для аналого-цифрового преобра- зователя. На этот вывод подается напряжение в диапазоне между AGND и AVCC. AGND. Это вывод должен быть подсоединен к отдельной аналоговой земле, если она есть на плате. В ином случае вывод подсоединяется к общей земле. PEN#. Вывод разрешения программирования через последователь- ный интерфейс. При удержании сигнала на этом выводе на низком уров- не после включения питания, прибор переходит в режим программирова- ния по последовательному каналу. Vcc» GND. Напряжение питания и земля. Микроконтроллеры AVR имеют раздельные пространства адресов памяти программ и данных (гарвардская архитектура). Организация па- мяти показана на рис. 4.2. Как видно из рис. 4.2, 32 регистра общего назначения включены в сквозное адресное пространство ОЗУ данных и занимают младшие адре- са. Эти регистры на самом деле находятся вне памяти данных, но их включение в единое адресное пространство обеспечивает гибкость при программировании. Файл регистров общего назначения прямо связан с АЛУ, каждый из регистров способен работать как аккумулятор. Большинство команд выполняются за один такт, при этом из регист- ров файла могут быть выбраны два операнда, выполнена операция и ре- зультат возвращен в регистровый файл. Старшие шесть регистров файла могут использоваться как три 16-разрядных регистра, и выполнять роль, например, указателей при косвенной адресации (рис. 4.3). Следующие 64 адреса за регистрами общего назначения занимают ре- гистры ввода-вывода. В этой области сгруппированы все регистры дан-
158 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ ных, управления и статуса внутренних программируемых блоков ввода- вывода. $FFFF $FFFF $0000 Rash-память программ (64К х 16) $1000 $OFFF $0060 $005F $0020 $0000 - 001F Внешнее ОЗУ данных (60000К х 8) Внутреннее ОЗУ данных (4000 x 8) 64 регистра ввода-вывода 32 РОН Внутренняя EEPROM данных Память программ Память данных Рис. 4.2. Организация памяти микроконтроллера АТтедаЮЗ При использовании команд IN и OUT используются адреса ввода- вывода с $00 по $3F. Но к регистрам ввода-вывода можно обращаться и как к ячейкам внутреннего ОЗУ. При этом к непосредственному адресу ввода-вывода прибавляется $20. 7________0 Адрес R31 $1F Старший байт регистра Z R30 $1Е Младший байт регистра Z R29 $1D Старший байт регистра Y R28 $1С Младший байт регистра Y R27 $1В Старший байт регистра X R26 $1А Младший байт регистра X R17 $11 R16 $10 R15 $0F R14 $0Е R13 $0D R2 $02 R1 $01 R0 $00 Рис. 4.3. Регистры общего назначения микроконтроллера АТтедаЮЗ Адрес регистра как ячейки ОЗУ приводится далее в круглых скоб- ках. Регистры ввода-вывода с $00 ($20) по $1F ($3F) имеют программно доступные биты. Обращение к ним осуществляется командами SBI и
ГЛАВА 4. МИКРОКОНТРОЛЛЕРЫ ФИРМЫ ATMEL С АРХИТЕКТУРОЙ AVR 159 CBI, а проверка состояния - командами SBIS и SBIC. В следующей таб- лице приведен список регистров ввода-вывода. Регистры ввода-вывода микроконтроллера АТтедаЮЗ Адрес I/O (адрес SRAM) Обозна- чение Функция $3F($5F) SREG Регистр статуса $ЗЕ($5Е) SPH Старший байт указателя стека $3D($5D) SPL Младший байт указателя стека $ЗС($5С) XPIV Регистр управления делением тактовой частоты $ЗВ($5В) RAMPZ Регистр/выбора страницы $ЗА($5А) IECR Регистр управления внешними прерываниями $39($59) EIMSK Регистр масок внешних прерываний $38($58) EIFR Регистр флагов внешних прерываний $37($57) TIMSK Регистр масок прерываний таймеровм/счетчиков $36($56) TIFR Регистр флагов прерывания таймеров/счетчиков $35($55) MCUCR Регистр управления процессора $34($54) MCUSR Регистр статуса процессора $33($53) TCCRO Регистр управления таймером/счетчиком 0 $32($52) TCNTO Таймер/счетчик 0 $31 ($51) OCRO Регистр сравнения выхода таймера/счетчика 0 $30($50) ASSR Регистр статуса асинхронного режима $2F($4F) TCCR1A Регистр управления А таймера/счетчика 1 $2Е($4Е) TCCR1B Регистр управления В таймера/счетчика 1 $2D($4D) TCNT1H Старший байт таймера/счетчика 1 $2С(44С) TCNT1L Младший байт таймера/счетчика 1 $2В($4В) OCR1АН Старший байт регистра А сравнения выхода таймера/счетчика 1 $2А($4А) OCR1AL Младший байт регистра А сравнения выхода таймера/счетчика 1 $29($49) OCR1BH Старший байт регистра В сравнения выхода таймера/счетчика 1 $28($48) OCR1BL Младший байт регистра В сравнения выхода таймера/счетчика 1 $27($47) ICR1H Старший байт регистра захвата таймера/счетчика 1 $26($46) ICR1L Младший байт регистра захвата таймера/счетчика 1 $25($45) TCCR2 Регистр управления таймера/счетчика 2 $24($44) TCNT2 Таймер/счетчик 2 $23($43) OCR2 Регистр сравнения выхода таймера/счетчика 2 $21(341) WPTCR Регистр управления сторожевого таймера $1F($3F) EEARH Старший байт регистра адреса EEPROM $1Е($ЗЕ) EEARL Младший байт регистра адреса EEPROM $1Р($ЗР) EEPR Регистр данных EEPROM $1С($ЗС) EECR Регистр управления EEPROM $1В($ЗВ) PORTA Регистр данных порта А $1А($ЗА) PPRA Регистр направления данных порта А $19(339) PINA Выводы входов порта А $18($38) PORTB Регистр данных порта В $17($37) ODRB Регистр направления данных порта В $16($36) PINB Выводы входов порта В $15(335) PORTC Регистр данных порта С $12(332) PORTO Регистр данных порта D $11($31) CORP Регистр направления данных порта D $10($30) PINO Выводы входов порта D
160 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ $0F($2F) SPDR Регистр данных порта SPI $0Е($2Е) SPSR Регистр статуса порта SPI $0D($2D) SPCR Регистр управления порта SPI $0С($2С) UDR Регистр данных порта UART $0В($2В) USR Регистр статуса порта UART $0А($2А) UCR Регистр управления порта UART $09($29) UBRR Регистр управления скоростью порта UART $08($28) ACSR Регистр управления и статуса аналогового компаратора $07($27) ADMUX Регистр мультиплексора АЦП $06($26) ADCSR Регистр управления и статуса АЦП $05($25) ADCH Старший байт регистра данных АЦП $04($24) ADCL Младший байт регистра данных АЦП $03($23) PORTE Регистр данных порта Е $02($22) DDRE Регистр направления данных порта Е $01 ($21) PINE Выводы входов порта Е $00($20) PINF Выводы входов порта F В пространстве регистров ввода-вывода находятся и регистры управ- ления процессором микроконтроллера: регистр состояния, указатель сте- ка, регистр выбора страницы, регистр управления процессором, регистр управления коэффициентом деления частот. Формат этих регистров сле- дующий: Регистр состояния SREG 7 6 5 4 3 2 1 0 $3F ($5F) 1 т н S V N Z С SREG Исх.код 0 0 0 0 0 0 0 0 SREG.7 — I: Бит разрешения всех прерываний. Для разрешения прерываний этот бит должен быть установлен (=1). Разрешение конкрет- ного прерывания выполняется регистрами маски прерывания EIMSK и TIMSK. Если этот бит очищен (=0), то ни одно из прерываний не обра- батывается. Бит аппаратно очищается после возникновения прерывания и устанавливается (разрешая последующие прерывания) командой RETI. SREG.6 — Т: Бит сохранения копии. Команды копирования бита BLD и BST используют этот бит как источник и приемник при операциях с битами. Командой BST бит регистра общего назначения копируется в бит Т, командой BLD бит Т копируется в бит регистра общего назначе- ния. SREG.5 - Н: Флаг полупереноса. Флаг полупереноса указывает на перенос между тетрадами при выполнении ряда арифметических опера- ций. Подробности приведены в описании системы команд. SREG.4 — S: Бит знака. Бит S имеет значение результата операции исключающее ИЛИ (N®V) над флагами отрицательного значения (N) и дополнения до двух флага переполнения (V) . Подробности приведены в описании системы команд.
ГЛАВА 4. МИКРОКОНТРОЛЛЕРЫ ФИРМЫ ATMEL С АРХИТЕКТУРОЙ AVR 161 SREG.3 ~ V: Флаг переполнения. Этот бит поддерживает арифмети- ку дополнения до двух. SREG.2 - N: Флаг отрицательного значения. Этот флаг указывает на отрицательный результат арифметических и логических операций. SREG. 1 - Z: Флаг нулевого значения. Этот флаг указывает на нуле- вой результат ряда арифметических и логических операций. SREG.0 - С: Флаг переноса. Этот флаг указывает на перенос при арифметических и логических операциях. Указатель стека - SP $ЗЕ ($5Е) $3D ($5D) 7 6 5 4 3 2 1 0 SPH SPL SP15 SP14 SP13 SP12 SP11 SP10 SP9 SP8 SP7 SP6 SP5 SP4 SP3 SP2 SP1 SP0 Исхжод 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Микроконтроллеры AVR имеют 16-разрядный указатель стека, раз- мещенный в двух регистрах ввода-вывода. Поскольку микроконтроллеры поддерживают объем ОЗУ до 64 Кбайт, то используются все 16 разрядов указателя стека. Указатель стека указывает на область в ОЗУ данных, в которой раз- мещается стек подпрограмм и процедур прерываний. Начальный адрес указателя должен задаваться программно перед вызовом подпрограмм и разрешением прерываний. Начальное значение должно быть больше $60. Указатель стека декрементируется на единицу при каждом занесении ко- мандой PUSH данных в стек, и на две единицы при занесении в стек ад- реса при вызове подпрограммы или процедуры прерывания. Указатель стека инкрементируется на единицу при извлечении дан- ных из стека командой POP, и на две единицы при извлечении адреса из стека при возврате из подпрограммы (RET) или возврате из процедуры прерывания (RETI). $ЗВ ($5В) Исх.код Регистр выбора страницы ОЗУ - RAMPZ 7 6 5 4 3 2 1 0 - - - - - - RAMPZ0 0000000 0 RAMPZ Регистр RAMPZ используется обычно для определения страницы ОЗУ данных, к которой возможно обращение посредством указателя Z. Поскольку микроконтроллеры ATmegalO3 не поддерживают ОЗУ объе- мом более 64 К, этот регистр используется только для выбора страницы в памяти программ при использовании команды ELPM. Имеются следую- щие варианты использования единственного значащего бита RAMPZ0:
162 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ • RAMPZ0 = 0: Команде ELPM доступна память программ с адре- сами от $0000 до $7FFF (младшие 64 Кбайт) • RAMPZ0 = 1: Команде ELPM доступна память программ с адре- сами от $8000 до $FFFF (старшие 64 Кбайт). На команду LPM установки регистра RAMPZ не воздействуют. Микроконтроллер ATmega603 не содержит регистра RAMPZ и не имеет команды ELPM. Команда LPM способна перекрыть все простран- ства памяти программ микроконтроллера Atmega603. $35 ($55) Ис х.код Регистр управления процессора - MCUCR 7 6 5 4 3 2 1 0 | SRE SRW SE SM1 SM0 - - 0 0 0 0 0 0 0 0 MCUCR Биты регистра управления MCUCR управляют выполнением основ- ных функций процессора. MCUCR.7 ~ SRE: Разрешение внешнего ОЗУ. Установленный (=1) бит SRE разрешает обращение к внешней памяти данных и переводит работу выводов AD0 - 7 (Порт А), А8 - 15 (Порт С), WR и RD на вы- полнение альтернативной функции. Бит SRE также перенастраивает ус- тановки направлений в соответствующих регистрах направления данных. Очистка бита SRE ( =0) запрещает обращение к внешней памяти данных и восстанавливает нормальные установки направлений выводов и данных. MCUCR.6 ~ SRW: Режим состояния ожидания. При установленном (=1) бите SRW к циклу обращений к внешней памяти данных добавляет- ся один цикл ожидания. При сброшенном (0) бите SRW обращение к внешней памяти выполняется по трехцикловой схеме. MCUCR.5 - SE: Разрешение режима энергосбережения. Установ- ленный в 1 бит SE разрешает перевод MCU в режим sleep по команде SLEEP. Чтобы исключить перевод MCU в незапланированный режим sleep, рекомендуется устанавливать бит SE непосредственно перед выпол- нением команды SLEEP. MCUCR.4,3 ~ SM1, SM0: Биты выбора режима энергосбережения. Эти биты позволяют выбрать один из трех возможных режимов энерго- сбережения следующим образом. SM1 SM0 Режим 0 0 Режим Idle 0 1 Зарезервирован 1 0 Режим Power Down 1 1 Режим Power Save MCUCR.2..0 — Зарезервированные биты
ГЛАВА 4. МИКРОКОНТРОЛЛЕРЫ ФИРМЫ ATMEL С АРХИТЕКТУРОЙ AVR 163 Регистр управления делением частоты кварцевого генератора - XDIV 7 6 5 4 3 21 О $ЗС ($5С)| XDIVEN | XDIV6 XDIV5 XDIV4 XDIV3 XDIV2 XDIV1 XDIVO XDIV Исх.код 00000000 Регистр XDIV используется для установки коэффициента деления частоты кварцевого генератора. Эта возможность может быть использова- на для уменьшения энергопотребления. XDIV.7 ~ XDIVEN: Разрешение деления частоты XTAL. При ус- тановленном (=1) бите XDIVEN тактовая частота для процессора и всей периферии получается в результате деления частоты Fosc на величину, установленную битами XDIV6 - XDIV0. XDIV.6..0 ~ Биты выбора коэффициента деления. Эти биты уста- навливают коэффициент деления тактовой частоты Fosc (при установлен- ном бите XDIVEN). Если десятичное значение этих семи битов обозна- чить через d, то результирующая тактовая частота процессора будет оп- ределяться по формуле: fclk = ХТА1_/(129 - d) Состояния этих битов можно изменить только при сброшенном бите XDIVEN. При установленном бите XDIVEN, записанное единовременно в биты XDIV6..XDIV0 значение будет определять коэффициент деления. При сбросе бита XDIVEN записанные в биты XDIV6..XDIV0 значения игнорируются. За регистрами ввода-вывода следуют 4000 адресов внутреннего ОЗУ данных. При использовании внешней памяти данных адресуются остав- шиеся 60 Кбайт. Таким образом, при использовании микросхем памяти объемом 64 К будут потеряны 4 Кбайта. При обращении к внешней и внутренней памяти данных используются одни и те же команды, но во втором случае сигналы RD# и WR# не активизируются. Работа с внешней памятью данных разрешается установкой бита SRE регистра MCUCR. По сравнению с обращением к внутренней памяти, обращение к внешней требует дополнительно одного цикла на каждый байт. Это означает, что для выполнения команд LD, ST, LDS, STS, PUSH и POP требуется дополнительно машинный цикл. Если стек раз- мещен во внешней памяти данных, то прерывания, вызов процедур и возвраты требуют по два дополнительных цикла, поскольку в стеке пере- мещается содержимое двухбайтного счетчика команд. Если при обмене с внешней памятью данных используется состояние ожидания, то на каж- дый байт необходимо еще два цикла. Поэтому командам пересылки дан- ных необходимы два дополнительных цикла, тогда как при обработке прерываний, вызове процедур и возвратах требуется на четыре цикла больше, чем указано в описании системы команд.
164 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ 4.3. Методы адресации и система команд При создании программы для микроконтроллера на языке Ассемблер разработчик оперирует программно доступными ресурсами микропроцес- сорной системы. У микроконтроллера ATmegalO3 эти ресурсы включают: программно доступные регистры микроконтроллера, внутреннюю память данных, внешнюю память данных. Перечисленные ресурсы изображены на рис. 4.2, 4.3. Каждая команда языка Ассемблер сообщает процессору выполняе- мую операцию и методы доступа к операндам. Командная строка Ассемб- лера включает метку (символический адрес), мнемонику (символическое имя) команды, поле операндов, комментарий. Имя команды однозначно связано с выполняемой ею операцией. Методы адресации представляют собой набор механизмов доступа к операндам. Одни из них просты и поэтому приводят к компактному фор- мату команды и быстрому доступу к операнду, но объем доступных с их помощью ресурсов ограничен. Другие методы адресации позволяют опе- рировать со всеми имеющимися в системе ресурсами, но команда получа- ется длинной, на ее ввод и выполнение тратится много времени. Набор методов адресации в каждой системе команд является компромиссным сочетанием известных механизмов адресации, выбранных проектировщи- ками архитектуры исходя из набора решаемых задач. Заметим, что при двух операндах и приемнике результата имеет ме- сто трехадресная команда и каждый адрес формируется с использованием собственного метода адресации. Если адрес операнда или приемника ре- зультата не указан в команде, а подразумевается, то имеет место неявная адресация. На рис. 4.4 — 4.15 приведены схемы методов адресации микрокон- троллера ATmegalO3. Регистровый файл Рис. 4.4. Регистровая адресация (один регистр общего назначения)
ГЛАВА 4. МИКРОКОНТРОЛЛЕРЫ ФИРМЫ ATMEL С АРХИТЕКТУРОЙ AVR 165 Регистровый файл Рис. 4.5. Регистровая адресация (два регистра общего назначения) Память I/O 3F ($5 F) 0($20) Рис. 4.6. Регистровая адресация (регистры ввода-вывода) ОЗУ данных $FFFF $0000 Рис. 4.7. Прямая адресация данных
166 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ ОЗУ данных $FFFF $0000 Рис. 4.8. Косвенная адресация данных со смещением ОЗУ данных $FFFF $0000 Рис. 4.9. Косвенная адресация данных ОЗУ данных $FFFF $0000 Рис. 4.10. Косвенная адресация данных с преддекрементом
ГЛАВА 4. МИКРОКОНТРОЛЛЕРЫ ФИРМЫ ATMEL С АРХИТЕКТУРОЙ AVR 167 ОЗУ данных Рис. 4.11. Косвенная адресация данных с постинкрементом Память программ $FFFF $0000 Рис. 4.12. Адресация константы в памяти программ в командах LPM и ELPM 31 21 20 1 Память программ SFFFF $0000 Рис. 4.13. Прямая адресация памяти программ в командах JMP и CALL
168 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ $FFFF $0000 Рис. 4.14. Косвенная адресация памяти программ в командах IJMP и ICALL Память программ $FFFF $0000 Рис. 4.15. Относительная адресация памяти программ в командах RJMP и RCALL Команды передачи данных приведены в следующей таблице. Из нее видно, что набор этих команд представляет собой сочетание восьми опе- раций с различными методами адресации. Команды передачи данных Мнемо- ника Операн- ды Описание Операция Флаги Кол-во циклов ELPM Расширенная загрузка из памяти программ в регистр R0 R0 <- (Z+RAMPZ) Нет 3 MOV Rd.Rr 0<d<31 0<r<31 Копировать регистр Rd<-Rr Нет 1 LDI Rd,К 16<d<31 0<k<255 Загрузить непосредственное значение Rd<-K Нет 1 LDS Rd,k 0<d<31 0<k<65535 Загрузить из ОЗУ Rd <- (k) Нет 3
ГЛАВА 4. МИКРОКОНТРОЛЛЕРЫ ФИРМЫ ATMEL С АРХИТЕКТУРОЙ AVR 169 Мнемо- ника Операн- ды Описание Операция Флаги Кол-во циклов LD Rd,X 0<d<31 Загрузить косвенно Rd <— (X) Нет 2 LD Rd,X+ 0<d<31 Загрузить косвенно с постинкрементом Rd 4- (X), Х4-Х+1 Нет 2 LD Rd,-X 0<d<31 Загрузить косвенно с преддекрементом Х4-Х- 1, Rd 4- (X) Нет 2 LD Rd,Y 0<d<31 Загрузить косвенно Rd *- (Y). Нет 2 LD Rd,Y+ 0<d<31 Загрузить косвенно с постинкрементом Rd4-(Y), Y4-Y+1 Нет 2 LD Rd,-Y 0<d<31 Загрузить косвенно с преддекрементом Y4-Y- 1, Rd4-(Y) Нет 2 LDD Rd,Y+q 0<d<31 0<q<63 Загрузить косвенно со смещением Rd 4- (Y+q) Нет 2 LD Rd,Z 0<d<31 Загрузить косвенно Rd 4- (Z) Нет 2 LD Rd,Z+ 0<d<31 Загрузить косвенно с постинкрементом Rd 4- (Z), Z4-Z+1 Нет 2 LD Rd,-Z 0<d<31 Загрузить косвенно с преддекрементом Z4-Z 1, Rd 4- (Z) Нет 2 LDD Rd,Z+q 0<d<31 0<q<31 Загрузить косвенно со смещением Rd 4- (Z+q) Нет 2 STS k,Rr 0<r<31 0<k<65535 Записать непосредственно в ОЗУ (k) 4— Rr Нет 3 ST X,Rr 0<r<31 Записать косвенно (X) 4- Rr Нет 2 ST X+,Rr 0<r<31 Записать косвенно с постинкрементом (X) 4- Rr, X4-X + 1 Нет 2 ST -X,Rr 0<r<31 Записать косвенно с п редцекрементом X4-X- 1, (X) 4-Rr Нет 2 ST Y,Rr 0<r<31 Записать косвенно (Y) 4- Rr Нет 2 ST Y+,Rr 0<r<31 Записать косвенно с постинкрементом (Y) 4- Rr, Y4-Y+ 1 Нет 2 ST -Y.Rr 0<r<31 Записать косвенно с преддекрементом Y4-Y- 1, (Y) 4- Rr Нет 2 STD Y+q,Rr 0<r<31 0<q<63 Записать косвенно со смещением (Y+q) 4- Rr Нет 2 ST Z,Rr 0<r<31 Записать косвенно (Z) 4- Rr Нет 2 ST Z+,Rr 0<r<31 Записать косвенно с постинкрементом (Z) 4- Rr, Z4-Z+ 1 Нет 2 ST -Z,Rr 0<r<31 Записать косвенно с преддекрементом Z4-Z 1, (Z) 4- Rr Нет 2
170 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Мнемо- ника Операн- ды Описание Операция Флаги Кол-во циклов STD Z+q.Rr 0<r<31 0<q<63 Записать косвенно co смещением (Z+q) <- Rr Her 2 LPM Загрузить байт из памяти программ RO<-(Z) Нет 3 IN Rd,P 0<d<31 0<P<63 Загрузить данные из порта I/O в регистр Rd <-Р Нет 1 OUT P,Rr 0<r<31 0<P<63 Записать данные из регистра в порт I/O P<-Rr Нет 1 PUSH Rr 0<r<31 Сохранить регистр в стеке STACK Rr Нет 2 POP Rd 0<d<31 Выгрузить регистр из стека Rd STACK Нет 2 Команды ELPM и LPM выполняют загрузку памяти программ. Команда MOV копирует содержимое одного регистра общего назна- чения в другой. Команда LDI загружает регистр общего назначения непосредственно константой (только R16 - R32), а команды LD выполняют загрузку ре- гистра из ячейки ОЗУ при косвенной адресации, используя в качестве источника адреса регистры X, Y, Z, а также варианты с постинкрементом и преддекрементом источника. Команда LDD выполняет эту же операцию при помощи косвенной адресации со смещением. Команда LDS загружает в регистр общего назначения содержимое прямо адресуемой ячейки памя- ти данных. Команда ST выполняют обратную операцию относительно LD - за- носит в косвенно адресуемую ячейку памяти данных содержимое регистра общего назначения, используя также варианты с постинкрементом и преддекрементом адреса. Команда STD выполняет эту же операцию при помощи косвенной адресации со смещением, а команда STS прямо адре- сует ячейку ОЗУ. Команда IN заносит содержимое регистра ввода-вывода в регистр общего назначения, а команда OUT выполняет обратную операцию. Команда PUSH сохраняет содержимое регистра в стеке, а команда POP выполняет обратную операцию. При выполнении этих команд кроме программного счетчика изменяется и значение указателя стека SP. Обратите внимание, что команды пересылки данных, как и рассмат- риваемые далее команды переходов значения флагов регистра SREG не изменяют.
ГЛАВА 4. МИКРОКОНТРОЛЛЕРЫ ФИРМЫ ATMEL С АРХИТЕКТУРОЙ AVR 171 Команды передачи управления (переходов) приведены ниже. Команды переходов Мне- моника Операн- ды Описание Операция Флаги Кол-во ЦИКЛОВ RJMP k -2K<k<2K Перейти относительно PC 4- PC + k + 1 Нет 2 LJMP Перейти косвенно PC4-Z Нет 2 JMP k 0<k<4M Перейти PC«-k Нет 3 RCALL К -2K<k<2K Вызвать подпрограмму относительно PC 4- PC + k + 1 Нет 3 ICALL Вызвать подпрограмму косвенно PC4-Z Нет 3 CALL К 0<k<64K Выполнить длинный вызов подпрограммы PC4-k Нет 4 RET Вернуться из подпрограммы PC 4- STACK Нет 4 RETI Вернуться из прерывания PC 4- STACK 1 4 CPSE Rd.Rr 0<d<31, 0<r<31 Сравнить и пропустить, если равно if Rd=Rr then PC 4- PC + 2 (or 3) Нет 1/2/3 SBRC Rr,b 0<r<31 0<b<7 Пропустить, если бит в регистре очищен if Rr(b)=O then PC 4-PC+ 2 (or 3) Нет 1/2/3 SBRS Rr,b 0<r<31 0<b<7 Пропустить, если бит в регистре установлен if Rr(b)=1 then PC 4- PC + 2 (or 3) Нет 1/2/3 SBIC P,b 0<P<31 0<b<7 Пропустить, если бит в регистре I/O очищен if l/OP(b)=0 then PC 4- PC + 2 (or 3) Нет 1/2/3 SBIS P.b 0<r<31 0<b<7 Пропустить, если бит в регистре I/O установлен if l/OP(b)=1 then PC 4- PC + 2 (or 3) Нет 1/2/3 BRBS s,k 0<s<7 -64<k<+63 Перейти, если бит в регистре статуса установлен if SREG(s)=1 then PC 4- PC + k + 1 Нет 1/2 BRBC s,k 0<s<7 -64<k<+63 Перейти, если бит в регистре статуса очищен if SREG(s)=O then PC 4- PC + k + 1 Нет 1/2 BREQ k -64<k<+63 Перейти, если равно if Rd=Rr(Z=1) then PC 4- PC + k + 1 Нет 1/2 BRNE k -64<k<+63 Перейти, если не равно if Rd*Rr(Z=O) then PC 4- PC + k + 1 Нет 1/2 BRCS k -64^+63 Перейти, если флаг переноса установлен if C=1 then PC 4- PC + k + 1 Нет 1/2 BRCC k -64^+63 Перейти, если флаг переноса очищен if C=Othen PC 4- PC + k + 1 Нет 1/2 BRSH k -64^+63 Перейти, если равно или больше (без знака) if Rd>Rr(C=O) then PC 4- PC + k + 1 Нет 1/2
172 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Мне- моника Операн- ды Описание Операция Флаги Кол-во циклов BRLO к -64<к<+63 Перейти, если меньше (без знака) if Rd<Rr(C=1) then PC ч- PC + k + 1 Нет 1/2 BRMI к -64<к<+63 Перейти, если минус if N=1 then PC ч- PC + k + 1 Нет 1/2 BRPL к -64<к<+63 Перейти, если плюс if N=Othen PC ч- PC + k + 1 Нет 1/2 BRGE к -64^+63 Перейти, если больше или равно (с учетом знака) if Rd>Rr(N®V=O) then PC ч- PC + k + 1 Нет 1/2 BRLT к -64^+63 Перейти, если меньше чем (со знаком) if Rd<Rr(N®V=1) then PC ч- PC + k + 1 Нет 1/2 BRHS к -64^к<+63 Перейти, если флаг полупереноса установлен if H=1 then PC ч- PC + k + 1 Нет 1/2 BRHC к -64^+63 Перейти, если флаг полупереноса очищен if H=Othen PC ч- PC + k + 1 Нет 1/2 BRTS к -64^к<+63 Перейти, если флаг Т установлен if T=1 then PC ч- PC + k + 1 Нет 1/2 BRTC к -64^к<+63 Перейти, если флаг Т очищен if T=Othen PC ч- PC + k + 1 Нет 1/2 BRVS к -64<к<+63 Перейти, если флаг переполнения установлен if V=1 then PC ч- PC + k + 1 Нет 1/2 BRVC к -64^к<+63 Перейти, если флаг переполнения очищен if V=Othen PC ч- PC + k + 1 Нет 1/2 BRIE к -64^kS+63 Перейти, если глобальное прерывание разрешено if 1=1 then PC ч- PC + k + 1 Нет 1/2 BRID к -64^kS+63 Перейти, если глобальное прерывание запрещено if l=Othen PC ч- PC + k + 1 Нет 1/2 Арифметические и логические команды, команды сдвигов и опера- ций с битами. Для обработки данных микроконтроллер ATmegalO3 ис- пользует группу команд, реализующих арифметические и логические операции, а также сдвиги. Важную и достаточно большую группу у каж- дого микроконтроллера образуют команды, выполняющие операции над отдельными битами. Арифметические операции являются операциями над 8-разрядными целыми числами. Для выполнения целочисленных операций над длинны- ми словами служат команды сложения и вычитания с учетом флага пере- носа. Для выполнения операций над числами с плавающей точкой, реа- лизации тригонометрических функций и т.д. служат библиотеки периода выполнения, входящие в состав интегрированной системы программиро- вания «Турбо Ассемблер- AVR». Арифметические и логические команды, а также команды сдвигов и операций с битами приведены в следующих двух таблицах.
ГЛАВА 4. МИКРОКОНТРОЛЛЕРЫ ФИРМЫ ATMEL С АРХИТЕКТУРОЙ AVR 173 Арис эметические и логические команды Мне- моника Операнды Описание Операция Флаги K-bo циклов ADD Rd,Rr 0<d<31 0<r<31 Сложить без переноса Rd 4 - Rd + Rr Z, C, N, V, H 1 ADC Rd.Rr 0<d<31 0<r<31 Сложить с переносом Rd 4 - Rd + Rr + C Z, C, N, V, H 1 ADIW Rd,К de{24,26,28,30} 0<K<63 Сложить непосредст- венное значение со словом RdhiRdl 4- RdhiRdl + К z, c, N, V 2 SUB Rd.Rr 0<d<31 0<r<31 Вычесть без заема Rd 4 - Rd - Rr Z, C, N, V, H 1 SUBI Rd, К 16<d<31 0<K<255 Вычесть непосредст- венное значение Rd 4 -Rd - К z, C, N, V, H 1 SBC Rd, Rr 0<d<31 0<r<31 Вычесть с заемом Rd 4 - Rd - Rr-C Z, C, N, V, H 1 SBC! Rd, К 16<d<31 0<K<255 Вычесть непосредст- венное значение с заемом Rd 4 - Rd - К - C z, C, N, V, H 1 SBIW Rd, К de{24,26,28,30} 0<K<63 Вычесть непосредст- венное значение из слова RdhiRdl 4- RdhiRdl - К z, C, N, V 2 AND Rd, Rr 0<d<31 0<г<31 Выполнить логическое AND Rd 4 - Rd • Rr Z, N, V 1 ANDI Rd, К 16<d<31 0<K<255 Логическое AND Rd 4 -Rd. К Z, N, V 1 OR Rd, Rr 0<d<31 0<r<31 Логическое OR Rd 4 - Rd v Rr Z, N, V 1 ORI Rd, К 16<d<31 0<K<255 Логическое OR с непосредственным значением Rd 4 -RdvK Z, N, V 1 EOR Rd, Rr 0<d<31 0<r<31 Исключающее OR Rd 4 - Rd Ф Rr Z, N, V 1 COM Rd 0Sd<31 Дополнение до единицы Rd 4 - SFF- Rd z, c, N, V 1 NEG Rd 0<d<31 Дополнение до двух Rd 4 - SOO - Rd Z, C, N, V, H 1 SBR Rd, К 16<d<31 0<K<255 Установить биты в регистре Rd 4 -RdvK Z, N, V 1
174 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ логики Мне- моника Операнды Описание Операция Флаги K-bo циклов CBR Rd, К 16<d<31 0<K<255 Очистить биты в регистре Rd ч- Rd • (SFF - К) Z, N, V 1 INC Rd 0<d<31 Инкрементировать Rd ч- Rd + 1 Z, N, V 1 DEC Rd 0<d<31 Декрементировать Rd ч- Rd - 1 Z, N, V 1 TST Rd 0<d<31 Проверить на ноль или минус Rd ч— Rd • Rd Z, N, V 1 CLR Rd 0<d<31 Очистить регистр Rd 4- Rd Ф Rd Z, N, V 1 SER Rd 16<d<31 Установить все биты регистра Rd 4— SFF нет 1 CP Rd, Rr 0<d<31 0<r<31 Сравнить Rd - Rr z, c, N, V, H 1 CPC Rd, Rr 0<d<31 0<r<31 Сравнить с учетом переноса Rd - Rr-C z, C, N, V, H 1 CPI Rd, К 16<d<31 0<K<255 Сравнить с константой Rd - К z, C, N, V, H 1 Команды сдвигов и операций с битами Мне- моника Операнды Описание Операция Флаги Кол-во циклов LSL Rd 0<d<31 Логически сдвинуть влево Rd(n+1) ч— Rd(n), Rd(0) ч-0, С ч- Rd(7) Z,C,N,V,H 1 LSR Rd 0<d<31 Логически сдвинуть вправо Rd(n) ч— Rd(n+1), Rd(7) ч-0, С ч— Rd(0) Z,C,N,V 1 ROL Rd 0<d<31 Сдвинуть влево через перенос Rd(O) ч-С, Rd(n+1) ч— Rd(n), С ч— Rd(7) Z,C,N,V,H 1 ROR Rd 0<d<31 Сдвинуть вправо через перенос Rd(7) ч-С, Rd(rt) ч— Rd(n+1), С ч— Rd(O) Z.C.N.V 1 ASR Rd 0<d<31 Арифметически сдвинуть вправо Rd(n) ч— Rd(n+1), C4-Rd(O), п=0...6 Z.C.N.V 1 SWAP Rd 0<d<31 Поменять нибблы местами Rd(3...O) oRd(7...4 ) Нет 1 BSET s 0<s<7 Установить флаг SREG(s)4- 1 SREG(s) 1 BCLR s 0<s<7 Очистить флаг SREG(s)4- 0 SREG(s) 1 SBI p.b 0<P<31 0<b<7 Установить бит в регистре I/O l/O(P,b)4- 1 Нет 2
ГЛАВА 4. МИКРОКОНТРОЛЛЕРЫ ФИРМЫ ATMEL С АРХИТЕКТУРОЙ AVR 175 Мне- моника Операнды Описание Операция Флаги Кол-во циклов CBI P,b 0<P<31 0<b<7 Очистить бит в регистре I/O 1/О(Р,Ь)<— 0 Нет 2 BST Rd,b 0<d<31 0<b<7 Переписать бит из регистра во флаг Т Т«- Rd(b) Т 1 BLD Rd,b 0<d<31 0<b<7 Загрузить Т флаг в бит регистра Rd(b) 4- Т Нет 1 SEC Установить флаг переноса Се- 1 С 1 CLC Очистить флаг переноса Сч-0 С 1 SEN Установить флаг отрицательного значения N«- 1 N 1 CLN Очистить флаг отрицательного значения N<—0 N 1 SEZ Установить флаг нулевого значения Z4-1 Z 1 CLZ Очистить флаг нулевого значения Z4-0 Z 1 SEI Установить флаг глобального прерывания 1«- 1 I 1 CLI Очистить флаг гло- бального прерывания к-0 I 1 SES Установить флаг знака S<- 1 S 1 CLS Очистить флаг знака S<-0 S 1 SEV Установить флаг переполнения V<-1 V 1 CLV Очистить флаг переполнения V4-0 V 1 SET Установить флаг Т Тч-1 т 1 CLT Очистить флаг Т Тч-0 т 1 SEH Установить флаг полупереноса Н4-1 н 1 CLH Очистить флаг полупереноса Нч-0 н 1 NOP Выполнить холостую команду Нет 1 SLEEP Установить режим SLEEP См. описание команды в Приложении 2 Нет 1 WDR Сбросить сторожевой таймер См. описание команды в Приложении 2 Нет 1
176 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ 4.4. Параллельные порты У микроконтроллера ATmegalO3 имеется 6 параллельных портов ввода/вывода. 4.4.1. Порт А Порт А является 8-разрадным двунаправленным портом вво- да/вывода, оснащен встроенными нагрузочными резисторами. Взаимодействие с портом А осуществляется через три расположен- ных в пространстве ввода/вывода (памяти данных) регистра: регистр порта данных PORTA, регистр направления данных DDRA и регистр входных данных PINA. Регистр входных данных обеспечивает только возможность чтения, регистры порта данных и направления данных обес- печивают возможность и чтения и записи. Все выводы порта А оснащены индивидуально подключаемыми встроенными нагрузочными резисторами. Выходные буферы порта А обеспечивают ток до 20 мА, что достаточно для прямого управления све- тодиодными индикаторами. Если выводы РАО - РА7 используются в ка- честве входов и внешним сигналом удерживаются на низком уровне, то вытекающий ток обеспечивается подключением внутренних нагрузочных резисторов. Выводы порта А могут выполнять альтернативную функцию. При взаимодействии с внешней памятью данных они могут формировать младшие разряды мультиплексированной шины адреса/данных. Альтер- нативная функция включается установкой бита SRE регистра MCUCR, при этом установки регистра направления данных игнорируются. Регистр данных порта А - PORTA 7______6_______5______4______3______2______1______0 $1В ($ЗВ) |PORTA7 PORTA6 PORTA5 PORTA4 PORTA3 PORTA2|PORTA1 PORTAO PORTA Исх.код 0 7 0 0 0 Регистр направления 6 5 4 0 данных 3 0 0 0 порта А - DDRA 2 1 0 $1А ($ЗА) | DDA7 | DDA6 DDA5 DDA4 | DDA3 DDA2 DDA1 DDA0 DDRA Исх.код 00000000 Регистр входных данных порта А - PINA $19 ($39) 7 6 5 4 3 2 1 0 PINA PINA7 PINA6 PINA5 P1NA4 PINA3 P1NA2 PINA1 PINAO Исх.код 0 0 0 0 0 0 0 0
ГЛАВА 4. МИКРОКОНТРОЛЛЕРЫ ФИРМЫ ATMEL С АРХИТЕКТУРОЙ AVR 177 PINA не является регистром, при обращении по этому адресу чита- ются значения на выводах порта. При чтении регистра PORTA читается состояние защелок данных порта А. Все восемь линий порта А при его использовании в качестве цифро- вого устройства ввода/вывода работают одинаково. Соответствующий бит DDAn определяет направление вывода, а бит PORTAn = 1 при рабо- те вывода в качестве входа подключает нагрузочный резистор. После сброса выводы портов находятся в третьем состоянии. Воздействие битов DDAn на работу выводов порта А DDAn PORTAn I/O Нагрузочный резистор Описание 0 0 Вход Не подключен Третье состояние 0 1 Вход Подключен При входном низком уровне РАп обеспечивает вытекающий ток 1 0 Выход Не подключен Низкий уровень, двухтактный выход 1 1 Выход Не подключен Высокий уровень, двухтактный выход 4.4.2. Порт В Порт В является 8-разрядным двунаправленным портом вво- да/вывода, оснащен встроенными нагрузочными резисторами. Взаимодействие с портом В осуществляется через три расположен- ных в пространстве ввода/вывода (памяти данных) регистра: регистр порта данных PORTB, регистр направления данных DDRB и регистр входных данных PINB. Регистр входных данных обеспечивает только возможность чтения, регистры порта данных и направления данных обес- печивают возможность и чтения и записи. Все выводы порта В оснащены индивидуально подключаемыми встроенными нагрузочными резисторами. Выходные буферы порта В обеспечивают ток до 20 мА, что достаточно для прямого управления све- тодиодными индикаторами. Если выводы РВО - РВ7 используются в ка- честве входов и внешним сигналом удерживаются на низком уровне, то вытекающий ток обеспечивается подключением внутренних нагрузочных резисторов. Выводы порта В могут выполнять следующие альтернатив- ные функции: Альтернативные фукции выводов порта В . Вывод порта Альтернативная функция РВО SS - вход выбора ведомого устройства SPI РВ1 SCK - тактовый сигнал порта SPI РВ2 MOSI - линия выход ведущего / вход ведомого порта SPI РВЗ MISO - линия вход ведущего / выход ведомого порта SPI РВ4 OCOA/PWMOA - выход сравнения и PWM таймера/счетчикаО РВ5 OC1A/PWM1A- выход А сравнения и PWM таймера/счетчика 1 РВ6 OC1B/PWM1B - выход В сравнения и PWM таймера/счетчика 1 РВ7 OC2/PWM2 - выход сравнения и PWM таймера/счетчика2
178 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ При использовании выводов для выполнения альтернативных функ- ций регистры DDRB и PORTB должны быть установлены соответствую- щим образом. Регистр данных порта В - PORTB $18 ($38) Исх.код 7 6 5 4 3 2 1 0 PORTB |pORTB7 PORTB6 |PORTB5 |PORTB4 |pORTB3 PORTB2 |pORTB1 PORTBO 0 7 0 Perk 6 0 ютр на1 5 0 травле» 4 0 ия да! 3 0 1НЫХ ПС 2 0 >рта В - 1 0 - DDRE 0 $17 ($37) DDB7 DDB6 DDB5 DDB4 DDB3 DDB2 DDB1 DDB0 DDRB Исх.код 0 7 0 0 0 0 0 0 0 Регистр выводов входа порта В - PINB 6 5 4 3 2 1 0 $16 ($36) PINB7 PINB6 PINB5 PINB4 PINB3 PINB2 PINB1 PINB0 PINB Исхжод 0 0 0 0 0 0 0 0 PINB не является регистром, обращение по этому адресу обеспечива- ет чтение логического состояния каждого вывода порта. При чтении реги- стра PORTB читается состояние защелок данных порта В. Все восемь выводов порта В при его использовании в качестве циф- рового устройства ввода/вывода работают одинаково. Соответствующий бит DDBn определяет направление вывода, а бит PORTBn = 1 при рабо- те вывода в качестве входа подключает нагрузочный резистор. После сброса выводы портов находятся в третьем состоянии. Воздействие битов DDBn на работу выводов порта В DDBn PORTBn I/O Нагрузочный резистор Описание 0 0 Вход Не подключен Третье состояние 0 1 Вход Подключен При входном низком уровне РВп обеспечивает вытекающий ток 1 0 Выход Не подключен Низкий уровень, двухтактный выход 1 1 Выход Не подключен Высокий уровень, двухтактный выход 4.4.3. Порт С Порт С представляет собой 8-разрядный выходной порт. Кроме ос- новной функции выводы порта С выполняют альтернативную функцию при работе с внешней памятью данных. В этом режиме через линии порта С выводится старший байт адреса внешней памяти.
ГЛАВА 4. МИКРОКОНТРОЛЛЕРЫ ФИРМЫ ATMEL С АРХИТЕКТУРОЙ AVR 179 Регистр данных порта С - PORTC 7 6 5 4 3 2 1 0 $15($35) PORTC7 |PORTC6 PORTC5 |PORTC4 |PORTC3 |pORTC2 PORTC1 PORTCO Исх.код 0 0 0 0 0 0 0 0 PORTC 4.4.4. Порт D Порт D является 8-разрядным двунаправленным портом вво- да/вывода, оснащен встроенными нагрузочными резисторами. Взаимодействие с портом D осуществляется через три расположен- ных в пространстве ввода/вывода (памяти данных) регистра: регистр порта данных PORTD, регистр направления данных DDRD и регистр входных данных PIND. Регистр входных данных обеспечивает возмож- ность только чтения, регистры порта данных и направления данных обеспечивают возможность и чтения и записи. Выходные буферы выводов порта D обеспечивают втекающий ток до 20 мА. Если выводы PD0 - PD7 используются в качестве входов и внеш- ним сигналом удерживаются на низком уровне, то вытекающий ток обеспечивается подключением нагрузочных резисторов. Выводы порта D могут выполнять альтернативные функции, представленные в таблице. Альтернативные функции выводов порта D Вывод порта Дополнительная функция PDO INTO - Вход внешнего прерывания 0 PD1 INT1 - Вход внешнего прерывания 1 PD2 INT2 - Вход внешнего прерывания 2 PD3 INT3 - Вход внешнего прерывания 3 PD4 IC1 - Вход триггера захвата Таймера/счетчика 1 PD6 Т1 - Вход тактового сигнала Таймера/счетчика 1 PD7 T2 - Вход тактового сигнала Таймера/счетчика 2 При использовании выводов порта для выполнения альтернативных функций, их функционирование определяется установками регистров DDRD и PORTD. Регистр данных порта D - PORTD $12 7 6 5 4 3 2 1 0 PORTD PORTD7 PORTD6 PORTD5 PORTD4 PORTD3 PORTD2 PORTD1 PORTDO Исх.код 0 7 0 0 0 0 0 0 Регистр направления данных порта D - 6 5 4 3 2 1 0 DDRD 0 $11 DDD7 DDD6 | DDD5 DDD4 DDD3 | DDD2 DDD1 DDD0 DDRD Исх.код 0 0 0 0 0 0 0 0
180 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Регистр выводов входа порта D - PIND 7______6 5 4 3 2 1 О PIND7 PIND6 PIND5 PIND4 PIND3 PIND2 PIND1 PIND0 Исх.код 0 0000000 PIND не является регистром, обращение по этому адресу обеспечива- ет чтение логического состояния на каждом выводе порта. При чтении регистра PORTD читаются состояния защелок данных порта D. Все восемь выводов порта D при его использовании в качестве циф- рового устройства ввода/вывода работают одинаково. Соответствующий бит DDDn определяет направление вывода, а бит PORTDn = 1 при рабо- те вывода в качестве входа подключает нагрузочный резистор. После сброса выводы портов находятся в третьем состоянии. Воздействие битов DDDn на работу выводов порта D DDDn PORTDn I/O Нагрузочный резистор Описание 0 0 Вход Не подключен Третье состояние 0 1 Вход Подключен При входном низком уровне PDn обеспечивает вытекающий ток 1 0 Выход Не подключен Низкий уровень, двухтактный выход 1 1 Выход Не подключен Высокий уровень, двухтактный выход 4.4.5. Порт Е Порт Е является 8-разрядным двунаправленным портом вво- да/вывода, оснащен встроенными нагрузочными резисторами. Взаимодействие с портом Е осуществляется через три расположенных в пространстве ввода/вывода (памяти данных) регистра: регистр порта данных PORTE, регистр направления данных DDRE и регистр входных данных PINE. Регистр входных данных обеспечивает только возможность чтения, регистры порта данных и направления данных обеспечивают воз- можность и чтения и записи. Все выводы порта Е оснащены индивидуально подключаемыми встроенными нагрузочными резисторами. Выходные буферы порта Е обеспечивают ток до 20 мА. Если выводы РЕО - РЕ7 используются в ка- честве входов и внешним сигналом удерживаются на низком уровне, то вытекающий ток обеспечивается подключением внутренних нагрузочных резисторов. Выводы порта Е могут выполнять альтернативные функции в соответствии с следующей таблицей.
ГЛАВА 4. МИКРОКОНТРОЛЛЕРЫ ФИРМЫ ATMEL С АРХИТЕКТУРОЙ AVR 181 Альтернативные функции выводов порта Е Вывод порта Альтернативная функция РЕО PDI/RXD - Вход данных при программировании flash-памяти или вход приемника UART. РЕ1 PDO/TXD - Выход данных при программировании или выход передатчика UART. РЕ2 АС+ - Положительный вход аналогового компаратора. РЕЗ АС - - Отрицательный вход аналогового компаратора. РЕ4 INT4 - Вход внешнего прерывания 4. РЕ5 INT5 - Вход внешнего прерывания 5. РЕ6 INT6 - Вход внешнего прерывания 6. РЕ7 INT7 - Вход внешнего прерывания 7. При использовании выводов порта для выполнения альтернативных функций регистры DDRE и PORTE должны быть запрограммированы соответствующим образом. Регистр данных порта Е - PORTE 7 6 5 4______3 2 1 О $03 ($23) |pORTE7 PORTE6 PORTE5|p ORTE4 PORTE3 |PORTE2|F ORTE1 PORTEO Исх.код 0 0 0 0 0 0 0 0 PORTE Регистр направления данных порта Е - DDRE $02 ($22) 7 6 5 4 3 2 1 0 DDRE DDE7 DDE6 DDE5 DDE4 DDE3 DDE2 DDE1 DDEO Исх.код 0 0 0 0 0 0 0 0 Регистр входных данных порта Е - PINE $01 ($21) 7 6 5 4 3 2 1 0 PINE PINE7 PINE6 PINE5 PINE4 PINE3 PINE2 PINE1 PINEO Исх.код 0 0 0 0 0 0 0 0 PINE - не является регистром, обращение по этому адресу обеспечи- вает чтение логического состояния каждого вывода порта. При чтении регистра PORTE читается состояние защелок данных порта Е. Все восемь выводов порта Е при его использовании в качестве циф- рового устройства ввода/вывода работают одинаково. Соответствующий бит DDEn определяет направление вывода, а бит PORTEn = I при рабо- те вывода в качестве входа подключает нагрузочный резистор. После сброса выводы портов находятся в третьем состоянии.
182 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Воздействие битов DDEn на работу выводов порта Е DDEn PORTEn I/O Нагрузочный резистор Описание 0 0 Вход Не подключен Третье состояние 0 1 Вход Подключен При входном низком уровне РЕп обеспечивает вытекающий ток 1 0 Выход Не подключен Низкий уровень, двухтактный выход 1 1 Выход Не подключен Высокий уровень, двухтактный выход 4.4.6. Порт F Порт F является 8-разрядным входным портом. В пространстве вво- да /вывода этому порту соответствует только регистр PINF. Выводы порта F подключены через аналоговый мультиплексор к аналого-цифровому преобразователю. Выводы порта F, кроме выполне- ния функций аналоговых входов, могут быть использованы и в качестве цифровых входов. Это позволяет пользователю одновременно использо- вать часть выводов порта F в качестве цифровых входов, а оставшуюся часть - в качестве аналоговых входов. Регистр входных данных порта F - PINF $00 ($20) 7 6 5 4 3 2 1 0 PINF PINF7 PINF6 PINF5 PINF4 PINF3 PINF2 PINF1 PINF0 ИСХ.КОД 0 0 0 0 0 0 0 0 PINF не является регистром, обращение по этому адресу обеспечива- ет чтение логического состояния каждого вывода порта. 4.5. Система прерываний Микроконтроллеры ATmegalO3 обслуживают 23 источника прерыва- ния. Все прерывания и механизм сброса имеют отдельные векторы, кото- рые образуют таблицу прерываний. Эта таблица располагается по млад- шим адресам пространства памяти программ. У каждого прерывания су- ществует свой бит разрешения, который должен быть установлен совме- стно с битом I регистра SREG, чтобы прерывание могло быть обслужено. Перечень векторов прерываний приведен в таблице. Перечень отра- жает также уровень приоритета каждого прерывания. Прерывания с младшими адресами имеют больший уровень приоритета: RESET имеет наивысший уровень приоритета, следующим является запрос внешнего прерывания INTO и т.д. Микроконтроллеры содержат два 8-разрядных регистра масок пре- рываний: регистр масок внешних прерываний EIMSK (External Interrupt
ГЛАВА 4. МИКРОКОНТРОЛЛЕРЫ ФИРМЫ ATMEL С АРХИТЕКТУРОЙ AVR 183 Mask) и регистр масок прерываний таймеров/счетчиков TIMSK (Timer/Counter Interrupt Mask). Кроме того, в регистрах управления блоков ввода/вывода имеются и другие биты разрешения и масок. При возникновении прерывания бит I (разрешения всех прерываний) в регистре SREG очищается и все прерывания запрещаются. Процедура прерывания может установить бит I, чтобы разрешить вложенные преры- вания. Команда RETI в конце процедуры обслуживания прерывания ус- танавливает бит I (=1). Векторы сброса и прерываний Вектор № Адрес Источник Условия возникновения прерывания 1 $0000 RESET Сброс по сигналу Reset, включению питания и сторожевому таймеру 2 $0002 INTO Запрос внешнего прерывания 0 3 $0004 INT1 Запрос внешнего прерывания 1 4 $0006 INT2 Запрос внешнего прерывания 2 5 $0008 INT3 Запрос внешнего прерывания 3 6 $000А INT4 Запрос внешнего прерывания 4 7 $000С INT5 Запрос внешнего прерывания 5 8 $0006 INT6 Запрос внешнего прерывания 6 9 $0010 INT7 Запрос внешнего прерывания 7 10 $0012 TIMER2 COMP Совпадение при сравнении таймера/счетчика 2 11 $0014 TIMER2 OVF Переполнение таймера/счетчика 2 12 $0016 TIMER1 CAPT Захват значения в таймере/счетчике 1 13 $0018 TIMER1 COMPA Совпадение регистра А и содержимого таймера/ счетчика 1 14 $001А TIMER1 COMPB Совпадение регистра В и содержимого таймера/ счетчика 1 15 $001С TIMER1 OVF Переполнение таймера/счетчика 1 16 $001Е TIMER0 COMP Совпадение при сравнении таймера/счетчика 0 17 $0020 TIMER0 OVF Переполнение таймера/счетчика 0 18 $0022 SPI, STC Конец сдвига данных пррта SPI 19 $0024 UART, RX Завершение приема UART 20 $0026 UART, UDRE Регистр данных UART пуст 21 $0028 UART, TX Завершение передачи UART 22 $002А ADC Завершение АЦП-преобразования 23 $002С EE READY Готовность EEPROM 24 $002Е ANALOG COMP Срабатывание аналогового компаратора Когда в счетчик команд загружен вектор прерывания, соответствую- щий флаг, вызвавший прерывание, аппаратно очищается. Некоторые флаги прерываний можно очистить программно записью логической еди- ницы по адресу бита флага. Если запрос прерывания возник, когда соответствующий бит разре- шения очищен, флаг прерывания будет сохранен в установленном со- стоянии, пока прерывание не будет разрешено или флаг не будет очищен программно.
184 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Если запросы прерываний возникают при сброшенном бите разреше- ния всех прерываний, флаги прерываний будут сохранены в установлен- ном состоянии, пока все прерывания не будут разрешены и обработаны в порядке приоритетов. Внешние прерывания по уровню сигнала флага не имеют и условия прерывания имеют место, пока активен внешний сигнал. В целом, система прерываний микроконтроллеров весьма удобна для использования, флаги прерываний автоматически сбрасываются при при- нятии запроса на обслуживание, но программно установить флаг преры- вания невозможно. $39 ($59) | 7 Регистр масок внешних прерываний - EIMSK EIMSK 6 5 4 3 2 1 0 INT7 INT6 INT5 INT4 INT3 INT2 INT1 INTO Исх.код 0 0 0 0 0 0 0 0 EIMSK.7-.4 ~ Разрешение внешних прерываний INT7..INT4. При установленных битах INT7-INT4 и установленном бите I регистра SREG разрешаются запросы по соответствующим входам внешних прерываний. Биты управления идентификацией регистра EICR (External Interrupt Control Register) определяет условия возникновения запроса: по нарас- тающему/спадающему фронту сигнала или по логическому уровню. Ак- тивность сигнала по любому из этих выводов вызовет запрос прерывания, даже если вывод определен как выход. EIMSK.3..0 - Разрешение внешних прерываний INT3..INT0. При установленных битах INT3-INT0 и установленном бите I регистра SREG разрешаются прерывания по соответствующим входам внешних прерыва- ний. Активным всегда является низкий уровень сигнала. Активность сиг- нала по любому из этих выводов вызовет запрос прерывания, даже если вывод определен как выход. Запрос прерывания по логическому уровню, если он разрешен, будет существовать до тех пор, пока на входе будет низкий уровень сигнала. Регистр флагов внешних прерываний - EIFR 7 6 5 4 3 2 1 0 $38 ($58) INTF7 INTF6 INTF5 INTF4 - - [Z EIFR Исх.код 0 0 0 00000 EIFR. 7.. 4 ~ Флаги внешних прерываний INTF7 - INTF4. При иден- тификации активного сигнала на входах INT7 - INT4 соответствующий флаг прерывания INTF7 - INTF4 устанавливается (=1). Если бит I реги- стра SREG и соответствующий бит разрешения (INT7 - INT4) регистра EIMSK установлены, то выполняется переход по вектору прерывания.
ГЛАВА 4. МИКРОКОНТРОЛЛЕРЫ ФИРМЫ ATMEL С АРХИТЕКТУРОЙ AVR 185 При этом переходе флаг очищается. Кроме того, флаг можно очистить, записав в него логическую 1. Внимание! Программно установить флаг внешнего прерывания нельзя! Регистр управления внешними прерываниями - EICR 7 6 5 4 3 210 ISC70 ISC61 ISC60 ISC51- ISC50 ISC41 ISC40 EICR $ЗА($5А) ISC71 Исх.код 0000 0 000 EICR. 7.. О - ISCX1, ISCX0: Биты управления идентификацией внешних прерываний INT7 INT4. Запросы внешних прерываний на вы- водах INT7 - INT4 идентифицируются по значениям ISCxl/ISCxO в со- ответствии со следующей таблицей: Управление идентификацией прерываний ISCx1 ISCxO Описание 0 0 Запрос прерывания идентифицируется по низкому уровню на INTx 0 1 Зарезервирован 1 0 Запрос прерывания идентифицируется по спадающему фронту на INTx 1 1 Запрос прерывания идентифицируется по нарастающему фронту на INTx х = 7.. 4 При изменении значений битов ISCxl/ISCxO прерывание должно быть запрещено очисткой бита разрешения в регистре GIMSK. Иначе может произойти прерывание в момент изменения значения битов. Входы прерываний INTx периодически опрашиваются на наличие за- проса. Если внешний запрос прерывания фиксируется по фронту, то для надежной работы длительность импульса должна быть больше, чем пери- од частоты синхронизации процессора. Заметим, что частота процессора может быть меньше частоты XTAL из-за наличия делителя. Запрос пре- рывания по низкому логическому уровню должен продолжаться, пока выполняется текущая инструкция, после которой он будет зафиксирован. Зарос прерывания по логическому уровню, если он разрешен, будет гене- рировать прерывания до тех пор, пока на входе удерживается низкий уровень. Регистр масок прерываний таймеров/счетчиков - TIMSK 7 6 5 4 3 2 1 0 OCIE2 TOIE2 TICIE1 OCIE1A OCIE1B TOIE1 OCIEO TOIEO Исх.код 000 0 0 000 TIMSK.7 - OCIE2: Разрешение прерывания по совпадению Тайме- ра 2. При установленном бите OCIE2 и установленном бите I регистра SREG разрешается прерывание по совпадению содержимого регистра сравнения и рабочего регистра Таймера 2.
186 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ TIMSK.6 - TOIE2: Разрешение прерывания по переполнению Тай- мера 2. При установленном бите TOIE2 и установленном бите I регистра SREG разрешается прерывание по переполнению Таймера 2 TIMSK.5 ~ TICIE1: Разрешение прерывания по захвату Таймера 1. При установленном бите TICIE1 и установленном бите I регистра SREG разрешается прерывание по захвату Таймера 1. TIMSK.4 - OCIE1A: Разрешение прерывания по совпадению реги- стра OCR1A с Таймером 1. При установленном бите OCIE1A и установ- ленном бите I регистра SREG разрешается прерывание по совпадению значения в регистре OCR1A со значением в рабочем регистре Таймера!. TIMSK.3 ~ OCIE1B: Разрешение прерывания по совпадению реги- стра OCR1B с Таймером 1. При установленном бите OCIE1B и установ- ленном бите I регистра SREG разрешается прерывание по совпадению значения в регистре OCR! В со значением в рабочем регистре Таймера 1. TIMSK.2 - TOIE1: Разрешение прерывания по переполнению Тай- мера 1. При установленном бите TOIE1 и установленном бите I регистра SREG разрешается прерывание по переполнению Таймера 1. TIMSK.1 - OCIEO: Разрешение прерывания по совпадению Тайме- ра 0. При установленном бите OCIEO и установленном бите I регистра SREG разрешается прерывание по совпадению содержимого регистра сравнения OCRO и рабочего регистра Таймера 0. TIMSK.0 - TOIEO: Разрешение прерывания по переполнению Тай- мера 0. При установленном бите TOIEO и установленном бите I регистра SREG разрешается прерывание по переполнению Таймера 0. Регистр флагов прерываний таймеров/счетчиков - TIFR 7 6 5 4_______3 2 1 О $36 ($56) I | OCF2 | | TOV2 | 1 ICF1 I | OCF1A | | OCF1B- | [тал] I TOVO | TIFR Исх.код 0000 0 000 TIFR.7 - OCF2: Флаг совпадения значения Таймера 2. Бит OCF2 устанавливается при совпадении значения Таймера 2 и содержимого ре- гистра OCR2. Бит OCF2 аппаратно очищается при переходе на вектор прерывания. Возможна очистка флага записью в бит логической 1. TIFR. 6 - TOV2: Флаг переполнения Таймера 2. Бит TOV2 устанав- ливается при переполнении Таймера 2. Он аппаратно очищается при пе- реходе на вектор прерывания. Возможна очистка бита записью во флаг логической 1. В режиме PWM этот бит устанавливается при переходе через $00. TIFR.5 ~ ICF1: Флаг захвата входа Таймера 1. Бит ICF1 устанав- ливается в случае захвата по входу и показывает, что значение Таймера 1 послано в регистр захвата ICR1. Бит очищается аппаратно при переходе
ГЛАВА 4. МИКРОКОНТРОЛЛЕРЫ ФИРМЫ ATMEL С АРХИТЕКТУРОЙ AVR 187 на вектор прерывания. Возможна очистка бита записью во флаг логиче- ской 1. TIFR.4 ~ OCF1A: Флаг А совпадения выхода Таймера 1. Бит OCF1A устанавливается при совпадении значения в Таймере 1 и содер- жимого регистра OCR1A. Бит OCF1A аппаратно очищается при переходе на вектор прерывания. Возможна очистка бита записью во флаг логиче- ской 1. TIFR.3 ~ OCF1B: Флаг В совпадения выхода Таймера 1. Бит OCF1B устанавливается при совпадении значения в Таймере 1 с содер- жимым регистра OCR1B. Бит OCF1B аппаратно очищается при переходе на вектор прерывания. Возможна очистка бита записью во флаг логиче- ской 1. TIFR.2 - TOV1: Флаг переполнения Таймера 1. Бит TOV1 устанав- ливается при переполнении Таймера 1. Он аппаратно очищается при пе- реходе на вектор прерывания. Возможна очистка бита записью во флаг логической 1. TIFR. 1 - OCFO: Флаг совпадения выхода Таймера 0. Бит OCFO ус- танавливается при совпадении значения в Таймере 0 с содержимым реги- стра OCRO . Бит OCFO аппаратно очищается при переходе на вектор прерывания. Возможна очистка бита записью во флаг логической 1. TIFR.0 - TOVO: Флаг переполнения Таймера 0. Бит TOVO устанав- ливается при переполнении Таймера 0. Он аппаратно очищается при пе- реходе на вектор прерывания. Возможна очистка бита записью во флаг логической 1. 4.6. Таймеры-счетчики Микроконтроллер ATmegalO3 имеет три счетчика-таймера: два 8-разрядных - ТО, Т2 и один 16-разрядный - Т1. Таймер 0, в дополнение к обычному режиму, может работать в режиме генератора, синхронизи- рованного кварцем с частотой 32768 кГц. Это позволяет использовать его как часы реального времени (Real Time Clock - RTC). Таймер 0 имеет свой собственный предделитель. Таймеры 1 и 2 ис- пользуют индивидуальные коэффициенты деления от общего 10- разрядного предварительного делителя. Предварительные делители таймеров/счетчиков. Предварительный делитель Таймеров/счетчиков 1 и 2 содержит четыре ступени деления: СК/8, СК/64, СК/256 и СК/1024, где СК - тактовый сигнал процес- сора, (который может быть ниже XTAL из-за делителя). Кроме СК, в качестве источников тактовых сигналов для Таймеров/счетчиков 1 и 2 могут использоваться сигналы от внешних источников, а также нулевой тактовый сигнал (stop).
188 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Исходный сигнал для предделителя Таймера/счетчика 0 обозначен РСКО. Его цепь по умолчанию подключена к основному тактовому сигна- лу СК. При установке бита AS0 в регистре ASSR Таймер/счетчик 0 бу- дет тактироваться сигналом с вывода TOSC1, что позволяет использовать его в качестве часов реального времени. 8-разрядные таймеры/счетчики Т/СО и Т/С2. 8-разрядный Тай- мер / счетчик 0 получает непосредственно тактовый сигнал РСКО или его производное значение после прохождения через предварительный дели- тель. 8-разрядный таймер/счетчик 2 получает тактовый сигнал СК, либо его производное значение после прохождения через предварительный де- литель, либо сигнал с внешнего вывода. Оба таймера/счетчика могут быть остановлены, как это указано в описании регистров управления TCCR0 и TCCR2. В регистре TIFR хранятся различные флаги состояния (переполне- ния, совпадения при сравнении и захвата события) таймеров/счетчиков. Управление таймерами/счетчиками осуществляется через регистры TCCRO и TCCR2. Разрешение и запрещение прерываний производится посредством битов регистра масок прерываний таймеров/счетчиков TIMSK. При работе Таймера/счетчика 2 с внешним сигналом необходимо, чтобы минимальное время между двумя входящими импульсами было не меньше одного цикла тактового сигнала процессора. Точность и разрешение 8-разрядных таймеров/счетчиков растет с уменьшением коэффициента предварительного деления. Высокий коэф- фициент предварительного деления удобно использовать при реализации медленных операций или синхронизации редко происходящих событий. Оба таймера/счетчика поддерживают две функции сравнения выхо- да и используют регистры сравнения OCRO и OCR2 как источники дан- ных, сравниваемых с содержимым регистров таймеров/счетчиков. В ка- честве дополнительных функции сравнения по выходу можно установить очистку счетчика при совпадении, а также формирование активных сиг- налов на выводах PB4(OCO/PWMO) и PB7(OC2/PWM2). Таймеры / счетчики 0 и 2 можно использовать как 8-разрядные ши- ротно-импульсные модуляторы (PWM). В этом режиме таймер/счетчик, совместно с регистром совпадения выхода, работает как автономный ШИМ с центрированными импульсами без ложных выбросов. $33 ($53) Исх.код Регистры управления таймерами/счетчикамм - TCCRO, TCCR2 7 6 5 4 3 2 1 О - PWM0 СОМ01 сомоо стсо CS02 CS01 CS00 TCCRO 00 0 0 0000
ГЛАВА 4. МИКРОКОНТРОЛЛЕРЫ ФИРМЫ ATMEL С АРХИТЕКТУРОЙ AVR 189 7 6 5 4 3 2 1 0 $25 ($45) - PWM2 СОМ21 СОМ20 СТС2 CS22 CS21 CS20 TCCR2 Исх.код 0 0 0 0 0 0 0 0 Bit 7 - Зарезервированный бит Bit 6 ~ Разрешение режима широтно-импульсного модулятора. Ус- тановленный (=1) бит разрешает режим ШИМ для таймеров/счетчиков О или 2. Bits 5,4 ~ Режим сравнения выхода, биты 1 и 0. Биты COMnl и СОМпО управляют состоянием выводов PB4(OCO/PWMO) или PB7(OC2/PWM2) после совпадения по Таймеру 2. Поскольку это аль- тернативная функция выводов порта, то соответствующий бит направле- ния вывода должен быть установлен в состояние 1. Коды управления приведены в следующей таблице. Выбор режима сравнения таймеров/счетчиков СОМп1 СОМпО Описание 0 0 Таймер/счетчик отсоединен от выходного вывода OCn/PWMn 0 1 Переключение выходной линии OCn/PWMn 1 0 Очистка выходной линии Ocn/PWMn (установка в состояние 0) 1 1 Установка выходной линии OCn/PWMn (установка в состояние 1) п = 0 или 2 В режиме ШИМ функции этих битов отличаются, функционирование описано в таблице 4.19. Bit 3 ~ Очистить таймер/счетчик при совпадении. При установ- ленном бите СТСО или СТС2 таймер/счетчик сбрасывается в состояние $00 в течение одного цикла процессора после наступления совпадения. Если бит управления сброшен, То таймер продолжает считать и не ис- пользуется в процедуре сравнения. Поскольку факт совпадения опреде- ляется в цикле процессора, следующем за совпадением, эта функция ра- ботает несколько по другому, если коэффициент предварительного деле- ния больше 1. Если коэффициент деления равен 1 и в регистр сравнения занесено значение С, таймер считает при установленном бите СТСО/2 следующим образом: ...| С-2 | С-1 | С| 0 | 1 | Если установлен коэффициент деления 8, таймер будет считать в сле- дующем порядке: ... | С-2, С-2, С-2, С-2, С-2, С-2, С-2,С-2|С-1, С-1, С-1, С-1, С-1,С-1,С-1,С-1|С,0,0,0,0,0,0,0,0|1, 1, 1,... В режиме ШИМ состояние этого бита значения не имеет.
190 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Bits 2,1,0 ~ Биты выбора тактовой частоты. Эти биты подключа- ют выход определенной ступени предварительного делителя. Выбор коэффициента деления частоты для Таймера О CS02 CS01 CSOO Описание 0 0 0 Таймер/счетчик 0 остановлен 0 0 1 РСКО 0 1 0 РСКО / 8 0 1 1 РСКО/ 32 1 0 0 РСКО/ 64 1 0 1 РСКО / 128 1 1 0 РСКО / 256 1 1 1 РСКО/1024 Выбор коэффициента деления частоты для Таймера 2 CS22 CS21 CS2O Описание 0 0 0 Таймер/счетчик 2 остановлен 0 0 1 СК 0 1 0 СК/8 0 1 1 СК/64 1 0 0 СК/256 1 0 1 СК/1024 1 1 0 Внешний вывод PD7(T2), спадающий фронт 1 1 1 Внешний вывод PD7(T2), нарастающий фронт Условие Stop обеспечивает реализацию функции разреше- ния/запрещения таймера. Режим деления синхросигнала реализуется непосредственным делением тактовой частоты процессора СК. Если для тактирования Таймера/счетчика 2 используется внешний источник, то переключения на выводе PD7/(T2) будут воздействовать на счетчик, даже если этот вывод определен как выход. Таймер/счетчик О - TCNTO 7 6 5 4 3 2 1 0 $32 ($42) MSB LSB TCNT0 Исх.код 0 0 0 0 0 0 0 0 7 6 Таймер/счетчик 5 4 3 2 - TCNT2 2 1 0 $24 ($44) MSB LSB TCNT2 Исх.код 0 0 0 0 0 0 0 0 Эти два 8-разрядных регистра являются регистрами счета тайме- ров/счетчиков. Оба таймера/счетчика работают как инкрементирующие,
ГЛАВА 4. МИКРОКОНТРОЛЛЕРЫ ФИРМЫ АТМа С АРХИТЕКТУРОЙ AVR 191 либо как реверсивные (в ШИМ режиме) счетчики с возможностью чте- ния/записи. Регистр сравнения Таймера/счетчика О - OCRO 7 6 5 4 3 21 О $31 ($51) | MSB ~ LSB OCRO Исх.код 0 000000 0 Регистр сравнения Таймера/счетчика 2 - OCR2 7 6 5 4 3 21 0 $23 ($43) | MSB ~ | ~ | | | LSB OCR2 Исх.код О 000000 0 Регистры сравнения выходов OCR0 и OCR2 являются 8-разрядными регистрами с возможностью чтения/записи. Выбор функции сравнения определяется битами регистров TCCR0 и TCCR2. Совпадение при срав- нении произойдет тогда, когда таймер/счетчик досчитает до значения, содержащегося в OCRx. Программная запись одного и того же значения в таймер/счетчик и в регистр сравнения не приведет к совпадению при сравнении. Совпадение при сравнении устанавливает флаг прерывания в течение процессорного цикла, следующего за событием. Таймеры/счетчики 0 и 2 в ШИМ режиме. При установленном ре- жиме ШИМ таймер/счетчик и регистр сравнения выхода (OCR0 или OCR2) формируют 8-разрядный ШИМ-сигнал на выводах PB4(OCO/PWMO) или PB7(OC2/PWM2). Таймер/счетчик работает как прямой/реверсивный счетчик, считающий от $00 до $FF, затем об- ратно до нуля. После этого начинается новый цикл. Когда состояние счетчика совпадает с содержимым регистра сравнения, значения на выво- дах PB4(OCO/PWMO) или PB7(OC2/PWM2) устанавливаются в 1 или 0. Значение зависит от установленных в регистрах управления TCCRO и TCCR2 значений битов СОМ01/СОМ00 или СОМ21/СОМ20 Выбор режима сравнения в ШИМ режиме COMnl СОМпО Значение в регистре и на выводе 0 0 Не подсоединен. 0 1 Не подсоединен. 1 0 Очистка регистра при совпадении, счет по нарастанию. Установ- ка при совпадении, счет по убыванию (неинвертирующий ШИМ). 1 1 Очистка регистра при совпадении, счет по убыванию. Установка при совпадении, счет по нарастанию (инвертирующий ШИМ). п =0 или 2
192 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Если в регистр OCR заносится $00 или $FF, значение на выходе ШИМ изменится на низкое или высокое, в зависимости от установок би- тов СОМ21/СОМ20 или СОМИ/СОМЮ. Состояния ШИМ выходов при OCRn = $00 или $FF СОМп1 СОМпО OCRn Выход PWMn 1 0 $00 L - низкий уровень 1 0 $FF Н - высокий уровень 1 1 $00 Н - высокий уровень 1 1 $FF L - низкий уровень п =0 или 2 В режиме ШИМ флаг переполнения таймера (TOV0 или TOV2) ус- танавливается при смене направления счета при значении $00. Частота ШИМ будет соответствовать тактовой частоте таймера, деленной на 510. Работа Таймера/счетчика 0 в режиме часов реального времени. Работа в этом режиме (который в фирменной документации называется асинхронным) имеет некоторые особенности. При переключении между асинхронным и синхронным режимами Таймера/счетчика 0 значения в регистрах TCNT0, OCR0 и TCCR0 могут измениться. Безопасное переключение выполняется следующим образом: • Запрещаются прерывания OCIEO и TOIEO Таймера 0. • Установкой бита ASO выбирается источник тактового сигнала. • В регистры TCNT0, OCR0 и TCCR0 записываются новые значения. • После переключения в асинхронный режим нужно подождать, пока биты TCN0UB, OCROUB и TCR0UB очистятся. • Разрешаются прерывания, если необходимо. Внутренний усилитель/генератор оптимизирован для использования часового кварца (с частотой 32,768 кГц). Внешний тактовый сигнал с вы- вода TOSC1 проходит через этот же усилитель с полосой пропускания 256 кГц. Таким образом, внешний тактовый сигнал должен иметь частоту в диапазоне от 0 до 256 кГц. Частота внешнего тактового сигнала на вы- воде TOSC1, не должна превышать одной четверти от тактовой частоты процессора. Тактовая частота процессора может быть ниже частоты XTAL, если разрешено деление частоты. При записи в один из регистров TCNT0, OCR0 или TCCR0 записы- ваемая величина пересылается в регистр временного хранения и фикси- руется после двух положительных фронтов сигнала на TOSC1. Пользо- ватель не должен записывать новое значение прежде, чем содержимое регистра временного хранения не будет передано по назначению. Каждый из указанных регистров имеет свой собственный регистр временного хра- нения, это означает, к примеру, что содержимое регистра TCNT0 не иска- зится при записи в регистр OCR0. Для слежения за операцией пересылки
ГЛАВА 4. МИКРОКОНТРОЛЛЕРЫ ФИРМЫ ATMEL С АРХИТЕКТУРОЙ AVR 193 используется регистр статуса асинхронного режима (Asynchronous Status Register - ASSR). При переходе в режим энергосбережения после записи в регистры TCNTO, OCRO или TCCR0, пользователь должен ждать обновления запи- сываемого регистра, если для активизации микроконтроллера использует- ся Таймер/счетчик 0. Иначе процессор перейдет в режим Sleep прежде, чем проявятся изменения. Это особенно важно, если для активизации микроконтроллера используется прерывание по сравнению выхода, по- скольку сравнение выхода запрещается во время записи в регистры OCRO и TCNT0. Если цикл записи не завершен (т.е. режим Sleep насту- пил прежде, чем бит OCROUB сброшен в 0), прибор никогда не получит совпадения при сравнении и процессор не будет активизирован. Если Таймер/счетчик 0 используется для активизации микрокон- троллера из режима энергосбережения и пользователь намеревается во- зобновить режим Power Save, то необходимо предпринимать меры пре- досторожности - для сброса логики прерывания необходим один цикл TOSC1. Если время между активизацией и восстановлением режима Power Save меньше одного цикла TOSC1, прерывания не будет и микро- контроллер не будет активизирован. Если пользователь сомневается в том, что промежуток времени перед восстановлением режима Power Save достаточен, необходимо использовать следующий алгоритм: • Записать значение в регистр TCCRO, TCNT0 или OCRO. • Подождать пока соответствующий флаг в регистре ASSR не будет сброшен в 0. • Ввести режим Power Save. Генератор частоты 32 кГц Таймера/счетчика 0 работает всегда, за исключением режима Power Down. При восстановления питания или ак- тивизации из режима Power Down пользователь должен помнить о том, что генератору для стабилизации необходимо время порядка одной се- кунды. При активизации микроконтроллера из режима Power Save при асинхронном режиме Таймера 0, когда условия прерывания выполнены, процесс активизации начинается в следующем цикле тактовой частоты таймера. Состояние таймера должно увеличиться как минимум на едини- цу, прежде, чем процессор сможет прочитать его состояние. Флаги пре- рываний обновляются через три тактовых цикла процессора после запус- ка тактовой частоты процессора. В течение этих циклов процессор вы- полняет команды, но условия прерывания еще не идентифицируются и процедура обработки прерывания не может быть выполнена. В асинхронном режиме обработка флагов прерываний асинхронного таймера занимает три тактовых цикла процессора плюс один цикл тайме- ра. Таким образом, содержимое таймера увеличивается минимум на еди-
194 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ ницу, прежде чем процессор сможет прочитать содержимое таймера вы- звавшее установку флага прерывания. Значение на выходе сравнения ме- няется в соответствии с тактовым сигналом таймера и не синхронизиро- вано с тактовой частотой процессора. Регистр статуса асинхронного режима - ASSR 7 6 5 4 3 2 1 0 $30 ($50) - AS0 TCV0UB OCROUB TCROUB ASSR Исх.код 0 0 0 0 0 0 0 0 ASSR.7..4: - Зарезервированные биты ASSR.3 ~ AS0: Асинхронный режим Таймера/счетчикаО. При уста- новленном бите AS0 Таймер/счетчик 0 тактируется сигналом с вывода TOSC1. При очищенном бите Таймер/счетчик 0 тактируется внутренним тактовым сигналом СК. При изменении состояния этого бита содержимое TCNT0 может быть повреждено. ASSR.2 - TCN0UB: Таймер/счетчикО занят. Бит устанавливается при работе Таймера/счетчика 0 в асинхронном режиме и записи в ре- гистр TCNT0. После обновления значения TCNT0 этот бит аппаратно очищается. Значение TCN0UB = 0 означает, что регистр TCNT0 готов к записи нового значения. Bit 1 - OCROUB: Регистр выхода занят. Бит устанавливается при работе Таймера/счетчикаО в асинхронном режиме после записи в регистр OCRO. После обновления значения OCRO этот бит аппаратно очищается. Значение OCR0UB=0 означает, что регистр OCRO готов к записи нового значения. Bit 0 - TCROUB: Регистр управления Таймера/счетчика 0 занят. Бит устанавливается при работе Таймера/счетчика 0 в асинхронном ре- жиме и после записи в регистр TCCRO. После обновления значения TCCRO этот бит аппаратно очищается. Значение TCROUB = 0 означает, что регистр TCCRO готов к записи нового значения. Запись в любой из трех регистров Таймера/счетчика 0 при установ- ленном его флаге занятости может привести к нежелательному прерыва- нию. Чтение регистров TCNTO, OCRO и TCCRO отличается. При чтении регистра TCNT0 считывается его действительное содержимое, а при чте- нии регистров OCRO и TCCRO читывается содержимое соответствующего регистра временного хранения. 16-разрядный Таймер/счетчик 1. Таймер/счетчик 1 может тактиро- ваться непосредственно сигналом СК, либо СК после делителя, либо сиг- налом с внешнего вывода. Кроме того, его можно остановить, как указано в описании регистра управления TCCR1B. В регистрах управления TCCR1A и TCCR1B находятся флаги, указывающие на переполнение,
ГЛАВА 4. МИКРОКОНТРОЛЛЕРЫ ФИРМЫ ATMEL С АРХИТЕКТУРОЙ AVR 195 совпадение при сравнении и захват событий. В регистре TIMSK находят- ся биты масок прерываний Таймера/счетчика 1. При внешнем тактиро- вании Таймера/счетчика 1 внешний сигнал привязывается к частоте про- цессора, стробирование осуществляется нарастающим фронтом тактового сигнала процессора. Для правильной работы Таймера/счетчика 1 от внешнего тактового сигнала минимальное время между двумя переключе- ния этого сигнала должно быть не менее одного периода тактового сигна- ла процессора. Наилучшие точность и разрешение Таймер/счетчик 1 обеспечивает при наименьшем коэффициенте предварительного деления. С другой сто- роны, высокий коэффициент предварительного деления удобен при реа- лизации низкоскоростных функций или синхронизации редко происхо- дящих событий. Таймер/счетчик 1 поддерживает две функции сравне- ния, используя регистры сравнения OCR1A и OCR1B для хранения зна- чений, которые сравниваются с содержимым Таймера/счетчика 1. Функ- ции сравнения включают опции очистки счетчика по совпадению сравне- ния А и изменения состояния на внешних выводах при совпадениях сравнения А и В. Таймер/счетчик 1 может быть использован в качестве 8-, 9- или 10-разрядного широтно-импульсного модулятора. В этом режиме счетчик и регистры OCR1A/OCR1B работают как сдвоенный самостоятельный ШИМ с центрированными импульсами. Функция захвата по входу обеспечивает захват содержимого Тайме- ра/счетчика!, запускаемый внешним событием на выводе PD4/(IC1). Условия захвата определяются регистром управления TCCR1B. Кроме того, аналоговый компаратор может быть использован для формирования сигнала захвата. Регистр управления А Таймера/счетчика! - TCCR1A 7 6 5 4 3 2 1 0 $2F ($4F) СОМ1А1 |СОМ1АО СОМ1В1 |СОМ1ВО - - PWM1l|pWM10 TCCR1A Исхжод 0 0 0 0 0 0 0 0 TCCR1A.7,6 - СОМ1А1, СОМ1АО: Функция выхода сравнения А. Биты СОМ1А1 и СОМ1АО определяют характер сигнала на выходе по- сле совпадения при сравнении. Выходной сигнал поступает на вывод ОС1А, соответствующий бит управления направлением должен быть ус- тановлен в 1. Коды управления представлены в следующей таблице. Выбор режима сравнения Таймера/счетчика! __СОМ1Х1 СОМ1ХО Описание . 0 0 Таймер/счетчик1 отключен от вывода выхода ОС1х 0 1 Переключение Выходной линии ОС1х 1 0 Низкий уровень на выводе ОС1х L. 1 1 Высокий уровень на выводе ОС1х х=А или В
196 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ логики TCCRiA.5,4 - СОМ1В1, COM4 ВО: Функция выхода сравнения В. Биты СОМ1В1 и СОМ 1 ВО определяют характер сигнала на выходе по- сле совпадения при сравнении. Выходной сигнал поступает на вывод ОС1В. Поскольку это альтернативная функция порта, то соответствую- щий бит управления направлением должен быть установлен в 1. Коды управления представлены в предыдущей таблице. В режиме ШИМ функции этих битов отличаются. При изменении значений битов СОМ 1X1/СОМ 1X0 прерывания по сравнению Таймера/счетчика 1 должны быть запрещены очисткой битов регистре TIMSK. В противном случае при изменении битов может про- изойти прерывание. TCCR1A.3..2 - Зарезервированные биты. TCCR1A. 1..0 — PWM11, PWM10: Биты выбора режима ШИМ Эти биты определяют установку режима ШИМ в соответствии со следующей таблицей. Выбор режима ШИМ Таймера/счетчика 1 PWM11 PWM10 Описание 0 0 Работа таймера/счетчика1 в режиме ШИМ запрещена 0 1 Работа таймера/счетчика1 в 8-разрядном ШИМ режиме 1 0 Работа таймера/счетчика1 в S-разрядном ШИМ режиме 1 1 Работа таймера/счетчика! в 10-разрядном ШИМ режиме Регистр управления В Таймера/счетчика! - TCCR1B 7 6 5 4 3 2 1 0 $2Е ($4Е) ICNC1 ICES1 - - СТС1 CS12 CS11 CS10 TCCR1B Исх.код 0 0 0 0 0 0 0 0 TCCR1B.7 - ICNC1: Бит режима подавления шума на входе за- хвата. При очищенном (=0) бите ICNC1 функция подавления шума за- прещена. Захват происходит по первому нарастающему/падающему фронту, поступившему на вывод PD4(IC1). При установленном бите ICNC1 выполняются четыре последовательных опроса состояния вывода PD4(IC1) и все четыре выборки должны иметь одинаковый уровень, в соответствии со значением бита ICES1. Частота опроса равна частоте XTAL. TCCR1B.6 - ICES1: Выбор фронта срабатывания на входе захва- та 1. При сброшенном бите ICES1 содержимое Таймера/счетчика 1 за- хватывается по спадающему фронту сигнала на выводе PD4(IC1). При установленном бите ICES1 захват происходит по нарастающему фронту. TCCR1B.5.4 - Зарезервированные биты. TCCR1B.3 - СТС1: Очистка Таймера/счетчика 1 после совпадения. При установленном бите СТС1 Таймер/счетчик 1 сбрасывается в состоя-
ГЛАВА 4. МИКРОКОНТРОЛЛЕРЫ ФИРМЫ ATMEL С АРХИТЕКТУРОЙ AVR 197 нис $0000 в течение тактового цикла, следующего за совпадением при сравнении А. Если бит СТС1 очищен, Таймер/счетчик! продолжает от- счет и не реагирует на совпадение при сравнении. Поскольку совпадение при сравнении детектируется в течение тактового цикла процессора, сле- дующего за совпадением, то поведение функции будет отличаться при установке коэффициента предварительного деления Таймера/счетчика 1, больше 1. При коэффициенте предварительного деления 1 и значении С в регистре сравнения таймер будет считать в соответствии с установкой СТС1: ,.| С-2 | С-1 | С | 0 | 1 |.. При коэффициенте предварительного деления 8 таймер будет считать следующим образом: ,.| С-2, С-2, С-2, С-2, С-2, С-2, С-2, С-2| С-1, С-1, С-1, С-1, С-1, С-1, С-1, С-1| С, 0 , 0, 0, 0, 0, 0, 0|... В режиме ШИМ состояние бита СТС! значения не имеет. TCCR1B.2,l,0 - CS12, CS11, CS10: Биты выбора источника такто- вой частоты и коэффициента деления. Условие Stop выполняет функцию разрешения/запрещения Тайме- ра/счетчика!. В режимах с предварительным делением делится частота тактового генератора СК. При использовании внешнего тактирования не- обходимо выполнить соответствующие установки в регистре управления направлением (очистка бита порта переводит вывод в режим входа). Выбор источника тактового сигнала Таймера/счетчика 1 CS12 CS11 CS1O Источник 0 0 0 Stop Таймер/счетчик! остановлен 0 0 1 СК 0 1 0 СК/8 0 1 1 СК/64 1 0 0 СК / 256 1 0 1 СК/1024 1 1 0 Внешний сигнал на выводе Т1, нарастающий фронт 1 1 1 Внешний сигнал на выводе Т1, спадающий фронт Таймер/счетчик 1 - TCNTH и TCNT1L 7 6 5 4 3 2 1 0 $2D ($4D) MSB TCNT1H $СЕ ($4С) LSB TCNT1L Исх.код 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Этот 16-разрядный регистр содержит текущее значение Тайме- ра/ счетчика 1. Для того, чтобы процессор мог читать/записывать стар-
198 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ пшй и младший байты этого регистра одновременно, доступ выполняется с использованием 8-разрядного регистра временного хранения (TEMP). Этот регистр используется также при обращении в OCR1A, OCR1B и ICR1. Если основная программа и процедуры обработки прерываний ис- пользуют обращение к регистрам через TEMP, прерывания должны быть запрещены на время обращений из основной программы (и процедур прерываний, если прерывания вложенные). Запись в TCNT1. Когда процессор производит запись в старший байт (TCNT1H), записываемые данные размещаются в регистре TEMP. Затем, когда процессор производит запись в младший байт (TCNT1L), данные младшего байта объединяются с байтом данных регистра TEMP и все 16 битов одновременно переписываются в регистр TCNT1. Поэтому при 16- разрядных операциях записи обращение к старшему байту (TCNT1H) должно выполняться первым. При использовании Таймера/счетчика 1 в качестве 8-разрядного таймера достаточно производить запись только младшего байта. Чтение TCNT1. Когда процессор читает младший байт (TCNT1L), то содержимое TCNT1L выбирается непосредственно, а содержимое старше- го байта (TCNT1H) размещается в регистре TEMP. Следовательно, при 16-разрядных операциях чтения первым должно выполняться обращение к младшему байту (TCNT1L). При использовании Таймера/счетчика 1 в качестве 8-разрядного таймера достаточно производить чтение только младшего байта. Таймер/счетчик 1 работает, как счетчик с нарастанием или ревер- сивный счетчик (в ШИМ режиме), имеет возможность чтения/записи. Если в Таймер/счетчик 1 занесено некоторое значение и выбран источ- ник тактового сигнала, то Таймер/счетчик 1 начнет счет в следующем тактовом цикле после установки в нем значения. Регистры сравнения А Таймера/счетчика 1 - OCR1AH и OCR1AL $2В $2А Исхжоде Регистры $29 $28 Исхжод OCR1АН OCR1AL OCR1BH OCR1BL OCR1BL
ГЛАВА 4. МИКРОКОНТРОЛЛЕРЫ ФИРМЫ ATMEL С АРХИТЕКТУРОЙ AVR 199 16-разрядные регистры сравнения выхода обеспечивают и чтение, и запись. Регистры сравнения выхода Таймера/счетчика 1 хранят эталон, по- стоянно сравниваемый с состоянием Таймера/счетчика 1. Действие, за- пускаемое совпадением при сравнении, определяется содержимым реги- стра управления Таймера/счетчика 1. Совпадение при сравнении про- изоиходит, когда Таймер/счетчик 1 досчитает до значения, хранящегося в OCR. Если в TCNT1, OCR1A или OCR1B записаны одинаковые значе- ния, то совпадение при сравнении сформировано не будет. Совпадение при сравнении устанавливает флаг прерывания в цикле процессора, следующем за самим совпадением. Поскольку регистры OCRtA и OCR1B являются 16-разрядными, то для обеспечения одновременного занесения старшего и младшего байтов данных используется регистр временного хранения TEMP. Когда процес- сор записывает старший байт, данные временно сохраняются в регистре TEMP. Содержимое регистра TEMP переписывается в OCR1AH или OCR1BH, когда процессор записывает младший байт OCR1AL или OCR1BL. Поэтому, при 16-разрядных операциях старшие байты регист- ров OCR1A/B должны записываться первыми. Регистр TEMP используется, также, при обращении к регистрам TCNT1 и ICR1. Если основная программа и процедуры обработки преры- ваний используют обращение к регистрам посредством TEMP, то преры- вания должны быть запрещены на время обращений. Регистр захвата Таймера/счетчика 1 - ICR1H и ICR1L 7 6 5 4 3 2 1 О $27 ($37) $26 ($36) MSB 1CR1H 1CR1L LSB Исх.код 0 000000 0 0 000000 о 16-разрядный регистр захвата обеспечивает только чтение содержи- мого. При обнаружении на выводе PD4(IC1) нарастающего или спадаю- щего фронта сигнала (зависит от установки ICES1) текущее состояние Таймера/счетчика 1 пересылается в регистр ICR1. Одновременно уста- навливается флаг ICF1. Поскольку регистр захвата является 16-разрядным, то для обеспече- ния одновременного чтения старшего и младшего байтов регистра ICR1 используется регистр временного хранения TEMP. При чтении процессо- ром младшего байта значение ICR1L пересылается непосредственно, а значение старшего байта ICR1H размещается в регистре TEMP. Поэтому при работе с 16-разрядным регистром операцию чтения необходимо начи- нать с младшего байта ICR1L.
200 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Таймер/счетчик 1 в режиме ШИМ. При установленном режиме ШИМ Таймер/счетчик 1 и регистры сравнения (OCR1A/ OCR1B), об- разуют сдвоенный 8-, 9- или 10-разрядный автономный генератор ШИМ с выходами на выводах РВ5(ОС1А) и РВ6(ОС1В). Таймер/счетчик 1 работает как реверсивный счетчик, считающий от $0000 до верхней гра- ницы. Когда значение в счетном регистре совпадает с содержимым 10 младших битов регистров OCR1A или OCR1B, сигнал на выводах РВ5(ОС1А)/РВ6(ОС1В) принимает значение 0 или 1, в соответствии с установками битов СОМ1А1/СОМ1АО или СОМ1В1/СОМ1ВО регистра управления TCCR1A (таблица). Наибольшие значения таймера и частота ШИМ Разрядность ШИМ ТОР значения таймера Частота ШИМ 8-разрядов $00FF(255) FTCl/510 9-разрядов $01FF(511) FTC, / 1022 10-разрядов $03FF(1023) FTC, /2046 Выбор режима сравнения Таймера/счетчика 1 в режиме ШИМ COM1x1 COM 1x0 Выходной сигнал на ОСХ1 0 0 Не подключен 0 1 Не подключен 1 0 Очищается (=0) по совпадению при счете вверх. Устанавливается (=1) по совпадению при счете вниз (не инвертированный ШИМ). 1 1 Очищается (=0) по совпадению при счете вниз. Устанавливается (=1) по совпадению при счете вверх (инвертированный ШИМ). х=А или В Когда OCR1 содержит $0000 или значение верхней границы, вывод ОС1А/ОС1В принимает значения 0 или 1, соответственно установкам СОМ1А1/СОМ1АО или СОМ1В1/СОМ1ВО. Состояние выходов в режиме ШИМ при OCR1x = $0000 или ТОР СОМ 1X1 СОМ1Х0 OCR1X Состояние выводов ОС1Х 1 0 $0000 0 1 0 ТОР 1 1 1 $0000 1 1 1 ТОР 0 х=А или В В режиме ШИМ флаг переполнения (TOV1) устанавливается по достижении значения $0000. Прерывание по переполнению таймера 1 ра- ботает так же, как в обычном режиме таймера/счетчика. Это относится и к прерыванию по сравнению таймера 1.
ГЛАВА 4. МИКРОКОНТРОЛЛЕРЫ ФИРМЫ ATMEL С АРХИТЕКТУРОЙ AVR 201 Сторожевой таймер (Watchdog Timer). Сторожевой таймер такти- руется отдельным встроенным генератором с частотой 1 Мгц. Установкой коэффициента деления тактовой частоты можно изменять длительность интервала до сброса по сторожевому таймеру от 16 тыс. до 2048 тыс. циклов (от 16 до 2048 мс). Программно сторожевой таймер сбрасывается командой WDR (Watchdog Reset). С момента сброса сторожевого таймера до завершения внутреннего сброса микроконтроллера длится период времени, который зависит от коэффициента деления тактовой частоты таймера. Если этот период за- вершился и другой сигнал сброса сторожевого таймера не поступил, мик- роконтроллер начинает работу с вектора сброса. Прежде, чем разрешать сторожевой таймер, необходимо выполнить команду WDR и загрузить значение в счетчик. Регистр управления сторожевым таймером - WDTCR 7 6 5 4 3 2 1 0 $21($41) - - - WDTOE WDE WDP2 WDP1 WDPO WDTCR Исх.код 0 0 0 0 0 0 0 0 WDTCR.7..5 - Зарезервированные биты. WDTCR.4 - WDTOE: Бит разрешения отключения сторожевого таймера. Этот бит должны быть установлены (=1) при очистке бита WDE. Иначе сторожевой таймер не будет запрещен. Если этот бит уста- новлен, то он аппаратно очищается через четыре тактовых цикла. WDTCR.3 - WDE: Бит разрешения сторожевого таймера. Если бит WDE установлен (=1), то сторожевой таймер разрешен. Если бит WDE очищен (=0), то функционирование сторожевого таймера запреще- но. Бит WDE может быть очищен только если установлен бит WDTOE. Для запрещения работы сторожевого таймера необходимо выполнить следующую процедуру: • Одной командой записать 1 в WDTOE и WDE. Логическая 1 долж- на быть записана в WDE, даже если этот бит был установлен перед началом операции запрета сторожевого таймера. • За время последующих четырех циклов записать логический 0 в WDE. Сторожевой таймер будет запрещен. WDTCR. 2..О - WDP2, WDP1, WDP0: Биты установки коэффици- ента предварительного деления сторожевого таймера. Состояние битов WDP2, WDP1 и WDP0 определяет коэффициент деления тактовой час- тоты сторожевого таймера.
202 СИСТЕМЫ НА МИКРСЖОНТРОЛПЕРАХ И БИС ПРОГРАММИРУЕМОЙ логики Коэффициенты деления частоты сторожевого таймера WD2 WDP1 WDP0 Длительность цикла сторожевого таймера Длительность периода ~~ сброса (Vcc = 5,0В), мс 0 0 0 16 тыс. циклов 15 0 0 1 32 тыс. циклов 30 0 1 0 64 тыс. циклов 60 0 1 1 128 тыс. циклов 120 1 0 0 256 тыс. циклов 240 1 0 1 512 тыс. циклов 490 1 1 0 1024 тыс. циклов 970 1 1 1 2048 тыс. циклов 1900 4.7. Последовательные интерфейсы - SPI и UART Микроконтроллер ATmegalO3 имеет два последовательных порта: SPI (Serial Peripheral Interface) и UART (Universal Asynchronous Re- ceiver and Transmitter). 4.7.1 Последовательный периферийный интерфейс - SPI Последовательный порт SPI обеспечивает высокоскоростной син- хронный обмен данными. Основные характеристики интерфейса: • Дуплексный 3-проводный синхронный обмен данными; • Режимы работы: ведущий или ведомый; • Старший или младший бит в начале посылки; • Четыре скорости обмена данными; • Установка флага прерывания по окончании передачи; • Активизация из режима Idle (только в режиме ведомого). Соединение между ведущим и ведомым устройствами с использо- ванием SPI-интерфейса показано на рис. 4.16. Вывод SCK (РВ1) являет- ся выходом тактового сигнала ведущего устройства и входом тактового сигнала ведомого. После записи ведущим устройством данных в регистр SPI начинает работать тактовый генератор интерфейса SPI и записанные данные сдвигаются через вывод MOSI (РВ2) ведущего устройства на вы- вод MOSI ведомого. После сдвига одного байта тактовый генератор оста- навливается, устанавливается флаг окончания передачи SPIF. Если в ре- гистре SPCR установлен бит разрешения прерывания SPI (SPIE), то воз- никнет запрос прерывания. Активный низкий уровень сигнала на входе SS# (РВО) определя- ет устройство как ведомое. При высоком уровне на входе SS# вывод MOSI может быть использован в качестве входа. Режим веду-
ГЛАВА 4. МИКРОКОНТРОЛЛЕРЫ ФИРМЫ ATMEL С АРХИТЕКТУРОЙ AVR 203 щий/ведомый может быть установлен и программным способом посред- ством установки или очистки бита MSTR в регистре управления SPI. Рис. 4.16. Соединение между ведущим и ведомым устройствами с использованием интерфейса SPI Два сдвиговых регистра ведущего и ведомого устройств (микрокон- троллеров) можно рассматривать как один разнесенный 16-разрядный циклический сдвиговый регистр. При сдвиге данных из ведущего устрой- ства в ведомое одновременно происходит сдвиг данных из ведомого уст- ройства ведущее, т.е. в течение одного цикла сдвига происходит обмен данными между ведущим и ведомым устройствами. В системе организована одиночная буферизация передающей стороны и двойная буферизация приемной стороны. Это означает, что передавае- мые символы не могут быть записаны в регистр данных SPI прежде, чем будет полностью завершен цикл сдвига. С другой стороны, при приеме данных принимаемый символ должен быть считан из регистра данных SPI прежде, чем будет завершен прием следующего символа, в противном случае предшествовавший символ будет потерян. Направления данных на линиях MOSI, MISO, SCK и SS# настраи- ваются в соответствии со следующей таблицей: Настройка линий интерфейса SPI Вывод Направление ведущего Направление ведомого MOSI Определяется пользователем Вход MISO Вход Определяется пользователем SCK Определяется пользователем Вход SS Определяется пользователем Вход Функционирование входа SS#. Когда SPI-устройство определено как ведущее (бит MSTR регистра SPCR установлен), пользователь имеет возможность определить направление линии SS#. Если вывод SS# опре- делен как выход, то он является выводом общего назначения и не участ-
204 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ вует в работе интерфейса SPI. Если же вывод SS# определен как вход, то для обеспечения работы ведущего устройства SPI он должен удержи- ваться на высоком уровне. Если в режиме ведущего вывод SS# является входом и внешней схемой на него подан низкий уровень, то интерфейс SPI воспримет его как обращение другого ведущего SPI к себе, как к ве- домому. Чтобы избежать конфликтной ситуации на шине, система SPI выполняет следующие действия: • бит MSTR в регистре SPCR очищается и устройство SPI становится ведомым. В результате выводы MOSI и SCK становятся входами; • устанавливается флаг SPIF регистра SPSR и, если разрешено преры- вание SPI, начинается выполнение процедуры обработки прерыва- ния. Таким образом, когда управляемое прерыванием передающее устрой- ство SPI используется в режиме ведущего и существует вероятность по- дачи на вывод SS# активного сигнала низкого уровня, процедура преры- вания должна проверять установку бита MSTR. Если бит MSTR был очищен выбором режима ведомого, то он должен быть установлен поль- зователем для переназначения устройства ведущим. Если порт SPI является ведомым, то вывод SS# постоянно работает как вход. При подаче на вывод SS# низкого уровня устройство SPI акти- вируется и вывод MISO становится выходом, если это определено поль- зователем. Все остальные выводы являются входами. Если вывод SS# удерживается на высоком уровне, то все выводы являются входами, уст- ройство SPI пассивно и не будет получать входных данных. Существует четыре комбинации фазы и полярности сигнала SCK от- носительно данных, которые задаются битами СРНА и CPOL. Форматы передачи данных SPI показаны на рис. 4.17. Регистр управления SPI - SPCR 7 6 5 4 3 210 SPE DORD MSTR CPOL СРНА SPR1 SPRO SPCR оооооооо $0D($2D) SPIE Исх.код SPCR. 7 - SPIE: Разрешение прерывания SPI. Установка этого бита разрешает установку бита SPIF регистра SPSR и, при разрешении всех прерываний битом I регистра SREG, обслуживание прерывания порта SPI. SPCR. 6 —SPE: Разрешение работы порта SPI. Установка этого би- та разрешает подключение линий SS, MOSI, MISO и SCK к выводам РВО, РВ1, РВ2 и РВЗ.
ГЛАВА 4. МИКРОКОНТРОЛЛЕРЫ ФИРМЫ ATMEL С АРХИТЕКТУРОЙ AVR 205 Ведущее устройство (СРНА = 1) Ведомое устройство (СРНА = 0) Рис. 4.17. Временные диаграммы передачи данных по SPI-интерфейсу SPCR. 5 - DORD: Порядок пересылки данных. Установка этого бита приводит к передаче посылки данных вперед младшим битом. При очи- щенном бите первым передается старший бит данных. SPCR. 4 - MSTR: Выбор режима ведущим/ведомый. При установ- ленном бите MSTR порт SPI работает в режиме ведущего, а при очищен- ном бите - в режиме ведомого. Если SS# определен как вход и на него подан низкий уровень при установленном бите MSTR, бит MSTR будет
206 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ сброшен, а бит SPIF регистра SPSR установлен. Чтобы вновь установить режим ведущего устройства, пользователь должен установить бит MSTR, SPCR.3 - CPOL: Полярность тактового сигнала. При установлен- ном бите CPOL сигнал SCK в режиме Idle имеет высокий уровень, при сброшенном бите CPOL - низкий уровень. SPCR.2 - СРНА: Фаза тактового сигнала. Действие этого бита ото- бражено на рис.4.17. SPCR.1,0 - SPR1, SPRO: Выбор частоты тактового сигнала. Эти два бита управляют частотой тактового сигнала устройства, работающего в режиме ведущего, В режиме ведомого значения битов влияния не ока- зывают. Состояния битов и устанавливаемый коэффициент деления час- тоты fCL указаны в таблице: SPR1 SPRO Тактовая частота SCK 0 0 Fcl/4 0 1 Fcl/ 16 1 0 Fcl/64 1 1 Fcl/ 128 Регистр состояния SPI - SPSR 7 6 5 4 3 2 1 0 SPIF WCOL - - - - - - Исх.код 0 0 000000 SPSR. 7 - SPIF: Флаг прерывания порта SPI. После завершения обмена бит SPIF устанавливается и, если установлены биты SPIE в реги- стре SPCR и I в регистре SREG, прерывание порта SPI обрабатывается. Бит SPIF очищается аппаратно при переходе на вектор прерывания. Бит SPIF может быть очищен также при первом чтении регистра состояния SPSR и последующем обращении к регистру данных SPDR. SPSR. 6 - WCOL: Флаг ошибки при записи. Бит WCOL устанавли- вается, если в процессе передачи данных выполнялась запись в регистр данных SPDR. Бит WCOL (и бит SPIF) аппаратно очищаются при пер- вом чтении регистра SPSR и последующем обращении к регистру данных SPDR. SPSR.5..0 - Res: Зарезервированные биты. Регистр данных SPI - SPDR 7 6 5 4 3 210 $0F ($2F) | MSB LSB SPDR Исх>код 0 0000000
ГЛАВА 4. МИКРОКОНТРОЛЛЕРЫ ФИРМЫ ATMEL С АРХИТЕКТУРОЙ AVR 207 Регистр данных SPDR представляет собой регистр с возможностью чтения/записи и предназначен для пересылки данных между регистро- вым файлом и сдвиговым регистром SPI. Запись в регистр SPDR ини- циирует передачу данных, считывание регистра приводит к чтению сдви- гового регистра приемника. 4.7.2. UART - универсальный последовательный порт Микроконтроллеры ATtmegalO3 оснащены универсальным дуплекс- ным последовательным портом (UART). Его основные возможности: • Широкий диапазон скоростей обмена данными; • Высокая скорость передачи при низкой частоте XTAL; • 8- и 9-разрядный форматы данных; • Обнаружение ошибок потери данных при приеме; • Обнаружение ошибок формата кадров; • Обнаружение ложного стартового бита; • Три отдельных прерывания: по завершению передачи, по пустому регистру передатчика и по завершению приема. Передача данных. Передача данных инициируется записью переда- ваемых данных в регистр UDR. Из этого регистра байт данных пересы- лается в сдвиговый регистр передатчика в следующих случаях: • Новый символ записан в регистр UDR после того, как был выдвинут стоповый бит предыдущего символа. Сдвиговый регистр загружается немедленно; • Новый символ записан в регистр UDR прежде, чем был выведен стоповый бит предшествовавшего символа. Сдвиговый регистр за- гружается после выхода стопового бита передаваемого символа, на- ходящегося в сдвиговом регистре. Если 10 (И)-разрядный сдвиговый регистр передатчика пуст, данные из регистра UDR передаются в сдвиговый регистр. При этом устанавли- вается бит UDRE регистра USR. При установленном бите UDRE порт UART готов принять следующий символ. Запись в регистр UDR очищает бит UDRE. Когда символ передан из регистра UDR в сдвиговый регистр, к его коду вначале добавляется стартовый бит (состояние 0 - стартовый бит), а в конце — стоповый бит (состояние 1 — стоповый бит). Если в ре- гистре управления UCR установлен бит CHR9 (т.е. выбран режим 9-разрядного слова данных), то бит ТхВ8 регистра UCR пересылается в бит 9 сдвигового регистра передатчика. Сразу после пересылки данных в сдвиговый регистр импульсом син- хросигнала стартовый бит выдвигается на вывод TxD. За ним следуют
208 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ биты данных, младший бит первым. После выдвижения стопового бита сдвиговый регистр загружается новыми данными, если символ был запи- сан в регистр UDR во время передачи. В процессе загрузки бит UDRE находится в установленном состоянии. Если новые данные не будут за- гружены в UDR до выдачи стопового бита, флаг UDRE останется уста- новленным. В этом случае в регистре статуса порта UART (USR) уста- навливается флаг ТхС завершения передачи. Установленный бит TxEN регистра UCR разрешает передачу. При очищенном бите TxEN вывод РЕ1 может быть использойан в качестве вывода общего назначения. При установленном бите TxEN передатчик UART подключается к выводу РЕ1 и использует его выхода, независимо от установки бита DDE1 в регистре DDRE. Прием данных. Приемник проверяет состояние линии RxD с часто- той в 16 раз большей, чем частота передачи. При пассивном состоянии линии перепад 1— 0 воспринимается как начало стартового бита и запус- кается последовательность его проверок. Вслед за переходом 1- 0 на вы- борках 8, 9 и 10 приемник вновь проверяет линию RxD на изменение ло- гического состояния. Если две или более из этих трех выборок обнаружат логическую 1, то стартовый бит отвергается как шумовой всплеск и при- емник начинает выявлять и анализировать следующие переходы из 1 в 0. Если был обнаружен действительный стартовый бит, то принимаются следующие за стартовым битом информационные биты. Эти биты также тестируются на выборках 8, 9 и 10. Логическое состояние бита определя- ется по двум и более (из трех) одинаковым состояниям выборок. Все би- ты вводятся в сдвиговый регистр приемника с тем значением. При поступлении стопового бита необходимо, чтобы не менее двух выборок из трех показали уровень 1. Если две или более выборок пока- жут состояние 0, то при пересылке принятого байта в регистр UDR, в регистре статуса USR устанавливается бит ошибки кадра FE. Пользова- тель перед чтением регистра UDR должен проверять состояние бита FE. Флаг FE очищается при чтении содержимого регистра данных UDR. Вне зависимости от того, принят правильный сгоповый бит или нет, данные пересылаются в регистр UDR и устанавливается флаг RxC в регистре статуса USR. Регистр UDR фактически объединяет два физически от- дельных регистра: передатчика и приемника. При чтении регистра UDR читается регистр приемника, а при записи обращение осуществляется к регистру передатчика. Если выбран режим обмена 9-разрядными словами данных (установлен бит CHR9 регистра UCR), то при пересылке данных в регистр UDR бит RxB8 регистра UCR загружается в бит 9 сдвигового регистра передачи. Если после получения символа к регистру UDR не было обращения, начиная с последнего приема, в регистре UCR устанав- ливается флаг OR. Это означает, что данные, принятые в сдвиговый ре-
ГЛАВА 4. МИКРОКОНТРОЛЛЕРЫ ФИРМЫ ATMEL С АРХИТЕКТУРОЙ AVR 209 гистр, потеряны. Бит OR доступен тогда, кода из регистра UDR прочи- тан байт данных. Пользователю, для обнаружения потери данных, необ- ходимо всегда проверять флаг OR после чтения регистра UDR. При очищенном бите RxEN регистра UCR прием запрещен и вывод РЕО может использоваться в качестве вывода общего назначения. При установленном бите RxEN приемник UART подключается к выводу РЕО, который работает как вход, вне зависимости от установки бита DDE0 в регистре DDRE. При этом бит PORTED может использоваться для управления подтягивающим резистором вывода. Регистр данных UART - UDR 7 6 5 4 3 2 1 О MSB LSB Исх.код 0 000000 0 В действительности регистр UDR представляет собой сдвоенный ре- гистр данных - регистр передатчика и регистр приемника используют один и то же адрес. При записи в регистр обращение производится к ре- гистру передатчика, а при чтении - к регистру приемника. $ов ($2В) Исх.код Регистр статуса UART - USR 7 6 5 4 3 2 1 0 RxC ТхС UDRE FE OR - - 00 0 0 0000 Регистр USR обеспечивает чтение информации о состоянии порта UART. USR. 7 - RxC: Прием завершен. Этот бит устанавливается при пере- сылке принятого символа из сдвигового регистра приемника в регистр UDR. Бит устанавливается вне зависимости от отсутствия или наличия ошибки приема кадра. При установленном в регистре UCR бите RxCIE и установленном бите RxC выполняется прерывание по завершению приема UART. Бит RxC очищается при чтении регистра UDR. При приеме дан- ных по прерыванию, процедура обработки прочитать UDR для очистки бита RxC, иначе после ее завершения произойдет новое прерывание. USR.6 - ТхС: Передача завершена. Этот бит устанавливается, когда весь кадр (включая стоповый бит) выведен из сдвигового регистра пере- датчика, а в регистр UDR не записаны новые данные. Этот флаг исполь- зуется при полудуплексном протоколе обмена, когда нужно освободить коммуникационную линию сразу после завершения передачи. При установленном в регистре UCR бите TxCIE установка ТхС при- ведет к выполнению прерывания по завершению передачи UART. Флаг ТхС очищается аппаратно при переходе по соответствующему вектору прерывания. Очистить бит ТхС можно записью в бит логической «1>>. 1
210 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ USR.5 - UDRE: Регистр данных пуст. Этот бит устанавливается, когда весь символ, записанный в UDR, пересылается в сдвиговый ре- гистр передатчика. Установка этого бита означает, что передатчик готов к получению нового символа. Если бит UDRIE в UCR установлен, при установленном бите UDRE существует запрос прерывания по завершению передачи UART. Бит UDRE очищается при записи в регистр UDR. При приеме данных по прерыванию, процедура обработки прерывания должна прочитать регистр UDR, чтобы очистить бит UDRE, иначе после завершения процедуры произойдет новое прерывание. USR.4 - FE: Ошибка кадра. Этот бит устанавливается, если при приеме стопового бита обнаружено состояние 0. Бит FE очищается при приеме стопового бита с логическим уровнем 1. USR.3 - DOR: Потеря данных. Бит DOR устанавливается при об- наружении потери данных, т.е. затирании непрочитанного символа в ре- гистре UDR новым символом из сдвигового регистра приемника. Бит DOR очищается, когда данные приняты правильно и посланы в UDR. USR.2..0 - Res: Зарезервированные биты. Регистр управления UART - UCR $0А ($2А) 7 6 5 4 3 2 1 0 UCR RxCIE TxCIE UDRIE FxEN TxEN CHR9 RxB8 TxB8 Исх.код 0 0 0 0 0 0 0 0 UCR.7 - RxCIE: Разрешение прерывания по завершению приема. При установленном (=1) бите RxCIE и общем разрешении прерываний установка бита RxC в регистре USR приведет к прерыванию по заверше- нию приема. UCR.6 - TxCIE: Разрешение прерывания по завершению передачи. При установленном бите TxCIE и общем разрешении всех прерываний установка бита ТхС в регистре USR приведет к прерыванию по заверше- нию передачи. UCR.5 - UDRIE: Разрешение прерывания по пустому регистру данных. При установленном бите UDRIE и общем разрешении прерыва- ний установка бита UDRE в регистре USR приведет к прерыванию по пустому регистру данных UART. UCR. 4 - RxEN: Разрешение приемника. Установленный бит RxEN разрешает приемник UART. Если приемник запрещен, то флаги статуса ТХС, DOR и FE установить невозможно. Если эти флаги установлены, то очистка бита RxEN не приведет к очистке этих флагов. UCR.3 - TxEN: Разрешение передатчика. Установленный бит TxEN разрешает передатчик UART. При запрещении передатчика текущий сим-
ГЛАВА 4. МИКРОКОНТРОЛЛЕРЫ ФИРМЫ ATMEL С АРХИТЕКТУРОЙ AVR 211 вол в сдвиговом регистре и символ в регистре данных UDR будут посла- ны. UCR.2 - CHR9: Режим 9-разрядных символов. При установленном бите CHR9 передаются и принимаются 9-разрядные символы плюс стар- товый и столовый биты. Девятые биты читаются и записываются с ис- пользованием битов RxB8 и ТхВ8 регистра UCR. Девятый бит данных может использоваться как дополнительный стоповый бит или бит контро- ля четности. UCR. 1 - RxB8: Прием 8-разрядных данных. При установленном би- те CHR9 бит RxB8 является девятым битом данных принятого символа. UCR.0 - ТхВ8: Передача 8-разрядных данных. При установленном бите CHR9 бит ТхВ8 является девятым битом данных передаваемого символа. Формирователь синхросигнала последовательного обмена. Форми- рователь представляет собой делитель, на выходе которого образуется синхросигнал с частотой, определяемой выражением. BAUD = FCK/16(UBRR+1) где: BAUD - частота в бодах: FCK - частота процессора; UBRR = содержимое регистра UBRR (0 - 255). Регистр формирователя синхросигнала UART - UBRR 7 _6-5_4_3_2_1_ 0 $09 ($29) | MSB || | | | | | LSB | UBRR Исх.код 0 000000 0 Регистр UBRR является 8-разрядным регистром с возможностью чте- ния/записи. Значение в нем определяет скорость обмена порта UART. 4.8. Аналоговый компаратор и АЦП Микроконтроллер ATmegalO3 имеет встроенные аналоговый компа- ратор и аналого-цифровой преобразователь (АЦП). 4.8.1. Аналоговый компаратор Аналоговый компаратор сравнивает уровни на положительном выво- де РЕ2 (АС+) и отрицательном выводе РЕЗ (АС-). Если напряжение на положительном выводе АС+ больше, чем напряжение на отрицательном выводе АС-, выход аналогового компаратора АСО устанавливается в со-
212 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ стояние 1. Выход компаратора может быть использован для управления входом захвата Таймера/счетчика 1. Кроме того, компаратор может формировать свой запрос прерывания. Пользователь может задать усло- вием формирования запроса на прерывание наличие на выходе компара- тора нарастающему или спадающего фронта, а также переключения. Регистр состояния и управления аналогового компаратора - ACSR 7 6 5 4 3 2 1 0 $08 ($28) £ ACD АСО ACI ACIE ACIC ACIS1 I ACISO Исх.код 0 0 0 0 0 0 0 0 ACSR ACSR. 7 - ACD: Запрет аналогового компаратора. При установлен- ном бите ACD аналоговый компаратор запрещен. Отключение аналогово- го компаратора позволяет снизить потребление в активном и Idle режи- мах,установку данного бита можно производить в любое время. При из- менении состояния бита ACD необходимо запрещать прерывание по ана- логовому компаратору очисткой бита ACIE в регистре ACSR. В против- ном случае при изменении состояния бита ACD может произойти преры- вание. ACSR. 6 - Res: Зарезервированный бит. ACSR. 5 - АСО: Выход аналогового компаратора. Значение бита АСО соответствует значению на выходе компаратора. ACSR. 4 - ACI: Флаг прерывания аналогового компаратора. Бит ус- танавливается в случае запроса компаратором прерывания, тип которого определяется битами ACIS1 и ACIS0. Подпрограмма обработки прерыва- ния от аналогового компаратора будет выполняться при установленном бите ACIE и установленном бите I в регистре SREG. Бит ACI очищается аппаратно при переходе по соответствующему вектору прерывания. Его можно очистить также записью во флаг логической 1. При модификации других битов регистра ACSR командами SBI или CBI бит ACI будет очищен, если он был перед этими установлен. ACSR.3 - ACIE: Разрешение прерывания аналогового компаратора. При установленном бите ACIE и установленном бите I в регистре SREG разрешается прерывание по аналоговому компаратору. При сброшенном бите ACIE прерывание запрещено. ACSR.2 - ACIC: Разрешение захвата по сигналу аналогового ком- паратора. Установленный бит ACIC разрешается срабатывание функции захвата Таймера/счетчика 1 по переключению аналогового компаратора. В этом случае выход аналогового компаратора подсоединяется ко вход- ной цепи логики захвата, что обеспечивает подавления шума и выбор ти- па прерывания. При очищенном бите ACIC соединения нет. Для запуска прерывания по захвату Таймера/счетчика 1 бит TICIE1 в регистре TIMSK должен быть установлен.
ГЛАВА 4. МИКРОКОНТРОЛЛЕРЫ ФИРМЫ ATMEL С АРХИТЕКТУРОЙ AVR 213 ACSR.1,0 - ACIS1, ACISO: Выбор типа прерывания аналогового компаратора. Эти биты определяют тип события компаратора, при кото- ром возникает запрос прерывания. Варианты установок показаны в сле- дующей таблице. ACIS1 ACISO События, вызывающие прерывание 0 0 Переключение выхода компаратора 0 1 Зарезервировано 1 0 Спадающий фронт на выходе компаратора 1 1 Нарастающий фронт на выходе компаратора При изменении состояния битов ACIS1/ACIS0 прерывание аналого- вого компаратора должно быть запрещено. В противном случае при из- менении состояния битов может произойти прерывание. 4.8.2. Аналого-цифровой преобразователь Микроконтроллер оснащен 10-разрядным АЦП последовательного приближения. Блок АЦП включает 8-канальный аналоговый мультиплек- сор, позволяющий использовать любой вывод порта F в качестве входа АЦП во время преобразования. Основные характеристики встроенного блока АЦП: • Разрешение 10 разрядов • Точность ±1 /2 LSB • Время преобразования 70...280 мксек • 8 мультиплексируемых входных каналов • Режим однократного преобразования • Прерывание по завершению ADC преобразования • Схема подавления шумов в режиме Sleep Для питания АЦП используются два отдельных вывода: AVcc и AGND. Вывод AGND должен быть присоединен к выводу GND, а на- пряжение AVcc не должно отличаться от напряжения Vcc более чем на 0,4 В. Внешнее опорное напряжение подается на вывод AREF и должно быть в диапазоне от AGND до AVcc- АЦП работает в режиме однократного преобразования, каждое пре- образование должно инициировать пользователем. Работа АЦП разреша- ется установкой бита ADEN в регистре ADCSR. Первому преобразованию после разрешения АЦП предшествует пустое стартовое преобразование. Для пользователя это означает, что первое преобразование будет зани- мать на 13 циклов больше, чем обычно. Преобразование инициируется записью логической единицы в бит ADSC. Этот бит остается установленным все время преобразования и
214 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ сбрасывается аппаратно, когда преобразование завершено. Если во время преобразования производится смена выбранного канала, АЦП завершит текущее преобразование перед переходом. АЦП формирует 10-разрядный результат в двух регистрах - ADCH и ADCL. Для чтения правильного результата из этих регистров сущест- вует специальный механизм. При чтении результата регистр ADCL дол- жен читаться первым. После этого доступ АЦП к регистрам данных бло- кируется. Это означает, что если следующее преобразование завершено между чтением ADCL и ADCH, его результат будет потерян. После чте- ния регистра ADCH доступ АЦП к регистрам данных восстанавливается. АЦП имеет свои флаг и вектор прерывания. Флаг запроса ADIF ус- танавливается после завершения прерывания. Флаг устанавливается, да- же если результат преобразования потерян из-за запаздывания с чтением регистра ADCH. Делитель частоты для АЦП. Блок АЦП включает делитель, который формирует для него тактовый сигнал из синхросигнала процессора. АЦП работает с тактовой частотой в диапазоне от 50 до 200 кГц. При большей частоте ухудшается точность. Биты ADPS0 - ADPS2 регистра управления ADCSR используются для формирования тактовой сигнала АЦП из сигнала XTAL с частотой выше 100 кГц. Делитель частоты работает, когда установлен бит ADEN. При запуске АЦП установкой бита ADSC преобразование начинается по заднему фронту импульса синхросигнала АЦП. Один такт синхросиг- нала требуется на выборку-сохранение значения аналогового сигнала, после чего 13 тактов затрачивается на собственно преобразование и за- пись результата в регистры ADCL, ADCH. Далее перед новым преобра- зованием блоку АЦП необходим еще интервал в 2 такта, но если бит ADSC установлен, преобразование начнется немедленно. Подавление шума АЦП. Блок АЦП включает схему подавления шу- ма, которая разрешает преобразование в режиме Idle, что позволяет сни- зить шумы, создаваемые процессором. Для реализации этой функции необходимо выполнить следующее: 1. Отключить АЦП очисткой бита ADEN. 2. Включить АЦП и одновременно запустить преобразование уста- новкой битов ADEN и ADSC. Таким образом запускается пустое преобра- зование, за которым последует рабочее преобразование. 3. В течение 14 тактов АЦП-преобразования ввести Idle режим. 4. Если до завершения рабочего преобразования не произойдет дру- гого прерывания, то прерывание АЦП активирует процессор и будет вы- полнена его процедура обслуживания.
ГЛАВА 4. МИКРОКОНТРОЛЛЕРЫ ФИРМЫ ATMEL С АРХИТЕКТУРОЙ AVR 215 Регистр выбора каналов АЦП - ADMUX 7 6 5 4 3 2 1 О $07 ($27) - - - - MUX2 MUX1 михо Исх.код 0 0 0 0 0 0 ADMUX ADMUX.7..3' ~ Зарезервированные биты ADMUX.2..0 - MUX2..MUX0: - Биты выбора аналогового канала. Состояние этих битов определяет, какой из восьми аналоговых каналов (0-7) будет подключен к АЦП. Регистр управления и состояния АЦП - ADCSR 7 6 5 4 3 2 1 0 $06 ($26) ADEN | ADSC - ADIF ADIE ADPS2 ADPS1 | ADPSO ADCSR Исх.код 0 0000 0 0 0 ADCSR. 7 ~ ADEN: ADC Enable - Разрешение ADC. Установка это- го бита разрешает работу блока АЦП. Очистка бита запрещает АЦП. За- прещение АЦП в процессе преобразования прекращает преобразование. ADCSR.6 - ADSC: Запуск АЦП преобразования. Для запуска каж- дого цикла преобразования необходимо устанавливать бит ADSC в со- стояние 1. Каждый раз после первой установки бита ADSC, выполнен- ной после разрешения ADC или одновременно с разрешением ADC, бу- дет выполняться пустое преобразование, предшествующее активному пре- образованию. Это пустое преобразование инициализирует АЦП. Бит ADSC остается установленным в течение всего цикла преобразо- вания и сбрасывается после завершения преобразования. При выполне- нии пустого преобразования бит ADSC остается установленным до за- вершения активного преобразования. Запись 0 в этот бит влияния не ока- зывает. ADCSR. 5 - зарезервированный бит. При записи в регистр ADCSR в этот бит должен быть записан 0. ADCSR. 4 - ADIF: Флаг прерывания ADC. Этот бит устанавливается в состояние 1 после завершения преобразования и обновления регистров данных. Прерывание по завершению АЦП преобразования обслуживает- ся, если в состояние 1 установлены бит ADIE и бит I регистра SREG. Бит ADIF сбрасывается аппаратно при переходе на вектор прерывания. Кроме того, бит ADIF может быть очищен записью во флаг логической 1. ADCSR. 3 - ADIE: Разрешение прерывания от блока АЦП. При ус- тановленных в состояние 1 бите ADIE и бите I регистра SREG разреша- ется прерывание по завершению АЦП-преобразования. ADCSR.2..0 - ADPS2..ADPS0: Выбор коэффициента предвари- тельного деления. Эти биты определяют коэффициент деления частоты XTAL для получения тактовой частоты АЦП.
216 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ ADPS2 ADPS1 ADPSO Коэффициент деления 0 0 0 Без деления 0 0 1 2 0 1 0 4 0 1 1 8 1 0 0 16 1 0 1 32 1 1 0 64 1 1 1 128 Регистры данных АЦП - ADCL и ADCH 7 6 5 4 3 2 1 О $05 ($25) — — — — — — — — $04 ($24) — — — — — — — Исх.код 00000000 00000000 ADCH ADCL После завершения цикла преобразования результат преобразования размещается в регистрах ADCL и ADCH. Важно, чтобы оба регистра бы- ли прочитаны и чтобы регистр ADCL читался перед чтением регистра ADCH. 4.9. Пример реализации широтно-импульсного модулятора Таймеры-счетчики микроконтроллеров используются для формирова- ния временной сетки (последовательности интервалов времени), отдель- ных временных интервалов различной длительности, а также ШИМ- сигналов (с широтно-импульсной модуляцией). Кроме того, они являются инструментом анализа событий на основе механизмов захвата-сравнения. Рассмотренная ниже программа демонстрирует организацию про- граммного таймера реального времени с 24-разрядным счетным регист- ром, который наращивается по прерыванию таймера 0. Кроме того, про- грамма формирует ШИМ-сигнал с использованием таймера 1 и выдает на линию порта В.6 (PWM1B) импульсы с линейно изменяемой скважно- стью («гармошка»). Если к этому выводу подключить интегратор, то на его выходе получится «пила?» - аналоговый сигнал с линейно изменяю- щейся амплитудой. . ********* Пример организации режима PWM микроконтроллера ****** ; частота резонатора 4.0 МГц .********* Описание констант ************************ EQU RldO =-125 ; Константа перезагрузки таймера ТО ; для формирования временного интервала = 4 ms ; при N=128 (Prescaler, F=4 MHz)
ГЛАВА 4. МИКРОКОНТРОЛЛЕРЫ ФИРМЫ ATMEL С АРХИТЕКТУРОЙ AVR 217 ********* Описание переменных ********************** .DEFPWL = r15 .DEFA=r16 переменная перезагрузки .DEF В = r17 .DEF Flags = r23 •.регистр флагов, бит 4 - ;флаг PwmDown .DEF TimeL = r24 программный таймер, цена ;деления 1 ms .DEFTimeM = r25 .DEFTimeH = r26 .EQU PwmDown = 4 ;бит 4 - флаг PwmDown ******* Основная часть программы ******************* .ORG 0 rjmp Start ; начало таблицы переходов .ORG $2 ; вектор Into reti .ORG $4 reti ;вектор Inti ;(не используется) .ORG $6 reti ; вектор Int2 ;(не используется) .ORG $8 reti ;вектор Int3 ;(не используется) .ORG $A reti ;вектор Int4 ;(не используется) .ORG $C reti ;вектор Int5 ;(не используется) .ORG $E reti ;вектор Int6 ;(не используется) .ORG $10 reti ; вектор Int7 ;(не используется) .ORG$12h reti ;вектор Timer2 Compare ;(не используется) .ORG $14 ;вектор Timer2 Overflow ;(не используется) reti
218 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ .ORG $16 reti ; вектор Timerl Capture ;(не используется) .ORG $18 reti ; вектор Timerl CompareA ;(не используется) .ORG $1A reti ;вектор Timerl CompareB ;(не используется) .ORG $1C rjmp IntTI ; вектор Timerl Overflow .ORG$1E reti доктор TimerO Compare ;(не используется) .ORG $20 rjmp IntTO ; вектор TimerO Overflow .ORG $22h reti ; вектор SPI ;(не используется) .ORG $24 reti ; вектор приемника UART ;(не используется) .ORG $26 reti доктор «буфер передатчика ;пуст» UART ;(не используется) .ORG $28h :ti ; вектор передатчика UART ;(не используется) .ORG $2A ti доктор AD преобразователя ;(не используется) .ORG $2C reti ;вектор EEPROM ;(не используется) .ORG $2E reti доктор компаратора ; (не используется) .ORG $30 Start: clr TimeL dr TimeM ; начало основной программы
ГЛАВА 4. МИКРОКОНТРОЛЛЕРЫ ФИРМЫ ATMEL С АРХИТЕКТУРОЙ AVR 219 clr TimeH clr Hags clr PWL Idi A,$0 out SPH.A Idi A,$DF out SPL.A указатель стека SP= $DF Idi A,$5 out TCCRO,A ;запускаем таймер TO, CK/128 Idi A,$21 ;таймер T1, PWM 8 bit, ;очищается по совпадению ;при счете вверх out TCCR1A.A Idi A,$1 out TCCR1B.A ;запускаем таймер Т1, Ск/1 Idi A,$5 разрешим прерывания ;отТ0,Т1 out TIMSK.A sbi DDRB.6 ; ОС1В - выход sei ;разрешим все прерывания ;Рабочий цикл программы, ничего не делаем. Work: rjmp Work ;**“ Процедура прерывания по переполнению таймера ТО *** IntTO: push А Idi A,RldO out TCNTO.A перезагрузим таймер in A,SREG ;сохраненим SREG adiw TimeL,4 brcc itN1 inc TimeH ;Time:=Time+4 ms itN1: out SREG,A pop A reti ;восстановление SREG » :** Процедура прерывания по переполнению таймера Т1 ***** IntTI: push А push В in A,SREG Idi B,1 sbrc Hags.PwmDown rjmp itDec add PWL, В mov B.PWL cpi B, PWmax brcs itWr ; сохранение SREG ; один дискрет ;если PwmDown=1, ; будем уменьшать ;если PWmDown=0, то ; наращиваем PWL на дискрет ; достигли верхней границы? :при PWL > PWmax
220 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ sbr Flags,(1 «PwmDown) Idi B.Pwmax ; to PwmDown:=1 ; PWL := PWmax mov PWL, В tjmp itWr itDec: sub PWL, В brcc itWr ; если PWL<0 cbr Flags,(1 «PwmDown) clr PWL ; to PwmDown:=0 itWr: out OCR1BL.PWL out SREG,A pop В pop A reti ; восстановление SREG В начале программы описаны константа и переменные, т.е. значению константы и адресам регистров присвоены символические имена. В про- грамме обращение к этой константе и переменным производится по при- своенным именам. Основная часть программы начинается с таблицы переходов системы сброса и прерываний. Собственно программа начинается с адреса $30 об- нулением используемых регистров и загрузкой в указатель стека исход- ного адреса $DF. Далее загрузкой регистров управления для таймера О указывается коэффициент деления тактовой частоты, а для таймера 1 указывается режим 8-разрядного ШИМ с низким уровнем выходного сигнала при совпадении (счетчика и уставки) и счете вверх. Тактовая частота для таймера 1 определена равной СК (системная частота). За- грузка регистра TIMSK кодом $05 разрешает прерывания по переполне- нию таймеров 0 и 1, а установка бита 6 регистра направления DDRB оп- ределяет вывод PORTB.6 как выход. В конце основной программы выво- ды порта В определяются как выходы и устанавливается общий флаг разрешения прерываний. Далее программа зацикливается и все действия выполняются по запросам прерываний от таймеров 0 и 1. Процедура обработки прерывания по переполнению Таймера 0 начи- нается с сохранения в стеке регистра A (R16), затем через регистр А пе- резагружается счетный регистр таймера 0 (TCNT0) и далее в регистре А сохраняется содержимое SREG. После этого программный счетчик, включающий регистры TimeL, TimeM и TimeH, увеличивается на одно значение (4 мсек). Командой ADIW к 16-разрядному слову в младших двух регистрах прибавляется значение дискрета, при возникновении пе- реноса инкрементируется старший байт в регистре TimeH. При таком подходе программный счетчик, работающий очень долго, является дейст- вительно счетчиком реального времени, т.е. в нем всегда находится теку- щее значение времени в миллисекундах от момента его запуска. Реальное время в миллисекундах обеспечивается соотношением тактовой частоты,
ГЛАВА 4. МИКРОКОНТРОЛЛЕРЫ ФИРМЫ ATMEL С АРХИТЕКТУРОЙ AVR 221 коэффициента ее деления для таймера 0 и константы перезагрузки тай- мера 0. В завершение процедуры восстанавливаются значения SREG и регистра А. Процедура обработки прерывания по переполнению Таймера 1 начи- нается с сохранения в стеке регистров А и В, далее в регистре А сохраня- ется содержимое SREG, а в регистр В помещается значение дискрета из- менения порога (1). Управление ШИМ начинается с анализа флага PwmDown (R23.4). Если флаг установлен («гармошка» сжимается), то осуществляется переход на метку itDec, где из значения PWL вычитается дискрет и при отсутствии заема новое значение заносится в регистр срав- нения OCR1B, изменяя порог и ширину импульса. При возникшем заеме флаг PwmDown сбрасывается, PWL обнуляется и заносится в регистр сравнения OCR1B. Если флаг PwmDown сброшен («гармошка» растяги- вается), то к значению PWL прибавляется дискрет, новое значение срав- нивается в верхней границей (если меньше границы, устанавливается флаг С) и если значение меньше границы, новое значение заносится в регистр сравнения OCR1B, изменяя порог и ширину импульса. Если зна- чение вышло за верхнюю границу, флаг PwmDown устанавливается (пе- реход на уменьшение), значение PWL приравнивается к верхней границе (PWL = PWmax) и новое значение заносится в регистр сравнения OCR1B. В конце процедуры восстанавливаются значения SREG и реги- стров В и А.
ГЛАВА 5 ПРОЕКТИРОВАНИЕ ЦИФРОВЫХ УСТРОЙСТВ НА БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ 5.1. Основные семейства ПЛИС фирмы Altera Программируемые логические интегральные схемы (ПЛИС, англ, pro- grammable logic devices - PLD) применялись в начале в составе микро- процессорных систем для замены стандартной логики, выполнявшей вспо- могательные функции. Микропроцессорная техника в это время домини- ровала, поскольку для нее был найден ясный инженерный подход к про- ектированию систем. Разработчики быстро освоили магистрально- модульную структуру аппаратных средств на основе ведущего микропро- цессора и подчиненных ему интерфейсных БИС. Создание прикладных программ осуществлялось известными методами и средствами, использо- вался ранее накопленный багаж знаний. Затруднения имели место на этапе комплексной отладки аппаратуры и программного обеспечения в реальном масштабе времени, но они были преодолены созданием метода внутри- схемной эмуляции и комплексов инструментальных средств на основе эму- ляторов. Появление персональных компьютеров дало дополнительное ус-
ГЛАВА 5. ПРОЕКТИРОВАНИЕ ЦИФРОВЫХ УСТРОЙСТВ НА БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ 223 корение процессу обучения специалистов интегрированным методам проек- тирования аппаратуры и программ. Основные трудности при развитии идеи ПЛИС (как идеи свободного проектирования и изготовления разработчиком произвольного цифрового устройства) заключались в невозможности использования простого инже- нерного подхода и необходимости создания новых математических методов синтеза цифровых структур в некотором элементном базисе на основе опи- сания целевой логической функции. Требовалось во взаимосвязи решить следующие задачи: • определить элементный базис ПЛИС - достаточно развитый, чтобы реализовать необходимые функции целевых устройств, и достаточно простой, чтобы время расчетов на инструментальном компьютере при синтезе не было чрезмерным; • разработать математические методы синтеза устройств (в выбранном базисе), декомпозиции, компиляции, межэлементной трассировки, функционального моделирования и временного анализа; • создать интегрированную систему проектирования цифровых уст- ройств на ПЛИС. Вначале появились микросхемы типа PLA (.программируемые логиче- ские матрицы - ПЛМ, из отечественных К556РТ1), их программирование осуществлялось в кодах через заполнение таблицы истинности. Позже появились микросхемы типа PAL и стали применяться языки программи- рования ассемблерного типа, как например PALASM. В настоящее время БИС программируемой логики имеют степень интеграции до нескольких миллионов эквивалентных вентилей, быстродействие (ввода/вывода) до 400МГц. В качестве средств описания проектов применяются языки высо- кого уровня типа HDL (Hardware Description Language), например Al- teraHDL, VHDL, Verilog HDL. Новый импульс развитию ПЛИС сообщило развитие коммуникацион- ных технологий. Именно здесь, на больших потоках и предельных скоро- стях обработки информации стали проявляться принципиальные ограни- чения микропроцессоров, связанные с избыточностью их архитектуры. ПЛИС позволяет реализовать специализированную структуру, поэтому при одинаковой тактовой частоте реализованное устройство имеет существенное преимущество в быстродействии. С этой особенностью связана и другая быстро развивающаяся область применения ПЛИС - реализация функций цифровой обработки сигналов. Из наиболее известных производителей ПЛИС следует отметить фир- му Altera. Небольшая, вначале, компания удачно решила перечисленные вьппе задачи путем постепенного согласованного усложнения элементной базы и средств проектирования. Ее успехи ко второй половине 90-х годов вывели ее в число основных производителей микросхем ПЛИС.
224 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Основные семейства ПЛИС фирмы Altera приведены ниже в таблице. Семейства Параметры МАХ FLEX MAX FLEX MAX FLEX APEX 3000 6000 7000 8000 8000 10K 20K Число экв. 600- 10000- 600- 6000- 2500- 10000- 113000 вентилей 5000 24000 5000 12000 16000 250000 2392000 Внутренняя память, бит - - - - - 6144- 40960 24576 442368 Выводов пользователя 34-158 102-218 36-164 68-208 68-208 150-470 128-808 Технология EEPROM SRAM EEPROM EEPROM SRAM SRAM SRAM Семейство МАХ3000 включает микросхемы со следующими характе- ристиками: Тип микро- схемы Корпуса Входы I/O Триггеры Ячейки Fmax, MHz Ориентиро- вочная цена,$ ЕРМ 3032A L44, Т44 4 30 32 32 192 2 ЕРМ 3064А L44, Т44 Т100 4 30 62 64 64 192 2,5 ЕРМ 3128А Т100, Т144 4 76 92 128 128 182 10 ЕРМ 3256А Т144 Р208 4 112 154 256 256 156 21 В таблицах этого параграфа использованы следующие обозначения: Входы - количество входных линий с предопределенными функциями (Clock, Res, ОЕ). I/O - количество программируемых линий портов типа вход/выход. Триггеры - количество триггеров, включая внутренние и периферий- ные. Fmax — максимальная частота работы ПЛИС. счетчиков, реализованных на Обозначения корпусов: L44-PLCC44 Т44 - TQFP44 Р208 - PQFP208 G192 - PGA192 B100-BGA100 L84-PLCC84 ТОО - TQFP100 Р240 - PQFP240 G232 - PGA232 B144-BGA144 Т144 - TQFP144 R240-RQFP240 G503 - PGA503 В256 - BGA256 Т160 - TQFP160 R304 - RQFP304 В324 - BGA324 В356 - BGA356 Технология изготовления EEPROM обеспечивает сохранение конфи- гурации при отключении питания. Число логических эквивалентных вен- тилей ПЛИС этой серии находится в диапазоне 600-5000, количество программируемых пользователем выводов 34-158, общее количество выво- дов 44-208. Микросхемы этой серии могут быть запрограммированы с по- мощью программатора, в этом случае можно использовать все линии I/O-
ГЛАВА 5. ПРОЕКТИРОВАНИЕ ЦИФРОВЫХ УСТРОЙСТВ НА БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ 225 Кроме того, все ПЛИС этой серии имеют возможность внутрисистемного программирования (in-system programmability) через порт типа JTAG с использованием устройств типа BitBlaster, ByteBlaster и MasterBlaster, тогда 4 линии порта JTAG резервируются для этой цели. Выводы имеют возможность эмуляции режимов открытого коллектора и третьего (высо- коимпедансного) состояния, существует возможность управления скоро- стью нарастания выходных сигналов. Может быть использовано не более 6 управляющих сигналов разрешения выхода. Семейство FLEX6000 включает следующие микросхемы: Тип микро- схемы Корпуса Входы I/O Триггеры Ячейки Объем кода, Кбайт Ртах, MHz Ориенти- ровочная цена,$ EPF 601ОД TWO, Т144 В256 4 77 98 135 880 880 32 18 EPF 6016А Т100 Т144 Р208, В256 4 77 113 167 1320 1320 32 25 EPF 6024А Т144 Р208 Р240 4 113 167 195 1960 1960 49 37 В этой таблице параметр «Объем кода» указывает размер массива данных конфигурации для загрузки в ПЛИС. ПЛИС этого семейства выполнены по технологии SRAM, поэтому конфигурация теряется после отключения питания и ее нужно восстанав- ливать. Загрузка может быть: 1. активная, когда ПЛИС сама читает данные из внешнего ПЗУ: • с последовательным доступом (Active Serial), используются ПЗУ серий ЕРСхх (Altera), однократные, или АТ17Схх (At- mel), стираемые; • с параллельным доступом (Active Parallel), используются стандартные ПЗУ серий 27ххх, 28ххх, 29ххх; 2. пассивная, когда данные загружаются ведущим процессором: • с последовательным доступом (Passive Serial), возможна за- грузка через ByteBlaster от компьютера или с помощью спе- циальной программы-загрузчика; • с параллельным доступом (Passive Parallel), загрузка произ- водится с помощью специальной программы-загрузчика. Число логических эквивалентных вентилей ПЛИС этой серии нахо- дится в диапазоне 10000—24000, количество программируемых пользовате- лем выводов 102—218, общее количество выводов 100—256. Видно, что ис-
226 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ пользуются корпуса с большим количеством выводов, предъявляющие очень высокие требования к технологии печатных плат и монтажа. ПЛИС этой серии, кроме EPF6016 (Vcc = 5,0 В), имеют напряжение питания 3,3 В. Все ПЛИС этой серии имеют возможность программирования с исполь- зованием устройств типа BitBlaster, ByteBlasterMV и MasterBlaster через выделенные линии. Каждый из пользовательских выводов может быть ин- дивидуально переведен в третье состояние. Имеется возможность управле- ния скоростью нарастания выходных сигналов. Семейство МАХ7000 включает микросхемы МАХ7000А и МАХ7000АЕ с напряжением питания 3,3 В, МАХ7000В с напряжением питания 2,5 В и MAX7000S с напряжением питания 5,0 В, все имеют воз- можность внутрисистемного программирования. Микросхемы МАХ7000АЕ представляют собой улучшенный вариант и допускают «горячее включе- ние». Тип микросхемы Корпуса Входы I/O Триггеры Ячейки Fmax, MHz Ориентировочная цена,$ ЕРМ 7032 L44, Т44 4 32 32 32 192 4.5 ЕРМ 7064 L44, Т44 Т100, В100 4 32 64 64 64 192 6 ЕРМ 7128 L84 Т100.В100 Т144.В256 4 64 80 96 128 128 182 14 ЕРМ 7256 Т100.В100 Т144 Р208.В256 4 80 116 160 256 256 164 34 ЕРМ 7512АЕ Т144 Р208 В256 4 116 172 208 512 512 119 ЕРМ 7160S L84 Т100 Т160 4 60 80 96 160 160 149 34 ЕРМ 7192S Т160 4 116 192 192 125 38 Каждая линия включает микросхемы типа ЕРМ7032, ЕРМ7064, ЕРМ7128, ЕРМ7256. Низковольтные линии включают микросхемы EPM7160S, EPM7192S, ЕРМ7512А,В. Технология изготовления EEPROM обеспечивает сохранение конфигурации при отключении питания. Число логических эквивалентных вентилей ПЛИС этой серии находится в диа- пазоне 600-5000, количество программируемых пользователем выводов 36-164, общее количество выводов 44-208. Выводы имеют возможность эмуляции режимов открытого коллектора и третьего (высокоимпедансно- го) состояния, существует возможность управления скоростью нарастания выходных сигналов. Может быть использовано не более 6 управляющих сигналов разрешения выхода.
ГЛАВА 5. ПРОЕКТИРОВАНИЕ ЦИФРОВЫХ УСТРОЙСТВ НА БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ 227 Семейство FLEX8000 включает микросхемы: Тип микро- схемы Корпуса Входы I/O Триггеры Ячейки Объем кода, Кбайт Fmax, MHz Ориентиро- вочная цена, $ EPF8282A L84 Т100 4 64 74 282 208 5 133 9,5 EPF 8452А L84.T100 Р160 4 64 116 452 336 8 133 16 EPF 8636А L84 Р160 G192.P208 4 64 114 132 636 504 12 133 22 EPF 8820А Т144 Р160 G192.P208 4 108 114 148 820 672 16 133 27 EPF81188A Р208 G232.R240 4 144 180 1188 1008 24 133 34 EPF81500A R240 G280.R304 4 177 204 1500 1296 31 133 46 ПЛИС этого семейства выполнены по технологии SRAM, после от- ключения питания необходима перезагрузка. Число логических эквива- лентных вентилей ПЛИС этой серии находится в диапазоне 2500-16000, количество программируемых пользователем выводов 68—208, общее коли- чество выводов 84-304. Корпуса используются как обычные PLCC, так и очень сложные, штырьковые многорядные и с шариковыми выводами. Все ПЛИС этой серии имеют возможность тестирования через порт типа JTAG, программируются с использованием устройств типа BitBlaster, ByteBlasterMV и MasterBlaster через выделенные линии. Семейство МАХ9000 включает микросхемы: Тип микросхемы Корпуса Входы I/O Триггеры Ячейки Fmax, MHz Ориентировочная цена,$ 9320 L84 Р208 В356 4 56 128 164 484 320 144 59 9400 L84 Р208 R240 4 55 135 155 580 400 118 74 9480 Р208 R240 4 142 171 676 480 144 121 9560 Р208 R240 В356 4 149 187 212 772 560 144 146 ПЛИС этой серии имеют организацию матрицы, аналогичную сериям FLEX6000 и FLEX8000, но изготовлены по технологии EEPROM, что обеспечивает сохранение конфигурации при отключении питания. Число
228 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ логических эквивалентных вентилей ПЛИС этой серии находится в диа- пазоне 600-5000, количество программируемых пользователем выводов 168-216, общее количество выводов 84-356. Из-за использования слож- нейших корпусов ПЛИС этой серии программируются только внутрисис- темно при помощи устройств типа BitBlaster и ByteBlasterMV. Семейство FLEX10K включает микросхемы: Тип микро- схемы Корпуса Входы I/O Ячейки Объем кода, Кбайт RAM, бит Fmax, MHz Ориентировоч- ная цена, $ 10К10 L84 Т144 Р208 4 55 98 130 576 15 6144 204 22 10К20 Т144 Р208 R240 4 98 143 185 1152 29 12288 204 39 юкзо Р208 R240 В356 4 143 185 242 1728 46-58 12288 204 50 10К40 Р208 R240 4 143 185 2304 61 16384 204 105 10К50 R240 В356 G403 4 185 270 306 2880 76-96 2480 204 91 10К70 R240 G503 4 185 354 3744 109 18432 204 222 10К100 G503 4 402 4992 146 24576 204 Архитектура этого семейства отличается от всех рассмотренных ранее наличием нескольких встроенных блоков памяти размером 2048 бит каж- дый (4096 бит в FLEX10KE). В семействе имеются линии с напряжениями питания 5 В, 3,3 В и 2,5 В. Семейство АРЕХ20К включает БИС очень высокой степени интегра- ции и предназначено для построения вычислительных систем на одном кристалле. Микросхемы имеют корпуса с общим количеством выводов от 144 до 984. Возможно до восьми глобальных синхросигналов. Каждый из пользо- вательских выводов может быть индивидуально переведен в третье состоя- ние. Напряжение питания может быть равным 1,8 В и 2,5 В, но при этом обеспечивается совместимость по входам и выходам только со схемами с аналогичными логическими уровнями. Для совместимости с уровнями 3 В- и 5 В-схем на второй вывод пита- ния должно быть подано напряжение 3,3 В. Это называется MultiVoltl/O интерфейс.
ГЛАВА 5. ПРОЕКТИРОВАНИЕ ЦИФРОВЫХ УСТРОЙСТВ НА БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ 229 Тип микро- схемы Корпуса Входы I/O Ячейки Объем кода, Кбайт RAM, бит Ртах, MHz Ориентировоч- ная цена, $ ЕР20К30Е Т144 В144 Р208 В324 6 86 87 122 122 1200 42 2457 6 370 22 ЕР20К60Е Т144 В144 Р208 Р240 В324 6 86 87 142 145 190 2560 79 3276 8 370 40 ЕР20К100Е Т144 В144 Р208 Р240 В324 6 86 87 142 176 241 4160 124 5324 8 370 54 ЕР20К100 Т144 Р208 Р240 В324 6 95 153 183 246 4160 121 5324 8 370 54 ЕР20К160Е Т144 Р208 Р240 В356 6 82 137 169 310 6400 186 8192 0 370 91 ЕР20К200Е Р208 Р240 В356 6 130 162 265 8320 240 1064 96 370 136 ЕР20К200 Р208 Р240 В356 6 138 168 271 8320 239 1064 96 370 170 Двунаправленный ввод/вывод обеспечивается на частотах до 370 МГц. Поддерживаются режимы LVDS, SSTL, GTL+ ввода/вывода. Имеется встроенная ФАПЧ на линиях синхронизации. В целом, это семейство пре- доставляет проектировщику настолько большие возможности, что одной из важнейших проблем становится маркетинг - что делать и в расчете на ка- кого потребителя. Семейство АСЕХ 1К создано фирмой Altera как альтернатива полу- заказным БИС (ASIC - Application Specific Integrated Circuit), поэтому микросхемы этой серии имеют высокую степень интеграции и низкую при- веденную стоимость логической ячейки. БИС имеют корпуса с общим ко- личеством выводов от 100 до 484. Высокая степень интеграции достигнута благодаря использоваю низковольтного напряжения питания 2,5 В, харак- терной особенностью является интерфейс MultiVoltl/O. Двунаправлен- ный ввод/вывод обеспечивается на частотах до 250 МГц. Семейство включает следующие микросхемы:
230 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ логики Тип микро- схемы Корпуса Входы I/O Ячейки Объем кода, Кбайт RAM, бит Fmax, MHz Ориентировоч- ная цена, $ ЕР1К10 Т100 Т144 Р208 В256 6 60 86 124 124 576 22 12288 250 10 ЕР1К30 Т144 Р208 В256 6 96 141 165 1728 58 24576 250 16 ЕР1К50 Т144 Р208 В256 6 96 141 180 2880 76 40960 250 22 ЕР1К100 Р208 В256 6 141 180 4992 164 49152 250 34 Организация матриц различных семейств ПЛИС Altera, структура ло- гических ячеек, динамические параметры и другая техническая информа- ция приведены в каталогах фирмы Altera, часть информации в переводе можно почерпнуть в [2]. Мы на этом останавливаться не будем, поскольку считаем основной целью этой главы рассмотрение всего цикла реализации на ПЛИС проекта цифрового устройства, особенно с использованием описания на языке AHDL. 5.2. Система проектирования MAX+plusll В качестве средства автоматизации проектирования устройств на осно- ве собственных микросхем фирма Altera разработала систему MAX+plusll. Эта система состоит из 11 программ-обработчиков проекта (приложений), которые функционируют под управлением программы Manager. Система является полноцикловой, т.е. поддерживает не отдельные этапы проекти- рования (как системы типа CAD - computer aided design), а сквозной про- цесс от ввода и контроля описания до программирования микросхемы ПЛИС. Такие системы получили название EDA - electronic design automa- tion. Вид окна Manager системы MAX+plusll с открытым списком прило- жений приведен на рис. 5.1. Проект в системе MAX+plusll может быть иерархическим и состоять из набора модулей. Каждый модуль содержит описание части проекта, формой описания может быть графическое представление принципиальной схемы, текст на языках AHDL/VHDL/Verilog, логико-временные диа- граммы функционирования. Для создания исходных модулей в состав приложений включены ре- дакторы: графический - Graphic Editor, текстовый - Text Editor, логико- временных диаграмм Waveform Editor. Любой файл (модуль) может быть
ГЛАВА 5. ПРОЕКТИРОВАНИЕ ЦИФРОВЫХ УСТРОЙСТВ НА БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ 231 представлен в графическом виде как символ. Это можно сделать явно с использованием редактора символов - Symbol Editor. Далее эти символы могут быть использованы при создании иерархического проекта. Рис. 5.1. Вид окна Manager системы Max+plusll с открытым списком приложений Пользователю доступны обширные библиотеки примитивов, макро- функций и стандартных компонентов 74 серии. При создании графических модулей возможен импорт файлов из известной системы OrCAD. Система MAX+plusII работает в среде Windows и в полной мере использует пре- имущества многооконного интерфейса. В частности, различные исходные модули можно одновременно просматривать в окнах с помощью различ- ных редакторов. В приложение Compiler входят все средства обработки исходных мо- дулей, включая трансляцию, размещение и трассировку на ячейках опре- деленного типа микросхемы ПЛИС, связывание. Перед трансляцией с по- мощью препроцессоров различные формы описания приводятся к едино- образному представлению. В процессе трансляции формируются как целе- вые файлы, так и вспомогательные (служебные). Перечень формируемых файлов определяется опциями (ключами) трансляции. Анализ иерархического проекта может быть выполнен с помощью приложения Hierarchy Display. Отображаются все модули проекта и их взаимосвязи, а также все типы файлов, сформированные в процессе обра- ботки проекта.
232 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ логики Перед программированием ПЛИС целесообразно выполнить проверку функционирования спроектированного устройства. Такая проверка на уровне моделирования может быть выполнена с помощью приложения Simulator. Входными данными для него являются файл проекта после трансляции и тестовые векторы, а результатом - логико-временные диа- граммы функций выходов. Следует отметить, что при функциональном моделировании проверя- ется первый вариант проекта, который не учитывает особенностей реали- зации на конкретной микросхеме ПЛИС. После успешного выполнения этого этапа проект привязывается к структуре микросхемы, система вы- полняет конфигурацию ячеек ПЛИС и трассировку связей между ними. При этом второй вариант приобретает некоторую избыточность, например из-за необходимости увеличить коэффициент разветвления по определен- ному выходу. После завершения проверки функционирования возможен анализ вре- менных параметров, определение критического пути и т.д. с помощью приложения Timing Analyser. И в этом случае результаты получаются с помощью моделирования на инструментальном компьютере. Увидеть связи логических элементов внутри ПЛИС и назначения вы- водов микросхемы, изменить конфигурацию вручную можно с помощью редактора FloorPlan Editor. На завершающем этапе работы осуществляется программирование микросхемы ПЛИС с использованием приложения Programmer. Приложение Message Processor формирует сообщения об ошибках трансляции проекта и другую служебную информацию. В целом, проектирование цифровых систем на основе БИС програм- мируемой логики связано с необходимостью изучения большого объема информации по нескольким направлениям: характеристики и особенности семейств ПЛИС, методы работы с использованием определенной системы проектирования, спецификации языка HDL. Чрезвычайно важен правиль- ный подход и очередность изучения информации. По нашему мнению, не- удачи многих попыток связаны с тем, что в начале изучалась внутренняя структура микросхем ПЛИС, в то время как ключом к успеху является освоение языка HDL и системы проектирования. Систематическое описание системы проектирования MAX+PlusII ос- ложняется тем, что состав меню команд и опции команд зависят от режима работы и вызванного приложения. Кроме того, система весьма развитая и многие ее возможности на первых этапах работы могут не использоваться. Все это привело нас к мысли создать комплекс учебных средств для изу- чения проектирования цифровых систем на основе БИС программируемой логики фирмы Altera с применением системы проектирования MAX+PlusII и построить его по принципу «делай как я». Это обеспечивает быстрое практическое освоение методов проектирования и позволяет добиться ре-
ГЛАВА 5. ПРОЕКТИРОВАНИЕ ЦИФРОВЫХ УСТРОЙСТВ НА БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ 233 ального результата. Дальнейшее самостоятельное продвижение облегчается наличием развитого режима поддержки Help системы MAX+PlusII. Материал первых работ учебного практикума излагается в параграфах 5.3-5.5, основные конструкции языка AHDL рассмотрены в параграфе 5-6, а состав и особенности всего комплекса — в параграфе 5.7. Лаборато- рия «Микропроцессорные системы» МИФИ на базе этого комплекса про- водит учебные циклы «Проектирование цифровых устройств на ПЛИС Altera с использованием системы Мах+plusII» для специалистов промыш- ленности. 5.3. Графический ввод схемы и симуляция в системе MAX+plusll Предположим, что проектируемое устройство определено булевым уравнением, а описание проекта в системе MAX+plusll предполагается выполнить в графической форме с использованием библиотеки примити- вов. Последовательность решения такой задачи следующая: • исходя из уравнения необходимо определить количество переменных и построить таблицу истинности; • используя графический редактор, ввести схему устройства. Начинать рекомендуется с входных портов, количество которых определяется количеством переменных в уравнении. Далее анализируется вид чле- нов уравнения и вызываются соответствующие примитивы из библио- теки системы MAX+plusll. В завершение проводятся межсоединения (цепи и шины), вызываются примитивы выходных портов; • используя редактор временных диаграмм, на основе таблицы истин- ности формируются тестовые векторы для проверки (верификации) соответствия введенной схемы и первоначального уравнения. Для это- го используется функциональная симуляция; • выполняется трансляция проекта, вызывается симулятор, который на основе тестовых векторов формирует диаграмму выходной функции устройства; • сравнивая диаграмму состояний функции с таблицей истинности дела- ется заключение о правильности функционирования разработанного устройства. В качестве примера в данной работе будем рассматривать цифровое устройство, которое выполняет логическую функцию f = Xi Х2 + Х2 х3 Таблица истинности имеет следующий вид
234 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ XI х2 хЗ f 0 0 0 0 0 0 1 1 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 1 1 1 0 1 1 1 1 1 Осуществим ввод принципиальной схемы устройства с использованием графического редактора системы MAX+plusII, выполним трансляцию про- екта с использованием приложения Compiler и проверим выполнение таб- лицы истинности, используя приложение Simulator. Определение имени проекта. Разрабатываемое устройство представ- ляется в системе MAX+plusII как проект. В начале работы с системой не- обходимо определить текущий проект, т.е. указать его имя и директорию. Выберем директорию d:\max2work\tutorial, а в качестве имени проекта укажем graphicl. Из меню Manager выберите File|Project|Name, откроется диалоговое окно, приведенное на рис. 5.2. Имя тома и директория выби- раются с помощью соответствующих меню, имя файла вводится в строке File fcjanie. Завершается определение вводом ОК. Имя проекта отобразится в титульной строке окна Manager. Рис. 5.2. Вид диалогового окна определения имени проекта
ГЛАВА 5. ПРОЕКТИРОВАНИЕ ЦИФРОВЫХ УСТРОЙСТВ НА БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ 235 Использование трафического редактора. Для вызова графического редактора нужно в меню Manager выбрать Max+plusII (Graphic Editor. Откроется окно графического редактора, в титульной строке окна появит- ся сообщение (Untitledl - Graphic Editor), говорящее о том, что текущим приложением системы MAX+plusII является графический редактор и от- крыт неименованный файл. Строка меню Manager содержит имена команд и набор инструментальных панелей, которых не было на рис. 5.1, т.е. вид окна Manager зависит от текущего приложения. Чтобы узнать назначение каждой панели, нужно навести на нее указатель мыши, информация вы- светится под окном в строке состояния. Графическому файлу со схемой узла необходимо присвоить имя с расширением .gdf (Graphic Design File). Для этого выберите File|Save As и в строке File Name появившегося диалогового окна укажите имя graphicl.gdf, введите ОК. Для ввода графических изображений элементов будем импортировать их из библиотеки, которая в этой системе называется Primitives. Дважды щелкните мышью в центре экрана графического редактора. Откроется диалоговое окно, в котором в меню Symbol Libraries указанная библиотека находится по адресу d:\maxplus2\max21ib\prim. Дважды щелкните мышью по этой строке, в меню Symbol Files появится список логических элементов. Двойной щелчок по имени and2 приводит к копированию эле- мента в окно графического редактора в позицию, определенную ранее кур- сором. Щелчок мышью по элементу производит его выбор, о чем свиде- тельствует окрашивание в красный цвет. После этого, передвигая курсор мыши при нажатой кнопке 1, можно двигать элемент по окну редактора. Для определения положения элемента полезна сетка, которая появляется при активизации опции Option|Show guidelines. Для реализации функции f нужен еще один элемент and2, два элемен- та ог2 и элемент not. Введите эти элементы (примитивы) указанным выше образом. После того, как логические элементы введены, нужно ввести символы входных и выходных портов. Их примитивы находятся в той же библио- теке под именами input и output. Введите три входных порта и один вы- ходной, чтобы получить вид экрана, приведенный на рис. 5.3. Далее необходимо присвоить имена всем портам. Для этого дважды щелкните мышью по слову PIN_NAME на символе входного порта, нахо- дящегося в верхнем левом углу экрана. Слово засветится, позволяя прямо набрать имя порта. Ввод Enter непосредственно после имени переводит курсор на следующий порт и так далее. Присвойте имена х2 и хЗ остав- шимся двум входным портам и имя f выходному порту. Следующим шагом является ввод линий, соединяющих логические элементы между собой и с портами.
236 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Рис. 5.3. Вид окна графического редактора с изображениями примитивов Нажмите панель «Выбор объекта» - верхнюю в вертикальном меню слева от окна редактора (на ней изображена стрелка). Если после этого подвести курсор к концу линии вывода (pinstub) порта х1, его указатель приобретет вид креста, а после нажатия правой клавиши мыши потянет за собой соединительную линию (node), которая кончается при отпускании клавиши. Соединение выхода и входа двух элементов выполняется в виде горизонтальных и вертикальных отрезков прямых. Любой отрезок можно выделить, щелкнув по нему мышью (он станет красным), и стереть (на- пример клавишей Delete). Проведите все соединения, чтобы схема приоб- рела вид соответствующий рис. 5.4. Работа с компилятором. После ввода схемы система проектирования ана- лизирует ее и генерирует булевы уравнения для всех логических функций. Этот этап обработки выполняет приложение-компилятор, который вызыва- ется выбором Max+PlusII|Compiler или щелчком по панели компилятора в меню инструментов. Перед компиляцией нужно выбрать тип микросхемы ПЛИС, на которой будет реализован проект. Наберите Assign|Device и в открывшемся окне укажите тип микросхе- мы ПЛИС, установленной на плате - EPF8282ALC84-4. Время переком- пиляции проекта сокращается, если установлена опция Smart Recompile (Processing|Smart Recompile). Если выбрать ProcessingJDesign Doctor, спе- циальная утилита проверит все файлы проекта на соответствие правилам реализации на выбранном типе ПЛИС. Для дальнейшей симуляции пона- добится SNF-файл, для его генерации нужно указать Processing | Functional SNF Extractor. После установки опций щелчок по клавише Start запускает
ГЛАВА 5. ПРОЕКТИРОВАНИЕ ЦИФРОВЫХ УСТРОЙСТВ НА БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ процесс компиляции, после окончания которого высвечиваются сообщения об ошибках и предупреждения. После успешной трансляции закройте окно компилятора (панелью X в верхнем правом углу). Рис. 5.4. Вид окна графического редактора со схемой устройства graphicl Симуляция. Симуляцией обычно называют процесс функционального моделирования с использованием программно-логической модели. Перед проверкой функционирования схемы необходимо создать тестовые векто- ры, которые представляют значения входных сигналов. Мы будем исполь- зовать для их создания редактор диаграмм, который выбирается последо- вательностью команд Max+PlusII|Waveform Editor. Когда окно редактора откроется, создайте файл graphic! .scf, последовательностью File|Save As и указанием graphic!.scf в строке File Name открывшегося диалогового окна. Далее определим входные и выходные линии схемы для процесса си- муляции. Для этого используем линии, занесенные в SNF-файл (Simulator Netlist File), созданный на этапе компиляции схемы. Введите Node]Enter Node from SNF. Откроется экран, в котором имеется два окна: Available Nodes & Groups и Selected Nodes & Groups. После нажатия List в первом окне появится список входных и выходных линий из SNF-файла. Нужно скопировать входные линий xl, х2, хЗ и выходную линию f во второе ок- но. Для этого нужно отметить линии поодиночке или блоком и нажать па- нель => между окнами. Чтобы отметить одну линию, нужно щелкнуть по ней мышью. Чтобы отметить блок, нужно протащить указатель по списку при нажатой правой клавише мыши. В завершение введите ОК и верни- тесь в окно редактора.
238 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Определим параметры процесса симуляции, значения входных пере- менных для нашей схемы. Вначале вводом File | End Time откроем окно определения времени симуляции, введем значение 160 ns и ОК. Далее оп- ределим интервал сетки окна редактора, введя Options | Grid Size и набрав 20 ns. После возврата в окно редактора (вводом ОК) экран системы вы- глядит так, как приведено на рис. 5.5. На входных линиях значения логи- ческого «0», а выходная линия заштрихована, что указывает на неопреде- ленность значения выходной переменной. Рис. 5.5. Вид окна редактора диаграмм (определены входные и выходные линии и сетка) Для полной симуляции функционирования нашего устройства необхо- димо подать на входы все комбинации значений переменных. Поскольку переменных три, комбинаций 23 = 8. Длительность каждой комбинации при полном времени симуляции в 160 пс равна 20 пс. Таким образом, пе- ременная хЗ должна иметь значение логической «1» в интервалы времени 20-40пс, 60~80пс, 100-120пс. Переменная х2 должна иметь значение ло- гической «1» на интервалах 40~80пс, 120-160пс, а переменная хЗ на ин- тервале 80-160пс. Для редактирования временной диаграммы переменной хЗ протащите указатель при нажатой правой кнопке мыши над линией логического «Os- во втором интервале сетки. Этот интервал будет «залит» черным цветом, в окнах Ref: и Time: отобразятся значения 20 пс и 40 пс. Переведите указа- тель на панель установки значения «1» в левом вертикальном меню инст- рументов и щелкните мышью. Временная диаграмма хЗ в указанном ин- тервале примет значение «1», заливка исчезнет. Аналогичными действиями отредактируйте диаграммы переменных хЗ, х2, х1 так, чтобы они приняли значения, указанные в предыдущем абзаце (рис. 5.6). Сохраните созданный файл (комбинация «горячих» клавиш Ctrl+S).
ГЛАВА 5. ПРОЕКТИРОВАНИЕ ЦИФРОВЫХ УСТРОЙСТВ НА БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ 239 Рис. 5.6. Окно редактора диаграмм с определенными для симуляции диаграммами входных переменных Для вызова приложения-симулятора выберите Max+pIusII (Simulator или нажмите соответствующую панель на верхнем меню инструментов. В открывшемся окне симулятора в заголовке указан режим функциональной симуляции, потому что на этапе компиляции была введена опция Process- ing | Functional SNF Extractor. В качестве входного файла указан graphi.c1.scf. Укажите в качестве Start Time значение 0.0 пс, а в качестве End Time значение 160.0 пс, и щелкните по панели Start. После сообщения об отсут- ствии ошибок щелкните по ОК и вернитесь в окно симулятора. Результаты симуляции записаны в файл graph.ic1.scf и отображаются в окне редактора диаграмм (рис. 5.7). Рис. 5.7. Окно редактора диаграмм с результатами симуляции
240 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Проверьте, что значения функции f соответствуют таблице истинно- сти. Закройте окно редактора диаграмм. 5.4. Описание схемы на AHDL, работа с монитором иерархии проекта MAX+plusII Система MAX+plusII имеет возможность ввода текстового описания цифровой схемы на языке AHDL (Altera Hardware Description Language), созданного с помощью встроенного или любого другого текстового редак- тора. Текстовые файлы в системе MAX+plusII имеют расширения .tdf (Text Design File). Встроенный текстовый редактор способен оказывать мощную поддержку пользователю, предоставляя шаблоны конструкций языка AHDL. Опишем в виде текста на языке AHDL мультиплексор, схема которого приведена ниже. MUX -- CLC F0 __ -- FI --- W Сохраним описание в файле mux 1.tdf. Далее с помощью графического редактора создадим комбинированный проект верхнего уровня, подключив к одному из входов мультиплексера комбинационное устройство, описан- ное в виде принципиальной схемы в предыдущем параграфе (графический файл graphicl .gdf). Проект верхнего уровня рассмотрим с помощью мони- тора иерархии проекта, а затем проверим работу устройства методом мо- делирования с использованием приложения Simulator. Создание текстового файла. Для вызова приложения-текстового ре- дактора нужно выбрать File | New и в диалоговом окне указать Text Editor file. После ввода ОК откроется окно текстового редактора с неименован- ным файлом. Нужно присвоить ему имя и сохранить (File | Save As) в нужной директории, например, с именем muxl.tdf. Связать проект с те- кущим файлом можно, выбрав File|Project!Set Project to Current File. Указанное имя muxl появится в заголовке окна Manager. После этих ша- гов можно создавать собственно текст описания устройства на языке AHDL. Для этого первоначально целесообразно использовать шаблоны конструкций языка. Шаблоны доступны после выбора Templates I AHDL Template. В диалоговом окне перечислены доступные разделы, первым идет Overall Structure, помогающий формировать структуру программы. Выберите этот раздел, и после появления его содержимого в окне тексто- вого редактора, ознакомьтесь со структурой программы. Видно, что мно-
ГЛАВА 5. ПРОЕКТИРОВАНИЕ ЦИФРОВЫХ УСТРОЙСТВ НА БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ 241 гие разделы не обязательны. Полезен раздел Title, задающий текст заго- ловка для файла Report File (.rpt). Его шаблон можно вызвать, дважды щелкнув по разделу Templates | AHDL Template | Title Statement. После двойного щелчка между кавычками это поле «зальется», позволяя прямо вводить текст. Введите слово Multiplexer. Получить информацию о назна- чении и синтаксисе этого поля можно, выбрав Help I AHDL | Design Struc- ture | Title Statement. После ввода заголовка соответствующую строку Title от Overall Structure нужно стереть. Обязательным разделом является Subdesign, описывающий входные, выходные и двунаправленные порты. Получить информацию об этом раз- деле можно, выбрав Help | AHDL I Design Structure | Subdesign. Вызовите шаблон, дважды щелкнув по разделу Templates I AHDL Tem- plate | Subdesign, после чего укажите в качестве входных портов clc, fi, w, а в качестве выходного fo, остальное сотрите. Булевы уравнения связывают значения сигналов на входных и выход- ных портах. Они вводятся в разделе Logic, который начинается ключевым словом BEGIN и завершается словом END. В этот раздел вложим раздел If Then, описывающий мультиплексер на два направления с управляющим входом w. Вызовите шаблон этого раздела, в качестве логического выра- жения после ключевого слова IF укажите просто имя входного переклю- чающего сигнала w. После ключевого слова THEN введите выражение fo = fi, выполняющееся при истинном значении выражения ( «1» на входе w). После ключевого слова ELSE введите выражение fo = clc, выполняющееся при ложном значении выражения ( «О» на входе w). Строку ELSEIF убе- рите. В результате окно редактора должно содержать текст, приведенный на рис. 5.8. muxl.tdf Text Editor • TITLE "Multiplexer"; SUBDESIGN rnuxl ( clc, fi, w: INPUT = VCC; fo : OUTPUT; BEGIN IF и THEN fc = fi; ELSE fo = clc; END IF; END; Рис. 5.8. Окно редактора текста с программой на языке AHDL
242 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Сохраните файл (Ctrl+S) и проверьте его на синтаксические ошибки, выбрав File|Project!Save&Check (Ctrl+K). Создайте из него символьный файл muxt.sym, выбрав File | Create Default Symbol. Создание графического файла верхнего уровня. Сейчас с помощью графического редактора мы создадим головной файл проекта f_mux1.gdft включающий как составные части ранее созданные файлы graphic! и тих!. Схема, которая будет получена в результате, приведена на рис. 5.9. Рис. 5.9. Графический файл верхнего уровня Создание иерархического проекта, состоящего из различных модулей, имеет следующие преимущества: • улучшается восприятие проекта и связей внутри него; • после определения интерфейса между модулями реализацию отдель- ных модулей можно поручить разным специалистам; • созданные и отлаженные модули можно использовать в этом проекте и последующих, как библиотечные. Последовательность действий по созданию иерархического проекта следующая: • создайте новый графический файл и сохраните его с именем f_m.ux1.gdf; • укажите в качестве имени текущего проекта f_mux1 (как делалось ранее или комбинацией клавиш Ctrl+Shift+J)-, • скопируйте в окно графического редактора символьный файл создан- ного в предыдущей работе графического файла graphic!. Вначале символьный файл нужно создать, открыв файл graphic!.gdf и выбрав File | Create Default Symbol. Далее закройте этот файл, вернитесь в головной файл проекта f_mux1 .gdf и щелкнув дважды мышью в нуж-
ГЛАВА 5. ПРОЕКТИРОВАНИЕ ЦИФРОВЫХ УСТРОЙСТВ НА БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ 243 ном месте экрана (перед предыдущим изображением) введите в диа- логовом окне имя graphicl. После ввода ОК условное символьное изображение описанной ранее в графической форме схемы появится в выбранном месте экрана; • введите, используя библиотеку примитивов, пять входных портов и один выходной; • определите имена всех портов; • соедините линии выводов входных портов и символьных изображений обоих устройств, а также выход устройства muxl с выводом выходно- го порта. Сохраните получившийся графический файл, который должен содер- жать изображение, приведенное на рис, 5.9. Работа с монитором структуры проекта. Структуру (иерархию) про- екта можно увидеть, используя специальное приложение. Введите команду Max+plusII |Hierarhy Display или щелкните по соответствующей панели меню инструментов. Откроется окно, в котором проект представлен в ви- де, соответствующем рис. 5.10. Структура головного проекта изображена в виде дерева, указаны имя каждого файла и исходный тип, а также иконка. Двойной щелчок по иконке открывает исходный файл нижнего уровня с помощью соответствующего редактора. Слева от каждой ветви указаны файлы с такими же именами, но другими расширениями, которые созданы в процессе обработки исходного файла. Рис. 5.10. Окно монитора структуры проекта Симуляция. Выполним симуляцию нашего иерархического проекта. Последовательность действий следующая: • создадим с помощью редактора временных диаграмм файл, где будут находиться тестовые векторы и результаты симуляции. Для этого от-
244 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ кроем редактор временных диаграмм (Max+PlusII|Waveform Editor), сохраним файл с именем fjnuxl.scf (File]Save As); определим входные и выходные линии для симуляции. Для этого от- кроем графический файл f_mux1.gdf 6File|Open), вызовем компиля- тор (Max+PlusII|Compiler) и установив опцию функциональной симу- ляции (Processing I Functional SNF Extractor) запустим процесс транс- ляции. Далее закроем файл f_mux1.gdf и вернемся т.о. в редактор временных диаграмм. Откроем список доступных в SNF-файле цепей (Node|Enter Node from SNF) и скопируем имена входов и выходов в список выбранных цепей. После ввода ОК в окне редактора будут видны входные линии х1, х2, хЗ, clc, w и выходная линия fo; определим время симуляции и интервал временной сетки. Время си- муляции целесообразно установить равным 320нс (File | End Time), а интервал сетки равным 10 нс (Options I Grid Size); определим значения входных векторов таким образом, чтобы времен- ные диаграммы соответствовали приведенным на рис. 5.11. Сохраним созданный файл (комбинация «горячих» клавиш Ctrl+S); вызовем симулятор (Max+PlusII|Simulator), укажем в качестве End Time: значение 320.0 пс и щелкнем по панели Start. После сообщения об отсутствии ошибок указав ОК вернемся в окно симулятора. Ре- зультаты симуляции записаны в файл f_m.ux1.scf и отображаются в окне редактора диаграмм (рис. 5.12). Рис. 5.11. Диаграммы входных сигналов для симуляции
ГЛАВА 5. ПРОЕКТИРОВАНИЕ ЦИФРОВЫХ УСТРОЙСТВ НА БИС ПРОГРАММИРУМОЙ ЛОГИКИ 245 Проверьте, что значения функции f соответствуют таблице истинно- сти. Закройте окно редактора диаграмм. 5.5. Проект АЛУ RISC-микроконтроллера Степень интеграции современных ПЛИС и уровень развития систем проектирования типа MAX+plusll позволяют рассматривать программи- руемую логику как альтернативу специализированным и заказным микро- схемам. Кроме того, с помощью ПЛИС можно реализовать прототип циф- рового устройства или процессора с заданными характеристиками. Далее, через описание на одном из языков HDL (Hardware Description Language) проект может быть перенесен и реализован в виде специализированной БИС. В этом параграфе будет продемонстрирована возможность реализации на ПЛИС EPF8282ALC84 арифметико-логического устройства (АЛУ) RISC-микроконтроллеров типа PIC16 фирмы MicroChip. Кроме реализа- ции фрагмента АЛУ, проект включает интерфейс ввода данных с пере- ключателя макета и вывода на устройства отображения. Это позволяет провести тестирование разработанного устройства. RISC-микроконтроллеры представляют собой современное поколение микропроцессорных средств. Они характеризуются следующими особенно- стями архитектуры: • код программы и данные выбираются из разных матриц памяти - так называемая гарвардская архитектура. При этом размер слова памяти программ и данных может отличаться. В рассматриваемых микрокон- троллерах PIC16 слово команды 14-разрядное, а слово данных 8- разрядное;
246 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ • набор команд сокращен, он обеспечивает только простые арифметиче- ские операции и минимальный набор условных переходов. Слово ко- манды имеет фиксированную длину, поэтому все команды выбираются за один машинный цикл; • память программ внутренняя, это ускоряет выборку команд; • команды слабо кодированы, имеют отдельные поля операций, адреса- ции и данных. Это исключает дешифрацию и ускоряет выполнение ко- манд. Благодаря таким особенностям все команды, за исключением команд управления, выполняются за один машинный цикл. Структура устройства, которое мы будем проектировать, имеет вид, приведенный на рис. 5.13. Рис. 5.13. Структура устройства на основе регистрового АЛУ Устройство, кроме комбинационной схемы 8-разрядного АЛУ, содер- жит регистр команд, рабочий регистр W, регистр флагов STATUS. АЛУ в соответствии с кодом команды выполняет операции целочисленного сло- жения и вычитания, сдвиги вправо и влево, логические операции. В двух- операндных командах один из операндов берется из рабочего регистра W, а другой извлекается из регистрового файла или является частью кода ко- манды (константа). В однооперандных командах операнд берется из реги- стрового файла или рабочего регистра. Результатом АЛУ-операции является новое содержимое рабочего реги- стра W и регистра флагов STATUS. Регистр STATUS включает следую- щие флаги:
ГЛАВА 5. ПРОЕКТИРОВАНИЕ ЦИФРОВЫХ УСТРОЙСТВ НА БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ 247 Бит регистра STATUS Флаг Признак флага STATUS.0 С (Сапу) Перенос из старшего разряда STATUS. 1 DC (Digit Carry) Перенос из младшей тетрады STATUS.2 Z (Zero) Признак нулевого результата При реализации устройства будем рассматривать подмножество ко- манд микроконтроллеров PIC16, которое содержит арифметические ко- манды над литералом и содержимым рабочего регистра. Результат заносится в рабочий регистр, признаки результата заносятся в регистр флагов. Код операции содержится в команде в поле OPCODE, литерал находится в команде в поле k (literal). Длина слова команды большинства микроконтроллеров PIC16 равна 14 битам. Формат команд рассматриваемого подмножества следующий: 13 8 7 0 OPCODE k (literal) У рассматриваемого подмножества команд старшие 2 бита содержат код 11, поэтому мы их учитывать не будем. Следующие 4 бита (И..8) со- держат уникальный код операции, младшие 8 бит содержат значение ли- терала (константы). Таблица реализуемых устройством команд Мнемоника Описание Биты <11. -8> Изменяют- ся флаги ADDLW Сложение константы и содержимого регистра W 111х C,DC,Z ANDLW Логическое И (AND) значения константы и содержимого регистра W 1001 Z IORLW Логическое ИЛИ (OR) значения константы и содержимого регистра W 1000 Z MOVLW Пересылка константы в регистр W ООхх SUBLW Вычитание содержимого регистра W из значения константы 110х C,DC,Z XORLW Исключающее ИЛИ (XOR) значения константы и содержимого регистра W 1010 z "х” означает безразличное значение бита. Addlw Синтаксис: [метка] addlw к Операнды: Действие: Признаки: 0<к<255 (W)+k-»(W) C.DC.Z Кодирование: | 11 | 111х | кккк | кккк | Описание: содержимое регистра W добавляется к 8-битному литералу 'к', результат помещается в W.
248 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Слов: 1 Циклов: 1 Пример: addlw 15h Перед выполнением W= 10h После выполнения W=25h Andlw Синтаксис: [метка] andlw к Операнды: 0 < к < 255 Действие: (W) AND к -» (W) Признаки: Z ___________________________________________ Кодирование: | 11 | 1001 | кккк | кккк ] Описание: логическое И содержимого регистра W и 8-битного литерала 'к', результат помещается в W. Слов: 1 Циклов: Пример: 1 andlw 5Fh Перед выполнением W = 0A3h После выполнения W= 03h Iorlw Синтаксис: [метка] iorlw к Операнды: 0 < к < 255 Действие: (W) OR к -» (W) Признаки: Z ______________________________________________ Кодирование: | 11 | 1000 | кккк | кккк | Описание: логическое ИЛИ содержимого регистра W и 8-битного литера- ла 'к'. Результат помещается в W. Слов: 1 Циклов: 1 Пример: iorlw 35h Перед выполнением W = 9Ah После выполнения W=0BFh Movlw Синтаксис: [метка] movlw к Операнды: Действие: Признаки: 0 < к < 255 k-»(W) Нет Кодирование: | 11 | ООхх | Кккк | кккк | Описание: 8-битный литерал 'к' загружается в W. Слов; 1 Циклов: Пример: 1 movlw 5Ah После выполнения W= 5Ah
ГЛАВА 5. ПРОЕКТИРОВАНИЕ ЦИФРОВЫХ УСТРОЙСТВ НА БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ 249 Sublw Синтаксис: [метка] sublw к Операнды: 0 < к < 255 Действие: к - (W) -> (W) Признаки: C,DC,Z ___________________________________ Кодирование: | 11 | 110х | Кккк | кккк | Описание: содержимое регистра W вычитается из 8-бйтного литерала 'к', результат помещается в W. Слов: 1 Циклов: 1 Пример 1: sublw 02h Перед выполнением W=01h С = ?? После выполнения W=01h С =1 ;результат положительный Z =0 Пример 2: Перед выполнением W=02h После выполнения W = 00h С =1 ;результат нулевой Z = 1 Пример 3: Перед выполнением W = 03h С = ?? После выполнения W = FFh С = 0 ,‘результат отрицательный Z =0 Xortw Синтаксис: [метка] xortw к Операнды: 0 < к < 255 Действие: (W) XOR к -> (W) Признаки: Z ________________________________________ Кодирование: | 11 | 1010 | кккк | кккк | Описание: логическое ИСКЛЮЧАЮЩЕЕ ИЛИ содержимого регистра W и 8-битного литерала *к'. Результат помещается в W. Слов: 1 Циклов: 1 Пример: xortw AFh Перед выполнением W=0B5h После выполнения W= 1Ah Распределение ресурсов макета. Описание платы, на которой будет проверяться работа проектируемого устройства, приведено в параграфе 5.7. Вначале распределим ресурсы платы для ввода данных, выполнения команд и индикации результатов. Предлагается код команды вводить с
250 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ 8-разрядного переключателя, а сигнал на выполнение команды - с Левой кнопки. Собственно АЛУ с регистрами W и STATUS, естественно, реали- зуется с помощью ПЛИС. Код из регистра W может быть отображен на двух семисегментных индикаторах, а значение флагов регистра STATUS - с помощью линейки светодиодов. Описание интерфейса устройства. Рассмотрим и опишем набор сиг- налов и портов проектируемого устройства на языке AHDL с учетом по- следующей реализации на нашей плате. Слово команды разобьем на две части - поле кода операции и поле константы (литерала): OPCODE[3..0], DATA[7..0J: INPUT; Входным также является сигнал от кнопки, по которому выполняется команда: CLK : INPUT; Выходными являются сигналы с регистра W на семисегментные инди- каторы (после дешифрации) и три бита флагов регистра STATUS: WMSBI3..0], WLSB[3..O] : OUTPUT; FLAGSI2..0] :OUTPUT; Декомпозиция. Устройство предлагается разрабатывать как иерархи- ческий проект, включающий текстовые файлы (модули) нижнего уровня. Перечень файлов и назначение модулей следующие: Имя файла Описание модуля alublock.tdf Фрагмент структуры PIC16 (исследуемое устройство), объединяющий дешифратор команд, АЛУ и регистры. copdecdr.tdf Дешифратор команд. alu.tdf Комбинационное арифметико-логическое устройство. LabS.tdf Интерфейс к LabKit-8000, отображающий порты исследуемого устройства на внешние ресурсы платы. decode7.tdf Дешифратор семисегментного дисплея. Взаимосвязи между модулями проекта легче проследить, имея перед глазами иерархическое представление их набора, как например на рис. 5.14. Модуль alu.tdf имеет следующий вид: SUBDESIGN ALU ( СОР[2..0] : INPUT; W[7..O] : INPUT; DATA[7..O] : INPUT; - описание входных Z.DC.C : INPUT; ZR.DCR.CR : OUTPUT; - и выходных сигналов RESULT[7..O]: OUTPUT; ) BEGIN
ГЛАВА 5. ПРОЕКТИРОВАНИЕ ЦИФРОВЫХ УСТРОЙСТВ НА БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ 251 case СОР[2..0] is - дешифратор кода операции when Н"0" =>(DCR,RESULT[3..0J) = (B’ O",W[3..O]) + <B"O",DATA[3..O]); - ADD ( CR,RESULT[7..4J) = (B"0",W[7..4]) + <B"0",DATA[7..4]) + (B'OOOO'.DCR); when H"1 ” => RESULT[7..O] = W[7..0j & DATA[7..O]; - AND when H"2" => RESULTI7..0] = W[7..O] # DATA[7..O]; - OR when H"3" => RESULT[7..O] = DATA[7..O]; - MOV when H"4" => RESULT[7..O] = W[7..O] - DATA[7..0j; -- SUB - здесь для единообразия оставлен порядок операндов (W - к) (DCR,RESULT[3..O]) = (BT,W[3..O]) - <B"O",DATA[3..O]); ( CR,RESULT[7..4J) = (B"1",W[7..4J) - (B"0",DATA[7..41) - (B”0000",!DCR); - исходный вариант (как в PIC16) ~(DCR,RESULT[3..O]) = (B"1",DATA[3..O]) - <B"O",W[3..O]); - -( CR,RESULT[7..4J) = (B"r,DATA[7..4J) • (B"0",W[7..4]J - (B"OOOO',!DCR); when H"5” => RESULT[7..O] = W[7..O] $ DATAI7..0]; -- XOR - при неправильном значении кода арифметической операции никаких действий не производится when others => RESULT[7..0j = W[7..O]; - NOP end case: if (RESULTf] = 0) then ZR = ВТ; else ZR = B"0"; end if; - формирование флага "нуля" END; Рис. 5.14. Иерархия программы, описывающей регистровое АЛУ и интерфейс
252 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ В секции SUBDESIGN описаны входные и выходные порты: кода операции, внутренних данных из регистра W, данных извне, входные зна- чения флагов, выходные значения флагов, байт результата. Собственно схема АЛУ является чисто комбинационной, как только появились данные на входах, через некоторое время задержки, на выходных линиях получа- ется код результата, стробирующего сигнала нет. В секции логики этого модуля посредством оператора CASE описаны варианты получения результата при выполнении каждой из команд. Ре- зультат операции АЛУ вычисляется с помощью арифметических и логиче- ских выражений. Из-за наличия флага полупереноса DC байт результата вычисляется в два приема обработкой тетрад операндов. Далее с помощью оператора IF устанавливаются выходные значения флагов. Далее рассмотрим файл copdecdr.tdf. Этот модуль формирует из че- тырех разрядов кода операции всего устройства три разряда кода опера- ции для модуля АЛУ. Его текст имеет следующий вид: SUBDESIGN COPDECDR ( OPCODE[3..0] СОР[2..0] : OUTPUT; ) : INPUT; BEGIN TABLE OPCODE[3..0] =x> COP[2..0]; B'T 11X" —> H"0”; - ADDLW B"1001" => Н"Г; - ANDLW B’T000" => H"2"; -• I0RLW B"00XX" —> H"3”; - MOVLW B"110X" => H"4"; - SUBLW B'TOIO" H"5"; -• XORLW ENDTABLE; END; Наконец, текст головного файла alublock.tdf имеет следующий вид: INCLUDE "COPDECDR.INC"; INCLUDE "ALU.INC"; SUBDESIGN ALUBLOCK ( OPCODE[3..0] zlnput; DATA[7..O] zlnput; CLK zlnput; wmsb[3..O] zoutput; WLSB[3..O] zoutput; FLAGS[2..O] zoutput; ) VARIABLE W[7..O] zDFF; STATUS[2..O] zDFF; DECODER zCOPDECDR; ARrTHUNIT :ALU;
ГЛАВА 5. ПРОЕКТИРОВАНИЕ ЦИФРОВЫХ УСТРОЙСТВ НА БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ 253 BEGIN DEFAULTS W[].d = 0; STATUS(].d = 0; END DEFAULTS; W[].clk = CLK; - фронт тактового сигнала W[].pm = VCC; W[].dm = VCC; - новые значения флагов фиксируются только при определенных инструкциях STATUS[2].clk = CLK&0PC0DEE3]; - Z STATUS[1 ..OJ.clk = CLK&OPCODE[2]; - DC,C STATUS[].pm =VCC; STATUS[].clm = VCC; DECODER.OPCODE[] = OPCODEf]; ARITHUNIT.COP[] = DECODER.COP[J; ARITHUNIT.W[J = W[]q; ARITHUNIT.DATAI1 = DATA!]; (ARn’HUNrr.Z.ARrTHUNrr.DC.ARITHUNrr.C) = STATUS[2..0].q; W[7..0].d = ARITHUNIT.RESULT[7..O]; STATUS[2..0].d = (ARITHUNrT.ZR,ARrTHUNrr.DCR,ARITHUNrT.CR); WMSB[3..O] = W[7..4].q; WLSB[3..O] = W[3..0].q; FLAGS[2..0J = STATUS[2..0J.q; END; Первые две строки представляют собой директивы, указывающие компилятору, что в текст головного модуля включается текст файлов copdecdr.tdf и alu.tdf. В секции SUBDESIGN описаны входные и выходные порты устройст- ва в соответствии с соглашениями предыдущего параграфа. В секции описания переменных регистры W и STATUS определены как наборы D-триггеров из библиотеки примитивов, защелкивающих но- вые значения по фронту тактового сигнала. Третья и четвертая строки секции описывают переменные DECODER и STATUS как устройства, описанные в присоединенных файлах. В секции логики (начинается с BEGIN) первые три строки определя- ют значения стробирующего сигнала, входов сброса и установки для триг- геров регистра W. Видно, что все разряды регистра управляются одинако- во. Следующие четыре строки определяют значения сигналов для тригге- ров регистра STATUS. Отдельные триггеры (флаги) стробируются по- разному. Анализ таблицы команд показывает, что флаг Z обновляется при OPCODE[3] = 1, а флаги С и DC при OPCODE[2] = 1. Стробирующим сигналом для триггеров регистра STATUS должна быть функция И сигна- лов CLC и соответствующих битов кода операции. Входы сброса и уста- новки всех триггеров регистра STATUS управляются одинаково.
254 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ В восьмой строке на вход модуля DECODER подается 4-разрядный код операции с входов устройства OPCODE! ]. Далее с выходов модуля DECODER преобразованный 3-разрядный код поступает на входы кода операции модуля АЛУ. В строках 10, 11 и 12 на соответствующие входы этого модуля подаются данные с регистра W, с входов данных устройства, с регистра STATUS. В следующих двух строках результат с выходов мо- дуля АЛУ заносится в регистр W, а флаги заносятся в регистр STATUS. В последних трех строках содержимое регистра W выводится в виде двух тетрад на выходы всего устройства, а содержимое регистра STATUS - на выходы FLAGS. Функциональное моделирование - симуляция. Для предварительной проверки устройства на функциональном уровне произведем симуляцию, задав в качестве тестовых векторов коды арифметических и логических команд из рассматриваемого подмножества. Результат выполнения срав- ним с описанием каждой из команд. Откроем головной файл проекта alublock.tdf и определим его имя в качестве имени текущего проекта (меню File|Project|Set Project То Current File). Откроем окно приложения Compiler (команда MAX+plusII|Compiler) и выберем в меню Processing пункт Functional SNF Extractor, установим опцию компилятора Total Recompile. Выполним трансляцию проекта. Откроем редактор WaveForm Editor и создадим входные векторы. Для этого выберем пункт меню Node|Enter Nodes from SNF и в диалоговом окне выберем из списка входов и выходов следующие группы линий: ОР- CODE[3..0], DATA[7..O], WMSB[3..O], WLSB[3..O] и CLK. Выберем ин- тервал моделирования и шаг тактовой сетки в соответствии с количеством команд, которые будут проверяться. В соответствии с этим зададим пара- метр End Time (меню File) и Grid Size (меню Options). После этого зада- дим различные комбинации кодов операции и данных (содержимое рабо- чего регистра W на начало моделирования не определено, поэтому разум- но первой командой загрузить в него начальное значение). На каждую операцию необходимо установить фронт тактового сигнала CLK. Откроем приложение Simulator и запустим процесс на выполнение. Выполнив си- муляцию, сравним полученные значения с предполагаемыми. В случае, если значения не совпадают, необходимо исправить текст программы и повторить процедуру сначала. Реализация устройства на плате лабораторного макета. Для реали- зации и тестирования разработанного АЛУ используем плату LabKit-8000. Для этого нужен файл lab5.tdf, осуществляющий интерфейс исследуемого устройства с аппаратными ресурсами платы: TITLE "LabKlt 8000. PIC16 ALU."; INCLUDE "ALUBLOCK.INC"; INCLUDE "DECODE7.INC";
ГЛАВА 5. ПРОЕКТИРОВАНИЕ ЦИФРОВЫХ УСТРОЙСТВ НА БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ 255 SUBDESIGN LabS ( Osc Input; - вход тактовой часоты Кеу[3..1] rinput; Sw[8..1] rinput: Led[8..1] routput; Beep :output; a[3..1] routput; b[3..1] routput; c[3..1] routput; d[3..1] routput; e[3..1] routput; f[3..1] routput; g[3..1] routput; h[3..1] routput; VARIABLE ARITHUNIT rALUBLOCK; Dlgit[3..1] :DECODE7; BEGIN ARfTHUNfT.OPCODEl] = !Sw[1..4]; ARITHUNIT.DATA[] = (B"0000",!Sw[5..8J); ARrTHUNlT.CLK = !Key[ 1 ]; - нарастающий фронт Digitfl ].DI[] = ARITHUNrr.WMSBH; Dlgit[2].DI[] = ARITHUNlT.WLSBf]; if (Key[2]=B"1") then - data (literal) Dlgit[3].DI[3..O] = !Sw[5..B]; else Dlgit[3].DI[3..O] = !Sw[1..4]; end if; (a[3..1 ],b[3..1],c[3.. 1],d[3..1],e[3..1],f[3..1],g[3..1 ],h[3..1]) = (Dlgit[3.. 1].a,Dlgit[3..1].b,Dlgit[3..1].c,DI glt[3.. 1 ].d,Dlgit[3.. 1 ].e,Dlgit[3..1 ].f,Dlgit[3.. 1 ].g,Dlglt[3..1 J.h); Led[1..] = (B"11111",!ARITHUNIT.FLAGSI]); Beep = IKeyl; END; После заголовка следуют директивы INCLUDE, присоединяющие к данному тексту файлы ALUBLOCK и DECODE7, из которых первый уже рассмотрен в данной работе, а второй реализует дешифратор двоичного кода в коды управления 7-сегментного индикатора и имеет следующий вид: TITLE "LabKit 8000. Decoder?"; SUBDESIGN decode? ( DI[3..O] : INPUT; a,b,c,d,e,f,g : OUTPUT; BEGIN
256 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ TABLE Dl[] => (а, Ь, с, d, е, 1, д); В-0000" => ; В-1111110"; - Н"0" В"0001” => ; В"0110000”; - Н"1" В-0010" => В"1101101"; - Н"2" В-001 г => В"1111001"; - Н"3" В-0100" => В"0110011"; - Н"4" В-0101" => В"1011011"; - Н"5” В-0110" => В"1011111”; - Н”6” В"0111” => В”1110000”; -НТ' В"1000" —> В"1111111" - Н"8" В-1001" => В"1111011"; - Н"9" В-1010" => В"Н10111"; - Н"А" В'ТОИ" —> В-0011111"; - Н"В" В-1100" z=> В"1001110"; - Н"С" В-1101" => В"0111101"; - H"D” В"1 ИО- => В-1001111"; — Н"Е" В-1111" => В-1000111"; - Н"Г END TABLE; END; В секции SUBDESIGN файла lab5.tdf в качестве входных описаны порты устройства, присоединенные в кнопкам и переключателям, а также вход синхронизации. В качестве выходных описаны порты, присоединен- ные к светодиодам, пьезодинамику и семисегментным индикаторам. В секции описания переменных имя ARITHUNIT присвоено устройст- ву типа ALUBLOCK, а имя DIGIT - группе устройств типа DECODE7. В секции логики на входы кода операции разработанного устройства подключаются линии с портов переключателей 1..4. На входах данных в старшей тетраде фиксируются нули, а на младшую подключаются линии с портов переключателей 5..8. На стробирующий вход подключается линия с порта клавиши 1. Далее текущее содержимое рабочего регистра W пода- ется на входы дешифраторов семисегментных индикаторов 1 и 2. На де- шифратор индикатора 3 подается младшая тетрада константы или код операции, в зависимости от того, нажата кнопка 2 или нет. В завершение на выходные порты интерфейсного модуля подключаются выходные линии дешифраторов, на порты светодиодов - линии с регистра флагов устрой- ства, на порт управления звуковым сигналом - линия с порта кнопки 1. Следует обратить внимание на то, что некоторые входные и выходные сигналы предварительно инвертируются и задаются в обратном порядке, что связано со значениями активных уровней сигналов кнопок, переклю- чателей и индикаторов на плате, а также их расположением (Приложение 3). Видно, что тактовый сигнал выводится на кнопку Keyl, код команды задается переключателями Sw, причем порядок следования битов обрат- ный, что соответствует общепринятому положению младшего бита справа. Код операции задается старшей тетрадой, а литерал младшей (что соответ- ствует младшим четырем битам литерала, старшие всегда устанавливаются в «О»), Флаги регистра STATUS отображаются на крайних правых свето-
257 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ диодах линейки (Z,DC,C соответственно, что соответствует битам STATUS[2..O]). Для выполнение работы необходимо установить в качестве имени про- екта 1аЬ5. Для этого выберем в меню File|Progect|Name и в диалоговом ок- не выберем имя 1аЬ5. Осуществим трансляцию проекта с помощью прило- жения Compiler, предварительно установив опцию Total Recompile в меню Processing. Подключим питание к плате макета, откроем приложение Programmer и загрузим код конфигурации в ПЛИС. Тестирование устройства. Проверка функционирования устройства осуществляется следующим образом: 1. с помощью тумблеров необходимо задать входное слово команды в соответствии с таблицей; 2. индикаторы 1 и 2 отображают текущее содержимое рабочего регистра, а младшие три бита регистра STATUS отображаются на линейке свето- диодов; 3- нажатие кнопки 1 инициирует выполнение команды; 4. индикаторы отображают новое содержимое рабочего регистра W - ре- зультат выполнения арифметической операции, линейка светодиодов отображает новые значения флагов операции. 5.6. Язык AlteraHDL После первоначального знакомства с процессом создания и обработки проекта в системе MAX+plusII рассмотрим более подробно конструкции языка AHDL. Формальное описание языка с использованием форм Бэку- са-Наура приведено в фирменной документации и доступно при помощи команды Help системы MAX+plusII. 5.6.1. Структура программы на языке AHDL Программа на языке AHDL имеет определенную структуру. Разделы программы должны следовать в следующем порядке: Title Statement Include Statement Constant Statement Define Statement Parameters Statement Function Prototype Statement Options Statement Assert Statement
258 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Subdesigh Section Variable Section - Instance Declaration - Node Declaration - Register Declaration - State Machine Declaration - Machine Alias Declaration - If Generate Statement Logic Section - Defaults Statement - Assert Statement - Boolean Equations - Boolean Control Equations - Case Statement - For Generata Statement - If Then Statement - If Generata Statement - In-Line Logic Function Reference - Truth Table Statement Из всех перечисленных разделов являются обязательными только Subdesign Section и Logic Section. Title Statement. Раздел заголовка позволяет дать название модулю. С этим именем будет сформирован файла отчета (Report File). В файле этот раздел может присутствовать только один раз. Правила синтаксиса: • Раздел начинается с ключевого слова TITLE, за которым следует тек- стовая строка, заключенная в двойные кавычки (“). В конце заголовка ставится символ (;). • Текстовая строка может содержать до 255 символов включительно. Она не должна содержать символов конца строки или конца страницы. • Для включения в текстовую строку двойных кавычек следует исполь- зовать дополнительную пару двойных кавычек: “ “ “ FLEX 8000 “ Programmable Timer”. Include Statement. Этот оператор позволяет включить содержимое указанного файла в текст данной программы. В файле этот оператор мо- жет использоваться неограниченное число раз. Правила синтаксиса: • Оператор начинается с ключевого слова INCLUDE, за которым в двойных кавычках (“) указывается имя файла включения (Include file). Далее ставится символ (;).
ГЛАВА 5. ПРОЕКТИРОВАНИЕ ЦИФРОВЫХ УСТРОЙСТВ НА БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ 259 • Если явно не задано расширение файла включения, то компилятор ищет файл, имеющий заданное имя и расширение .INC. • Имя файла, указанное в операторе включения, не должно содержать пути к файлу. Constant Statement. Оператор определения константы позволяет при- своить имени константы значение числа, либо результата вычисления арифметического выражения. В файле этот оператор может использовать- ся неограниченное число раз. Правила синтаксиса: • Оператор начинается с ключевого слова CONSTANT, за которым сле- дует символическое имя, символ (=), число или арифметическое вы- ражение. Далее ставится точка с запятой (;). • Имя константы должно быть уникальным и не должно содержать пробелов. • Ссылка на константу допускается только после ее определения. • При определении константы могут использоваться заданные ранее константы. • Циклическое определение констант недопустимо. Арифметическое выражение, определяющее константу, вычисляется компилятором и заменяется числом на этапе анализа синтаксиса. Приме- нение арифметических выражений при определении констант не приводит к использованию логических ресурсов PLD. Define Statement. Оператор обозначения позволяет присвоить арифметическим выражениям символические имена. В файле этот опера- тор может использоваться неограниченное число раз. Правила синтаксиса: • Оператор начинается с ключевого слова DEFINE, за которым следует символическое имя арифметического выражения со списком аргумен- тов, заключенным в скобки. За списком аргументов ставится знак (-), далее следует арифметическое выражение и символ (;). • Список аргументов может содержать один или более аргументов. Ар- гументы в списке отделяются друг от друга запятой. • Символическое имя должно быть уникальным и не должно содержать пробелов. • Ссылка на символическое имя арифметического выражения допустима только после его описания в разделе DEFINE. • Обозначаемое арифметическое выражение может содержать символи- ческое имя обозначенного ранее арифметического выражения.
260 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Parameters Statement. Оператор объявления параметров позволяет объявить параметры, управляющие реализацией параметризированных модулей. В файле этот оператор может использоваться неограниченное число раз. Примеры: 1. PARAMETERS (FILENAME="myfile.miF, WIDTH, AD WIDTH, NUMWORDS=2*AD_WIDTH); 2. PARAMETERS (DEVICE_FAMILY); DEVICE_FAMILY предопределенный параметр языка AHDL. Его значение может быть задано в окне Device (меню Assign). Правила синтаксиса: • Оператор начинается с ключевого слова PARAMETERS, за которым следует заключенный в скобки список параметров. После закрываю- щей скобки ставится символ (;). • Список параметров может содержать один или несколько параметров. • Параметры в списке отделяются друг от друга запятой (,). • Значение параметра по умолчанию (defaults) указывается после сим- вола (=). Задание этого значения необязательно. • Параметр может задаваться через другой параметр. • Циклическое задание параметров недопустимо. • Заданное пользователем имя параметра должно быть уникальным и не содержать пробелов. • Областью действия параметра является текст, в котором он был объ- явлен. Function Prototype Statement. Оператор описания прототипа позво- ляет описать параметры модулей (примитивов), которые будут использо- ваны в тексте. В файле этот оператор может использоваться неограничен- ное число раз. Примеры: 1. FUNCTION Ipmjaddsub (Cin, dataa[LPM_WIDTH-1 . . 0], datab[LPM_WIDTH-1 . . 0], add sub) -входы модуля WITH (LPM_WIDTH, LPM_REPRESENTATION, LPM_DIRECTION, ADDERTYPE, ONEJNPUT_IS_CONSTANT) - передаваемые параметры RETURNS (result[LPM_WIDTH-1 . . 0], Cout, overflow); - выходы модуля 2. FUNCTION compare (a[3..O], b[3..O]) RETURNS (less, equal, greater);
ГЛАВА 5. ПРОЕКТИРОВАНИЕ ЦИФРОВЫХ УСТРОЙСТВ НА БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ 261 Правила синтаксиса: • Оператор начинается с ключевого слова FUNCTION, за которым сле- дует имя модуля, далее заключенный в скобки список входов модуля. При описании прототипа параметризированного модуля далее следует ключевое слово WITH и заключенный в скобки список передаваемых в модуль параметров. Затем указывается ключевое слово RETURNS, далее заключенный в скобки список выходов модуля. Оператор окан- чивается символом (;). • Элементы списков отделяются друг от друга запятыми. Options Statement. Этот оператор позволяет определить в группе элемент с меньшим индексом (BITO) как: • LSB - младший разряд. При этом индексы в группах должны указы- ваться в убывающей слева направо последовательности. • MSB - старший разряд. При этом индексы в группах должны указы- ваться в возрастающей слева направо последовательности. • ANY. При этом порядок перечисления индексов в группе произволь- ный. При нарушении порядка перечисления индексов в группах появляется предупреждение компилятора. Пример: OPTIONS BITO = MSB; Правила синтаксиса: • Оператор задания опции начинается с ключевого слова OPTIONS, за которым следует ключевое слово BITO, символ «равное (=) и одно из ключевых слов LSB, MSB, ANY. Далее ставится точка с запятой (;). • Если опция не задана, то по умолчанию предполагается, что ВГГО = LSB. • Значение опции, заданное в файле верхнего уровня иерархии описа- ний проекта, распространяется и на файлы с описанием модулей ниж- них уровней иерархии, если в них явно не задано другое значение оп- ции. • В файле этот оператор может использоваться только один раз. Assert Statement. Оператор контроля позволяет проверить истинность арифметического выражения, а для случая, когда оно ложно, указать текст сообщения и определить реакцию компилятора. В файле этот опера- тор может использоваться неограниченное число раз. Пример: ASSERT (WIDTH>0) REPORT “Width (%) must be apositive integer” WIDTH SEVERITY ERROR;
СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ 262 Правила синтаксиса: • Оператор начинается с ключевого слова ASSERT, за которым следует арифметическое выражение. Если значение выражения False, то кон- тролируемое условие считается невыполненным, и приложение Mes- sage Processor отображает заключенное в двойные кавычки сообщение, следующее за ключевым словом REPORT. • Сообщение может содержать символ процент (%), который заменяется значением переменной, указываемой после закрывающих двойных ка- вычек. Если используется несколько символов процента (%), то пере- менные перечисляются через запятую в том порядке, в котором долж- ны подставляться их значения. • Необязательное ключевое слово SEVERITY позволяет задать реакцию компилятора: ERROR - ошибка, WARNING - предупреждение, INFO - информация. При отсутствии ключевого слова SEVERITY сообще- ние, по умолчанию, имеет значение ERROR. • Если ключевое слово REPORT и соответствующее сообщение не были указаны в операторе, то при невыполненных условиях контроля про- цессор сообщений отображает следующую строчку: <ERROR, WARNING, INFO> : Line Сномер строки>, File <имя файла> Assertion failed • Оператор контроля оканчивается символом (;). • Допустимо применение оператора в разделе описания логики (Logic Section). Subdesign Section. Раздел описания модуля позволяет задать имя мо- дуля и перечислить его выводы. Имя модуля должно совпадать с именем его текстового файла. Если модуль является модулем верхнего уровня ие- рархии, то его имя является одновременно и именем проекта, поэтому это имя будут иметь все вспомогательные файлы. В файле этот раздел может присутствовать только один раз. Правила синтаксиса: • Раздел начинается с ключевого слова SUBDESIGN, за которым следу- ет имя модуля. Максимальная длина имени 32 символа. • После имени модуля следует заключенный в круглые скобки список его выводов. • Типы выводов: INPUT - вход, OUTPUT - выход, BIDIR - двуна- правленный вывод, MACHINE INPUT - вход импортируемых состоя- ний автомата, MACHINE OUTPUT - выход экспортируемых состоя- ний автомата. Выводы MACHINE INPUT и MACHINE OUTPUT не могут быть использованы в описании модуля верхнего уровня проекта, т.е. модуля, выводы которого являются выводами микросхемы.
ГЛАВА 5. ПРОЕКТИРОВАНИЕ ЦИФРОВЫХ УСТРОЙСТВ НА БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ 263 • Выводы перечисляются через запятую в одну или несколько строчек. В конце перечня однотипных выводов символ (:), затем ключевое слово, указывающее тип выводов, и далее символ (;). • После ключевого слова INPUT может быть указано значение по умолчанию (GND, VCC) входного сигнала. Это значение подается на вход в случае, если он окажется неподключенным при использовании данного модуля в иерархическом проекте. Variable Section. Раздел переменных позволяет задать внутренние переменные модуля, используемые в разделе описания логики (Logic Section). В файле этот раздел может присутствовать только один раз. Переменные в языке AHDL представляют собой имена цепей; цепей с тремя состояниями; модулей, используемых в описании. Правила синтаксиса: • Раздел начинается с ключевого слова VARIABLE. Далее следуют: символическое имя переменной, символ (:), тип переменной, символ (;). Имена однотипных переменных могут быть перечислены через запятую. • Допустимые типы переменных: NODE - цепь; TRI_STATE_NODE - цепь с тремя состояниями; модуль более низкого уровня иерархии; примитив; конечный автомат; псевдоним конечного автомата. • Раздел переменных может содержать оператор IF GENERATE, позволяющий, в зависимости от значения оцениваемого в операторе арифметического выражения, управлять заданием переменных. Logic Section. Раздел описания логики позволяет дать функциональное описание проектируемого модуля. В файле этот раздел должен быть единственным. Правила синтаксиса: • Раздел начинается с ключевого слова BEGIN и заканчивается ключевым словом END, за которым следует точка с запятой (;). • В разделе могут быть использованы: Defaults Statement (Оператор задания исходных значений); Boolean Equations (булевы уравнения); Boolean Control Equations (булевы уравнения для описания функционирования); Case Statement (Оператор CASE); If Then Statement (Оператор If Then); If Generate Statement (Оператор IF Generate); In-line Logic Function reference (непосредственное обращение к функциям); For Generate Statement (Оператор For Generate); Truth Table Statement (Таблица истинности); Assert Statement (Оператор контроля).
264 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Если в разделе логики используется оператор задания значений по умолчанию (Defaults Statement), то он должен находиться сразу после ключевого слова BEGIN. Другие операторы могут следовать в произвольном порядке. 5.6.2. Числа Язык AHDL поддерживает все комбинации десятичных, двоичных, восьмеричных и шестнадцатеричных чисел. Основание Формат Десятичное последовательность цифр 0 .. 9> Двоичное В<последовательность цифр 0,1 ,Х> Восьмеричное Оспоследовательность цифр 0 .. 7> или Оспоследовательность цифр 0 .. 7> Шестнадцатеричное Хспоследовательность цифр 0 .. 9, А .. F> или Непоследовательность цифр 0 .. 9, А .. F> Пример: SUBDESIGN decode 1 ( address[15..O]: INPUT; chip_enable: OUTPUT; ) BEGIN chipenable = (address[15..O] == H»0370») END; Это дешифратор адреса, формирующий высокий активный уровень сигнала разрешения доступа к магистрали, если адрес на входе равен шестнадцатеричному числу 370h. В этом примере десятичные числа использованы для указания размерности массива разрядов шины адреса. Шестнадцатеричное число Н«0370» - это значение адреса, при котором формируется активный разрешающий сигнал. 5.6.3. Имена Имена могут присваиваться следующим элементам: • портам, цепям и шинам; • константам; • переменным конечных автоматов, битам состояний и именам состояний; • экземплярам; • параметрам; • оценочным функциям;
ГЛАВА 5. ПРОЕКТИРОВАНИЕ ЦИФРОВЫХ УСТРОЙСТВ НА БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ 265 • именованным операторам; • сегментам памяти; • подпроектам. Синтаксис имен в языке AHDL подчиняется общепринятым правилам многих других языков: • Имя может содержать буквы, цифры и символ (_). Прописные и строчные буквы не различаются. Имя не должно быть зарезервирован- ным словом. • Имя должно начинаться с буквы и не должно заканчиваться символом (_>- • Строковые имена заключаются в одиночные кавычки О- Имена цепей могут содержать до 32 символов. Если имя цепи не при- своено, она получает имя по умолчанию. В следующих таблицах приведены зарезервированные слова (ключе- вые слова и служебные имена), а также символы языка AHDL. Ключевые слова AND FUNCTION OUTPUT ASSERT GENERATE PARAMETERS BEGIN GND REPORT BIDIR HELPJD RETURNS BITS IF SEGMENTS BURIED INCLUDE SEVERITY CASE INPUT STATES CLIQUE IS SUBDESIGN CONNECTED_PINS LOG2 TABLE CONSTANT MACHINE THEN DEFAULTS MOD TITLE DEFINE NAND TO DESIGN NODE TRI_STATE_NODE DEVICE NOR VARIABLE DIV NOT VCC ELSE OF WHEN ELSIF OPTIONS WITH END OR XNOR FOR OTHERS XOR Служебные имена CARRY JKFFE SRFFE CASCADE JKFF SRFF CEIL LATCH TFFE DFFE LCELL TFF DFF MCELL TRI EXP MEMORY USED FLOOR OPENDRN WIRE GLOBAL SOFT X
266 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Символы языка AHDL Символ Описание — Подчеркивание (Underscore) Тире (Dash) / % о [] С 1 Косая черта (Slash) Двойное тире Процент (Percent) Открывающая и закрывающая скобки (Left and Right Parentheses) Открывающая и закрывающая прямоугольные скобки (Left and Right Brackets) Открывающая и закрывающая кавычки (Quotation marks) м и 1 > Двойные кавычки (Double Quotation) Точка (Period) Двойная точка Точка с запятой (Semicolon) Запятая (Comma) Двоеточие (Colon) => Равенство (Equals) Стрелка (Arrow) Плюс (Plus) 1 Минус (Minus) Двойное равенство Восклицательный знак (Exclamation point) != Восклицательный знак и равенство Больше (Greater than) < Больше или равно Меньше (Less than) & !& $ !$ # !# ? Меньше или равно Амперсанд (Ampersand) Восклицательный знак и амперсанд Доллар (Dollar sign) Восклицательный знак и доллар Фунт (Pound sign) Восклицательный знак и фунт Вопросительный знак (Question mark) 5.6.4. Константы Константы в AHDL можно использовать, давая имя числу или тексто- вой строке. Константы определяются с помощью оператора Constant. В нем константу можно определить с помощью арифметического выражения. Оператора Constant имеет следующие правила синтаксиса и семантики: • Оператор начинается с ключевого слова CONSTANT, за которым сле- дует символическое имя константы, затем символ '=’, затем число или арифметическое выражение. Оператор завершается символом • В арифметическое выражение оператора Constant могут входить име- на констант, определенных ранее. • Компилятор из выражения оператора Constant формирует число, ло- гика для этого выражения не создается. • Использование циклических ссылок на другие имена констант недо- пустимы.
ГЛАВА 5. ПРОЕКТИРОВАНИЕ ЦИФРОВЫХ УСТРОЙСТВ НА БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ 267 • Использовать имя константы можно только после ее определения. Примеры CONSTANT UPPER-LIMIT = 130; CONSTANT FOO = 1; CONSTANT FOO_PLUS_ONE = FOO + 1; 5.6.5. Переменные Переменные описываются в необязательном разделе Variable . • Раздел начинается с ключевого слова VARIABLE , за которым следу- ют символические имена, разделенные запятыми, далее символ двоето- чия и тип переменной. • Допустимыми типами переменных являются NODE, TRI_STATE_NODE, имена примитивов, мегафункций, макрофункций, машины состояний. • Раздел завершается символом Объявление переменной типа NODE удобно для хранения значений промежуточных выражений, ей можно присвоить значение по умолчанию. 5.6.6. Порты Порт - это вход или выход логической функции. Порты могут нахо- диться в двух местах: • Порт, являющийся входом или выходом текущего файла, объявляется в разделе Subdesign. Формат объявления следующий: <имя порта>:<тип порта> [ = оначение по умолчанию?] Имеются следующие типы портов: INPUT MACHINE INPUT OUTPUT MACHINE OUTPUT BIDIR • Порт, являющийся входом или выходом файла более низкого уровня или примитива, используется в разделе Logic. 5.6.7. Цепи Цепь, объявленная с помощью слова Node в разделе Variable, может использоваться для хранения значения промежуточного выражения. Такие объявления полезны при повторном использовании этого выражения. При этом выражение можно заменить именем цепи, которое легче читается.
268 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Цепи бывают типа Node и TriStateNode. Эти типы отличаются тем, что Node связывают сигналы функцией Проводное-И (значения по умол- чанию в операторах Defaults равно VCC) или Проводное-ИЛИ (значения по умолчанию в операторах Defaults равно GND), a Tri State Node при- вязывают сигналы к одной и той же цепи. 5.6.8. Группы, шины (группы цепей) Такие однотипные элементы, как символические имена, порты, цепи можно объединять в группы. Имя группы можно определить именем с од- ним диапазоном, двумя диапазонами или именем в последовательном фор- мате. а[1..5] d[1..3][1..6] (f. д. и) Шина (группа цепей) может иметь до 256 бит, трактуется как коллек- ция цепей и работает как одно целое. В булевых уравнения шина может приравниваться булеву выражению, другой шине, одной цепи, VCC, GND, 1, 0. Оператор Option можно ис- пользовать для указания, будет ли младший бит наиболее значимым (MSB), наименее значимым (LSB) или каким-либо другим. После определения шины скобки [] являются коротким определением всего диапазона. Равносильны а[4..1] и а[], Ь[5..4][3..2] равносильно Ь[][]. Выполняются следующие правила приравнивания: • При приравнивании шин одинакового размера приравниваются соот- ветствующие биты. • Если шина приравнивается цепи, VCC или GND, все ее биты получа- ют эти значения. • Если шина приравнивается к 1, только наименее значимый бит полу- чает значение 1, остальные соединяются с GND. Если приравниваются шины не одинакового размера, левая шина должна быть кратна по размеру правой. Значение правой шины мультип- лицируется на левую, они выравниваются по правому биту. 5.6.9. Примитивы Примитивы — это библиотечные функциональные блоки, применяю- щиеся в системе Max+PlusII для описания ресурсов ПЛИС. Примитивы используются в графических (.gdf), текстовых (.tdf) и VHDL файлах (.vhd). Символы примитивов для графического редактора доступны в со- ставе библиотеки \maxplus\max21ib\prim.
ГЛАВА 5. ПРОЕКТИРОВАНИЕ ЦИФРОВЫХ УСТРОЙСТВ НА БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ 268 Примитивы триггеров и защелок: DFF DFFE SRFF TFF JKFF SRFFE TFFE JKFFE LATCH 5.6.10. Арифметические и логические выражения В языке AHDL определены два типа выражений - арифметические и логические. Арифметические выражения - это средство формирования конструкций языка AHDL, эти выражения вычисляются компилятором на этапе синтаксического анализа, для их реализации ресурсы PLD не ис- пользуются. Логические выражения определяют собственно функционирование проектируемого устройства, правила их формирования и интерпретации связаны с особенностями элементов цифровых устройств. Арифметические выражения используются для указания: • выражений в разделе Define Statement; • значений констант в разделе Constante Statement; • границ диапазонов изменения индексов групп; • границ диапазона переменной в операторе FOR GENERATE; • выражения в операторах IF GENERATE и ASSERT. Результат арифметического выражения должен быть целым положи- тельным числом, если это не так, то он округляется до большего целого. Существуют две функции для явного задания правил округления: CETL - округление до большего целого; FLOOR - округление до меньшего целого. Арифметические и логические операции, операции сравнения (компарато- ры) имеют следующие приоритеты при вычислении арифметических вы- ражений: Операция/ Компаратор Пример Описание Приоритет + (унарный) +1 ПЛЮС 1 - (унарный) -1 минус 1 I NOT la отрицание 1 аА2 степень 1 MOD 4 MOD 2 модуль 2 DIV 4 DIV 2 деление 2 * a*2 умножение 2 LOG2 LOG2(4-3) логарифм по основанию 2 2 + 1+1 сложение 3 - 1-1 вычитание 3 ==(numeric) 5 == 5 равенство чисел 4
270 системы НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ логики Операция/ Компаратор Пример Описание Приоритет == (string) "a" == "b" равенство строк 4 1= 5!=4 не равно 4 > 5>4 больше 4 >= 5 >= 5 больше или равно 4 < a< b+2 меньше 4 <= a<= b+2 меньше или равно 4 & a&b AND 5 AND aANDb !& 1 !&0 NAND 5 NAND 1 NANDO $ 1 $ 1 XOR 6 XOR 1 XOR 1 !$ 1 !$ 1 XNOR 6 XNOR 1 XNOR 1 # a#b OR 7 OR aORb !# a !# b NOR 7 NOR a NOR b ? (5<4) ? 3:4 Условная операция 8 Приоритеты операций могут изменяться при помощи скобок. Булевы выражения и уравнения. Булевы выражения - это операнды (числа, цепи, группы), разделенные знаками арифметических и логиче- ских операций, компараторами (операторами сравнения), сгруппирован- ные с помощью скобок. Эти выражения используются в булевых уравне- ниях и операторах CASE и IF_THEN. Булево выражение может иметь один из следующих видов: • операнд Пример: а, Ь[5..1 ], 7, VCC • ссылка на логическую функцию Пример: out[15..0] = 16dffiux(q[3..O1); • Префиксный унарный оператор (! или - ), примененный к булеву вы- ражению Пример: !с • Два булевых выражения, разделенных бинарным оператором Пример: d1 $ d3 • Булево выражение, заключенное в скобки Пример: (!foo & bar) Результат булева выражения имеет ту же ширину, что и операнды. Булево уравнение устанавливает цепь, шину, порт и т.п. в состояние, определяемое булевым выражением. Символ ( = ) в булевом уравнении указывает, что результат булева выражения справа является источником для цепи или шины слева. В булевом уравнении слева может находиться
ГЛАВА 5. ПРОЕКТИРОВАНИЕ ЦИФРОВЫХ УСТРОЙСТВ НА БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ 271 идентификатор, имя порта или группы. Перед ним можно использовать оператор (!) инверсии. Справа в уравнении находится булево выражение, вычисляемое по правилам приоритетов (операции одного приоритета вы- полняются слева направо). Скобки могут изменять порядок вычислений. Порядок следования булевых уравнений в программе не важен, логи- ческие состояния устанавливаются одновременно. SUBDESIGN boolel ( аО, а1, b : INPUT; out1, out2 : OUTPUT; ) BEGIN outl = a1 & !a0; out2 = outl # b; END; Здесь выходам outl и out2 присваиваются значения, определяемые булевыми выражениями, в которых участвуют имена входных и выходных портов. Используются операции И, ИЛИ. Это же устройство можно описать по другому, используя переменную типа NODE. SUBDESIGN boole2 ( аО, a1,b : INPUT; outl, out2 : OUTPUT; ) VARIABLE a_equals_2 : NODE; BEGIN a_equals_2 = a1 & !a0; outl a_equals_2 out2 = a_equals_2 # b; END; Если имя переменной типа NODE используется в нескольких выраже- ниях, то ее описание позволяет экономить ресурсы ПЛИС. В булевых выражениях могут использоваться следующие логические операции: Операция Пример Описание ! NOT Imusic NOT music инверсия & AND a&b aANDb и !& NAND a[3..1] !&b[5..3] a[3..1] NAND b[5..3] И-НЕ $ XOR fluo $ graf fluo XOR graf исключающее ИЛИ IS XNOR x2 !$x4 x2 XNOR x4 инверсия исключающего ИЛИ
272 системы НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ логики Операция Пример Описание # OR tris#tran tris OR tran ИЛИ !# NOR c[8..5] !#d[5..4] c[8..5] NOR d[5..4] ИЛИ-HE Унарная операция NOT может применяться к одноразрядной перемен- ной, группе переменных и к числу. При одноразрядной переменной ре- зультатом является инвертированное значение. В случае группы инверти- руется каждый член группы. В случае числа инвертируется каждый раз- ряд его двоичного представления. Бинарные операции AND, NAND, OR, NOR, XOR, NXOR допускают следующие комбинации операндов: • оба операнда одноразрядные (переменные, порты, VCC, GND); • оба операнда являются группами - операция применяется поразрядно, поэтому операнды должны быть одинаковой разрядности; • один оператор одноразрядный, а другой является группой - однораз- рядный операнд тиражируется до группы, затем к двум группам по- разрядно применяется операция; • оба операнда числа - они представляются в двоичном формате и к группам двоичных разрядов применяется операция; • один операнд число, а другой является одноразрядным, либо группой - число представляется группой двоичных разрядов и операция при- меняется к двум группам двоичных разрядов. Одноразрядный операнд тиражируется в группу, разрядность которой соответствует разрядно- сти двоичного представления числа. В булевых выражениях могут применяться следующие компараторы (операции сравнения): Компаратор Пример Описание == (логическое) bus[15..O] =Н”В800" Равно != (логическое) а1 !=аЗ Неравно > (арифметическое) с[] > d[] Больше >= (арифметическое) flu[] >= flu[] больше или равно < (арифметическое) с < d+2 Меньше <= (арифметическое) е <= f-2 меньше или равно Результатом операции сравнения является логический ноль (GND), если условие не выполнено, и логическая единица (VCC), если условие выполнено. Из таблицы видно, что компараторы делятся на логические и арифме- тические. При логическом сравнении осуществляется поразрядное сравне- ние операндов, а при арифметическом сравнении группа разрядов интер- претируется как двоичное число без знака.
ГЛАВА 5. ПРОЕКТИРОВАНИЕ ЦИФРОВЫХ УСТРОЙСТВ НА БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ 273 В булевых выражениях могут применяться следующие арифметиче- ские операции: Операция Пример Описание + (унарный) +2 Плюс - (унарный) -tn Минус + dd[2..O] + са[2..О] Сложение - gamma[] - sigmaf] Вычитание Арифметические операции могут выполняться над группами и числа- ми. Если оба операнда являются группами, то они должны иметь одинако- вую разрядность. При операциях над числами они представляются в виде групп двоичных разрядов и автоматически выравниваются. Приоритет операций в булевых выражения следующий: Приоритет Операция/ компаратор: Описание 1 - минус, дополнение до 2 (negative) 1 инверсия, логическое НЕ (NOT) 2 + сложение (addition) 2 - вычитание (subtraction) 3 == равно (equal to) 3 != не равно (not equal to) 3 < меньше (less than) 3 <= меньше или равно (less than or equal to) 3 > больше (greater than) 3 >= больше или равно (greater than or equal to) 4 & И (AND) 4 !& И-НЕ (NAND) 5 $ ИСКЛЮЧАЮЩЕЕ ИЛИ (XOR) 5 !$ ИНВЕРСИЯ ИСКЛЮЧАЮЩЕГО ИЛИ (XNOR) 6 # ИЛИ (OR) 6 !# ИЛИ-HE (NOR) Пример сложного булева уравнения: а[ ] = ((с[ ] & -В-00110Г) + е[6..1]) # (р, q, г, s, t, v); Это выражение вычисляется в следующем порядке: 1. Двоичное число В"001101" дополняется до 2 и становится В"110011". Унарный (-) имеет высший приоритет. 2. Выполняется операция AND над В"110011" и группой с[]. Эта опера- ция имеет второй приоритет из-за скобок. 3. Результат складывается с группой е[6..1]. 4. Выполняется операция OR над результатом и группой (р, q, г, s, t, v).
274 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Общий результат присваивается группе а[]. Для правильности урав- нения разрядность группы слева должна быть кратна разрядности группы справа. 5.6.11. Комбинационная логика Комбинационная логика - это конечные автоматы без памяти. Эта ло- гика описывается в AHDL с помощью булевых выражений и уравнений, таблиц истинности, мега и макрофункций. Реализация табличной логики. Таблицы истинности в языке AHDL задаются с помощью оператора Truth Table. Оператор имеет следующие правила синтаксиса и семантики. • Первая строка оператора до символа (;) является заголовком таблицы. Вначале идет ключевое слово TABLE, за которым следует список вхо- дов (имена, разделенные запятыми). Далее следует символ => и список выходов. • Последующие строки таблицы содержат списки значений входов и вы- ходов. Списки разделены символом =>. Значения могут быть числами, константами VCC и GND, именами констант, группами чисел или кон- стант. Входные значения могут быть безразличными состояниями (X). Входные и выходные значения соответствуют входам и выходам, ука- занным в заголовке таблицы. • Описание таблицы завершается ключевыми словами END TABLE и (;). При использовании этого оператора необходимо соблюдать следующие правила. • Имена в заголовке таблицы должны представлять собой либо одиноч- ные цепи, либо группы. • В таблице в качестве входных значений можно употреблять символ безразличного состояния (X) для задания диапазона кодов. • Размеры списков значений входов и выходов должны точно соответст- вовать размеру списков имен входов и выходов в заголовке. В против- ном случае в качестве выходных используются значения по умолча- нию. • При использовании символа (X) необходимо следить, чтобы диапазо- ны задаваемых значений не перекрывались в пределах одной таблицы. SUBDESIGN 7segment ( i[3..O] : INPUT; a, b, c, d, e, f, g : OUTPUT;
ГЛАВА 5. ПРОЕКТИРОВАНИЕ ЦИФРОВЫХ УСТРОЙСТВ НА БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ 275 BEGIN TABLE i[3..O] => a, b, c, d, е, f, g; H"0" => 1, 1, 1,1,1, 1, 0; Н”Г => 0, 1, 1, 0, 0, 0, 0; Н"2" => 1, 1, 0, 1, 1. О, 1; Н’З" => 1, 1, 1, 1, 0, 0, 1; Н”4” => 0, 1, 1, 0, 0, 1, 1; Н"5” => 1. О, 1, 1, 0, 1, 1; Н"6" => 1, 0, 1, 1, 1, 1, 1; Н"7” => 1, 1, 1, О, О, О, 0; Н”8" => 1, 1, 1, 1, 1, 1, 1; н"9" => 1,1,1,1, о, 1,1; Н"А" => 1, 1, 1, О, 1, 1, 1; Н”В” =>0, 0, 1, 1, 1, 1, 1; Н"С” => 1, О, О, 1, 1, 1, 0; H"D” =>0, 1, 1, 1. 1.0, 1; Н"Е" => 1, О, О, 1, 1, 1, 1; НТ => 1, 0, 0, 0, 1, 1, 1; END TABLE; END; Это дешифратор для семисегментного индикатора. SUBDESIGN decodes ( addr[15..O], m/io : INPUT; rom, ram, print, sp[2..1]: OUTPUT; ) BEGIN TABLE m/io, addr[15..O] => 1, B’OOXXXXXXXXXXXXXX" 1, B"100XXXXXXXXXXXXX" 0, B"0000001010101110" 0, B"0000001011011110” 0, B"0000001101110000" гот, ram, print, spO; => 1. 0, 0, В"00"; => 0, 1. 0, В’00”; => 0, 0, 1. В"00"; => 0, 0, 0, В"0Г; => 0, 0, 0, В"10"; END TABLE; END; А это дешифратор адреса для внешней памяти микропроцессорной системы с шестнадцатиразрядным адресом. Использование безразличных состояний позволяет проще запрограммировать устройство и использовать меньше ресурсов ПЛИС. Реализация условной логики. Условная логика реализуется с помо- щью операторов IF Then и Case. Оператор Case определяет список альтернативных вариантов, один из которых выполняется, если значение селектора (переменной, группы или выражения), стоящего за ключевым словом CASE, соответствует значе-
276 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ нию, стоящему за ключевым словом WHEN этого варианта. Оператор имеет следующие правила синтаксиса и семантики. • Вначале идет ключевое слово CASE, за которым следует селектор, да- лее ключевое слово IS. • Оператор завершается ключевым словосочетанием END CASE, за ко- торым стоит символ (;). • Тело оператора представляет собой список альтернативных вариантов, каждый из которых начинается ключевым словом WHEN. Каждый ва- риант представляет собой набор констант, разделенных запятыми, за которым следует символ =>. За этим символом следует список опера- торов, разделенных символом символом (;). Последний вариант может начинаться ключевым словосочетанием WHEN OTHERS. • Если значение селектора равно одному из значений констант варианта, выполняются все операторы этого варианта. Если значение селектора не равно ни одной из констант, выполняются операторы за словосоче- танием WHEN OTHERS (если оно есть). • Если оператор CASE используется для описания конечного автомата, словосочетание WHEN OTHERS не может использоваться для выхода из неразрешенных состояний. SUBDESIGN decoder ( code[1..O] : INPUT; out[3..0] : OUTPUT; ) BEGIN CASE code[] IS WHEN 0 => out[] = B"0001"; WHEN 1 => out[] = B"0010"; WHEN 2 => out[] = B"0100"; WHEN 3 => out[] = B"1000"; END CASE; END; Это описание дешифратора 2->4, который преобразует двухразрядный двоичный код в код «one hot» (четыре значения содержат каждое по од- ной единице). В зависимости от кода на входе активизируется одна из вет- вей оператора CASE. Оператор IF Then определяет списки операторов, выполняемых в за- висимости от значения булева выражения. Оператор имеет следующие правила синтаксиса и семантики. • Вначале идет ключевое слово IF, за которым следует булево выраже- ние, далее ключевое слово THEN и список операторов, разделенных символом (;). • Далее между ключевыми словами ELSEIF и THEN может следовать дополнительное булево выражение, а за THEN - список операторов,
ГЛАВА 5. ПРОЕКТИРОВАНИЕ ЦИФРОВЫХ УСТРОЙСТВ НА БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ 277 выполняемых или нет в зависимости от значения этого выражения. Эта необязательная конструкция может повторяться многократно. • Операторы за словом THEN выполняются, если булево выражение истинно, при этом последующая конструкция ELSEIF THEN игнори- руется. • За конструкцией ELSEIF THEN может следовать ключевое слово ELSE, а за ним список операторов, которые выполняются, если ни од- но из булевых выражений ни приняло истинного значения. • Значения булевых выражений за ключевыми словами IF и ELSEIF вычисляются последовательно. • Оператор завершается словосочетанием END IF и символом (;). SUBDESIGN priority ( low, middle, high : INPUT; highest_level[1..O]: OUTPUT; ) BEGIN IF high THEN highestJevel[] = 3; ELSIF middle THEN highest-level [] = 2; ELSIF low THEN highestJevel[] = 1; ELSE highest_level[] = 0; END IF; END; Это шифратор приоритетов. На выходах устанавливается код, соот- ветствующий приоритету входа, на котором имеется значение VCC. А это просто пример выбора вариантов действий: IFa[] == b[] THEN с[8..1] = H "77"; addr[3..1] = f[3..1].q; f[].d = addr[] + 1; ELSIF g3 $ g4 THEN f[].d = addr[]; ELSE d = VCC; END IF; 5.6.12. Последовательностная логика Последовательностная логика (конечные автоматы с памятью) описы- вается в языке AHDL с помощью триггеров, регистров, машин состояний и библиотеки параметрических модулей (LPM).
27В СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Регистры. Регистр создается объявлением его в разделе VARIABLE или ссылкой в строке в разделе LOGIC. После определения регистра его можно подключить к другой логике при помощи его портов. Обращение к портам регистра производится по имени регистра и имени порта: <имя регистра>.<имя порта> В следующем примере сформирован восьмиразрядный регистр из триггеров D-типа, который защелкивает данные с входов d по положи- тельному фронту синхросигнала при положительном активном значении на входе разрешения. SUBDESIGN burreg ( elk, load, d[7..O] : INPUT; q[7..O] : OUTPUT; ) VARIABLE ff[7..O] : DFFE; BEGIN ff[].clk = elk; ff[j.ena = load; ff[].d = d[]; q[]=ff[]q; END; Первое уравнение логической секции соединяет вход тактового сигна- ла проекта с тактовыми входами триггеров. Во втором уравнении подклю- чается разрешающий сигнал, в третьем уравнении подключаются входы, а в четвертом выходы. Altera рекомендует использовать в качестве такти- рующего глобальный синхросигнал. Можно объявить выходы проекта как D-триггеры в разделе VARI- ABLE. Это дает экономию за счет использования триггеров на выводах микросхемы. SUBDESIGN reg_out ( elk, load, d[7..O] : INPUT; q[7..O] : OUTPUT; ) VARIABLE q[7..O] : DFFE; % выходы объявлены как регистры % BEGIN q[].clk =clk; q[].ena = load; q[] = d[]; END;
ГЛАВА 5. ПРОЕКТИРОВАНИЕ ЦИФРОВЫХ УСТРОЙСТВ НА БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ 279 Счетчики. Счетчики обычно реализуются на D-триггерах с использо- ванием оператора IF. В следующем примере реализован 16-разрядный за- гружаемый счетчик со сбросом. SUBDESIGN ahdlcnt ( elk, load, ena, clr, d[15..O]: INPUT; q[15..O] : OUTPUT; VARIABLE count{15..0] : DFF; BEGIN count[].clk = elk; count]] .dm = !clr; IF load THEN count[].d = d[]; ELSIF ena THEN count[].d = count]].q + 1; ELSE count[].d = count]] .q; END IF; q[] = count]]; END; 5.6.13. Машина состояний Машина состояний в AHDL - это языковая структура, позволяющая описывать конечный автомат в виде множества внутренних состояний про- екта. Переходы между состояниями синхронизуются тактовым сигналом. Условие и направление перехода определяется для каждого состояния ин- дивидуально. Каждому состоянию можно поставить в соответствие один или несколько выходных управляющих сигналов. Машина состояний описывается как переменная в разделе VARIABLE. Поведение машины описывается в разделе логики после ключевого слова BEGIN. Форма описания машины состояний следующая: имя_переменной : MACHINE [ OF BITS ссписок битов> ] WITH STATES ( состояние!, состояние2, ...); где состояние ::= <имя> [ = <значение> ] , < значение > ::= <число> | <имя> . Например. ss : MACHINE OF BITS (q1, q2, q3) WITH STATES ( s1 = B"000", s2 = B"010",
280 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ s3 = B"111"); ИЛИ ss: MACHINE WITH STATES (sO, si); Обязательным является перечисление списка состояний (sO, si). Если не объявлена конструкция OF BITS, то объявление имени состояния рав- носильно объявлению переменной типа NODE. Если объявлена конструкция OF BITS, то перечисленные биты долж- ны существовать физически. В этом случае состояния рассматриваются как комбинация значений выходов этих битов (логических ячеек), аналогично константам. Кроме того, количество возможных состояний в этом случае равно 2 в степени «количество битов», поэтому желательно явно описать все состояния, включая ложные. Первое по списку состояние является со- стоянием после сигнала сброса. Машина состояний имеет следующие порты. .elk - входной тактовый сигнал; .reset - сигнал сброса, активный уровень - «1»; .епа - разрешение перехода, активный уровень - «1». Поведение машины можно описать двумя способами: • с помощью конструкции CASE; • с помощью конструкции TABLE. SUBDESIGN StateMachinel -- Пример описания с - помощью конструкции CASE ( elk, reset, d : INPUT; -- входные порты проекта q : OUTPUT; - выходной порт проекта ) VARIABLE ss: MACHINE WITH STATES (sO, s1); - переменная ss - машина с с-ниями sO, s1 BEGIN ss.clk = elk; - соединим входной сигнал elk с тактовым входом машины ss.reset = reset; - соединим входной сигнал reset с входом сброс -- Далее рассматриваем каждое состояние и анализируем условия переходов CASE ss IS WHEN sO => q = GND; IF d THEN - в состоянии sO - устанавливаем выход q в 0 -- если на входе d высокий уровень, ss = s1; - то следующее состояние будет s1, иначе ss останется прежним END IF; WHEN s1 => q = VCC; IF Id THEN ss = sO; - в состоянии s1 - устанавливаем выход q в 1 - если на входе d низкий уровень, - следующее состояние будет sO, иначе ss останется прежним END IF; END CASE; END;
ГЛАВА 5. ПРОЕКТИРОВАНИЕ ЦИФРОВЫХ УСТРОЙСТВ НА БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ 281 Теперь рассмотрим пример описания машины состояний с помощью конструкции TABLE. Это машина состояний с асинхронными сигналами на выходах (так называемый автомат Милли). Формирование выходного сигнала производит комбинационная логика. После перехода к следующе- му состоянию, синхронизированного тактовым сигналом elk, изменение выходного сигнала происходит с задержкой, которую вносит комбинаци- онная логика. SUBDESIGN mealy ( elk : INPUT; - входные порты проекта reset: INPUT; у : INPUT; z : OUTPUT; -- выходной порт проекта ) VARIABLE ss : MACHINE WITH STATES (sO, s1, s2, s3); BEGIN ss .clk = elk; ss. reset = reset; TABLE -- текущее входной выходной следующее -- состояние сигнал сигнал состояние ss, У => Z, ss; - заголовок таблицы sO, 0 => 0, sO; - описание данных sO, 1 => 1, si; s1, 0 => 1. s1; s1, 1 => 0, s2; s2, 0 => о. s2; s2, 1 => 1, s3; s3, 0 => 0, s3; s3, END TABLE; 1 => 1, sO; END; Далее приведен пример описания машины состояний с синхронными сигналами на выходах. Формирование выходного сигнала производится синхронно с переходом к следующему состоянию по стробу elk. SUBDESIGN moore2 ( elk : INPUT; reset: INPUT; у : INPUT; z : OUTPUT; ) VARIABLE ss: MACHINE WITH STATES (sO, s1, s2, s3); zd: NODE; BEGIN ss.clk = elk; ss. reset = reset; z = DFF(zd, elk, VCC, VCC); - выходной триггер.
ГЛАВА 5. ПРОЕКТИРОВАНИЕ ЦИФРОВЫХ УСТРОЙСТВ НА БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ 282 синхронизирующий изменение сигнала TABLE - текущее входной следующее выходной -- состояние сигнал состояние сигнал SS, У => ss, zd; sG, 0 => SO, 0; SO, 1 => s2, i; s1, 0 => SO, 0; s1, 1 => s2, 1; s2, 0 => s2, 1; s2, 1 => s3, о; s3, 0 => s3, о; s3, 1 => s1, 1; END TABLE; END; 5.7. Комплекс учебных средств «Проектирование систем на ПЛИС» В лаборатории «Микропроцессорные системы» МИФИ на основе многолетнего опыта использования ПЛИС разработан комплекс средств для обучения проектированию цифровых устройств на ПЛИС Altera с ис- пользованием системы Max+plusII. Комплекс включает: • Методические материалы в виде описания лабораторного практикума; • Программное инструментальное обеспечение в виде системы MAX+plusII фирмы Altera. Пакет работает на персональных компью- терах в среде Windows; • Аппаратное обеспечение в виде платы лабораторного макета и устрой- ства типа ByteBlaster; Комплекс может быть установлен на отдельный компьютер для инди- видуального обучения (достаточно PC типа 486-DX4 с оперативной памя- тью от 16 Мбайт), а также на локальную сеть компьютеров учебного клас- са. Лабораторный стенд LabKit-8000 (рис. 5.15) реализован на базе ПЛИС типа EPF8282A широко распространенного семейства FLEX 8000 фирмы Altera. Эта ПЛИС содержит около 5000 эквивалентных вентилей, имеет 68 линий ввода-вывода. В реальных проектах может быть использо- вано до 2500 вентилей и свыше 200 триггеров, что вполне достаточно как для выполнения учебных заданий практикума, так и для практической работы специалистов. Кроме ПЛИС макет содержит устройства ввода и отображения данных, генератор тактовых импульсов частотой 4 МГц, зву- ковой пьезоизлучатель, стабилизатор напряжения питания. Дополнитель- ные разъемы (18 линий ввода-вывода) позволяют подключать к макету
ГЛАВА 5. ПРОЕКТИРОВАНИЕ ЦИФРОВЫХ УСТРОЙСТВ НА БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ 283 различные модули расширения. Предусмотрен также разъем для тестиро- вания реализуемых устройств в соответствии со стандартом JTAG. Конфигурация ПЛИС осуществляется с помощью персонального ком- пьютера через кабель типа ByteBlaster, подключаемый к соответствующе- му разъему макета. При выполнении практикума используется метод по- следовательной пассивной загрузки конфигурации от компьютера, на ко- тором установлена система проектирования MAX+plusII. Технология внутрисистемного программирования ПЛИС позволяет реализовать на базе данного макета широкую номенклатуру комбинационных и последователь- ностных цифровых устройств различной сложности, проектирование и ис- пытание которых производится в процессе выполнения лабораторных ра- бот практикума. На макете предусмотрена также возможность подключе- ния конфигурационного ПЗУ с последовательной выборкой для конфигу- рации ПЛИС без использования компьютера. Рис. 5.15. Плата LabKitBOOO Разработанный практикум включает семь лабораторных работ. Работа 1. «Графический ввод схемы устройства и функциональная симуляция с использованием САПР МАХ+piusII». В работе изучается графический редактор и осуществляется ввод в систему MAX+plusII
284 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ принципиальной схемы комбинационного устройства, описанного булевым уравнением. После этого выполняется трансляция проекта, с помощью ре- дактора логико-временных диаграмм формируется последовательность входных тестовых векторов и осуществляется симуляция (логическое мо- делирование). В результате система MAX+plusll формирует диаграмму состояний для выходов устройства, анализируя которую совместно с таб- лицей истинности можно сделать заключение о правильности функциони- рования разработанного устройства. Работа 2. «Описание схемы на языке AHDL, использО'вание мони- тора иерархии проекта САПР МАХ+plusII». В этой работе изучается процесс описания цифрового устройства на языке AHDL и создание ие- рархического проекта. С помощью редактора Text Editor создается тексто- вый файл описания схемы мультиплексера на языке AHDL. Для ускоре- ния процесса используются шаблоны конструкций языка, заложенные в систему MAX+plusll. Алгоритм программы реализуется с помощью опера- тора IF_THEN_ELSE. На основе текстового файла создается символьный файл, который с помощью редактора Graphic Editor включается в иерар- хический проект вместе с устройством, созданным в первой работе. Для анализа иерархического проекта используется монитор Hierarchy Display. После этого выполняется трансляция проекта, формирование тестовых векторов и симуляция в последовательности, аналогичной предыдущей работе. Работа 3. «Разработка комбинационных схем, программирование ПЛИС и анализ размещения схемы на кристалле». Работа посвящена проектированию комбинационных схем с использованием платы LabKit- 8000, а также анализу и редактированию размещения схемы устройства на кристалле ПЛИС с помощью редактора конфигурации FloorPlan Editor системы MAX+plusll. Рассматривается функционирование схемы дешиф- ратора для семисегментного индикатора и пример его описания на языке AHDL в виде таблицы. Перед трансляцией определяется тип микросхемы ПЛИС для реализации проекта и функции ее выводов. После трансляции с помощью приложения Programmer осуществляется загрузка кода про- граммы через ByteBlaster в ПЛИС на плате лабораторного макета LabKit8000. Проверка работы дешифратора осуществляется вводом кода входных сигналов с переключателей и наблюдением знаков на семисег- ментном индикаторе. Для анализа размещения схемы устройства на кри- сталле используется редактор конфигурации FloorPlan Editor (рис. 5.16). С его помощью выполняется коррекция размещения выводов, после по- вторной трансляции работа дешифратора вновь проверяется с использова- нием платы LabKit-8000. Работа 4. «Разработка последовательностных схем, временной анализ в системе МАХ+plusII». В работе практически осваивается про- ектирование последовательностных схем на примере программируемого
ГЛАВА 5. ПРОЕКТИРОВАНИЕ ЦИФРОВЫХ УСТРОЙСТВ НА БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ 285 счетчика/таймера - типового узла современных микроконтроллеров. Осо- бое внимание уделяется выполнению анализа временных характеристик разработанной схемы с помощью приложения Timing Analyzer, который производится после процедуры размещения и трассировки схемы на кри- сталле ПЛИС. При этом исследуется влияние размещения элементов и выводов на кристалле на быстродействие проектируемого последователь- ностного устройства. Рис. 5.16. Изображение конфигурации ПЛИС Работа 5. «Разработка проекта цифрового устройства как машины состояний.» Рассматриваются способы описания проектируемого устрой- ства как машины состояний в языке AHDL. Работа 6. «Использование методов оптимизации при проектирова- нии цифровых устройств на ПЛИС.» В работе изучаются методы и меха- низмы оптимизации, встроенные в систему MAX+plusII, а также приемы, позволяющие провести анализ характеристик разработанного проекта цифрового устройства. Работа 7. «Построение конечных автоматов (иа примере арифмети- ко-логического устройства RISC-микроконтроллера)». В завершающей работе практикума, проектирование сложных конечных автоматов изучает- ся на примере регистрового АЛУ — ядра микропроцессорных и микрокон- троллерных устройств. В процессе выполнения работы проектируется схе-
286 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ ма АЛУ, реализующего набор основных арифметических и логических операций, проверяется правильность их выполнения. При выполнении практикума особое внимание уделяется самостоя- тельной работе. Следует отметить, что система MAX+plusII предоставляет пользователям широкие возможности ее освоения с помощью опции Help (для ее использования требуется, естественно, знание английского языка). Методика проведения работ предполагает сначала выполнение обязатель- ного задания, реализация которого подробно описана в разработанном учебном пособии. Затем самостоятельно выполняется разработка индиви- дуального проекта. Для каждой работы предлагается набор, содержащий 10-20 заданий на проектирование типовых цифровых узлов и блоков: де- шифраторов, компараторов, сумматоров, умножителей, регистров, комби- национных и последовательностных схем. В устройствах, проектируемых счетчиков, генераторов кодов и других по этим заданиям, используются размещенные на макете средства ввода и вывода данных: переключатели, кнопки, светодиоды, индикаторы, генератор импульсов, пьезоизлучатель. Таким образом обеспечивается наглядность результатов при функциониро- вании разработанной схемы. Данный практикум используется как при обучении студентов соответ- ствующих специальностей, так и для повышения квалификации специали- стов промышленности. При обучении студентов освоение методов реализации цифровых уст- ройств на базе ПЛИС проводится вместе с изучением классических мето- дов проектирования. Будущие специалисты осваивают основные способы преобразования и минимизации логических функций, учатся проектиро- вать разнообразные устройства из набора серийно выпускаемых микросхем малой и средней степени интеграции или комплекта стандартных ячеек, используемых при разработке заказных БИС. Одновременно они учатся проектировать аналогичные устройства на базе ПЛИС, сравнивают техни- ческие и экономические характеристики устройств, реализуемых различ- ными методами. Для повышения квалификации специалистов промышленности, уже имеющих опыт разработки устройств на базе серийных микросхем, прово- дятся циклы практического освоения методики проектирования цифровых схем на базе ПЛИС. При этом теоретический раздел обучения сокращен, а основное внимание уделено практической реализации проектов на лабора- торном макете. Достаточно подготовленные специалисты могут самостоя- тельно освоить методику проектирования цифровых устройств на базе ПЛИС Altera, используя разработанный лабораторный макет, учебное по- собие и необходимое программное обеспечение.
ГЛАВА 6 ИНСТРУМЕНТАЛЬНЫЕ И УЧЕБНЫЕ СРЕДСТВА 6.1. Средства для разработки систем на микроконтроллерах и ПЛИС Комплекс инструментальных средств, необходимый для разработки систем на микроконтроллерах и ПЛИС, включает: • средства разработки прикладного программного обеспечения микрокон- троллеров; • средства ввода принципиальной схемы контроллера и проектирования топологии печатной платы; • средства разработки и верификации проекта на ПЛИС; • средства автономной отладки аппаратуры; • средства комплексной отладки аппаратуры и программного обеспечения в реальном масштабе времени; • средства программирования БИС памяти программ и программируемой логики. Общепринятым подходом в настоящее время является использование в качестве ведущего процессора (host-processor) инструментальных средств персонального компьютера (рис. 6.1). Это позволяет разработчику инстру- ментария переложить на компьютер общесистемные задачи и сосредото- читься в каждом случае на реализации специфических функций проектиро- вания и отладки. Одновременно персональный компьютер служит в качест- ве объединяющего ядра, в том числе конструктивного, и средством комму- никации в вычислительных сетях. Пользователь при этом получает воз- можность, помимо средств проектирования, пользоваться широким набором прикладного программного обеспечения для MS DOS и Windows.
288 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ логики Аппаратам» средства Программны» средства Рис. 6.1. Структура комплекса инструментальных средств Перечисленные выше группы средств проектирования и отладки вклю- чают приборы и системы различной категории сложности и стоимости. Да- лее мы рассмотрим профессиональные средства, обеспечивающие макси- мальную поддержку разработчику и позволяющие создать изделие с микро- процессорной системой управления в запланированные сроки и в пределах утвержденной сметы затрат. В качестве средств ввода принципиальных схем и разводки топологии печатных плат на персональных компьютерах используются системы проек- тирования типа PCAD (ACCEL EDA) и OrCad. В последнее время вышло несколько хороших книг, описывающих эти средства и работу с ними [5, 6], поэтому мы этого вопроса касаться не будем. В предыдущей главе рассмотрена система MAX+plusII. Она является хорошим примером средств разработки и верификации проектов на ПЛИС. В качестве средств автономной отладки аппаратуры систем на микро- контроллерах и ПЛИС используются осциллографы, логические анализато- ры, логические пробники и т.д. В разделе 6.3.2 этой главы будет описан логический анализатор/эмулятор ПЗУ, реализованный на ПЛИС типа FPGA. В основном в этой главе рассмотрены средства разработки программно- го обеспечения, средства комплексной отладки программ и аппаратуры, средства программирования энергонезависимой памяти и ПЛИС, учебные классы микропроцессорной техники и ПЛИС. 6.2. Средства разработки программ В настоящее время проектировщику доступны средства разработки про- граммного обеспечения, поддерживающие все этапы процесса. Прежде всего следует отметить, что средства программирования микропроцессорных сис-
ГЛАВА 6. ИНСТРУМЕНТАЛЬНЫЕ И УЧЕБНЫЕ СРЕДСТВА 289 тем делятся на резидентные и кросс-средства. Резидентные средства фор- мируют исполняемый код, который может быть выполнен инструменталь- ном компьютере. Это возможно в тех случаях, когда контроллер выполнен на микропроцессоре, причем той же серии, что и микропроцессор инстру- ментального компьютера. К этому типу относятся все средства программи- рования систем промышленной автоматики на основе процессоров i386/i486/Pentium, например производимых фирмами Advanteh и Octagon Systems. Кросс-средства могут генерировать и отлаживать код программы для любого типа микроконтроллера и микропроцессора. Это подход более об- щий, но для эффективной работы кросс-системы необходимо, чтобы произ- водительность инструментального компьютера существенно превосходила производительность целевого процессора (на плате контролера). Средства разработки проекта на языках Си и Ассемблер, справочную информацию по архитектуре ряда микропроцессорных семейств фирмы In- tel обеспечивает пакет ApBUILDER. Он функционирует в среде Microsoft Windows, результатом его работы является исходный текст программы, ко- торый далее должен транслироваться с использованием традиционных средств. Собственно компиляторы в состав этого пакета не входят. Пакет построен по модульному принципу и может быть настроен на архитектуру семейств Intel 186 и 386, MCS-51, MCS-96. На рис. 6.2 приведено изобра- жение головного экрана программы ApBUILDER, настроенной на архитек- туру MCS-96. Рис. 6.2. Вид головного экрана программы ApBUILDER Этот экран содержит три меню: команд сервиса и конфигурации обо- лочки (верхняя строка), команд вызова информационно-справочных проце-
290 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ дур (пиктографическое меню), команд выбора разделов (в виде модульной структуры микропроцессора или микроконтроллера). Команду любого ме- ню можно активизировать с помощью курсора, управляемого мышью. Команды верхней строки позволяют выбрать рабочий файл (File) и микропроцессорное семейство (Select-Device), запустить информационно- справочную процедуру (Tools), сконфигурировать оболочку (Options), по- лучить справочную информацию по системе (Help). Команды пиктографического меню дублируют опции сервисной коман- ды Tools и позволяют получить информацию определенного типа о выбран- ном блоке микроконтроллера и создать фрагменты рабочей программы. Наиболее интересны команды HiLites, Peripheral, Register и Instructions. Первая из них выдает краткую характеристику блока, вторая вызывает ре- дактор (процедуру) конфигурации блоков ввода/вывода микроконтролле- ра. В интерактивном редакторе конфигурации можно определить режим работы блока, после чего будет автоматически сформирован фрагмент ис- ходного текста на выбранном языке для инициализации этого блока. Ко- манда Register вызывает редактор (процедуру) конфигурации регистров управления выбранного блока. В диалоговом экране отображаются все ре- гистры с описанием их функций, имен и адресов, отдельных битов. Этот редактор работает вместе с предыдущим и позволяет более детально изу- чить режимы работы блока. По команде Instructions открывается окно со справочной информацией о командах, связанных с выбранным блоком. Указывается формат каждой команды, время выполнения при определен- ной тактовой частоте. Это дает возможность уточнить синтаксис и длитель- ность командного цикла. Программы типа ApBUILDER не следует переоценивать, средства этого уровня играют роль демонстрационную и учебную, помогают быстро озна- комиться с возможностями определенного семейства микропроцессоров или микроконтроллеров. Пакеты инструментальных программ для микропроцессоров и микро- контроллеров представляют собой комплексы кросс-программ, обеспечи- вающие трансляцию исходных текстов рабочих программ с языков Пас- каль, Си, Ассемблер в перемещаемый объектный код, последующую компо- новку отдельных модулей в единую программу и размещение ее по абсо- лютным адресам памяти программ. Последовательность этапов разработки программного обеспечения кон- троллера, содержание этапов и используемые при этом инструментальные средства следующие: • создание исходного текста программы. Исходные модули программы могут быть написаны как на языке высокого уровня, так и на ассембле- ре. Используется редактор текста, который в состав традиционного ин- струментального пакета обычно не входит;
ГЛАВА 6. ИНСТРУМЕНТАЛЬНЫЕ И УЧЕБНЫЕ СРЕДСТВА 291 • трансляция. Транслятор и Ассемблер преобразуют исходный текст в перемещаемый объектный код. Кроме файлов объектного кода каждый из них формирует файл листинга трансляции. Используются кросс- транслятор и кросс-ассемблер из пакета инструментальных средств; • создание библиотечных модулей. Библиотекарь позволяет помещать перемещаемый модуль в библиотеку, извлекать модуль из библиотеки, создавать новую библиотеку и т.д. Используется программа- библиотекарь из пакета инструментальных средств; • компоновка перемещаемых объектных модулей (в том числе библиотеч- ных) в единую программу и размещение ее по абсолютным адресам па- мяти. Используется программа-компоновщик пакета инструментальных средств; • преобразование абсолютного кода в файл типа .hex. Используется ути- лита-конвертор из паке та инструментальных средств. Следует отметить, что языки программирования микропроцессорных контроллеров служат для создания программ, функционирующих, как пра- вило, без операционных систем. По этой причине отсутствуют возможности работы, например, с файлами. Ограниченные вычислительные возможности микроконтроллеров приводят к исключению рекурсии, ограничивают ком- бинации сложных типов данных (типа массив записей). С другой стороны, каждый язык, например Паскаль-51, ориентирован на архитектуру опреде- леного семейства, включает машинно-зависимую компоненту. В нем можно использовать имена регистров и битов микроконтроллера без предваритель- ного описания. Для работы в реальном масштабе времени введены проце- дуры прерываний. В настоящее время версии языков программирования, конкретные компиляторы и связаные с ними программы из состава пакетов программирования разрабатываются независимыми фирмами-поставщиками инструментальных средств. При создании исходного текста прикладной программы следует пользоваться руководствами типа «Описание языка» из состава документации пакета. Инструментальные программы традиционных пакетов запускаются на выполнение командными строками операционной системы. Очевидным не- достатком такого подхода является недостаточный уровень интерфейса пользователя. Отладка программы по листингам трансляции занимает мно- го времени. Однако традиционные пакеты инструментальных программ имеют ценность и в настоящее время, поскольку в них решены задачи, свя- занные с генерацией эффективного кода, что для микропроцессорных кон- троллеров имеет первостепенное значение. Новый этап жизни пакетов про- граммирования микропроцессоров и микроконтроллеров начался в связи со все большим распространением операционной системы Linux. Традиционные пакеты в настоящее время являются основой систем про- граммирования, функционирующих в среде MS Windows и имеющих
292 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ улучшенный интерфейс пользователя за счет оболочек, позволяющих рабо- тать в интерактивном режиме. Системы программирования с интерфейсом в виде оболочки. Наибо- лее простым способом облегчить работу с традиционными пакетами про- граммирования является создание оболочки, имеющей улучшенный интер- фейс пользователя. Оболочки обычно имеют меню, позволяющее выбрать один из возможных режимов работы, оконный интерфейс, механизм опера- тивного режима Help. В качестве собственно инструментальных программ используются традиционные пакеты. Внутренние вызовы программных мо- дулей, как инструментальных, так и пользовательских, осуществляются с использованием обычных командных файлов. Основные ограничения программных систем-оболочек заключаются в неполном согласовании протоколов обмена между отдельными ранее соз- данными инструментальными программами, например, редактором текста и кросс-ассемблером. Это приводит к ограничениям в процессе отладки. На- пример, после трансляции и сообщении об ошибках приходится просмот- реть листинг трансляции, а затем в редакторе править исходный текст. Вы- ход заключается в создании собственного полностью согласованного вари- анта инструментальной программы. После создания собственного редактора текста программа-оболочка получает возможность передать ему результаты трансляции, а он помечает строку с ошибочным синтаксисом. Ограничения систем-оболочек снимаются при наличии полных данных о протоколах об- мена в инструментальных пакетах и формате отладочной информации. Интегрированные системы программирования. Наиболее эффектив- ным средством разработки ПО для микроконтроллеров являются интегри- рованные системы программирования. Прототипом таких систем является Турбо-Паскаль фирмы Borland, но в отличии от этой системы резидентного типа .для микроконтроллеров в основном используются кросс-системы. Отличием интегрированных систем от оболочек является полное согла- сование между компонентами по протоколам обмена и форматам отладоч- ной информации, что позволяет организовать сквозной цикл проектирова- ния и отладки, начиная с программирования на языке высокого уровня, через отладку на программной модели и до управления ресурсами схемного эмулятора при отладке рабочей программы совместно с аппаратурой. Пла- той за эти преимущества является очень большая сложность и трудоемкость работ по созданию и сопровождению такой системы. Рассмотрим возможности интегрированных систем на примере кросс- системы Паскаль-51 для программирования микроконтроллеров семейства Intel 8051/52. Интегрированная система Паскаль-51 включают редактор текста, кросс- транслятор с кросс-ассемблером, редактор связей, библиотеку периода вы- полнения, символический отладчик.
ГЛАВА 6. ИНСТРУМЕНТАЛЬНЫЕ И УЧЕБНЫЕ СРЕДСТВА 293 Основой этой системы является язык программирования Паскаль-51. Он отличается от авторской версии Н. Вирта следующими особенностями: • наличием машинно-зависимой компоненты, т.е. возможности обращать- ся к программно-доступным ресурсам микроконтроллера без их предва- рительного описания; • наличием типа bit. Битовые переменные являются глобальными и на- кладываются на пространство битовой памяти, имеются встроенные процедуры работы с битовыми переменными, введены логические опе- рации над битами; • язык Паскаль-51 является языком программирования реального време- ни. Это означает, что библиотека исполняющей системы и код, форми- руемый компилятором являются полностью прерываемыми. Возможно создание специальной процедуры обработки прерываний interrupt и вы- зов ее по имени; • язык Паскаль-51 допускает ассемблерные вставки. Язык, компилятор и редактор связей поддерживают модульную техно- логию программирования. Имеется понятие «проект», под которым понима- ется список файлов, транслируемых отдельно, но затем собираемых в один исполняемый модуль редактором связей. В проект могут входить файлы с исходным текстом на языке Паскаль-51, на языке ассемблер, объектные файлы. Первый файл проекта рассматривается как главный (Main file), редактор связей создает исполняемый модуль с расширением .hex от имени главного файла. После ввода в систему модулей, составляющих рабочую программу, их связывание, подключение библиотек и распределение ресурсов выполняется в автоматическом режиме. Это предохраняет данные от непреднамеренного затирания. Символический отладчик, входящий в интегрированную систему Паскаль-51, позволяет выполнять отладку на уровне операторов языка вы- сокого уровня, отслеживая изменения логических переменных рабочей про- граммы в окне Watch. Одновременно в окне Resource можно видеть состоя- ние аппаратных ресурсов микроконтроллера (ячеек памяти и регистров). Один из возможных видов рабочего экрана интегрированной системы «Паскаль-51» представлен на рис. 6.3. Видны основное меню и открытые окна: редактора с исходным текстом рабочей программы; дизассемблера с последовательностью команд в символической форме; ресурсов микроконтроллера с набором регистров и ячейками внутренней памяти. При выполнении в процессе отладки последовательности команд рабочей программы отладчик (с использованием программно-логической модели) ведет подсчет машинных тактов команд и отображает длительность
294 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ выполнения фрагмента программы при выбранной частоте синхронизации микроконтроллера. Рис. 6.3. Вид экрана интегрированной системы программирования «Паскаль-51» Команды основного меню в основном соответствуют набору, который использовала фирма Borland в своих системах программирования. Главное отличие связано с командой Hard, которая позволяет настроить систему на конкретный тип микроконтроллера типа MCS-51 (Intel, Philips, Dallas и др.), а также аппаратный эмулирующий модуль (одноплатный контроллер, схемный эмулятор). Система позволяет создавать рабочие программы для нескольких «десятков типов микроконтроллеров семейства MCS-51. 6.3. Средства отладки в реальном масштабе времени Основой методов отладки микропроцессорных систем в реальном вре- мени является контролируемое управление магистралью и наблюдение на магистрали ответной реакции отдельных модулей системы. Понятие «кон- тролируемое управление» подразумевает здесь задание необходимой (в со- ответствии с алгоритмом тестирования) последовательности функциональ- ных состояний на магистрали. Задатчиком является микропроцессорная БИС или замещающий ее имитирующий процессор. Набор функциональ- ных состояний определяется всеми возможными комбинациями логических сигналов на выводах микропроцессорной БИС при выполнении набора ко- манд. Основным функциональным тестом (последовательностью состояний)
ГЛАВА 6. ИНСТРУМЕНТАЛЬНЫЕ И УЧЕБНЫЕ СРЕДСТВА 295 при отладке является рабочая программа. При наблюдении за реакцией системы кроме фиксации отклика модулей по магистрали нужно фиксиро- вать и состояние самой микропроцессорной БИС (или имитирующего про- цессора). В настоящее время интеграцию аппаратуры и программного обеспече- ния при отладке микропроцессорной системы в реальном масштабе времени позволяют выполнить три типа средств: отладочные платы, схемные эмуля- торы и эмуляторы ПЗУ (памяти программ). Отладочная плата представля- ет собой типовую комбинацию аппаратных средств. Такая платформа по- зволяет сосредоточиться только на разработке программного, обеспечения. После отладки плата может быть использована для управления как авто- номный контроллер. Схемные эмуляторы и эмуляторы ПЗУ являются внешними средствами отладки и отличаются местом подключения их к ма- гистрали целевой системы и способами управления/наблюдения. Эмуляция как метод подразумевает замещение некоторого модуля сис- темы (процессора или памяти программ) функциональным аналогом (эму- лятором), который позволяет сделать процесс управления контролируемым и наблюдаемым. Особенностью эмуляции микропроцессорных систем явля- ется то, что функции управления и наблюдения также выполняются эмуля- тором, а не отдельными блоками отладочного стенда. Это связано с полной интеграцией аппаратного и программного обеспечения и сложностью логи- ко-временных диаграмм функционирования этих систем. Отдельные прибо- ры наблюдения могут подключаться как дополнительные. Таким образом можно заключить, что основными функциями эмуляции как метода отладки микропроцессорных систем является замещение микропроцессорной БИС или модуля памяти программ, управление формированием последователь- ности функциональных состояний на магистрали и наблюдение за отклика- ми модулей системы, а также состоянием центрального процессора. Требо- вания режима реального времени приводят к необходимости производить замещение не только функциональное, но и с точки зрения важнейших электрофизических параметров. Схемный эмулятор микропроцессора или микроконтроллера строится на основе имитирующего процессора, замещающего целевую микропроцес- сорную БИС. Кроме ресурсов ЦПУ этой БИС традиционно эмулируется память программ и данных. Эмулятор подключается к магистрали отлажи- ваемой системы эмуляционной вилкой через розетку вместо целевой микро- процессорной БИС (сечение 1 на рис. 6.4). Непосредственное управление магистралью осуществляет имитирующий процессор, рабочая программа и функциональные тесты вначале размещаются в памяти программ эмулято- ра. Поскольку изменять набор операций и диаграммы обмена эмулятора трудно, этот метод применяется только для отладки систем на основе одно- кристальных микропроцессоров и микроконтроллеров с фиксированной
296 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ системой команд. Каждому микропроцессорному семейству соответствует свой схемный эмулятор. 1 Объекты управления (датчики, исполнительные устройства) Рис. 6.4. Возможные места подключения для управления магистралью при отладке Эмулятор ПЗУ строится с использованием матрицы памяти, замещаю- щей память программ. Он подключается к магистрали отлаживаемой систе- мы эмуляционной вилкой через розетку вместо микросхемы памяти (сече- ние 2 на рис. 6.4). Непосредственное управление магистралью осуществляет микропроцессорная БИС, рабочая программа и функциональные тесты размещаются в памяти программ эмулятора ПЗУ. 6.3.1. Одноплатные контроллеры (ЕС196, EV32, ЕС812) Это аппаратные платформы типовой конфигурации, ориентированные на решение собственных задач, но имеющие ресурсы для целей отладки. Наиболее простыми и дешевыми являются платы типа evaluation board и targed board. В комплекте с ними обычно поставляются демонстрационные версии систем программирования с ограничением, например, размера адре- суемой памяти пределом 2-4 Кбайт. Эти средства служат в основном для целей обучения и ознакомления пользователей с возможностями определен- ного семейства микропроцессорных БИС. На другом конце спектра лежат платы промышленных контроллеров на основе 32-разрядных микропроцес- соров, предназначенные для работы под управлением операционных систем реального времени. Такие платы управления входят в полный комплект аппаратных средств промышленной автоматики. Из комплекта при необхо-
ГЛАВА 6. ИНСТРУМЕНТАЛЬНЫЕ И УЧЕБНЫЕ СРВДСТВА 297 димости могут быть выбраны каркасы, объединительные платы, клавиатуры и мыши в защищенном исполнении, платы процессоров DSP и вво- да/вывода. Эти средства очень дороги, их применение целесообразно на промышленных объектах, когда стоимость всего технологического оборудо- вания значительно превышает стоимость электронной системы управления. К промежуточному уровню можно отнести одноплатные контроллеры на основе 8- и 16-разрядных микроконтроллеров. Такие контроллеры имеют типовую конфигурацию процессорного ядра и интерфейсов ввода/вывода с минимальными дополнениями в виде схем, поддерживающих отладку. Предварительно отлаженная аппаратная компонента сокращает трудозатра- ты пользователя, от которого требуется только разработать и отладить управляющую программу. Отладка производится с помощью инструмен- тального компьютера, к которому одноплатный контроллер обычно подсое- диняется через последовательный интерфейс. После завершения отладки одноплатный контроллер может использоваться в автономном режиме в ка- честве встроенного модуля управления прибором или установкой. Преиму- щества типовых одноплатных контроллеров перед промышленными прояв- ляются при необходимости иметь небольшую партию изделий, стоимость и энергопотребление которых существенно ограничены. При массовом произ- водстве на смену типовым приходят заказные контроллеры. В качестве примера средств этого класса рассмотрим систему проекти- рования для семейства MCS-96, которая включает одноплатный контроллер ЕС196Кх и интегрированный пакет программирования/отладки на языках Ассемблер или Паскаль-96. В режиме отладки система работает с инстру- ментальным персональным компьютером. Контроллер представляет собой отлаженную аппаратную платформу, разработчику остается только создать программное обеспечение (ПО) и за- грузить исполняемый код в память программ. После завершения процесса отладки контроллер способен самостоятельно управлять приборами и обо- рудованием. Его важной особенностью является тестопригодность - слу- жебный разъем, через который контроллер в режиме отладки работает с компьютером, позволяет проверить выполнение рабочей или специальной программы. Контроллер может выступать в роли тестирующего блока для всего изделия. Для этого нужно вернуться к режиму отладки и загрузить в контроллер программу функционального тестирования узлов системы управления и оборудования. Плата контроллера изображена на рис. 6.5. Она выполнена в виде на- бора функционально-топологических модулей, набор модулей следующий: • процессорный модуль, включающий БИС микроконтроллера со схемой рестарта и схемой обслуживания АЦП; • рабочая память; • модуль поддержки отладочного режима; • модуль общего управления;
298 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ последовательный порт пользователя со схемой согласования уровней; модуль индикации. Рис. 6.5. Одноплатный контроллер ЕС196Кх Процессорный модуль содержит микроконтроллер типа 8ХС196КВ/КС или KD (установленный в розетке), схему рестарта и схе- му обслуживания встроенного в микроконтроллер аналого-цифрового пре- образователя. Последняя включает элементы защиты и фильтрации для всех аналоговых входов и источник опорного напряжения. Рабочая память контроллера объемом до 64 Кбайт может настраи- ваться перемычками в 16-разрядную конфигурацию (до 32 Келов) или 8-разрядную конфигурацию (32 Кбайта плюс 16-разрядные слова до 6 Келов). В режиме отладки рабочая память реализуется в виде микросхем
ГЛАВА 6. ИНСТРУМЕНТАЛЬНЫЕ И УЧЕБНЫЕ СРЕДСТВА 299 ОЗУ на розетках. После завершения отладки память программ заменяется на запрограммированные БИС ПЗУ или ППЗУ. Модуль поддержки отладочного режима включает теневое ПЗУ и слу- жебный последовательный порт со схемой согласования уровней (ТТЛ - RS-232). Обслуживание последовательного порта осуществляется с исполь- зованием микросхемы 8250. С этим модулем связан программный модуль, входящий в управляющую программу инструментального компьютера ПЗУ. Модуль общего управления формирует сигналы управления, выполнен в виде микросхемы ПЛИС типа PAL22V10. Последовательный порт пользователя включает разъем и схему согла- сования уровней. Этот модуль дает возможность разработчику использовать внутренний последовательный порт микроконтроллера. Модуль индикации позволяет, при необходимости, визуально следать за выполнением рабочей или тестирующей программы. В целях наращивания системы управления с платы контроллера через разъем выведены демультиплексированные шины адреса и данных (разде- ление производится на плате с использованием регистров-защелок) и все линии специализированного ввода/вывода микроконтроллера (широтно- импульсного модулятора, линии скоростного ввода/вывода). Разработчик может свободно использовать все ресурсы микроконтрол- лера за исключением прерываний NMI и TRAP, которые задействованы для целей отладки. Поскольку контроллер ориентирован на практическое использование, его топология тщательно проработана с точки зрения уменьшения габаритов и удобства интеграции в приборы и системы. Четырехслойная печатная плата размером 130x130 мм обеспечивает устойчивую работу на частотах до 20 МГц. Общий потребляемый ток составляет 250-300 мА при частоте Fosc =12 МГц и зависит от того, работает блок индикации или нет. По- скольку рабочая компонента контроллера выполнена с использованием kMOS микросхем, потребляемая мощность в режиме целевого контроллера может быть дополнительно снижена за счет отсутствия в уже отлаженных изделиях служебной компоненты. В процессе отладки вся память реализуется в виде микросхем ОЗУ на розетках. После завершения отладки память программ заменяется на запро- граммированные отлаженным кодом БИС ПЗУ или ППЗУ. В настоящее время для работы с одноплатным контроллером доступны интегрированные системы программирования на языках Ассемблер и Пас- каль-96. Каждая система включает редактор текста, компилятор с языка высокого уровня или полноразмерный кросс-ассемблер, библиотеки периода выполнения, редактор связей, символический отладчик. Имеется контекст- ный Help. Вид экрана и главного меню похожи на интерфейс пользователя рассмотренной выше системы Паскаль-51. Отличие заключается в наборе аппаратных платформ, которыми эта система программирования способна
300 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ управлять. Кроме одноплатного контроллера ЕС196Кх, под управлением этих систем может работать плата evaluation board EV80C196 фирмы Intel. Пользователь имеет возможность не выходя из системы загружать свои программы в память контроллера, выполнять их по шагам, в прогоне, с ос- тановом по контрольным точкам. Поддерживается модульная технология программирования с раздельной трансляцией модулей. Отладка программ производится в исходном тексте, причем на каждом шаге отладки можно наблюдать за изменениями внутренних ресурсов как на логическом, так и на физическом уровне, а также модифицировать их. Подключаемые биб- лиотеки арифметики с плавающей запятой и библиотеки тригонометриче- ских функций плюс типизация данных на уровне окна Watch позволяют успешно работать с данными типа Integer и Real. Моделирование выполня- ется с использованием аппаратных средств одноплатного контроллера. Основным ограничением процесса отладки на средствах целевого кон- троллера является, как правило, изъятие прерывания с наиболее высоким приоритетом (NMI) из распоряжения пользователя. Устранить это ограни- чение можно при использовании более развитых средств управления, кото- рые применяются в схемных эмуляторах. Одноплатный контроллер EV32 с присоединяемым супервизором. В качестве кардинального решения задачи создания дешевого одноплатного контроллера, способного работать как часть системы проектирования- отладки, сотрудниками лаборатории «Микропроцессорные системы» МИ- ФИ предложено выделить из его структуры и реализовать в виде отдельной платы супервизор, обеспечивающий выполнение отладочных функций. При этом в структуру контроллера должен быть введен специальный отладоч- ный разъем, через который контроллер подключается к плате супервизора и всему комплексу инструментальных средств при разработке программного обеспечения. Реализовать это решение позволил опыт использования БИС програм- мируемой логики. С помощью этой элементной базы удалось разделить це- левые и отладочные функции и предоставить пользователю готовый целе- вой контроллер, к которому внешние средства отладки подключаются через специальный разъем. Такой подход делает возможным в сжатые сроки раз- работать недорогое изделие, поскольку создается и отлаживается только программное обеспечение системы управления, а серийная аппаратная платформа не имеет избыточности. Комплекс для разработки систем управления состоит из платы кон- троллера EV32_system, платы супервизора EV32_supervisor и интегриро- ванной системы программирования «ТурбоАссемблер» или «ТурбоПа- скаль», работающей в среде MS DOS инструментального компьютера. Ком- плекс предназначен для разработки и отладки систем управления на базе микроконтроллеров 8031/32/51FX. Плата контроллера EV32_system мо- жет быть использована при серийном производстве целевых систем.
ГЛАВА 6. ИНСТРУМЕНТАЛЬНЫЕ И УЧЕБНЫЕ СРЕДСТВА 301 Одноплатный контроллер (рис. 6.6) включает БИС микроконтроллера, память программ и данных (на розетках), блок синхронизации и контроля питания, дешифратор адреса внешних устройств, два разъема параллельного интерфейса для подключения внешних устройств, блок по- следовательного порта (микроконтроллера) с оптронной развязкой, отла- дочный разъем. Контроллер допускает установку до 48 Кбайт памяти программ и до 32 Кбайт памяти данных. В случае использования в качестве памяти программ ОЗУ (при отладке или для возможности перезагрузки) ее макси- мальный объем составит 32 Кбайт. Имеется возможность сохранения перезагружаемой программы и данных в памяти при выключении питания. Для контроля питания используется микросхема МАХ707. Дешифратор внешних устройств Микроконтроллер Отладочный разъем Отладочный разъем ПЗУ Монитора Теневое ОЗУ Разъем магистрали контроллера (шины адреса, данных, линии CS#) Разъем последова- тельного порта микроконтроллера Регистр-защелка младшего байта адреса (SSS BBS Разъем служебного последова- тельного порта Буфер шины данных ПЛИС супервизора mwTwvvv Рис. 6.6. Одноплатный контроллер и плата супервизора Разъем портов микро- контроллера SE иав BBS Дешифратор адреса внешних устройств формирует 8 сигналов CS# для устройств ввода-вывода, которые выведены на разъем магистрали контрол- лера и могут быть использованы по усмотрению пользователя. Кроме того,
302 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ на этот разъем выведены демультиплексированные шины адреса и данных. На разъем портов микроконтроллера подключены небуферизованные сиг- налы непосредственно с выводов БИС. Линии последовательного порта микроконтроллера через оптронную развязку выведены на разъем и всегда предоставлены в распоряжение пользователя. Плата контроллера EV32_system может работать в двух режимах: в со- ставе отладочного комплекса под управлением инструментального компью- тера и самостоятельно, как процессор системы управления. При работе в составе комплекса плата контроллера подключается гибким кабелем к плате супервизора, которая формирует сигналы управления на отладочном разъ- еме по командам от компьютера. При этом в качестве памяти программ ис- пользуется ОЗУ. После завершения отладки рабочей программы в розетку памяти программ устанавливается ПЗУ с «зашитым» кодом и контроллер может использоваться самостоятельно. На этапе автономного использования в системе управления одноплат- ный контроллер отключается от платы супервизора, при этом обеспечива- ются следующие технические характеристики: Основные характеристики одноплатного контроллера EV-32_system Микроконтроллер 8031/32/51FA Напряжение питания, В +5 Ток потребления, мА 70 Частота кварцевого резонатора, МГц 11,059 Температура эксплуатации, °C 0...+70 (-40...+80) Габариты, мм 116x93x20 Плата супервизора EV32_sup подключается к контроллеру через спе- циальный разъем и обеспечивает выполнение вместе с контроллером функ- ций отладки. Плата супервизора (рис. 6.6) содержит собственный последо- вательный интерфейс с оптронной развязкой для связи с инструментальным компьютером, ПЗУ с управляющей программой Монитор, ПЛИС типа CPLD с супервизором и теневое ОЗУ. Она позволяет произвести отладку рабочей программы на аппаратуре контроллера с использованием следую- щих режимов: • покомандное выполнение программы под управлением оператора; • автоматическое покомандное выполнение программы под управлением компьютера; • выполнение фрагмента программы в реальном времени до контрольной точки; • прогон рабочей программы до ее конца. Программа Монитор обеспечивает управление процессом отладки, ус- танавливает связь через один из последовательных портов инструменталь- ного компьютера с системой программирования-отладки. Монитор исполь-
ГЛАВА 6. ИНСТРУМЕНТАЛЬНЫЕ И УЧЕБНЫЕ СРЕДСТВА 303 зует прерывание INT1 микроконтроллера для обеспечения пошагового ре- жима и выхода из режима прогона в реальном времени. На плате имеется переключатель, позволяющий отдать прерывание INT1 в распоряжение раз- работчика, но при этом теряется возможность трассировки и остановки про- граммы (остается только возможность прогона в реальном времени без ос- тановки), что допустимо на окончательной стадии отладки. При использо- вании пошагового режима на начальных этапах отладки адреса 13h-15h контроллера должны быть свободны от программного кода. В остальном требования к рабочей программе не отличаются от традиционных, описан- ных в документации к поставляемой с платой системой программирования «ТурбоАссемблер-51». При самостоятельной работе контроллера ограниче- ний на использование адресного пространства не вводится (плата суперви- зора отключена). Одноплатная система сбора/предобработки информации ЕС812 с присоединяемым супервизором. На основе микроконвертера АВцС812 в лаборатории «Микропроцессорные системы» МИФИ создана одноплатная система сбора/ предобработки информации ЕС812, которая имеет: • 8 аналоговых входов, подключаемых к 12-разрядному АЦП; • два 12-разрядных ЦАП с повторителями на операционных усилителях; • 8-разрядное процессорное ядро MCS-51 с 4-6 цифровыми линиями вво- да/вывода (возможна плата-расширитель в виде мезонина, обеспечи- вающая до 32 цифровых линий); • Flash-память программ (8 Кбайт), загружаемая через последовательный интерфейс; • ОЗУ данных объемом 32-1024 Кбайт с возможностью хранения инфор- мации при батарейном питании; • последовательные интерфейсы UART, I2C, SPI; • стабилизатор напряжения питания, схему контроля питания и стороже- вой таймер; • отладочный разъем для подключения платы супервизора. Двухслойная плата размером 135*75 мм разработана с учетом требова- ний точности измерений сигналов на аналоговых входах. В частности, входные аналоговые цепи экранированы, линии питания и земли аналого- вой и цифровой частей развязаны фильтрами. Входные цепи аналоговых входов представляют собой RC-цепочки. На плате предусмотрена установка мезонина, на котором, при необходимости, могут располагаться цепи для масштабирования входных сигналов и организации дифференциальных входов. Плата выполнена с использованием элементов технологии поверх- ностного монтажа и демонстрирует современный подход к проектированию микропроцессорных контроллеров на основе функционально- топологических модулей и программных модулей.
304 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Важнейшим условием применения новых микропроцессорных средств является наличие средств отладки. Использование инструментальных средств MCS-51 для отладки систем на основе семейства ADpC не триви- ально из-за закрытого характера архитектуры современных микроконтрол- леров с внутренней flash-памятью программ и отсутствия эмуляционных кристаллов. Однако, если совместно с таким микроконтроллером применя- ется внешняя память данных, то наличие шин адреса и данных позволяет присоединить внешний супервизор, аппаратно поддерживающий операции отладки. Система отладки для ЕС812, включает плату супервизора нового типа и интегрированную систему программирования ТурбоАссемблер-812. Для подключения системы отладки на плате ЕС812 имеется отладочный разъем. После отладки рабочая программа загружается во внутреннюю flash- память микроконвертора ADpC812 через разъем порта RS232, который по- сле этого может работать в режиме обычного последовательного интерфей- са. При автономной работе информационно-управляющей системы данные, принятые по входным аналоговым и цифровым линиям, а также сформиро- ванная внутри микроконвертора информация (например, временные отсче- ты), заносятся во внешнюю память данных. Размер этой памяти на рас- сматриваемой плате может быть от 32 Кбайт до 1 Мбайта, в зависимости от типа установленных микросхем. В процессе измерений или после его за- вершения эта информация может быть передана в инструментальный ком- пьютер через интерфейсы RS232, I2C, SPI. На основе этих интерфейсов из нескольких одноплатных систем может быть создана распределенная ин- формационно-управляющая микроконтроллерная сеть. 6.3.2. Эмулятор ПЗУ/логический анализатор на основе FPGA До настоящего времени в качестве эмуляторов ПЗУ предлагались про- стые устройства, обеспечивающие только загрузку памяти и переключение системы в рабочий режим. Такие устройства не реализуют всех функций эмуляции, являются по существу имитаторами с примитивным управлением и не представляют особого интереса с точки зрения отладки микропроцес- сорных систем. Новый бум в области микропроцессоров и микроконтроллеров, связан- ный с качественно новыми возможностями микроэлектроники, привел к появлению в последнее время большого количества разнообразных микро- процессорных БИС. Они принадлежат к различным архитектурам и в каж- дом семействе используется значительная номенклатура корпусов. Быстро создать схемные эмуляторы для всех микропроцессорных БИС невозмож- но, поэтому возродился интерес к эмуляторам ПЗУ.
ГЛАВА 6. ИНСТРУМЕНТАЛЬНЫЕ И УЧЕБНЫЕ СРЕДСТВА 305 Параллельно с микропроцессорами бурно развивается направление БИС программируемой логики. Использование БИС типа FPGA позволяет реализовать эмулятор ПЗУ с настройкой функции замещения под широкую гамму типов микросхем памяти, с реализацией функции наблюдения в виде памяти трасс и функции управления работой целевого микропроцессора при наличии у него сигналов типа READY. В нашей лаборатории реализован эмулятор ПЗУ «RET» (ROM- Emulator-Tracer) на основе FPGA типа EPF8282 фирмы Altera. Эмулятор представляет собой небольшой аппаратный модуль (размером 70*90*20) в корпусе фирмы «Каскад», подключаемый к инструментальному компьютеру через интерфейс Centronics (рис. 6.7). Рис. 6.7. Плата эмулятора ПЗУ «RET» Управляющая программа обеспечивает работу с файловой системой ин- струментального компьютера, загрузку файла с кодом в эмулятор и кон- троль загрузки, чтение и просмотр в двоичном коде снятой трассы выпол- нения отлаживаемой программы. В качестве эмулирующей памяти исполь- зовано статическое ОЗУ объемом 64 Кбайта (возможно 128 Кбайт) с вре-
306 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ менем доступа 15 нс. Предусмотрено разрядное наращивание системы от- ладки посредством параллельного соединения двух эмуляторов, что обеспе- чивает эмуляцию 16-разрядной памяти. Основные характеристики эмулятора RET: • объем эмулируемой памяти - 64 (128) Кбайт; • время выборки адреса - 35 нс; • потребляемый ток - не более 25 мА (1 мА в режиме ожидания); • эмулируемые ПЗУ - К573РФ2 - 8, К556РТ5 - 7/16-18/161, 2716/32 - 512/010, 28С64/256, RAM - 2Кх8-128Кх8; • объем трассировочной памяти - 32Кх8 в режиме эмуляции ПЗУ, 64Кх8 в режиме логического анализатора. Имеется три возможных варианта использования прибора: 1. Эмуляция памяти программ с трассировкой выполнения програм- мы. Преимуществом использования программируемой логики типа FPGA является возможность замещения широкой номенклатуры БИС ПЗУ с точ- ки зрения комбинаций (топологии) выводов адреса, данных, управления. Ограничением является местоположение вывода «Земля» на разъеме эму- лятора ПЗУ и объем эмулирующего ОЗУ. Эмулятор RET, кроме стандарт- ного набора БИС с рекомендованной JEDEC топологией выводов (К573РФхх и т.п.), поддерживает также микросхемы ПЗУ с плавкими пе- ремычками серий К556, К1623, К541, К1608. Имеется возможность эмуля- ции и памяти данных (статические ОЗУ с 8-разрядной организацией). В этом режиме, если есть запас по объему эмулирующей памяти, она может быть поделена на две матрицы по 32 Кбайта (64 Кбайта - опция). Одна из матриц служит для замещения памяти целевой системы, а другая используется как память трасс . Поскольку адреса памяти (по которым производилось обращение) являются 16-разрядной информацией, память трасс имеет организацию 16К*16. Трасса просматривается в двоичном коде. Имеется два режима трасси- ровки: • от начала программы до заполнения трассировочной памяти • постоянная трассировка с перезаписью информации Условием начала трассировки является переход сигнала ОЕ в пассив- ное состояние. Игнорирование сигнала CS# (задается программно) позво- ляет трассировать обращения к другим (не эмулируемым) матрицам памяти в системе. Для реализации функции управления отлаживаемой системой преду- смотрен. специальный разъем, позволяющий перехватить два сигнала управления магистрали системы. Условиями полной эмуляции являются:
ГЛАВА 6. ИНСТРУМЕНТАЛЬНЫЕ И УЧЕБНЫЕ СРЕДСТВА 307 • подключение указанных линий к сигналам типа ALE и READY отлажи- ваемой системы; • память программ системы должна полностью замещаться эмулятором ПЗУ. 2. Режим логического анализатора. Прибор способен работать в ре- жиме 8-разрядного анализатора состояний с глубиной рабочей памяти 64 Кбайт. Частота синхронизации (до Fmax - 30 МГц) подается при этом от исследуемого устройства. Разрабатывается вариант 30-разрядного аналузд- тора с глубиной памяти 16 Келов (Fmax = 8 МГц). При отладке большинст- ва типов микропроцессорных систем этого вполне достаточно, поскольку частота обращений к памяти и устройствам ввода/вывода определяется временем магистрального цикла и составляет не более 4-8 МГц. Запуск и останов записи в буферную память производится по внешнему событию. Таким событием может являться: • появление заданного кода на шине данных; • появление определенного кода на двух линиях внешних квалификато- ров, (возможно программирование условия события на перепады «О» - «1» или «1» - «О»); • переполнение буферной памяти. 3. Режим Evaluation Kit для ПЛИС серий ЕРМ 7000 и 8000. Разработчики, использующие программируемую логику типа ЕРМ 7000 и EPF8000 фирмы Altera могут быстро провести натурные испытания уст- ройства управления, загрузив файл, созданный при помощи системы MAX+PlusII в БИС программируемой логики прибора RET. Разрабатывае- мое устройство (или фрагмент) должно при этом иметь не более 30 линий ввода/вывода. К целевой системе эмулятор RET подключается с помощью сменных эмуляционных вилок на 28 (32, 24 ...) контактов. В комплект входит 28-выводная вилка на гибком кабеле и 32-выводная вилка для непосредственного соединения эмулятора и целевой платы. Питание эмулятора может осуществляться от исследуемой платы, от внешнего источника напряжением +5 В (50 мА), или инструментального компьютера через разъем GAME. 6.3.3. Схемные эмуляторы Это в настоящее время наиболее совершенное средство комплексной отладки аппаратного и программного обеспечения микропроцессорных сис- тем в реальном времени. Схемный эмулятор подключается к целевой плате гибким кабелем с эмуляционной вилкой, которая вставляется в розетку вместо микропроцессора или микроконтроллера. Другим кабелем он под- ключается к инструментальной ЭВМ, на которой работает управляющая программа. Встречаются эмуляторы, выполненные в виде плат расширения
308 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ инструментальной персональной ЭВМ. Схемный эмулятор управляет вы- полнением рабочей программы и наблюдает за состоянием отлаживаемой системы через магистраль. Поэтому перед его использованием должен быть выполнен этап автономной отладки аппаратуры и магистраль системы должна функционировать правильно. Специализированные схемные эмуляторы. В лаборатории «Микро- процессорные системы» МИФИ в конце 80-х, начале 90-х годов были раз- работаны схемные эмуляторы для микроконтроллеров семейств Intel MCS-51 и MCS-48, микропроцессора 8085. Каждый из них представлял собой самостоятельный прибор, предназначенный для отладки систем на основе определенной микропроцессорной БИС. Структура этих эмуляторов представляет интерес и в настоящее время, поскольку воплощает все функ- ции приборов этого типа в развернутом виде. Рассмотрим структуру специализированного схемного эмулятора МЭ-31 (рис. 6.9). Основой схемного эмулятора является имитирующий процессор, замещающий целевой микроконтроллер. Имитирующий процессор может быть реализован различными способами, в том числе на основе микропро- граммируемой структуры и посредством реализации функций целевого кон- троллера на основе БИС программируемой логики. Для микропроцессоров и микроконтроллеров без внутренней памяти программ в качестве имити- рующего процессора можно использовать микропроцессорную БИС, анало- гичную целевой, но установленную на плате эмулятора. Рис. 6.9. Структура специализированных эмуляторов МЭ-31, МЭ-51, МЭ-85 Имитирующий процессор для микроконтроллеров с внутренней памя- тью программ должен иметь дополнительные порты ввода/вывода, позво-
ГЛАВА 6. ИНСТРУМЕНТАЛЬНЫЕ И УЧЕБНЫЕ СРЕДСТВА 309 ляющие выполнять функции управления и наблюдения в реальном времени без искажения процесса выполнения рабочей программы. Поэтому для эму- ляции микроконтроллеров с внутренней памятью типа 8051/8751 в эмуля- торе МЭ-51 в качестве имитирующего процессора использованы 6-портовые БИС с архитектурой MCS-51. Схемный эмулятор, кроме процессора, замещает память программ и данных. Для этого служит эмуляционная память эмулятора. В целях от- ладки она разбита на сегменты, карта памяти позволяет процессору обра- щаться либо к ячейкам эмуляционной памяти, либо к ячейкам памяти, раз- мещенной на целевой плате. В рассматриваемых эмуляторах эмуляционная память программ девятиразрядная. Старший разряд обслуживает механизм контрольных точек, в которых происходит останов процессора при выпол- нении программы в прогоне. Буфером, в который в реальном времени записывается информация о последовательности выполненных команд рабочей программы, является па- мять трасс. Она организована по принципу кольца, т.е. при превышении объема информации младшие ячейки переписываются. Ее объем в описы- ваемых приборах составляет 2047 ячеек. Функции управления и наблюдения в реальном времени выполняет в рассматриваемых эмуляторах блок супервизора. Он отслеживает поток данных по магистрали, анализирует формат выбираемых команд и осуще- ствляет контекстное переключение с рабочей программы на служебную. Слежение за выборкой кода операции и формирование управляющих сиг- налов осуществляется с использованием микропрограммного автомата. При таком подходе микропрограммируемый супервизор существует и работает параллельно процессорно-зависимой части схемного эмулятора. Для передачи информации по кабелю между блоком эмулятора и эму- ляционной вилкой необходимо увеличить нагрузочную способность портов микроконтроллера. Для этого используется схема буферизации линий вво- да/вывода микроконтроллера. При останове операции чтения/записи инструментальным компьюте- ром ресурсов эмулятора: регистров микроконтроллера, ячеек эмуляционной памяти, памяти трасс (только чтение)—выполняются через интерфейс связи с инструментальным компьютером. В слот расширения компьютера встав- ляется адаптер шины ISA, определяющий диапазон адресов эмулятора в адресном пространстве компьютера и обеспечивающий параллельный обмен между блоком эмулятора и компьютером по кабелю значительной длины. Использование параллельного обмена позволяет сократить время обновле- ния информации на экране и высвобождает штатные порты компьютера. Все специализированные схемные эмуляторы в лаборатории «Микро- процессорные системы» создавались на основе функционально-модульного подхода как на аппаратном, так и на программном уровнях. Это позволило далее перейти к интеграции процессорно-независимой части эмуляторов на
310 системы НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ логики универсальной платформе, а изменяющуюся часть реализовать в виде набо- ра плат специализации. Схемные эмуляторы на основе универсальной платформы. Основным преимуществом такого решения является значительное снижение финансо- вых затрат пользователя при переходе с одного типа микропроцессора или микроконтроллера на другой. Если при покупке каждого специализирован- ного эмулятора приходится оплачивать весь аппаратно-программный ком- плекс, то имея эмулятор на универсальной платформе можно ограничиться приобретением только плат специализации и ПО. Основой структуры эмуляторов этого типа является модуль супервизо- ра, реализованный с использованием БИС программируемой логики типа FPGA (рис. 6.10). Высокое быстродействие этой элементной базы позволи- ло поместить супервизор в центр структуры универсального эмулятора и коммутировать через него потоки информации между остальными модуля- ми, а также формировать системные управляющие сигналы. Рис. 6.10. Обобщенная структура универсального эмулятора на основе FPGA Возможность изменять функции супервизора на основе FPGA загруз- кой файла конфигурации из инструментального компьютера привело к идее объединить на универсальной платформе процессорно-независимую часть эмуляторов с перестраиваемым супервизором, а изменяющуюся часть реа- лизовать в виде набора плат специализации. При этом сам супервизор в зависимости от архитектуры эмулируемой микропроцессорной БИС может
ГЛАВА 6. ИНСТРУМЕНТАЛЬНЫЕ И УЧЕБНЫЕ СРВДСТВА 311 состоять только из функционального ядра, связанного с управлением мат- рицами служебной памяти, либо иметь еще компоненту расширения, вы- полняющую дополнительные функции при эмуляции БИС со сложными протоколами обмена (в частности, анализ кода операции в эмуляторах се- мейства MCS-51). Структурные схемы эмуляторов на основе универсальной платформы с супервизором на FPGA приведены на рис. 6.11. В настоящее время сущест- вует два варианта реализации эмуляторов: для микропроцессоров (на рис. 6.11а приведена структура эмулятора для 8085) и для микроконтрол- леров семейства MCS-51 (на рис. 6.116 приведена структура эмулятора для 8051). Новые эмуляторы подключаются к инструментальному компьютеру че- рез адаптер шины ISA или порт LPT. Универсальная платформа содержит БИС программируемой логики типа FPGA с ядром супервизора (осуществ- ляет управление блоками памяти), эмуляционную память (может конфигу- рироваться в матрицы 128К*8 или 64К*16), память контрольных точек и трасс (матрица 8К*24), а также схему интерфейса с инструментальным компьютером. В блоке эмулятора к платформе через два разъема всегда присоединяется внутренняя плата специализации. В эмуляторе микропро- цессора 8085 на ней установлен имитирующий микропроцессор и синхроге- нератор, а в эмуляторах микроконтроллеров семейства MCS-51 - БИС FPGA расширения супервизора с дополнительной матрицей служебной па- мяти и буферы внутренних шин данных/адреса эмулятора. У всех эмуляторов имеется внешняя плата специализации с эмуляцион- ной вилкой, соединенная с основным блоком гибким кабелем. В эмуляторе 8085 на ней размещается только синхрогенератор, работающий с кварцем целевой системы. В эмуляторах MCS-51 на внешней плате находится БИС имитирующего процессора, синхрогенератор и буферы системных шин. В настоящее время имеется три типа внешних плат для эмуляции микрокон- троллеров с архитектурой MCS-51: POD31/32 для микроконтроллеров с внешней памятью программ; POD51/52 для микроконтроллеров Intel с внутренней памятью программ; POD552 для микроконтроллеров фирмы Philips. На блоке эмулятора установлен разъем типа DB-15, через который в память трасс может синхронно с состояниями имитирующего процессора записываться информация о состоянии восьми внешних линий (уровни кМОП или ТТЛ). На этом же разъеме имеется вход, активный низкий уро- вень на котором может остановить прогон рабочей программы. В качестве программ управления эмуляторами может использоваться три типа систем программирования: оболочка, объединяющая внешние ре- дактор текста, кросс-ассемблер, редактор связей и модель; интегрированная система ТурбоАссемблер (с библиотеками); интегрированная система Тур- боПаскаль (с библиотеками).
312 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ а) б) Рис. 6.11. Структурные варианты схемных эмуляторов на основе универсальной платформы: а) эмулятор микропроцессора 8085, б) эмулятор микроконтроллера 8051
ГЛАВА 6. ИНСТРУМЕНТАЛЬНЫЕ И УЧЕБНЫЕ СРЕДСТВА 313 Стоимость перехода на новый тип микропроцессора или микрокон- троллера. Оценку стоимости инструментальных средств при переходе на новый тип микропроцессора или микроконтроллера проведем при следую- щих допущениях: • примем значения стоимости специализированных схемных эмуляторов, эмулятора микропроцессора 8085 на универсальной платформе, а также плат специализации для построения на универсальной платформе эму- ляторов Intel 8051 и Philips 8X552, указанные в таблице: Аппаратура Относительная стоимость 1. Специализированный эмулятор Intel 8051 1.0 2. Специализированный эмулятор Philips 8X552 1.0 3. Специализированный эмулятор Intel 8085 0,8 4. Эмулятор на универсальной платформе Intel 8085 0,9 5. Платы специализации для эмулятора Intel 8051 0,5 6. Внешняя плата специализации для Philips 8X552 0,2 • допустим, что на первом этапе был приобретен эмулятор на универ- сальной платформе для микропроцессора Intel 8085 (К1821ВМ85). То- гда для перехода на микроконтроллер Intel 8051 необходимо приобрести внутреннюю плату специализации для MCS-51 и внешнюю плату для Intel 8051 (POD51), а при последующем переходе на микроконтроллер Philips 8X552 - только внешнюю плату (POD552). Стоимость перехода на новый тип микроконтроллера при указанных Рис. 6.12. Стоимость перехода на новый тип микроконтроллера: при использовании специализированных эмуляторов серии МЭ (1); при использовании эмуляторов серии К на универсальной платформе (2)
314 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Из рис. 6.12 видно, что при использовании в практике проектирования микропроцессорных систем трех распространенных в нашей стране типов 8-разрядных микропроцессоров и микроконтроллеров относительная стои- мость комплекта эмуляторов на универсальной платформе ниже комплекта специализированных эмуляторов в 1,75 раза. 6.4. Средства программирования микросхем энергонезависимой памяти, микроконтроллеров и ПЛИС В настоящее время существуют два метода программирования микро- схем энергонезависимой памяти, микроконтроллеров и ПЛИС: • внутрисистемное программирование с использованием встроенных по- следовательных интерфейсов SPI, I2C, JTAG; • параллельная загрузка с помощью программатора. Внутрисистемное программирование. Этот метод программирования в последнее время становится все более популярным. Причина заключается во все более широком распространении flash-памяти и микросхем с планар- ными корпусами типа SOIC и QFP, которые программируются после пайки выводов. Механизм внутрисистемного программирования в совокупности с наличием матрицы репрограммируемой памяти существенно повышает эф- фективность процесса отладки и является единственной возможностью на- ращивания характеристик изделия (upgrade) без перепаивания микрокон- троллера или ПЛИС. Наибольшую полно преимущества внутрисистемного программирования реализованы в микроконтроллерах Atmegal63 фирмы Atmel, где имеется возможность создания загрузочного драйвера пользова- телем. Это открывает широкие возможности для методов отладки при уда- ленном доступе по сети, а также для использования криптографических методов защиты информации во внутренней памяти программ. Для внутрисистемного программирования через интерфейс RS232C ис- пользуется, как правило, программа-монитор (firmware), встроенная в мик- роконтроллер. Примерами являются БИС AduC812 фирмы Analog Devices, T89C51RD2 фирмы Temic, P89C51RD+ фирмы Philips. При этом вход в режим программирования производится при наличии специальной комби- нации сигналов на входах (PSEN=0) в момент перехода сигнала сброса (Reset) в пассивное состояние. Внутрисистемное программирование через интерфейс SPI характерно для всех микроконтроллеров AVR и микроконтроллеров серии AT90Sxx фирмы Atmel. Загрузка памяти производится при активном сигнале Reset. Отличительной особенностью перечисленных кристаллов является то, что стирание и программирование памяти производится при номинальном
ГЛАВА 6. ИНСТРУМЕНТАЛЬНЫЕ И УЧЕБНЫЕ СРВДСТВА 315 напряжении питания (+5 В), так как преобразователь напряжения +5 В => Vpp (необходимый для записи информации в матрицу памяти) размещен на кристалле микроконтроллера. Сравним: для программирова- ния микроконтроллера Philips Р89С558, разработанного более 5 лет назад, требуется внешнее напряжение программирования Vpp = +12 В. Упомяну- тые микроконтроллеры кроме режима внутрисистемного программирования поддерживают также параллельное программирование, ориентированное на применение программатора. Типовая схема организации внутрисистемной загрузки flash-памяти программ микроконвертера ADpC812 приведена на рис. 6.13. импульс сброса уровней Рис. 6.13. Внутрисистемная загрузка микроконвертера ADp812 Интерфейс типа 12С используется для программирования микрокон- троллеров PIC фирмы Microchip. При этом для большинства типов микро- схем требуется внешнее напряжение Vpp = +13 В, а параллельный режим отсутствует. Общая тенденция внедрения функций тестирования и отладки в серий- ные БИС, в том числе микроконтроллеры и ПЛИС, стимулировала разра- ботку стандартного интерфейса JTAG (joint Test Access Group). Данный стандарт обеспечивает выполнение функций загрузки памяти и отладки программы в реальном времени в некоторых миткроконтроллерах, напри- мер Texas Instruments MSP430. Наиболее широко интерфейс JTAG исполь- зуется для загрузки ПЛИС с энергонезависимым хранением конфигурации (Altera, Xilinx, Lattice и др.). В результате появляется очевидный выиг- рыш для пользователя: загрузка конфигурации в различные ПЛИС одной фирмы производится через один загрузочный кабель, впрочем, у каждой фирмы кабель уникальный. «Размывать границы» начала фирма Atmel, выпустив ПЛИС серии ATF1500, совместимые по выводам с ПЛИС
316 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ МАХ7000 фирмы Altera. Вместе с тем, программа загрузки для ATF1500 может работать как с собственным кабелем Atmel, так и с кабелем типа ByteBlaster, специфицированным фирмой Altera. Типовая схема организа- ции внутрисистемной загрузки конфигурации ПЛИС серий MAX7000S, ATF1500 приведена на рис. 6.14. Единственным ограничением применения внутрисистемной загрузки ПЛИС является необходимость резервирования линий интерфейса JTAG. Это значит, что порты ПЛИС с предопределен- ными функциями JTAG (TMS, TDI, TDO, SCK) не могут быть использо- ваны в проекте пользователя, в то время, как использование параллельной загрузки позволяет программировать их как универсальные порты вво- да/ вывода. ByteBluster Рис. 6.14. Внутрисистемная загрузка ПЛИС Чтобы поддержать унификацию загрузки различных типов микросхем в лаборатории «Микропроцессорные системы» принято использовать кабель ByteBlaster для внутрисистемного программирования микроконтроллеров с интерфейсом, аналогичным SPL Например, программные пакеты «Турбо- Ассемблер AVR», «ТурбоАссемблер 51/52» поддерживают загрузку мик- роконтроллеров фирмы Atmel (AVR, AT89Sxx) через ByteBlaster. Принци- пиальная схема кабеля приведена рис. 6.15. Микросхемы EEPROM с последовательным доступом также можно программировать внутрисистемно. Для этого принципиальная схема целево- го устройства должна обеспечивать пассивное состояние интерфейса в мо- мент загрузки, например, удерживать ведущий микроконтроллер в состоя- нии сброса. К таким микросхемам можно отнести серии 24Схх, 85Схх
ГЛАВА 6. ИНСТРУМЕНТАЛЬНЫЕ И УЧЕБНЫЕ СРЕДСТВА 317 (I2C), 25Схх (SPI), 93Схх (Microwire, эмулируется с помощью SPI), а также АТ17Схх - конфигурационные ПЗУ для ПЛИС с энергозависимым хранением информации. Рис. 6.15. Схема устройства типа ByteBlasterMV Все перечисленные серии микросхем программируются при номиналь- ном напряжении питания/программирования (+5 В). Программаторы. В настоящее время в продаже имеется несколько ти- пов программаторов, имеющих относительно невысокую цену. Каковы кри- терии выбора программатора, который может использоваться при разработ- ке, изготовлении и обслуживании промышленной аппаратуры?
318 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Современные профессиональные программаторы должны, по нашему мнению, отвечать следующим требованиям: • программировать в соответствии с требованиями ТУ возможно более широкую номенклатуру БИС, в том числе в корпусах различных типов; • обеспечивать наращивание номенклатуры программируемых БИС без существенного увеличения аппаратных средств и стоимости прибора; • работать с входными файлами стандартных типов (.hex, .bin, .jed и т.д.); • верифицировать запрограммированную микросхему на соответствие ко- да входному файлу, в том числе при изменении напряжения питания микросхемы в рабочем диапазоне; • иметь удобный интерфейс управляющей программы; • иметь высококачественные розетки под корпуса различных типов; Важнейшими являются требования универсальности и соблюдения ре- жимов программирования, указанных в документации на микросхемы. Со- временные разработчики-профессионалы использует всю гамму программи- руемых БИС для достижения максимально высоких характеристик изде- лия. Коллектив действует в условиях сильной конкуренции, жестких требо- ваний по срокам разработки и стоимости изделия. Складывается набор функционально-топологических и программных модулей, а конкретный контроллер быстро «собирается» с использованием программируемых БИС. Следует заметить, что универсальность в данном случае подразумевает про- граммирование полного набора важнейших типов программируемых микро- схем, а не длинный перечень однотипных изделий, выпускаемых разными производителями (и взятый из списка аналогов). В набор важнейших типов в настоящее время входят: • БИС микроконтроллеров с репрограммируемой и flash-памятью; • микросхемы памяти с ультрафиолетовым стиранием; • микросхемы памяти с электрическим репрограммированием; • микросхемы flash-памяти; • микросхемы памяти, программируемые пережиганием перемычек; • БИС програмируемой логики - ПЛИС Что касается соблюдения режимов программирования, рекомендован- ных изготовителями микросхем, то анализ схемотехники ряда программа- торов показывает, что в них отсутствует источник напряжения +6,25 В, не- обходимый для программирования популярных типов БИС памяти (напри- мер, серии 27Сххх). Кроме того, отсутствие цифроаналогового преобразо- вателя в структуре программаторов не позволяет устанавливать напряжение программирования с точностью 0,25 В, а это требование специально огова- ривается в документации на микросхемы. Таким образом можно заключить, что многие программаторы, имеющиеся в продаже, не обеспечивают соблю-
ГЛАВА 6. ИНСТРУМЕНТАЛЬНЫЕ И УЧЕБНЫЕ СРЕДСТВА 319 дение режимов программирования, указанных в документации на микро- схемы. Возможность наращивания функций уже купленного прибора всегда полезна, но для программаторов это жизненно необходимо, поскольку имеющий место бум микроэлектроники приводит к непрерывной замене версий уже существующих типов микросхем и появлению новых семейств. Первые два из перечисленных выше условий приводят к необходимости формирования различных диаграмм программирования и коммутации сиг- налов на различные выводы корпусов. Эта задача решается в общем виде при создании программатора на основе микросхем цифро-аналоговых пре- образователей, таймеров и программируемых сильноточных коммутаторов. На первый взгляд это увеличивает его стоимость, но на самом деле эффек- тивная стоимость (в расчете на каждое семейство программируемых микро- схем) универсальных программаторов ниже, чем специализированных. По- этому специализированные программаторы применяются в основном при параллельном тиражировании в условиях серийного производства. Сложной является задача создания коммутирующего узла для работы с корпусами различных типов. Обычно она решается созданием переходных устройств типа DIP - PLCC, DIP - QFP и т.д. Фирма «Data I/O» в старших моделях программаторов применила универсальный коммутирую- щий узел на основе управляемой токопроводящей панели в комбинации с универсальной рамкой, осуществляющей позиционирование корпуса. Требует уточнения критерий «удобство интерфейса пользователя» по отношению к управляющей программе программатора. Многолетний опыт показывает, что разработчика, работающего с прибором ежедневно, раз- дражает обилие несистематизированной информации, помещенной в тесных (из-за полос прокрутки и панелей управления) окнах. Основным требова- нием к интерфейсу является тщательная методическая проработка отобра- жаемой информации, уменьшение уровней вложенности меню. С другой стороны, важную роль играет наличие в документации информации об осо- бенностях программирования микросхем различных серий. Структура современных программаторов вполне определилась. Боль- шинство из них реализуется либо в виде периферийного устройства персо- нального компьютера, подключаемого через один из внешних интерфейс- ных разъемов (RS-232, Centronix), либо в виде платы расширения, разме- щаемой внутри компьютера, с выносом коммутирующего узла посредством гибкого кабеля. Интерфейс с пользователем, загрузку рабочего файла, конфигурацию аппаратных средств программатора выполняет управляющая программа, функционирующая в среде операционной системы инструмен- тального компьютера. В качестве примера реализации функций универсального программато- ра рассмотрим прибор LabTools-48 фирмы Advantech. Он использует в ка- честве инструментального компьютер типа PC, к которому подсоединяется
320 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ через порт Centronix. Прибор позволяет программировать более 1200 раз- новидностей микросхем всех основных типов. Конфигурацию аппаратных средств выполняет управляющая программа, ее текущая версия доступна через BBS и может быть самостоятельно установлена пользователем. Аппа- ратура программатора создана на основе четырех микросхем и универсаль- ных программируемых MOSFET коммутаторов. Это позволяет подать на любой вывод программируемой микросхемы одно из четырех указанных напряжений с 8-разрядным разрешением, либо логические уровни ТТЛ «0»/«1»/«highZ», либо синхросигнал. В структуру программатора вклю- чены микропроцессор и большая матрица буферной памяти. Они дают воз- можность быстро программировать микросхемы памяти большого размера (8 Мбит EPROM за 100 секунд) и сделать скорость программирования сла- бо зависящей от производительности инструментального компьютера. Про- грамматор способен выполнять верификацию запрограммированной микро- схемы при напряжениях питания 5 В, 5 В ± 5%, 5 В ± 10%. Все мик- росхемы в DIP корпусах вставляются в единственную универсальная 48-контактную розетку. Коммутация копусов типа PLCC, SOP, TSOP, QFP и SDIP осуществляется с использованием переходных узлов (стоимостью $100-200 за каждый). Управляющая программа способна функционировать в среде MS DOS, а также под Windows в режиме эмуляции DOS. Читают- ся входные файлы следующих типов: JEDEC, POF, Binary, Intel HEX, Intel EXT HEX, Motorola S, HP64000ABS. Платой за универсальность яв- ляется довольно высокая для отечественного рынка цена ($1250 в базовом варианте без переходных узлов). Программатор KROM (рис. 6.13), разработанный в лаборатории «Мик- ропроцессорные системы» МИФИ, сочетает качества универсального профессионального прибора с приемлемой ценой. Компромисс достигнут за счет структурных решений, все перечислен- ные выше важнейшие требования выполняются. Временные диаграммы программирования формируются с использованием трех микросхем ЦАП* Кроме возможности программировать широкую номенклатуру микросхем памяти и ПЛИС, это дало возможность реализовать специальный режим программирования (Special), в котором напряжение программирования за- дается с клавиатуры управляющего компьютера с шагом 0,25 В. Вместо дорогостоящих программируемых коммутаторов использована коммутация с использованием пассивных катриджей в виде небольших сменных печатных плат. На основе предварительного анализа были выде- лены группы программируемых микросхем, имеющих аналогичные функ- ции выводов. Для каждой группы разработан свой катридж, осуществляю- щий коммутацию исходного набора сигналов программирования на выводы универсальной розетки. Конструктивно программатор состоит из двух частей: платы ЦАП, вставляемой в слот инструментального компьютера, и двух плат силовых
ГЛАВА 6. ИНСТРУМЕНТАЛЬНЫЕ И УЧЕБНЫЕ СРЕДСТВА 321 ключей, заключенных в типовой корпус фирмы «Вор1а». На корпусе уста- новлена универсальная розетка, в которую устанавливаются все програм- мируемые микросхемы в DIP корпусах. Плата расширения и выносной блок связаны кабелем, позволяющим осуществлять параллельный обмен, что весьма важно при больших объемах программируемых данных и кон- трольной информации. Надежность программатора обеспечивается специ- альными схемами защиты, внутренним преобразователем напряжения, вы- сококачественной импортной розеткой (нулевое усилие, рычаг зажима, по- золоченные контакты). Рис. 6.16 Универсальный профессиональный программатор KROM Программатор KROM в настоящее время обеспечивает программирова- ние следующих типов микросхем: • микроконтроллеры Intel 8748/49, 87С51-87С58; 87C51Fx; Dallas DS87C520; Atmel AT89C51-55, AT89C1051-4051; AT89S8252/S53; AT90Sxx; PIC16Cxx, PIC16Fxx; Motorola MC68HC705P9/P6, 87C196Kx; Z86xx; K1816BE48.49;
322 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ • микросхемы с ультрафиолетовым стиранием 2716-27040; К573РФ2- 6,8,10; КС1626РФ1; • микросхемы с электрическим репрограммированием 28С04-28С040; 24Схх; 25Схх; 85Схх; ЭЗСхх; К558РР2,3; К1801РР1; АТ17Схх; • flash-память 28F256-28F040; 29F512-29F040; 29С256-040; 29ЕЕ512-020; 49F010-040; 49F001-002; • память, программируемая пережиганием перемычек 556РТ4-18, РТ161; 1623РТ1,2; К541РТ2; К155РЕЗ; N82Sxx; N74Sxx; • ПЛИС 556РТ1/2, РАЫбхх; ATF16V8/20V8/22V10; AT22V10; ATV750; PALCE16V8/20V8, Этот список постоянно расширяется. Кроме того, имеется возможность тестировать некоторые типы 8-разрядных микросхем ОЗУ. Удобство рабо- ты с программатором обеспечивают следующие сервисные функции: • редактирование буфера данных, в том числе заполнение буфера кон- стантой, маскирование информации в буфере (функции AND, OR, XOR); • перестановка столбцов в массиве; • подсчет контрольной суммы содержимого буфера или ПЗУ; • верификация/просмотр содержимого ПЗУ; • представление функций выходов ПЗУ в псевдографической форме; • сравнение содержимого буфера и ПЗУ; • анализ возможности допрограммирования пережигаемого ПЗУ; • чтение/запись файлов в форматах HEX, BIN, DMP, JED, S19; • программный интерфейс с пакетом проектирования ABEL; • возможность контроля ПЗУ при напряжении питания 4,5...5,5В. Программатор работает под управлением программы, функционирую- щей в среде MS DOS. Управление построено на основе меню команд, каж- дой позиции которого соответствует свой экран. Меню включает следующие команды: Туре - выбор типа ПЗУ; Disk - чтение и запись файлов пользователя; Buffer - просмотр и редактирование буфера данных; Verify - верификация/просмотр содержимого ПЗУ; Prog - программирование ПЗУ/тестирование ОЗУ; Compare - сравнение содержимого буфера и ПЗУ; Analysis - анализ возможности допрограммирования ПЗУ; Special - специальные режимы и установки. Командой Туре пользователь обычно начинает свою работу, выбирая тип программируемой микросхемы. Каждому типу микросхемы соответству- ет файл конфигурации аппаратуры программатора, который инициируется
ГЛАВА 6. ИНСТРУМЕНТАЛЬНЫЕ И УЧЕБНЫЕ СРЕДСТВА 323 при выборе и определяет функции выводов корпуса, временные диаграммы программирования, наличие битов защиты и т.д. Команда Disk дает возможность просмотреть всю файловую систему инструментального компьютера и загрузить в буфер файл с кодом для про- граммирования микросхемы. Файл может быть одного из следующих типов: .hex, .bin, .dmp, .jed, .sl9. Код для программирования может быть считан и из эталонной микросхемы. По команде Buffer на экране постранично отображается содержимое памяти в шестнадцатеричном формате; курсор указывает на ячейку с адре- сом, который просматривался при последнем входе в данный режим. Ос- новная часть работы пользователя сводится к редактированию информации в буфере. В зависимости от выбранного типа ПЗУ обрабатываются 4-, 8- или 16-разрядные данные, для отображения которых используется 1, 2 и 4 зна- коместа, соответственно. Возможно непосредственное редактирование всей информации в буфере. При редактировании буфера данных с помощью клавиш F1..F10 могут быть активизированы дополнительные сервисные функции. Имена функций и назначение клавиш в процессе работы индици- руется в окне меню. Fl - Split. Обработка массива при работе с расслоенной (interleaved) памятью. Эта функция используется при подготовке данных для 16- разрядного микропроцессора с памятью, организованной в виде двух бан- ков: по младшим и старшим байтам слова (например, 80x86). F2 - Addr. Переход к произвольному адресу для редактирования. Зна- чение адреса вводится в окне, появляющемся при активизации функции. F3 - Fill. Заполнение кодом (константой) ячеек памяти в заданном диапазоне адресов. F4 - Mask. Маскирование фрагмента буфера. Над всеми байтами фрагмента и маской побитно выполняется одна из логических функций: AND, OR, XOR, INV (инверсия адресов и данных). F5 - Bits. Перестановка битов во фрагменте буфера. Во всех байтах массива производится перестановка битов по заданному шаблону. Допуска- ется многократное копирование бита в пределах байта. Предполагается, что перед выполнением операции биты расположены в порядке 76543210 (шаблон - 76543210). F6 - Seek. Поиск заданной последовательности байтов в буфере. Для выполнения операции необходимо в окне «Модель для поиска» ввести ко- довую последовательность. F7 - Сору. Копирование заданного фрагмента в буфере на область ад- ресов, начинающуюся с заданного адреса (смещение). В окне параметров необходимо задать начальный и конечный адреса фрагмента и адрес смеще- ния.
24 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ F8 - Read. Чтение заданного фрагмента из ПЗУ в буфер, начиная с за- анного адреса (смещение). В окне параметров необходимо задать началь- ый и конечный адреса фрагмента в ПЗУ и адрес смещения в буфере. F9 - Print. Вывод содержимого фрагмента буфера на печать. F10 - Sum. Подсчет контрольной суммы. В окне параметров задаются ачальный и конечный адреса в буфере. Вычисления производятся одно- ременно тремя способами: суммирование байтов без учета переполнения; включающее ИЛИ всех байтов в диапазоне адресов; по методу РК86, что значает вычисление 16-разрядной контрольной суммы, где младший байт ычисляется по методу 1, а старший байт равен сумме байтов с учетом пе- >еполнения, возникающего при вычислении текущего значения младшего >айта (последний байт не учитывается при вычислении значения старшего >айта контрольной суммы). Весьма полезен и нагляден режим развернутого просмотра содержимого »уфера в виде логических диаграмм (клавиши ALT-F1, функция Spread). Три этом данные каждой ячейки представляются в кодах ASCII, десятич- [ом, шестнадцатеричном и двоичном формате, а также в виде двоичного гровня на каждом из выходов. Команда Verify позволяет быстро определить, запрограммирована БИС 13У или нет. Если во всех ячейках микросхемы записан исходный код (О зли FFH в зависимости от типа ПЗУ), то выдается сообщение «ПЗУ не «программировано». Если хотя бы в одной ячейке записан код, то про- рамма переходит к режиму просмотра ПЗУ с записью кодов в буфер и ггображением содержимого буфера. Отображение на экране аналогично ому, что имеет место при работе в режиме Buffer. Возможен вывод фраг- мента содержимого ПЗУ на печать, подсчет контрольной суммы ПЗУ, а гакже просмотр буфера в развернутом виде (ALT-F1). Для ПЗУ, имеющих встроенный идентификатор типа (Intelligent ientifier, Signature Bytes), при выполнении команды Verify производится считывание этого идентификатора. Прочитанная информация отображается з правой части строки состояния. Если при включении питания ток, потребляемый микросхемой, превы- шает 400 мА (900 мА для микросхем серии К556), то управляющая про- грамма снимает напряжение питания и выдает сообщение «Большой ток загрузки». Команда Prog запускает процесс электрической записи информации в микросхему ПЗУ или тестирование ОЗУ. В окне параметров устанавлива- ются следующие величины: начальный и конечный адреса фрагмента в бу- фере, адрес смещения в ПЗУ, напряжение программирования. Установка напряжения программирования производится с точностью 0,25 В (не для всех типов ПЗУ). Максимальная величина устанавливаемого напряжения равна 25,5 В. Этот параметр можно изменять лишь в особых случаях. Для ряда типов ПЗУ можно выбрать алгоритм записи - стандартный или быст-
ГЛАВА 6. ИНСТРУМЕНТАЛЬНЫЕ И УЧЕБНЫЕ СРЕДСТВА 325 рый. Стандартный алгоритм соответствует рекомендованному для данной микросхемы по ТУ. При использовании быстрого алгоритма время записи информации в каждую ячейку устанавливается индивидуально, в зависимо- сти от результата проверки. Например, быстрый алгоритм для микросхем серии К573 - это алгоритм Intelligent, рекомендованный фирмой Intel. Для микросхем серии 27хх фирмы Intel предусмотрены алгоритмы Intelligent и Quick Pulse. Для ряда микросхем можно установить опцию контроля содержимого ПЗУ до и после программирования («Проверка»). Если проверка выклю- чена, то запись производится в каждый байт микросхемы, отличающийся от незапрограммированного состояния, независимо от содержащейся в ПЗУ информации. Тестирование ОЗУ осуществляется в два этапа. Сначала буфер запол- няется тестовой информацией и содержимое заданного диапазона записыва- ется в ОЗУ. Затем производится считывание данных из ОЗУ и сравнение с буфером. Информация о несовпадении данных отображается так же, как в режиме Compare. При тестировании. ОЗУ записываемые данные извлекают- ся из буфера. Если при выполнении операции буфер чист (заполнен кон- стантой), то в нем автоматически формируется тест по правилу: содержи- мое ячейки равно инвертированной сумме старшего и младшего байтов ад- реса ячейки. Команда Compare сравненивает содержимое буфера и ПЗУ. В этом режиме необходимо в окне параметров указать диапазон адресов в буфере, адрес смещения в ПЗУ (по умолчанию те же, что и в режиме программиро- вания), а также величину напряжения питания. При этом предлагаются следующие опции:+ 5В - операция выполняется при номинальном напря- жении; + 4,5 В - операция выполняется при напряжении Vcc 10% 1 + 5,5 В - операция выполняется при напряжении Vcc+ 10% ; Auto - операция вы- полняется последовательно при всех трех напряжениях. Если информация идентична, то появляется сообщение «Массивы сов- падают», если нет - программа переходит в режим просмотра несовпадаю- щих ячеек массивов и адреса несовпадающих ячеек фиксируются во вре- менном буфере. Если количество таких ячеек больше 1024, то анализ пре- кращается. При просмотре несовпадений на экране отображаются только данные, находящиеся в ячейках по адресам, зафиксированным во времен- ном буфере. Команда Analysis производит анализ возможности допрограммирова- ния микросхемы ПЗУ. В этом режиме производится побайтное сравнение массивов данных в буфере и в ПЗУ. Программа определяет, возможна ли запись массива из буфера в ПЗУ без искажения информации. В зависимо- сти от типа ПЗУ можно дописывать в каждый бит «0» или «1». Результат анализа выдается в виде сообщения «Допрограммйрование возможно», в противном случае программа переходит в режим просмотра ячеек, не удов-
326 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ летворяющих условиям допрограммирования, аналогично предыдущему пункту. Команда Special позволяет использовать специальные установки и ре- жимы. С ее помощью можно установить величины напряжений, используе- мых при чтении/записи информации в ПЗУ. Она также активизирует спе- циальные режимы записи, если они предусмотрены для данной микросхе- мы. Управляющая программа поддерживает следующие специальные режи- мы: • стирание информации в электрически репрограммируемых микросхем: КР558РР2/РРЗ/РР4, К1801РР1, 28Fxxx, АТ89С51, АТ89С2051; • программирование кода ПЗУ - для К573РФЗ, К1801РР1; • программирование битов защиты и таблицы кодирования - для 87х51хх, 89Схх, 85С22х, РАЫбхх. Программируются все источники питания, используемые при работе с программируемыми схемами, которые выдают напряжения, отличные от значения +5 В. Таких источников два типа: напряжения питания при про- граммировании ( устанавливается для микросхем серии 27хх) и напряже- ние программирования (дублирует установку, описанную в команде Prog, которая является паспортной величиной микросхемы). Установка напряже- ний программирования требует осторожности, чтобы не повредить буфер- ные каскады микросхем. Программатор снабжен подробной документацией. Значительный объем в ней занимает информация об особенностях программирования микросхем различных серий. 6.5. Учебные практикумы микропроцессорной техники и ПЛИС Несмотря на публикации в периодической печати, издание нескольких монографий [1, 2], в области микропроцессорной техники ощущается зна- чительный неудовлетворенный спрос на средства и методы обучения. При создании рассматриваемых далее учебных практикумов мы исходили из следующих соображений: • Учебные методики и средства должны разрабатывать специалисты, имеющие большой опыт разработки систем проектирования и целевых систем управления. • В качестве учебных средств должны использоваться версии профес- сиональных систем проектирования, поскольку использование чисто учебных средств искажает методику проектирования и приводит к не- обходимости последующего переучивания.
ГЛАВА 6. ИНСТРУМЕНТАЛЬНЫЕ И УЧЕБНЫЕ СРЕДСТВА 327 • Ввиду большого объема информации по элементной базе и сложности систем проектирования основным принципом лабораторного практику- ма должен быть «делай как я», т.е. в каждой работе должно быть обя- зательное задание, процесс выполнения которого подробно описан. Это позволит не только передать знания и практические навыки, но и при- вить правильный стиль проектирования; На основе этих принципов в лаборатории «Микропроцессорные систег мы» МИФИ созданы учебные средства, позволяющие в короткий срок пе- редать практические навыки разработки микропроцессорных систем управ- ления на основе микроконтроллеров и ПЛИС. Класс «Проектирование сис- тем на микроконтроллерах и ПЛИС» в настоящее время позволяет изучать: • 8-разрядные микроконтроллеры MCS-51 с традиционной (CISC) архи- тектурой; • RISC-микроконтроллеры AVR фирмы Atmel; • проектирование цифровых устройств с использованием ПЛИС фирмы Altera и САПР Max+PlusII. В состав класса включены аппаратные средства типа одноплатных кон- троллеров, программные средства в виде интегрированных систем програм- мирования микроконтроллеров и систем автоматизированного проектирова- ния цифровых устройств на ПЛИС, методическое обеспечение в виде лабо- раторных практикумов, универсальный программатор. Главным звеном учебного класса являются методические материалы ла- бораторных практикумов. Каждый из них состоит из введения, в котором описана архитектура рассматриваемого семейства БИС и методика проекти- рования, набора лабораторных работ и приложений, в которых приведены технические характеристики плат и элементной базы. Перечень лаборатор- ных работ практикума по микроконтроллерам AVR фирмы Atmel имеет следующий вид: "ПРОЕКТИРОВАНИЕ СИСТЕМ НА МИКРОКОНТРОЛЛЕРАХ AVR тедаЮЗ" ОГЛАВЛЕНИЕ • Введение • Работа 1. Методы адресации, команды передачи данных и управления • Работа 2. Команды обработки данных • Работа 3. Контроль внешних устройств через параллельные порты - работа с клавиатурой • Работа 4. Реализация и обслуживание подсистемы прерываний • Работа 5. Реализация таймерных функций • Работа 6. Организация последовательного обмена данными между контроллерами • Работа 7. Обслуживание АЦП Приложение 1. Интегрированная система программирования «ТурбоАссемблер-AVR» Приложение 2. Учебный контроллер AVR тедаЮЗ
328 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Описание каждой лабораторной работы содержит информационно- теоретическую часть, обязательное задание (включая фрагмент текста про- граммы с комментариями и разбором реализации алгоритма) и варианты заданий для самостоятельного выполнения. Например, в работе 4 практи- кума по микроконтроллерам AVR описаны механизмы реализации преры- ваний, регистры управления микроконтроллеров. Затем приведен ассемб- лерный текст примера обязательного задания, формирующий таблицу пере- ходов и инициализирующий указатель стека, разрешающий определенные прерывания и определяющий их приоритеты. Далее следуют процедуры обслуживания прерываний и программные заглушки вместо процедур за- маскированных прерываний. Завершается работа набором самостоятельных заданий, которые выполняются посредством изменения текста разобранного задания. Обязательные задания практикума нарастают по сложности и в после- дующих работах используются программные модули из предыдущих работ. Структура практикума позволяет без привлечения дополнительной ли- тературы подготовиться как преподавателю, так и студенту или слушателю курсов повышения квалификации. Имеется и опыт самостоятельного изуче- ния предмета с его помощью. Лабораторный макет практикума по микроконтроллерам AVR фирмы Atmel имеет типичную для наших учебных контроллеров структуру, кото- рая включает ядро (в данном случае на основе микроконтроллера ATmegalO3), модули последовательных интерфейсов SPI и RS232, стабили- затор питания, схему рестарта и синхронизации, 12-клавишную клавиатуру, блок семисегментных индикаторов и пьезодинамик. Плата выполнена с ис- пользованием элементов технологии поверхностного монтажа и демонстри- рует современный подход к проектированию микропроцессорных контрол- леров на основе функционально-топологических модулей. Программирование микропроцессорных систем изучается с использова- нием интегрированных систем, для рассматриваемого практикума это «Тур- боАссемблер-AVR». Система относится к классу профессиональных, объе- диняет редактор текста, транслятор, библиотеки периода выполнения, сим- волический отладчик. Наличие программно-логической модели в составе системы позволяет использовать ее в первых работах без платы контролле- ра, наблюдая состояние регистров на мониторе компьютера. Транслятор системы анализирует текст программы и выдает сообщения об обнаружен- ных ошибках, а наличие команды Help позволяет получить оперативную информацию о командах микроконтроллера, директивах ассемблера, биб- лиотеках и т.д. Именно развитость инструментальной системы программи- рования и большой объем сервисных функций позволяет быстро освоить систему команд и разработку прикладных программ. Кроме того, в совре- менных условиях важно, что после обучения специалист сразу может раз-
ГЛАВА 6. ИНСТРУМЕНТАЛЬНЫЕ И УЧЕБНЫЕ СРЕДСТВА 329 рабатывать изделия с использованием освоенных инструментальных средств, без закупок новой техники и переучивания. Лабораторный практикум по проектированию систем на микроконтрол- лерах MCS-51 в целом аналогичен практикуму по микроконтроллерам AVR. Лабораторный практикум «Проектирование цифровых устройств на ПЛИС» описан в параграфе 5.7.
ПРИЛОЖЕНИЕ 1 Система команд микроконтроллеров MCS-51 Команда ACALL По команде ACALL осуществляется вызов подпрограммы, располо- женной в текущем банке памяти команд (2 Кбайта), следующим образом: • содержимое счетчика команд PC (т.е. полный адрес следующей ко- манды) записывается в вершину стека (младший байт адреса записы- вается первым); • содержимое указателя стека SP увеличивается на два; • в разряды 0-10 счетчика команд записывается длинный (11-битный) адрес подпрограммы, хранящийся в коде команды. Содержимое раз- рядов 11-15 счетчика команд не изменяется. Таким образом, точка назначения команды ACALL должна разме- щаться в том же банке памяти программ, что и ее первый байт. Синтаксис: Байт: Циклов: ACALL addrll 2 12 Тактов: 24 Код: | аЮ а9 а8 1 0 0 0 1 | а7 аб а5 а4~ аЗ а2 al аО Операция: ACALL (PC) <- (PC) + 2 (SP) := (SP) + 1 ((SP)) := (PC™) (SP) := (SP) + 1 ((SP)) := (PC15.8) (PC1O-o) := AAA: A...A
ПРИЛОЖЕНИЕ 1. КОМАНДЫ МИКРОКОНТРОЛЛЕРОВ MCS-51 331 Команда ADD По команде ADD выполняются следующие действия: операнд-источник складывается с содержимым аккумулятора, резуль- тат записывается в аккумулятор; устанавливаются биты признаков результата (С), (AC), (OV), (Р). Синтаксис: Байт: Циклов: Тактов: ADD A, Rn 1 1 12 Код: 0 0 10 1 г г г Операция: ADD (А) <- (А) + (Rn) Синтаксис: Байт: Циклов: Тактов: ADD A, direct 2 1 12 Код: Г 0 0 11 0 10 1 direct address Операция: ADD (А) <- (А) + (direct) Синтаксис: Байт: Циклов: ADD А,@ Ri 1 1 Тактов: 12 Код: 10 0 1 0 |0 1 1 i Операция: ADD (А) <- (А) + ((Ri)) Синтаксис: Байт: Циклов: ADD A,#data 2 1 Тактов: 12 Код: |0 0 1 0 0 1 0 0 | immediate data~~| Операция: ADD (А) <- (А)+ #data
332 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Команда ADDC По команде ADDC выполняются следующие действия: складываются операнд-источник, бит признака переноса С и содер- жимое аккумулятора; результат записывается в аккумулятор; устанавливаются биты признаков результата (C),(AC),(OV),(P). Синтаксис: ADDC A, Rn Байт: Циклов: 1 1 Тактов: 12 Код: 0 0 11 1 г г г Операция: ADDC (А) <- (А) + (С) + (Rn) Синтаксис: Байт: Циклов: ADDC A, direct 2 1 Тактов: 12 Код: 0 0 11 0 10 1 direct address | Операция: ADDC (А) <- (А) +(С) + (direct) Синтаксис: Байт: ADDC А,@ Ri 1 Циклов: 1 Тактов: 12 Код: 0 0 11 0 1 1 i Операция: ADDC (А) <- (А) + (С) + ((Ri)) Синтаксис: Байт: Циклов: ADDC A,#data 2 1 Тактов: 12 Код: 0 0 11 0 1 0 0 | immediate data Операция: ADDC (А) <- (А)+ (С) + #data
ПРИЛОЖ&1ИЕ 1. КОМАНДЫ МИКРОКОНТРОЛЛЕРОВ MCS-51 333 Команда AJMP По команде AJMP осуществляется переход в точку назначения, рас- положенную в текущем банке памяти программ, следующим образом: • в разряды 0-10 счетчика команд записывается длинный (11-битный) адрес точки назначения, представленный 7-15 разрядами первого байта ААА (старшие три разряда) и вторым (младшие восемь разря- дов) байтом А...А кода команды. • содержимое разрядов 11-15 счетчика команд соответствует адресу следующей команды. Таким образом, точка назначения команды AJMP должна размещать- ся в том же банке памяти программ, что и ее первый байт. Синтаксис: Байт: Циклов: Тактов: AJMP addrll 24 Код: а10 а9 а8 0 | 0 0 0 1 | | а7 аб а5 а41 аЗ а2 а! аО | Операция: AJMP (PC) <- (PC) + 2 (РСю-о)*-page address Команда ANL По команде ANL выполняются следующие действия: операнд-источник поразрядно логически умножается на операнд- приемник; результат записывается на место операнда-приемника. если в качестве операнда-приемника используется содержимое акку- мулятора, то устанавливается бит четности. Синтаксис: Байт: Циклов: Тактов: ANL A,Rn 12 Код: | 0 1 0 1 | 1 г г ~ Операция: ANL (A) a ((Rn))
334 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Синтаксис: Байт: Циклов: Тактов: ANL A,direct 2 1 12 Код: | 0 1 0 1 0 10 1 | direct address Операция: ANL (А) 4- (А) л (direct) Синтаксис: Байт: Циклов: ANL А,@ Ri 1 1 Код: | 0 1 0 1 | 0 1 1~Т Тактов: 12 Операция: ANL (А) <- (A) a ((Ri)) Синтаксис: ANL A,#data Байт: Циклов: Код: | 0 1 0 1 | 0 1 0 0 Тактов: 12 immediate data Операция: ANL (А) <- (A) a #data Синтаксис: ANL direct, А Байт: Циклов: Тактов: 2 1 24 Код: |0 1 О 1 | 0 0 1 0 | | direct address Операция: ANL (direct)<-(direct) а (А) Синтаксис: Байт: Циклов: ANL direct, #data 3 2 Код: |о 1 0 1|0 0 1 1~| | direct address Операция: ANL (direct)<-(direct)A#data Тактов: 24 | immediate data Синтаксис: ANL C, bit Байт: Циклов: Тактов: 2 24
ПРИЛОЖЕНИЕ 1. КОМАНДЫ МИКРОКОНТРОЛЛЕРОВ MCS-51 335 Код: 1 0 0 0 0 0 1 0 | bit.address Операция: ANL (С) <- (С)а(Ы0 Синтаксис: Байт: ANL С,/bit 2 Циклов: Тактов: 2 24 10 11 0 0 0 0 bit.address Операция: ANL (С) <-(С)л/(Ы0 Команда CJNE По команде CJNE осуществляется ветвление в программе следующим образом: • если операнд-приемник не равен операнду-источнику, то управление передается в точку назначения ( к текущему содержимому счетчика команд прибавляется позиционно независимое смещение, представ- ленное третьим байтом кода команды S...S); • в противном случае управление передается следующей команде. Синтаксис: Байт: Циклов: Тактов: CJNE A, direct, rel 3 2 24 Код: 10 11 0 10 1 | direct address | rel.address | Операция: (РС)<— (РС)+3 IF (А) < >(direct) THEN (РС)<- (PC)+relative offset IF (A) < (direct) THEN (C) <- 1, ELSE (C) <- 0 Синтаксис: CJNE A, #data, rel Байт: 3 Циклов: 2 Тактов: 24
336 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Код: 10 11 0 10 0 immediate data | rel.address Операция: (РС)<- (РС)+3 IF (А) < >(data) THEN (PC) 4- (PC)+relative offset IF (A) < (data) THEN (C) 4- 1, ELSE (C) 4- 0 Синтаксис: Байт: Циклов: CJNE Rn, #data, rel 3 2 Тактов: 24 Код: 10 11 1 r r r | immediate data rel .address Операция: (РС)<- (РС)+3 IF ((Rn)) < >data THEN (PC) 4- (PC)+relative offset IF (Rn) < (data) THEN (C) 4- 1, ELSE (C) 4- 0 Синтаксис: CJNE @Ri, #data,rel Байт: Циклов: 3 2 Тактов: 24 Код: |1 0 1 1 0 1 1 i | immediate data | rel.address J Операция: (PC)<- (PC)+3 IF (Ri) < >data THEN (PC) <- (PC)+relative offset IF ((Ri)) < data THEN (C) <- 1, ELSE (C) <- 0 Команда CLR По команде CLR операнд-приемник устанавливается в состояние «нуль». Если в качестве операнда-приемника используется содержимое аккумулятора, то устанавливается бит четности.
ПРИЛОЖЕНИЕ 1. КОМАНДЫ МИКРОКОНТРОЛЛЕРОВ MCS-51 337 Синтаксис: CLR А Байт: 1 Циклов: 1 Тактов: 12 Код: | 1 1 1 0 | 0 1 0 0 Операция: CLR (А) 4-0 Синтаксис: CLR С Байт: 1 Циклов: 1 Тактов: 12 Код: | 1 1 0 0 | 0 0 1 1 Операция: CLR (С) 4- 0 Синтаксис: CLR bit Байт: 2 Циклов: 1 Тактов: 12 Код: | 1 10 ~0~ 0 0 10 | bitaddress Операция: CLR (bit)*- 0 Команда CPL По команде CPL операнд-приемник инвертируется. Синтаксис: CPL А Байт: 1 Циклов: 1 Тактов: 12 Код: |Z 1110 1 0 0 Операция: CPL (А) 4 -(А) Синтаксис: Байт: Циклов: Тактов: CPL С 1 1 12 Код: | 1 0 1 1 | о о _L_1J
338 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Операция: CPL (С) ч-/(С) Синтаксис: CPL bit Байт: 2 Циклов: 1 Тактов: 12 Код: 10 11 0 0 10 Операция: CPL (bit)<— /(bit) Команда DA По команде DA результат двоичного сложения упакованных двоично- десятичных чисел в аккумуляторе (сложение выполняется командой ADD или ADDC) преобразуется в упакованное двоично-десятичное число следующим образом: • если число в младших 4-х разрядах аккумулятора больше 9 (т.е. ХХХХ1010В...ХХХХ1111В) или бит признака вспомогательного пе- реноса равен 1, то к содержимому аккумулятора прибавляется число 6. При переносе из 3-го разряда аккумулятора, признак переноса ус- танавливается в 1; • если число в старших 4-х разрядах аккумулятора больше 9 (т.е. 1010ХХХХВ...1111ХХХХВ) или бит признака переноса равен 1, то к содержимому аккумулятора прибавляется число 60Н. При переносе из 7-го разряда аккумулятора, признак переноса устанавливается в 1. Данная команда может быть использована для программной реали- зации процедуры сложения многобайтных упакованных двоично- десятичных чисел. Синтаксис: Байт: Циклов: Тактов: DA А Код: 110 1 0 10 0 Операция: DA если (АЗ-0) > 9 или (АС) = 1, то если ((АЗ-0) + 6) > OFH, то (С) := 1; (А) :=(А) + 6 если (А7-4) > 9 или (С) = 1, то если ((А7-4) + 6) > OFH,
ПРИЛОЖЕНИЕ 1. КОМАНДЫ МИКРОКОНТРОЛЛЕРОВ MCS-51 339 то (С) := 1; (А) :=(А) + 60Н (Р) := 0\1 Команда DEC По команде DEC операнд-приемник уменьшается на 1. Если в каче- стве операнда-приемника используется содержимое аккумулятора, то уста- навливается бит четности (Р). Из состояния 0...0В операнд-приемник пе- реходит в состояние Синтаксис: Байт: Циклов: Тактов: DEC А 1 1 12 Код: | 0 0 0 1 1 0 1 0 0 I Операция: DEC (А) := (А) - 1 Синтаксис: Байт: Циклов: Тактов: DEC Rn 1 1 12 Код: 0 0 0 11г г г Операция: DEC (Rn) <- (Rn) - 1 Синтаксис: Байт: Циклов: Тактов: DEC @Ri 1 1 12 Код: 0 0 0 1 | 0 1 1 i Операция: DEC ((Ri)) <- ((Ri)) - 1 Синтаксис: DEC direct Байт: Циклов: Тактов 2 1 12 Код: | 0 0 0 1 | 0 1 О Т] | direct address |
340 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Операция: DEC (direct) <- (direct) - 1 Команда DIV По команде DIV выполняются следующие действия: • содержимое Асе (делимое) делится на содержимое регистра В (дели- тель); • целая часть результата (частное) записывается в аккумулятор (Асе), остаток от деления в регистр В; • признак переноса устанавливается в состояние «О»; • признак переполнения устанавливается в состояние «1», если делимое в регистре В равно нулю, или в состояние «О», в противном случае; • устанавливается признак четности. Замечание: Операнды команды рассматриваются как порядковые числа. Если делитель равен нулю, то результат выполнения команды не определен. Синтаксис: Байт: Циклов: Тактов: DIV АВ 48 Код: | 1 0 0 0 | 0 1 0 0 | Операция: DIV если (В) = 0 то OV := 1, иначе OV : О (ТМР) := (В) :=(А) MOD (В) (А) := (ТМР) (С) := О (Р) := 0\1 Команда DJNZ По команде DJNZ осуществляется ветвление в программе следующим образом: • содержимое операнда-приемника уменьшается на единицу, затем, если операнд-приемник не равен нулю, то управление передается в точку назначения (к текущему содержимому счетчика команд прибавляет- ся позиционно независимое смещение, представленное третьим байтом кода команды S...S);
ПРИЛОЖЕНИЕ 1. КОМАНДЫ МИКРОКОНТРОЛЛЕРОВ MCS-51 341 • в противном случае управление передается следующей команде. При уменьшении операнд-приемник из состояния ООН переходит в со- стояние 0FFH. Синтаксис: Байт: DJNZ Rn, rel 2 Код: | 1 1 0 1 | 1 г r~ Циклов: Тактов: rel.address 24 Операция: DJNZ (РС)<- (РС)+2 (Rn)<- (Rn) - 1, IF Rn > 0 or Rn < 0 THEN PC<- PC+rel, Синтаксис: Байт: Циклов: Тактов: DJNZ direct, rel 3 2 24 110 1 0 10 1 Код: direct-address rel.address Операция: DJNZ (PC)<- (PC)+2 (direct)<-(diret)-l IF (direct) > 0 or (direct) < 0, THEN (PC)<- (PC) + rel Команда INC По команде INC операнд-приемник увеличивается на единицу. Если в качестве операнда-источника используется содержимое акку- мулятора, то устанавливается бит четности (Р). Из состояния 1...1В операнд-приемник переходит в состояние 0...0В. Синтаксис: INC А Байт: Циклов: Тактов: 12 Код: | 0 0 0 0 | 0 1 0 0 |
342 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Код: | 0 0 0 0 | 0 1 0 0 | Операция: INC (А) <- (А) +1 Синтаксис: INC Rn Байт: 1 Циклов: 1 Тактов 12 Код: | 0 ООО 1г г г Операция: INC (Rn) <- (Rn) + 1 Синтаксис: Байт: Циклов: Тактов INC direct 2 1 12 Код: | 0 0 0 0 | 0 1 0 1 direct address Операция: INC (direct) <- (direct) + 1 Синтаксис: Байт: INC @Ri 1 Код: | 0 0 0 0 | 0 1 1 i | Операция: INC ((Ri)) <- ((Ri)) + 1 Циклов: Тактов: 1 12 Синтаксис: Байт: INC DPTR Циклов: Тактов: 2 24 Код: 1 0 1 0 0 0 1 1 Операция: INC (DPTR) <- (DPTR) + 1 Команда JB По команде JB осуществляется ветвление в программе следующим образом:
ПРИЛОЖЕНИЕ 1. КОМАНДЫ МИКРОКОНТРОЛЛЕРОВ MCS-51 343 • если прямо адресуемый бит ячейки внутренней памяти данных или регистра специальной функции равен единице, то управление переда- ется в точку назначения (к текущему содержимому счетчика ко- манд прибавляется позиционно независимое смещение, представ- ленное третьим байтом кода команды S...S). • в противном случае управление передается следующей команде. Прямой адрес анализируемого бита данных представляется вторым байтом кода команды I...I. Синтаксис: JB bit,rel Байт: Циклов: Код: | 0 0 1 0 | О О О О bit.address Тактов: 24 rel.address | Операция: JB (РС)<- (РС)+3 IF (bit)=l THEN (РС)<- (PC) + rel, Команда JBC По команде JBC осуществляется ветвление в программе следующим образом: • если прямо адресуемый бит ячейки внутренней памяти данных или регистра специальной функции равен единице, то этот бит устанав- ливается в состояние «нуль», а управление передается в точку назна- чения (к текущему содержимому счетчика команд прибавляется по- зиционно независимое смещение, представленное третьим байтом ко- да команды S...S). • в противном случае управление передается следующей команде. Прямой адрес анализируемого бита данных представляется вторым байтом кода команды I...I. Синтаксис: JBC bit,rel Байт: 3 Циклов: Тактов: 2 24 Код: | 0 0 0 1 | 0 0 0 0 | | bit.address | | rel.address |
344 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Операция: JBC (РС)<- (РС)+3 IF (bit)=l THEN (bit) <- О (PC)<- (PC) + rel Команда JC По команде JC осуществляется ветвление в программе следующим образом: • если бит признака переноса С равен единице, то управление передает- ся в точку назначения (к текущему содержимому счетчика команд прибавляется позиционно независимое смещение, представленное вто- рым байтом кода команды S...S). • в противном случае управление передается следующей команде. Синтаксис: JC rel Байт: Циклов: Тактов: 24 Код: | 0 1 0 0 | О О О О rel.address Операция: JC (РС)<- (РС)+2 IF (С)=1 THEN (РС)<- (PC) + rel Команда JMP По команде JMP осуществляется косвенный переход. Содержимое счетчика команд устанавливается равным сумме содер- жимого аккумулятора и содержимого регистра DPTR. Сумма вычисляется по модулю 2**16, содержимое аккумулятора интерпретируется как целое число без знака в диапазоне 0..255. Синтаксис: Байт: JMP @A+DPTR 1 Циклов: Тактов: 2 24 Код: | 0 1 1 1 | О 0 1 1 | Операция: JMP (РС)<- (А) + (DPTR)
ПРИЛОЖЕНИЕ 1. КОМАНДЫ МИКРОКОНТРОЛЛЕРОВ MCS-51 345 Команда JNB По команде JNB осуществляется ветвление в программе следующим образом: • если прямо адресуемый бит ячейки внутренней памяти данных или регистра специальной функции равен нулю, то управление передается в точку назначения (к текущему содержимому счетчика команд при- бавляется позиционно независимое смещение, представленное третьим байтом кода команды S...S). • в противном случае управление передается следующей команде. Прямой адрес анализируемого бита данных представляется вторым байтом кода команды I...1. Синтаксис: JNB bit,rel Байт: Циклов: Тактов: 3 2 24 Код: | 0 0 1 1 | 0 0 0 0 | | bit.address | | rel.address | Операция: JNB (РС)<- (РС)+3 IF (bit)=O THEN (РС)<- (PC) + rel Команда JNC По команде JNC осуществляется ветвление в программе следующим образом: • если бит признака переноса С равен нулю, то управление передается в точку назначения (к текущему содержимому счетчика команд при- бавляется позиционно независимое смещение, представленное вторым байтом кода команды S...S). • в противном случае управление передается следующей команде. Байт: Циклов: Тактов: Синтаксис: JNC rel 24 Код: 0 1 0 1 0 0 0 0 rel.address
346 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Операция: JNC (РС)<- (РС)+2 IF (С)=0 THEN (РС)<- (PC) + rel Команда JNZ По команде JNZ осуществляется ветвление в программе следующим образом: • если содержимое аккумулятора не равно нулю, то управление переда- ется в точку назначения (к текущему содержимому счетчика команд прибавляется позиционно независимое смещение, представленное вто- рым байтом кода команды S...S ); • в противном случае управление передается следующей команде. Синтаксис: JNZ rel Байт: Циклов: Тактов: 2 2 24 Код: | 0 1 1 1 | 0 0 0 0 | rel.address Операция: JNZ РС)<- (РС)+2 IF (А) *0 THEN (РС)<- (РС)+ге1, Команда JZ По команде JZ осуществляется ветвление в программе следующим образом: • если содержимое аккумулятора равно нулю, то управление передается в точку назначения (к текущему содержимому счетчика команд при- бавляется позиционно независимое смещение, представленное вторым байтом кода команды S...S ); • в противном случае управление передается следующей команде. Синтаксис: Байт: Циклов: Тактов: JZ rel 2 2 24 Код: | 0 1 1 1 | 0 0 0 0 | | rel.address |
ПРИЛОЖЕНИЕ 1. КОМАНДЫ МИКРОКОНТРОЛЛЕРОВ MCS-51 347 IF (А) =0 THEN (РС)<- (PC)+rel, Команда LCALL По команде LCALL осуществляется вызов подпрограммы, располо- женной в любой точке памяти программ, следующим образом: • содержимое счетчика команд PC (т.е. полный адрес следующей ко- манды) записывается в вершину стека (младший байт адреса записы- вается первым); • содержимое указателя стека SP увеличивается на два; • в счетчик команд записывается полный (16-битный) адрес подпро- граммы, представленный вторым (старшим) А...А и третьим (млад- шим) А...А байтами кода команды. Синтаксис: Байт: Циклов: Тактов: LCALL addrl6 3 2 24 Код: | 0 0 0 1 | 0 0 1 0 | addrl 5-addr8 | addr7- addrO Операция: LCALL (PC) <- (PC) + 3 (SP) <- (SP) +1 ((sp»<- (рад (SP) <- (SP) + 1 ((SP))<- (PC15.8) (PC) <- addr15.0 Команда LJMP По команде LJMP осуществляется безусловный переход в точку на- значения, расположенную в любом месте памяти команд, следующим об- разом: • в счетчик команд записывается полный (16-битный) адрес точ- ки назначения, представленный вторым (старшим) А...А и третьим (младшим) А...А байтами кода команды. Синтаксис: Байт: LJMP addrl6 3 Циклов: Тактов: 2 24
348 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Синтаксис: LJMP addrl6 Байт: Циклов: Тактов: 24 Код: | О О 0 0| 0 0 1 О Операция: LJMP (PC) <-addri5-o addr15-addr8 | [ addr7-addr0 | Команда MOV По команде MOV операнд-источник пересылается на место операнда- приемника. Если местом операнда-приемника является аккумулятор, то устанавливается бит четности. Синтаксис: Байт: Циклов: MOV A, Rn 1 1 Код: | 1 1 1 0 | 1 г г ~ Тактов: 12 Операция: MOV (А) <- (Rn) Синтаксис: Байт: MOV A, direct 2 Код: | 1 1 1 О | О 1 0 1 Циклов: Тактов: 1 12 direct address Операция: MOV (А) <- (direct) Синтаксис: MOV A, @Ri Байт: 1 Циклов: 1 Тактов: 12 Код: | 1 110 0 1 1 i Операция: MOV (А) <- ((Ri)) Синтаксис: MOV A, #data Байт: Циклов: Тактов: 2 12
ПРИЛОЖЕНИЕ 1. КОМАНДЫ МИКРОКОНТРОЛЛЕРОВ MCS-51 349 Код: 0 111 | 0 0 0 0 | immediate data | Операция: MOV (A) <—# data Синтаксис: Байт: Циклов: Тактов: MOV Rn, A 1 1 12 Код: 1111 1 r r r | Операция: MOV (Rn) <-( А) Синтаксис: Байт: Циклов: Тактов: MOV Rn, direct 2 2 24 Код: | 1 0 1 0 | 1 r r r | direct address Операция: MOV (Rn) <- (direct) Синтаксис: Байт: Циклов: Тактов: MOV Rn,#data 12 Код: | 0 1 1 1 | 1 г rr immediate data Операция: MOV (Rn) <—# data Синтаксис: Байт: MOV direct, A 2 Код: | 1 1 1 1 | 0 1 О Г] Циклов: Тактов: direct address Операция: MOV (direct) <- (A) Синтаксис: Байт: MOV direct, Rn 2 Код: | 1 0 0 0 | 0 r r r~] Циклов: Тактов: 2 24 direct address
350 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Операция: MOV (direct) <-(Rn) Синтаксис: Байт: MOV direct, direct 3 Циклов: Тактов: 2 24 Код: 11 0 0 0~ 0 10 1 | dir.addr.(src) Операция: MOV (direct) <— (direct) | dir.addr.(dest) ~| Синтаксис: MOV direct, @Ri Байт: 2 Циклов: 2 Тактов 24 Код: 1 0 0 0 0 1 1 i direct address Операция: MOV (direct) <-((Ri)) Синтаксис: MOV direct, #data Байт: Циклов: 3 2 Тактов: 24 Код: |0 1 1 1|O 1 0 11 | direct address | immediate data Операция: MOV (direct) <—#data Синтаксис: Байт: Циклов: Тактов: MOV @Ri, A 1 1 12 Код: | 1 1 1 1 | 0 1 1 i | Операция: MOV ((Ri)) <-( A) Синтаксис: Байт: Циклов: Тактов: MOV @Ri, direct 2 2 24 Код: 10 10 | 0 1 1 i | direct address | Операция: MOV ((Ri)) <— (direct)
ПРИЛОЖЕНИЕ 1. КОМАНДЫ МИКРОКОНТРОЛЛЕРОВ MCS-51 351 Синтаксис: Байт: Циклов: Тактов: MOV @Ri, #data 2 1 12 Код: | 0 1 1 1 0 1 1 i | | immediate data Операция: MOV ((Ri)) <- (data) Синтаксис: Байт: MOV C, bit 2 Циклов: Тактов: 1 12 10 10 0 0 10 bit.address Операция: MOV (C) <- (bit) Синтаксис: Байт: MOV bit, C 2 Код: | 1 0 0 1 | 0 0 1 0~] Циклов: Тактов: 2 24 | bitaddress Операция: MOV (bit) <-(C) Синтаксис: Байт: Циклов: MOV DPTR,data 16 3 2 Код: |1 00 1 |0 0 0 T| | immed,data15-8 ] Тактов: 24 | immed. data7-0 ] Операция: MOV (DPTR) <- #data15.0 DPH <- #data15-8 DPL <- #data7.0 Команда MOVC По команде MOVC операнд-источник (байт кода команды или 8- битная константа) из памяти программ пересылается в аккумулятор. Имеется два способа формирования адреса операнда-источника:
352 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ как сумма содержимого аккумулятора и регистра указателя данных DPTR; как сумма содержимого аккумулятора и регистра счетчика команд PC. Примечания: После выборки текущей команды счетчик команд увеличивается на число, равное количеству байт, занимаемых этой командой (для ко- манды MOVC - на единицу). Старший байт адреса передается через порт #2, младший - через порт #0. Устанавливается признак четности. Синтаксис: Байт: MOVC A, @A+DPTR 1 Циклов: Тактов: 2 24 Код: | 1 0 0 1 | 0 0 1 1~~] Операция: MOVC (А) <- ((A)+(DPTR)) Синтаксис: Байт: Циклов: Тактов: MOVC А, @А+РС 2 24 Код: | 1 0 0 0 | 0 0 1 7 Операция: MOVC (PC) <-(РС)+1 (А) <-((А)+(РС)) Команда MOVX Имеется два вида команды MOVX. По команде первого вида операнд-источник из внешней памяти дан- ных пересылается в аккумулятор. По команде второго вида содержимое аккумулятора пересылается на место операнда-приемника во внешнюю память данных. В качестве адреса ячейки памяти данных может использоваться: 1) содержимое рабочего регистра с кодом R (т.е. R0...R1). В этом случае адрес и данные мультиплексно передаются через порт. Размер ад- ресуемой области данных - 256 байт. С целью увеличения размера адре-
ПРИЛОЖЕНИЕ 1. КОМАНДЫ МИКРОКОНТРОЛЛЕРОВ MCS-51 353 суемой области данных до 64 Кбайт, рекомендуется использовать порт #2 для предварительной передачи старшего байта адреса; 2) содержимое регистра указателя данных DPTR. Младший байт ад- реса мультиплексно передается через порт #0, старший байт - через порт #2. В фиксаторе порта #2 (т.е. Р2) восстанавливается его предварительно сохраненное значение. В буфер порта #2 записываются пересылаемые данные. Размер адресуемой области данных - 64 Кбайт. Если в качестве операнда-приемника используется аккумулятор, то устанавливается признак четности. Синтаксис: Байт: MOVX A, ©Ri 1 Циклов: Тактов: 24 Код: | 1 1 1 0 | 0 0 1 i Операция: MOVX (A) <—((RD) Синтаксис: Байт: Циклов: Тактов: MOVX A, ©DPTR 1 2 24 Код: | 1 1 1 0 | 0 0 0 0 ] Операция: MOVX (A) <-((DPTR)) Синтаксис: Байт: Циклов: MOVX ©Ri, А 1 2 Тактов: 24 Код: 1111 0 0 1 Операция: MOVX ((Ri)) <-(А) Синтаксис: Байт: Циклов: Тактов: MOVX ©DPTR, Al 2 24 Код: | 1 1 1 1 | 0 0 0 0 ~|
354 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Операция: MOVX (DPTR) <—(А) Команда MUL По команде MUL выполняются следующие действия: содержимое аккумулятора умножается на содержимое регистра В; результат записывается в регистровую пару АВ (младший байт в регистр А, старший - в регистр В); признак переноса устанавливается в состояние «О»; признак переполнения - в состояние «О», если старший байт резуль- тата равен нулю, или в состояние «1», в противном случае; устанавливается признак четности. Операнды команды рассматриваются как порядковые числа. Синтаксис: Байт: Циклов: Тактов: MUL АВ 1 4 48 Код: | 1 0 1 0 | 0 1 0 0 ] Операция: MUL (А)7.о <- (А)Х(В) (B)l5-8> Команда NOP По команде NOP выполняется холостая операция микроконтроллера. В результате содержимое всех регистров, кроме счетчика команд, не изме- няется. Счетчик команд наращивается единицу. Синтаксис: NOP Байт: Циклов: Тактов: 12 Код: | 0000 | 0 0 0 0 Операция: NOP (РС)<- (PC) + 1
ПРИЛОЖЕНИЕ 1. КОМАНДЫ МИКРОКОНТРОЛЛЕРОВ MCS-51 355 Команда ORL По команде ORL выполняются следующие действия: • операнд-источник поразрядно логически умножает на операнд- приемник; • результат записывается на место операнда-приемника. Если в качестве операнда-приемника используется содержимое акку- мулятора, то устанавливается бит четности. Синтаксис: ORL A, Rn Байт: 1 Циклов: 1 Тактов: 12 Код: | 0 Операция: ORL (А)<- Синтаксис: ORL A, direct 1 0 0 | 1 г г г | (A)v (Rn) Байт: 2 Циклов: 1 Тактов. 12 Код: | 0 1 0 0 | 1 г г г | | direct address Операция: ORL (А) <- (A)v (direct) Синтаксис: ORL A, @Ri Байт: 1 Циклов: 1 Тактов: 12 Код: 0 1 0 0 0 1 1 i Операция: ORL (А)<- (A)v ((Ri)) Синтаксис: ORL A, #data Байт: 2 Циклов: 1 Тактов: 12 Код: 0 1 0 0 0 10 0 J | immediate data | Операция: ORL (А) <- (A)v #data
356 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Синтаксис: Байт: Циклов: Тактов: ORL direct, А 2 1 12 Код: 0 10 0 0 0 10 direct address | Операция: ORL (direct)*- (direct)v(A) Синтаксис: Байт: ORL direct, #data 3 Циклов: Тактов: 2 24 Код: 0 10 0 0 0 11 direct address Операция: ORL (direct )<—(direct)v#data Синтаксис: Байт: Циклов: Тактов: ORL С, bit 24 Код: | 0 1 1 1 | 0 0 1 0 | bit.address Операция: ORL (С) <- (C)v(bit) Синтаксис: ORL С,/bit Байт: Циклов: Тактов: 2 2 24 Код: |10 10|0000| | bit.address | Операция: ORL (С)<-(С) v/(bit) Команда POP По команде POP выполняются следующие действия: содержимое стека по адресу, находящемуся в регистре указателя стека SP, пересылается в ячейку внутренней памяти данных или в регистр специальной функции, прямо адресуемые вторым байтом ко- да команды В... В; содержимое регистра указателя стека SP уменьшается на единицу.
ПРИЛОЖЕНИЕ 1. КОМАНДЫ МИКРОКОНТРОЛЛЕРОВ MCS-51 357 Синтаксис: Байт: Циклов: Тактов: POP direct 2 2 24 Код: 1 1 0 1 0 0 0 0 direct address Операция: POP (direct)<-((SP)) (SP) <- (SP-1) Команда PUSH По команде PUSH выполняются следующие действия: содержимое регистра указателя стека SP увеличивается на единицу; содержимое ячейки внутренней памяти данных или содержимое реги- стра специальной функции, прямо адресуемое вторым байтом кода команды В...В, записывается в стек по адресу, находящемуся в ре- гистре указателя стека SP. Синтаксис: PUSH direct Байт: Циклов: Тактов: 24 Код: | 1 1 0 0 0 0 0 0 | direct address Операция: PUSH (SP) <-(SP) + 1 ((SP)) <- (direct) Команда RET По команде RET осуществляется возврат из подпрограммы, которая была вызвана командой ACALL или LCALL, следующим образом: • содержимое вершины стека (т.е. полный адрес возврата из подпро- граммы) пересылается в счетчик команд PC; • содержимое указателя стека SP уменьшается на два. Синтаксис: RET Байт: 1 Циклов: 2 Тактов: 24 Код: | 0 0 1 0 | 0 0 1 0 Операция: RET (РС15_8)<- ((SP))
358 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ (SP) <- (SP) - 1 (РС7-о)<- ((SP)) (SP) <- (SP) - 1 Команда RETI По команде RETI осуществляется возврат из подпрограммы обслужи- вания прерывания следующим образом: • содержимое вершины стека (т.е. полный адрес возврата в точку пре- рывания) пересылается в счетчик команд PC. Точка прерывания размещается за командой, во время выполнения которой пришел за- прос на прерывание; • содержимое указателя стека SP уменьшается на два. Разрешается прерывание равного или меньшего уровня. Примечание: Если во время выполнения команды RETI пришел запрос на преры- вание равного или меньшего уровня, то его обработка начинается только после выполнения следующей команды. Синтаксис: RETI Байт: Циклов: Тактов: 2 24 Код: | 0 0 1 1 | 0 0 1 0 | Операция: RETI (РС15 8)<- ((SP)) (SP) <- (SP) - 1 (РС7.о)<- ((SP)) (SP) <- (SP) - 1 Команда RL По команде RL содержимое аккумулятора циклически сдвигается влево на один двоичный разряд. Синтаксис: RL А Байт: Циклов: Тактов: 12 К°Д; | 0 0 1 0 | 0 0 1 1 |
ПРИЛОЖЕНИЕ 1. КОМАНДЫ МИКРОКОНТРОЛЛЕРОВ MCS-51 359 Операция: RL (Ап+1) <- (Ап), п=0...6 (АО) <- (А7) Команда RLC По команде RLC содержимое аккумулятора и бит признака переноса циклически сдвигается влево на один двоичный разряд. Устанавливается бит признака четности. Синтаксис: RLC А Байт: Циклов: Тактов: 12 Код: | 0 0 1 1 | 0 0 1 1 | Операция: RLC (Ап+1) <— (Ап), п=0...6 (АО) <- (С) (С) <- (А7) Команда RR По команде RR содержимое аккумулятора циклически сдвигается вправо на один двоичный разряд. Синтаксис: RR А Байт: Циклов: Тактов: 12 Код: | 0 0 0 0 | 0 0 1 1 Операция: RR (Ап) <— (Ап+1), п=0...6 (А7) <- (АО) Команда RRC По команде RRC содержимое аккумулятора и бит признака переноса циклически сдвигается вправо на один двоичный разряд. Устанавливается бит признака четности. Синтаксис: RRC А Байт: 1 Циклов: Тактов: 12
360 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ По команде RRC содержимое аккумулятора и бит признака переноса циклически сдвигаются вправо на один двоичный разряд. Устанавливается бит признака четности. Синтаксис: Байт: Циклов: Тактов: RRC А 1 1 12 Код: | 0 0 0 1 | 0 0 1 1 Операция: RRC (Ап) <— (Ап+1), п=0...6 (А7) <- (С) (С) <- (А7) Команда SETB По команде SETB операнд-приемник устанавливается в состояние «1». Если в качестве приемника используется бит PSW.O, PSW.2, PSW.6 или PSW.7, то соответствующий флаг признака результата (Р), (OV), (АС) или (С) устанавливается в состояние «1». Синтаксис: SETB С Байт: 1 Циклов: 1 Тактов 12 Код: 110 1 0 0 1 1 | Операция: SETB (С) <- 1 Синтаксис: Байт: Циклов: Тактов: SETB bit 2 1 12 Код: | 1 1 0 1 | 0 0 1 О | bit.address Операция: SETB (bit) <— 1 Команда SJMP По команде SJMP осуществляется безусловный переход в точку на- значения, расположенную в пределах от 128 байт, предшествующих ко- манде, до 127 байт, следующих за командой, путем сложения текущего содержимого счетчика команд PC и позиционно независимого смещения, представленного вторым байтом когда команда S...S. Байт позиционно независимого смещения интерпретируется как целое число со знаком в пределах от -128 до +127. Синтаксис: Байт: Циклов: Тактов: SJMP rel 2 2 24
ПРИЛОЖЕНИЕ 1. КОМАНДЫ МИКРОКОНТРОЛЛЕРОВ MCS-51 361 Код: |1000|0000~| rel.address Операция: SJMP (PC) <- (PC) + 2 (PC) <- (PC) + rel Команда SUBB По команде SUBB выполняются следующие действия: операнд-источник и бит признака переноса вычитаются из содержимо- го аккумулятора; результат записывается в аккумулятор; устанавливаются биты признаков результата (С), (AC), (OV) и (Р). Синтаксис: Байт: Циклов: Тактов: SUBB A, Rn 1 1 12 Код: 10 0 1 1 г г г | Операция: SUBB (А) <- (А) - (С) - (Rn) Синтаксис: Байт: Циклов: Тактов: SUBB A,direct 2 1 12 Код: 10 0 1 0 1 0 1 | | direct address | Операция: SUBB (А) <— (А) - (С) - (direct) Синтаксис: SUBB A, @Ri Байт: 1 Циклов: 1 Тактов 12 Код: 1 0 0 1 0 1 1 i Операция: SUBB (А) <- (А) Синтаксис: SUBB A, #data - (О- ((Ri)) Байт: 2 Циклов: 1 Тактов 12
362 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Код: | 1 0 0 1 0 10 0 immediate data Операция: SUBB (А) <- (А) - (С)- #data Команда SWAP По команде SWAP разряды 0-3 и 4-7 аккумулятора обмениваются со- держимым (т.е. содержимое аккумулятора циклически сдвигается на че- тыре двоичных разряда). Синтаксис: SWAP А Байт: Циклов: Тактов: 12 Код: | 1 1 0 0 | 0 1 0 0 Операция: SWAP (А3.0) <- (А7.4) Команда ХСН По команде ХСН в аккумулятор пересылается операнд-источник и одновременно на место операнда-источника пересылается первоначальное значение содержимого аккумулятора. Устанавливается признак четности. Синтаксис: Байт: Циклов: Тактов ХСН A, Rn 1 1 12 Код: | 1 10 0 1 г г г Операция: ХСН (А) <-> ((Rn)) Синтаксис: ХСН A, direct Байт: 2 Циклов: Тактов: 1 12 Код: 1 1 0 0 0 1 0 1 direct address Операция: ХСН (А) <-» (direct)
ПРИЛОЖЕНИЕ 1. КОМАНДЫ МИКРОКОНТРОЛЛЕРОВ MCS-51 363 Синтаксис: ХСН A, @Ri Байт: 1 Циклов: 1 Тактов: 12 Код: | 1 1 0 0 | 0 1 1 i Операция: ХСН (А) о ((Ri)) Команда XCHD По команде XCHD разряды 0-3 ячейки внутренней памяти данных, адрес которой находится в рабочем регистре R0 или R1, и аккумулятора обмениваются содержимым (содержимое 4-7 разрядов ячейки памяти и аккумулятора не изменяется). Устанавливается признак четности. Синтаксис: Байт: XCHD A, @Ri 1 Циклов: Тактов: 1 12 Код: | 1 1 0 1 | i Операция: XCHD (Аз-о) о ((Ri3-o)) Команда XRL По команде XRL выполняются следующие действия: операнд-источник поразрядно логически умножается на операнд при- емник; результат записывается на место операнда-приемника. Если в качестве операнда-приемника используется содержимое акку- мулятора, то устанавливается бит четности. Синтаксис: Байт: Циклов: XRL A, Rn 1 1 Код: | 0 1 1 0 | 1 ггг~| Тактов: 12 Операция: XRL (А) <- (А) V (Rn)
364 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Синтаксис: Байт: Циклов: Тактов: XRL A, direct 2 1 12 Код: 0 110 0 10 1 direct address Операция: XRL (А) *- (А) V (direct) Синтаксис: Байт: XRL A, @Ri 1 Циклов: Тактов: 1 12 Код: 0 110 0 1 1 i Операция: XRL (А) *- (А) V ((Ri)) Синтаксис: Байт: XRL A, #data 2 Циклов: Тактов: 1 12 Код: 0 110 0 10 0 immediate data Операция: XRL (А) *- (А) V #data Синтаксис: Байт: XRL direct, А 2 Циклов: Тактов: 1 12 Код: 0 110 0 0 10 direct address | Операция: XRL (direct)*- (direct)V(A) Синтаксис: Байт: Циклов: Тактов: XRL direct, #data 3 2 24 Код: 10 1 1 010 0 1 ~1~| | direct address | | immediate data | Операция: XRL (direct)*—(dir ect)V#data
ПРИЛОЖЕНИЕ 2 Система команд микроконтроллеров AVR Команда ADC Сложение двух регистров с учетом значения флага С, результат помещается в регистр Rd. Операция: Rd := Rd + Rr + С Синтаксис: ADC Rd,Rr Операнды: PC: 0<d<31, 0<r<31 PC := PC+1 Признаки: H,S,V,N,Z,C Слов: 1 (2 байта) Циклов: 1 Команда ADD Сложение двух регистров, результат помещается в регистр Rd. Операция: Rd := Rd + Rr Синтаксис: ADC Rd,Rr Операнды: PC: 0<d<31,0<r<31 PC := PC+1 Признаки: H,S,V,N,Z,C Слов: 1 (2 байта) Циклов: 1 Команда ADIW Сложение непосредственного значения (0-63) с содержимым регистровой пары, результат размещается в регистровой паре. В команде может быть использована одна из четырех регистровых пар. Команда удобна для операций с использованием регистра-указателя.
366 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Операция: Rdh:Rdl := RdhrRdl + К Синтаксис: ADIW Rdl,K Признаки: S,V,N,Z,C Слов: 1 (2 байта) Циклов: 2 Операнды: dl е [24,26,28,30], 0<;К<63 PC: PC := PC+1 Команда AND Выполняется операция AND с содержимым результат размещается в регистр Rd. Операция: Rd := Rd * Rr регистров Rd и Rr, Синтаксис: Операнды: AND Rd,Rr 0sd^31,0<r<31 PC: PC := PC+1 Признаки: V(0),S,N,Z Слов: 1 (2 байта) Циклов: 1 Команда ANDI Выполняется операция AND между содержимым регистра Rd и константой, результат размещается в регистре-приемнике Rd. Операция: Rd := Rd • К Синтаксис: Операнды: PC: ANDI Rd,К 16<d<31,0<K<255 PC := PC+1 Признаки: V(0),S,N,Z Слов: 1 (2 байта) Циклов: 1 Команда ASR Сдвиг всех битов регистра Rd на один разряд вправо. Бит 7 не изменяется. Бит 0 загружается во флаг С регистра SREG. Операция: Rd(i) := Rd(i+1) 0<i<7 Rd(7) := Rd(7) C := Rd(0)
ПРИЛОЖЕНИЕ 2. КОМАНДЫ МИКРОКОНТРОЛЛЕРОВ AVR ФИРМЫ ATMEL 367 Синтаксис: Операнды: PC: ASR Rd 0<d<31 PC := PC+1 Признаки: S,V,N,Z,C Слов: 1 (2 байта) Циклов: 1 Команда BCLR Очистка отдельного флага регистра SREG. Операция: SREG(s) := О Синтаксис: Операнды: PC: BCLR s 0<s<7 PC := PC+1 Признаки: I,T,H,S,V,N,Z,C Слов: 1 (2 байта) Циклов: 1 Команда BLD Копирует флаг Т регистра SREG в бит b регистра Rd. Операция: Rd(b) := Т Синтаксис: Операнды: PC: BLD Rd,b 0<d<3!, 0<b<7 PC := PC+1 Слов: 1 (2 байта) Циклов: 1 Команда BRBC Условный переход. Если бит регистра SREG очищен, то выполняется переход относительно PC. Операция: (i) if SREG(s) = 0 then PC else PC := PC + 1 := PC + k + 1, Синтаксис: BRBC s,k Операнды: 0<s<7, -64<k<63 PC: PC := PC + k + 1 PC := PC + 1, если SREG(s) * 0 Слов: 1 (2 байта)
368 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Циклов: 1, если условие = false 2, если условие = true Команда BRBS Условный переход. Если бит регистра SREG установлен, то выполняется переход относительно PC. Операция: G) if SREG(s) = 1 then PC := PC + k + 1, else PC := PC + 1 Синтаксис: BRBS s,k Операнды: PC: 0<s<7, -64<b<63 PC := PC + k + 1 PC := PC + 1, если SREG(s) * 1 Слов: 1 (2 байта) Циклов: 1, если условие = false 2, если условие = true Команда BRCC Переход, если флаг переноса С очищен. Операция: (i) if C = 0 then PC := PC + k + 1, else PC PC + 1 Синтаксис: BRCC k Операнды: PC: -64<k<63 PC := PC + k + 1 PC := PC + 1, если C * 0 Слов: 1 (2 байта) Циклов: 1, если условие = false 2, если условие = true Команда BRCS Переход, если флаг переноса С установлен. Операция: (i) if C = 1 then PC := PC + k + 1, else PC := PC + 1 Синтаксис: BRCS k Операнды: PC: -64<k<63 PC := PC + k + 1 PC := PC + 1, если C * 1 Слов: 1 (2 байта)
ПРИЛОЖЕНИЕ 2. КОМАНДЫ МИКРОКОНТРОЛЛЕРОВ AVR ФИРМЫ ATMEL 369 Циклов: 1, если условие = false 2, если условие = true Команда BREQ Условный переход, если установлен флаг Z. Если команда выполняется непосредственно после какой-либо из команд СР, CPL, SUB или SUBI, условный переход будет только в том случае, если содержимое Rd равно содержимому Rr. (Эквивалентна команде BRBS 1,к). Операция: if Rd = Rr (Z = 1) then PC := PC + к + 1, else PC := PC + 1 Синтаксис: BREQ к Операнды: -64<k<63 PC: PC := PC + к + 1 PC := PC + 1, если условие = false Слов: 1 (2 байта) Циклов: 1, если условие = false 2, если условие = true Команда BRGE Условный переход, если сброшен флаг знака S. Если команда выполняется непосредственно после какой-либо из команд СР, CPL, SUB или SUBI, условный переход будет только в том случае, если число со знаком в Rd, больше или равно числа со знаком в Rr. (Эквивалентна команде BRBC 4,к). Операция: if Rd > Rr (N xor V = 0) then PC := PC + к + 1, else PC := PC + 1 Синтаксис: Операнды: PC: BRGE к -64<k<63 PC := PC + к + 1 PC := PC + 1, если условие = false Слов: 1 (2 байта) Циклов: 1, если условие - false 2, если условие = true Команда BRHC Условный переход, если сброшен флаг полупереноса к (Эквивалентна команде BRBC 5,к).
370 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Операция: if Н = О then PC := PC + к + 1, Синтаксис: BRHC к else PC := PC + 1 Операнды: -64<к<63 Слов: Циклов: 1 (2 байта) PC: PC := PC + к + 1 PC := PC + 1, если условие = false 1, если условие = false 2, если условие = true Команда BRHS Условный переход, если установлен флаг полупереноса Н. (Эквивалентна команде BRBS 5,к). Операция: if Н = О then PC := PC + к + 1, else PC := PC + 1 Синтаксис: BRHS к Операнды: -64<k<63 PC: PC := PC + к + 1 PC := PC + 1, если условие = false Слов: Циклов: 1 (2 байта) 1, если условие = false 2, если условие = true Команда BRID Условный переход, если сброшен флаг общего прерывания I. (Эквивалентна команде BRBC 7,к). Операция: if I = 0 then PC := PC + к + 1, Синтаксис: BRID к else PC := PC + 1 Операнды: -64<k<63 Слов: Циклов: 1 (2 байта) 1, если условие = false 2, если условие = true PC: PC := PC + к + 1 PC := PC + 1, если условие = false
ПРИЛОЖЕНИЕ 2. КОМАНДЫ МИКРОКОНТРОЛЛЕРОВ AVR ФИРМЫ АТМВ. 371 Команда BRIE Условный переход, если установлен флаг общего прерывания I. (Эквивалентна команде BRBS 7,к). Операция: if I = 1 then PC := PC + к + 1, else PC := PC + 1 Операнды: -64<k<63 Синтаксис: BRIE к Слов: Циклов: 1 (2 байта) 1, если условие = false 2, если условие = true PC: PC := PC + к + 1 PC := PC + 1, если условие = false Команда BRLO Условный переход, если установлен флаг переноса С. Если команда выполняется непосредственно после какой-либо из команд СР, CPL, SUB или SUBI, условный переход будет только в том случае, если число без знака в Rd меньше числа без знака в Rr. (Эквивалентна команде BRBS О,к). Операция: if Rd < Rr (С = 1) then PC := PC + к + 1, else PC := PC + 1 Синтаксис: BRLO к Операнды: -64^к<63 PC: PC := PC + к + 1 PC := PC + 1, если условие = false Слов: Циклов: 1 (2 байта) 1, если условие = false 2, если условие = true Команда BRLT Условный переход, если установлен флаг знака S. Если команда выполняется непосредственно после какой-либо из команд СР, CPL, SUB или SUBI, условный переход будет только в том случае, если число со знаком в Rd меньше числа со знаком в Rr. (Эквивалентна команде BRBS 4,к). Операция: if Rd < Rr (N хог V = 1) then PC := PC + к + 1, else PC := PC + 1
372 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Синтаксис: Операнды: PC: BRLTk -64<к<63 PC := PC + k + 1 PC := PC + 1, если условие = false Слов: 1 (2 байта) Циклов: 1, если условие = false 2, если условие = true Команда BRMI Условный переход, если установлен флаг отрицательного результата N. (Эквивалентна команде BRBS 2,к). Операция: if N = 1 then PC := PC + к + 1, else PC := PC + 1 Синтаксис: Операнды: PC: BRMI к -64<k<63 PC := PC + к + 1 PC := PC + 1, если условие = false Слов: 1 (2 байта) Циклов: 1, если условие = false 2, если условие = true Команда BRNE Условный переход, если сброшен флаг нуля Z. Если команда выполняется непосредственно после какой-либо из команд СР, CPL, SUB или SUBI, условный переход будет только в том случае, если содержимое в Rd неравно содержимому в Rr. (Эквивалентна команде BRBC l,k) Операция: if Rd Ф Rr (Z = 0) then PC := PC + k + 1, else PC := PC + 1 Синтаксис Операнды: PC: BRNE k -64<k<63 PC := PC + k + 1 Слов: Циклов: 1 (2 байта) 1, если условие = false 2, если условие = true PC := PC + 1, если условие = false Команда BRPL Условный переход, если сброшен флаг отрицательного результата N. (Эквивалентна команде BRBC 2,к).
ПРИЛОЖЕНИЕ 2. КОМАНДЫ МИКРОКОНТРОЛЛЕРОВ AVR ФИРМЫ ATMEL 373 Операция: if N = 0 then PC := PC + к + 1, else PC := PC + 1 Синтаксис : Операнды: PC: BRPL к -64<k<63 PC := PC + k + 1 Слов: Циклов: 1 (2 байта) 1, если условие = false 2, если условие = true PC := PC + 1, если условие = false Команда BRSH Условный переход, если сброшен флаг переноса С. Если команда выполняется непосредственно после какой-либо из команд СР, CPL, SUB или SUBI, условный переход будет только в том случае, если число без знака в Rd больше или равно числу без знака в Rr. (Эквивалентна команде BRBC 0,к). Операция: if Rd > Rr (С = 0) then PC := PC + к + 1, else PC := PC + 1 Синтаксис Операнды: PC: BRSH k -64<k<63 PC := PC + k + 1 Слов: Циклов: 1 (2 байта) 1, если условие = false 2, если условие = true PC := PC + 1, если условие = false Команда BRTC Условный переход, если сброшен флаг передачи Т. (Эквивалентна команде BRBC 6,к). Операция: if T = 0 then PC := PC + k + 1, else PC PC + 1 Синтаксис Операнды: PC: BRTC k -64<k<63 PC := PC + k + 1 Слов: Циклов: 1 (2 байта) 1, если условие = false PC := PC + 1, если условие = false 2, если условие — true
374 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Команда BRTS Условный переход, если установлен флаг передачи Т. (Эквивалентна команде BRBS 6,к). Операция: if Т = 1 then PC := PC + к + 1, else PC := PC + 1 Синтаксис: Операнды: PC: BRTS к -64<k<63 PC := PC + к + 1 PC := PC + 1, если условие = false Слов: 1 (2 байта) Циклов: 1, если условие = false 2, если условие = true Команда BRVC Условный переход, если сброшен флаг переполнения V. (Эквивалентна команде BRBC 3,к). Операция: if V = 0 then PC := PC + к + 1, else PC := PC + 1 Синтаксис: Операнды: PC: BRVC к -64<k<63 PC := PC + к + 1 PC := PC + 1, если условие = false Слов: 1 (2 байта) Циклов: 1, если условие = false 2, если условие = true Команда BRVS Условный переход, если установлен флаг переполнения V. (Эквивалентна команде BRBS 3,k). Операция: if V = 1 then PC := PC + k + 1, else PC := PC + 1 Синтаксис: Операнды: PC: BRVS k -64<k<63 PC := PC + k + 1 PC := PC + 1, если условие = false Слов: 1 (2 байта) Циклов: 1, если условие = false 2, если условие = true
ПРИЛОЖЕНИЕ 2. КОМАНДЫ МИКРОКОНТРОЛЛЕРОВ AVR ФИРМЫ ATMEL 375 Команда BSET Установка флага в регистре SREG. Операция: SREG(s) := 1 Синтаксис: Операнды: PC: BSET s 0<s<7 PC := PC + 1 Признаки: I,T,H,S,V,N,Z,C Слов: 1 (2 байта) Циклов: 1 Команда BST Копирует бит b регистра Rd во флаг Т регистра SREG. Операция: Т := Rd(b) Синтаксис: Операнды: PC: BST Rd,b 0<d<31,0<b<7 PC := PC + 1 Признаки: T Слов: 1 (2 байта) Циклов: 1 Команда CALL Вызов подпрограммы, расположенной по любому адресу пространства памяти программ. Адрес возврата (команды, следующей за CALL) запоминается в стеке, (см. также RCALL). Операция: PC := к Синтаксис: Операнды: PC: CALL k 0<k<64K PC := k Слов: 2 (4 байта) Циклов: 4 Команда CBI Очищает определенный бит в регистре определена для младших 32 регистров (0..31). Операция: 1/О(Р,Ь) := 0 Стек: STACK := PC + 2 SP := SP - 2 ввода/вывода. Команда
376 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Синтаксис: CBI Р,Ь Операнды: 0<Р<31, 0<Ь<7 PC: PC := PC + 1 Слов: 1 (2 байта) Циклов: 2 Команда CLC Очищает флаг переноса С в регистре SREG. Операция: С := О Синтаксис: CLC Операнды: PC: PC := PC + 1 Признаки: С(0) Слов: 1 (2 байта) Циклов: 1 Команда CLH Очищает флаг полупереноса Н в регистре SREG. Операция: Н := О Синтаксис: CLH Операнды: PC: PC := PC + 1 Признаки: Н(0) Слов: 1 (2 байта) Циклов: 1 Команда CLI Очищает флаг прерываний I в регистре SREG. Операция: I := О Синтаксис: CLI Операнды: PC: PC := PC + 1 Признаки:1(0) Слов: 1 (2 байта) Циклов: 1
ПРИЛОЖЕНИЕ 2. КОМАНДЫ МИКРОКОНТРОЛЛЕРОВ AVR ФИРМЫ ATMEL 377 Команда CLN Очищает флаг отрицательного результата N в регистре SREG. Операция: N := О Синтаксис: CLN Операнды: PC: PC := PC + 1 Признаки: N(0) Слов: 1 (2 байта) Циклов: 1 Команда CLR Очищает регистр. Команда выполняет операцию ИСКЛЮЧАЮЩЕЕ ИЛИ над регистром и этим же регистром. Все биты регистра сбрасываются. Операция: Rd := Rd хог Rd Синтаксис: CLR Rd Операнды: 0<d<31 PC: PC := PC + 1 Признаки: S(0),V(0),N(0),Z(l) Слов: 1 (2 байта) Циклов: 1 Команда CLS Очищает флаг знака S в регистре SREG. Операция: S := О Синтаксис: CLS Операнды: PC: PC := PC + 1 Признаки: S(0) Слов: 1 (2 байта) Циклов: 1 Команда CLT Очищает флаг Т в регистре SREG. Операция: Т := О Синтаксис: CLT Операнды: PC: PC := PC + 1
378 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Признаки: Т(0) Слов: 1 (2 байта) Циклов: 1 Команда CLV Очищает флаг переполнения V в регистре SREG. Операция: V := О Синтаксис: CLV Операнды: PC: PC := PC + 1 Признаки: V(0) Слов: 1 (2 байта) Циклов: 1 Команда CLZ Очищает флаг нулевого результата Z в регистре SREG. Операция: Z := О Синтаксис: CLZ Операнды: PC: PC := PC + 1 Признаки: Z(0) Слов: 1 (2 байта) Циклов: 1 Команда СОМ Выполняет операцию дополнения до единицы регистра Rd. Операция: Rd := SFF - Rd Синтаксис: COM Rd Операнды: 0<d<31 PC: PC := PC + 1 Признаки: S,V(O),N,Z,C(1) Слов: 1 (2 байта) Циклов: 1
ПРИЛОЖЕНИЕ 2. КОМАНДЫ МИКРОКОНТРОЛЛЕРОВ AVR ФИРМЫ ATMEL 379 Команда СР Сравнение регистров Rd и Rr. содержимое регистров не меняется. Операция: Rd - Rr Синтаксис: Операнды: СР Rd,Rr 0<d<31,0<r<31 Признаки: H,S,V,N,Z,C Слов: 1 (2 байта) Циклов: 1 PC: PC := PC + 1 Команда CPC Сравнение регистров Rd и Rr с учетом предыдущего переноса. Содержимое регистров не меняется. Операция: Rd - Rr- С Синтаксис: Операнды: PC: CPC Rd.Rr 0<d<31, 0<r<31 PC := PC + 1 npH3HaKH:H,S,V,N,Z,C Слов: 1 (2 байта) Циклов: 1 Команда CPI Сравнение регистра меняется. Операция: Rd - К Синтаксис: CPI Rd,К Rd с константой. Содержимое регистра не Операнды: 16<d<31, 0<К<255 PC: РС:=РС+ 1 Признаки: H,S,V,N,Z,C Слов: 1 (2 байта) Циклов: 1 Команда CPSE Сравнение регистров Rd и Rr и пропуск следующей команды, если Rd = Rr. Операция: if Rd = Rr then PC := PC + 2 (или 3) else PC := PC + 1
380 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Синтаксис: Операнды: PC: CPSE Rd,Rr 0<d<31,0<r<31 PC := PC + 1, условие false PC := PC + 2, пропуск однословной команды PC := PC + 3, пропуск двухсловной команды Слов: 1 (2 байта) Циклов: 1 Команда DEC Вычитает 1 из содержимого регистра Rd и размещает результат в регистре Rd. Флаг С не изменяется. Операция: Rd := Rd - 1 Синтаксис: Операнды: PC: DEC Rd 0<d<31 PC := PC + 1 Признаки: S,V,N,Z Слов: 1 (2 байта) Циклов: 1 Команда EOR Выполняет операцию ИСКЛЮЧАЮЩЕЕ ИЛИ над содержимым регистров Rd и Rr. Результат размещается в регистре Rd. Операция: Rd := Rd xor Rr Синтаксис: Операнды: PC: EOR Rd,Rr 0<d<31, 0<r<31 PC-PC+1 Признаки: S,V(O),N,Z Слов: 1 (2 байта) Циклов: 1 Команда [CALL Косвенный вызов подпрограммы через указатель в регистре Z. Регистр-указатель Z является 16-битным и позволяет адресовать 64 Келов (128 Кбайт) памяти программ.
ПРИЛОЖЕНИЕ 2. КОМАНДЫ МИКРОКОНТРОЛЛЕРОВ AVR ФИРМЫ ATMEL 381 Операция: РС(15-0) := Z(15-0) Синтаксис: Операнды: PC: ICALL см. Операция Стек: STACK := PC +1 SP := SP - 2 Слов: 1 (2 байта) Циклов: 3 Команда IJMP Косвенный переход по адресу в регистре-указателе Z. Регистр- указатель Z является 16-битным и позволяет адресовать 64 Келов (128 Кбайт) памяти программ. Операция: PC := Z(15-0) Синтаксис: Операнды: PC: Стек: ЦМР см. Операция Не изменяется Слов: 1 (2 байта) Циклов: 2 Команда IN Загружает данные из пространства ввода/вывода (порты, таймеры, регистры конфигурации) в регистр Rd регистрового файла. Операция: Rd := Р Синтаксис: Операнды: PC: IN Rd,P 0<d<31, 0<P<63 PC := PC + 1 Слов: 1 (2 байта) Циклов: 1 Команда INC Добавляет 1 к содержимому регистра Rd и размещает результат в регистре Rd. Флаг С не изменяется. Операция: Rd := Rd + 1 Синтаксис: INC Rd Операнды: 0<d<31 PC: PC := PC + 1
382 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Признаки: S,V,N,Z Слов: 1 (2 байта) Циклов: 1 Команда JMP Переход по адресу в пространстве 4 Мбайт памяти программ. Операция: PC := к Синтаксис: Операнды: PC. Стек: JMP к 0<к<4М Слов: 2 (4 байта) Циклов: 3 PC := к не изменяется Команда LD Загружает байт из ячейки SRAM в регистр. Адрес SRAM содержится в одном из 16-битных регистров-указателей X, Y или Z регистрового файла. Доступ к памяти осуществляется внутри текущей страницы SRAM (64 Кбайт). Для доступа к другой странице SRAM необходимо изменить номер страницы в регистре RAMPX, RAMPY или RAMPZ (в зависимости от выбранного регистра-указателя) Операция: Комментарий: Rd := (R) R - X/Y/Z: Не изменяется. (ii)Rd := (R), R := R+l R - X/Y/Z: После инкрементирования (iii)R := R-l, Rd := (R) R - X/Y/Z: До декрементирования Синтаксис: Операнды: PC: Обозначения: LD Rd,R 0<d<31 PC := PC + 1, R - X/Y/Z (ii)LD Rd,R+ 0<d<31 PC := PC + 1, R - X/Y/Z (iii)LD Rd,-R 0<d<31 PC := PC + 1, R - X/Y/Z Слов: 1 (2 байта) Циклов: 2 Команда LDD Загружает байт из ячейки SRAM в регистр. Адрес SRAM находится в одном из 16-битных регистров-указателей Y или Z регистрового файла. Доступ к памяти осуществляется внутри текущей страницы SRAM (64 Кбайт). Для доступа к другой странице SRAM необходимо изменить номер страницы в регистре RAMPY или RAMPZ (в зависимости от выбранного регистра-указателя).
ПРИЛОЖЕНИЕ 2. КОМАНДЫ МИКРОКОНТРОЛЛЕРОВ AVR ФИРМЫ ATMEL 383 Операция: Rd := (R+q) Комментарий: R - Y/Z: Не изменяется; q - Смещение. Синтаксис: Операнды: PC: Обозначения: LDD Rd,R+q 0<d<31, PC := PC + 1 R - Y/Z 0<q<63 Слов: 1 (2 байта) Циклов: 2 Команда LDI Загружает 8-битную константу в один из регистров R16-R31. Операция: Rd := К Синтаксис: LDI Rd,К Операнды: PC: 16<d<31, PC := PC + 1 0<K<255 Слов: 1 (2 байта) Циклов: 1 Команда LDS Загружает байт из ячейки SRAM в регистр. 16-битный адрес задается непосредственно в команде. Доступ к памяти ограничен текущей страницей (64 Кбайта). Для доступа к памяти выше 64 Кбайт используется регистр RAMPZ. Операция: Rd := (к) Синтаксис: LDS Rd,k Операнды: PC: 0<d<31, PC := PC + 2 0<K<65535 Слов: 2 (4 байта) Циклов: 3 Команда LPM Загружает байт, адресуемый регистром Z, в регистр О (R0). Команда обеспечивает доступ к любому байту памяти программ, организованной как 16-битные слова. Команда адресует первые 64 Кбайта (32 Келов) памяти программ. Старший бит регистра Z определяет, осуществляется ли доступ к младшему байту слова (0) или старшему (1).
384 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Операция: RO := (Z) Синтаксис: LPM Комментарий: Z указывает адрес памяти программ Операнды: PC: PC := PC + 1 Слов: 1 (2 байта) Циклов: 3 Команда LSL Сдвиг всех битов в регистре Rd на один разряд влево. Бит О обнуляется, бит 7 загружается во флаг С регистра SREG. Команда эффективна для умножения беззнаковых значений на 2. Операция: Rd(i+1) = Rd(i), i = 0..6 Rd(0) = 0 С = Rd (7) Синтаксис: Операнды: PC: LSL Rd 0<d<31 PC := PC + 1 Признаки: H,S,V,N,Z,C Слов: 1 (2 байта) Циклов: 1 Команда LSR Сдвиг всех битов в регистре Rd на один разряд вправо. Бит 7 обнуляется, бит 0 загружается во флаг С регистра SREG. Команда эффективна для деления беззнаковых значений на 2. Операция: Rd(I - 1) := Rd(i), i = 1..7 Rd(7):= О С := Rd(0) Синтаксис: Операнды: PC: LSR Rd 0<d<31 PC := PC + 1 Признаки: S,V,N(0),Z,C Слов: 1 (2 байта) Циклов: 1 Команда MOV Содержимое регистра Rr копируется в регистр Rd. Содержимое регистра Rr не изменяется. Операция: Rd := Rr
ПРИЛОЖЕНИЕ 2. КОМАНДЫ МИКРОКОНТРОЛЛЕРОВ AVR ФИРМЫ ATMEL 385 Синтаксис: MOV Rd,Rr Операнды: 0<d<31, 0<r<31 PC: PC := PC + 1 Слов: 1 (2 байта) Циклов: 1 Команда MUL Перемножаются два 8-битных числа, множимое и множитель находятся в двух 8-битных регистрах. 16-битный результат размещается в регистры R1 (старший байт) и R0 (младший байт). Если множимое и множитель выбираются из R0 или R1, их содержимое изменится после операции умножения. Операция: R1:RO := Rr * Rd Синтаксис: Операнды: PC: MUL Rd,Rr 0<d<31, PC := PC + 1 0<r<31 Слов: 1 (2 байта) Циклов: 2 Команда NEG Заменяет содержимое регистра Rd его двоичным дополнением. Операция: Rd := $00 - Rd Синтаксис: NEG Rd Операнды: 0<d<31 PC: PC := PC + 1 Признаки: H,S,V,N,Z,C Слов: 1 (2 байта) Циклов: 1 Команда NOP Команда не инкрементируется. Синтаксис: NOP выполняет операции, Операнды: программный счетчик PC: PC := PC + 1 Слов: 1 (2 байта) Циклов: 1
386 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Команда OR Выполняется логическая операция ИЛИ над содержимым регистров Rd и Rr, результат размешается в регистре Rd. Операция: Rd := Rd or Rr Синтаксис: Операнды: OR Rd,Rr 0<d<31, 0<r<31 Признаки: S,V(0),N,Z Слов: 1 (2 байта) Циклов: 1 PC: PC := PC + 1 Команда ORI Выполняется логическая операция ИЛИ над содержимым регистра Rd и константой, результат размещается в регистре Rd. Операция: Rd := Rd or К Синтаксис: ORI Rd,К Признаки: S,V(0),N,Z Слов: 1 (2 байта) Циклов: 1 Операнды: 16<d<31, 0<К<255 PC: PC := PC + 1 Команда OUT Сохраняет данные регистра Rr в регистре пространства ввода/вывода (порты, таймеры, регистры конфигурации и др.). Операция: Р := Rr Синтаксис: Операнды: OUT P,Rr 0<r<31, 0<Р<63 Слов: 1 (2 байта) Циклов: 1 PC: PC := PC + 1 Команда POP Загружает байт данных из стека в регистр Rd. Операция: Rd := STACK
ПРИЛОЖЕНИЕ 2. КОМАНДЫ МИКРОКОНТРОЛЛЕРОВ AVR ФИРМЫ ATMEL 387 Синтаксис: Операнды: PC: Стек: POP Rd 0<d<31 PC := PC + 1 sp-sp+i Слов: 1 (2 байта) Циклов: 2 Команда PUSH Сохраняет содержимое регистра Rr в стеке. Операция: STACK := Rr Синтаксис: Операнды: PC: PUSH Rr 0<r<31 PC := PC + 1 Слов: 1 (2 байта) Стек: sp-sp-i Циклов: 2 Команда RCALL Вызов подпрограммы, находящейся в диапазоне адресов [- 2 Келов .. + 2 К слов] относительно текущего. Адрес возврата. (См. также CALL). Операция: PC := PC + k + 1 Синтаксис: Операнды: PC: RCALL k -2K<k<2K PC : = PC + k + 1 Стек: STACK := PC + 1 SP := SP - 2 Слов: 1 (2 байта) Циклов: 3 Команда RET Возврат из подпрограммы. Адрес возврата загружается из стека. Операция: РС(15-0) := STACK Синтаксис: Операнды: PC: Стек: RET РС(15 - 0) := STACK SP := SP + 2 Слов: 1 (2 байта) Циклов: 4
388 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Команда RETI Возврат из прерывания. Адрес возврата загружается из стека. Устанавливается общий флаг прерываний I. Операция: РС(15-0) := STACK Синтаксис: Операнды: PC: Стек: RETI РС(15 - 0) = STACK SP = SP+2 Признаки: 1(1) Слов: 1 (2 байта) Циклов: 4 Команда RJMP Переход по адресу в диапазоне [PC -2К..РС+2К] слов. В ассемблере вместо относительных адресов используются символические метки. Операция: PC := PC + k + 1 Синтаксис: Операнды: PC: RJMP k -2K<k<2K PC := PC + k + 1 Стек: He изменяется Слов: 1 (2 байта) Циклов: 2 Команда ROL Сдвигает все биты регистра Rd на один разряд влево. Флаг С сдвигается в бит 0 регистра Rd. Бит 7 регистра Rd сдвигается во флаг С. Операция: Сс=Ь7с=Ь6<=.. .<=Ь0<=С Синтаксис: Операнды: PC: Признаки: ROL Rd 0<d<31 PC := PC + 1 H,S,V,N,Z,C Слов: 1 (2 байта) Циклов: 1 Команда ROR Сдвигает все биты регистра Rd на один разряд вправо. Флаг С сдвигается в бит 7 регистра Rd. Бит 0 регистра Rd сдвигается во флаг С. Операция: С=>Ь7=>Ь6=>... =>Ь0=>С
ПРИЛОЖЕНИЕ 2. КОМАНДЫ МИКРОКОНТРОЛЛЕРОВ AVR ФИРМЫ ATMEL 389 Синтаксис: Операнды: ROR Rd 0<d<31 Слов: 1 (2 байта) Циклов: 1 PC: PC := PC + 1 Признаки: S,V,N,Z,C Команда SBCI Вычитает из регистра константу с учетом значения флага С, размещает результат в регистре Rd. Операция: Rd := Rd - К - С Синтаксис: Операнды: SBCI Rd,К 16<d<31, 0<К<255 Признаки: H,S,V,N,Z,C Слов: 1 (2 байта) Циклов: 1 PC: PC := PC + 1 Команда SBI Устанавливает определенный бит в регистре ввода/вывода. Команда работает с нижними 32 регистрами ввода/вывода (с адресами в диапазоне 0-31). Операция: I/O(P,b) := 1 Синтаксис: Операнды: SBI Р,Ь 0<Р<31, 0<Ь<7 PC: PC := PC + 1 Слов: 1 (2 байта) Циклов: 2 Команда SBIC Тестирует отдельный бит в регистре ввода/вывода и пропускает следующую команду, если бит сброшен. Команда работает с нижними 32 регистрами ввода/вывода (адреса 0-31). Операция: if I/O(P,b) = 0 then PC := PC + 2 (or 3) else PC := PC + 1
390 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Синтаксис: Операнды: SBIC Р,Ь 0<Р<31, 0<Ь<7 PC: PC := PC + 1, если условие false PC := PC + 2, если следующая команда однословная PC := PC + 3, если следующая команда двухсловная Слов: 1 (2 байта) Циклов: 2 если условие false 3 если условие true Команда SBIS Тестирует отдельный бит в регистре ввода/вывода и пропускает следующую команду, если бит установлен. Команда работает с нижними 32 регистрами ввода/вывода (адреса 0-31). Операция: if I/O(P,b) = 1 then PC := PC + 2 (or 3) else PC := PC + 1 Синтаксис: Операнды: SBIS P,b 0<P<31, 0<b<7 PC: PC := PC + 1, если условие false PC := PC + 2, если следующая команда однословная PC := PC + 3, если следующая команда двухсловная Слов: 1 (2 байта) Циклов: 2 если условие false 3 если условие true Команда SBIW Вычитает непосредственное значение (0 - 63) из регистровой пары и размещает результат в регистровой паре. Команда работает с верхними четырьмя регистровыми парами и удобна для операций с регистрами- указателями. Операция: Rdh:Rdl := RdlrRdl - К
ПРИЛОЖЕНИЕ 2. КОМАНДЫ МИКРОКОНТРОЛЛЕРОВ AVR ФИРМЫ ATMEL 391 Синтаксис: SBIW Rdl,K Операнды: PC: dl g [24,26,28,30] PC := PC + 1 0<K<63 Признаки: S,V,N,Z,C Слов: 1 (2 байта) Циклов: 2 Команда SBR Устанавливает определенные биты регистра Rd. Выполняет операцию логическое ИЛИ над содержимым регистра Rd и константой К, размещает результат в регистре Rd. Операция: Rd := Rd or К Синтаксис: SBR Rd,К Операнды: PC: 16<d<31, PC := PC + 1 0<K<255 Признаки: S,V(0),N,Z Слов: 1 (2 байта) Циклов: 1 Команда SBRC Тестирует отдельный бит регистра и пропускает следующую команду, если бит сброшен. Операция: if Rr(b) = 0 then PC := PC + 2 (or 3) else PC := PC + 1 Синтаксис: SBRC Rr,b Операнды: 0<r<31, 0<b<7 PC: PC := PC + 1, если условие false PC := PC + 2, если следующая команда однословная PC := PC + 3, если следующая команда двухсловная Слов: 1 (2 байта) Циклов: 1 если условие false 2 если условие true
392 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Команда SBRS Тестирует отдельный бит регистра и пропускает следующую команду, если бит установлен. Операция: if Rr(b) = 1 then PC := PC + 2 (or 3) else PC := PC + 1 Синтаксис: Операнды: SBRS Rr,b 0<r<31, 0<b<7 PC: PC := PC + 1, если условие false PC := PC + 2, если следующая команда однословная PC := PC + 3, если следующая команда двухсловная Слов: 1 (2 байта) Циклов: 1 если условие false 2 если условие true Команда SEC Устанавливает флаг переноса (С) в регистре SREG Операция: С := 1 Синтаксис: Операнды: PC: SEC PC := PC + 1 Слов: 1 (2 байта) Циклов: 1 Признаки: С(1) Команда SEH Устанавливает флаг полупереноса (Н) в регистре SREG. Операция: Н := 1 Синтаксис: Операнды: PC: SEH PC := PC + 1 Слов: 1 (2 байта) Циклов: 1 Признаки. Н(1)
ПРИЛОЖЕНИЕ 2. КОМАНДЫ МИКРОКОНТРОЛЛЕРОВ AVR ФИРМЫ ATMEL 393 Команда SEI Устанавливает общий флаг прерываний I в регистре SREG. Операция: I := 1 Синтаксис: SEI Операнды: PC: PC := PC + 1 Признаки: 1(1) Слов: 1 (2 байта) Циклов: 1 Команда SEN Устанавливает флаг отрицательного результата N в регистре SREG. Операция: N := 1 Синтаксис: SEN Операнды: PC: PC := PC + 1 Признаки: N(l) Слов: 1 (2 байта) Циклов: 1 Команда SER Загружает $FF непосредственно в регистр Rd. Операция: Rd := $FF Синтаксис: SER Rd Операнды: 16<d<31 PC: PC := PC + 1 Слов: Циклов: 1 (2 байта) 1 Команда SES Устанавливает флаг знака S в регистре SREG. Операция: S := 1 Синтаксис: SES Операнды: PC: PC := PC + 1 Признаки: S(l)
394 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Слов: 1 (2 байта) Циклов: 1 Команда SET Устанавливает флаг Т в регистре SREG. Операция: Т := 1 Синтаксис: SET Операнды: PC: Признаки: PC := PC + 1 T(l) Слов: 1 (2 байта) Циклов: 1 Команда SEV Устанавливает флаг переполнения V в регистре SREG. Операция: V := 1 Синтаксис: Операнды: SEV Слов: 1(2 байта) Циклов: 1 PC: PC := PC + 1 Признаки: V(l) Команда SEZ Устанавливает флаг нулевого результата Z в регистре SREG. Операция: Z := 1 Синтаксис: Операнды: SEZ Слов: 1 (2 байта) Циклов: 1 PC: PC := PC + 1 Признаки: Z(l)
ПРИЛОЖЕНИЕ 2. КОМАНДЫ МИКРОКОНТРОЛЛЕРОВ AVR ФИРМЫ ATMEL 395 Команда SLEEP Устанавливает «спящий» режим в зависимости от состояния регистра управления MCUCR. При появлении прерывания контроллер «просыпается», выполняет одну команду после SLEEP и затем отрабатывает прерывание. Синтаксис: Операнды: PC: SLEEP PC :=РС + 1 Слов: 1 (2 байта) Циклов: 1 Команда ST Загружает один байт из регистра в SRAM. Адрес ячейки SRAM находится в одном из 16-битных регистров-указателей X, Y или Z регистрового файла. Доступ к памяти осуществляется внутри текущей страницы SRAM (64 Кбайта). Для доступа к другой странице SRAM необходимо изменить номер страницы в регистре RAMPX, RAMPY или RAMPZ (в зависимости от выбранного регистра-указателя). Операция: (i) (R) := Rr (ii) (R) := Rr, R := R+l Комментарий: R - X/Y/Z: Не изменяется. R - X/Y/Z: (iii) R := R-l, (R) := Rr После инкрементирования R - X/Y/Z: До декрементирования Синтаксис: Операнды: PC: Обозначения ST R,Rr 0<r<31 PC :=PC+1 R-X/Y/Z (ii)ST R+,Rr 0<r<31 PC -PC+1 R-X/Y/Z (iii)ST -R,Rr 0<r<31 PC -PC+1 R-X/Y/Z Слов: 1 (2 байта) Циклов: 2 Команда STD Загружает один байт из регистра в SRAM. Адрес ячейки SRAM находится в одном из 16-битных регистров-указателей Y или Z регистрового файла. Доступ к памяти осуществляется внутри текущей страницы SRAM (64К байта). Для доступа к другой странице SRAM необходимо изменить номер страницы в регистре RAMPY или RAMPZ (в зависимости от выбранного регистра-указателя).
396 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Операция: (R+q) := Rr Комментарий: R - Y/Z: Не изменяется; q - Смещение. Синтаксис: STD R+q, Rr Операнды: 0<г<31, 0<q<63 PC: PC := PC + 1 Обозначения: R Y/Z Слов: 1 (2 байта) Циклов: 2 Команда STS Запоминание байта из регистра в ячейке SRAM. 16-битный адрес должен быть корректен. Доступ к памяти ограничен текущей страницей SRAM (64 Кбайта). Для доступа к памяти выше 64 Кбайт используется регистр RAMPZ. Операция: (k) := Rr Синтаксис: STS k,Rr Операнды: 0<r<31, 0<k<65535 PC: PC := PC + 2 Слов: 2 (4 байта) Циклов: 3 Команда SUB Вычитание содержимого двух регистров. Результат размещается в регистре Rd. Операция: Rd := Rd - Rr Синтаксис: SUB Rd,Rr Операнды: 0<d<31, 0<r<31 PC: PC :=PC+1 Признаки: H,S,V,N,Z,C Слов: 1 (2 байта) Циклов: 1
ПРИЛОЖЕНИЕ 2. КОМАНДЫ МИКРОКОНТРОЛЛЕРОВ AVR ФИРМЫ ATMEL 397 Команда SUBI Вычитание константы из содержимого регистра. Результат размещается в регистре Rd. Команда работает с регистрами R16-R31. Операция: Rd := Rd - К Синтаксис: Операнды: SUBI Rd,К 16<d<31, 0<К<255 PC: РС-РС+1 Признаки: H,S,V,N,Z,C Слов: 1 (2 байта) Циклов: 1 Команда SWAP Меняет местами старший и младший тетрады регистра. Операция: R(7-4) := Rd(3-0), R(3-0) := Rd(7-4) Синтаксис: Операнды: SWAP Rd 0<d<31 Слов: 1 (2 байта) Циклов: 1 PC: PC := PC + 1 Команда TST Тестирует регистр на нулевой или отрицательный результат. Выполняет операцию AND регистра с самим собой. Регистр остается неизмененным. Операция: Rd and Rd Синтаксис: TST Rd Операнды: 0<d<31 PC: PC := PC + 1 Признаки: S,V(0),N,Z Слов: 1 (2 байта) Циклов: 1 Команда WDR Перезапуск Watchdog таймера.
398 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ Операция: WD- таймер начинает считать с исходного значения. Синтаксис: Операнды: PC: WDR PC := PC + 1 Слов: 1 (2 байта) Циклов: 1
Литература 1. В.Б.Бродин, И.И.Шагурин «Микроконтроллеры: архитектура, программирование, интерфейс», М., «ЭКОМ», 1999г. 2. В.Б.Стешенко «ПЛИС фирмы Altera: проектирование устройств обработки сигналов», М., «Додека», 2000г. 3. А.П.Антонов «Язык описания цифровых устройств AlteraHDL», М., «РадиоСофт», 2001г. 4 М.Предко «Руководство по микроконтролерам», перевод с англ., М., «Предприятие Постмаркет», 2001г. 5. Д.И.Сучков «Проектирование печатных плат в САПР P-CAD4.5, P-CAD 8.5 и ACCEL EDA», М., «Малип», 1997г. 6 В.Д.Розевиг «Система проектирования цифровых устройств OrCAD», М , «Солон-Р», 2000г. 7. MicroConverter Products AduC812 User’s Manual. Analog Devices, Inc., 2000 8 AVR RISC microcontrollers Data Book. Atmel Corp., 1999 9. Altera Digital Library CD-ROM, Version 3 (P-CD-ADL2001 03)
Бродин В.Б., Калинин А.В. Системы на микроконтроллерах и БИС программируемой логики Главный редактор Н.Б. Григорьева Технический директор Е.Б. Новиков Главный художник О.Б. Будко ПОЛЬЗОВАТЕЛЬ Рдга(-)Туре IN LEGAL USE Подписано в печать 24.12.2001. Формат 70x100 '/16- Печать офсетная. 25 печ. л. Тираж 5000 экз. Заказ № 5121. «Издательство ЭКОМ», лицензия ЛД № 065036 от 28.02.1997 ПБОЮЛ Тараев Сергей Павлович, лицензия ИД № 01612 от 19.04.2000 117342. Москва, ул. Бутлерова, д. 17, оф. 105 Телефон для оптовых покупателей (095) 330-68-65 Отпечатано в ОАО «Можайский полиграфический комбинат: 143200 г. Можайск, ул. Мира, 93