Реклама:

В качестве третьего примера мы традиционно рассматриваем микросхему 8051. В отличие от процессоров Pentium 4 (которые в основном используются в настольных компьютерах и серверных фермах) и UltraSPARC III (которые по большей части устанавливаются в крупных серверных, особенно мультипроцессорных, системах), микросхемы 8051 обычно встраиваются в бытовые устройства (от уличных светофоров до будильников) для обработки сигналов от кнопок, световых индикаторов и других элементов пользовательского интерфейса. История этого процессора довольно проста. Когда в 1974 году компания Intel выпустила микросхему 8080, успех был ошеломляющим. Производители принялись встраивать 8080 в электронные устройства, и с учетом этой тенденции через некоторое время было решено сконструировать микросхему, на которой можно было бы разместить не только процессор, но также модули памяти и контроллеры ввода-вывода. В результате появилась модель 8048, а за ней - 8051. Несмотря на почтенный возраст (а может быть, и благодаря ему), эта микросхема до сих пор пользуется обширным спросом, что объясняется в основном крайне низкой стоимостью, которая во встроенных системах является решающим фактором. В данном подразделе представлена краткая техническая характеристика 8051 и родственных микросхем.

8051 умеет работать в одном-единственном режиме; никаких аппаратных средств защиты в этой микросхеме не предусмотрено. Они и не нужны - ведь 8051 никогда не выполняет одновременно больше одной программы. Модель памяти невероятно проста. Существует два адресных пространства по 64 Кбайт: для программ и для данных. Эти пространства разделены, что делает возможной реализацию пространства программ в ПЗУ, а пространства данных - в ОЗУ.

Допускается несколько вариантов реализации памяти. В простейшем из них предусматривается 4 Кбайт ПЗУ для программ и 128 байт ОЗУ для данных. Как ПЗУ, так и ОЗУ размещаются в одном корпусе с микросхемой. Учитывая область применения 8051, такого объема памяти в большинстве случаев вполне достаточно, а совместное размещение процессора и двух модулей памяти считается серьезным достоинством. В модели 8051 емкость обоих модулей увеличена вдвое: 8 Кбайт ПЗУ и 256 байт ОЗУ. В случае применения этой модели программа записывается в ПЗУ на этапе производства и пользователю недоступна.

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

Вместе с тем, 8051 поддерживает промежуточную модель, в которой 4 Кбайт памяти программ и 128 байт памяти данных размещаются в одном корпусе с микросхемой, а остальная память - вовне. Применимость той или иной модели зависит от напряжения, подаваемого на выводы микросхемы.

Механизм работы с регистрами в 8051 весьма оригинален. Большинство программ для 8051 составляются с расчетом на восемь 8-разрядных регистров. Это совершенно естественный подход, поскольку многие команды содержат 3-разрядное поле с указанием целевого регистра. Имена регистров находятся в диапазоне от R0 до R7. Существует четыре набора регистров, хотя в каждый конкретный момент активным является только один из них. Активный регистр определяется значением в 2-разрядном поле регистра PSW. Наличие нескольких наборов регистров позволяет существенно ускорить обработку прерываний. При обнаружении прерывания обработчик не сохраняет содержимое всех регистров, а просто переходит к другому набору. Это обстоятельство позволяет 8051 обрабатывать огромное количество прерываний, что очень важно для процессора, встраиваемого в системы реального времени.

Еще одной особенностью регистров 8051 является то, что все они представлены в адресном пространстве памяти. Байт 0 пространства данных соответствует регистру 110 из набора 0. Если команды изменяет содержимое Ш), а затем считывает байт 0, в нем обнаруживается новое значение 110. Аналогичным образом байт 1 памяти соответствует регистру Ш, и т. д. Байты 8-15 памяти соответствуют набору регистров 1, и т. д. до байта 31, связанного с регистром К7 в наборе 3. Эта схема изображена на рис. 5.5.

Обзор уровня архитектуры набора команд микросхемы 8051

Рис. 5.5. Организация встроенной в микросхему памяти 8051 (а); основные регистры 8051 (б)

Непосредственно над четырьмя банками регистров, по адресам памяти 32-47, расположены 16 байт памяти с побитовой адресацией (0-127). В 8051 предусмотрен набор команд установки, сброса, выполнения операций И и ИЛИ, а также проверки отдельных битов, обращение к которым осуществляется по числам в диапазоне от 0 до 127. Эти команды работают с байтами от 32 до 47. Полезны они тем, что во встроенных процессорах для записи или установки переключателей, индикаторов и других устройств ввода-вывода часто применяются битовые переменные. Наличие специальных ячеек памяти позволяет 8051 обращаться к битовым перемененным, не вызывая байты целиком (а значит, не устанавливая их заново и не маскируя ненужные биты). Для простого процессора такая схема очень удобна, особенно в том, что касается управления булевыми переменными.

Помимо 4 наборов из 8 регистров, в 8051 есть несколько специальных регистров, самые важные из которых изображены на рис. 5.5, б. В регистре PSW содержатся (слева направо): бит переноса, бит служебного переноса, бит, определяющий набор регистров, бит переполнения и бит четности. Значения всех этих битов, за исключением того, который указывает на набор регистров, вычисляются арифметически. Заштрихованные поля не заняты.

Регистр IE позволяет включать/отключать прерывания вместе или по отдельности. Если бит в регистре IE обнулен, все прерывания отключены. Сброс этого бита позволяет отключать последующие прерывания одной командой. Установка этого бита разрешает любые прерывания, для которых установлены индивидуальные биты. Биты Е2, El и ЕО включают или выключают три канала таймеров. Если все эти каналы включены, разрешается одновременная работа трех счетчиков, которые по истечении времени выполнения порождают прерывания. Бит ES включает или отключает последовательные прерывания каналов. Остальные два бита включают или отключают прерывания от внешних источников. Когда они установлены, прерывания принимаются от внешних устройств, подключенных к двум выводам 8051. Соответственно, если эти биты сброшены, такие прерывания не принимаются.

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

Регистр TCON регулирует главные таймеры 0 и 1. Биты Ol и О0 устанавливаются аппаратно в случае переполнения соответствующего таймера. R1 и R0 - это биты контроля выполнения, которые позволяют включать и отключать таймеры программно. Остальные биты переводят оба таймера из режима запуска по фронту в режим запуска по уровню, и наоборот.

Последний оставшийся регистр - TMOD - определяет разрядность таймеров (8, 13 или 16 бит), переключает их из режима таймера истинного времени в режим счетчика и обратно, а также регулирует подконтрольность таймеров аппаратным сигналам. Есть и другие регистры, связанные с управлением питанием и работой последовательного порта, но они на нашей схеме не показаны.

Все вышеупомянутые специальные регистры, а также ряд других (в частности, сумматор и порты ввода-вывода), находятся в диапазоне памяти 128-255. Обращение к ним осуществляется так же, как и к регистрам R0-R7. К примеру, сумматор, применяемый для выполнения большинства арифметических операций, находится по адресу 240. В процессоре 8052 с реальной памятью в диапазоне от 128 до 255 специальные регистры пересекаются с адресным пространством памяти. Поэтому для обращения к специальным регистрам в этом процессоре используется прямая адресация, а для обращения к ОЗУ (через указатели в регистрах) - косвенная.

Общий обзор уровня архитектуры набора команд UltraSPARC III || Оглавление || Типы данных