Модуль таймерного процессора TPU
Прием, обработка и выдача сигналов в реальном масштабе времени является одной из
наиболее важных и часто реализуемых функций микроконтроллеров. Поэтому в состав модульных микроконтроллеров входят
специализированные модули, обеспечивающие выполнение этих функций. В большинстве микроконтроллеров семейства 68300 используется
модуль таймерного процессора TPU, структура и функционирование которого описывается в данном разделе.
Общая структура модуля TPU приведена на рис.3.20. Модуль содержит блок интерфейса, осуществляющий
связь TPU с процессором CPU32 через внутреннюю магистраль, блок управления, два таймера, реализованных на базе регистров
TCR1,TCR2, и 16 таймерных каналов, каждый из которых выполняет самостоятельную функцию и имеет отдельный двунаправленный
вывод для подключения внешних устройств. Порядок обслуживания запросов, поступающих от таймерных каналов, определяется блоком
планирования в соответствии с их приоритетами, которые устанавливаются при программировании TPU. В состав модуля входит ОЗУ
емкостью 256 байт, в которое записываются параметры, определяющие функционирование каждого канала.
Рис.3.20. Структура модуля временного процессора TPU
Процессор осуществляет связь с TPU путем записи-считывания содержимого регистров,
входящих в состав блока интерфейса, и ячеек ОЗУ параметров, которые имеют соответствующие позиции в адресном пространстве
(табл.3.27). Всего для TPU выделено 512 позиций адресного пространства, расположенных в диапазоне $***E00-FFF, часть из
которых резервирована для использования в последующих разработках. Значения старших 12 разрядов адреса, обозначенных
символами ***, определяются типом микроконтроллера, в котором используется TPU.
Таблица 3.27. Адреса и уровни доступа регистров и ячеек ОЗУ модуля TPU
Адрес |
Регистр или ячейки ОЗУ параметров |
Уровень доступа |
$***E00 |
TPUMCR |
S |
$***E02 |
TPUTCR |
S |
$***E04 |
DSCR |
S |
$***E06 |
DSSR |
S |
$***E08 |
TICR |
S |
$***E0A |
CIER |
S |
$***E0C |
CFSR0 |
S |
$***E0E |
CFSR1 |
S |
$***E10 |
CFSR2 |
S |
$***E12 |
CFSR3 |
S |
$***E14 |
HSQR0 |
S/U |
$***E16 |
HSQR1 |
S/U |
$***E18 |
HSRRO |
S/U |
$***E1A |
HSRR1 |
S/U |
$***E1C |
CPR0 |
S |
$***E1E |
CPR1 |
S |
$***E20 |
CISR |
S |
$***E22-EFF |
резервировано |
|
$***F00-F0A |
параметры канала 0 |
S/U |
$***F10-F1A |
параметры канала 1 |
S/U |
$***F20-F2A |
параметры канала 2 |
S/U |
$***F30-F3A |
параметры канала 3 |
S/U |
$***F40-F4A |
параметры канала 4 |
S/U |
$***F50-F5A |
параметры канала 5 |
S/U |
$***F60-F6A |
параметры канала 6 |
S/U |
$***F70-F7A |
параметры канала 7 |
S/U |
$***F80-F8A |
параметры канала 8 |
S/U |
$***F90-F9A |
параметры канала 9 |
S/U |
$***FA0-FAA |
параметры канала 10 |
S/U |
$***FB0-FBA |
параметры канала 11 |
S/U |
$***FC0-FCA |
параметры канала 12 |
S/U |
$***FD0-FDA |
параметры канала 13 |
S/U |
$***FE0-FEE |
параметры канала 14 |
S/U |
$***FF0-FFE |
параметры канала 15 |
S/U |
В состав блока интерфейса входят регистры конфигурации TPUMCR, управления
CFSR0,1,2,3, HSQR0,1, HSSR0,1, приоритета CPR0,1, которые задают режимы модуля в целом и его каналов, а также регистры
CIER,CISR,TICR, с помощью которых обеспечивается обслуживание запросов прерывания, поступающих от таймерных каналов. Кроме
того, TPU содержит регистры TPUTCR, DSCR, DSSR, используемые в процессе тестирования и отладки.
Регистр конфигурации TPUMCR определяет режим работы модуля TPU. Он содержит ряд битов (рис. 3.21,а),
имеющих следующее назначение:
STOP - останавливает при STOP=1 функционирование TPU, переводя его в режим останова с пониженным
энергопотреблением; в этом режиме допускается обращение процессора к регистрам TPU, кроме регистров приоритета CPR0,1;
SUPV - определяет уровни доступа к регистрам TPU и ОЗУ параметров в соответствии с табл. 3.27; при
SUPV=1 доступ ко всем регистрам и ячейкам ОЗУ разрешается только в режиме супервизора, при SUPV=0 регистры, отмеченные
символами S/U, и ячейки ОЗУ могут быть выбраны в режиме пользователя;
IARB3-0 - поле, задающее очередность обслуживания запросов прерывания данного модуля.
STF - признак, принимающий значение STF=1 в режиме останова (при STOP=1);
EMU - определяет режим работы модуля TPU: при EMU=0 - режим выполнения стандартных функций
(нормальный режим), при EMU=1 - режим выполнения функций, запрограммированных пользователем (режим эмуляции);
PSK, TCR1P - задают частоту переключения Fc таймера TCR1;
T2CG, TCR2P - задают частоту переключения Fc таймера TCR2.
15 |
|
|
10 |
9 |
8 |
7 |
6 |
|
|
STOP |
TCR1P |
TCR2P |
EMU |
T2CG |
STF |
SUPV |
PSCK |
00 |
IARB |
а) TPUMCR (адрес $***E00)
|
|
|
|
CF15/1/7/3 |
CF14/10/6/2 |
CF13/9/5/1 |
CF12/8/4/0 |
б) CFSR0/1/2/3 (адрес $***E0C/E0E/E10/E12)
|
|
|
|
|
|
|
|
SQ15 SR15 CP15 |
SQ14 SR14 CP14 |
SQ13 SR13 CP13 |
SQ12 SR12 CP12 |
SQ11 SR11 CP11 |
SQ10 SR10 CP10 |
SQ9 SR9 CP9 |
SQ8 SR8 CP8 |
в) HSQR0 (адрес $***E14), HSSR0 (адрес $***E18), CPR0 (адрес $***E1C)
|
|
|
|
|
|
|
|
SQ7 SR7 CP7 |
SQ6 SR6 CP6 |
SQ5 SR5 CP5 |
SQ4 SR4 CP4 |
SQ3 SR3 CP3 |
SQ2 SR2 CP2 |
SQ1 SR1 CP1 |
SQ0 SR0 CP0 |
г) HSQR1 (адрес $***E16), HSSR1 (адрес $***E1A), CPR1 (адрес $***E1E)
Рис.3.21. Форматы содержимого регистров конфигурации, управления и приоритетов
обслуживания модуля TPU
Каждый из каналов TPU может использовать таймер TCR1 или TCR2 в качестве
базового для определения временных интервалов. Таймер TCR1 переключается внутренними синхроимпульсами, частота которых
равна Fs = Ft / 32 при значении бита PSK=0, или Fs = Ft / 4 при PSK=1, где Ft - частота тактовых импульсов, формируемых
ГТИ (см. раздел Генератор тактовых импульсов). Поле TCR1P в регистре TPUMCR задает дополнительный коэффициент деления частоты Kd=1,2,4 или 8
(табл.3.28), таким образом частота переключения таймера составляет Fc = Fs / Kd.
Таймер TCR2 переключается импульсами, поступающими на вывод TCR2 микроконтроллера от внешнего
источника, если значение бита T2CG=0, или внутренними синхроимпульсами, имеющими частоту Fs = Ft / 8, если значение бита
T2CG=1. При тактировании TCR2 внутренними импульсами (бит T2CG=1) вывод TCR2 используется для подачи строб-сигналов: при
сигнале TCR2=1 разрешается переключение таймера, при TCR2=0 - запрещается. Для частоты переключения Fc таймера TCR2
дополнительный коэффициент деления Kd определяется полем TCR2P в регистре TPUMCR (табл.3.28).
Таблица 3.28. Значения коэффициента деления частоты переключения для таймеров TPU
TCR1P, TCR2P |
Kd |
0 0 |
1 |
0 1 |
2 |
1 0 |
4 |
1 1 |
8 |
В нормальном режиме (бит EMU=0) функции, выполняемые каждым из каналов TPU,
определяются содержимым 16-разрядных регистров управления CFSR0,1,2,3, HSQR0,1 и HSRR0,1. Имеется два набора стандартных
функций, обеспечивающих выполнение каналами TPU таких операций, как формирование сигналов с заданной задержкой, генерация
импульсов заданной частоты и длительности, счет импульсов, измерение длительности временных интервалов, измерение частоты,
асинхронный последовательный обмен данными (прием или передача), управление шаговым двигателем, параллельный обмен данными,
дешифрация сигналов от датчиков угловых перемещений и ряд других. При выполнении некоторых операций обеспечивается
совместное функционирование нескольких каналов TPU. Таким образом выполняется запуск одних каналов после срабатывания
других, реализуются многоканальные генераторы импульсов и другие устройства.
Каждый набор включает 10 операций. Соответствующие программы их реализации заносятся в ПЗУ блока
управления TPU в процессе изготовления микроконтроллера (масочное программирование). Таким образом выпускаемые
микроконтроллеры имеют два варианта программирования TPU, отличающиеся набором реализуемых стандартных операций.
Выбор операции из реализуемого TPU набора для i-го канала производится
указанием соответствующего 4-битового функционального кода CFi, записываемого в один из регистров CFSR. Четыре регистра
CFSR0,1,2,3 содержат 16 полей для записи функциональных кодов CFi всех каналов TPU (рис.3.21,б). Код CF15 для канала 15
занимает четыре старших бита в регистре CFSR0, код CF14 - четыре следующих бита и т.д., так, что код CF0 занимает четыре
младших бита в регистре CFSR3. В регистры HSQR0,1 для i-го канала записывается 2-битовый код SQi, определяющий режим его
работы. Варианты рабочих режимов задаются 2-битовым кодом SRi в регистрах HSSR0,1. Размещение полей для записи кодов SQi,
SRi в регистрах HSQR, HSRR показано на рис.3.21,в. Функциональное назначение кодов SQi, SRi определяется выбранной для
данного канала операцией.
При выполнении заданной операции каждый канал использует определенные ячейки ОЗУ (табл.3.27), в
которых хранятся управляющие параметры, задающие режим и характеристики реализуемой функции, и параметры, отражающие текущее
состояние канала. Каналы 0-13 используют по 6 ячеек ОЗУ (12 байт), каналы 14,15 - по 8 ячеек (16 байт). Обращение к ячейкам
ОЗУ возможно как от CPU, так и от соответствующего канала. Однако возможности доступа к определенным ячейкам ограничиваются
в зависимости от выполняемой каналом операции: запись в ячейки, хранящие управляющие параметры, разрешается только CPU,
запись в ячейки, хранящие текущие параметры производится только TPU, для некоторых ячеек допускается запись как от CPU,
так и от TPU.
В режиме эмуляции (бит EMU=1) размещенное на кристалле микроконтроллера ОЗУ используется для записи
в него специализированных программ, обеспечивающих выполнение модулем TPU операций, не входящих в стандартные наборы.
Программы выполнения этих операций составляются пользователем на языке Ассемблера, а затем транслируются в объектные коды,
которые записываются во внутреннее ОЗУ микроконтроллера. При этом пользователь может реализовать в своих программах вызов
стандартных операций TPU. Таким образом функциональные возможности TPU в режиме эмуляции могут быть значительно расширены.
Используемый в режиме эмуляции фрагмент ОЗУ подключается непосредственно к TPU, и не может служить для каких-либо других целей.
В состав ряда типов микроконтроллеров входит специализированный модуль памяти TPURAM, который предназначен для использования
в режиме эмуляции TPU.
Блок управления обеспечивает поочередное обслуживание таймерных каналов в соответствии с их
приоритетами. Приоритеты задаются в процессе программирования TPU путем записи для каждого i-го канала соответствующего
2-битового кода CPi в регистры приоритетов CPR0, CPR1. Установлены три уровня приоритета обслуживания: H - высокий при
CPi=11, M - средний при CPi=10, L - низкий при CPi=01. Если значение CPi=00, то данный канал отключается. Регистры CPR0,
CPR1 содержат 2-битовые поля, в которые записываются коды приоритета CPi для каждого канала TPU (рис.3.21,в). Блок
планирования анализирует приоритеты работающих каналов и формирует управляющий код, в соответствии с которым блок
управления TPU выбирает канал, для которого выполняется процедура текущего обслуживания. В ходе этой процедуры блок
управления записывает в ОЗУ параметров данные о текущем состоянии канала, считывает из этого ОЗУ значения управляющих
параметров и в случае их изменения устанавливает новый режим функционирования канала. Такое текущее обслуживание должно
периодически проводится для всех работающих каналов.
Чтобы обеспечить эффективное использование каналов с различными уровнями приоритета, в TPU
реализуется следующий порядок их текущего обслуживания. Блок планирования обеспечивает последовательное выполнение
циклов текущего обслуживания работающих каналов в соответствии со следующей приоритетной схемой:
- H - M - H - L - H - M - H -.
Таким образом из семи последовательно выполняемых циклов текущего обслуживания четыре используются
для обслуживания каналов с приоритетом H, два - для каналов с приоритетом M и один - для канала с приоритетом L. Если в
очередном цикле канал, имеющий приоритет согласно данной схеме, отсутствует, то обслуживается канал с таким же приоритетом,
как и в предыдущем цикле. Для каналов с одинаковым приоритетом очередность обслуживания определяется их номером: сначала
обслуживается канал, имеющий меньший номер. Данная схема обеспечивает обслуживание каналов с любым уровнем приоритета, при
этом каналы с более высоким приоритетом более оперативно выдают информацию о своем текущем состоянии и реагируют на изменение
их режима работы или управляющих параметров.
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
IE15 IF15 |
IE14 IF14 |
IE13 IF13 |
IE12 IF12 |
IE11 IF11 |
IE10 IF10 |
IE9 IF9 |
IE8 IF8 |
IE7 IF7 |
IE6 IF6 |
IE5 IF5 |
IE8 IF8 |
IE8 IF8 |
IE8 IF8 |
IE8 IF8 |
IE8 IF8 |
а) CIER (адрес $***E0A), CISR (адрес $***E20)
|
|
|
|
0 0 0 0 0 |
CIRL |
CIBU |
0 0 0 0 |
б) TICR (адрес $***E08)
Рис.3.22. Форматы регистров обслуживания запросов прерывания от каналов TPU
После завершения определенных операций каналы TPU
устанавливают в регистре CISR (рис.3.22,а) признаки прерывания IFi=1, где i-номер канала. При
этом формируется запрос прерывания CPU, если в регистре CIER (рис. 3.22,а) соответствующий бит
разрешения имеет значение IEi=1. Параметры этих запросов определяются содержимым регистра TICR
(рис.3.22,б). Поле CIRL в регистре TICR задает уровень приоритета запросов прерывания TPU:
высший уровень (немаскируемое прерывание) при значении CIRL=111, низший уровень при CIRL=001,
запрещение обслуживания запросов прерывания всех каналов при CIRL=000. Поле CIBV содержит
четыре старших разряда номера вектора прерывания для запросов, поступающих от каналов TPU.
Четыре младших разряда задаются номером канала, от которого поступает запрос. Например, при
значении CIBV=0010 канал 10 будет иметь двоичный номер вектора прерывания Ne=00101010.