
1.2. Процессорное ядро
Процессорное ядро (MCU – Microprocessor Core Unit) является основным узлом любого МК, предназначенным для выполнения вычислительных операций и координации работы всех остальных модулей.
Структуры разных МК порой весьма существенно отличаются друг от друга, однако в наиболее общем случае типовую структуру процессорного ядра МК можно представить в виде, показанном на рис. 1.2.
Как и сам МК, процессорное ядро построено по магистрально-модульному принципу организации, объединяющему все входящие в ядро блоки единой системной магистралью, включающей в свой состав шины адреса, данных и управления.
Основной функцией МК является обработка информации в соответствии с заложенной в нем программой. Именно эту обработку и производит процессорное ядро, одновременно выполняя все функции управления процессами интерпретации и исполнения команд программы.
|
Рис. 1.2. Структура процессорного ядра микроконтроллера |
из ячейки памяти программ выбирается очередная команда;
выбранная команда передается в устройство управления;
устройство управления расшифровывает назначение команды и адреса операндов;
по сигналам устройства управления операнды считываются в операционное устройство, которое выполняет над ними соответствующую операцию;
результат выполнения операции сохраняется в памяти или внутренних регистрах;
Кроме указанных блоков в процессорное ядро включены также несколько блоков, предназначенных для выполнения ряда функций по обеспечению начального сброса, контролю питания и заданию режимов работы МК. Важной составной частью любого МК являются регистры, причем некоторые из них включены в состав процессорного ядра и непосредственно используются при его работе.
Операционное устройство выполняет одну из главных функций МК – арифметическую и логическую обработку данных в соответствии с командами прикладной программы.
Основным узлом операционного устройства, выполняющим эту обработку, является арифметико-логическое устройство (АЛУ). АЛУ представляет собой совокупность комбинационных элементов и схем, с помощью которых и производится само выполнение операций над операндами, которые, в свою очередь, предварительно автоматически заносятся в программно-недоступные буферные регистры ВР1 и ВР2 для их временного хранения.
В МК наибольшее распространение получили АЛУ, в которых основным типом данных являются целые числа. Такие АЛУ характеризуются простотой реализации и высокой скоростью обработки информации. Типовыми операциями, выполняемыми в АЛУ, являются: сложение, вычитание, логическое И, логическое ИЛИ, логическое ИСКЛЮЧАЮЩЕЕ ИЛИ, логическое НЕ, инкрементирование (увеличение на 1), декрементирование (уменьшение на 1), сдвиговые операции, обнуление. При помощи дополнительных схем могут решаться другие арифметические задачи, такие, например, как умножение и деление. Эти схемы способны обеспечивать высокое быстродействие, но сложность их реализации приводит к тому, что они применяются не во всех МК.
Для оперативного хранения данных в состав операционного устройства вводятся регистры, в которые предварительно заносятся операнды и куда помещается результат выполнения команды. Непосредственно с АЛУ связан еще один регистр – регистр состояния программы РСП, предназначенный для хранения информации о результате выполнения текущей операции. Рассмотрим эти регистры подробнее.
Аккумулятор А – это универсальный регистр в МК с аккумуляторной организацией. В МК этого типа большинство манипуляций с данными, выполнение арифметических и логических операций осуществляется с применением аккумулятора. Любая из таких операций над двумя операндами предполагает размещение одного из них в аккумуляторе, а другого – в памяти или каком-либо регистре. Результат выполнения операции тоже обычно заносится в аккумулятор. Количество разрядов аккумулятора соответствует длине слова МК, однако некоторые типы МК имеют аккумулятор двойной длины. Следует отметить, что далеко не все семейства МК имеют аккумуляторную организацию и поэтому не содержат в своем составе регистров аккумулятора.
Регистры общего назначения РОН. Процессорное ядро любого семейства МК содержит набор регистров, имеющих многоцелевое назначение. Они называются регистрами общего назначения или регистровыми файлами и используются для временного хранения обрабатываемых данных, адресов памяти и другой внутренней информации МК. Число РОН кратно 8 и в разных семействах МК колеблется от 8 до 32. Поскольку адреса регистров задаются их порядковыми номерами, то при таких количествах адреса могут быть заданы всего лишь 3, 4 или 5 разрядами. Это позволяет сократить адресную часть команд и увеличить скорость их выполнения.
Регистр состояния программы РСП. При выполнении определенных команд в АЛУ формируется ряд признаков, которые фиксируются в регистре состояния программы РСП. В отдельные разряды этого регистра, именуемые флагами, после выполнения очередной команды может заноситься информация о результате ее выполнения в АЛУ. К типовым флагам регистра состояния относятся:
CY (Carry) – флаг переноса, который устанавливается в 1, если в результате выполнения операции произошел перенос из старшего разряда результата;
AС (Auxilinary Carry) – флаг дополнительного переноса, который равен 1, если в результате выполнения операции произошел перенос из младшей тетрады результата в старшую;
OV (Overfow) – флаг переполнения, который устанавливается в 1, если в результате выполнения арифметической операции произошло переполнение разрядной сетки результата;
Z (Zero) – флаг нуля, в который заносится 1, если результат операции равен 0;
S (Sign) – флаг знака результата, который дублирует знаковый разряд результата операции;
P (Parity) – флаг четности, который равен 1, если число единиц в результате операции четно.
Использование флагов регистра состояния позволяет реализовать команды ветвления, изменяющие естественную линейную последовательность выполнения программы в зависимости от состояния признаков, а следовательно, и от результатов выполнения последней команды. В некоторых МК имеются команды для принудительной очистки или установки разрядов регистра состояния.
Кажущаяся простота команд, выполняемых в АЛУ, обманчива. На самом деле выполнение любой, даже самой простой, команды представляет собой последовательность целого ряда элементарных действий (микроопераций). В связи с этим возникает вопрос: а что же координирует работу АЛУ и задает последовательность действий для выполнения команд? Эта задача в процессорном ядре возложена на устройство управления.
Устройство управления обеспечивает выполнение последовательности микроопераций в соответствии с кодом текущей команды и организует выборку команд в соответствии с программой. Его можно уподобить процессору внутри процессорного ядра, основной функцией которого является превращение исходного кода команды в последовательность управляющих воздействий для АЛУ, внутренних регистров и регистрового файла, которая в конечном итоге и приводит к выполнению команды. Помимо этого устройство управления координирует работу МК, поддерживая требуемую последовательность функционирования всех остальных его узлов.
Как и в операционном устройстве, в составе устройства управления имеется несколько регистров, входящих под тем или иным названием практически в любой МК.
Счетчик команд СК – один из наиболее важных регистров, в котором всегда содержится адрес очередной исполняемой команды. Программа, выполняемая МК, состоит из последовательности команд, хранимых в памяти, и для ее корректного выполнения команды должны поступать в строго определенном порядке. Счетчик команд обеспечивает формирование адреса очередной команды программы для ее последующего извлечения из памяти и запуска на выполнение. После извлечения очередной команды из памяти устройство управления автоматически дает приращение содержимому счетчика команд так, чтобы в нем находился адрес следующей исполняемой команды. Реализация условных и безусловных переходов, вызов и возврат из подпрограмм также осуществляются изменением содержимого счетчика команд.
Регистр команд РК является программно-недоступным буферным регистром, который содержит код очередной команды в процессе ее выполнения. Коды команд поступают в регистр из памяти по мере их последовательной выборки.
Указатель стека УС предназначен для работы со стеком – специальной областью памяти, запись и извлечение информации из которой осуществляется по принципу «последним вошел – первым вышел». Согласно этому указатель стека хранит адрес последнего по времени поступления элемента стека.
Указатель данных УД – адресный регистр, предназначенный для адресации памяти данных и имеющий разрядность, позволяющую адресовать любую ячейку памяти во всем адресном пространстве МК.
Каждая выполняемая команда задает алгоритм работы процессорного ядра на ближайшие один или несколько тактов. Код команды говорит о том, какую операцию предстоит выполнить в АЛУ, где взять операнды для выполнения команды и куда поместить результат. Код команды может занимать от одного до нескольких байтов, причем устройство управления узнает о том, сколько байтов команды ему надо читать, из первого прочитанного байта. В устройстве управления код команды расшифровывается и преобразуется в набор микроопераций, выполняемых отдельными узлами МК.
Выполнение любой команды в процессорном ядре можно разбить на два цикла: цикл выборки команды и цикл выполнения команды.
В цикле выборки адрес команды (точнее, адрес ее первого байта), содержащийся в регистре счетчика команд, передается по адресным шинам системной магистрали в память, где происходит выбор адресуемого байта. Затем производится передача содержимого считанного байта команды по шине данных системной магистрали в регистр команд устройства управления и автоматическое увеличение содержимого счетчика команд на 1. Если выбран не последний байт команды, то после приращения новое содержимое счетчика команд будет являться адресом следующего байта команды, а если выбран последний байт текущей команды – адресом следующей команды. Такой механизм позволяет достаточно просто осуществлять в МК последовательную выборку команд прикладной программы. Однако данная процедура характерна для линейной последовательности команд. При выполнении команд условного и безусловного переходов, а также обращения к подпрограммам адрес следующей команды в счетчике команд формируется устройством управления, которое в процессе выполнения таких команд заносит в счетчик команд адрес перехода.
В цикле выполнения дешифратор команд ДК по зафиксированному в регистре команд коду операции определяет вид операции, число байтов в команде, адреса операндов, участвующих в операции, а также используемые способы адресации операндов. Результатом работы дешифратора команд является формирование расширенного кода, содержащего всю необходимую информацию о команде и расположении операндов.
Любая команда, выполняемая в АЛУ, реализуется за определенное количество тактов, в каждом из которых выполняется одна или несколько микроопераций. Поэтому для выполнения команды должна быть сформирована распределенная во времени и пространстве последовательность внутренних управляющих сигналов, обеспечивающих исполнение всех микроопераций команды, включая выборку операндов и сохранение результата. Именно для выработки таких управляющих сигналов и служит следующий блок устройства управления – цифровой автомат ЦА. По полученному от дешифратора команд расширенному коду и признакам, вырабатываемым в АЛУ, цифровой автомат формирует с каждым очередным тактом синхронизации, поступающим из блока синхронизации, необходимый для выполнения команды набор управляющих сигналов.
По принципу организации различают цифровые автоматы схемного типа (c жесткой логикой) и цифровые автоматы с микропрограммным управлением.
Цифровой автомат схемного типа представляет собой совокупность особым образом связанных между собой запоминающих и комбинационных схем. В таком автомате выходная последовательность управляющих сигналов для выполнения всех микроопераций конкретной команды задается своим набором логических схем и системой взаимосвязей между ними.
Микропрограммное управление основано на замене управляющих логических схем программой, хранящейся в специальном запоминающем устройстве. На вход такого запоминающего устройства подается код команды, а каждому выходному разряду сопоставлен определенный управляющий сигнал. Любая микрооперация может быть реализована выводом на выходные разряды кода, формирующего управляющие сигналы для ее исполнения. Эти коды задаются на выходе запоминающего устройства под действием микрокоманд. Отсюда следует, что всегда можно задать такой набор микрокоманд и последовательность их выполнения, которые обеспечивают исполнение любой команды МК. Совокупность микрокоманд для выполнения одной команды называют микропрограммой, а способ исполнения команд путем последовательного считывания и интерпретации микрокоманд из запоминающего устройства – микропрограммным управлением.
Однако вне зависимости от способа реализации цифрового автомата, он выполняет одну функцию – формирование управляющих сигналов для исполнения команд и координации работы всех узлов МК.
Тактовый генератор и блок синхронизации. Тактовый генератор вырабатывает периодический сигнал, на основе которого блок синхронизации формирует синхронизирующие импульсы для процессорного ядра и периферийных модулей. Он состоит из встроенного генератора и внешней времязадающей цепочки. Некоторые МК имеют, наряду с внешней, и внутреннюю времязадающую цепочку, а также и схему умножителя частоты.
Тактовая частота на выходе генератора может изменяться в широких пределах – от десятков килогерц до десятков и даже сотен мегагерц. Энергопотребление МК напрямую зависит от тактовой частоты и поэтому частоты до 1 МГц используются в режимах с пониженным энергопотреблением.
Исходя из выбранной рабочей частоты тактового генератора, требований точности и стабильности параметров сигналов синхронизации могут быть использованы различные типы времязадающих цепочек, которые подключаются к специальным выводам МК X1 и X2. Наиболее распространенными являются следующие типы времязадающих цепочек:
кварцевые резонаторы – для формирования сигналов высокой стабильности (погрешность – сотые – тысячные доли процента) в диапазоне частот от десятков килогерц до десятков мегагерц;
пьезокерамические резонаторы – для формирования сигналов средней стабильности (погрешность – десятые доли процента) в диапазоне частот от десятков килогерц до единиц мегагерц;
LC-цепочки – для формирования сигналов средней стабильности (погрешность – десятые доли – единицы процентов) в диапазоне частот от единиц до сотен килогерц;
RC-цепочки – для формирования сигналов низкой стабильности частоты (погрешность – единицы процентов) в диапазоне частот от единиц до сотен килогерц.
Встроенная времязадающая цепочка реализуется чаще всего на RC-компонентах и предназначена для формирования тактовых импульсов низкой частоты. В некоторых МК подключение определенной времязадающей цепочки требует установки соответствующего режима работы тактового генератора. Поэтому в таких МК выбор режима работы генератора и типа используемой времязадающей цепочки осуществляется программированием специальных конфигурационных битов во встроенной памяти.
Работа тактового генератора на высоких частотах налагает специальные требования к трассировке печатных плат и качеству компонентов времязадающей цепи, приводит к высокому уровню помех от внешних высокочастотных цепей. Поэтому в некоторых семействах МК используются встроенные цифровые умножители частоты с программируемым коэффициентом умножения. Наиболее распространенным умножителем является схема синтезатора частоты с фазовой автоподстройкой (PLL – Phase-Locked Loop). При отсутствии умножителя для работы МК на высоких частотах рекомендуется отключать встроенный генератор и подключать специальный внешний генератор. Это же решение применяется в тех случаях, когда от одного внешнего генератора синхронизируется не только МК, но и работающие с ним внешние схемы.
Блок синхронизации с помощью входящих в его состав делителей частоты формирует внутренние сигналы многофазной импульсной последовательности, тактирующей различные стадии выполнения команд в процессорном ядре, а также сигналы синхронизации периферийных модулей.
Обычно эти сигналы получаются делением частоты внутреннего тактового генератора на фиксированный коэффициент, но в некоторых МК коэффициенты деления могут программироваться, например, если необходимо снизить частоту тактирования процессорного ядра в режимах пониженного энергопотребления.
Блок задания режимов. Одной из основных первопричин разработки миниатюрных однокристальных МК была необходимость уменьшения габаритов построенных на их основе микропроцессорных систем, и эту задачу разработчики блестяще выполнили. Однако не только сам МК определяет габариты системы, во многом они зависят и от потребляемой им мощности, поскольку с этим параметром напрямую связаны габариты источника питания системы. Кроме того, в настоящее время многие встроенные системы проектируются для работы от автономных источников питания, таких как батареи или аккумуляторы, и здесь от потребляемой мощности зависят уже не только габариты, но и время работы всей системы. Поэтому в дополнение к стандартному основному режиму функционирования всех модулей и выполнения программы МК большинства семейств имеют и другие режимы работы, позволяющие снизить энергопотребление. Снижение энергопотребления в этих режимах производится за счет блокирования работы некоторых узлов процессорного ядра и периферийных модулей.
Среди используемых режимов энергосбережения можно выделить два основных, по крайней мере один из которых под тем или иным названием присутствует в МК любого семейства. Этими режимами являются:
режим ожидания (Wait, Idle или Halt mode). В этом режиме прекращается подача синхронизирующих импульсов на процессорное ядро, блокируя тем самым его работу. Однако они продолжают поступать на системные и периферийные модули, обеспечивая их нормальное функционирование. Сохраняется также содержимое ОЗУ, рабочих регистров и регистров специальных функций. Возврат МК в основной режим для продолжения выполнения прикладной программы осуществляется либо по прерыванию от любого внешнего источника или периферийного модуля, либо при сбросе МК. Поскольку тактовый генератор в этом режиме продолжает работать, то для выхода из режима ожидания требуется лишь 3…10 периодов синхронизации. Мощность потребления МК снижается по сравнению с основным режимом в 5…10 раз;
режим останова (Stop, Sleep или Power Down mode). В режиме останова тактовый генератор отключается и в связи с этим останавливается работа, как процессорного ядра, так и большинства периферийных модулей. Содержимое ОЗУ, рабочих регистров и регистров специальных функций сохраняется. Возврат МК из состояния останова в основной режим возможен, как правило, только по прерываниям от внешних источников или после подачи сигнала сброса. Так как при возврате в основной режим вновь запускается тактовый генератор, то время выхода из режима останова значительно больше, чем в режиме ожидания. Однако в режиме останова мощность потребления МК снижается по сравнению с основным режимом весьма значительно и составляет единицы-десятки микроватт.
Задание режимов энергосбережения осуществляется установкой соответствующих битов в регистрах специальных функций.
Блок сброса и управления питанием. МК начинает выполнение своих основных функций с запуска прикладной программы. Однако запуску программы должна предшествовать процедура инициализации МК, во время которой должен быть выполнен целый ряд действий, без проведения которых нормальная работа МК невозможна. Основными из этих действий являются:
разрешение работы только после того, как напряжение источника питания достигло значения, которое по паспортным данным является минимальным разрешенным напряжением питания;
установка в исходное состояние внутренних магистралей и сигналов управления;
установка всех регистров специальных функций в значения по умолчанию, соответствующие, как правило, неактивному состоянию периферийных модулей;
запуск тактового генератора, при котором для стабилизации частоты тактирования автоматически формируется необходимая задержка времени;
считывание значений энергонезависимых регистров конфигурации в соответствующие регистры специальных функций;
загрузка в счетчик команд стартового адреса программы, инициирующая тем самым начало выполнения прикладной программы.
Эти действия осуществляются автоматически во время выполнения специального режима сброса, и простой анализ показывает, что для их реализации необходимо лишь сформировать перед запуском программы задержку заданной длительности, достаточной для окончания всех процессов. Такая задержка формируется сигналом заданного уровня и нужной длительности на специальном выводе микроконтроллера RESET. В течение многих лет эта проблема частично решалась подключением времязадающей RC-цепи на вывод сброса RESET, однако в современных МК для этого существуют встроенные средства. Основными источниками, которые могут перевести МК в режим сброса, являются:
сброс при включении питания;
сброс при кратковременном снижении напряжения питания;
внешний сброс;
внутренний системный сброс.
Сброс при включении питания. Встроенная схема сброса при включении питания (POR – Power on Reset) и достижения им заданного минимального значения напряжения обеспечивает формирование задержки, достаточной для нарастания напряжения питания до номинального значения. Минимальное время задержки и пороговое значение напряжения питания для ее включения у различных МК могут быть разными.
Сброс при кратковременном снижении напряжения питания. Некоторые МК также могут содержать схему обнаружения кратковременного снижения напряжения питания (Brown Out) ниже уровня, при котором сохраняется нормальная работа МК. У таких МК встроенная схема, состоящая из источника опорного напряжения и компаратора, отслеживает нахождение напряжения питания в допустимых пределах. Если напряжение питания становится меньше заданного порогового значения, то эта схема формирует сигнал сброса и МК находится в режиме сброса до тех пор, пока напряжение питания не превысит минимально допустимое значение. Когда напряжение питания станет больше минимально допустимого, старт программы может быть осуществлен после необходимой для запуска тактового генератора задержки.
Часто после выхода МК из режима сброса при включении питания или при кратковременном снижении напряжения питания в соответствующем регистре специальных функций устанавливается бит, который позволяет прикладной программе определить, произошел ли сброс при включении питания или при другом условии.
Внешний сброс. Если при работе МК на вывод RESET в течение определенного времени подать сигнал заданного логического уровня, то он переходит в режим внешнего сброса. После установления на выводе сброса сигнала противоположного логического уровня МК выходит из режима сброса и начинает выполнение программы со стартового адреса.
Внутренний системный сброс. Некоторые МК могут иметь функции, позволяющие формировать условие внутреннего сброса. Например, такая функция может быть вызвана по окончании внутрисистемного программирования для запуска загруженной программы на выполнение. Другим примером источника внутреннего сброса является сброс от встроенного сторожевого таймера, отслеживающего нормальное функционирование прикладной программы.