Распродажа

Электронные компоненты со склада по низким ценам, подробнее >>>

Содержание ChipNews

2003: 
1, 2, 3, 4, 5, 6, 7, 8, 9, 10
2002: 
1, 5, 6, 7, 8, 9
2001: 
1, 2, 3, 4, 5, 6, 7, 8, 9, 10
2000: 
1, 2, 3, 4, 5, 6, 7, 8, 9, 10
1999: 
1, 2, 3, 4, 5, 6, 7, 8, 9, 10

Новости электроники

Мне нравится

Комментарии

дима пишет в теме Параметры биполярных транзисторов серии КТ827:

люди куплю транзистар кт 827А 0688759652

тамара плохова пишет в теме Журнал Радио 9 номер 1971 год. :

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

Ивашка пишет в теме Параметры отечественных излучающих диодов ИК диапазона:

Светодиод - это диод который излучает свет. А если диод имеет ИК излучение, то это ИК диод, а не "ИК светодиод" и "Светодиод инфракрасный", как указано на сайте.

Владимир пишет в теме 2Т963А-2 (RUS) со склада в Москве. Транзистор биполярный отечественный:

Подскажите 2т963а-2 гарантийный срок

Владимир II пишет... пишет в теме Параметры биполярных транзисторов серии КТ372:

Спасибо!

RISC-микроконтроллеры с процессорным ядром ARM. Часть 1.

А. Емелин, И. Шагурин

RISC-микроконтроллеры с процессорным ядром ARM. Часть 1

В последние годы вс╦ более широкую популярность приобретают высокопроизводительные 32-разрядные микроконтроллеры, использующие процессорное ядро ARM. Такие микроконтроллеры выпускаются многими известными производителями: Atmel, Samsung, Intel, Motorola, Cirrus Logic, Oki и другими. Они привлекают пользователей низким значением соотношения "цена/качество", что обусловило их широкое применение в разнообразных устройствах. Ряд этих изделий используется российскими производителями для создания современной электронной аппаратуры различного назначения, поэтому представляется полезным ознакомление широкого круга российских специалистов с этим перспективным классом микроконтроллеров.

Процессорное ядро ARM разработано фирмой Advanced RISC Maсhines (Великобритания), которая к настоящему времени предоставила потребителям целый ряд их модификаций, образующих ряд семейств. Эти семейства представлены на рис. 1 в порядке повышения их функциональных возможностей. Все ядра совместимы по системе команд "снизу-вверх", что позволяет использовать в последующих разработках программное обеспечение, созданное для предыдущих модификаций микроконтроллеров.

Рисунок 1. Процессорные ядра фирмы ARM

Процессорные ядра фирмы ARM.

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

  • поведенческое описание на языке VHDL или Verilog (такие ядра называются синтезируемыми);
  • электрическая схема процессорного ядра;
  • топологическая макроячейка (описание топологии ядра для реализации в составе интегральной микросхемы).

Используя ту или иную форму представления, производители создают различные модели микроконтроллеров, дополняя процессорное ядро набором необходимых периферийных устройств. При изготовлении последних моделей микроконтроллеров используется современная микроэлектронная технология, обеспечивающая минимальные размеры 0,25, 0,18 или 0,13 мкм. При этом получены характеристики процессорных ядер, привед╦нные в табл. 1.

Таблица 1.Характеристики процессорных ядер ARM

Ядро MIPS/МГц Площадь, мм² Потребление, мВт/МГц Тактовая частота Кэш-память MMU
0,25 мкм
ARM7TDMI 0,9 1,02 0,78 60√70    
ARM7TDMI-S 0,9 1,20 1,10 60√70    
0,18 мкм
ARM7TDMI 0,9 0,59 0,30 80√110    
ARM7TDMI-S 0,9 0,62 0,39 80√110    
ARM7EJ-S 1,0 0,85 0,40 80√110    
ARM940T 1,1 4,2 0,75 180√200 4K/4K MPU
ARM946E-S 1,1 5,0 1,00 150√170 0┘1М MPU
ARM966E-S 1,1 4,0 0,90 150√170    
ARM720T 1,1 3,5 0,65 60√80 8K +
ARM920T 1,1 6,0 0,25 220√270 16K/16K +
ARM922T 1,1 3,5 0,25 220√270 180√200 +
ARM926EJ-S 1,0 6,5 1,40 180√200 4К┘128К +
0,13 мкм
ARM7TDMI 0,9 0,30 0,08 100√133    
ARM7TDMI-S 0,9 0,32 0,11 100√133    
ARM7EJ-S 1,0 0,42 0,12 100√133    
ARM940T 1,1 2,1 0,20 220√250 4K/4K MPU
ARM946E-S 1,1 2,5 0,25 180√210 0┘1М MPU
ARM966E-S 1,1 2,0 0,22 180√210    
ARM720T 0,9 1,8 0,20 100√120 8K +
ARM920T 1,1 6,0 0,25 220√270 16K/16K +
ARM922T 1,1 3,5 0,25 220√270 8K/8K +
ARM926EJ-S 1,0 3,2 0,35 220√270 4К┘128К +
ARM1020E 1,23 10,3 0,60 270√325 32K/32K +
ARM1022E 1,23 6,7 0,60 270√325 16K/16K +

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

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

В настоящее время самым младшим в ряду процессорных ядер ARM является семейство ARM7 Thumb, которое пришло на смену ARM6 Thumb. Это ядро с 32-разрядной целочисленной RISC-архитектурой, обеспечивающее производительность 130 млн.оп./с. Ядро очень компактно ≈ при производстве по технологии 0,18 мкм базовая модификация ARM7TDMI занимает площадь всего 0,59 мм2, при этом энергопотребление ядра составляет не более 0,25 мВт/МГц. Ядра ARM7TDMI-S и ARM7EJ-S являются синтезируемыми. Ядро ARM7EJ-S отличается от базового наличием операций, ориентированных на цифровую обработку сигналов (DSP), и поддержкой технологии Jazelle для ускорения работы Java-приложений.

Макроячейка ARM720T имеет в сво╦м составе модуль управления памятью (MMU), который обеспечивает трансляцию логических адресов в физические, а также реализует функции защиты памяти. При использовании MMU память разбивается на секции размером 1 Мбайт, а секции могут быть разбиты на страницы размером 4 или 64 Кбайт. Наличие MMU позволяет использовать на данном процессоре операционные системы класса Linux, Windows CE или Palm OS.

Ячейка ARM740T является упрощ╦нной версией ARM720T, в которой вместо модуля MMU присутствует модуль защиты памяти (MPU). Модуль MPU не поддерживает логической адресации (секции, страницы). Вместо этого можно выделить до 8 отдельных линейных областей памяти, задав для них определ╦нные правила доступа.

Макроячейки ARM720T и ARM740T имеют в сво╦м составе кэш-память объ╦мом 8 Кбайт. Микроконтроллеры с ядрами ARM7 Thumb применяются в цифровых аудиоплеерах, пейджерах, принтерах, карманных компьютерах.

Ядра семейства ARM7 имеют традиционную архитектуру фон-Неймана с общей памятью команд и данных. В последующих семействах ARM9, ARM10 реализуется гарвардская архитектура с раздельной внутренней кэш-памятью команд и данных.

Семейство ARM9 Thumb является развитием ARM7 Thumb по составу периферии и набору команд. Оно разработано для применения в портативных устройствах с высокими требованиями к быстродействию и энергопотреблению. Быстродействие вычислительного ядра достигает 220 млн.оп./с при потреблении 0,3 мВт/МГц. В настоящее время семейство представлено мак-роячейками ARM920T, ARM922T и ARM940T. Все они имеют отдельные кэши команд и данных, которые отличаются объ╦мом: 16К/16K, 8K/8K и 4K/4K, соответственно. Кроме того, ARM920T и ARM922T имеют отладочный интерфейс ETM и модуль управления памятью.

Группа синтезируемых ядер ARM9E-S Thumb выделяется фирмой ARM в отдельное семейство. Они имеют расширения для поддержки алгоритмов цифровой обработки сигналов (DSP), в том числе умножитель-накопитель (MAC). В ядро может быть включен математический сопроцессор VFP9-S, поддерживающий операции с плавающей точкой над данными двойной точности. Для синтезируемых ядер ARM946E-S и ARM926EJ-S возможна реализация кэш-памяти различного объ╦ма: от 0 до 1М и от 4К до 128К, соответственно.

Основные области применения ядер ARM9 Thumb и ARM9E-S Thumb ≈ цифровые системы телекоммуникации и реализация сложных алгоритмов управления. Микроконтроллеры на их основе используются в мобильных телефонах, модемах, сетевых картах, карманных компьютерах, автомобильной электронике. Благодаря DSP-расширениям ядро ARM9E-S Thumb может быть эффективно использовано в аудиокодировании (реализация протоколов AC3, MPEG), передаче голоса через Интернет и в антипробуксовочных тормозных системах (ABS).

Семейство ARM10 Thumb в настоящее время активно развивается. Фирма ARM осуществляет запланированный перевод ядра с технологии 0,15 мкм на 0,11. К 2003 году его быстродействие должно возрасти с 390 до 700 млн.оп./с, а энергопотребление сократиться до 0,3 мВт/МГц. Это ядро обладает следующими особенностями:

  • независимые 64-разрядные шины адреса и данных;
  • кэш-память команд и данных ╦мко-стью по 16 или 32 Кбайт;
  • отдельные модули управления памятью команд и данных;
  • встроенный математический сопроцессор VFP10;
  • реализация режимов пониженного энергопотребления;
  • DSP-расширения системы команд;
  • встроенный умножитель.

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

Микроконтроллеры семейства StrongARM являются совместной разработкой фирм ARM и Intel. Они предназначены в первую очередь для использования в портативных мультимедийных устройствах класса Palm PC. Ядро StrongARM является модификацией ядра ARM7, в котором не реализуется режим Thumb (работа с 16-разрядным форматом команд). В настоящее время на базе ядра StrongARM выпускается микроконтроллер SA-1110, который имеет в сво╦м составе:

  • кэш команд объ╦мом 16 Кб и кэш данных объ╦мом 8 Кб;
  • мини-кэш, позволяющий ускорить обработку больших объ╦мов данных, сгруппированных последовательно;
  • устройства управления памятью программ и данных;
  • схемы управления прерываниями, энергопотреблением, сбросом, умножением частоты генератора;
  • контроллер внешней памяти;
  • контроллер прямого доступа к памяти;
  • контроллер жидкокристаллического дисплея;
  • интерфейсы USB, UART, SDLC, IrDA;
  • кодек, осуществляющий кодирование/декодирование аудиосигналов и сигналов от сенсорной панели индикатора.

Фирмой Intel разработана также микросхема SA-1111, которая работает совместно с SA-1110, обеспечивая расширение е╦ возможностей. Микросхема SA-1111 имеет дополнительный порт USB, а также реализует интерфейсы с клавиатурой и мышью, PCMCIA-платами расширения.

В данной статье рассмотрены микроконтроллеры с ядром ARM7TDMI, которые являются наиболее массовыми и деш╦выми. Полное описание всех процессоров ARM можно найти на сайте производителя www.arm.com.

Архитектура процессорного ядра ARM7TDMI

Подробное описание ядра ARM7TDMI дано в [1]. Следует отметить следующие особенности его архитектуры:

  • ядро может функционировать в двух состояниях: ARM и THUMB. В состоянии ARM процессор выполняет 32-разрядные команды, в состоянии THUMB ≈ 16-разрядные команды;
  • наличие тр╦хступенчатого конвейера позволяет выполнять последовательно поступающие команды за один такт (в том числе команды умножения);
  • ядро поддерживает функционирование внешнего сопроцессора;
  • в состав ядра включены отладочные интерфейсы JTAG и ETM.

Режимы работы и регистровые модели процессора ARM7TDMI

В состоянии ARM процессор может функционировать в одном из следующих режимов:

  1. User - выполнение программ пользователя.
  2. Supervisor - работа под управлением операционной системы (ОС), которая оперирует данными, недоступными программам пользователя.
  3. System - режим выполнения системных программ, при котором ОС работает с данными пользователя.
  4. IRQ - режим обработки прерываний, в который попадает процессор при поступлении запроса прерывания низшего уровня на вход IRQ.
  5. FIQ (Fast IRQ) - режим быстрой реакции на прерывания, в который попадает процессор при поступлении запроса высшего уровня на вход FIQ.
  6. Abort - режим, который реализуется при ошибке обращения к памяти (ошибки такого рода ≈ обращение по несуществующему адресу, попытка записи в ПЗУ и другие, фиксируются контроллером прерываний, который выда╦т процессорному ядру запрос Abort).
  7. Undefined - режим реализуется при выборке неправильного кода команды.

Для каждого режима функционирования имеется соответствующая регистровая модель, которая содержит набор 32-разрядных регистров, доступных в этом режиме (рис. 2).

Рисунок 2. Регистровые модели процессора в состоянии ARM

Регистровые модели процессора в состоянии ARM.

В базовом режиме User, в котором процессор работает основную часть времени, используются 32-разрядные регистры R0-R15 и регистр состояния CPSR. Регистр R15 выполняет функции программного сч╦тчика PC. Регистр R14 (LR - Link Register) используется при вызовах подпрограмм как регистр связи, в котором сохраняется текущее содержимое PC для возвращения к основной программе. Для организации стека рекомендуется использовать регистр R13 (SP - Stack Pointer) в качестве указателя стека.

Все регистры имеют дополнительные имена, определ╦нные стандартом фирмы ARM [2], которые приведены на рис. 2 в скобках. Этот документ регламентирует использование регистров при вызове подпрограмм и организации передачи данных между ними и предназначен, главным образом, для разработчиков компиляторов:

  • Регистры a1 - a4 (argument 1 √ 4) используются для передачи параметров подпрограммам.
  • Регистры v1 - v8 ~(variable 1 - 8) используются для хранения локальных переменных.
  • Регистр IP (Intra-Procedure-call scratch register) - служит для хранения промежуточных данных между вызовами процедур.

Регистр состояния CPSR содержит следующие биты (рис. 3):

Рисунок 3. Формат регистра CPSR

Формат регистра CPSR.

  • M4-0 - определяют режим работы процессора в соответствии с табл. 2;
  • T - зада╦т состояние процессора: ARM (при T = 0) или THUMB (при T = 1);
  • I, F - маскируют (запрещают обработку) прерываний IRQ и FIQ;
  • N, Z, C, V - являются признаками знака (N), нуля (Z), переноса (С) и переполнения (V), значения которых устанавливаются в соответствии с результатом очередной операции.

таблица 2.Режимы процессора

M4-0 Режим
1 0 0 0 0 User
1 0 0 0 1 FIQ
1 0 0 1 0 IRQ
1 0 0 1 1 Supervisor
1 0 1 1 1 Abort
1 1 0 1 1 Undefined
1 1 1 1 1 System

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

Запись нового содержимого в регистр CPSR возможна во всех режимах, кроме User. Эти режимы называются привилегированными.

При запуске процессор начинает работу в режиме Supervisor. Переход в режим User реализуется пут╦м записи в регистр CSPR содержимого, в котором биты M4-0 = 10000. Обратное переключение из режима User в Supervisor производится только при поступлении команды программного прерывания SWI. Таким образом обеспечивается доступ пользователя к ресурсам операционной системы. Программа Supervisor получает доступ ко всем регистрам модели User, если выполнит переход в режим System, записав в регистр СPSR значение битов M4-0 = 11111. Переход в режимы IRQ, FIQ, Abort, Undefinied осуществляется автоматически при поступлении соответствующих запросов или событий.

При переходе в другой режим текущее содержимое регистра CPSR (слово состояния) переписывается в регистр SPSR, соответствующий наступившему режиму. При возвращении к исходному режиму содержимое CPSR восстанавливается.

Для каждого режима имеются отдельные регистры R13 (SP), R14 (LR). Поэтому при переключении режимов сохраняется текущее содержимое указателя стека и регистра связи. Таким образом при возвращении к данному режиму обеспечивается обращение к вершине стека и возможность возврата к основной программе, если производился вызов подпрограммы.

При переходе в режим FIQ (поступление запроса прерывания на вход FIQ) сохраняется текущее содержимое регистров R8-R12, вместо которых в этом режиме используются регистры R8_fiq - R12_fiq (рис. 2). Поэтому при обработке данного прерывания нет необходимости сохранять содержимое этих регистров в стеке. В ряде случаев это обеспечивает более быстрый переход к обработчику прерываний и возврат из него.

Способы адресации и система команд

Процессор использует способы адресации операндов, представленные в табл. 3.

Таблица 3.Способы адресации

Обозначение Название
#Imm Непосредственная
Rn Регистровая
Rn, shift #n Регистровая с масштабированием
[Rn] Косвенно-регистровая
[Rn,±Imm] {!} Преиндексная с непосредственным смещением
[Rn,±Rm] {!} Преиндексная с регистровым смещением
[Rn,±Rm, shift #n] Преиндексная с масштабированным регистровым смещением
[Rn],±Rm Постиндексная с регистровым смещением
[Rn],±Rm, shift #n Постиндексная с масштабированным регистровым смещением

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

При непосредственной адресации операнд Imm входит в состав команды. При регистровой адресации в команде зада╦тся имя регистра Rn, содержимое которого является операндом или результатом операции.

Особенностью системы команд ARM является наличие регистровой адресации с масштабированием. При масштабировании содержимое регистра Rn сдвигается на число разрядов n, указанное в команде (от 1 до 31). Вместо "shift" в ассемблерном тексте используется один из четыр╦х символов, задающих вид реализуемого сдвига:

  • LSL ≈ логический сдвиг влево;
  • LSR ≈ логический сдвиг вправо;
  • ASR ≈ арифметический сдвиг вправо;
  • ROR ≈ циклический сдвиг вправо.

Таблица 4.Суффиксы для организации условных операций

Суффикс Логическое выражение Условие
EQ Z = 1 Равно
NE Z = 0 Не равно
CS C = 1 Выше или равно
CC C = 0 Ниже
MI N = 1 Отрицательный результат
PL N = 0 Положительный результат
VS V = 1 Переполнение
VC V = 0 Нет переполнения
HI C = 1, Z = 0 Выше
LS C = 0, Z = 1 Ниже или равно
GE N = V Больше или равно
GE N = V Больше или равно
LT N V Меньше
GT Z = 0, N = V Больше
LE Z = 1, N V Меньше или равно
AL   Всегда

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

Таким образом различные сдвигов реализуются с помощью команды пересылки MOV (табл. 5), используя регистровую адресацию с масштабированием. При выполнении арифметических и логических сдвигов последний выдвигаемый разряд поступает в регистр CPSR в качестве признака переноса C. При циклическом сдвиге бит C включается в цепь сдвига, только если число разрядов сдвига задано равным нулю. В этом случае выполняется циклический сдвиг операнда на один разряд вправо через бит C в регистре CPSR.

Таблица 5.Команды пересылки

Мнемокод Команда Операция
LDM Групповая загрузка содержимого регистров из памяти  
LDR Загрузка регистра из памяти Rd := (адрес)
MOV Пересылка регистра или константы Rd := Op2
MRS Пересылка из CPSR или SPSR в регистр Rn := CPSR (SPSR)
MSR Пересылка из регистра в СPSR или SPSR CPSR (SPSR): = Rm
MVN Пересылка с побитной инверсией Rd := НЕ Op2
STM Групповое сохранение содержимого регистров в памяти  
STR Пересылка из регистра в память <адрес> := Rn
SWP Обмен содержимого регистра и памяти Rd := [Rn], [Rn] := Rm

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

При косвенно-регистровой адресации содержимое указанного регистра Rn содержит адрес ячейки памяти, где хранится операнд или результат.

Индексная адресация имеет две разновидности: пре-индексная и пост-индексная. В случае пре-индексной адресации адресом служит содержимое базового регистра Rn, которое индексируется перед выполнением операции пут╦м сложения или вычитания непосредственного операнда Imm, содержимого регистра Rm или масштабированного содержимого Rm. Если в поле операнда содержится символ {!}, то индексированное содержимое Rn сохраняется после выполнения операции. В случае пост-индексной адресации адресом служит содержимое базового регистра Rn, которое индексируется после выполнения операции.

Ядро ARM7TDMI является RISC-процессором, поэтому оно выполняет относительно небольшой набор команд. Можно выделить следующие особенности системы команд:

  • Отсутствие аппаратной поддержки стека. Стек организуется программно, прич╦м в качестве указателя стека рекомендуется использовать регистр R13, хотя в принципе в этой роли может быть любой другой регистр общего назначения. Обычно обращение к стеку производится с помощью команд групповой пересылки STM и LDM.
  • Установка в регистре CSPR признаков N, Z, C, V по результатам выполнения операций производится при наличии в команде суффикса S. При его отсутствии признаки в регистре CPSR не изменяются.
  • Любая команда может быть условной, если е╦ снабдить соответствующим суффиксом. Виды условий и их суффиксы приведены в табл. 4.

При наличии суффикса AL команда выполняется безусловно - при любых значениях признаков. Условия "Выше", "Ниже", "Выше или равно", "Ниже или равно" используются при сравнении чисел без знака; условия "Больше", "Меньше", "Больше или равно", "Меньше или равно" - при сравнении чисел со знаком.

Из группы команд пересылки (табл. 5) интересны команды групповой загрузки√сохранения содержимого регистров LDM и STM. Они позволяют пересылать содержимое нескольких регистров, перечисленных в команде. В формате команды есть 16-бит поле, в котором каждый бит соответствует одному из регистров R15-0. Если бит равен единице, содержимое данного регистра сохраняется в памяти (по команде STM) или загружается из памяти (по команде LDM).

При записи в регистр CPSR с помощью команды MSR в режиме User изменяются только признаки N, Z, V, C. Остальные биты сохраняют ранее установленное значение. В любом режиме изменение бита Т с помощью команды MSR не реализуется. Для программной смены состояния процессора используется команда BX (табл. 7).

Таблица 6.Команды арифметических и логических операций

Мнемокод Команда Операция
ADC Сложение с уч╦том переноса Rd := Rn+Op2+C
ADD Сложение Rd := Rn+Op2
AND Логическое И Rd := Rn AND Op2
BIC Очистка битов (маскирование) Rd := Rn AND (НЕ Op2)
CMN Сравнение с отрицательным числом CPSR flags := Rn+Op2
CMP Сравнение CPSR flags := Rn√Op2
EOR Исключающее ИЛИ Rd := Rn XOR Op2
MLA Умножение с накоплением Rd := (Rm╢Rs)+Rn
MUL Умножение Rd := RmxRs
ORR Логическое ИЛИ Rd := Rn OR Op2
RSB Обратное вычитание Rd := Op2√Rn
RSC Обратное вычитание с за╦мом Rd := Op2√Rn√1+C
SBC Вычитание с за╦мом Rd := Rn√Op2√1+C
SUB Вычитание Rd := Rn - Op2
TEQ Побитное сравнение CPSR flags:= Rn XOR Op2
TST Тестирование битов CPSR flags:= Rn AND Op2

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

Таблица 7.Команды передачи управления

Мнемокод Команда Операция
B Переход PC := PC + (rel<<1)
BL Переход с сохранением адреса возврата в LR LR := PC, PC := PC + (rel<<1)
BX Переход с возможностью смены состояния PC := Rn, T := Rn[0]
SWI Программное прерывание режим Supervisor, LR := PC, PC := 0x0008

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

При выполнении арифметических и логических операций (табл. 6) один из операндов размещается в регистре, второй Op2 - в регистре, ячейке памяти или зада╦тся непосредственно. Результат всегда размещается в регистре Rd. Отметим, что процессор не выполняет операцию деления, которая должна реализоваться программным пут╦м (обычно вызовом соответствующей подпрограммы).

Ядро ARM выполняет несколько разновидностей операции умножения. Существуют две основные команды - простое умножение MUL и умножение с накоплением MLA. Любая из этих команд может иметь либо короткую (результат записывается в один регистр с потерей старших разрядов), либо длинную форму (произведение записывается в два регистра). При записи команды длинная форма обозначается суффиксом L. В первом случае операции умножения можно производить как со знаковыми, так и с беззнаковыми целыми числами. Длинная форма команды умножения имеет два варианта ≈ знаковый и беззнаковый, которые отличаются префиксом: S и U, соответственно. Таким образом команда умножения имеет следующие разновидности: MUL, SMULL, UMULL. Аналогично, команда умножения с накоплением имеет разновидности MLA, SMLAL, UMLAL.

Команда обратного вычитания RSB позволяет изменить порядок записи операндов в команде вычитания. Она соответствует команде "Вычесть из операнда Op2 содержимое регистра Rn и записать в регистр Rd".

Операция CMN позволяет сравнить два операнда, у одного из которых при сравнении изменяется знак.

Команды передачи управления (табл. 7) служат для изменения хода программы. Команда перехода B с соответствующим суффиксом (табл. 4) обеспечивает выполнение условных или безусловных переходов. Переход к подпрограмме осуществляется командой BL, при этом текущее содержимое программного сч╦тчика PC (адрес возврата) сохраняется в регистре связи LR. В качестве операнда в команде зада╦тся 24-разрядное смещение rel, которое сдвигается на один разряд влево и по-сле знакового расширения добавляется к текущему содержимому PC. При вызове вложенных подпрограмм необходимо программным пут╦м организовать сохранение промежуточных значений адресов возврата (содержимого LR) в стеке, используя регистр SP в качестве указателя. Также программным пут╦м обеспечивается, в случае необходимости, сохранение в стеке содержимого регистров. Заданный адрес перехода должен быть ч╦тным, если процессор находится в состоянии THUMB, или кратным четыр╦м, если процессор в состоянии ARM.

Команда BX позволяет осуществить переход с одновременным изменением состояния процессора. Адрес перехода (ч╦тный или кратный четыр╦м) определяется разрядами 31-1 или 31-2 содержимого регистра Rn, заданного в команде, а состояние процессора - нулевым битом этого регистра, который копируется в регистр CPSR в качестве бита T.

Команда программного прерывания SWI используется для доступа к функциям ОС. При выполнении данной команды процессор переходит в режим Supervisor, запоминает адрес возврата в регистре LR и переходит на адрес 0x0008. По этому адресу располагается команда перехода на обработчик прерывания. Отметим, что выполнение команды SWI - единственный способ, позволяющий перевести процессор из режима User в привилегированный режим Supervisor.

Специальная группа команд (табл. 8) обеспечивает совместную работу процессора с сопроцессором, который обычно представляет собой специализированный блок, изготовленный на одном кристалле с процессором. К процессорному ядру ARM может быть подключено до 16 сопроцессоров, каждый из которых может иметь до 16 собственных регистров cRn. Данные, передаваемые сопроцессору по внутренней шине, включают в себя номер сопроцессора, номера регистров сопроцессора, код операции и поле дополнительной информации (рис. 4). От сопроцессора требуется возможность принимать команду, исполнять е╦ и выдавать на шину результат. При этом один из регистров сопроцессора cRn должен выполнять функцию регистра команд ≈ воспринимать записанные в него данные как код операции (команду сопроцессора). После ввода в этот регистр кода операции процессор должен послать команду CDP, которая будет выполняться сопроцессором. Ввод/вывод данных в регистры сопроцессора реализуется с помощью команд LDC, STC, MCR, MPC.

Таблица 8.Команды поддержки сопроцессора

Мнемокод Команда Операция
CDP Выполнение команды сопроцессором  
LDC Загрузка данных в сопроцессор из памяти cRn := <адрес>
MCR Пересылка из регистра процессора в регистр сопроцессора cRn := Rn {cRm}
MRC Пересылка из регистра сопроцессора в регистр процессора Rn := cRn {cRm}
STC Сохранение регистров сопроцессора в памяти <адрес> := cRn

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

Рисунок 4.Форматы команд

Форматы команд.

В настоящее время для семейства ARM7 фирма ARM предлагает два сопроцессора. DSP-сопроцессор позволяет ускорить выполнение операций, типичных для цифровой обработки сигналов. Jazelle-сопроцессор позволяет ускорить выполнение Java-приложений. Оба сопроцессора включены в ядро ARM7EJ-S.

Форматы команд процессора ARM представлены на рис. 4, где использованы следующие обозначения:

  • Cond - поле условия (табл. 4);
  • Rn, Rm - поля номеров регистров операндов;
  • Rd - поле регистра назначения;
  • Opcode - поле кода операции;
  • Offset - поле смещения;
  • Register List - список регистров;
  • S - разрешение установки флагов условий;
  • L - флаг направление передачи данных (в память / из памяти);
  • B - флаг байтовой операции;
  • W - разрешение индексации операнда;
  • P - флаг пре- или пост-индексной адресации;
  • U - направление изменения содержимого индексного регистра;
  • A - флаг накопления в команде умножения;
  • N - вид смещения (короткое/длинное).

Процессор использует следующие варианты форматов команд, которые приведены на рис. 4:

  1. Общий формат команд обработки данных.
  2. Формат команды умножения.
  3. Умножение длинных чисел.
  4. Команда обмена содержимого регистров.
  5. Команда перехода и смены состояния.
  6. Передача 16-разрядного полуслова ≈ регистровое смещение.
  7. Передача 16-разрядного полуслова ≈ непосредственное смещение.
  8. Передача 32-разрядного слова.
  9. Неопредел╦нные коды команд.
  10. Команды групповой пересылки содержимого регистров.
  11. Команды перехода.
  12. Передача константы сопроцессору.
  13. Выполнение команды сопроцессором.
  14. Передача содержимого регистра в сопроцессор.
  15. Программное прерывание.

Литература

  1. ARM7TDMI Technical Reference Manual. rev. 3,4. ARM Limited. 1994√2001.
  2. The ARM-THUMB Procedure Call Standart. ARM Limited, 1998.







Ваш комментарий к статье
RISC-микроконтроллеры с процессорным ядром ARM. Часть 1. :
Ваше имя:
Отзыв: Разрешено использование тэгов:
<b>жирный текст</b>
<i>курсив</i>
<a href="http://site.ru"> ссылка</a>