А. В. Комаров цифровые сигнальные процессоры

Вид материалаДокументы
AX0 MX0 SI SB CNTR AX1 MX1 SE PX OWRCNTR (только запись) AY0 MY0 SR1 ASTAT RX0 AY1 MY1 SR0 MSTAT RX1
Пример: I7 = AR;Описание
Флаги состояния
AX0 MX0 SI SB CNTR AX1 MX1 SE PX OWRCNTR (только запись) AY0 MY0 SR1 ASTAT RX0 AY1 MY1 SR0 MSTAT RX1
Примеры: I0 = data_buffer; (I0 = data_buffer;) L0 =% data_buffer; (L0 = length(data_buffer);)Описание
Флаги состояния
Подобный материал:
1   ...   8   9   10   11   12   13   14   15   ...   26
AX0 MX0 SI SB CNTR

AX1 MX1 SE PX OWRCNTR (только запись)
AY0 MY0 SR1 ASTAT RX0
AY1 MY1 SR0 MSTAT RX1

AR MR2 I0-I7 SSTAT (только чтение) ТХ0

MR1 M0-M7 IMASK TX1

MR0 L0-L7 ICNTL IFC (только запись)


Пример: I7 = AR;


Описание: Содержимое регистра источника (справа от знака равенства) пересылается в регистр назначения (слева от знака равенства). После пересылки содержимое регистра назначения всегда с правым выравниванием.

Правое выравнивание подразумевает заполнение старшего байта регистра назначения нулем или распространением знака содержимого регистра источника, когда в большой регистр (например, 16-битный) пересылается содержимое малого регистра (например, 8-битного).

В этом случае процессор поступает следующим образом: если источником являются беззнаковые регистры (I0-I7, L0-L7, CNTR, PX, ASTAT, MSTAT, SSTAT, IMASK и ICNTL), то старший байт регистра назначения заполняется нулем; если источником являются знаковые регистры (все оставшиеся из разрешенных), то старший бай заполняется знаком операнда источника.

Когда содержимое большого регистра записывается в малый (например, 16-битный в 14-битный), то отбрасываются два старших бита операнда источника.

Следует помнить, что при загрузке регистра MR1 знак загружаемого операнда распространяется в регистр MR2.


Флаги состояния: не изменяются.


Б) ЗАГРУЗКА РЕГИСТРА НЕПОСРЕДСТВЕННЫМИ

ДАННЫМИ


Синтаксис: reg =

dreg =


data: <константа>

'%' <имя переменной/буфера>

'' <имя переменной/буфера>

(в среде VisualDSP <имя переменной/буфера> и

length(<имя переменной/буфера>) соответственно)


Допустимые регистры:

dreg (16-битные) reg (максимум 14-битные)
AX0 MX0 SI SB CNTR

AX1 MX1 SE PX OWRCNTR (только запись)
AY0 MY0 SR1 ASTAT RX0
AY1 MY1 SR0 MSTAT RX1

AR MR2 IMASK ТХ0

MR1 ICNTL TX1

MR0 I0-I7 IFC (только запись)

M0-M7
L0-L7


Примеры: I0 = data_buffer; (I0 = data_buffer;)

L0 =% data_buffer; (L0 = length(data_buffer);)


Описание: Непосредственное данное data загружается в регистр назначение. Данным может быть константа, а также имя любой переменной/буфера, перед которой стоят операторы длины (%) или указателя (). В среде VisualDSP символ () необходимо опускать, а символ (%) заменять словом length.

Данное должно быть длиной 16 бит для загрузки регистров данных (dreg) и не более 14 бит для всех оставшихся регистров (reg). В регистре назначении данное всегда располагается с правым выравниваем. Если длина данного меньше длины регистра назначения, то старшие разряды регистра заполняются знаком данного.

При загрузке регистра MR1 знак загружаемого операнда распространяется в регистр MR2.

Особенность команды является то, что с ее помощью 16-битные регистры RX и ТХ можно загрузить только 14-битной константой. Для полного использования возможностей этих регистров следует применять команды регистр-регистр (см. п. 1.17.4.А) или ПД-регистр (см. п. 1.17.4.В).


Флаги состояния: не изменяются.


В) ЧТЕНИЕ ПД (ПРЯМАЯ АДРЕСАЦИЯ)


Синтаксис: reg = DM();


Допустимые регистры: см. п. 1.17.4.А за исключением регистра SSTAT, который работает только на чтение и не может быть записан.


Пример: SI = DM(0x1234);


Описание: Команда чтения ПД с прямым методом адресации пересылает содержимое ячейки ПД с адресом addr в регистр назначение. Поскольку метод адресации – прямой, то адрес (заданный константой или меткой) запоминается в самой команде как 14-битное поле. Операнд в регистр назначение загружается с правым выравниваем. При загрузке регистра MR1 знак загружаемого операнда распространяется в регистр MR2.


Флаги состояния: не изменяются.


Г) ЧТЕНИЕ ПД (КОСВЕННАЯ АДРЕСАЦИЯ)


dreg = DM (




I0

,

M0




);







I1




M1













I2




M2













I3




M3


































I4




M4













I5




M5













I6




M6













I7




M7












Синтаксис:


Допустимые регистры dreg: