Analog Devices, Inc. reserves the right to change this product without
prior notice. Information furnished by Analog Devices is believed to be
accurate and reliable. However, no responsibility is assumed by Analog
Devices for its use; nor for any infringement of patents or other rights of
third parties which may result from its use. No license is granted by
implication or otherwise under the patent rights of Analog Devices, Inc.
Trademark and Service Mark Notice
The Analog Devices logo, the SHARC logo, EZ-ICE, and SHARC are
registered trademarks of Analog Devices, Inc.
VisualDSP++ is a trademark of Analog Devices, Inc.
All other brand and product names are trademarks or service marks of
their respective owners.
CONTENTS
PREFACE
For Additional Information About Analog Products ...................... -xiii
For Technical or Customer Support .............................................. -xiv
What’s This Book About and Who’s It For? ................................... -xiv
How to Use This Manual ............................................................. -xvi
Related Documents .................................................................... -xviii
Conventions of Notation .............................................................. -xix
The ADSP-21065L documentation set contains two manuals, the
ADSP-21065L SHARC DSP User’s Manual and the ADSP-21065L
SHARC DSP Technical Reference. These manuals are reference guides for
hardware and software engineers who want to develop applications using
the ADSP-21065L. These manuals assume that the user has a working
knowledge of the ADSP-21065L’s Super Harvard Architecture.
The ADSP-21065L SHARC DSP User’s Manual describes the architecture
and operation of the ADSP-21065L’s individual components, intercomponent connections and access, off-chip connections and access, and the
processor’s hardware/software interface.
xiv ADSP-21065L SHARC DSP Technical Reference
Preface
The information in this book includes:
•Pin definitions and instructions for connecting the pins to external
devices and peripherals in single- and multiprocessor systems.
•Processor features and instructions for configuring the processor for
specific operation options.
•Internal and external data paths and instructions for moving data
between internal components and between the processor and external devices and peripherals.
•Timing, sequencing, and throughput of control signals and data
accesses.
The ADSP-21065L SHARC DSP Technical Reference provides detailed
technical information on programming the ADSP-21065L. This information includes:
•A description of each instruction in the processor’s instruction set,
supported numeric formats, and the default bit definitions for all of
the processor’s control and status registers.
•A description of the pins and the control and data registers of the
JTAG test access port.
•A list of all vector interrupts and their addresses.
To supplement the information in these manuals, users can attend scheduled workshops sponsored by Analog Devices, Inc. (ADI) and access other
ADI documentation related specifically to this product. For details, see
“Related Documents” on page xviii.
ADSP-21065L SHARC DSP Technical Reference xv
How to Use This Manual
How to Use This Manual
For information on…See…
ALU operationChapter 2, Computation Units; Appendix B,
Compute Operation Reference
Address generationChapter 4, Data Addressing; Chapter 5, Mem-
ory; Chapter 6, DMA
BootingChapter 5, Memory; Chapter 7, System Design
Clock generationChapter 9, Serial Ports; Chapter 11, Pro-
grammable Timers and I/O Ports; Chapter 12,
System Design
an alphabetic prefix (as C-12) reference
information in ADSP-21065L SHARC DSP Techni-cal Reference. Pages with a numeric prefix
(as 5-41) reference information in
ADSP-21065L SHARC DSP User’s Manual.
Related Documents
For information on related products, see the following documents available from Analog Devices, Inc.:
The following conventions apply to all chapters within this manual. Additional conventions that apply to specific chapters only are documented at
the beginning of the chapter in which they appear.
This notation…Denotes…
Letter Gothic
font
ItalicsSpecial terminology; titles of books.
*
,
Code, software or command line options or keywords; input you must enter from the keyboard.
A hint or tip.
A warning or caution.
ADSP-21065L SHARC DSP Technical Reference xix
Conventions of Notation
xx ADSP-21065L SHARC DSP Technical Reference
AINSTRUCTION SET
REFERENCE
Figure A-0.
Table A-0.
Listing A-0.
Appendix A and B describe the processor’s instruction set. This appendix
explains each instruction type, including the assembly language syntax and
opcodes, which result from instruction assembly.
Many instructions’ opcodes contain a COMPUTE field that specifies a compute operation using the ALU, Multiplier, or Shifter. Because a large
number of options are available for computations, their descriptions
appear in Appendix B.
Because data moves between the MR registers and the Register File are
considered Multiplier operations, their descriptions appear in Appendix B.
ADSP-21065L SHARC DSP Technical Reference A-1
Instruction Summary
Instruction Summary
Each instruction is specified in this appendix. The reference page for an
instruction shows the syntax of the instruction, describes its function,
gives one or two assembly-language examples, and identifies fields of its
opcode. The instruction types are organized into four groups:
•“Group I Instructions (Compute & Move)” on page A-28
These instruction specify a compute operation in parallel with one
or two data moves or an index register modify.
•“Group II Instructions (Program Flow Control)” on page A-44
These instructions specify various types of branches, calls, returns,
and loops. Some may also specify a compute operation or a data
move.
•“Group III Instructions (Immediate Move)” on page A-62
These instructions use immediate instruction fields as operators for
addressing.
•“Group IV Instructions (Miscellaneous)” on page A-70
These instructions include bit modify, bit test, no operation, and
idle.
The instructions are referred to by type, ranging from 1 to 23. These types
correspond to the opcodes that the processor recognizes, but are for reference only and have no bearing on programming.
Some instructions have more than one syntactical form; for example,
instruction “Compute/dregÙDM|PM, immediate modify (Type 4)” on
page A-35 has four distinct forms.
A-2 ADSP-21065L SHARC DSP Technical Reference
Instruction Set Reference
Many instructions can be conditional. These instructions are prefaced by
IF COND; for example:
If COND compute, |DM(Ia,Mb)| = ureg;
In a conditional instruction, the execution of the entire instruction is
based on the specified condition.
ADSP-21065L SHARC DSP Technical Reference A-3
Instruction Summary
Compute and Move/Modify Summary
Compute and move/modify instructions are classed as Group I instructions, and they provide math, conditional, memory or register access
services. For a complete description of these instructions, see the noted
pages.
*
For all compute and move/modify instructions, IF
COND is optional.
“Compute/uregÙDM|PM, register modify (Type 3)” on page A-33
IF COND compute, DM(Ia, Mb)= ureg ;
, PM(Ic, Md)
, DM(Mb, Ia)= ureg ;
, PM(Md, Ic)
, ureg =DM(Ia, Mb) ;
PM(Ic, Md) ;
, ureg =DM(Mb, Ia) ;
PM(Md, Ic) ;
A-4 ADSP-21065L SHARC DSP Technical Reference
Instruction Set Reference
“Compute/dregÙDM|PM, immediate modify (Type 4)” on page A-35
IF COND compute, DM(Ia, <data6>) = dreg ;
, PM(Ic, <data6>)
, DM(<data6>, Ia) = dreg ;
, PM(<data6>, Ic)
, dreg =DM(Ia, <data6>) ;
PM(Ic, <data6>) ;
, dreg =DM(<data6>, Ia) ;
PM(<data6>, Ic) ;
“Compute/uregÙureg (Type 5)” on page A-37
IF COND compute, ureg1 = ureg2 ;
“Immediate Shift/dregÙDM|PM (Type 6)” on page A-39
IF COND shiftimm, DM(Ia, Mb) = dreg ;
, PM(Ic, Md)
, dreg =DM(Ia, Mb) ;
PM(Ic, Md) ;
“Compute/modify (Type 7)” on page A-42
IF COND compute, MODIFY(Ia, Mb) ;
(Ic, Md) ;
ADSP-21065L SHARC DSP Technical Reference A-5
Instruction Summary
Program Flow Control Summary
Program flow control instructions are classed as Group II instructions,
and they provide control of program execution flow. For a complete
description of these instructions, see the noted pages.
*
instructions, IF COND is optional.
“Direct Jump|Call (Type 8)” on page A-45
For all program flow control instructions, except type 10
IF COND
JUMP
IF COND
CALL
<addr24>(DB);
(PC, <reladdr24>)(LA)
(CI)
(DB, LA)
(DB, CI)
<addr24>(DB);
(PC, <reladdr24>)
“Indirect Jump|Call / Compute (Type 9)” on page A-48
IF COND
JUMP
(Md, Ic)(DB), compute;
(PC, <reladdr6>)(LA), ELSE compute
(CI)
(DB, LA)
(DB, CI)
IF COND
CALL
(Md, Ic)(DB), compute;
(PC, <reladdr6>), ELSE compute
“Indirect Jump or Compute/dregÙDM (Type 10)” on page A-52
IF COND
Jump
(Md, Ic), Else compute, DM(Ia, Mb) = dreg ;
(PC, <reladdr6>compute, dreg = DM(Ia, Mb) ;
A-6 ADSP-21065L SHARC DSP Technical Reference
Instruction Set Reference
“Return From Subroutine|Interrupt/Compute (Type 11)” on page A-55
IF COND RTS(DB), compute;
(LR), ELSE compute
(DB, LR)
IF COND RTI(DB), compute;
, ELSE compute
“Do Until Counter Expired (Type 12)” on page A-58
LCNTR = <data16>, DO<addr24> UNTIL LCE ;
ureg(<PC, reladdr24>)
“Do Until (Type 13)” on page A-60
DO<addr24>UNTIL termination ;
(PC, <reladdr24>)
ADSP-21065L SHARC DSP Technical Reference A-7
Instruction Summary
Immediate Move Summary
Immediate move instructions are classed as Group III instructions, and
they provide memory and register access services. For a complete description of these instructions, see the noted pages.
“UregÙDM|PM (direct addressing) (Type 14)” on page A-63
DM(<addr32>)
PM(<addr24>)
ureg =DM(<addr32>) ;
= ureg ;
PM(<addr24>)
“UregÙDM|PM (indirect addressing) (Type 15)” on page A-65
DM(<data32>, Ia)
PM(<data24>, Ic)
ureg =DM(<data32>, Ia) ;
= ureg ;
PM(<data24>, Ic) ;
“Immediate dataÖDM|PM (Type 16)” on page A-67
DM(Ia, Mb)
PM(Ic, Md)
= <data32> ;
“Immediate dataÖureg (Type 17)” on page A-69
ureg = <data32> ;
A-8 ADSP-21065L SHARC DSP Technical Reference
Instruction Set Reference
Miscellaneous Instructions Summary
Miscellaneous instructions are classed as Group IV instructions, and they
provide system register, bit manipulation, and low power services. For a
complete description of these instructions, see the noted pages.
“System Register Bit Manipulation (Type 18)” on page A-71
BITSET sreg <data32> ;
CLR
TGL
TST
XOR
“Register Modify/bit-reverse (Type 19)” on page A-73
MODIFY(Ia, <data32>) ;
(Ic, <data24>)
BITREV(Ia, <data32>) ;
(Ic, <data24>)
“Push|Pop Stacks/Flush Cache (Type 20)” on page A-75
The conventions for instruction syntax descriptions appear in Table A-1.
This section also covers other parts of the instruction syntax and opcode
information.
{comment}Brackets enclose comments or remarks that
|option1|
| option2 |
computeALU, Multiplier, Shifter or multifunction oper-
shiftimmShifter immediate operation (see Appendix B,
Data transfer (read/write) direction.
only; assembler is case-insensitive and lowercase is the preferred programming convention)
instruction)
explain code. Ignored by assembler.
List of options between vertical bars (choose
one)
ation (see Appendix B, Compute Operation Refer-
ence)
Compute Operation Reference)
conditionStatus condition (see Table A-2 on page A-13)
terminationLoop termination condition (see Table A-2 on
page A-13)
ADSP-21065L SHARC DSP Technical Reference A-11
Instruction Summary
Table A-1. Instruction set notation (Cont’d)
NotationMeaning
uregUniversal register
sregSystem register
dregData register (Register File): R15-R0 or F15-F0
IaI7-I0 (DAG1 index register)
MbM7-M0 (DAG1 modify register)
IcI15-I8 (DAG2 index register)
MdM15-M8 (DAG2 modify register)
<datan>n-bit immediate data value
<addrn>n-bit immediate address value
<reladdrn>n-bit immediate PC-relative address value
(DB)Delayed branch
(LA)Loop abort (pop loop and PC stacks on branch)
(CI)Clear interrupt
A-12 ADSP-21065L SHARC DSP Technical Reference
Instruction Set Reference
In a conditional instruction, execution of the entire instruction depends
on the specified condition (cond or terminate). Table A-2 lists the codes
that you can use in conditionals.
Table A-2. Condition and termination codes (IF & DO UNTIL)
ConditionDescription
EQALU equal zero
LTALU less than zero
LEALU less than or equal zero
ACALU carry
AVALU overflow
MVMultiplier overflow
MSMultiplier sign
SVShifter overflow
SZShifter zero
FLAG0_INFlag 0 input
FLAG1_INFlag 1 input
FLAG2_INFlag 2 input
FLAG3_INFlag 3 input
TFBit test flag
BMBus master
LCELoop counter expired (DO UNTIL)
ADSP-21065L SHARC DSP Technical Reference A-13
Instruction Summary
Table A-2. Condition and termination codes (IF & DO UNTIL) (Cont’d)
ConditionDescription
NOT LCELoop counter not expired (IF)
NEALU not equal to zero
GEALU greater than or equal zero
GTALU greater than zero
NOT ACNot ALU carry
NOT AVNot ALU overflow
NOT MVNot Multiplier overflow
NOT MSNot Multiplier sign
NOT SVNot Shifter overflow
NOT SZNot Shifter zero
NOT FLAG0_INNot Flag 0 input
NOT FLAG1_INNot Flag 1 input
NOT FLAG2_INNot Flag 2 input
NOT FLAG3_INNot Flag 3 input
NOT TFNot bit test flag
NBMNot bus master
FOREVERAlways false (DO UNTIL)
TRUEAlways true (IF)
A-14 ADSP-21065L SHARC DSP Technical Reference
Instruction Set Reference
Register Types Summary
The processor contains three types of registers: Universal registers, Multiplier registers, and IOP registers. Table A-3 and Table A-4 list the
Universal and Multiplier registers, which are associated with the processor’s core. The IOP registers are associated with the processor’s I/O
processor and are described in Appendix E, Control and Status Registers.
Table A-3. Universal registers (UREG)
TypeSubregistersFunction
Register FileR0–R15Register file locations,
fixed-point
F0–F15Register file locations,
floating-point
Program
Sequencer
Data Address
Generators
PCProgram counter (read-only)
PCSTKTop of PC stack
PCSTKPPC stack pointer
FADDRFetch address (read-only)
DADDRDecode address (read-only)
LADDRLoop termination address,
code; top of loop address stack
CURLCNTRCurrent loop counter; top of
loop count stack
LCNTRLoop count for next nested
counter-controlled loop
I0–I7DAG1 index registers
ADSP-21065L SHARC DSP Technical Reference A-15
Instruction Summary
Table A-3. Universal registers (UREG) (Cont’d)
TypeSubregistersFunction
Data Address M0–M7DAG1 modify registers
GeneratorsL0–L7DAG1 length registers
(Cont’d)B0–B7DAG1 base registers
I8–I15DAG2 index registers
M8– M15DAG2 modify registers
L8–L15DAG2 length registers
B8–B15DAG2 base registers
Bus ExchangePX1PMD-DMD bus exchange 1 (16
bits)
PX2PMD-DMD bus exchange 2 (32
bits)
PX48-bit combination of PX1 and
PX2
System Registers (core)
MODE1Mode control and status
MODE2Mode control and status
IRPTLInterrupt latch
IMASKInterrupt mask
IMASKPInterrupt mask pointer (for
nesting)
ASTATArithmetic status flags, bit
test flag, etc.
A-16 ADSP-21065L SHARC DSP Technical Reference
Instruction Set Reference
Table A-3. Universal registers (UREG) (Cont’d)
TypeSubregistersFunction
System
Registers
(Cont’d) USTAT1User status register 1
STKYSticky arithmetic status
flags, stack status flags,
etc.
USTAT2User status register 2
Table A-4. Multiplier registers
RegistersFunction
MR, MR0–MR2Multiplier results
MRF, MR0F–MR2FMultiplier results, foreground
MRB, MR0B–MR2BMultiplier results, background
ADSP-21065L SHARC DSP Technical Reference A-17
Instruction Summary
Memory Addressing Summary
The processor supports the following types of addressing:
call(pc,10), r0=r6+r3;
do(pc,length) until sz;{'length' is a variable}
Indirect Addressing (using DAG registers):
Postmodify with M register, update I register
(Instruction Types 1, 3, 6, 16)
f5=pm(i9,m12);
dm(i0,m3)=r3, r1=pm(i15,m10);
Premodify with M register, no update
(Instruction Types 3, 9, 10)
r1=pm(m10,i15);
jump(m13,i11);
Postmodify with immediate value, update I register
(Instruction Type 4)
f15=dm(i0,6);
if av r1=pm(i15,0x11);
Premodify with immediate value, no update
(Instruction Types 4, 15)
if av r1=pm(0x11,i15);
dm(127,i5)=laddr;
A-18 ADSP-21065L SHARC DSP Technical Reference
Instruction Set Reference
Opcode Notation
In the processor’s opcodes, some bits are explicitly defined as zeros (0s) or
ones (1s). The values of other bits or fields set various parameters for the
instruction. The processor ignores unspecified bits when it decodes the
instruction, but reserves the bits for future use. Table A-5 lists and defines
the bits, fields, and states of these opcodes.
Table A-5. Opcode acronyms
Bit/FieldDescriptionStates
ALoop abort code
ADDRImmediate address field
AIComputation unit regis-
ter
BBranch type
BOPBit Operation select
codes
0Do not pop loop, PC
stacks on branch
1Pop loop, PC stacks
on branch
0000 MR0F
0001 MR1F
0010 MR2F
0100 MR0B
0101 MR1B
0110 MR2B
0Jump
1Call
000 Set
001 Clear
010 Toggle
100 Test
101 XOR
ADSP-21065L SHARC DSP Technical Reference A-19
Opcode Notation
Table A-5. Opcode acronyms (Cont’d)
Bit/FieldDescriptionStates
COMPUTECompute operation field
(see Appendix B, Com-
pute Operation Reference)
CONDStatus Condition codes
CIClear interrupt code
CUComputation unit select
codes
DATAImmediate data field
DECCounter decrement code
DMDMemory access direction
DMIIndex (I) register num-
bers, DAG1
DMMModify (M) register
numbers, DAG1
0–31
0Do not clear current
interrupt
1Clear current inter-
rupt
00 ALU
01 Multiplier
10 Shifter
0No counter decrement
1Counter decrement
0Read
1Write
0–7
0–7
DREGRegister file locations
EELSE clause code
0–15
0No ELSE clause
1ELSE clause
A-20 ADSP-21065L SHARC DSP Technical Reference
Instruction Set Reference
Table A-5. Opcode acronyms (Cont’d)
Bit/FieldDescriptionStates
FCFlush cache code
GDAG/Memory select
INCCounter increment code
JJump Type
LPOLoop stack pop code
LPULoop stack push code
LRLoop reentry code
NUMInterrupt vector
OPCODEComputation unit
opcodes (see
Appendix B, Compute
Operation Reference)
0No cache flush
1Cache flush
0DAG1 or Data Memory
1DAG2 or Program Mem-
ory
0No counter increment
1Counter increment
0nondelayednondelayed
1Delayed
0No stack pop
1Stack pop
0No stack push
1Stack push
0No loop reentry
1Loop reentry
0 - 7
PMDMemory access direction
PMIIndex (I) register num-
bers, DAG2
ADSP-21065L SHARC DSP Technical Reference A-21
0Read
1Write
8–15
Opcode Notation
Table A-5. Opcode acronyms (Cont’d)
Bit/FieldDescriptionStates
PMMModify (M) register
numbers, DAG2
PPOPC stack pop code
PPUPC stack push code
RELADDRPC-relative address
field
SPOStatus stack pop code
SPUStatus stack push code
SREGSystem Register code
TERMTermination Condition
codes
UUpdate, index (I) reg-
ister
8–15
0No stack pop
1Stack pop
0No stack push
1Stack push
0No stack pop
1Stack pop
0No stack push
1Stack push
0–15 (see “Universal
Register Codes” on
page A-24)
0–31
0Premodify, no update
1Postmodify with
update
UREGUniversal Register code
RA, RM, RN,
RS, RX, RY
Register file locations for compute operands and results
0–256 (see “Universal
Register Codes” on
page A-24)
0–15
A-22 ADSP-21065L SHARC DSP Technical Reference
Instruction Set Reference
Table A-5. Opcode acronyms (Cont’d)
Bit/FieldDescriptionStates
RXAALU x-operand Register
File location for multifunction operations
RXMMultiplier x-operand
Register File location
for multifunction operations
RYAALU y-operand Register
File location for multifunction operations
RYMMultiplier y-operand
Register File location
for multifunction operations
8–11
0–3
12–15
4–7
ADSP-21065L SHARC DSP Technical Reference A-23
Opcode Notation
Universal Register Codes
Table A-6, Table A-7, Table A-8, Table A-9, and Table A-10 in this sec-
tion list the bit codes for registers that appear within opcode fields.
Table A-6. Map 1 registers
RegisterDescription
PCprogram counter
PCSTKtop of PC stack
PCSTKPPC stack pointer
FADDRfetch address
DADDRdecode address
LADDRloop termination address
CURLCNTRcurrent loop counter
LCNTRloop counter
R15–R0Register File locations
I15 –I0DAG1 and DAG2 index registers
M15–M0DAG1 and DAG2 modify registers
L15–L0DAG1 and DAG2 length registers
B15–B0DAG1 and DAG2 base registers
A-24 ADSP-21065L SHARC DSP Technical Reference
Table A-7. Map 1 system registers
RegisterDescription
MODE1mode control 1
MODE2mode control 2
IRPTLinterrupt latch
IMASKinterrupt mask
IMASKPinterrupt mask pointer
ASTATarithmetic status
STKYsticky status
USTAT1user status reg 1
Instruction Set Reference
USTAT2user status reg 2
Table A-8. Map 2 registers
RegisterDescription
PX48-bit PX1 and PX2 combination
PX1bus exchange 1 (16 bits)
PX2bus exchange 2 (32 bits)
ADSP-21065L SHARC DSP Technical Reference A-25
Opcode Notation
Table A-9. Map 1, universal register codes
BitsBits:7654
321000000001001000110100010101100111
0000R0I0M0L0B0FADDRUSTAT1
0001R1I1M1L1B1DADDRUSTAT2
0010R2I2M2L2B2
0011R3I3M3L3B3PC
0100R4I4M4L4B4PCSTK
0101R5I5M5L5B5PCSTKP
0110R6I6M6L6B6LADDR
0111R7I7M7L7B7CURL-
1000R8I8M8L8B8LCNTR
1001R9I9M9L9B9IRPTL
1010R10I10M10L10B10MODE2
1011R11I11M11L11B11MODE1
1100R12I12M12L12B12ASTAT
1101R13I13M13L13B13IMASK
1110R14I14M14L14B14STKY
1111R15I15M15L15B15IMASKP
CNTR
A-26 ADSP-21065L SHARC DSP Technical Reference
Instruction Set Reference
Table A-10. Map 2, universal register codes
Bits:Bits: 7654
321010001001101010111100110111101111
0000
.
.
.
1011PX
1100PX1
1101PX2
.
.
.
1111
ADSP-21065L SHARC DSP Technical Reference A-27
Group I Instructions (Compute & Move)
Group I Instructions (Compute & Move)
•“Compute/dregÙDM/dregÙPM (Type 1)” on page A-30.
Parallel data memory and program memory transfers with Register
File, optional compute operation.
•“Compute (Type 2)” on page A-32.
Compute operation, optional condition.
•“Compute/uregÙDM|PM, register modify (Type 3)” on
page A-33.
Transfer between data or program memory and universal register,
optional condition, optional compute operation.
•“Compute/dregÙDM|PM, immediate modify (Type 4)” on
page A-35.
PC-relative transfer between data or program memory and Register
File, optional condition, optional compute operation.
•“Compute/uregÙureg (Type 5)” on page A-37.
Transfer between two universal registers, optional condition,
optional compute operation.
•“Immediate Shift/dregÙDM|PM (Type 6)” on page A-39.
Immediate shift operation, optional condition, optional transfer
between data or program memory and Register File.
A-28 ADSP-21065L SHARC DSP Technical Reference
Instruction Set Reference
•“Compute/modify (Type 7)” on page A-42.
Index register modify, optional condition, optional compute operation.
*
For all compute and move/modify instructions, IF
COND is optional.
ADSP-21065L SHARC DSP Technical Reference A-29
Group I Instructions (Compute & Move)
Compute/dregÙDM/dregÙPM (Type 1)
Parallel data memory and program memory transfers with Register File,
option compute operation.
Parallel accesses to data memory and program memory from the Register
File. The specified I registers address data memory and program memory.
The I values are postmodified and updated by the specified M registers.
Premodify offset addressing is not supported. For more information on
register restrictions, see Chapter 4, Data Addressing, in ADSP-21065L SHARC DSP User’s Manual.
Examples
R7=BSET R6 BY R0, DM(I0,M3)=R5, PM(I11,M15)=R4;
R8=DM(I4,M1), PM(I12 M12)=R0;
CONDSelects whether the operation specified in the
COMPUTE field is executed. If the COND is true,
the compute is executed. If no condition is specified, COND is TRUE condition, and the compute is
executed.
A-32 ADSP-21065L SHARC DSP Technical Reference
Instruction Set Reference
Compute/uregÙDM|PM, register modify (Type 3)
Transfer operation between data or program memory and universal register, optional condition, optional compute operation.
Syntax
IF COND compute, DM(Ia, Mb)= ureg ;
, PM(Ic, Md)
, DM(Mb, Ia)= ureg ;
, PM(Md, Ic)
, ureg =DM(Ia, Mb) ;
PM(Ic, Md) ;
, ureg =DM(Mb, Ia) ;
PM(Md, Ic) ;
Function
Access between data memory or program memory and a universal register.
The specified I register addresses data memory or program memory. The I
value is either premodified (M, I order) or postmodified (I, M order) by
the specified M register. If it is postmodified, the I register is updated with
the modified value. If a compute operation is specified, it is performed in
parallel with the data access. If a condition is specified, it affects entire
instruction. Note that the UREG may not be from the same DAG (i.e.
DAG1 or DAG2) as Ia/Mb or Ic/Md. For more information on register
restrictions, see Chapter 4, Data Addressing, in ADSP-21065L SHARC DSP User’s Manual.
Examples
R6=R3-R11, DM(I0,M1)=ASTAT;
IF NOT SV F8=CLIP F2 BY F14, PX=PM(I12,M12);
CONDSpecifies the test condition. If no condition is
specified, COND is TRUE, and the instruction is
executed.
DSelects the access type (read or write).
GSelects data memory or program memory.
UREGSpecifies the universal register.
ISpecifies the I register.
MSpecifies the M register.
USelects either premodify without update or post-
modify with update.
COMPUTEDefines a compute operation to be performed in
parallel with the data access; this is a no-operation if no compute operation is specified in the
instruction.
A-34 ADSP-21065L SHARC DSP Technical Reference
Instruction Set Reference
Compute/dregÙDM|PM, immediate modify (Type
4)
PC-relative transfer between data or program memory and Register File,
optional condition, optional compute operation.
Syntax
IF COND compute, DM(Ia, <data6>) = dreg ;
, PM(Ic, <data6>)
, DM(<data6>, Ia)= dreg ;
, PM(<data6>, Ic)
, dreg =DM(Ia, <data6>) ;
PM(Ic, <data6>) ;
, dreg =DM(<data6>, Ia) ;
PM(<data6>, Ic) ;
Function
Access between data memory or program memory and the Register File.
The specified I register addresses data memory or program memory. The I
value is either premodified (data order, I) or postmodified (I, data order)
by the specified immediate data. If it is postmodified, the I register is
updated with the modified value. If a compute operation is specified, it is
performed in parallel with the data access. If a condition is specified, it
affects entire instruction. For more information on register restrictions,
see Chapter 4, Data Addressing, in ADSP-21065L SHARC DSP User’s Manual.
Examples
IF FLAG0_IN F1=F5*F12, F11=PM(I10,40);
R12=R3 AND R1, DM(6,I1)=R6;
CONDSpecifies the test condition. If no condition is
specified, COND is TRUE, and the instruction is
executed.
DSelects the access type (read or write).
GSelects data memory or program memory.
DREGSpecifies the Register File location.
ISpecifies the I register.
DATASpecifies a 6-bit, twos-complement modify value.
USelects either premodify without update or post-
modify with update.
COMPUTEDefines a compute operation to be performed in
parallel with the data access; this is a no-operation if no compute operation is specified in the
instruction.
A-36 ADSP-21065L SHARC DSP Technical Reference
Instruction Set Reference
Compute/uregÙureg (Type 5)
Transfer between two universal registers, optional condition, optional
compute operation.
Syntax
IF COND compute, ureg1 = ureg2 ;
Function
Transfer from one universal register to another. If a compute operation is
specified, it is performed in parallel with the data access. If a condition is
specified, it affects entire instruction.
CONDSpecifies the test condition. If no condition is
specified, COND is TRUE, and the instruction is
executed.
ADSP-21065L SHARC DSP Technical Reference A-37
Group I Instructions (Compute & Move)
BitsDescription
SRC UREGIdentifies the universal register source.
DEST UREGIdentifies the universal register destination.
COMPUTEDefines a compute operation to be performed in
parallel with the data transfer; this is a
no-operation if no compute operation is specified
in the instruction.
A-38 ADSP-21065L SHARC DSP Technical Reference
Instruction Set Reference
Immediate Shift/dregÙDM|PM (Type 6)
Immediate shift operation, optional condition, optional transfer between
data or program memory and Register File.
Syntax
IF COND shiftimm, DM(Ia, Mb) = dreg ;
, PM(Ic, Md)
, dreg =DM(Ia, Mb) ;
PM(Ic, Md) ;
Function
An immediate shift operation is a Shifter operation that takes immediate
data as its y-operand. The immediate data is one 8-bit value or two 6-bit
values, depending on the operation. The x-operand and the result are Register File locations.
If an access to data or program memory from the Register File is specified,
it is performed in parallel with the Shifter operation. The I register
addresses data or program memory. The I value is postmodified by the
specified M register and updated with the modified value. If a condition is
specified, it affects entire instruction.
For more information on register restrictions, see Chapter 4, Data
Addressing, in ADSP-21065L SHARC DSP User’s Manual.
Examples
IF GT R2=R6 LSHIFT BY 30, DM(I4,M4)=R0;
IF NOT SZ R3=FEXT R1 BY 8:4;
CONDSpecifies the test condition. If no condition is
specified, COND is TRUE, and the instruction is
executed.
SHIFTOPSpecifies the Shifter operation.
DATASpecifies an 8-bit immediate shift value. For
Shifter operations requiring two 6-bit values (a
shift value and a length value), the DATAEX field
adds 4 MSBs to the DATA field, creating a 12-bit
immediate value. The six LSBs are the shift value,
and the six MSBs are the length value.
A-40 ADSP-21065L SHARC DSP Technical Reference
Instruction Set Reference
BitsDescription
DSelects the access type (read or write) if a mem-
ory access is specified.
GSelects data memory or program memory.
DREGSpecifies the Register File location.
ISpecifies the I register, which is postmodified
and updated by the M register.
MIdentifies the M register for postmodify.
ADSP-21065L SHARC DSP Technical Reference A-41
Group I Instructions (Compute & Move)
Compute/modify (Type 7)
Index register modify, optional condition, optional compute operation.
Syntax
IF COND compute, MODIFY(Ia, Mb) ;
(Ic, Md) ;
Function
Update of the specified I register by the specified M register. If a compute
operation is specified, it is performed in parallel with the data access. If a
condition is specified, it affects entire instruction. For more information
on register restrictions, see Chapter 4, Data Addressing, in ADSP-21065L SHARC DSP User’s Manual.
Examples
IF NOT FLAG2_IN R4=R6*R12(SUF), MODIFY(I10,M8);
IF NOT LCE MODIFY(I3,M1);
•“Indirect Jump or Compute/dregÙDM (Type 10)” on page A-52.
Indirect (or PC-relative) jump or optional compute operation with
transfer between data memory and Register File.
•“Return From Subroutine|Interrupt/Compute (Type 11)” on page
A-55.
Return from subroutine or interrupt, optional condition, optional
compute operation.
•“Do Until Counter Expired (Type 12)” on page A-58.
Load loop counter, do loop until loop counter expired.
•“Do Until (Type 13)” on page A-60.
Do until termination.
*
A-44 ADSP-21065L SHARC DSP Technical Reference
For all program flow control instructions, except type
10 instructions, IF COND is optional.
Instruction Set Reference
Direct Jump|Call (Type 8)
Direct (or PC-relative) jump/call, optional condition.
Syntax
IF COND
JUMP
IF COND
CALL
<addr24>(DB);
(PC, <reladdr24>)(LA)
(CI)
(DB, LA)
(DB, CI)
<addr24>(DB);
(PC, <reladdr24>)
Function
A jump or call to the specified address or PC-relative address. The PC-relative address is a 24-bit, twos-complement value. If the delayed branch
(DB) modifier is specified, the branch is delayed; otherwise, it is nondelayed. If the loop abort (LA) modifier is specified for a jump, the loop
stacks and PC stack are popped when the jump is executed. Use the (LA)
modifier if the jump transfers program execution outside of a loop. If
there is no loop or the jump address is within the loop, do not use the
(LA) modifier.
The clear interrupt (CI) modifier enables reuse of an interrupt while it is
being serviced. Normally, the processor ignores and does not latch an
interrupt that reoccurs while its service routine is already executing.
Locate the JUMP (CI) instruction within the interrupt service routine.
JUMP (CI) clears the status of the current interrupt without leaving the
interrupt service routine and reduces the interrupt routine to a normal
subroutine. This allows the interrupt to occur again, as a result of a different event or task in the processor system. For details on interrupts, see
ADSP-21065L SHARC DSP Technical Reference A-45
Group II Instructions (Program Flow Control)
Chapter 3, Program Sequencing, in ADSP-21065L SHARC DSP User’s
Manual.
The JUMP (CI) instruction reduces an interrupt service routine to a normal subroutine by clearing the appropriate bit in the interrupt latch
register (IRPTL) and interrupt mask pointer (IMASKP). The processor
then allows the interrupt to occur again.
When returning from a subroutine that a JUMP (CI) instruction has
reduced from an interrupt service routine, your application must use the
(LR) modifier of the RTS instruction if the interrupt occurred during the
last two instructions of a loop. For related information, see “Return From
Subroutine|Interrupt/Compute (Type 11)” on page A-55.
Examples
IF AV JUMP(PC,0x00A4)(LA);
CALL init (DB);{init is a program label}
JUMP (PC,2) (DB,CI);{clear current int. for reuse}
A jump or call to the specified PC-relative address or premodified I register value. The PC-relative address is a 6-bit, twos-complement value. If an
I register is specified, it is modified by the specified M register to generate
the branch address. The I register is not affected by the modify operation.
The jump or call is executed if a condition is specified and is true. If a
compute operation is specified without the ELSE, it is performed in parallel with the jump or call. If a compute operation is specified with the
ELSE, it is performed only if the condition specified is false. Note that a
condition must be specified if an ELSE compute clause is specified.
If the delayed branch (DB) modifier is specified, the jump or call is
delayed; otherwise, it is nondelayed. If the loop abort (LA) modifier is
specified for a jump, the loop stacks and PC stack are popped when the
jump is executed. You should use the (LA) modifier if the jump will transfer program execution outside of a loop. If there is no loop, or if the jump
address is within the loop, you should not use the (LA) modifier.
A-48 ADSP-21065L SHARC DSP Technical Reference
Instruction Set Reference
The clear interrupt (CI) modifier allows the reuse of an interrupt while it
is being serviced. Normally the processor ignores and does not latch an
interrupt that reoccurs while its service routine is already executing.
Locate the JUMP (CI) instruction within the interrupt service routine.
JUMP (CI) clears the status of the current interrupt without leaving the
interrupt service routine and reduces the interrupt routine to a normal
subroutine. This allows the interrupt to occur again, as a result of a different event. For more information on interrupts, see Chapter 3, Program
Sequencing, in ADSP-21065L SHARC DSP User’s Manual.
The JUMP (CI) instruction reduces an interrupt service routine to a normal subroutine by clearing the appropriate bit in the interrupt latch
register (IRPTL) and interrupt mask pointer (IMASKP). The processor
then permits the interrupt to occur again.
When returning from a subroutine that a JUMP (CI) instruction has
reduced from an interrupt service routine, your application must use the
(LR) modifier of the RTS instruction if the interrupt occurred during the
last two instructions of a loop. (See “Return From Subroutine|Inter-
rupt/Compute (Type 11)” on page A-55).
For more information on indirect branches, see Chapter 4, Data Addressing, in ADSP-21065L SHARC DSP User’s Manual.
Examples
JUMP(M8,I12), R6=R6-1;
IF EQ CALL(PC,17)(DB) , ELSE R6=R6-1;
Conditional jump to the specified PC-relative address or premodified I
register value, or optional compute operation in parallel with a transfer
between data memory and the Register File. In this instruction, the IF
condition and ELSE keyword are not optional and must be used. If the
specified condition is true, the jump is executed. If the specified condition
is false, the compute operation and data memory transfer are performed in
parallel. Only the compute operation is optional in this instruction.
The PC-relative address for the jump is a 6-bit, twos-complement value. If
an I register is specified (Ic), it is modified by the specified M register
(Md) to generate the branch address. The I register is not affected by the
modify operation. Note that the delay branch (DB), loop abort (LA), and
clear interrupt (CI) modifiers are not available for this jump instruction.
Type 10 instructions require IF COND.
(PC, <reladdr6>compute, dreg = DM(Ia, Mb) ;
For the data memory access, the I register (Ia) provides the address. The I
register value is postmodified by the specified M register and is updated
with the modified value. Premodify addressing is not available for this
data memory access.
A-52 ADSP-21065L SHARC DSP Technical Reference
Instruction Set Reference
For more information on indirect branches, see Chapter 4, Data Addressing, in ADSP-21065L SHARC DSP User’s Manual.
Examples
IF TF JUMP(M8, I8),
ELSE R6=DM(I6, M1);
IF NE JUMP(PC, 0x20),
ELSE F12=FLOAT R10 BY R3, R6=DM(I5, M0);
PMISpecifies the I register for indirect branches.
The I register is premodified, but not updated by
the M register.
PMMSpecifies the M register for premodifies.
DSelects the data memory access type (read or
write).
DREGSpecifies the Register File location.
DMISpecifies the I register which is postmodified and
updated by the M register.
DMMIdentifies the M register for postmodifies.
COMPUTEDefines a compute operation to be performed in
parallel with the data access; this is a NOP if no
compute operation is specified in the instruction.
RELADDRHolds a 6-bit, twos-complement value that is added
to the current PC value to generate the branch
address.
A-54 ADSP-21065L SHARC DSP Technical Reference
Instruction Set Reference
Return From Subroutine|Interrupt/Compute
(Type 11)
Indirect (or PC-relative) jump or optional compute operation with transfer between data memory and Register File.
Syntax
IF COND RTS(DB), compute;
(LR), ELSE compute
(DB, LR)
IF COND RTI(DB), compute;
, ELSE compute
Function
A return from a subroutine (RTS) or return from an interrupt service routine (RTI). If the delayed branch (DB) modifier is specified, the return is
delayed; otherwise, it is nondelayed.
A return causes the processor to branch to the address stored at the top of
the PC stack. The difference between RTS and RTI is that the RTI
instruction not only pops the return address off the PC stack, but also 1)
pops status stack if the ASTAT and MODE1 status registers have been
pushed (if the interrupt was IRQ
, the timer interrupt, or the VIRPT
2-0
vector interrupt), and 2) clears the appropriate bit in the interrupt latch
register (IRPTL) and the interrupt mask pointer (IMASKP).
The return is executed if a condition is specified and is true. If a compute
operation is specified without the ELSE, it is performed in parallel with
the return. If a compute operation is specified with the ELSE, it is performed only if the condition is false. Note that a condition must be
specified if an ELSE compute clause is specified.
If a nondelayed call is used as one of the last three instructions of a loop,
the loop reentry (LR) modifier must be used with the RTS instruction
ADSP-21065L SHARC DSP Technical Reference A-55
Group II Instructions (Program Flow Control)
that returns from the subroutine. The (LR) modifier assures proper
reentry into the loop. In counter-based loops, for example, the
termination condition is checked by decrementing the current loop
counter (CURLCNTR) during execution of the instruction two locations
before the end of the loop. The RTS (LR) instruction prevents the loop
counter from being decremented again (i.e. twice for the same loop
iteration).
The (LR) modifier of RTS must also be used when returning from a subroutine which has been reduced from an interrupt service routine with a
JUMP (CI) instruction (in case the interrupt occurred during the last two
instructions of a loop). For a description of JUMP (CI), refer to “Direct
Jump|Call (Type 8)” on page A-45 or “Indirect Jump|Call / Compute
(Type 9)” on page A-48.
Examples
RTI, R6=R5 XOR R1;
IF NOT GT RTS(DB);
IF SZ RTS, ELSE R0=LSHIFT R1 BY R15;
CONDSpecifies the test condition. If no condition is
specified, COND is true, and the return is executed.
JDetermines whether the return is delayed or nonde-
layed.
ESpecifies whether or not an ELSE clause is used.
COMPUTEDefines the compute operation to be performed;
this is a NOP if no compute operation is specified.
LRSpecifies whether or not the loop reentry modifier
is specified.
ADSP-21065L SHARC DSP Technical Reference A-57
Group II Instructions (Program Flow Control)
Do Until Counter Expired (Type 12)
Load loop counter, do loop until loop counter expired.
Syntax
LCNTR = <data16>, DO<addr24> UNTIL LCE ;
ureg(<PC, reladdr24>)
Function
Sets up a counter-based program loop. The loop counter LCNTR is
loaded with 16-bit immediate data or from a universal register. The loop
start address is pushed on the PC stack. The loop end address and the
LCE termination condition are pushed on the loop address stack. The end
address can be either a label for an absolute 24-bit program memory
address, or a PC-relative 24-bit twos-complement address. The LCNTR is
pushed on the loop counter stack and becomes the CURLCNTR value.
The loop executes until the CURLCNTR reaches zero.
Examples
LCNTR=100, DO fmax UNTIL LCE;{fmax is a program label}
LCNTR=R12, DO (PC,16) UNTIL LCE;
RELADDRSpecifies the end-of-loop address relative to the
DO LOOP instruction address. The Assembler also
accepts an absolute address and converts the absolute address to the equivalent relative address
for coding.
DATASpecifies a 16-bit value to load into the loop
counter (LCNTR) for an immediate load.
UREGSpecifies a register containing a 16-bit value to
load into the loop counter (LCNTR) for a load from
an universal register.
ADSP-21065L SHARC DSP Technical Reference A-59
Group II Instructions (Program Flow Control)
Do Until (Type 13)
Do until termination.
Syntax
DO<addr24>UNTIL termination ;
(PC,
<reladdr24>)
Function
Sets up a condition-based program loop. The loop start address is pushed
on the PC stack. The loop end address and the termination condition are
pushed on the loop stack. The end address can be either a label for an
absolute 24-bit program memory address or a PC-relative, 24-bit
twos-complement address. The loop executes until the termination condition tests true.
Examples
DO end UNTIL FLAG1_IN;{end is a program label}
DO (PC,7) UNTIL AC;
RELADDRSpecifies the end-of-loop address relative to the
DO LOOP instruction address. The Assembler accepts
an absolute address as well and converts the absolute address to the equivalent relative address
for coding.
TERMSpecifies the termination condition.
ADSP-21065L SHARC DSP Technical Reference A-61
Group III Instructions (Immediate Move)
Group III Instructions (Immediate Move)
•“UregÙDM|PM (direct addressing) (Type 14)” on page A-63.
Transfer between data or program memory and universal register,
direct addressing, immediate address.
•“UregÙDM|PM (indirect addressing) (Type 15)” on page A-65.
Transfer between data or program memory and universal register,
indirect addressing, immediate modifier.
•“Immediate dataÖDM|PM (Type 16)” on page A-67.
Immediate data write to data or program memory.
•“Immediate dataÖureg (Type 17)” on page A-69.
Immediate data write to universal register.
A-62 ADSP-21065L SHARC DSP Technical Reference
Instruction Set Reference
UregÙDM|PM (direct addressing) (Type 14)
Transfer between data or program memory and universal register, direct
addressing, immediate address.
Syntax
DM(<addr32>) = ureg ;
PM(<addr24>)
ureg =DM(<addr32>) ;
PM(<addr24>)
Function
Access between data memory or program memory and a universal register,
with direct addressing. The entire data memory or program memory
address is specified in the instruction. Data memory addresses are 32 bits
wide (0 to 232–1). Program memory addresses are 24 bits wide
(0 to 224–1).
Examples
DM(temp)=MODE1;{temp is a program label}
DMWAIT=PM(0x489060);
Transfer between data or program memory and universal register, indirect
addressing, immediate modifier.
Syntax
DM(<data32>, Ia)= ureg ;
PM(<data24>, Ic)
ureg =DM(<data32>, Ia) ;
PM(<data24>, Ic) ;
Function
Access between data memory or program memory and a universal register,
with indirect addressing using I registers. The I register is premodified
with an immediate value specified in the instruction. The I register is not
updated. Data memory address modifiers are 32 bits wide (0 to 232–1).
Program memory address modifiers are 24 bits wide (0 to 224–1). The
ureg may not be from the same DAG (that is, DAG1 or DAG2) as Ia/Mb
or Ic/Md. For more information on register restrictions, see Chapter 4,
Data Addressing, in ADSP-21065L SHARC DSP User’s Manual.
Examples
DM(24,I5)=TCOUNT;
USTAT1=PM(offs,I13);{"offs" is a defined constant}
DATASpecifies the immediate modify value for the I
register.
A-66 ADSP-21065L SHARC DSP Technical Reference
Instruction Set Reference
Immediate dataÖDM|PM (Type 16)
Immediate data write to data or program memory.
Syntax
DM(Ia, Mb)= <data32> ;
PM(Ic, Md)
Function
A write of 32-bit immediate data to data or program memory, with indirect addressing. The data is placed in the most significant 32 bits of the
40-bit memory word. The least significant 8 bits are loaded with 0s. The I
register is postmodified and updated by the specified M register. The ureg
may not be from the same DAG (that is, DAG1 or DAG2) as Ia/Mb or
Ic/Md. For more information on register restrictions, see Chapter 4, Data
Addressing, in ADSP-21065L SHARC DSP User’s Manual.
Examples
DM(I4,M0)=19304;
PM(I14,M11)=count;{count is user-defined constant}
A write of 32-bit immediate data to a universal register. If the register is
40 bits wide, the data is placed in the most significant 32 bits, and the
least significant 8 bits are loaded with 0s.
Examples
IMASK=0xFFFC0060;
M15=mod1;{mod1 is user-defined constant}
DATASpecifies the immediate modify value for the I
register.
ADSP-21065L SHARC DSP Technical Reference A-69
Group IV Instructions (Miscellaneous)
Group IV Instructions (Miscellaneous)
•“System Register Bit Manipulation (Type 18)” on page A-71.
System register bit manipulation.
•“Register Modify/bit-reverse (Type 19)” on page A-73.
Immediate I register modify, with or without bit-reverse.
•“Push|Pop Stacks/Flush Cache (Type 20)” on page A-75.
Push or Pop of loop and/or status stacks.
•“Nop (Type 21)” on page A-77.
No Operation (NOP).
•“Idle (Type 22)” on page A-78.
Idle.
•“Idle16 (Type 23)” on page A-79.
Idle16.
•“Cjump/Rframe (Type 24)” on page A-81.
CJUMP/RFRAME (Compiler-generated instruction).
A-70 ADSP-21065L SHARC DSP Technical Reference
Instruction Set Reference
System Register Bit Manipulation (Type 18)
System register bit manipulation.
Syntax
BITSET sreg <data32> ;
CLR
TGL
TST
XOR
Function
A bit manipulation operation on a system register. This instruction can
set, clear, toggle or test specified bits, or compare (XOR) the system register with a specified data value. In the first four operations, the immediate
data value is a mask. The set operation sets all the bits in the specified system register that are also set in the specified data value. The clear
operation clears all the bits that are set in the data value. The toggle operation toggles all the bits that are set in the data value. The test operation
sets the bit test flag (BTF in ASTAT) if all the bits that are set in the data
value are also set in the system register. The XOR operation sets the bit
test flag (BTF in ASTAT) if the system register value is the same as the
data value. For more information on Shifter operations, see Appendix B,
Compute Operation Reference. For more information on system registers,
see Appendix E, Control and Status Registers.
Examples
BIT SET MODE2 0x00000070;
BIT TST ASTAT 0x00002000;
Immediate I register modify, with or without bit-reverse.
Syntax
MODIFY(Ia, <data32>) ;
(Ic, <data24>)
BITREV(Ia, <data32>) ;
(Ic, <data24>)
Function
Modifies and updates the specified I register by an immediate 32-bit
(DAG1) or 24-bit (DAG2) data value. If the address is to be bit-reversed,
you must specify a DAG1 register (I0-I7) or DAG2 register (I8-I15), and
the modified value is bit-reversed before being written back to the I register. No address is output in either case. For more information on register
restrictions, see Chapter 4, Data Addressing, in ADSP-21065L SHARC DSP User’s Manual.
Examples
MODIFY (I4,304);
BITREV (I7,space);{space is a defined constant}
Pushes or pops the loop address and loop counter stacks, the status stack,
and/or the PC stack, and/or clear the instruction cache. Any of these
options may be combined in a single instruction.
Flushing the instruction cache invalidates all entries in the cache, with no
latency—the cache is cleared at the end of the cycle.
Executes a NOP and puts the processor in a low power state. The processor remains in the low power state until an interrupt occurs. On return
from the interrupt, execution continues at the instruction following the
IDLE instruction.
This instruction executes a NOP and puts the processor in a low power
state until an external interrupt (IRQ
vector interrupt occurs.
IDLE16 is a lower power version of the IDLE instruction. Like the IDLE
instruction, IDLE16 halts the processor, but the internal clock continues
to run at 1/16th the rate of CLKIN. All internal memory transfers require
an extra fifteen cycles. The serial clocks and frame syncs (if the processor is
source) are divided down by a factor of sixteen during IDLE16.
The processor remains in the low power state until an interrupt occurs.
To exit IDLE16, your application software can:
After returning from the interrupt, execution continues at the instruction
following the IDLE16 instruction.
The processor does not support this instruction during DMA
transfers, host accesses, or multiprocessing.
), a DMA interrupt, or a VIRPT
2-0
•Assert the external IRQ
•Generate a timer interrupt.
x pin.
ADSP-21065L SHARC DSP Technical Reference A-79
Group IV Instructions (Miscellaneous)
During IDLE16, the processor does not support:
•Host accesses
Make sure your application software does not assert HBR.
•Multiprocessor bus arbitration (synchronous accesses)