Какой регистр микроконтроллера 80с51 используется для адресации внешней памяти данных
В отличие от процессоров персональных компьютеров, которые, как правило, имееют традиционную структуру фон Неймана, предполагающую расположение комманд и данных в едином адресном пространстве памяти, микроконтроллеры семейства MCS-51, в том числе и SAB 80C515 реализованы в соответствии с Гарвардской архитектурой. Они имеют раздельные (физически и логически) адресные пространства памяти – память программ и память данных, которые выполняют различные функции. Для доступа к указанным областям памяти используются отличные механизмы адресации и различные управляющие сигналы: - для доступа к ПЗУ и при обращении к ОЗУ.
Полное пространство памяти МК SAB 80С515 показано на рисунке.
Полное пространство памяти МК SAB 80С515
Память программ с байтовой организацией и объемом до 64 Кбайт доступна только по чтению. Младшие 8 Кбайт программной памяти МК SAB 80С515 размещаются на кристалле МК. Как правило, элементы программной памяти адресуются с помощью 16-битного счетчика команд PC, но в некоторых командах (при выборке констант) могут косвенно адресоваться с использованием 16-разрядного указателя DPTR (команды вида MOVC A,@+DPTR).
Доступ к внешней памяти программ (ВПП) разрешен либо если активизирован вход отключения внутреннего (резидентного) ПЗУ ( ), либо, если содержимое счетчика команд PC превышает значение 1FFFh, т.е. происходит обращение к программной памяти вне первых 8 Кбайт ее адресного пространства.
Существующие различия в механизме доступа к ВПП и внешней памяти данных (ВПД) учитываются на аппаратном уровне: при доступе к ВПД формируются входные сигналы , а при доступе к ВПП - сигнал (Program Store ENable).
Сигнал , выполняющий функцию строба чтения ВПП, активизируется только при обращении к ВПП и остается пассивным при выборке команд из внутренней программной памяти.
При доступе к ВПП для организации внешних шин адреса и данных используются линии портов Р0 и Р2, при этом с помощью линий порта Р0 реализуется мультиплексированная внешняя шина адрес/данные.
При доступе к ВПП 16-разрядный адрес формируется на линиях порта P0 (младший байт) и порта P2 (старший байт). Для демультиплексирования адреса на выходах порта Р0 предназначен выходной сигнал ALE (Address Latch Enable), с помощью которого младший байт адреса фиксируется во внешнем регистре адреса.
Ниже показана функциональная схема включения МК SAB и внешней памяти программ.
Временные диаграммы сигналов при работе МК с внешней памятью программ:
Внутренняя память данных.
Младшие 128 байт ОЗУ в отличие от других областей внутренней памяти данных в свою очередь подразделяются на три области, обладающие специальными свойствами (рис.).
Первые (младшие) 32 байта внутреннего ОЗУ с адресами 00 - 1Fh сгруппированы в четыре банка по 8 регистров общего назначения с именами R0 - R7 в каждом. Выбор рабочего (текущего) банка регистров осуществляется программно с помощью управляемых бит RS0 и RS1 слова состояния PSW. Отличительной особенностью блока рабочих регистров является возможность использования, наряду с прямой и косвенной адресацией, прямой регистровой адресации. Наличие четырех банков рабочих регистров обеспечивает быстрое переключение контекста программы при использовании ограниченного числа подпрограмм или обработчиков внешних прерываний. После инициализации активен банк 0.
Оставшиеся 80 байт из области младших 128 байт ОЗУ и вся область старших 128 байт ОЗУ - это область обычного ОЗУ, использующего косвенную адресацию всех данных и допускающего прямую адресацию 80 байт из области младших 128 байт.
Система команд МК SAB 80C515.
МК SAB 80C515 оперирует с операндами четырех типов: битами, тетрадами (4-битными словами), байтами и 16-битными словами, при этом большинство операндов команд являются байтами.
Для их адресации используются следующие типы адресации: неявная регистровая, прямая, непосредственная, косвенная и разновидность косвенной базово индексная адресация. Указанные способы адресации обеспечивают обращение к операндам-источникам. При обращении к операндам-приемникам непосредственная и базово-индексная адресации не используются.
Неявная адресация, т.е. способ адресации, в котором адрес операнда не указывается, а сам операнд неявно адресуется кодом команды, используется в большинстве команд, оперирующих с аккумулятором. Кроме того, неявная адресация используется для адресации регистра B в командах умножения и деления, а также для обращения к флагу С в командах битовых операций, при обращениях к регистру DPTR и в командах работы со стеком.
Регистровая адресация применяется только для адресации 8 регистров R0 R7 текущего (рабочего) банка регистров. Так как эти регистры принадлежат пространству младших 128 байт внутреннего ОЗУ, то к ним также можно обратиться, используя прямую и косвенную адресацию через регистр Ri (i = 0, 1) текущего банка регистров.
Косвенная адресация используется для обращения к операндам внутренней памяти данных IRAM через регистр Ri (i = 0, 1) и в командах пересылок из внешней/во внешнюю память данных через регистр Ri или DPTR.
Операндом команд с непосредственной адресацией может быть только источник непосредственных данных. Непосредственные данные это константы или прямые адреса, для представления которых используется второй или второй и третий байт команды.
Синтаксис большинства команд ассемблерного языка состоит из мнемонического обозначения функций команды, вслед за которым могут размещаться операнды, указывающие методы адресации и типы данных. Для обозначения типов данных и способов адресации в мнемониках команд применяются следующие обозначения:
Rn регистры R0 R7 текущего (рабочего) банка регистров;
bit прямо адресуемый бит, находящийся в IRAM или регистре специальных функций;
@Ri обозначение косвенной адресации через регистр Ri (i = 0, 1);
@DPTR обозначение косвенной адресации через регистр DPTR;
addr16 16-битный адрес безусловной передачи управления;
addr11 11-битный адрес безусловной передачи управления в пределах 2-Кбайтного блока памяти программ, содержащем код команды блока передачи управления;
/bit слэш перед операндом в языке ассемблера указывает, что используется инвертированное значение бита-источника, хотя сам бит источника не инвертируется.
Машинные коды команд МК представляются одним, двумя или тремя байтами. Команды выполняются за один или два машинных цикла. Исключение составляют команды умножения и деления, длительность исполнения которых равна 4 машинных цикла.
Систему команд МК удобно представить в виде нескольких групп:
команды арифметических и логических операций;
команды битового процессора;
команды передачи управления.
Группа команд пересылок (передачи данных)
Команды этой группы не модифицируют флаги результата. Исключение составляет команда загрузки PSW и аккумулятора. При загрузке PSW модифицируются все флаги, а при загрузке ACC флаг паритета.
Базовая версия MCS–51 Краткие сведения. Современные 8–разрядные микроконтроллеры (МК) обладают такими ресурсами управления в режиме реального времени, для получения которых раньше использовались дорогие многокристальные компоновки в виде отдельных плат микроЭВМ, A именно:
● имеют достаточную емкость памяти, физическое и логическое ее разделение на память программ и память данных (гарвардскую архитектуру) и систему команд, ориентированную на выполнение алгоритмов управления;
● включают в себя все устройства (процессор, ПЗУ, ОЗУ, порты ввода–вывода, систему прерываний, средства обработки битовой информации и др.), необходимые для реализации микропроцессорной системы управления минимальной конфигурации. В 70–е годы прошлого столетия фирмой Intel разработан и освоен промышленный выпуск семейства 8–разрядных микроконтроллеров MCS–48, объединенных рядом общих признаков (разрядностью, системой команд, набором основных функциональных блоков и др.). Базовая версия этого семейства включает в себя:
● внутреннюю память программ (1/2/4К байт);
● внутреннюю память данных (64/128/256 байт);
● до 27 внутренних и 16 внешних линий ввода–вывода;
● один 8–разрядный таймер–счетчик;
● одноуровневую систему прерываний с двумя источниками запросов. В 1980 г. той же фирмой было разработано новое семейство восьмиразрядных микроконтроллеров MCS–51, которое совместимо с архитектурой семейства MCS–48, но обладает более широкими возможностями.
Архитектура семейства MCS–51 оказалась настолько удачной, что и по настоящее время является одним из стандартов 8–разрядных МК. Поэтому объектом изучения выбраны МК этого семейства, получившие широкое распространение в сравнительно простых системах управления.
Для семейства MCS–51 разработаны различные средства подготовки программ (компиляторы, аппаратно–программные эмуляторы и др.) и имеется большое число библиотек стандартных подпрограмм. В состав семейства входят разнообразные модификации микросхем (версии кристаллов) микроконтроллеров. В статьях этого раздела достаточно подробно рассматривается базовая версия микроконтроллеров семейства MCS–51 (микросхеме 8051 соответствует отечественный аналог КP1816ВЕ51), наиболее простая в структурно–функциональном плане и с точки зрения понимания.
Последующие серии микросхем, сохраняя совместимость с базовой версией, отличаются от нее улучшенной технологией изготовления, электрическими параметрами, дополнительными аппаратными средствами и функциональными возможностями. Структурно–функциональным особенностям последующих модификаций микросхем семейства MCS–51 посвящены следующие статьи. Обобщенная структурная схема MCS–51. В состав МК, обобщенная структурная схема которого приведена на рис. 7.1.1, входят:
● 8–разрядный центральный процессор ЦП, состоящий из АЛУ, устройства управления УУ и формирователя адреса ФА;
● масочное ПЗУ емкостью 4К байта для хранения программ;
● ОЗУ емкостью 128 байт для хранения данных;
● четыре программируемых порта Р0–Р3 для ввода–вывода информации;
● блок последовательного интерфейса БПИ для обмена информацией с внешними устройствами по двухпроводной линии;
● блок таймеров/счетчиков БT/C для поддержания режима реального времени;
● блок прерываний БП для организации прерываний исполняемых программ. Эти средства образуют резидентную часть микроконтроллера, размещенную непосредственно на кристалле. В состав МК входит большое число регистров, которые отнесены к отдельным функциональным блокам и на схеме не показаны.
На схеме также не показаны цепи управления. Двусторонний обмен информацией между блоками осуществляется по внутренней 8–разрядной шине данных ШД–8.
По внутренней 16–разрядной шине адреса ША–16 сформированный в ЦП адрес выводится в ПЗУ (12 разрядов адреса) и в ОЗУ (8 младших разрядов).
При использовании внешней памяти в порт Р0 выводятся 8 младших разрядов адреса и в порт P2 — 3 или 8 старших разрядов.
Для логического расширения интерфейса используется совмещение функций линий портов. В качестве примера на рис. 7.1.1 пунктиром показаны линии порта Р3, выполняющие альтернативные функции передачи управляющих сигналов, о назначении которых будет сказано ниже. Для создания внутреннего тактового генератора к выводам микросхемы МК подключаются кварцевый резонатор и два конденсатора (рис. 7.1.1). Вместо внутреннего тактового генератора для синхронизации можно использовать внешний источник колебаний. Условное графическое обозначение микросхемы МК приведено на рис. 7.1.2, обозначение и назначение выводов — в табл. 7.1.1. Рассмотрим функциональные блоки МК и принцип их работы. Арифметическо–логическое устройство. Арифметическо–логическое устройство предназначено для выполнения арифметических (включая умножение и деление) и логических операций над восьмиразрядными операндами, A также операций логического сдвига, обнуления, установки и др. Структурная схема АЛУ приведена на рис. 7.1.3.
Память программ.
Необходимость такой памяти вызвана тем, что микроконтроллер не содержит таких устройств памяти, как винчестер в компьютере, с которого загружается исполняемая программа. Поэтому код программы должен постоянно храниться в микроконтроллере.
Все типы памяти программ относятся к энергонезависимой памяти, или постоянной памяти (ПЗУ), содержимое которой сохраняется после выключения питания микроконтроллера.
В процессе выполнения программа считывается из этой памяти, а блок управления (дешифратор команд) обеспечивает ее декодирование и выполнение необходимых операций. Содержимое памяти программ не может меняться (перепрограммироваться) во время выполнения программы. Поэтому функциональное назначение микроконтроллера не может измениться, пока содержимое его памяти программ не будет стерто (если это возможно) и перепрограммировано (заполнено новыми командами).
Следует обратить внимание, что разрядность микроконтроллера (8, 16 или 32 бит) указывается в соответствии с разрядностью его шины данных.
Когда говорится, что устройство является 8–разрядным, это означает разрядность данных, которые способен обрабатывать микроконтроллер.
В Гарвардской архитектуре команды могут иметь большую разрядность, чем данные, чтобы дать возможность считывать за один такт целую команду. Например, микроконтроллеры PIC в зависимости от модели используют команды с разрядностью 12, 14 или 16 бит. В микроконтроллерах AVR команда всегда имеет разрядность 16 бит. Однако все эти микроконтроллеры имеют шину данных разрядностью 8 бит.
В устройствах с Принстонской архитектурой разрядность данных обычно определяет разрядность (число линий) используемой шины. В микроконтроллерах Motorola 68НС05 24–разрядная команда размешается в трех 8–разрядных ячейках памяти программ. Для полной выборки такой команды необходимо произвести три цикла считывания этой памяти.
Выделим и рассмотрим пять типов энергонезависимой резидентной памяти, или постоянных запоминающих устройств (ПЗУ), используемых для хранения программ.
Режим записи в порт.
При выполнении команды записи в порт новое значение записывается в защелку в фазе S6P2 и выводится непосредственно на выходной контакт порта в фазе S1P1 следующего машинного цикла.
Режим чтения порта
Команды чтения портов считывают информацию непосредственно с внешних контактов выводов порта или с выходов защелок. В первом случае бит данных с вывода порта считывается программно через буфер В2 сигналом «Чтение выводов» на линию внутренней шины данных (ШД) МК. Отметим, что сигналы «Запись в защелку», «Чтение защелки», «Чтение выводов» вырабатываются аппаратно при выполнении соответствующих команд.
Во втором случае реализуется так называемый режим «Чтение—Модификация—Запись», в котором команда считывает сигнал состояния защелки, при необходимости модифицирует его и затем записывает обратно в защелку. Режим «Чтение—Модификация—Запись» реализуется при выполнении следующих команд: ANL, ORL, XRL, JBC; CPL; INC; DEC; DJNC; MOV PX,Y; CLR PX.Y; SETB PX,Y.
Чтение информации с выходов защелок позволяет исключить ошибки при интерпретации логического уровня на выводе порта. Продолжение статьи читайте во второй части.
Можно выделить три основных вида памяти, используемой в микроконтроллерах:
● память программ, которая представляет собой постоянную память, предназначенную для хранения программного кода и констант. Эта память не изменяет своего содержимого в процессе выполнения программы;
● память данных, предназначенная для хранения переменных (результатов) в ходе выполнения программы;
● регистровая память, состоящая из внутренних регистров микроконтроллера. Рассмотрим особенности каждого из перечисленных видов памяти.
Внутренняя память данных микроконтроллеров MCS-51
Несмотря на то, что это самое маленькое адресное пространство из рассматриваемых, оно устроено наиболее сложным образом. Распределение памяти данных микроконтроллеров серии MCS-51 приведено на рисунке 4.
Рисунок 4. Адресное пространство внутренней памяти данных.
Внутреннее ОЗУ данных предназначено для временного хранения информации, используемой в процессе выполнения программы, и занимает 128 младших байт, с адресами от 000h до 07Fh для микроконтроллеров 8051, 8031, КР1816ВЕ31, КР1816ВЕ51, КР1816ВЕ751 КР1830ВЕ31, КР1830ВЕ51, КР1830ВЕ751 или 256 восьмиразрядных ячеек, с адресами от 000h до 0FFh для всех остальных микроконтроллеров семейства.
Регистры специальных функций занимают адреса внутренней памяти данных с 080h по 0FFh. Так как адреса регистров специальных функций совпадают со старшими адресами внутреннего ОЗУ данных, то имеются особенности при использовании этих адресов внутренней памяти данных.
Регистры общего назначения позволяют писать самые эффективные программы. У микроконтроллеров семейства MCS-51 программирующему инженеру доступны восемь регистров. Более того, в этом семействе микроконтроллеров есть целых четыре набора (банка) регистров с именами RB0 - RB3. Банк регистров состоит из восьми восьмиразрядных регистров с именами R0, R1, …, R7. Несколько банков регистров служат для организации независимой работы нескольких параллельно выполняемых программ. Переключение банков регистров производится при помощи двух особых бит регистра слова состояния программы PSW (RS0 и RS1). Если организация нескольких параллельных потоков обработки данных не нужна, то можно пользоваться только нулевым банком регистров, включающимся автоматически после включения питания и сброса микроконтроллера, остальные ячейки памяти использовать как обычное ОЗУ.
Все четыре банка регистров объединены с 32 младшими байтами внутреннего ОЗУ данных (см. рисунок 4). Так как физически регистры и ячейки внутреннего ОЗУ объединены, то команды программы могут обращаться к регистрам, используя их имена R0-R7 ( регистровая адресация):
или используя их адрес во внутренней памяти данных ( прямая байтовая адресация):
Следующие после банков регистров внутреннего ОЗУ данных 16 ячеек памяти (адреса 20Н-2FH) образуют область памяти, к которой возможна как байтовая, так и битовая адресация. В этих ячейках располагаются 128 программных флагов (битовых ячеек памяти). Обращение к отдельным битам этих ячеек возможно по их битовым адресам. Например команды:
обращаются к 15 флагу, расположенному в старшем бите байтовой ячейки памяти 21h. Использование однобитовых ячеек памяти позволяет сократить необходимый для работы программы объём памяти данных, так как для хранения битовых переменных выделяется один бит в памяти данных, а не машинное слово, как это делается в универсальных микропроцессорах (компьютерах).
В битовой области сосредоточено только 128 флагов. Оставшиеся адреса в битовом пространстве используются для битовой адресации в области регистров специальных функций. Наиболее яркий пример использования битовой адресации в области регистров специальных функций - это обращение к отдельным ножкам параллельных портов:
Оставшаяся область памяти используется как обычное ОЗУ без особенностей. Хотя, надо отметить, что в современных микроконтроллерах эту память следует рассматривать как встроенные 256 регистров сверхоперативного ОЗУ. Основной памятью постепенно становится внутренняя память, доступная при помощи команд MOVX @DPTR, A
Память программ микроконтроллеров MCS-51
Память программ предназначена для хранения программ и имеет отдельное от памяти данных адресное пространство объемом 64 Кбайт, причем для некоторых микросхем (например I8751) для хранения программ на кристалле микроконтроллера расположено ПЗУ. Это ПЗУ отображается в область млаших адресов памяти программ. Учитывая, что выполнение программы после сброса микроконтроллера всегда начинается с нулевого адреса памяти программ, то при включении питания начнет выполняться программа, записанная во внутненнем ПЗУ микроконтроллера. Микроконтроллеры, не имеющие внутреннего ПЗУ (например I8031) могут работать только с внешней микросхемой ПЗУ емкостью до 64 Кбайт. Микроконтроллеры семейства MCS-51 имеют внешний вывод EA, с помощью которого можно запретить работу внутренней памяти, для чего необходимо подать на вывод EA логический "0" (соединить этот вывод с корпусом). При этом внутренняя память программ отключается и, начиная с нулевого адреса, все обращения происходят к внешней памяти программ.
Доступ к внешней памяти программ осуществляется в двух случаях:
- при действии сигнала EA=0 независимо от адреса обращения,
- в любом случае, если программный счетчик (РС) содержит число большее, чем максимальная ячейка внутренней памяти программ.
Распределение памяти программ микроконтроллера КР1830ВЕ51 представлено ниже:
MOVC A, A+@DPTR и MOVC A, A+@PC
Рисунок 2. Адресное пространство памяти программ
Для других микроконтроллеров этого семейства изменяется только объем внутренней памяти программ и количество доступных векторов прерываний программы.
Ниже приведены адреса векторов прерываний и соответствующие им аппаратурные источники прерываний программы:
Вектор прерывания | Флаги, вызывающие прерывание | Источник прерывания |
---|---|---|
0000Н | - | Рестарт (сброс) контроллера RESET |
0003Н | IE0 | внешнее прерывание INT0 |
000bН | TF0 | Таймер 0 |
0013Н | IE1 | внешнее прерывание INT1 |
001bН | TF1 | Таймер 1 |
0023Н | RI, TI | Последовательный порт |
002bН | TF2, EXF2 | Таймер 2 |
0033Н | CF, CCFn(n=0:4) | Набор программируемых счётчиков (РСА) |
003bН | AIF | Аналого-цифровой преобразователь |
0043Н | CF1,C1CCFn(n=1:4) | Набор программируемых счётчиков (РСА1) |
004bН | SEPIF | Последовательный порт SEP |
0053Н | IE2 | внешнее прерывание INT2 |
005bН | IE3 | внешнее прерывание INT3 |
0063Н | IE4 | внешнее прерывание INT4 |
006bН | IE5 | внешнее прерывание INT5 |
0073Н | IE6 | внешнее прерывание INT6 |
Примечание: вектора прерывания, выделенные:
- жирным подчеркнутым текстом- присутствуют во всех микросхемах семейства;
- жирным текстом- отсутствуют в микросхемах 8051,8031, КР1816ВЕ31, КР1816ВЕ51, КР1816ВЕ751 КР1830ВЕ31, КР1830ВЕ51, КР1830ВЕ751;
- обычным текстом- присутствуют только в микросхемах 8Х51FA, FB, FC и GB
- курсивом- присутствуют только в микросхеме 8Х51GB
Внешняя память данных микроконтроллеров MCS-51
Внешняя память данных предназначена для временного хранения информации, используемой в процессе выполнения программы. Эта память физически должна быть подключена к микросхеме микроконтроллера при помощи схемы, изображенной на рисунке 1. Максимальный объем этой памяти определяется регистром DPTR и составляет 64 Кбайта. Точно также как и в случае внешней памяти программ, объем внешней памяти данных может быть увеличен за счет использования портов P1 и P3 до 1 Гбайта. Внешняя память данных для своей работы требует использование портов P0, P2 и P3.
Это приводит к увеличению габаритов устройства, увеличению уровня помех и, в конечном итоге, увеличения стоимости устройства в целом. Поэтому в современных устройствах внешняя память не используется. Однако, в некоторых микроконтроллерах (например 87с550 фирмы DALLAS) команды обращения к внешней памяти используются для работы с дополнительной внутренней памятью большого объема.
MOVX A, @DPTR (команда чтения) и
MOVX @DPTR, A (команда записи)
MOVX A, @R0 или MOVX A, @R0 (команды чтения)
MOVX@R0, A MOVX@R0, A (команды записи)
Рисунок 3. Адресное пространство внешней памяти данных
Отметим, что в качестве внешней памяти данных могут быть использованы как микросхемы ОЗУ так и микросхемы ПЗУ.
Регистры специальных функций.
Регистры специальных функций - это дополнительные устройства, которые отображаются в адресное пространство внутренней памяти данных. В различных микроконтроллерах состав дополнительных устройств различается. Микроконтроллеры различаются между собой количеством параллельных портов, последовательных портов, таймеров. Некоторые из регистров специальных функций с указанием их адресов в адресном пространстве SFR внутреннего ОЗУ приведены на рисунке 5:
Схемные особенности портов
На рис. 7.1.13 показаны схемы для одного канала каждого из портов МК, включающего в себя:
● защелку для фиксации принимаемого бита данных;
● выходной усилительный каскад (драйвер);
● узел связи с выходным каскадом (за исключением P2);
● цепь для передачи бита данных со стороны вывода порта, состоящую из буферов В2 и В3 (для порта Р4). Защелкой служит D–триггер, тактируемый внутренним сигналом «Запись в защелку». Бит данных с прямого выхода D–триггера может быть считан программно через буфер В1 сигналом «Чтение защелки» на линию внутренней шины данных (ШД) МК.
Выходной каскад порта Р0 представляет собой инвертор, особенности которого проявляются в том, что нагрузочный транзистор VT2 открывается только при обращениях к внешней памяти (при передаче через порт адреса и данных). Во всех других режимах нагрузочный транзистор закрыт. Поэтому для использования Р0 (рис. 7.1.13, а) в качестве выходного порта общего назначения к его выводам необходимо подключить внешние нагрузочные резисторы. При записи 1 в защелку порта инверторный транзистор VT1 запирается и внешний вывод порта Р0.Х переводится в высокоомное состояние. В этом режиме вывод порта Р0.Х может служить входом. Если порт Р0 используется как порт ввода/вывода общего назначения, каждый из его выводов Р0.Х может независимо от других работать как вход или как выход. Выходные каскады портов P1, P2, Р3 (рис. 7.1.13, б, в, г) выполнены по схемам инверторов с внутренним нагрузочным резистором, в качестве которого использован транзистор VT2.
Для уменьшения времени переключения при переходе выводов портов из состояния 0 в состояние 1 параллельно нагрузочному транзистору VT2 введен дополнительный транзистор VT3. Транзистор VT3 с помощью элементов в цепи затвора отпирается на время, равное двум периодам колебаний задающего кварцевого генератора (в течение фаз S1P1, S2P2 машинного цикла). Выходные каскады портов Р0, P2 (рис. 7.1.13, A, в) с помощью мультиплексора MX могут быть подключены либо к защелкам, либо к внутренним шинам «Адрес/ данные» и «Адрес». Выходной каскад порта P1 (рис. 7.1.13, 6) постоянно подключен к защелке.
Если вывод порта Р3 является выходом и его защелка содержит 1, то его выходным каскадом управляет аппаратно внутренний сигнал «Альтернативная функция выхода», обеспечивающий выполнение соответствующей альтернативной функции, т.е. на внешнем выводе формируется один из сигналов ¯WR,¯RD или RxD. Если же вывод порта задействован на вход, то поступающий на него альтернативный сигнал (TxD, ¯INT0, ¯INT1, Т0, Т1) передается на внутреннюю линию «Альтернативная функция входа».
В состав АЛУ входят
● параллельный восьмиразрядный сумматор SМ комбинационного типа с последовательным переносом, выполняющий арифметические (сложение и вычитание) и логические (сложение, умножение, неравнозначность и тождественность) операции;
● аккумулятор A, обеспечивающий функции основного арифметического регистра;
● регистр В, используемый для реализации операций умножения и деления или как дополнительный сверхоперативный регистр, функции которого определяет пользователь;
●регистры (программно недоступные) временного хранения РВХ1, РВХ2, предназначенные для приема и хранения операндов на время выполнения операции;
● ПЗУ констант ПЗУК, хранящее корректирующий код для двоично–десятичного представления данных, код маски при битовых операциях и код констант;
● регистр слова состояния программы PSW, фиксирующий состояние АЛУ после выполненной операции. В табл. 7.1.2 приведены сведения о назначении битов отдельных разрядов регистра PSW. Устройство управления. Устройство управления (УУ) центрального процессора предназначено для координации совместной работы всех узлов МК с помощью вырабатываемых синхроимпульсов и управляющих сигналов. В его состав входят (рис. 7.1.4):
● узел синхронизации и управления УСУ, который формирует синхроимпульсы, задающие машинные циклы и их отдельные состояния (S) и фазы (Р), и в зависимости от режима работы МК вырабатывает необходимый набор управляющих сигналов. На выполнение команды отводится один, два или четыре машинных цикла.
Каждый машинный цикл имеет шесть состояний S1–S6, A каждое состояние включает в себя две фазы P1, P2, длительность которых составляет период колебаний тактового генератора T0SC.
Длительность машинного цикла равна 12T0SC. Все машинные циклы одинаковые, начинаются с фазы S1P1 и заканчиваются фазой S6P2.
Помимо синхроимпульсов устройство синхронизации в каждом машинном цикле формирует два (иногда один) сигнала стробирования младшего байта адреса ALE в виде положительного импульса в фазах S1P2–S2P1 и S4P2–S5P1. Временные диаграммы на рис. 7.1.5 иллюстрируют организацию машинных циклов;
● регистр команд РК, дешифратор команд ДК и ПЛМ, позволяющие в каждом машинном цикле сформировать набор микроопераций в соответствии с микропрограммой выполняемой команды;
● логика ввода–вывода ЛВВ для приема и выдачи сигналов, обеспечивающих обмен информацией МК с внешними устройствами через порты Р0–Р3;
● регистр PCON, имеющий единственный задействованный бит SMOD в позиции PCON.7 для удвоения скорости передачи данных через последовательный порт. Остальные биты зарезервированы для дальнейшего использования. Формирователь адреса. Формирователь адреса (ФА), или счетчик команд РС, предназначен для формирования текущего 16–разрядного адреса программной памяти и 8/16–разрядного адреса внешней памяти данных. В его состав входят (рис. 7.1.6):
● 16–разрядный буфер Б, осуществляющий связь между 8–разрядной шиной данных ШД и 16–разрядной внутренней шиной (ВШ) формирователя адреса;
● схема инкремента СИ для увеличения значения текущего адреса памяти программ на единицу;
● регистр для хранения текущего адреса команд РТА, поступающего из СИ;
● регистр указателя данных DPTR, состоящий из двух 8–разрядных регистров DPHи DPL. Он служит для хранения 16–разрядного адреса внешней памяти данных и может быть использован в качестве двух независимых программно доступных РОН;
● регистр формирователя адреса РФА для хранения исполнительного 16–разрядного адреса памяти программ или 8/16–разрядного адреса внешней памяти данных. Этот регистр используется также для передачи данных через порт Р0 во внешние устройства при выполнении команд MOVX @Rm, A и MOVX @DPRT, A.
Память данных. Память данных предназначена для приема, хранения и выдачи информации, используемой в процессе выполнения программы. Внутренняя (резидентная) память (рис. 7.1.7) данных состоит из ОЗУ емкостью 128 байт, указателя стека SP, регистра адреса ОЗУ РА и дешифратора Дш. Указатель стека SP представляет собой 8–разрядный регистр, предназначенный для приема и хранения адреса ячейки стека, к которой было последнее обращение. После сброса в указателе стека устанавливается адрес 07Н, что соответствует началу стека с адресом 08Н. Регистр адреса РА совместно с дешифратором Дш позволяет осуществить доступ к требуемой ячейке памяти, содержащей байт или бит информации.
В МК предусмотрена возможность увеличения объема памяти данных до 64 Кбайт путем подключения внешних запоминающих устройств. В качестве примера на рис. 7.1.8 показана страничная организация внешней памяти данных ВПД емкостью 2К байт с использованием команд типа MOVX @Rm(m = 0; 1). При этом порт Р0 работает как мультиплексированная шина адрес/данные, три линии порта P2 используются для адресации страницы внешнего ОЗУ, A остальные пять линий могут быть задействованы в качестве линий ввода–вывода. На рис. 7.1.9 приведены временные диаграммы циклов чтения и записи при работе МК с внешним ОЗУ. На диаграммах обозначено:
● PCL OUT — выдача младшего байта счетчика команд PC;
● РСН — старший байт счетчика команд PC;
● DPL, DPH — младший и старший байты регистра указателя данных DPTR, который используется в качестве регистра для косвенной адресации в командах MOVX @DPTR,A и MOVX A,@DPTR;
● P2 SFR — защелки порта P2;
● Rm (m = 0, 1) — регистры, используемые в командах MOVX @Rm, A и MOVX A, @Rm в качестве регистров косвенного адреса;
● Z — высокоомное состояние;
● D — период, в течение которого данные из порта Р0 вводятся в микроконтроллер. Память программ. Память программ предназначена для хранения программ, имеет свое (отдельно от памяти данных) адресное пространство и доступна только для чтения. В ее состав входит дешифратор Дш и ПЗУ (рис. 7.1.10). Для адресации памяти программ используется 16–разрядный счетчик РС, поэтому ее максимальная емкость составляет 64К байта. Внутренняя память программ состоит из ПЗУ емкостью 4К байт и 12–разрядного дешифратора. Внешняя память подключается по схеме на рис. 7.1.11. Если на вывод ¯EA МК подается 0 В (как показано на рис. 7.1.11), внутренняя память программ отключается. Все обращения к памяти начинаются с адреса 0000h. При подключении вывода ¯ЕА к источнику питания обращение к внутренней памяти программ по адресам 0000h–FFFFh и к внешней памяти программ по адресам 0FFFh–FFFFhпроисходит автоматически.
Для чтения внешней памяти программ МК вырабатывается сигнал ¯PSEN. При работе с внутренней памятью сигнал чтения не используется. При обращениях к внешней памяти программ всегда формируется 16–разрядный адрес. Младший байт адреса передается через порт Р0 в первой половине машинного цикла и фиксируется по срезу строба АLЕ в регистре Во второй половине цикла порт Р0 используется для ввода в МК байта данных из внешней памяти.
Старший байт адреса передается через порт P2 в течение всего времени обращения к памяти.
Временные диаграммы циклов чтения и записи при работе МК с внешним ОЗУ приведены на рис. 7.1.12. На диаграммах обозначено:
● PCL OUT — выдача младшего байта счетчика команд PC;
● РСН OUT — выдача старшего байта счетчика команд PC;
● DPH — старший байт регистра указателя данных DPTR, который используется в качестве регистра для косвенной адресации в командах MOVX @DPTR,A и MOVX A,@DPTR;
● P2 SFR — защелки порта P2;
● INS IN — ввод байта инструкции (команды) из памяти программ;
● ADDR OUT — выдача младшего байта адреса внешней памяти данных из регистров Rm (m = 0, 1) или из регистра DPL (младшего регистра DPTR). Порты ввода–вывода. Назначение портов. Порты Р0, P1, P2, Р3 предназначены для обмена информацией между МК и внешними устройствами, A также для выполнения следующих функций:
● через порт Р0 выводится младший байт адреса А7…A0; выводится из МК и вводится в МК байт данных при работе с внешней памятью программ и внешней памятью данных (с разделением во времени);
● через порт P2 выводится старший байт адреса A15…А8 при работе с внешней памятью программ и внешней памятью данных (только при использовании команд MOVX A,@DPTR и MOVX @DPTR,A);
● линии порта Р3 могут быть задействованы на выполнение альтернативных функций, если в фиксатор–защелку этой линии занесена 1, в противном случае на выводе линии фиксируется 0. Альтернативные функции выводов порта P3 приведены в табл. 7.1.3.
Регистровая память.
Микроконтроллеры (как и компьютерные системы) имеют множество регистров, которые используются для управления различными внутренними узлами и внешними устройствами. К ним относятся:
● регистры процессорного ядра (аккумулятор, регистры состояния, индексные регистры);
● регистры управления (регистры управления прерываниями, регистры управления таймером);
● регистры ввода/вывода данных (регистры данных и регистры управления параллельным, последовательным или аналоговым вводом/выводом).
По способу размещения регистров в адресном пространстве можно выделить:
● микроконтроллеры, в которых все регистры и память данных располагаются в одном адресном пространстве, т. е. регистры совмещены с памятью данных. В этом случае устройства ввода–вывода отображаются на память;
● микроконтроллеры, в которых устройства ввода/вывода отделены от общего адресного пространства памяти. Основное достоинство способа размещения регистров ввода–вывода в отдельном пространстве адресов — упрощается схема подключения памяти программ и данных к общей шине. Отдельное пространство ввода–вывода дает дополнительное преимущество процессорам с Гарвардской архитектурой, обеспечивая возможность считывать команду во время обращения к регистру ввода–вывода.
Способы обращения к регистрам оказывают существенное влияние на их производительность. В процессорах с RISC–архитектурой все регистры (часто и аккумулятор) располагаются по явно задаваемым адресам, что обеспечивает более высокую гибкость при организации работы процессора.
Репрограммируемая память с электрическим стиранием.
В качестве элемента памяти с электрическим стиранием (Electrically Erasable Pro grammable ROM — EEPROM или E2 PROM) используется транзистор со структурой МНОП (Металл, Нитрид кремния, Окисел кремния, Полупроводник), благодаря чему ПЗУ имеет сравнительно низкую стоимость (по отношению к EPROM) и допускает максимальное число циклов стирания/программирования 10 4 –10 6 . Кроме того, технология программирования памяти EEPROM позволяет реализовать побайтное стирание и побайтное программирование, не снимая контроллер с платы, что позволяет периодически обновлять его программное обеспечение.
Несмотря на указанные достоинства, этот тип памяти не получил широкого распространения для хранения программ по двум причинам:
● ПЗУ типа EEPROM имеют ограниченную емкость;
● появились ПЗУ типа FLASH , которые имеют близкие пользовательские характеристики, но более низкую стоимость.
Особенности стека.
В микроконтроллерах для организации вызова подпрограмм и обработки прерываний выделяется часть памяти ОЗУ, именуемая стеком. При этих операциях содержимое программного счетчика и основных регистров (аккумулятора, регистра состояния, индексных и других регистров) сохраняется, а при возврате к основной программе восстанавливается. Напомним, что стек работает по принципу: последний пришел — первый ушел (Last In , First Out—LIFO).
В Принстонской архитектуре ОЗУ используется для реализации многих аппаратных функций, включая функции стека. В адресном пространстве памяти выделены отдельные области для команд, регистров общего назначения, регистров специальных функций и др. Это снижает производительность контроллера, так как обращения к различным областям памяти не могут выполняться одновременно.
Микропроцессоры с Гарвардской архитектурой могут параллельно (одновременно) адресовать память программ, память данных (включающую пространство ввода–вывода) и стек.
Например, при активизации команды вызова подпрограммы CALL выполняется несколько действий одновременно.
В Принстонской архитектуре при выполнении команды CALL следующая команда выбирается только после того, как в стек будет помещено содержимое программного счетчика.
Из–за небольшой емкости ОЗУ в микроконтроллерах обеих архитектур могут возникнуть проблемы при выполнении программы:
● если выделен отдельный стек, то после его заполнения происходит циклическое изменение содержимого указателя стека, в результате чего указатель стека начинает ссылаться на ранее заполненную ячейку стека. Поэтому после слишком большого количества команд CALL в стеке окажется неправильный адрес возврата, который был записан вместо правильного адреса;
● если микропроцессор использует общую область памяти для размещения данных и стека, то при переполнении стека произойдет затирание данных. Рассмотрим особенности сохранения в стеке содержимого регистров, обусловленные отсутствием команд загрузки в стек (PUSH) и извлечения из стека (POP). В таких микроконтроллерах вместо команды PUSH и POP используются две команды и индексный регистр, который явно указывает на область стека. Последовательность команд должна быть такой, чтобы прерывание между первой и второй командой не привело к потере данных. Ниже приведена имитация команд PUSH и POP с учетом указанного требования.
PUSH ; Загрузить данные в стек decrement index; Перейти к следующей ячейке стека move [ index], асе ; Сохранить содержимое аккумулятора в стеке POP ; Извлечь данные из стека move асе, [index]; Поместить значение стека в аккумулятор increment index ; Перейти к предыдущей ячейке стека
Если после первой команды программа будет прервана, то после выполнения обработки прерывания содержимое стека не будет потеряно.
Память данных.
В качестве резидентной памяти данных используется статическое оперативное запоминающее устройство (ОЗУ), позволяющие уменьшать частоту тактирования до сколь угодно малых значений. Содержимое ячеек ОЗУ (в отличие от динамической памяти) сохраняется вплоть до нулевой частоты. Еще одной особенностью статического ОЗУ является возможность уменьшения напряжения питания до некоторого минимально допустимого уровня, при котором программа управления микроконтроллером не выполняться, но содержимое в ОЗУ сохраняется.
Уровень напряжения хранения имеет значение порядка одного вольта, что позволяет для сохранения данных при необходимости перевести МК на питание от автономного источника (батарейки или аккумулятора). Некоторые МК (например, DS5000 фирмы Dallas Semiconductor) имеют в корпусе автономный источник питания, гарантирующий сохранение данных в ОЗУ на протяжении 10 лет.
Характерной особенностью микроконтроллеров является сравнительной небольшой объем (сотни байт) оперативной памяти (ОЗУ), используемой для хранения переменных. Это можно объяснить несколькими факторами:
● стремлением к упрощению аппаратных средств МК;
● использованием при написании программ некоторых правил, направленных на сокращение объема памяти ОЗУ (например, константы не хранятся как переменные);
● распределением ресурсов памяти таким образом, чтобы вместо размещения данных в ОЗУ максимально использовать аппаратные средства (таймеры, индексные регистры и др.);
● ориентацией прикладных программы на работу без использования больших массивов данных.
О внешней памяти.
В тех случаях, когда для разрабатываемых приложений не хватает резидентной памяти программ и памяти данных, к микроконтроллеру подключается дополнительная внешняя память. Известны два основных способа:
● подключение внешней памяти с использованием шинного интерфейса (как в микропроцессорных системах). Для такого подключения многие микроконтроллеры имеют специальные аппаратные средства;
● подключение памяти к устройствам ввода–вывода, При этом обращение к памяти осуществляется через эти устройства программными средствами. Такой способ позволяет использовать простые устройства ввода/вывода без реализации сложных шинных интерфейсов. Выбор способа зависит от конкретного приложения.
Кроме того такое построение памяти позволяет в ряде случаев увеличить быстродействие микросхем.
Для обращения к памяти данных и к памяти программ используются одни и те же шина адреса и шина данных, но разные управляющие сигналы. Для чтения памяти программ вырабатывается сигнал PSEN, а для чтения памяти данных вырабатывается сигнал RD. Для записи информации в память данных вырабатывается сигнал WR. То есть память программ доступна только для чтения, а память данных доступна и для чтения и для записи любой информации, записанной в двоичном коде.
Рисунок 1. Схема подключения схем внешней памяти к микроконтроллерам семейства MCS-51
Масочная память.
Масочные ПЗУ (Mask–ROMили просто ROM) изготавливаются на этапе производства микроконтроллеров для полностью отлаженной программы. На стеклянном фотошаблоне при использовании программы создается рисунок маски. Полученный фотошаблон с маской используется для формирования соединений между элементами, из которых состоит память программ.
Первые масочные ПЗУ появились в начале 1960–х годов и находят применение до настоящего времени благодаря таким достоинствам как низкая стоимость при массовом производстве изделий и высокая надежность хранения программ.
Недостатки масочных ПЗУ — любое изменение прикладной программы связано со значительными затратами средств и времени на создание нового комплекта фотошаблонов и их внедрение в производство.
Программирование ПЗУ.
Отметим, что Mask ROM –память программируется только в заводских условиях при изготовлении МК. Память типа OTPROM и EPROM предоставляет разработчику возможности программирования с использованием программатора и источника повышенного напряжения, которые подключаются к соответствующим выводам МК.
Память EEPROM и FLASH относится к многократно программируемой, или репрограммируемой, памяти. Необходимое для стирания/программирования повышенное напряжение питания создается в модулях EEPROM и FLASH –памяти современных контроллеров с помощью встроенных схем усиления напряжения, называемых генераторами накачки. Благодаря реализации программного управления включением и отключением генератора накачки появилась принципиальная возможность осуществить программирование или стирание ячеек памяти FLASH и EEPROM в составе разрабатываемой системы. Такая технология программирования получила название программирования в системе (In System Programming — ISP).
Она не требует специального оборудования (программаторов), благодаря чему сокращаются расходы на программирование. Микроконтроллеры с ISP–памятью могут быть запрограммированы после их установки на плату конечного изделия.
Рассмотрим, как реализуется (и используется) возможность программирования EEPROM–памяти под управлением прикладной программы. Если программу с алгоритмом программирования хранить в отдельном модуле памяти с номинальным питающим напряжением, а EEPROM–память снабдить генераторами накачки, то можно произвести ISP–программирование EEPROM –памяти. Данное обстоятельство делает EEPROM –память идеальным энергонезависимым запоминающим устройством для хранения изменяемых в процессе эксплуатации изделия настроек пользователя. В качестве примера можно привести современный телевизор, настройки каналов которого сохраняются при отключении питания.
Поэтому одной из тенденций совершенствования резидентной памяти 8–разрядных МК стала интеграция на кристалл МК двух модулей энергонезависимой памяти: FLASH (или OTP ) — для хранения программ и EEPROM — для хранения перепрограммируемых констант.
Рассмотрим технологию (ре)программирования FLASH –памяти с встроенным генератором накачки под управлением прикладной программы. Прежде всего, отметим два обстоятельства:
● если для хранения перепрограммируемых констант в МК встроена память EEPROM, то попрограммирование нескольких бит FLASH –памяти при эксплуатации готового изделия не имеет смысла. При необходимости лучше сразу использовать режим репрограммирования;
● не следует программу программирования FLASH –памяти хранить в самой FLASH –памяти, так как переход в режим программирования приведет к невозможности дальнейшего ее считывания. Программа программирования должна располагаться в другом модуле памяти.
Для реализации технологии программирования в системе выбирается один из оследовательных портов МК, обслуживание которого осуществляет специальная программа монитора связи, расположенная в резидентном масочном ПЗУ МК. Через последовательный порт персональный компьютер загружает в ОЗУ МК программу программирования и прикладную программу, которая затем заносится в память FLASH. Так как резидентное ОЗУ МК имеет незначительный объем, то прикладная программа загружается отдельными блоками (порциями). Если в МК установлен модуль масочной памяти с программой программирования, в ОЗУ загружается только прикладная программа.
Микроконтроллеры, реализующие технологию программирования в системе, часто имеют в своем составе четыре типа памяти:
FLASH –память программ, Mask ROM –память монитора связи, EEPROM –память для хранения изменяемых констант и ОЗУ промежуточных данных.
Технология программирования в системе в настоящее время все шире используется для занесения прикладных программ в микроконтроллеры, расположенные на плате конечного изделия. Ее достоинство — отсутствие программатора и высокая надежность программирования, обусловленная стабильностью заданных внутренних режимов МК.
В качестве примера приведем показатели резидентной FLASH –памяти МК семейства НС08 фирмы Motorola:
● гарантированное число циклов стирания/программирования — 10 5 ;
● гарантированное время хранения записанной информации — 10 лет, что практически составляет жизненный цикл изделия; модули FLASH –памяти работают и программируются при напряжении питания МК от 1,8 до 2,7 В;
● эквивалентное время программирования 1 байта памяти — 60 мкс.
Однократно программируемая память.
Эта память (One–Time Program mable ROM — OTPROM ) программируется пользователем и в исходном состоянии содержит ячейки с единичными битами. Программированию подлежат только те ячейки памяти, содержимое которых должно принять значение 0. Для этого на ячейку памяти подают последовательность импульсов повышенного напряжения.
Уровень напряжения, число импульсов и их временные параметры должны строго соответствовать техническим условиям. После записи нуля восстановить единичное значение невозможно. По этой причине память получила название однократно программируемых ПЗУ. Однако следует указать на возможность допрограммирования (не тронутых) ячеек с единичными битами.
Микроконтроллеры с однократно программируемым ПЗУ используются в изделиях, выпускаемых небольшими партиями.
Репрограммируемая память с ультрафиолетовым стиранием.
Ячейка памяти с ультрафиолетовым стиранием (Erasable Programmable ROM — EPROM) представляет собой ЛИПЗМОП (лавинно–инжекционный с плавающим затвором) транзистор. В исходном состоянии (до записи) при обращении к ячейке считывается логическая единица. Программирование памяти сводится к записи в соответствующие ячейки логических нулей. Память ЕР ROM допускают многократное программирование, технология которого подобна технологии однократно программируемых ПЗУ.
Перед каждым сеансом программирования выполняется операция стирания для восстановления исходного состояния ячеек памяти. Для этого в корпусе микроконтроллера предусмотрено специальное окно, которое облучается ультрафиолетовыми лучами. Число сеансов стирания/программирования ПЗУ составляет 25–100 раз при соблюдении технологии программирования (заданные значения питающих напряжений, число и длительность импульсов) и технологии стирания (волновой диапазон источника ультрафиолетового излучения).
Микроконтроллеры с памятью EPROM из–за высокой стоимости применяются в опытных образцах разрабатываемых приложений.
Для уменьшения цены микросхемы EPROM заключают в корпус без окошка (версия EPROM с однократным программированием). Благодаря снижению стоимости версии EPROM часто используются вместо масочно–программируемых ROM.
Память типа FLASH.
Электрически программируемая и электрически стираемая память типа FLASH (FLASH ROM) создавалась как альтернатива между дешевыми однократно программируемыми ПЗУ большой емкости и дорогими EEPROM ПЗУ малой емкости. Память FLASH (как и EEPROM) сохранила возможность многократного стирания и программирования.
Из схемы ПЗУ изъят транзистор адресации каждой ячейки, что, с одной стороны, лишило возможности программировать каждый бит памяти отдельно, с другой стороны, позволило увеличить объем памяти. Поэтому память типа FLASH стирается и программируется страницами или блоками.
Таким образом, функционально FLASH –память мало отличается от EEPROM. Основное отличие состоит в способе стирания записанной информации: если в EEPROM–памяти стирание производится отдельно для каждой ячейки, то во FLASH –памяти — целыми блоками. В микроконтроллерах с памятью EEPROM приходится изменять отдельные участки программы без необходимости перепрограммирования всего устройство.
В настоящее время МК с FLASH начинают вытеснять МК с однократно программируемым (и даже масочным) ПЗУ.
Читайте также: