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

Ris_DSP / TZOS_red4_ch2_C25_Tablet

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

143

 

Приводится словесное описание операций,

осуществляемых

процессором при выполнении данной команды.

 

СЛОВА

Указывается количество слов, которое данная команда занимает в памяти программ. Например: 1

ЦИКЛЫ Класс II (для TMS320C25)

Класс команды по количеству циклов. Конкретное количество циклов, соответствующее каждому классу приведено в User's Guide (руководстве пользователя) для процессора.

ПОВТОРЯЕМОСТЬ ДА или НЕТ Команда может быть повторяема – «да», или не повторяема – «нет».

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

RPT и RPTK.

ПРИМЕР

Приводится пример выполнения программы, изменения, которые происходят с содержимым памяти и регистров приводятся в показанном формате.

 

 

 

Таблица 4.12

 

Символ

 

Значение

 

 

A

Адрес порта

 

 

 

 

АСС

Аккумулятор

 

 

 

 

Arn

Вспомогательный

регистр

n

(AR0-AR7

являются

 

определенными символами ассемблера,

 

 

равными 0-7 соответственно)

 

 

ARP

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

 

 

BIO

Вход контроля ветвления

 

 

 

В

4-разрядное поле, определяющее код

 

 

C

Бит переноса

 

 

 

 

CM

2-разрядное поле, определяющее режим сравнения

 

 

144

 

 

CNF

Бит контроля конфигурации RAM

D

Поле адреса памяти данных

DATn

Метка, определяющая ячейку памяти данных n

dma

Адрес памяти данных

DP

Указатель страницы данных

FO

Бит состояния формата

I

Бит метода адресации

INTM

Бит флага режима прерывания

OV

Бит переполнения

OVM

Режим бита переполнения

K

Поле непосредственного операнда

P

Регистр произведения

PA

Адрес порта (PA0-PA15) являются определенными

 

символами ассемблер равными 0-15, соответственно

PC

Счетчик программ

PM

2-разрядное поле, определяющий код сдвига выходного

 

сигнала Р-регистра

pma

Адрес памяти программ

PRGn

Метка, определяющая ячейку памяти программ

R

3-разрядное поле операнда, определяющего вспомогательный

 

регистр

RPTC

Счетчик повторения

S

4-разрядный код сдвига влево

ST0,

Статусные регистры

ST1

 

T

Т-регистр

TOS

Вершина стека

X

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

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

| |

Указывает абсолютную величину

Italics

Элементы с шрифтом Italics определяются пользователем

[ ]

Элементы в квадратных скобках являются дополнительными

( )

Указывают «содержимое чего-либо»

145

{} Элементы в фигурных скобках являются альтернативными, один из них должен быть выбран

Примечание: Пробелы или интервалы должны иметь место там, где показано.

 

Таблица 4.13

 

Инстр.

Описание

Операция

 

Сл

КОМАНДЫ, ВЫПОЛНЯЮЩИЕ ОПЕРАЦИИ С АККУМУЛЯТОРОМ

 

ABS

Абсолютная величина АСС

None

 

1

ADD

Сложение с АСС со сдвигом

dma[,shift];

 

1

 

 

ind[,shift[,nextARP]]

 

 

ADDC

Сложение с АСС с переносом

dma; ind[,next ARP]

 

1

#

 

 

 

 

ADDH

Сложение со старшими разрядами АСС

dma; ind[,next ARP]

 

1

ADDK

Сложение с АСС короткой константы

constant

 

1

#

 

 

 

 

ADDS

Сложение с АСС без расширения знака

dma

 

1

ADDT

Слож. с АСС со сдвигом, определенным

dma; ind[,next ARP]

 

1

 

Т-рег.

 

 

 

ADLK

Слож. с АСС длинной константы со

constant[,shift]

 

2

 

сдвигом

 

 

 

AND

Логическое “И” с АСС

dma; ind[,next ARP]

 

1

ANDK

Логическое “И” константы с АСС

constant[,shift]

 

2

CMPL

Дополнение АСС (логическая инверсия)

None

 

1

LAC

Загрузка АСС со сдвигом

dma[,shift];

 

1

 

 

ind[,shift[,nextARP]]

 

 

LACK

Загрузка АСС короткой константой

constant

 

1

LACT

Загрузка АСС со сдвигом, определенным

dma; ind[,next ARP]

 

1

 

Т-рег.

 

 

 

LALK

Загрузка АСС длинной константой

constant[,shift]

 

2

NEG

Логическое “НЕ” с АСС

None

 

1

NORM

Нормализация АСС

ind

 

1

OR

Логическое “ИЛИ” с АСС

dma; ind[,next ARP]

 

1

ORK

Логическое “ИЛИ” длинной константы с

constant[,shift]

 

2

 

АСС

 

 

 

ROL #

Вращение АСС влево

None

 

1

ROR #

Вращение АСС вправо

None

 

1

SACH

Сохранить старшее слово АСС со сдвигом

dma[,shift];

 

1

 

 

ind[,shift[,nextARP]]

 

 

SACL

Сохранить младшее слово АСС со сдвигом

dma[,shift];

 

1

146

 

 

ind[,shift[,nex ARP]]

 

SBLK

Вычитание из АСС длинной константы со

constant[,shift]

2

 

двигом

 

 

SFL

Сдвиг АСС влево

None

1

SFR

Сдвиг АСС вправо

None

1

SUB

Вычитание из АСС со сдвигом

dma[,shift];

1

 

 

ind[,shift[,nextARP]]

 

SUBB

Вычитание из АСС с переносом

dma; ind[,next ARP]

1

#

 

 

 

SUBC

Вычитание условное

dma; ind[,next ARP]

1

SUBH

Вычитание из старшего слова АСС

dma; ind[,next ARP]

1

SUBK

Вычитание из АСС короткой константы

Constant

1

#

 

 

 

SUBS

Вычит. из мл. слова АСС без расширения

dma; ind[,next ARP]

1

 

знака

 

 

SUBT

Вычитание из АСС со сдвигом,

dma; ind[,next ARP]

1

 

определенным Т-рег.

 

 

XOR

“Исключ. ИЛИ” с АСС

dma; ind[,next ARP]

1

XORK

“Исключ. ИЛИ” АСС и константы со

constant[,shift]

2

 

сдвигом

 

 

ZAC

Обнуление АСС

None

1

ZALH

Обнуление мл. слова АСС и загр. числа в

dma; ind[,next ARP]

1

 

ст. слово АСС

 

 

ZALR

Что и ZALH, но со вращением

dma; ind[,next ARP]

1

#

 

 

 

ZALS

Обнуление АСС, загр. мл. слова АСС без

dma; ind[,next ARP]

1

 

расшир. знака

 

 

КОМАНДЫ, ВЫПОЛНЯЮЩИЕ ОПЕРАЦИИ СО ВСПОМОГАТЕЛЬНЫМИ РЕГИСТРАМИ И УКАЗАТЕЛЕМ СТРАНИЦ

ADRK

Сложение со вспомогат. регистром

Constant

1

 

короткой константы

 

 

 

 

 

 

CMPR

Сравнение

вспомогат.

регистра

с

Constant

1

 

регистром AR0

 

 

 

 

 

 

LAR

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

 

AR, dma;

1

 

 

 

 

 

 

 

AR, ind[,next ARP]

 

LARK

Загрузка

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

регистра

AR, constant

1

 

короткой константой

 

 

 

 

 

 

LARP

Загрузка

указателя

 

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

constant

1

 

регистра

 

 

 

 

 

 

 

LDP

Загрузка

указателя

страницы

памяти

dma; ind[,next ARP]

1

147

 

данных

 

 

 

 

 

 

LDPK

Загр. указателя стр. памяти данных

constant

 

1

 

короткой константой

 

 

 

 

 

LRLK

Загрузка

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

регистра

AR, constant

 

2

 

длинной константой

 

 

 

 

 

MAR

Изменение вспомогательного регистра

dma; ind[,next ARP]

 

1

SAR

Сохранение вспомогательного регистра

AR, dma;

 

1

 

 

 

 

 

AR, ind[,next ARP]

 

 

SBRK

Вычитание из вспомогат. регистра

constant

 

1

 

короткой константы

 

 

 

 

 

КОМАНДЫ, ВЫПОЛНЯЮЩИЕ ОПЕРАЦИИ С ПОРТАМИ ВВОДА-

 

 

 

ВЫВОДА И ПАМЯТЬЮ ДАННЫХ

 

BLKD

Перемещение блока из памяти данных в

dma1, dma2;

 

2

 

память данных

 

 

dma1,ind[,next ARP]

 

 

BLKP

Перемещение блока из памяти программ в

pma, dma;

 

2

 

память данных

 

 

pma, ind [,next ARP]

 

 

DMO

Перемещение данных в памяти данных

dma, ind [,next ARP]

 

1

V

 

 

 

 

 

 

 

FORT

Форматирование

 

регистров

constant

 

1

 

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

 

 

 

 

IN

Ввод данных из порта

 

 

dma PA;

 

1

 

 

 

 

 

ind, PA [,next ARP]

 

 

OUT

Вывод данных из порта

 

dma PA;

 

1

 

 

 

 

 

ind, PA [,next ARP]

 

 

RFSM

Сбросить бит режима кадровой синхрониз.

None

 

1

#

посл. порта

 

 

 

 

 

 

RTXM

Сбросить

бит

режима

передачи

None

 

1

 

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

 

 

 

 

RXF

Сбросить внешний флаг

 

None

 

1

SFSM

Установить

бит

режима

кадровой

None

 

1

#

синхрониз. посл. порта

 

 

 

 

STXM

Установить

бит

режима

передачи

None

 

1

 

последов. порта

 

 

 

 

 

SXF

Установить внешний флаг

 

None

 

1

TBLR

Читать таблицу

 

 

dma; ind [,next ARP]

 

1

TBLW

Записать таблицу

 

 

dma; ind [,next ARP]

 

1

 

КОМАНДЫ УСЛОВНОГО И БЕЗУСЛОВНОГО ВЕТВЛЕНИЯ

 

B

Безусловное ветвление

 

pma, ind [,next ARP]

 

2

BACC

Ветвление по адресу, указанному АСС

None

 

1

BANZ

Ветвление, если вспомогательный регистр

pma, ind [,next ARP]

 

2

148

 

0

 

 

BBNZ

Ветвление, если бит ТС 0

pma, ind [,next ARP]

2

BBZ

Ветвление, если бит ТС = 0

pma, ind [,next ARP]

2

BC #

Ветвление при переносе

pma, ind [,next ARP]

2

BGEZ

Ветвление, если содержимое АСС 0

pma, ind [,next ARP]

2

BGZ

Ветвление, если содержимое АСС > 0

pma, ind [,next ARP]

2

BIOZ

Ветвление, если бит ввода-вывода = 0

pma, ind [,next ARP]

2

BLEZ

Ветвление, если содержимое АСС 0

pma, ind [,next ARP]

2

BLZ

Ветвление, если содержимое АСС < 0

pma, ind [,next ARP]

2

BNC #

Ветвление, если нет переноса

pma, ind [,next ARP]

2

BNV

Ветвление, если нет переполнения

pma, ind [,next ARP]

2

BNZ

Ветвление, если содержимое АСС 0

pma, ind [,next ARP]

2

BV

Ветвление, если есть переполнение

pma, ind [,next ARP]

2

BZ

Ветвление, если содержимое АСС = 0

pma, ind [,next ARP]

2

CALA

Косвенный вызов подпрограммы

None

1

CALL

Вызов подпрограммы

pma, ind [,next ARP]

2

RET

Возврат из подпрограммы

None

1

КОМАНДЫ УМНОЖЕНИЯ И КОМАНДЫ, ВЫПОЛНЯЮЩИЕ ОПЕРАЦИИ С Т- И Р- РЕГИСТРАМИ

APAC

Сложение Р-рег. к АСС

None

1

LPH

Загрузка старших разрядов Р-регистра

dma; ind[,next ARP]

1

LT

Загрузка Т-регистра

dma; ind[,next ARP]

1

LTA

Загрузка Т-рег. и сложение с АСС

dma; ind[,next ARP]

1

 

предыдущего роизвед.

 

 

LTD

То же, что и LTA, но с движением данных

dma; ind[,next ARP]

1

LTP

Загрузка Т-рег. и сохранение Р-рег. в АСС

dma; ind[,next ARP]

1

LTS

Загрузка Т-рег. и вычитание предыдущего

dma; ind[,next ARP]

1

 

произвед.

 

 

MAC

Умножение и сложение

pma, dma;

2

 

 

pma, ind [,next ARP]

 

MACD

Умножение и сложение с движением

pma, dma;

2

 

данных

pma, ind [,next ARP]

 

MPY

Умножение

dma; ind[,next ARP]

1

MPYA

Умножение и сложение с АСС

dma; ind[,next ARP]

1

#

предыдущего произвед.

 

 

MPYK

Умножение на константу

constant

1

MPYS

Умножение и вычитание из АСС

dma; ind[,next ARP]

1

#

предыдущего произвед.

 

 

MPYU

Умножение беззнаковое

dma; ind[,next ARP]

1

149

#

 

 

 

 

 

PAC

Сохранение Р-рег. в АСС

 

None

1

SPAC

Вычитание Р-рег. из АСС

 

None

1

SPH #

Сохранение старшего слова Р-рег.

 

dma; ind[,next ARP]

1

SPL #

Сохранение младшего слова Р-рег.

 

dma; ind[,next ARP]

1

SPM

Задание режима сдвига на выходе Р-рег.

constant

1

SQRA

Возведение в квадрат и слож. с АСС

dma; ind[,next ARP]

1

 

предыдущ. произв.

 

 

 

SQRS

Возведение в квадрат и вычитание

dma; ind[,next ARP]

1

 

предыдущего произведения из АСС

 

 

 

 

КОМАНДЫ УПРАВЛЕНИЯ

dma, bit code;

 

BIT

Тестирование бита

 

1

 

 

 

 

ind,bit code[,nextARP]

 

BITT

Тестирование бита, определенного

 

dma; ind[,next ARP]

1

 

Т-регистром

 

 

 

 

CNFD

Объявить блок как память данных

 

None

1

CNFP

Объявить блок как память программ

None

1

DINT

Блокирование прерываний

 

None

1

EINT

Разрешение прерываний

 

None

1

IDLE

Ожидание прерываний

 

None

1

LST

Загрузка регистра состояния ST0

 

dma; ind[,next ARP]

1

LST1

Загрузка регистра состояния ST1

 

dma; ind[,next ARP]

1

NOP

Нет операции

 

 

None

1

POP

Вытолкнуть вершину стека в младшее

None

1

 

слово АСС

 

 

 

 

POPD

Вытолкнуть вершину стека в ячейку

dma; ind[,next ARP]

1

 

памяти данных

 

 

 

 

PSHD

Вытолкнуть ячейку памяти данных в

dma; ind[,next ARP]

1

 

вершину стека

 

 

 

 

PUSH

Вытолкнуть младшее слово АСС в

None

1

 

вершину стека

 

 

 

 

RС #

Сбросить бит переноса

 

None

1

RHM

Сбросить режим ПДП

 

None

1

#

 

 

 

 

 

ROVM

Сбросить режим переполнения

 

None

1

RPT

Повторить команду столько раз, сколько

dma; ind[,next ARP]

1

 

указано в ячейке памяти данных

 

 

 

RPTK

Повторить

следующую

команду

constant

1

 

(constant+1) раз

 

 

 

 

RSXM

Сбросить режим расширения знака

 

None

1

150

 

RTC #

Сбросить флаг тест-управления

None

1

 

 

SC #

Установить бит переноса

None

1

 

 

SHM #

Установить режим ПДП

None

1

 

 

SOVM

Установить режим переполнения

None

1

 

 

SST

Сохранить содержимое регистра состояния

dma; ind[,next ARP]

1

 

 

 

ST0

 

 

 

 

 

SST1

Сохранить содержимое регистра состояния

dma; ind[,next ARP]

1

 

 

 

ST1

 

 

 

 

 

SSXM

Установить режим расширения знака

None

1

 

 

STC #

Установить флаг тест-управления

None

1

 

 

TRAP

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

None

1

 

 

Примечания

:

# – команды недоступны для TMS320C20,

 

 

 

 

 

Сл. – количество слов, занимаемое в памяти программ.

4.3.17 ПРИМЕРЫ ПРОГРАММ

Ввод через порт ввода/вывода внешних данных во внутреннюю память данных процессора, начиная с адреса 0200h.

LARP

AR2

;инициализировать вспомогат. рег. AR2

LRLK

AR2,0200h

;загрузить в рег. AR2 адрес 0200h

RPTK

000Fh

;повторить следующую команду 16 раз

IN *+,PA0

;ввести данные через I/O порт PA0

 

 

;с инкрементом содержимого AR2

Вывод через порт ввода/вывода данных из внутренней памяти данных процессора, начиная с адреса 0210h.

LARP

AR3

;инициализировать вспомогат. рег. AR3

LRLK

AR3,0210h

;загрузить в рег. AR3 адрес 0210h

RPTK

000Fh

;повторить следующую команду 16 раз

OUT

*+,PA2

;ввести данные через I/O порт PA2

 

 

;с инкрементом содержимого AR3

Умножение двух 16-ти разр. значений из RAM процессора.

LRLK AR1,0200h ;загрузить во вспомогат. рег. AR3 адрес ;0200h (адр. 1-го операнда)

LARP AR1 ;инициализировать вспомогательный

;регистр AR1 (ARP=1)

 

 

151

LT

*+

;загрузить Т- рег. содержимым адреса

MPY

*+

;0200h и инкрементировать AR1

;умножить Т-рег. на содержимое адреса

 

 

;0201h (адр. 2-го операнда) и

PAC

 

;инкрементировать AR1

 

;сохранить содержимое Р-рег. в АСС

SACL *+,0

;сохранить младшие 16 разрядов АСС по

SACH *,0

;адресу 0202h

;сохранить старшие 16 разрядов АСС по

 

 

;адресу 0203h

Вычисление отклика КИХ-фильтра 8 порядка (свертки).

В данном примере представлена программа цифрового фильтра с конечной импульсной характеристикой (КИХ-фильтра). Отклик КИХфильтра определяется в соответствии с выражением свертка:

N 1

y(n) = h(k) x(n k) ,

k=0

вкотором h(k) - отсчеты импульсной характеристики фильтра, x(n-k) - предыдущие (задержанные) отсчеты входного сигнала, N – порядок фильтра. Структурная схема КИХ-фильтра представлена на рис.4.18.

Рис.4.18. Структурная схема КИХ-фильтра

Чтобы воспользоваться командой MACD для вычисления отклика КИХфильтра, блок B0 памяти данных командой CNFP конфигурируется как память программ. MACD работает только с внутренней RAM.

Сократить время вычисления отклика КИХ-фильтра позволяет сочетание команды MACD с командой повторения RPTK:

152

RPTK NM1

MACD (pma), (dma)

Команда RPTK NM1 загружает непосредственную 8-битную константу NM1 (N-1) в счетчик повторения. Это обеспечивает выполнение следующей команды N раз.

Команда MACD(pma),(dma) умножает содержимое памяти данных (определяемое dma) на содержимое памяти программ (определяемое pma), начиная с адреса FF00h. Предварительно производится прибавление предыдущего произведения к АСС. Затем содержимое памяти данных, адресуемое через dma, копируется в следующую более старшую ячейку памяти. Другими словами, команда MACD объединяет пару команд

LTD/MPY в одну.

На рис.4.19 показана рекомендуемая схема использования памяти данных, которая обеспечивает правильную последовательность данных x(n) и коэффициентов h(n) при движении через фильтр.

Рис.4.19. Расположение x(n) и h(k) в памяти данных

В приведенном ниже примере программы КИХ-фильтра 8 порядка (N=8) для TMS320С2X обращение к значениям x(n) из памяти данных производится косвенно через вспомогательный регистр AR1.

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