Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Шумахер У. Полупроводниковая электроника

.pdf
Скачиваний:
203
Добавлен:
28.03.2015
Размер:
8.01 Mб
Скачать

INFSEMI_2-Text.fm, стр. 312 из 589 (September 3, 2010, 17:06)

312 7. Микроконтроллеры

31 Нижний контекст 0

31 Верхний контекст 0

сохранения контекста (CSA) фиксирован-

ного размера. Каждая область CSA включа-

 

 

 

 

 

 

ет в себя 16 слов во внутреннем ОЗУ, вы-

 

D7

 

 

D15

 

 

 

 

 

ровненных по границе 16-битного слова, и

 

 

 

 

 

 

 

D6

 

 

D14

 

 

 

 

 

может содержать ровно один верхний или

 

 

 

 

 

 

 

D5

 

 

D13

 

 

 

 

 

нижний контекст. Для указания неисполь-

 

D4

 

 

D12

 

 

 

 

 

зуемых CSA существует специальный спи-

 

 

 

 

 

 

 

D3

 

 

D11

 

сок. Когда возникает потребность в допол-

 

D2

 

 

D10

 

нительных областях сохранения контекста,

 

D1

 

 

D9

 

они выбираются из этого списка, а когда

 

 

 

 

 

 

потребность исчезает, вновь возвращаются

 

D0

 

 

D8

 

 

 

 

 

 

A7

 

 

A15

 

в список неиспользуемых CSA. Процесс на-

 

 

 

 

значения и высвобождения CSA управляет-

 

A6

 

 

A14

 

 

 

 

 

ся аппаратно процессором, при этом ука-

 

A5

 

 

A13

 

 

 

 

 

занные списки доступны («прозрачны») для

 

A4

 

 

A12

 

 

 

 

 

 

 

 

 

прикладных программ. Впрочем, прямого

 

A3

 

 

A11 (RA)

 

доступа к спискам CSA и к памяти микро-

 

A2

 

 

A10 (SP)

 

контроллера требуют только программа

 

Совместно используемый PC

 

 

PSW

 

инициализации и некоторые, относящиеся

 

 

 

 

 

 

к операционной системе процедуры обра-

 

PCXI (Слово связи)

 

 

PCXI (Слово связи)

 

 

 

ботки исключительных ситуаций.

 

 

 

 

 

 

 

Рис. 7.37. Верхний и нижний контекст.

 

Быстрое переключение контекста

 

 

 

 

 

 

целью осуществления вызовов функций. Верхний контекст также включает в себя регистры PCXI и PSW.

Нижний контекст включает в себя нижние регистры адреса A2…A7, нижние регистры данных D0…D7 и счётчик команд (PC), а также регистр PCXI.

Связь между обеими частями контекста, верхней и нижней, осуществляется через регистр PCXI, в котором содержится так называемое слово связи — LINK WORD. Содержимое регистров, входящих в состав верхнего или нижнего контекста, хранится в областях памяти фиксированного размера, определённых в соответствии со словом связи (см. следующий раздел).

При возникновении прерывания верхний контекст автоматически сохраняется в памяти, а при возврате из программы обработки прерываний (ISR) — восстанавливается. Если ISR использует большее количество регистров, чем имеется в составе верхнего контекста, то сохранение и восстановление нижнего контекста будет осуществляться непосредственно этой программой обработки прерывания.

Область сохранения контекста

Поддержка систем с множественными связанными потоками управления в архитектуре TriCore обеспечивается за счёт использования связанных списков областей

Увеличение производительности архитектуры TriCore достигается благодаря наличию унифицированного механизма аппаратного переключения контекста при вызове функций, процедур обработки прерываний и процедур обработки ошибок. Верхний контекст всегда автоматически сохраняется и восстанавливается аппаратными средствами, а сохранение и восстановление нижнего контекста производится опционально в случае его использования прикладной программой. Микроконтроллеры TriCore имеют уникальную систему управления памятью, которая обеспечивает одновременную пересылку до 16 слов данных между регистрами процессора и памятью, весь контекст может быть сохранён в памяти всего за одну операцию, что обеспечивает беспрецедентно высокую скорость его переключения.

7.4.7. Система обработки прерываний

Микроконтроллер поддерживает следующие виды запросов на обслуживание: запрос на обслуживание прерывания от периферийного устройства, запрос на прямой доступ к памяти (DMA) и внешнее прерывание. Для простоты, во всех этих случаях мы будем использовать термин «прерывание».

Входной код для ISR состоит из кодовых блоков, расположенных по адресу, запи-

INFSEMI_2-Text.fm, стр. 313 из 589 (September 3, 2010, 17:06)

7.4. Архитектура 32-битных микроконтроллеров TriCore 313

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

Такая система распределения приоритетов программ обслуживания прерываний позволяет использовать вложенные прерывания. Запрос на обслуживание может прервать процесс обработки прерывания с более низким приоритетом. Прерывания с одинаковым уровнем приоритета не могут взаимно прерывать друг друга.

7.4.8. Система обработки ошибок

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

сброс;

срабатывание внутренней защиты;

ошибка при исполнении команды;

управление контекстами;

ошибка на внутренней шине или ошибка периферийного устройства;

логическое значение «истина» (т.е. логическая 1), определённое для сигнала с НИЗКИМ логическим уровнем;

системный вызов;

немаскируемое прерывание.

Входной код для программ обработки ошибок включает в себя вектор кодовых блоков. Каждый такой блок содержит адрес точки входа для программы обработки ошибок. Когда ловушка срабатывает, её идентификационный номер (TIN) сохраняется в регистре данных D15. Процедура обработки ошибки использует этот TIN для того, чтобы определить точную причину возникновения ошибки. Наименьшему номеру TIN соответствует наивысший приоритет.

7.4.9. Система защиты

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

или программный код. Это повышает защищённость операций процессорного ядра микроконтроллера от случайных аппаратных сбоев или от ошибок, которые могут «просочиться» через все процедуры тестирования. Кроме того, система защиты микроконтроллеров TriCore содержит средства для изоляции критических ошибок, что облегчает процесс отладки.

Уровни доступа

В микроконтроллерах с архитектурой TriCore каждой задаче может быть сопоставлен определённый уровень доступа, оптимальный с точки зрения выполнения её функций. Индивидуальный уровень доступа задаётся посредством установки соответствующих битов режима ввода/вывода в

регистре состояния программы (PSW). Три уровня доступа называются User-0, User-1 и Supervisor:

уровень User-0 присваивается задачам, которые не имеют доступа к периферийным устройствам. Задачи с уровнем User-0 не могут разрешать и запрещать прерывания;

уровень User-1 присваивается задачам, имеющим доступ к незащищённым периферийным устройствам общего пользования. Обычно это подразумевает чтение/запись последовательных портов ввода/вывода, а также возможность осуществлять чтение содержимого регистров таймеров и большинства регистров состояния ввода/вывода. Задачи с данным уровнем доступа могут отключать прерывания;

уровень Supervisor позволяет осуществлять чтение/запись в системные регистры и все периферийные устройства. Задачи с этим уровнем доступа могут отключать прерывания.

Модель защиты

Защита памяти в архитектуре TriCore основана на том, что в адресном пространстве памяти создаются области, каждая из которых имеет свои параметры доступа. Границы этих областей с соответствующими им параметрами доступа задаются в таблицах, размещённых в пространстве памяти, отведённой под регистры специальных функций ядра (CSFR). Одновременно сохраняется от двух до четырех идентичных набо-

INFSEMI_2-Text.fm, стр. 314 из 589 (September 3, 2010, 17:06)

ров таких таблиц, так называемых наборов

Debugging — OCD). Эти средства и ресурсы

регистров защиты (PRS). Когда система за-

реализованы в виде не входящего в состав

щиты

активирована,

микроконтроллер

процессорного ядра модуля отладки (Debug

TriCore при обращении к памяти проверяет

Control Unit). Структура и функции этого

легальность адреса для каждой операции

модуля зависят от конкретной модели мик-

чтения и записи данных или выборки ко-

роконтроллера. Дальнейшее описание мо-

манды. Легальным является адрес, кото-

дуля Debug Control Unit и его управляющих

рый принадлежит к одной из областей адре-

регистров выходит за рамки задач данной

сов, указанных в выбранном в настоящий

книги. Подробные сведения о модуле

момент PRS. При этом для операции, кото-

Debug Control Unit можно найти в докумен-

рая пытается осуществить обращение к па-

тации на конкретные микроконтроллеры.

мяти, должен быть разрешён доступ к теку-

7.4.12. Модель программирования

 

щей области адресов (путём задания соот-

 

ветствующего уровня доступа).

 

Далее в этом подразделе обсуждаются

 

 

 

 

 

 

7.4.10. Сброс системы

 

 

следующие важные с точки зрения

про-

 

 

граммного обеспечения особенности архи-

 

 

 

 

 

 

Сброс и перезагрузку микроконтроллера

тектуры

TriCore:

поддерживаемые

типы

TriCore могут вызвать следующие события:

данных, форматы размещения данных раз-

сброс по

включению

питания — осу-

личных типов в регистрах и в памяти, под-

ществляется

через

соответствующий

держиваемые режимы адресации и структу-

внешний вывод при включении питания

ра памяти микроконтроллера.

 

микроконтроллера (холодный пуск);

Типы данных

 

 

аппаратный сброс — осуществляется че-

 

 

рез

соответствующий

внешний вывод

Система команд TriCore поддерживает

микроконтроллера в процессе его рабо-

операции с логическими переменными, би-

ты (тёплый пуск);

 

 

товыми

строками,

символами, адресами,

программный сброс — осуществляется

целыми числами со знаком и без знака,

прикладной

программой путём записи

дробными числами со знаком, а также опе-

соответствующих значений в регистр за-

рации с числами с плавающей точкой еди-

проса на сброс. Для предотвращения не-

ничной точности. Большинство команд ра-

санкционированного доступа к этому ре-

ботает только с одним определённым типом

гистру предусмотрен специальный меха-

данных, однако некоторые из команд могут

низм защиты. В зависимости от версии

работать с различными типами данных.

микроконтроллера, запись в этот регистр

Логические выражения

 

может вызывать как частичный, так и

 

полный сброс микроконтроллера;

Логическое (булево) выражение может

сброс от сторожевого таймера — запуска-

принимать значение ИСТИНА (TRUE) или

ется

при

 

возникновении

состояния

 

ЛОЖЬ (FALSE). Значению ИСТИНА соот-

ошибки,

распознанного

сторожевым

ветствует логическая единица (1), если речь

314 7. Микроконтроллеры

 

 

 

 

 

таймером;

идёт о результате вычисления, либо ненуле-

сброс при выходе из спящего режима —

вое значение, если речь идёт о проверке со-

осуществляется через соответствующий

стояния переменной или содержимого ре-

внешний вывод микроконтроллера при

гистра. Значению ЛОЖЬ соответствует ло-

его выходе из энергосберегающего (спя-

гический ноль (0). Логическое выражение

щего) режима.

генерируется как результат сравнения или

Процессорное ядро, проверяя содержи-

результат выполнения логической коман-

мое регистра состояния сброса, может оп-

ды и может использоваться как операнд-ис-

ределить, какое именно событие вызвало

точник в логических командах и командах

сброс.

условного перехода.

 

7.4.11. Система отладки

Битовые строки

 

В архитектуре TriCore предусмотрены аппаратные средства, обеспечивающие возможность встроенной отладки (On-Chip

Битовая строка — это упакованное в определённом формате битовое поле (непрерывная последовательность битов). Бито-

INFSEMI_2-Text.fm, стр. 315 из 589 (September 3, 2010, 17:06)

7.4. Архитектура 32-битных микроконтроллеров TriCore 315

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

Символы

Символ — это единица представления данных разрядностью восемь битов. Значение символа выражается как короткое целое число без знака. Символы передаются в распакованном (не кодированном) виде.

Дробные числа со знаком

Архитектура TriCore поддерживает дробные 16-битные числа со знаком для DSPарифметики. Данные в этом формате имеют один старший знаковый бит со значением 0 или 1 (для представления положительного или отрицательного числа соответственно), за которым идет неявная двоичная точка и дробная часть. Значения указанных данных лежат в диапазоне [–1,1]. При их сохранении в регистрах микроконтроллера, в 16 старших битов записывается 16-битное дробное число, а в младшие 16 битов — нули.

Адреса

Адрес — это 32-битное число без знака.

Целые числа со знаком/без знака

Разрядность целых чисел со знаком и без знака обычно составляет 32 бит. Когда целые числа со знаком и без знака, имеющие меньшую разрядность, загружаются из памяти в один из регистров микроконтроллера, происходит расширение их формата до 32-битного, при этом «пустые» биты заполняются нулями или копируют знаковый бит.

Операции сложения и вычитания с учётом переноса (заёма) предусматривают возможность работы с целыми числами с многократно увеличенной точностью. При выполнении команд пересылки и маскирования целые числа рассматриваются как битовые строки. Сдвиговые операции с многократно увеличенной точностью могут быть реализованы путём комбинации команд сдвига единичной точности и команд извлечения данных из битового поля.

Числа с плавающей точкой единичной точности согласно IEEE-754

В зависимости от конкретной реализации архитектуры ядра, обработка чисел с

плавающей точкой единичной точности (в соответствии со стандартом IEEE-754) может осуществляться или с помощью прямых аппаратных команд, или путём программной эмуляции.

Форматы данных

Все регистры общего назначения имеют разрядность 32 бит, и большинство команд микроконтроллера работает с операндами, имеющими размер слова (32 бит). Если данные, считанные из памяти, имеют меньшую разрядность, то они должны быть соответствующим образом выровнены (путём вставки дополнительных знаковых битов или нулей), прежде чем над ними будут производиться какие-либо операции. Выравнивание адресов осуществляется иначе, нежели выравнивание данных. В первом случае, для обеспечения корректной передачи информации между адресными регистрами микроконтроллера и областью памяти 32-битные адреса должны быть выровнены по границе слова. Что же касается передачи информации между регистрами данных и памятью, то выравнивание может производиться по границе любой половины 32-битного слова, вне зависимости от его размера; обращение к байтам памяти может осуществляться при использовании побайтовой адресации любого допустимого типа. На Рис. 7.38 представлены поддерживаемые форматы данных.

Данные в памяти и регистрах ЦПУ хранятся с использованием прямого порядка записи байтов (little-endian, т.е. младший значащий байт хранится в ячейке памяти с меньшим адресом). Этот порядок записи байтов (его иллюстрирует Рис. 7.39) применяется для хранения в памяти как данных, так и команд микроконтроллера.

Если микроконтроллер семейства TriCore подключён к внешнему устройству, в котором используется обратный порядок записи байтов (big-endian, в ячейке с меньшим адресом записывается старший значащий байт), то необходимое преобразование форматов записи обеспечивается с помощью шинного интерфейса. Как упоминалось выше, данные должны быть выровнены по границе байта, а если они имеют формат полуслова (16 бит), слова или двойного слова — по границе полуслова.

INFSEMI_2-Text.fm, стр. 316 из 589 (September 3, 2010, 17:06)

316 7. Микроконтроллеры

Логический

7

Символ (очень короткое целое число)

 

15

Короткое целое число

 

 

 

 

 

15

Короткое дробное число

 

S

 

 

 

 

Двоичная точка

0

Бит

0

Байт

0

Полуслово

0

 

 

31

 

 

 

 

0

 

 

Целое число

 

 

 

 

 

 

Слово

 

 

 

 

 

 

 

 

 

 

31

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

Дробное число

S

 

 

 

 

 

 

 

 

31

 

Двоичная точка

0

 

 

 

 

 

 

 

 

 

Битовая строка

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

31

30

23

22

 

0

 

 

 

 

 

 

 

 

 

 

 

Число с плавающей точкой

S

Экспонента

 

Дробная часть

 

 

 

 

 

 

 

 

 

 

 

Целое число

 

 

 

 

Число с плавающей точкой

 

 

 

 

 

 

 

 

 

 

83

32

31

 

 

 

 

0

 

 

 

 

 

 

 

 

 

Двойное

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

слово

 

 

 

 

 

 

 

 

Рис. 7.38. Форматы данных, поддерживаемые микроконтроллерами семейства TriCore.

Слово 5

Байт 23

Байт 22

Байт 21

Байт 20

 

Двойное слово

 

Байт 19

Байт 18

 

 

 

 

Слово 4

Байт 17

Байт 16

 

 

 

Слово 3

Байт 15

Байт 14

Байт 13

Байт 12

 

 

Слово 2

Байт 11

Байт 10

Байт 9

Байт 8

 

Полуслово

Слово 1

Байт 7

Байт 6

Байт 5

Байт 4

 

Слово

 

Слово 0

Байт 3

Байт 2

Байт 1

Байт 0

 

Байт

 

 

31

 

 

0

 

 

Бит

 

 

 

 

 

Рис. 7.39. Порядок записи байтов.

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

Для сегментов 14 и 15 не поддерживается

Архитектура TriCore позволяет осущест-

режим опережающего чтения. Доступ к ним

осуществляется лишь в тех случаях, когда

влять адресацию до 4 Гбайт памяти. Контрол-

ЦПУ «уверено», что процесс обращения к

леры этого семейства имеют 32-битную ад-

памяти будет успешно доведён до конца.

ресную шину. Адресное пространство разде-

Данные сегменты памяти используются для

лено на 16 областей или сегментов (с 0 по 15).

размещения периферийных регистров спе-

Каждый сегмент имеет размер 256 Мбайт.

циальных функций (PSFR) или регистров

Старшие четыре бита адреса использу-

управления внешними периферийными ус-

ются для выбора конкретного сегмента. Об-

тройствами. FIFO, регистры состояния пе-

ращение к первым 16 Кбайт каждого сег-

риферийных модулей и других устройств

мента может производиться с помощью аб-

также размещаются в этих адресных сег-

солютной адресации или абсолютной бито-

ментах. Соответственно, здесь не приме-

вой адресации.

 

INFSEMI_2-Text.fm, стр. 317 из 589 (September 3, 2010, 17:06)

7.4. Архитектура 32-битных микроконтроллеров TriCore 317

ним режим опережающего чтения, поскольку его использование может привести к потере данных. В режиме User-0 доступ к устройствам, расположенным в сегментах 14 и 15, запрещён.

Сегменты с 0 по 7 зарезервированы. Любое обращение к ним инициирует запуск программы обработки ошибок. Доступ к сегментам 8…13 может осуществляться с определёнными ограничениями, в зависимости от версии процессора (эти ограничения указываются в документации на конкретную модель микроконтроллера).

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

Регистры специальных функций процессорного ядра (CSFR) размещаются в границах одной области памяти размером 64 Кбайт. Базовый адрес этой области памяти зависит от версии микроконтроллера и приводится в соответствующей документации.

7.4.14. Режимы адресации

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

Таблица 7.3. Встроенные режимы адресации

Встроенные режимы адресации

Эти режимы адресации разрешают командам чтения и записи осуществлять обращение к элементарным блокам данных, хранящимся в таких структурах, как записи, массивы с прямым или последовательным доступом, стековая память и циклические буферы. Элементарные блоки данных могут иметь длину (разрядность) 1, 8, 16, 32 или 64 бит. В Табл. 7.3 перечислены поддерживаемые режимы адресации.

Эти режимы были выбраны так, чтобы обеспечить эффективную работу компиляторов С, упростить доступ к периферийным регистрам и эффективно использовать типичные для DSP-процессоров структуры данных (циклические буферы для алгоритмов цифровой фильтрации и индексирование с инвертированием битов для реализации функций быстрого преобразования Фурье (БПФ)).

Формат команд микроконтроллера TriCore (32-битный) был специально выбран таким образом, чтобы обеспечить как можно больше места для записи адреса при прямой адресации или, в случае использования косвенной адресации, — для записи смещения.

Абсолютная адресация

Абсолютная адресация хорошо подходит для обращения к периферийным устройствам или к глобальным данным. В этом случае в качестве адреса ячейки памяти используется 18-битная константа, указываемая непосредственно в теле команды. Полный 32-битный адрес образуется следующим образом: старшие четыре бита 18-бит- ной константы используются в качестве старших четырёх битов 32-битного адреса, младшие 14 бит напрямую копируются в соответствующие им биты адреса, а в 14 бит между ними записываются нули.

Режим адресации

Используемые адресные

Величина смещения [бит]

регистры

 

 

 

 

 

Абсолютная

Не используются

18

 

 

 

Базовый адрес + смещение

Адресный регистр

10/16 (короткое/длинное)

 

 

 

С последующей модификацией

Адресный регистр

10

 

 

 

С предварительной модификацией

Адресный регистр

10

 

 

 

Циклическая

Пара адресных регистров

10

 

 

 

С инвертированием битов адреса

Пара адресных регистров

 

 

 

INFSEMI_2-Text.fm, стр. 318 из 589 (September 3, 2010, 17:06)

318 7. Микроконтроллеры

Адресация с использованием базового

ресных регистров. Регистр с чётным номе-

адреса + смещение

 

 

ром содержит базовый адрес, в старшей по-

Адресация с использованием

базового

ловине нечётного регистра содержится раз-

мер буфера, а в младшей — индекс буфера.

адреса и смещения удобна, когда необходи-

Результирующим адресом является сумма

мо осуществить доступ к структурным эле-

базового адреса и индекса.

 

ментам и локальным переменным (с ис-

 

После того, как было произведено обра-

пользованием указателя стека в

качестве

щение по выбранному адресу, индекс изме-

базового

адреса),

а также к

статическим

няется (к

нему

прибавляется 10-битное

данным (с адресным регистром в качестве

смещение со знаком, которое указывается

указателя базового адреса). Результирую-

непосредственно в теле команды). Если это

щий адрес представляет собой сумму содер-

смещение меньше размера буфера, значе-

жимого

адресного регистра

и

величины

ние индекса будет автоматически изменять-

смещения (с учётом знака). Величина сме-

ся по кругу от одного конца буфера к друго-

щения составляет 10 бит или 16 бит для не-

му. К примеру, если буфер имеет размер

которых

команд,

что позволяет

осущест-

50 байт, а значение индекса составляет 48 и

влять адресацию

всего доступного про-

увеличивается на смещение, равное 4, то

странства памяти.

 

 

 

 

 

 

новое значение индекса будет равно 2

 

 

 

 

 

Адресация с последующей модификацией

(48 + 4 – 50).

 

 

На циклический буфер наложены следу-

Этот режим адресации использует нахо-

ющие ограничения:

 

дящееся в адресном регистре значение в ка-

начало циклического буфера должно

честве окончательного адреса, но после

быть выровнено по границе, кратной

осуществления доступа к ячейке памяти из-

64 бит;

 

 

 

меняет содержимое адресного регистра, до-

размер буфера должен быть кратен фор-

бавляя к нему 10-битное смещение со зна-

мату данных, в неявном виде задаваемо-

ком. Наличие знака смещения позволяет

му командой, которая осуществляет об-

сдвигать указатель адреса как вперёд, так и

ращение к памяти. Так, например, когда

назад. Оба этих варианта могут быть ис-

используется

команда LOAD

WORD,

пользованы, например, для последователь-

размер

буфера должен быть

кратен

ного доступа к элементам массива или для

4 байт,

а при

использовании команды

удаления

(«выталкивания»

по

команде

LOAD DOUBLE WORD — кратен 8 байт.

POP) данных из стека.

 

 

Адресация с инвертированием битов

Адресация с предварительной

 

 

адреса

 

 

 

модификацией

 

 

 

Данный тип адресации применяется в

В этом режиме адресации к значению ад-

алгоритмах быстрого преобразования Фурье

ресного регистра добавляется 10-битное

(БПФ), поскольку эти алгоритмы обычно

смещение со знаком, и полученный резуль-

используют для представления результатов

тат сохраняется в адресном регистре в ка-

формат с инвертированием битов. Текущее

честве конечного значения адреса, по кото-

состояние указателя адреса хранится в паре

рому и производится обращение. Знак вы-

адресных регистров. Чётный (по номеру)

бирается в зависимости от того, вперёд или

регистр содержит базовый адрес, в младшей

назад необходимо передвинуть

указатель

половине

нечётного регистра содержится

адреса. Данный режим адресации может

индекс массива, а в его старшей полови-

быть использован, например, для последо-

не — величина модификации. Результиру-

вательного доступа к элементам массива

ющий адрес представляет собой сумму ба-

или для сохранения (PUSH) данных в стеке.

зового адреса и индекса. После каждого об-

Циклическая адресация

 

 

ращения к памяти индекс инвертируется, к

 

 

нему прибавляется значение модификато-

 

 

 

 

 

Основное применение циклической ад-

ра и результат вновь инвертируется. Если,

ресации — это обращение к данным в цик-

например, значение модификатора равно

лическом буфере в процессе цифровой

1024 (как правило, оно представляет собой

фильтрации. В этом случае текущее состоя-

число, полученное путём инвертирования

ние указателя адреса сохраняется в паре ад-

двоичного числа, значение которого равно

INFSEMI_2-Text.fm, стр. 319 из 589 (September 3, 2010, 17:06)

7.4. Архитектура 32-битных микроконтроллеров TriCore 319

1/2 размера массива), результатом таких действий будет следующая последовательность чисел: 0, 1024, 512, 1536, 256, и т.д.

Использование данного метода адресации упрощает реализацию алгоритмов БПФ и увеличивает скорость их работы; в то же время инвертирование битов не является операцией с битовым полем, что может создать определённые проблемы при программировании.

Расширенные режимы адресации

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

Индексная адресация

Команда ADDSC.A служит для масштабирования содержимого регистра-указателя адреса, что позволяет реализовать индексную адресацию массивов, расположенных в памяти и состоящих из байтов, полуслов, слов или двойных слов (коэффициент масштабирования равен 1, 2, 4 или 8 соответственно).

Адресация битовых полей обеспечивается командой ADDSC.AT, задающей слово, в котором расположен требуемый бит или битовое поле. Значения битов считываются с использованием команды EXTR.U и сохраняются в памяти при помощи команды LDMST (чтение/модификация/запись).

Относительная адресация

с использованием счётчика команд (PC)

Как правило, при организации ветвления программ и вызова подпрограмм применяется относительная адресация с использованием содержимого счётчика команд. Однако поскольку этот метод адресации может привести к снижению производительности, напрямую (аппаратно) архитектура TriCore его не поддерживает. Для его реализации программными средствами следует загрузить в адресный регистр адрес ближайшей программной метки и использовать его в качестве базового.

Если используется динамически загружаемый программный код, то текущее значение счётчика команд может быть определено с помощью команды JL (jump and link), которая записывает адрес следующей

за ней команды в регистр A11. Адрес возврата для текущей процедуры должен быть сохранён заранее.

Расширенная абсолютная адресация

Расширенная абсолютная адресация реализуется путём последовательного исполнения двух команд. Команда LEA (загрузить действительный адрес) загружает 32-битное значение адреса в адресный регистр. После исполнения команды MOVH.A происходит обращение к памяти данных с использованием базового адреса и 16-битного смещения.

7.4.15. Регистры процессорного ядра

В архитектуре микроконтроллеров TriCore чётко определён набор регистров специальных функций процессорного ядра (CSFR). Эти регистры управляют работой процессорного ядра и содержат информацию о состоянии, позволяющую контролировать процесс исполнения команд. Регистры CSFR разделены на группы в соответствии со следующими осуществляемыми ими функциями:

информация о текущем состоянии программы;

управление стеком;

управление контекстом;

управление прерываниями и обработкой ошибок (ловушками);

управление системой;

защита памяти;

управление отладкой.

Ниже в данном подразделе приводится краткий обзор этих регистров. Регистры специальных функций процессорного ядра дополняются набором регистров общего назначения (GPR). Полный список регистров CSFR и GPR приведён в Табл. 7.4.

Организация доступа к регистрам процессорного ядра

Для доступа к регистрам CSFR используются две команды: MFCR и MTCR. Команда MFCR (Move From Core Register) переписывает значение из выбранного (адресованного) регистра процессорного ядра в регистр данных. Она может быть исполнена при любом уровне доступа. Команда MTCR (Move To Core Register) переписывает данные из регистра данных в выбранный (адресованный) регистр CSFR. С целью предот-

INFSEMI_2-Text.fm, стр. 320 из 589 (September 3, 2010, 17:06)

320 7. Микроконтроллеры

Таблица 7.4. Список регистров процессорного ядра

Название регистра

Описание

 

 

D0...D15

Регистры данных

 

 

A0…A15

Адресные регистры

 

 

PSW

Слово состояния программы

 

 

PCXI

Информация о предыдущем состоянии контекста

 

 

PC

Счётчик команд

 

 

FCX

Указатель на первое свободное место в списке CSA

 

 

LCX

Указатель на последнее свободное место в списке CSA

 

 

ISP

Указатель стека обработчика прерываний

 

 

ICR

Контрольный регистр прерываний

 

 

BIV

Базовый адрес таблицы векторов прерываний

 

 

BTV

Базовый адрес таблицы векторов обработчика ошибок

 

 

SYSCON

Системный конфигурационный регистр

 

 

DPRx_0…DPRx_3

Набор регистров защиты сегментов данных (х = 0…3)

 

 

CPRx_0…CPRx_3

Набор регистров защиты сегментов кода программы (х = 0…3)

 

 

DPMx_0…DPMx_3

Набор регистров режима защиты данных (х = 0…3)

 

 

CPMx_0…CPMx_3

Набор регистров режима защиты кода программы (х = 0…3)

 

 

DBGSR

Регистр состояния отладочного режима

 

 

EXEVT

Признак наличия внешнего прерывания

 

 

SWEVT

Признак наличия программного прерывания

 

 

CREVT

Признак наличия аппаратного CSFR-прерывания

 

 

TRnEVT

Признак наличия триггерного события (n = 0, 1)

 

 

вращения несанкционированного доступа к CSFR, команда MTCR может исполняться только при уровне доступа Supervisor.

Кроме того, содержимое CSFR отображается (копируется) в верхнюю область текущего (локального) сегмента кода программы в пространстве адресов памяти. Благодаря этому отображению CSFR на адресное пространство состояние процессорного ядра оказывается полностью доступным для контроля, что повышает эффективность процесса отладки и эмуляции.

Примечание. Данный механизм доступа к регистрам CSFR может не поддерживаться процессорным ядром некоторых модификаций микроконтроллеров TriCore, в этом случае необходимо использовать команды MFCR и MTCR.

В системе команд TriCore отсутствуют команды, разрешающие обращение к отдельным битам или битовым полям, расположенным в CSFR; проведение операций «чтение-модификация-запись» для этих регистров также не допускается. Команда RSTV (сброс флагов переполнения) воз-

действует только на флаг переполнения в PSW, не изменяя другие биты этого регистра. Команда RSTV может быть исполнена при любом уровне доступа.

7.4.16. Регистры общего назначения (GPR)

На Рис. 7.40 показана структура регистров общего назначения микроконтроллера семейства TriCore. 32-битные регистры общего назначения поровну разделены на две группы из 16 регистров данных, или DGPR (D0…D15), и 16 адресных регистров, или AGPR (A0…A15). Разделение регистров адреса и данных облегчает применение механизма, позволяющего ЦПУ параллельно производить арифметические операции и операции обращения к памяти. В системе команд микроконтроллера предусмотрен ряд команд, обеспечивающих обмен информацией между регистрами данных и адресными регистрами. Они могут, например, применяться для генерации или модификации индексов при работе с таблицами.

Соседние регистры данных могут быть объединены попарно, образуя восемь рас-

INFSEMI_2-Text.fm, стр. 321 из 589 (September 3, 2010, 17:06)

7.4. Архитектура 32-битных микроконтроллеров TriCore 321

31

Регистры адреса GPR (AGPR)

31

Регистры данных GPR (DGPR)

0

0

 

 

 

 

 

 

 

 

 

 

 

 

A15 (Адресный регистр по умолчанию)

 

 

 

D15 (Регистр данных по умолчанию)

 

E14

 

 

 

 

 

 

 

 

 

 

A14

 

 

 

D14

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

A13

 

 

 

D13

 

E12

 

 

 

 

 

 

 

 

 

 

A12

 

 

 

D12

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

A11 (Адрес возврата)

 

 

 

D11

 

E10

 

 

 

 

 

 

 

 

 

 

A10 (Указатель стека)

 

 

 

D10

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

A9 (Глобальный регистр адреса)

 

 

 

D9

 

E8

 

 

A8 (Глобальный регистр адреса)

 

 

 

D8

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

A7

 

 

 

D7

 

E6

 

 

A6

 

 

 

D6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

A5

 

 

 

D5

 

E4

 

 

 

 

 

 

 

 

 

 

A4

 

 

 

D4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

A3

 

 

 

D3

 

E2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

A2

 

 

 

D2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

A1 (Глобальный регистр адреса)

 

 

 

D1

 

E0

 

 

 

 

 

 

 

 

 

 

A0 (Глобальный регистр адреса)

 

 

 

D0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 7.40. Регистры общего назначения (GPR).

ширенных регистров (E0, E2, E4, E6, E8, E10, E12 и E14) для работы с 64-битными данными (см. Рис. 7.40).

Регистры A0, A1, A8 и A9 являются глобальными системными регистрами. Их содержимое не сохраняется и не восстанавливается при вызове подпрограмм, программ обработки прерываний и программ обработки ошибок. Регистр A10 используется как указатель стека (SP). Регистр A11 используется для хранения адреса возврата (RA) при вызове подпрограмм и исполнении команд условного перехода или для сохранения значения счётчика команд (PC) во время исполнения программ обработки прерывания или ошибки.

В то время как 32-битные команды имеют неограниченный доступ к регистрам общего назначения, большинство 16-битных команд используют по умолчанию A15 в качестве регистра адреса, а D15 в качестве регистра данных, что упрощает их применение. Поддержка 64-битных данных обеспечивается благодаря возможности их записи в регистровую пару, состоящую из двух соседних (чётного и нечётного) 32-битных регистров. В ассемблере микроконтроллера TriCore такая регистровая пара может обозначаться либо как два регистра (например, D9/D8), либо как один расширенный 64-битный регистр (например, регистр E8 состоит из двух связанных регистров D9 и

D8, при этом в D8 записывается младшее слово данных).

Необходимо отметить, что для записи чисел в формате с плавающей точкой не предусмотрено каких-либо особых регистров, и все операции с числами в таком представлении производятся через регистры данных. Запись и чтение чисел в формате с плавающей точкой осуществляются автоматически с использованием быстрого переключения контекста. Регистры общего назначения представляют собой важный элемент контекста задачи. Когда контекст задачи сохраняется или извлекается из памяти, он подразделяется на верхний и нижний. Регистры A2…A7 и D0…D7 являются частью нижнего контекста. Регистры A10…A15 и D8…D15 входят в состав верхнего контекста.

Регистры состояния программы

PC, PSW и PCXI хранят и отображают информацию о ходе исполнения программы. Содержимое этих регистров имеет большое значение при сохранении или восстановлении контекста задачи и соответствующим образом сохраняется, восстанавливается или модифицируется в ходе данного процесса.

Счётчик команд (PC) содержит адрес текущей исполняемой команды. Пять старших битов регистра PSW содержат флаги

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]