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

Ris_DSP / TZOS_red4_ch2_C25_Tablet

.pdf
Скачиваний:
44
Добавлен:
18.04.2015
Размер:
868.07 Кб
Скачать

 

 

133

 

 

 

 

 

 

INT1

4

 

3

Внешнее

 

прерывание 1

 

 

 

 

INT2

6

 

4

Внешнее

 

прерывание 2

 

 

 

 

 

 

 

 

Внутреннее

TINT

24 (18h)

 

5

прерывание

 

 

 

 

от таймера

 

 

 

 

Прерывание по

RINT

26 (1Ah)

 

6

приему от

 

последовательного

 

 

 

 

 

 

 

 

порта

 

 

 

 

Прерывание по

XINT

28 (1Ch)

 

7 (низший)

передаче к

 

 

 

 

последовательном

 

 

 

 

у порту

TRAP

30 (1Eh)

 

N/A

Адрес команды

 

TRAP

 

 

 

 

Когда возникает прерывание, оно помещается в 6-разрядный регистр флагов прерываний IFR и хранится в нем пока не будет обработано. IFR устанавливается прерываниями INT(2-0), RINT, XINT и TINT. Каждое прерывание, пока не будет обработано, хранится в IFR, затем автоматически очищается сигналом IACK (подтверждение прерывания) или RS. Сигнал RS не записывается в IFR. Регистр IFR программно недоступен.

Регистр маски прерываний IMR располагается в памяти данных по адресу 4. Единица в битах 0-5 разрешает соответствующее прерывание, если INTM=0. Регистр IMR доступен как для чтения, так и для записи, но только не с помощью команды BLKD. При чтении IMR резервные биты читаются как 1.

15 . . .

6 5

4

3

2

1

0

Зарезервировано

 

XINT

RINT

TINT

INT2

INT1

INT0

134

Если бит INTM в слове состояния ST0 установлен в 1, все прерывания запрещены, если в 0 – разрешены. INTM устанавливается в 1 сигналом IACK, командой DINT или аппаратным сбросом, а сбрасывается в 0 командой EINT. Существует механизм защиты многоцикловых команд от прерываний. Если прерывание поступило во время выполнения многоцикловой команды, то оно не обрабатывается до тех пор, пока не завершится выполнение команды. Этот механизм также применяется, когда команда становится многоцикловой вследствие действия сигнала

READY.

4.3.15 МЕТОДЫ АДРЕСАЦИИ ПАМЯТИ

TMS320C25 поддерживает три метода адресации памяти:

прямой метод адресации

косвенный метод адресации

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

При прямой адресации для образования полного 16-разрядного адреса памяти данных 7 младших разрядов адреса памяти данных (dma) соединяются с 9 битами указателя страницы памяти данных (DP). Таким образом, регистр DP указывает на одну из 512 возможных страниц памяти размером по 128 слов, а 7-разрядный адрес в команде указывает на конкретную ячейку на этой странице. Регистр DP загружается с помощью команд LDP (загрузить указатель страницы памяти данных), LDPK (загрузить непосредственно указатель страницы памяти данных) или LST (загрузить регистр состояния ST0). Формирование 16-разрядного адреса данных показано на рис.4.16.

Прямая адресация может использоваться со всеми командами кроме CALL, команд ветвления, команд с непосредственным операндом и команд без операндов. Формат прямой адресации имеет следующий вид:

15 . . .

8 7 6 5 4 3 2 1 0

код операции

 

0

dma

135

Рис.4.16 Прямая адресация

Биты от 15 до 8 содержат код операции. Бит 7=0 определяет метод адресации как прямой, а биты от 6 до 0 содержат адрес памяти данных

(dma).

Пример прямой адресации:

ADD 9,5 - добавить к аккумулятору содержимое 9

 

 

 

ячейки памяти данных, сдвинутое влево на 5

 

 

 

разрядов.

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

15 . . .

 

 

 

8 7 6 5 4 3 2 1 0

 

 

0

0

0

0

0

1

0

1

0

0

0

0

1

0

0

1

 

Код операции команды ADD 9,5 соответствует 05h и записывается в битах от 15 до 8. Адрес памяти данных 9h записывается в битах от 6 до 0. Бит 7=0 соответствует прямой адресации. Код сдвига располагается в битах 8÷11.

Косвенную адресацию TMS320C25 обеспечивают восемь вспомогательных регистров (AR0-AR7) и указатель ARP. Для выбора конкретного вспомогательного регистра указатель вспомогательного регистра (ARP) загружается одним значением от 0 до 7, указывая на один из вспомогательных регистров AR0-AR7 (рис. 4.17).

136

Рис.4.17 Косвенная адресация

Вспомогательные регистры обслуживаются арифметическим устройством вспомогательных регистров (ARAU), которое реализует 16разрядную арифметику без знака. Арифметические операции со вспомогательным регистром выполняются в том же самом цикле, что и выполняемая команда (увеличение или уменьшение значения dma в текущем ARn всегда выполняется после использования этого ARn в команде).

При косвенной адресации любая ячейка памяти данных (64 Кслова) может быть доступна благодаря 16-разрядным адресам, находящимся во вспомогательных регистрах. Они могут загружаться командами LAR (загрузка вспомогательного регистра), LARK (загрузка вспомогательного регистра непосредственная) и LRLK (загрузка вспомогательного регистра непосредственная длинная).

Вспомогательные регистры могут изменяться командой MAR (изменить вспомогательный регистр), а также полем косвенной адресации любой команды, использующей косвенную адресацию.

Вкосвенной адресации используются следующие символы:

*содержимое ARn используется для адреса памяти данных.

*содержимое ARn используется для адреса, затем после

137

доступа к памяти данных уменьшается на 1.

*+ содержимое ARn используется для адреса, затем после доступа к памяти данных увеличивается на 1.

*0содержимое ARn используется для адреса, и после доступа к памяти содержимое AR0 вычитается из него.

*0+ содержимое ARn используется для адреса, и после доступа к памяти содержимое AR0 добавляется к нему.

*BR0содержимое ARn используется для адреса, и после доступа к памяти содержимое AR0 вычитается из него с распространением инверсии переноса.

*BR0+содержимое ARn используется для адреса, и после доступа к памяти содержимое AR0 добавляется к нему с распространением инверсии переноса.

Т.о. существует два основных типа косвенной адресации с индексацией:

обычная косвенная адресация с инкрементом или декрементом;

косвенная адресация с индексацией, использующая значения AR0.

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

Косвенная адресация через вспомогательные регистры обеспечивает увеличение или уменьшение на 1 содержимого вспомогательного регистра, указанного ARP, после выполнения команды использующей косвенную адресацию.

Режим адресации с инверсией разрядов используется при реализации алгоритмов быстрого преобразования Фурье по основанию 2 для реверса адресов входных данных. Если выбран этот режим, направление распространения переноса инвертируется в ARAU и содержимое AR0 прибавляется или вычитается из содержимого текущего вспомогательного регистра. Обычно использование этого режима предполагает, что в AR0 первоначально было загружено значение, равное половине длины

138

обрабатываемой последовательности, а ARn был установлен на базовый (первый) элемент последовательности.

Косвенная адресация может использоваться со всеми командами кроме команд с непосредственным операндом и команд без операндов. Команды

с косвенной адресацией имеют следующий формат:

 

15

. . .

8 7 6 5

4

3

 

2 1 0

 

 

код операции

 

1

IDV

INC

DEC

NAR

 

Y

Биты от 15 до 8 содержат код операции, а бит 7=1 определяет метод адресации как косвенный. Биты от 6 до 0 содержат биты управления косвенной адресации, причем биты 4-6 управляют режимом косвенной адресации. Бит 3 и биты от 2 до 0 управляют указателем вспомогательного регистра (ARP). Бит 3 (NAR) определяет, загружается ли новая величина в ARP. Если бит 3=1, содержимое битов от 2 до 0 (Y) загружается в ARP (выбор нового ARn). Если бит 3=0, содержимое ARP не изменяется.

Значения полей команд при косвенной адресации представлены в Таблице 4.11.

 

 

 

 

Таблица 4.11

 

Биты

 

Обозначение

Арифметическая операция

 

 

в команде

 

 

 

 

15...8

7 6 5 4 3

2 1 0

 

 

КОП

1 0 0 0 0

Y

*

ARn/ARP не изменяются

КОП

1 0 0 0 1

Y

*,Y

Y ARP

КОП

1 0 0 1 0

Y

*-

ARn-1 ARn

КОП

1 0 0 1 1

Y

*-,Y

ARn -1 ARn, Y ARP

КОП

1 0 1 0 0

Y

*+

ARn+1 ARn

КОП

1 0 1 0 1

Y

*+,Y

ARn+1 ARn, Y ARP

КОП

1 1 0 1 0

Y

*0-

ARn-AR0ARn

КОП

1 1 0 1 1

Y

*0-,Y

ARn-AR0ARn, Y ARP

КОП

1 1 0 0 0

Y

*BR0-

ARn-rcAR0ARn

КОП

1 1 0 0 1

Y

*BR0-,Y

ARn-rcAR0ARn , Y ARP

КОП

1 1 1 0 0

Y

*0+

ARn+AR0Arn

КОП

1 1 1 0 1

Y

*0+,Y

ARn+AR0ARn, Y ARP

КОП

1 1 1 1 0

Y

*BR0+

ARn+rcAR0ARn

КОП

1 1 1 1 1

Y

*BR0+,Y

ARn+rcAR0ARn,Y ARP

Примечание: rc - распространение инверсии переноса.

139

У некоторых команд между типом косвенной адресации и новым значением ARP может врезаться код сдвига.

Например, символы *0+,5,1 в команде означают, что 5 - код сдвига и

Y=1 (выбор AR1).

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

ADD *+,4 Добавить к аккумулятору содержимое адреса памяти данных, определенного текущим вспомогательным регистром, предварительно сдвинутое влево перед сложением на 4 бита. Содержимое текущего вспомогательного регистра автоматически увеличивается на 1.

ADD *,4 Как в первом примере, но без автоматического инкремента текущего ARn.

ADD *-,4 Как в первом примере, только содержимое текущего вспомогательного регистра уменьшается на 1.

ADD *0+,4 Как в первом примере, только содержимое вспомогательного регистра AR0 добавляется к текущему вспомогательному регистру.

ADD *0-,4 Как в первом примере, только содержимое вспомогательного регистра AR0 вычитается из текущего вспомогательного регистра.

ADD *+,4,3 Как в первом примере, только указатель вспомогательного регистра (ARP) загружается величиной 3 для последующих команд.

ADD *BR0-,4 Как в первом примере, только содержимое AR0 вычитается из текущего вспомогательного регистра с распространением инверсии переноса.

ADD *BR0+,4 Как в первом примере, только содержимое AR0 прибавляется к текущему вспомогательному регистру с распространением инверсии переноса.

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

Ниже приведены команды, использующие непосредственный операнд в командном слове. Они выполняются за один командный цикл. Длина константы операнда зависит от типа команды.

140

ADDK - Прибавить к аккумулятору непосредственную короткую (8-ми разрядную) абсолютную константу.

ADRK - Прибавить к вспомогательному регистру непосредственную короткую абсолютную константу.

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

LARK - Загрузить во вспомогательный регистр непосредственную короткую абсолютную константу.

LARP - Загрузить константу (3-разрядную) в указатель вспомогательного регистра.

LDPK - Загрузить указатель страницы памяти данных 9-разрядной константой.

MPYK - Умножение непосредственное на 13-разрядную константу в дополнительном коде.

RPTK - Повторить команду, как определено непосредственным операндом (8-разрядной константой).

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

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

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

ADLK - Сложить с аккумулятором длинную непосредственную константу со сдвигом.

ANDK - Логическое «И» непосредственной константы с аккумулятором со сдвигом.

LALK - Загрузить аккумулятор длинной непосредственной константой со сдвигом.

LRLK - Загрузить вспомогательный регистр длинной непосредственной константой.

ORK - Логическое «ИЛИ» непосредственной константы с аккумулятором со сдвигом.

141

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

XORK - Логическое «ИСКЛЮЧАЮЩЕЕ ИЛИ» непосредственной константы со сдвигом.

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

ADLK 1024,2 - прибавить к аккумулятору величину 1024 со сдвигом на 2 бита влево (сложение числа 4096 с содержимым АСС).

RPTK 7 - повторить следующую команду 8 раз.

4.3.16 СИНТАКСИС КОМАНД

Для каждой команды в описании (User`s Guide) дается синтаксис ассемблера, информация об операндах, выполняемых операциях, кодировании, количестве слов, циклов, возможности повторения команды, а также приводится подробное описание команды и примеры использования.

В Таблице 4.12 приведены символы и сокращения, используемые в общем описании системы команд процессора TMS320C25 и в описании отдельных команд. В Таблице 4.13 приведена система команд процессоров семейства TMS320C2X.

СИНТАКСИС

Определяется синтаксис ассемблера для каждой команды.

поле метки

поле команды

поле операндов

[label]

EXAMPLE

dma,[shift]

[label]

EXAMPLE

{indirect},[,shift[,next ARP]]

[label]

EXAMPLE

[constant]

В поле команды расположен мнемокод команды, в поле операндов - все операнды, которые могут быть использованы в данной команде, в поле метки – метка возможного перехода при использовании операций

ветвления.

Все операнды записываются шрифтом Italic.

Обозначение операндов следующее:

AR

- вспомогательный регистр AR0-AR7;

constant

- непосредственная константа;

142

dma - адрес памяти данных при прямой адресации; next ARP - новое значение указателя ARP;

PA - адрес порта ввода/вывода PA0-PA15; pma - адрес памяти программ.

Косвенная адресация обозначается “{ind}”, это означает (для TMS320C25): {*|*+|*-|*0+|*0-|*BR0+|*BR0-}.

Операнды, которые могут быть опущены, помещены в квадратные скобки

[ ].

ОПЕРАНДЫ

Рассматриваются ограничения на операнды.

Например: 0dma127; 0next ARP7; 0constant255

ВЫПОЛНЕНИЕ

Приводится символическое описание выполнения команды. Например:

(PC)+1PC; (ACC)+[(dma)*2**shift]ACC

Если SXM=1: имеет место расширение знака для (dma). Если SXM=0: расширения знака (dma) нет.

Изменяет OV. Управляется OVM и SXM. Изменяет CY.

КОДИРОВАНИЕ

Приводится машинный код команды во всех режимах, соответствующих данной команде. Например:

Прямая адресация

15 14 13 12 11 10

9

8

7

6

5

4

3

2

1

0

0

0

0

0

shift

 

0

адр. пам. данных

Косвенная адресация

 

 

 

 

 

 

 

 

 

 

0

0

0

0

shift

 

1

см. Таблицу 4.11

Непосредственная

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

1

0

1

shift

 

0

0

0

0

0

0

0

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

16-разрядная константа

 

 

 

 

ОПИСАНИЕ

Соседние файлы в папке Ris_DSP