В HTML      В PDF
микроэлектроника, микросхема, транзистор, диод, микроконтроллер, память, msp430, Atmel, Maxim, LCD, hd44780, t6963, sed1335, avr, mega128
Предприятия Компоненты Документация Применения Статьи Новости

 
Пересюхтюмя


13-я Международная выставка электронных компонентов и комплектующих для электронной промышленности





Выставка Передовые Технологии Автоматизации





Главная страница > Обзоры по типам > Микроконтроллеры > MAXQ
Пересюхтюмя


13-я Международная выставка электронных компонентов и комплектующих для электронной промышленности





Выставка Передовые Технологии Автоматизации


Архитектура микроконтроллеров семейства MAXQ

Архитектура микроконтроллеров семейства MAXQ разработана такой, чтобы быть модульной и расширяемой. Декодирование верхнего уровня команды чрезвычайно простое и основано на передачах к и от регистров. Регистры организованы в функциональные модули, которые в свою очередь разделены на системные и периферийные. На рисунке 1 приведена модульная архитектура и основные возможные направления передачи данных.

Транспортно-триггерная архитектура микроконтроллеров семейства MAXQ
Рисунок 1. Транспортно-триггерная архитектура микроконтроллеров семейства MAXQ

Доступ к памяти в микроконтроллерах семейства MAXQ основан на Гарвардской архитектуре с отдельными пространствами адресов памяти программы и данных. Простая система команд и транспортно-триггерная архитектура позволяют MAXQ работать в не конвейерном режиме выполнения, в котором каждая команда может быть выбрана из памяти, декодирована и выполнена за один тактовый цикл. Доступ к памяти данных может быть осуществлен через один из трех регистров указателя данных. Два из этих троих указателей данных, DP[0] и DP[1], являются автономными 16-разрядными указателями. Третий указатель данных, FP, состоит из 16-разрядного основного указателя (ВР) и 8-разрядного регистра смещения (OFFS). Все три указателя поддерживают функцию увеличения/уменьшения после операции для выполнения считывания и предварительного увеличения/уменьшения для операций записи. Для указателя рамки (FP = BP [Offs]), режим увеличения/уменьшения выполняется на величину, содержащуюся в регистре OFFS, и не затрагивает основной указатель (ВР). Стек реализован в виде специальной 16- битной памяти и обычно имеет глубину, равную 8 (хотя она может меняться у различных MAXQ микроконтроллеров). Встроенный элемент управления памятью (MMU) доступен через системные регистры, что позволяет осуществлять логическое переотображение физических пространств программы и данных, и таким образом облегчает внутрисистемное программирование и ускоряет доступ к таблицам данных, массивам и константам, физически расположенным в памяти программы.

Декодирование команды

Каждая команда MAXQ закодирована в виде одного 16-разрядного слова, формат которого приведен на рисунке 2.

Формат слова команды
Рисунок 2. Формат слова команды

Бит 15 (f) определяет формат для поля источник следующим образом:

  • если f равняется 0, то это команда с непосредственным источником, и поле источник представляет собой 8 битное значение.
  • если f равняется 1, то это команда с регистром в качестве источника, и поле источник представляет собой адрес регистра, из которого надо считать данные.

Биты от 0 до 7 (ssssssss) представляют собой источник передачи. В зависимости от значения поля формата это может быть непосредственно значение или регистр. Если в этом поле передан регистр, то младшие четыре бита содержат спецификатор модуля, а старшие четыре бита - индекс регистра в этом модуле.

Биты с 8 по 14 (ddddddd) представляют собой адресат передачи. Здесь всегда передается регистр, при этом младшие четыре бита содержат спецификатор модуля, а старшие четыре бита - индекс регистра в этом модуле. Так как поле источника 8- битное, из которых 4 бита требуется для идентификации модуля регистров, то каждый модуль может содержать всего 16 регистров в качестве источников. Однако поле получателя имеет на один бит меньше, что означает, что только восемь регистров в модуле могут быть определены в качестве получателей для одно-цикловой команды.

Несмотря на то, что асимметрию между полями адресов источника и получателя операционного кода можно первоначально рассмотреть как недостаток, тем не менее, это поле может использоваться эффективно. Во-первых, так как регистры, доступные только для чтения никогда не будут определяться как получатели, то они могут быть помещены верхнюю часть модуля, что позволит считывать их за один цикл. Во-вторых, есть регистры, связанные с системными и периферийными модулями (например, сторожевой таймер), запись в некоторые биты которых ограничена. Эти биты можно расположить в старших регистрах. Для выбора старших регистров необходимо будет использовать регистр префикса PFX, используемый в качестве дополнительного бита адреса. Этот регистр префикса записывается автоматически и требует одного дополнительного цикла.

Архитектура у микроконтроллеров семейства MAXQ транспортно-триггерная. Это означает, что запись или считывание из указанного регистра также вызовет побочные эффекты. Эти побочные эффекты от основных до высокоуровневых операционных кодов определяются ассемблером как ADDC, OR, JUMP и так далее. В то время как эти операционные коды фактически реализуются как команды перемещения (MOVE) между двумя регистрами, кодирование их должен выполнять ассемблер. Регистры, определенные как системные и периферийные, работают так, как это описано в документации.

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

Пространство регистров

Архитектура микроконтроллеров семейства MAXQ содержит 16 модулей регистров. Каждый из этих модулей содержит 32 регистра. Первые восемь регистров в каждом модуле могут быть считаны и записаны за один цикл; следующие восемь регистров могут быть прочитаны за один цикл, а записаны - за два (используя префиксный регистрPFX); последние шестнадцать регистров могут быть считаны и записаны только за два цикла (всегда только при помощи префиксного регистра PFX).

Регистраторы могут быть как 8- , так и 16- разрядные. В каждом регистре может быть реализовано произвольное количество битов; не реализованные биты считываются как нули. Как осуществляется передача данных между регистрами различной длины показано в таблице 1.

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

Таблица 1. Операции переноса между регистрами

Размер регистра источника (бит) Размер регистра получателя (бит) Префикс установлен? Значение, устанавливаемое в получателе
старшие 8 бит младшие 8 бит
8 8 --   Источник [7;0]
8 16 Нет 00h Источник [7;0]
8 16 Да Prefix[7;0] Источник [7;0]
16 8 --   Источник [7;0]
16 16 Нет Источник [15;8] Источник [7;0]

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

  • если получателем является неопределенный регистр, то MOVE - фиктивная команда, которая тем не менее может запустить основную операцию, соответствующую регистру источника (например, @DP [n]--).
  • если определен регистр получатель, а источник - не определен, то источник данных для передачи будет зависеть от размера модуля источника. Если источником является модуль, содержащий 8- битные или 8- и 16- битные регистры, то источником будет являться префиксный регистр, к которому добавлены нули. Если источником является модуль, содержащий только 16-разрядные регистраторы, то будет передано значение 0000h.

16 доступных модулей регистров разбиты на две группы. Первые шесть модулей (с адресами от 0h до 5h) называются модулями периферийных регистров, а остальные 10 модулей (с адресами от 6h до Fh) называются модулями системных регистров. Это деление только условное, поскольку нет никакой разницы между доступом к этим двум группам.

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

  • Арифметическо-логическое устройство АЛУ (у MAXQ10: 8- битное; у MAXQ20: 16- битное) и связанные с ним флаги состояния (нуль, равняются, перенос, знак, переполнение)
  • Восемь рабочих аккумуляторов (у MAXQ10: 8- битные; у MAXQ20: 16- битные) и связанные регистры команд
  • Указатель команд
  • Регистры для проверки прерывания, манипуляции и идентификации
  • Циклический счетчик с автоматическим уменьшением для быстрой и компактной реализации циклов
  • Два регистра указателя данных и регистр указатель кадра для обеспечения доступа к памяти данных

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

Организация памяти

Вне пространства внутренних регистров память микроконтроллеров семейства MAXQ имеет Гарвардскую архитектуру с отдельными пространством адресов и шиной памяти программы и данных. Стековая память также является отдельной и доступ к ней осуществляется через определенные регистры.

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

Память программы

Память программы начинается с адреса x0000h. Размер памяти программы различен у разных микроконтроллеров этого семейства. Так как шина адреса памяти программы 16- разрядная, то можно сделать заключение, что максимальный объем памяти будет равняться 64 К слов. Так как слова 16- битные, следовательно пространство памяти может иметь максимальный размер в битах 64 К x 16.

Доступ к памяти программы осуществляется непосредственно программным счетчиком, а адресация - при помощи регистра указателя команд. Забегая вперед заметим, что системные прерывания и команды перехода просто изменяют содержание указателя команды, вызывая тем самым выборку операционной команды, расположенной по адресу прерывания или непосредственно по указанному адресу. Указатель команды доступен программно как для чтения, так и для записи; запись в указатель команды нового значения вызовет на следующем цикле переход по записанному адресу. После каждой выборки команды содержимое указателя команды автоматически увеличивается на единицу. По умолчанию указатель команды имеет значение 8000h. Этот адрес является начальным адресом сервисного ПЗУ. Такой установленный по умолчанию адрес позволит инициализировать внутрисистемное программирование при помощи кода из сервисного ПЗУ. Программа сервисного ПЗУ обращается к биту специального регистра и определяет, должна ли выполняться прикладная программа, начинающаяся с нулевого адреса, или программа внутрисистемного программирования. Вектор сброса пользовательской программы всегда должен находиться в начале памяти программы.

Обычно память программы реализуется в виде энергонезависимой памяти, например, ROM (масочное ПЗУ), EEPROM или Flash. В ROM память программа должна быть записана при производстве самого кристалла микроконтроллера и в дальнейшем запись в такую память невозможна. EEPROM и Flash память позволяют осуществлять внутрисистемное программирование, но в обоих случаях требуется, чтобы перед программированием память была очищена. Сервисное ПЗУ хранит необходимые подпрограммы (стирания, записи и верификации) этой энергонезависимой памяти.

Сервисное ПЗУ

Сервисное ПЗУ обычно занимает старшие 32 К слов памяти программы и начинается с адреса 8000h. Потенциально это сервисное ПЗУ позволяет реализовать следующие функции:

  • определения вектора сброса
  • начальной загрузки для инициации системы
  • внутрисистемного программирования
  • внутрисхемной отладки

После каждого сброса микроконтроллер автоматически начинает выполнять программу, начинающуюся с адреса 8000h, что позволяет выполнить любые необходимые функции поддержки системы. Затем проверяется бит активизации внутрисистемного программирования (System Programming Enable - SPE). Если бит SPE равен 1, то микроконтроллер выполнит предписанную программу начальной загрузки, которая постоянно находится в сервисном ПЗУ. По умолчанию бит SPE имеет значение, равное 0. Для входа в режим начальной загрузки бит SPE может быть установлен в единицу при сбросе через интерфейс JTAG. Когда внутрисистемное программирование закончено, программа начальной загрузки может обнулить бит SPE и пересбросить микроконтроллер, переведя его в режим, в котором внутрисистемное программирование блокируется.

Память данных

Встроенная память данных имеет начальный адрес x0000h. Размер памяти данных у различных микроконтроллеров этого семейства может быть различным. Доступ к памяти данных осуществляется при помощи регистра косвенной адресации через указатель данных (Data Pointer - @DP[n]) или указатель кадра (Frame Pointer - @BP [Offs]). Указатель данных используется как один из операндов команды MOVE. Если указатель данных используется в качестве источника, то вычислительное ядро выполнит загрузку данных из ячейки, адрес которой указан в указателе данных. Если указатель данных используется в качестве получателя, то вычислительное ядро выполняет запись данных по адресу, содержащемся в указателе данных. Доступ к указателю памяти может быть осуществлен программно.

Вычислительное ядро содержит два 16-разрядных указателя данных (DP[0] и DP[1]), позволяющих получить доступ к любой ячейки памяти данных. Все указатели данных поддерживают косвенный способ адресации и косвенную адресацию с автоинкрементным или автодекрементным. При выполнении команды MOVE указатели данных DP[0] и DP[1] могут использоваться для последующего приращения/декремента указателя источника или для предварительного приращения/декремента указателя получателя. Использование указателя данных косвенно с символом "++" автоматически увеличит содержимое активного указателя данных на 1 немедленно после выполнения команды передачи данных (@DP[n] ++) или немедленно после выполнения предыдущей команды записи (++ DP[n]). Использование указателя данных косвенно с символом "--" уменьшит содержание активного указателя данных на 1 немедленно после передачи считанных данных (@DP[n]-) или после выполнения предыдущей команды записи (-DP[n]).

Указатель кадра (BP [Offs]) формирует беззнаковое 16- битное сложение основного регистра указателя кадра (ВР) и регистра смещения указателя кадра (Offs). В команде MOVE указатель кадра может использоваться для последующего приращения/декремента указателя источника или для предварительного приращения/декремента указателя получателя. Использование указателя кадра косвенно с символом "++" (@BP [++ Offs] при записи или @BP [Offs ++] при чтении) автоматически увеличит содержимое указателя смещения кадра на 1 перед выполнением или после выполнения команды (в зависимости от того, используется он в качестве источника или получателя соответственно). Использование указателя кадра косвенно с символом "--" (@BP [--Offs] при записи или @BP [Offs--] при чтении) уменьшит содержимое указателя смещения кадра на 1 до или после выполнения команды как и в предыдущем случае. Обратите внимание, что функция приращения/декремента затрагивает только содержимое регистра Offs, а регистр ВР не изменяется.

Для поддержки скорости выполнения внутренних команд цикл памяти данных состоит всего из одного системного цикла. Это позволяет считывать и записывать данные в и из SRAM за один цикл. Управление памятью данных и контроль доступа к ней осуществляет MMU. Доступ к данным при чтении и записи может быть как побитовым, так и пословным.

Стековая память

В микроконтроллерах семейства MAXQ встроенная стековая память является 16- разрядной и может использоваться для хранения адресов возврата из подпрограмм, а так же в качестве регистров общего назначения. Стек задействуется вычислительным ядром автоматически при выполнении команд CALL, RET и RETI, а так же при обслуживании прерывания. Кроме того, он может использоваться для хранения и восстановления данных при помощи @SP--источник, @++ получатель, или команд PUSH, POP и POPI. Команда POPI действует аналогично команде POP, за исключением того, что она дополнительно очищает бит INS.

Стек сделан 16- разрядным ввиду того, что указатель команд реализован в этих микроконтроллерах 16- разрядным. Глубина стека различна у различных микроконтроллеров семейства MAXQ. Так как регистр указателя стека SP используется для хранения индекса вершины стека, то максимальный размер стека в микроконтроллерах этого семейства определяется количеством битов в регистре SP (например, если он имеет три бита, то стек будет иметь глубину 8, а если 4 - то 16).

При сбросе указатель стека SP устанавливается на вершину стека (например, по 07h адресу у микроконтроллеров с 8 - уровневым стеком или по адресу 0Fh для микроконтроллеров с 16- уровневым стеком). Команды CALL и PUSH, а так же прерывания увеличивают содержимое указателя стека SP, а после этого сохраняют содержимое в @SP. Команды RET, RETI, POP и POPI восстанавливают значение в @SP и уменьшают содержимое указателя стека SP.

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

Документация

  68 Kb Engl Введение в MAXQ архитектуру
  151 Kb Engl Benchmarking the MAXQ Instruction-Set Architecture vs. RISC Competitors
  45 Kb Engl Using Timers in the MAXQ Family of Microcontrollers
  1841 Kb Описание MAX2000
  1554 Kb Описание MAXQ2000-KIT Evaluation Kit

недвижимость Москвы | рынок недвижимости | пресса о строительстве | строительный портал | строительство в Москве