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

Руководство пользователя по сигнальным процессорам Sharc

.pdf
Скачиваний:
150
Добавлен:
01.05.2014
Размер:
9 Мб
Скачать
☆

Набор команд А

16. Прямая запись данных в память данных или память программы

Синтаксис:

 

DM(Ia,Mb)

= <data32> ;

PM(Ic,Md)

 

Функция:

Запись 32 разрядных данных в память данных или память программы при косвенной адресации. Данные размещаются в старших 32 разрядах 40 разрядного слова памяти. Младшие 8 разрядов обнуляются. Регистр I пост модифицируется и обновляется определенным значением регистра M. Замечания:

1.Универсальный регистр (ureg) может находиться не в том же самом DAG (т. е. DAG1 или DAG2), что и Ia/Mb или Ic/Md.

2.См. раздел 4.4.1 «Ограничения на передачу данных с использованием регистров DAG» в главе Передача данных.

Примеры:

DM(I4,M0)=19304;

PM(I14,M11)=count;(count–константа, определяемая пользователем)

Код операции:

I выбирает индексный регистр I, M выбирает регистр модификации М. G выбирает тип памяти (память данных или память программы). DATA определяет 32 разрядные данные.

481

А Набор команд

17. Прямая запись данных в универсальный регистр

Синтаксис:

ureg = <data32> ;

Функция:

Запись 32 разрядных данных в универсальный регистр. Если регистр 40 разрядный, данные размещаются в старших 32 разрядах, а в 8 младших записываются нули.

Примеры:

IMASK=0xFFFC0060;

M15=mod1; (mod1 – константа, определяемая пользователем)

Код операции:

UREG определяет номер универсального регистра. Поле DATA определяет значение данных.

482

Набор команд А

Группа IV. Прочие команды

18.Операции с битами системного регистра 484

19.Непосредственная модификация регистра I с битреверсией или без битреверсии 485

20.Помещение или извлечение данных из стека состояния и/или стеков цикла 487

21.Нет операции (NOP) 488

22.IDLE 489

23.IDLE16 490

24.CJUMP/RFRAME (команда, генерируемая компилятором) 491

483

А Набор команд

18. Операции с битами системного регистра

Синтаксис:

BIT SET sreg <data> ;

CLR

TGL

TST

XOR

Функция:

Команда операции с битами в системном регистре. При помощи этой команды можно устанавливать, очищать, переключать или проверять определенные биты, сравнивать по схеме «исключающее ИЛИ» (XOR) значение системного регистра с определенным значением данных. В первых четырех операциях значение данных является маской. Операция установки устанавливает в заданном системном регистре все биты, которые установлены в определенном значении данных. Операция очистки обнуляет все биты, которые установлены в значении данных. Операция переключения переключает все биты, которые установлены в значении данных. Операция проверки устанавливает флаг проверки бита (BTF в ASTAT), если все биты, которые установлены в значении данных, также установлены в системном регистре. Операция XOR устанавливает флаг проверки бита (BTF в ASTAT), если значение системного регистра такое же, как значение данных. Операции с битами данных в регистровом файле выполняются командами устройства сдвига. Подробнее о системных регистрах см. в

Приложении Е.

Примеры:

BIT SET MODE2 0x00000070;

BIT TST ASTAT 0x00002000;

Код операции:

BOP определяет одну из пяти операций с битами. SREG определяет системный регистр. DATA определяет значение данных.

484

Набор команд А

19. Непосредственная модификация регистра I с битреверсией или без битреверсии

Синтаксис:

a.MODIFY (Ia,<data32>)

(Ic,<data24>) ;

b.BITREV (Ia,<data32>)

(Ic,<data24>) ;

Функция:

Модификация и обновление определенного регистра I 32 разрядным (DAG1) или 24 разрядным (DAG2) значением данных. Команда BITREV добавляет 32 разрядное значение к содержимому регистра индекса DAG1 (или 24 разрядное значение к содержимому регистра индекса DAG2), переставляет биты результата в обратном порядке и записывает полученный результат в тот же самый индексный регистр.

Замечания: см. раздел 4.4.1 «Передача данных с использованием регистров генератора адреса данных» в главе Передача данных.

Примеры:

MODIFY (I4,304);

BITREV (I7,space); (space – определенная константа)

Код операции: (без битреверсии)

485

А Набор команд

Код операции: (с битреверсией)

G выбирает генератор адреса данных:

G=0 для DAG1

G=1 для DAG2

I выбирает индексный регистр I:

I=0 7 для I0 I7 (для DAG1)

I=0 7 для I8 I15 (для DAG2)

DATA определяет модификатор.

486

Набор команд А

20. Помещение или извлечение данных из стека состояния и/или стеков цикла

Синтаксис:

 

 

 

 

 

 

 

 

 

 

PUSH

LOOP,

 

PUSH

 

STS ,

 

PUSH

 

PCSTK , FLUSH CACHE ;

 

 

 

 

 

 

POP

 

 

POP

 

 

 

POP

 

 

 

 

 

 

 

 

 

 

 

 

 

Функция:

Помещение или извлечение данных из стека адреса цикла или стека счетчика цикла, стека состояния и/или стека РС и/или очистка кэша команд. Любые из этих вариантов могут комбинироваться в одной команде.

При очистке кэша команд все биты истинности элементов кэша сбрасываются. Очистка кэша не имеет задержки. Кэш очищается в конце цикла.

Примеры:

PUSH LOOP, PUSH STS;

POP PCSTK, FLUSH CACHE;

Код операции:

LPU определяет помещение данных в стеки цикла. LPO определяет извлечение данных из стеков цикла. SPU определяет помещение данных в стек состояния. SPO определяет извлечение данных из стека состояния. PPU определяет помещение данных в стек PC. PPO снимает со стека PC. FC вызывает очистку кэша.

487

А Набор команд

21. Нет операции (NOP)

Синтаксис:

NOP;

Функция:

Нулевая операция; увеличивается только адрес выборки.

Код операции:

488

Набор команд А

22. IDLE

Синтаксис:

IDLE;

Функция:

Выполняется NOP и процессор переводится в состояние низкой потребляемой мощности. Процессор остается в этом состоянии, пока не придет сигнал прерывания.

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

Код операции:

47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32

000

00000

1

 

 

 

 

 

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

489

А Набор команд

23. IDLE16

Синтаксис:

IDLE16;

Функция:

Только в ADSP 21061 по команде IDLE16 выполняется NOP и процессор переводится в состояние пониженного потребления мощности. IDLE16 является вариантом команды IDLE с более низкой потребляемой мощностью. Эта команда останавливает процессор подобно команде IDLE; только в этом случае внутренняя тактовая частота равна 1/16 от CLKIN. Устройство ввода вывода ADSP 21061 продолжает функционировать, но все операции происходят в 16 раз медленнее. Все передачи внутренней памяти требуют 15 дополнительных циклов. Частоты тактовой и кадровой синхронизации последовательного порта, если их источником является ADSP 21061, делятся на 16 во время выполнения IDLE16. Точно так же все обращения хост процессора осуществляются в 16 раз медленнее. Процессор остается в состоянии пониженного потребления мощности, пока не произойдет прерывание.

Процессор выходит из состояния IDLE16, когда он определяет внешнее прерывание (по фронту) или прерывание таймера. Для получения информации о минимальной длительности импульса сигнала внешнего прерывания обратитесь к техническим характеристикам ADSP 21061. Период прерывания таймера для IDLE16 равен TPERIOD×TCK×16.

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

Код операции:

490