Скачиваний:
232
Добавлен:
16.04.2015
Размер:
3.75 Mб
Скачать

2.3. Процессорное ядро

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

Рис. 2.2. Структура процессорного ядра микроконтроллера 8051

Непосредственно обработка осуществляется в операционном устройстве, а интерпретацию команд и выработку управляющих сигналов для их исполнения производит устройство управления и синхронизации. Тактирование и синхронизация работы всех узлов МК осуществляется на основе сигналов тактового генератора, частота которого задается внешними времязадающими цепями.

Возможность расширения адресного пространства памяти программ и данных за счет внешней памяти реализуется блоком формирования внешней 16-разрядной шины адреса, позволяющей увеличить объем памяти каждого типа до 64 Кбайт. Шина адреса физически совмещена с внешними выводами портов Р0 и Р2.

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

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

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

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

Рис. 2.3. Подключение:

а – кварцевого резонатора;

б – внешнего генератора

Тактовый генератор представляет собой встроенный инвертор, который включается в режим генератора с помощью внешней времязадающей цепочки, подключаемой к входам XTAL1 и XTAL2. В качестве времязадающей цепочки могут подключаться керамические резонаторы, LC-цепочки и др., однако в большинстве практических применений используются кварцевые резонаторы требуемой частоты со схемой подключения, показанной на рис. 2.3, а. В стандартном случае емкость конденсаторов C1 и C2 равна 30 пФ.

При необходимости повышения точности задания тактовой частоты, к входу XTAL1 можно подключить внешний генератор импульсов (рис. 2.3, б). Вход XTAL2 при этом не используется.

Операционное устройство. Выполнение арифметических, логических и других операций обработки данных осуществляется операционным устройством, которое имеет классическую структуру, показанную на рис. 2.4. Оно содержит 8-разрядное арифметико-логическое устройство АЛУ, два программно-недоступных регистра временного хранения TMP1 и TMP2, регистр-аккумулятор A, регистр дополнения аккумулятора B, четыре банка (набора) регистров общего назначения РОН, блок десятичной коррекции DCU (Decimal Correction Unit) и регистр слова состояния программы PSW (Program Status Word), объединенные системной магистралью.

Рис. 2.4. Структура операционного устройства

АЛУ обеспечивает выполнение арифметических и логических операций над 8-разрядными переменными. Первые включают в себя сложение, вычитание, умножение и деление, вторые – логические операции И, ИЛИ, ИСКЛЮЧАЮЩЕЕ ИЛИ, а также операции сдвига, очистки и инвертирования. При выполнении операций используется беззнаковая арифметика и все данные интерпретируются как целые числа без знака.

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

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

МК 8051 имеет аккумуляторно-ориентированную организацию, и аккумулятор является базовым регистром, который используется во многих командах. Ряд команд изначально предполагает, что в аккумуляторе находится один из операндов, а результат выполнения команды также заносится в аккумулятор. Некоторые команды выполняются только над содержимым аккумулятора.

Регистры общего назначения представлены четырьмя банками по восемь регистров R0…R7 в каждом, однако в любой момент времени в программе могут использоваться регистры только одного заранее выбранного банка. Переключение банков осуществляется пользователем программной установкой соответствующих разрядов в регистре слова состояния программы PSW.

Перед выполнением любой команды операнды автоматически переносятся в регистры временного хранения TMP1 и TMP2, а результат выполнения заносится по месту назначения, определенному в команде. В командах умножения и деления роль источника и приемника ин­формации выполняют регистры A и B. Вне этих команд регистр B может использоваться как обычный рабочий регистр.

Важной характеристикой АЛУ является то, что оно может оперировать битовыми данными так же, как и байтовыми. Такие возможности МК 8051 позволяют называть его логическим процессором и обеспечивают удобство применения в качестве управляющего контроллера.

При выполнении многих команд в АЛУ формируется ряд признаков, которые фиксируются в регистре слова состояния программы PSW. В отдельные разряды этого регистра, именуемые флагами, после выполнения очередной команды заносится некоторая информация о результате ее выполнения. Помимо этого, регистр PSW содержит флаги выбора текущего банка РОН и флаг, программируемый пользователем. Перечень и обозначение флагов, входящих в PSW, и их функциональное назначение представлено в табл. 2.1.

Из всех флагов регистра PSW наиболее часто изменяется флаг переноса C, который модифицируется в процессе выполнения многих операций, включая сложение, вычитание и сдвиги. Кроме того, этот флаг выполняет функции своеобразного «булева аккумулятора» в командах, манипулирующих битами. Флаг переполнения OV фиксирует арифметическое переполнение при операциях над целыми числами со знаком и делает возможным использование знаковой арифметики в дополнительных кодах. Флаг промежуточного переноса AC применяется при работе с двоично-десятичной арифметикой. Флаг четности P часто применяют как индикатор корректной передачи данных при работе последовательного порта.

Таблица 2.1

7

6

5

4

3

2

1

0

C

AC

F0

RS1

RS0

OV

P

Флаг

Назначение

C

Флаг переноса. Устанавливается-сбрасывается аппаратно или программно во время выполнения арифметических и логических операций

AC

Флаг промежуточного переноса. Устанавливается-сбрасывается аппаратно при выполнении операций сложения или вычитания для индикации факта переноса-заема из бита 3 младшей тетрады

F0

Флаг пользователя. Устанавливается-сбрасывается программно как флаг состояния, определяемый пользователем

RS1

RS0

Разряды управления выбором номера банка регистров общего назначения.

Устанавливаются-сбрасываются программно

RS1

RS0

Банк

Область РПД

0

0

0

00Н…07Н

0

1

1

08Н…0FH

1

0

2

10H…17H

1

1

3

18H…1FH

OV

Флаг переполнения. Устанавливается-сбрасывается аппаратно во время выполнения арифметических операций для обозначения состояния переполнения

Резервный разряд (состояние логической единицы)

P

Флаг четности (паритета). Устанавливается-сбрасывается при выполнении операций для индикации четности-нечетности количества единиц в содержимом аккумулятора. Доступен только для чтения

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

Тактирование работы устройства управления производится сигналами тактового генератора, из которых формируются машинные циклы фиксированной длительности, равной 12 периодам импульсов тактового генератора. Исходя из логики работы устройства управления, машинный цикл разбивается на шесть состояний S1…S6, каждое из которых состоит из двух фаз P1 и P2. В фазе P1, как правило, выполняется операция в АЛУ, а в фазе P2 – межрегистровые передачи.

МК 8051 имеет 13 типов команд, имеющих длину от одного до трех байтов и время выполнения – один или два машинных цикла. Исключением являются лишь команды умножения и деления, продолжительность которых составляет четыре машинных цикла.

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

Рис. 2.5. Процедуры выборки команд различной сложности

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

В общем случае процедура формирования инструкций при выполнении команд в устройстве управления определяется следующей последовательностью действий.

По адресу, хранящемуся в счетчике команд, из памяти программ извлекается код очередной команды и по системной магистрали передается в регистр команд устройства управления. Далее код команды поступает в дешифратор команд ДК, который по коду определяет, какую операцию должна производить команда, адреса операндов, над которыми производится эта операция, и адрес, по которому заносится результат. На основе этой информации ДК формирует 24-разрядный код и передает его в микропрограммный автомат МПА. На основании полученного кода МПА вырабатывает с каждым тактом синхронизации необходимый на данной стадии отработки команды набор управляющих сигналов, поступающих в АЛУ и другие узлы процессорного ядра для реализации очередной микрооперации. Алгоритмы выполнения всех команд МК заложены в МПА на этапе его разработки. После окончания исполнения команды устройство управления заносит в счетчик команд адрес следующей подлежащей выполнению команды, и процесс повторяется вновь.

Помимо внутренних управляющих сигналов устройство управления формирует и ряд внешних сигналов, имеющих следующие названия и назначение: ALE (Address Lath Enable) – строб фиксации младшего байта адреса во внешнем регистре-защелке; PSEN (Programm Store Enable) – строб чтения из внешней памяти программ; RD (Read) – строб чтения из внешней памяти данных; WR (Write) – строб записи во внешнюю память данных; ЕА (External Access) – подключение внешней памяти программ. Более подробно эти сигналы и их использование рассмотрены в последующих разделах.

Блок шины адреса и указателей. Основным назначением блока является формирование текущего адреса для обращения к резидентной памяти программ и организация 16-разрядной шины адреса для обращения к внешней памяти программ и данных.

Структура блока и его использование для подключения к резидентной памяти программ и формирования внешней шины адреса-данных на базе портов P0 и P2 показана на рис. 2.6.

В состав блока входят регистры-указатели: 16-разрядный указатель данных DPTR (Data Pointer), 16-разрядный регистр счетчика команд PC (Program Counter) и 8-разрядный указатель стека SP (Stack Pointer), а также схема инкремента счетчика команд IncPC, буферный регистр BUF и адресный регистр RA.

Рис. 2.6. Структура блока шины адреса и указателей

Регистр счетчика команд PC предназначен для адресации памяти программ и содержит 16-разрядный адрес байта текущей команды.

Регистр указателя данных DPTR служит для хранения 16-разрядного адреса внешней памяти данных и расположен в области регистров специальных функций. Он состоит из двух 8-разрядных регистров DPH и DPL, которые при необходимости могут использоваться в качестве двух независимых рабочих регистров.

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

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

Регистр адреса памяти RA предназначен для хранения и выдачи на внутреннюю шину адреса прямого 16-разрядного адреса памяти программ или 8/16-разрядного адреса внешней памяти данных.

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

Схема сброса. Первая команда прикладной программы в МК 8051 всегда располагается в ячейке памяти с адресом 0x0000, и именно этот стартовый адрес должен быть занесен при запуске МК в счетчик команд, хранящий адрес очередной выполняемой команды.

Запуску или перезапуску всегда должен предшествовать системный сброс МК, который производится подачей на специальный вход сброса RST (Reset) сигнала высокого логического уровня и удержания его в этом состоянии два и более машинных цикла при работающем тактовом генераторе. По окончании сигнала внешнего сброса запускается внутренняя процеду­ра сброса, осуществляющая инициализацию МК, при которой осуществляются следующие действия:

  • все разряды регистров специальных функций, кроме регистров-защелок портов Р0…Р3, указателя стека и регистра SBUF устанавливаются в 0;

  • все разряды регистров-защелок параллельных портов Р0…Р3 устанавливаются в 1;

  • указатель стека принимает значение, равное 07Н;

  • запрещаются прерывания от всех источников, работа последовательного порта и таймеров/счетчиков;

  • выбирается банк 0 РОН;

  • в счетчик команд заносится стартовый адрес 0x0000.

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

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

Рис. 2.7. Длительность сигнала сброса МК

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

Во-первых, должен закончиться процесс нарастания напряжения питания от нуля до номинального значения. Для стандартных источников питания это время составляет 5 – 15 мс.

Во-вторых, должен быть завершен запуск внутреннего тактового генератора и его выход на номинальный режим. Время запуска зависит от частоты тактового генератора. При высоких тактовых частотах это время составляет 0.5 – 1 мс, а при снижении частоты увеличивается до десятков мс.

Простейшая схема формирования внешнего сигнала сброса при включении питания может быть сформирована подключением вывода RST к шине питающего напряжения цепочки из конденсатора емкостью 1…5 мкФ и резистора номиналом 10 КОм. Заряд этого конденсатора через резистор обеспечивает сброс МК.

Рис. 2.8. Цепи сброса МК: а – RC-цепь;

б – микросхема сброса

Использование подобной цепи сброса имеет определенные недо­статки и поэтому часто применяются специальные микросхемы для формирования сигнала сброса заданной длительности. На рис. 2.8 показано использование для сброса RC цепи­ ­и специальной микросхемы, формирующей сигнал сброса.

Блок управления питанием. Для приложений, критичных к энергопотреблению, МК 8051 имеет два встроенных режима энергосбережения – режим холостого хода Idle и режим останова Power Down. Снижение энергопотребления в этих режимах производится за счет блокирования работы некоторых узлов процессорного ядра и периферийных модулей. Для задания режимов энергосбережения в состав регистров специальных функций введен регистр управления мощностью PCON, назначение разрядов которого приведено в табл. 2.2.

Таблица 2.2

7

6

5

4

3

2

1

0

SMOD

CF1

CF0

PD

IDL

Флаг

Назначение

SMOD

Бит удвоения скорости передачи UART

Не используются

GF1

Программно управляемый флаг пользователя

GF0

Программно управляемый флаг пользователя

PD

Бит включения/выключения (1/0) режима останова

IDL

Бит включения/выключения (1/0) режима холостого хода

Биты GF0 и GF1 пользователь может задействовать по своему усмотрению. Если в разряды PD и IDL одновременно записана 1, то приоритет имеет PD.

Режим холостого хода. Вход в режим холостого хода выполняется по любой команде, устанавливающей в единицу бит IDL. В этом режиме блокируется работа узлов процессорного ядра, а периферийные модули продолжают работать. Для окончания режима холостого хода имеются два способа. Активизация любого разрешенного прерывания автоматически приведет к сбросу бита IDL в 0, оканчивая режим холостого хода, при этом состояние резидентной памяти данных и регистров специальных функций остается таким же, каким оно было на момент перехода в указанный режим. После исполнения команды, обеспечивающей выход из подпрограммы обслуживания прерывания, будет выполняться инструкция, которая следует за командой, переведшей МК в режим холостого хода. Другим способом окончания режима холостого хода является сброс МК. В этом случае программа начинает выполняться заново и сохраняется только содержимое РПД.

Режим останова. Вход в режим осуществляется программно установ­кой в единицу бита PD. Работа внутреннего тактового генератора блокируется, что приводит к прекращению работы всех узлов МК. Содержимое резидентной памяти данных и регистров специальных функций сохраняется, а на выходных контактах портов удерживаются значения, соответствующие содержимому их буферных регистров-защелок. Выходы сигналов ALE и PSEN сбрасываются. После входа в режим напряжение электропитания может быть снижено или переключено на резервный источник питания, однако перед выходом из режима оно должно быть восстановлено до номинального значения. Выход из режима пониженного энергопотребления возможен только по сигналу системного сброса RST. При этом переопределяются все регистры специальных функций, но содержимое резидентной памяти данных не изменяется.

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

Соседние файлы в папке Микроконтроллеры