Поиск по сайту: |
|
По базе: |
|
Главная страница > Обзоры по типам > Микроконтроллеры > MAXQ |
|
|||||||||||||||||||||||||||||||||||||||||
Архитектура микроконтроллеров семейства MAXQАрхитектура микроконтроллеров семейства MAXQ разработана такой, чтобы быть модульной и расширяемой. Декодирование верхнего уровня команды чрезвычайно простое и основано на передачах к и от регистров. Регистры организованы в функциональные модули, которые в свою очередь разделены на системные и периферийные. На рисунке 1 приведена модульная архитектура и основные возможные направления передачи данных.
Доступ к памяти в микроконтроллерах семейства MAXQ основан на Гарвардской архитектуре с отдельными пространствами адресов памяти программы и данных. Простая система команд и транспортно-триггерная архитектура позволяют MAXQ работать в не конвейерном режиме выполнения, в котором каждая команда может быть выбрана из памяти, декодирована и выполнена за один тактовый цикл. Доступ к памяти данных может быть осуществлен через один из трех регистров указателя данных. Два из этих троих указателей данных, DP[0] и DP[1], являются автономными 16-разрядными указателями. Третий указатель данных, FP, состоит из 16-разрядного основного указателя (ВР) и 8-разрядного регистра смещения (OFFS). Все три указателя поддерживают функцию увеличения/уменьшения после операции для выполнения считывания и предварительного увеличения/уменьшения для операций записи. Для указателя рамки (FP = BP [Offs]), режим увеличения/уменьшения выполняется на величину, содержащуюся в регистре OFFS, и не затрагивает основной указатель (ВР). Стек реализован в виде специальной 16- битной памяти и обычно имеет глубину, равную 8 (хотя она может меняться у различных MAXQ микроконтроллеров). Встроенный элемент управления памятью (MMU) доступен через системные регистры, что позволяет осуществлять логическое переотображение физических пространств программы и данных, и таким образом облегчает внутрисистемное программирование и ускоряет доступ к таблицам данных, массивам и константам, физически расположенным в памяти программы. Декодирование команды Каждая команда MAXQ закодирована в виде одного 16-разрядного слова, формат которого приведен на рисунке 2.
Бит 15 (f) определяет формат для поля источник следующим образом:
Биты от 0 до 7 (ssssssss) представляют собой источник передачи. В зависимости от значения поля формата это может быть непосредственно значение или регистр. Если в этом поле передан регистр, то младшие четыре бита содержат спецификатор модуля, а старшие четыре бита - индекс регистра в этом модуле. Биты с 8 по 14 (ddddddd) представляют собой адресат передачи. Здесь всегда передается регистр, при этом младшие четыре бита содержат спецификатор модуля, а старшие четыре бита - индекс регистра в этом модуле. Так как поле источника 8- битное, из которых 4 бита требуется для идентификации модуля регистров, то каждый модуль может содержать всего 16 регистров в качестве источников. Однако поле получателя имеет на один бит меньше, что означает, что только восемь регистров в модуле могут быть определены в качестве получателей для одно-цикловой команды. Несмотря на то, что асимметрию между полями адресов источника и получателя операционного кода можно первоначально рассмотреть как недостаток, тем не менее, это поле может использоваться эффективно. Во-первых, так как регистры, доступные только для чтения никогда не будут определяться как получатели, то они могут быть помещены верхнюю часть модуля, что позволит считывать их за один цикл. Во-вторых, есть регистры, связанные с системными и периферийными модулями (например, сторожевой таймер), запись в некоторые биты которых ограничена. Эти биты можно расположить в старших регистрах. Для выбора старших регистров необходимо будет использовать регистр префикса PFX, используемый в качестве дополнительного бита адреса. Этот регистр префикса записывается автоматически и требует одного дополнительного цикла. Архитектура у микроконтроллеров семейства MAXQ транспортно-триггерная. Это означает, что запись или считывание из указанного регистра также вызовет побочные эффекты. Эти побочные эффекты от основных до высокоуровневых операционных кодов определяются ассемблером как ADDC, OR, JUMP и так далее. В то время как эти операционные коды фактически реализуются как команды перемещения (MOVE) между двумя регистрами, кодирование их должен выполнять ассемблер. Регистры, определенные как системные и периферийные, работают так, как это описано в документации. Система команд MAXQ разработана таки образом, чтобы обеспечить максимальную ортогональность. Все арифметические и логические операции выполняются между регистром и аккумулятором. Данные могут быть переданы в любой регистр одной командой. Пространство регистров Архитектура микроконтроллеров семейства MAXQ содержит 16 модулей регистров. Каждый из этих модулей содержит 32 регистра. Первые восемь регистров в каждом модуле могут быть считаны и записаны за один цикл; следующие восемь регистров могут быть прочитаны за один цикл, а записаны - за два (используя префиксный регистрPFX); последние шестнадцать регистров могут быть считаны и записаны только за два цикла (всегда только при помощи префиксного регистра PFX). Регистраторы могут быть как 8- , так и 16- разрядные. В каждом регистре может быть реализовано произвольное количество битов; не реализованные биты считываются как нули. Как осуществляется передача данных между регистрами различной длины показано в таблице 1.
Таблица 1. Операции переноса между регистрами
Вышеупомянутые правила применяют ко всем перемещениям данных между определенными регистрами. Передача данных в/из неопределенных регистрами положений происходит по следующим правилам:
16 доступных модулей регистров разбиты на две группы. Первые шесть модулей (с адресами от 0h до 5h) называются модулями периферийных регистров, а остальные 10 модулей (с адресами от 6h до Fh) называются модулями системных регистров. Это деление только условное, поскольку нет никакой разницы между доступом к этим двум группам. Системные регистры определяют основные функциональные возможности, которые остаются неизменными для всех микроконтроллеров семейства MAXQ. Они включают все позиции регистров, которые используются для реализации операционных кодов высокого уровня, а так же следующие общие системные характеристики:
Периферийные регистры определяют дополнительные функциональные возможности, которые могут быть у различных микроконтроллеров семейства 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. Как и другие модули, построенные на основе ОЗУ, после сброса или включения стековая память имеет неопределенное значение. Стековая память предназначена только для обслуживания стековых операций и к ней не может быть осуществлен доступ через адресацию памяти команд или данных. Документация www.rieltor-plus.ru/" class="sale">недвижимость Москвы | www.ucoyota.ru/" class="sale">рынок недвижимости | coolstroy.ru/" class="sale">пресса о строительстве | cool-stroy.ru/" class="sale">строительный портал | gutstroy.ru/" class="sale">строительство в Москве Главная - Микросхемы - DOC - ЖКИ - Источники питания - Электромеханика - Интерфейсы - Программы - Применения - Статьи |
|
Впервые? | Реклама на сайте | О проекте | Карта портала тел. редакции: +7 (995) 900 6254. e-mail:info@eust.ru ©1998-2023 Рынок Микроэлектроники |
|