Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Древс Системы реалного времени технические и программные средства 2010

.pdf
Скачиваний:
237
Добавлен:
16.08.2013
Размер:
20.14 Mб
Скачать

5.2. Микроконтроллеры

Микроконтроллер – это законченная микропроцессорная система обработки информации, реализованная в виде БИС и объединяющая в пределах одного полупроводникового кристалла центральный процессор, постоянное запоминающее устройство (ПЗУ), основную память – оперативное запоминающее устройство (ОЗУ) и устройства ввода/вывода информации.

Однокристальному микроконтроллеру (ОМК) присущи следующие особенности:

-система команд ориентирована на выполнение задач управления и регулирования;

-алгоритмы, которые реализуются на ОМК, могут иметь много разветвлений в зависимости от внешних сигналов;

-данные, с которыми оперируют ОМК, имеют небольшую разрядность;

-схемная реализация систем управления на базе ОМК является несложной и имеет невысокую стоимость;

-универсальность и возможность расширения функций управления значительно ниже, чем в системах с однокристальными микропроцессорами.

Широкое разнообразие моделей микроконтроллеров и возможность разрабатывать и производить их в короткие сроки обеспечивается модульным принципом построения ОМК: все ОМК одного семейства содержат в себе одинаковый базовый функциональный блок и различные изменяемые функциональные блоки. Базовый блок принято называть процессорным ядром ОМК.

В состав процессорного ядра входят:

-центральный процессор;

-внутренние шины адреса, данных и управления;

-схемы синхронизации, формирующие многофазные импульсные последовательности для тактирования центрального процессора и шин;

-схема управления режимами работы ОМК.

Ядро современных реализуют как на основе CISC-архитектуры, так и на основе RISC-архитектуры.

131

ОМК с CISC-архитектурой имеют однобайтовый, двухбайтовый и трехбайтовый (реже четырехбайтовый) формат команд. Выборка команды из памяти осуществляется побайтно в течение нескольких машинных циклов. Время выполнения каждой команды с учетом времени выборки в большинстве случаев составляет от 1 до 10 циклов.

ОМК с RISC-архитектурой имеет фиксированный формат команды (12, 14 или 16 бит). Выборка из памяти и исполнение подавляющего большинства команд осуществляется за один машинный цикл.

Модульная структура ОМК показана на рис. 5.1. Изменяемый функциональный блок включает модули основной и постоянной (ОЗУ и ПЗУ) памяти, генератор схемы синхронизации (Г) и модули внешних устройств. К внешним устройствам обычно относятся: порты ввода/вывода, таймеры, аналого-цифровые преобразователи (АЦП), контроллеры последовательного ввода/вывода (К).

Рис. 5.1

В последних разработках в состав изменяемых модулей включают модули контроля за напряжением питания и ходом выполнения программы и модули внутрисхемной отладки и программирования.

Каждый модуль имеет выводы для подключения его к шинам адреса (ША) и данных (ШД) процессорного ядра.

132

5.2.1. Функционирование узлов микроконтроллера

CISC-типа

Узлы ОМК и организацию их взаимодействия рассмотрим на примере микроконтроллера семейства НС08 (рис. 5.2).

Рис. 5.2

Центральный процессор выполняет операции над 8-раз- рядными операндами, поддерживает 11 способов адресации, имеет команды умножения и деления. Он содержит АЛУ и пять регистров:

133

1)аккумулятор – 8-разрядный регистр для хранения операндов

ирезультатов операций;

2)индексный 16-разрядный регистр участвует в формировании адреса операнда, а также может использоваться для промежуточного хранения результатов и как источник одного из операндов в операциях умножения и деления;

3)программный счетчик – 16-разрядный регистр, содержащий адрес текущей команды или адрес операнда, используемого в текущей команде;

4)указатель стека – 16-разрядный регистр, содержащий адрес верхушки стека;

5)регистр слова состояния процессора – 8-разрядный регистр,

содержит шесть флагов условий: переноса, нулевого результата, отрицательного результата, переполнения, дополнительного переноса и бит глобальной маски прерывания.

Система команд процессора CPU08 включает 90 команд, которые делятся на шесть групп [6]:

- команды загрузки и пересылки (всего 13 команд) осуществляют перемещение данных между ячейками памяти и регистрами центрального процессора;

- арифметические команды (14 команд) выполняют операции сложения, вычитания, инкремента и декремента, однобайтового и двухбайтового сравнения, умножения и деления;

- логические команды и команды сдвигов (15 команд) – логическое И, ИЛИ, Исключающее ИЛИ, различные операции сдвига, операция взятия обратного и дополнительного кода;

- команды битового процессора (всего 6 команд) устанавливают в определенные состояния отдельные биты в ячейках ОЗУ или в регистрах;

- команды управления ходом вычислительного процесса (40 команд), в состав которых входят: команды условных и безусловных переходов, вызова подпрограмм и обслуживания прерываний; - команды перехода к режимам пониженного энергопотребления (2 команды) переводят МК в режим ожидания или останова.

134

Режимы работы

1.Режим исполнения прикладной программы. Работа при но-

минальной частоте генератора; активизированы все необходимые периферийные модули.

2.Режим ожидания. Для экономии энергии понижается частота таймера и может быть отключена часть периферийных устройств.

3.Режим останова. Вводится с помощью команды STOP. Вся периферия неактивна.

4.Режим отладки. Обеспечивает программирование и отладку МК с помощью последовательного интерфейса с ведущим персональным компьютером.

Резидентная память. Она состоит из энергонезависимого запоминающего устройства (FLASH ПЗУ), основного запоминающего устройства (ОЗУ), регистров специальных функций, монитора отладки и сегмента векторов прерываний.

Энергонезависимая память в составе ОМК имеет не только режимы хранения и чтения информации, которая была записана до начала эксплуатации на этапе программирования, но и режимы стирания и программирования под управлением прикладной программы в процессе управления объектом и без перевода ОМК в режим программирования. Функциональная программа обычно хранится в памяти типа FLASH, константы – в перепрограммируемом постоянном запоминающем устройстве с электрическим стиранием (EEPROM ПЗУ), которое имеет режим побайтного программирования. Такая организация позволяет в ходе выполнения программы изменять содержимое EEPROM ПЗУ, что делает его идеальным средством для хранения перепрограммируемых констант (например, различных настроек, которые должны сохраняться при отключении питания). Для выполнения перепрограммирования в процессе работы энергонезависимая память снабжается дополнительными схемами управления. Время перепрограммирования – менее 1 с.

В состав ОЗУ ОМК входит оперативное ЗУ статического типа. Важно обратить внимание, что ОЗУ статическое: современные ОМК допускают снижение частоты тактирования до сколь угодно

135

малых значений с целью снижения энергопотребления, и содержимое статического ЗУ, в отличие от динамического, при этом сохраняется.

ОМК семейства НС08 имеют объединенное адресное пространство памяти программ, данных и регистров специальных функций периферийных модулей. Внутренняя шина позволяет адресовать 64К памяти. В верхних адресах памяти располагаются регистры специальных функций (64 байта): регистры параллельных портов ввода/вывода, регистры данных и регистры управления периферийных модулей. Далее следуют ОЗУ емкостью 512 байт и память программ в виде FLASH-памяти емкостью 32 Кбайта.

Модуль FLASH-памяти имеет в своем составе повышающий преобразователь напряжения, который позволяет выполнять стирание и программирование FLASH ПЗУ под управлением программы, размещенной в ОЗУ, без подключения внешнего источника напряжения программирования. В нижних адресах памяти располагаются монитор отладки (307 байт) и сегмент векторов прерываний (36 байт), где хранятся адреса начальных адресов подпрограмм прерывания.

Модуль памяти монитора отладки позволяет организовать режим внутрисистемного программирования с помощью дополнительных программных и аппаратных средств – симуляторов. В частности, на отдельной ЭВМ может быть реализована программная модель ОМК; в этом случае монитор отладки осуществляет связь программы, записанной в резидентной памяти ОМК, с этой моделью. Процесс программирования и отладки функциональной программы становится экономичнее.

В сегменте векторов прерывания по два байта памяти отведено каждому источнику прерываний. Пользователь на этапе программирования МК заносит в эти ячейки адреса начала программ прерывания. При переходе к выполнению определенной программы ее адрес автоматически загружается в счетчик команд центрального процессора.

Таймер ТВМ08 представляет собой 16-разрядный счетчик количества циклов со схемой управления. Направление счета – толь-

136

ко прямое; регистры доступны для чтения и записи. При переполнении формируется сигнал прерывания.

Процессоры событий. Модуль процессора событий (TIM08) состоит из 16-разрядного таймера-счетчика и некоторого количества связанных с ним полностью идентичных каналов захвата/сравнения. Каждый канал захвата/ сравнения связан с одним из выводов ОМК.

Всоставе ОМК НС80 два модуля процессора событий и каждый из модулей имеет по два канала захвата/сравнения.

Действие канала входного захвата состоит в подсчете внешних событий. Схема «детектора событий» следит за уровнем напряжения на входе. При изменении уровня логического сигнала вырабатывается строб записи, и текущее состояние счетчика-таймера записывается в 16-разрядный регистр данных канала захвата.

Действие канала выходного сравнения аналогично режиму задержек. Многоразрядный цифровой компаратор непрерывно сравнивает изменяющийся во времени код счетчика таймера с кодом, который записан в 16-разрядном регистре канала сравнения. В момент равенства кодов на одном из выводов ОМК устанавливается заданный уровень логического сигнала. Этот режим можно использовать для получения широтно-модулированного импульсного сигнала: при наступлении события выходного сравнения на выходе устанавливается низкий логический уровень, а при переполнении таймера-счетчика уровень сигнала на выходе инвертируется.

Всхеме ОМК предусмотрена возможность пуска и останова таймера-счетчика под управлением программы и, кроме того, возможность считывания кода. При переполнении таймера-счетчика устанавливается флаг переполнения и генерируется запрос на прерывание (если он разрешен).

Аналого-цифровые преобразователи. Характерная особен-

ность НС08 – интегрированный на кристалле ОМК модуль многоканального аналого-цифрового преобразователя ADC08 (АЦП). Многоканальный аналоговый коммутатор на его входе служит для подключения одного из источников аналоговых сигналов. Выбор

137

источника сигнала для измерения осуществляется посредством записи номера канала коммутатора в соответствующие разряды регистра управления АЦП.

Собственно АЦП выполняется по схеме последовательного приближения или поразрядного уравновешивания. Разрешающая способность в разных моделях ОМК составляет от 8 до 12 бит, время преобразования – от 5 до 32 мкс, число каналов – от 8 до 12.

Модуль системной интеграции SIM08 управляет всеми под-

системами микроконтроллера. Он формирует множество сигналов, которые обеспечивают совместное функционирование центрального процессора, блоков памяти и периферийных модулей. В частности, он содержит контроллер прерываний, который производит сбор и ранжирование внутренних и внешних запросов, формирует вектор текущего прерывания в соответствии с таблицей приоритетов, управляет процедурой перехода к выполнению подпрограммы перехода и выходом из нее.

Прерывания изменяют текущую последовательность выполнения команд для обслуживания внешнего или внутреннего события, вызвавшего прерывание. Прерывание не останавливает выполнение текущей команды; она завершается, а затем реализуется механизм перехода к подпрограмме прерывания:

-в стеке сохраняется содержимое: регистра признаков, аккумулятора, индексного регистра, счетчика команд;

-бит глобальной маски прерывания в регистре признаков устанавливается в 1, запрещая обслуживание любых других запросов на прерывание до тех пор, пока не будет завершена текущая подпрограмма прерывания;

-счетчик команд загружается адресом начала подпрограммы прерывания (вектором прерывания).

Обработка прерываний осуществляется модулем внешних прерываний. Вектору прерывания отведена специальная область – сегмент вектора прерываний. Каждому источнику запросов на прерывание в этой области отведено по два байта памяти с фиксированными адресами. Пользователь на этапе программирования МК заносит в эти ячейки адрес начала подпрограммы прерывания и

138

при переходе к ней этот адрес автоматически загружается в счетчик команд центрального процессора.

В ОМК НС80 входят 16 источников событий, требующих прерывания: по одному – по запросам таймера, АЦП, модуля сканирования клавиатуры, модуля формирования тактовой частоты и вектора прерывания по входу «Запрос прерывания»; пять – от схем последовательных интерфейсов; шесть – по событиям процессоров событий. Один источник – вектор программного прерывания – немаскируемый.

Подсистема прерываний ОМК семейства НС80 имеет жесткое распределение приоритетов, которое нельзя скорректировать программными настройками.

Модуль управления питанием CGM08 состоит из генератора и синтезатора частоты. Он обеспечивает тактирование от генератора кварцевого резонатора или от синтезатора частоты, который позволяет снизить частоту резонатора.

Порты ввода/вывода. В процессоре НС08 имеется 33 двунаправленные линии ввода/вывода: порт А – для сканирования клавиатуры, порт В – аналоговые входы встроенного АЦП; порты С, D, E – для связи с выходами периферийных модулей.

Контроллеры последовательного ввода/вывода. Задачи, ко-

торые решаются с помощью контроллеров последовательного ввода/вывода, могут быть условно разделены на три группы:

1)связь встраиваемой микропроцессорной системы с системой управления верхнего уровня;

2)связь с внешними по отношению к ОМК периферийными устройствами, а также с датчиками физических величин с последовательным выходом;

3)интерфейс связи с локальной сетью в мультимикропроцессорных системах.

В составе ОМК семейства НС08 имеются два контроллера последовательного интерфейса – синхронного и асинхронного. Модуль синхронного интерфейса (SPI08) предназначен для высокоскоростного обмена между ОМК и периферийными микросхемами, такими как АЦП и ЦАП, FLASH-память большой емкости и др.

139

Основные элементы контроллера SPI08 – 8-разрядный сдвиговый регистр и два буферных регистра данных, программно доступных по одному и тому же адресу (один регистр для передатчика, один – для приемника). Поскольку SPI08 поддерживает два режима работы – ведущего и ведомого, он имеет четыре линии: передачи данных от ведущего к ведомому, передачи данных от ведомого к ведущему, сигнала синхронизации, выбора ведомого. Направление передачи каждой линии определяется выбором режима контроллера.

Модуль асинхронного интерфейса (SCI08) организует обмен с устройствами управления верхнего уровня. Аппаратные средства SCI08 делятся на две подсистемы: приемника и передатчика. Основу каждой подсистемы составляют сдвиговый регистр и буферный регистр данных.

Модуль сброса при некорректных операциях и адресах

IRQ08 срабатывает, когда появляется запрещенная команда (она не может интерпретироваться существующей системой команд) или несуществующий (для данной серии микроконтроллеров) адрес.

Модуль сторожевого таймера генерирует сигнал RESET через определенное время, если его не сбросить внутри этого временного интервала. Для осуществления этого сброса программист должен регулярно вставлять в программу команду сброса этого таймера.

Модуль защиты от пониженного напряжения источника питания LVI08 постоянно контролирует напряжение источника и вызывает сброс, когда оно падает ниже порогового значения.

Модуль связи с клавиатурой KBI08 обеспечивает обмен с клавиатурой.

Аппаратные средства режима отладки формирует необходи-

мые уровни сигналов для перевода микроконтроллера в отладочный режим работы (IRQ, RST, частота тактирования и т.д.). Модуль BREAK08 реализует остановы по контрольным точкам, в которых можно проверить содержимое регистров. Для этого в регистр модуля заносится абсолютный адрес контрольной точки и запускается программа, которая сравнивает его с кодом на внутренней магистрали адреса. При равенстве кодов генерируется прерывание, микроконтроллер переходит на программу монитора отладки, ко-

140