DSP INSTRUCTION SET AND OPCODES
ALU FUNCTIONS | op= | 000 | MULT FUNCTIONS | op= | 100 | |||||||||||||
2-operand | func(4) = 0 | |||||||||||||||||
op | func | aca | ra | rb | ||||||||||||||
op | func | aca | acb | MULT | 001 | 00100 | xx | xx | xx | -- | ||||||||
ADD | 0 | 000 | 00000 | xx | xx | ---- | MULTI | 001 | 10100 | xx | xx | NNNN | ||||||
SUB | 1 | 000 | 00001 | xx | xx | ---- | SQR | 001 | 00101 | xx | xx | -- | -- | |||||
AND | 2 | 000 | 00010 | xx | xx | ---- | MAC | 001 | 00000 | xx | xx | xx | -- | |||||
OR | 3 | 000 | 00011 | xx | xx | ---- | ||||||||||||
XOR | 4 | 000 | 00100 | xx | xx | ---- | ||||||||||||
CMP | 5 | 000 | 00101 | xx | xx | ---- | ||||||||||||
SHIFT FUNCTIONS | op= | 010 | ||||||||||||||||
1-operand | sh.op(3) | = 0 | ||||||||||||||||
immediate | func(4) = 1 | 1-operand | shift | func= | 11111 | |||||||||||||
op | func | aca | sh.op. | |||||||||||||||
op | func | aca | #N | ASL | 010 | 11111 | xx | -- | 0000 | |||||||||
ADDI | 000 | 10000 | xx | NNNNNN | ASR | 010 | 11111 | xx | -- | 0001 | ||||||||
SUBI | 000 | 10001 | xx | NNNNNN | LSR | 010 | 11111 | xx | -- | 0010 | ||||||||
ANDI | 000 | 10010 | xx | NNNNNN | ROL | 010 | 11111 | xx | -- | 0011 | ||||||||
ORI | 000 | 10011 | xx | NNNNNN | ROR | 010 | 11111 | xx | -- | 0100 | ||||||||
XORI | 000 | 10100 | xx | NNNNNN | RND | 010 | 11111 | xx | -- | 0101 | ||||||||
TNK | 010 | 11111 | xx | -- | 0110 | |||||||||||||
1-operand | ||||||||||||||||||
arithametic | shift to | mem | sh.op(3) | = 1 | ||||||||||||||
op | func | aca | don't care | op | func | aca | sh.op. | disp | ||||||||||
NOT | 6 | 000 | 10110 | xx | ------ | RNDA | 010 | ----- | xx | -- | 1100 | 16 | ||||||
INC | 7 | 000 | 10111 | xx | ------ | TNKA | 010 | ----- | xx | -- | 1010 | 16 | ||||||
DEC | 8 | 000 | 11000 | xx | ------ | LIMA | 010 | ----- | xx | -- | 1000 | 16 | ||||||
CLR | 9 | 000 | 11001 | xx | ------ | RNDF | 010 | ----- | xx | -- | 1101 | 16 | ||||||
PASS | F | 000 | 11111 | xx | ------ | TNKF | 010 | ----- | xx | -- | 1011 | 16 | ||||||
NEG | A | 000 | 11010 | xx | ------ | LIMF | 010 | ----- | xx | -- | 1001 | 16 | ||||||
ABS | B | 000 | 11011 | xx | ------ | |||||||||||||
shift with | ALU | |||||||||||||||||
op | func | aca | sh.op. | |||||||||||||||
ASL | 010 | ALU# | xx | -- | 0000 | |||||||||||||
ASR | 010 | ALU# | xx | -- | 0001 | |||||||||||||
LSR | 010 | ALU# | xx | -- | 0010 | |||||||||||||
SPECIAL FUNCTIONS | op= | 111 | ROL | 010 | ALU# | xx | -- | 0011 | ||||||||||
ROR | 010 | ALU# | xx | -- | 0100 | |||||||||||||
0-operation | RND | 010 | ALU# | xx | -- | 0101 | ||||||||||||
op | func | TNK | 010 | ALU# | xx | -- | 0110 | |||||||||||
NOP | 111 | 00000 | ||||||||||||||||
STOP | 111 | 11111 | ALU com. | ALU# | ||||||||||||||
SETC | 111 | 10001 | ADD | 00000 | 0 | |||||||||||||
CLRC | 111 | 00001 | SUB | 00001 | 1 | |||||||||||||
SETN | 111 | 10010 | AND | 00010 | 2 | |||||||||||||
CLRN | 111 | 00010 | OR | 00011 | 3 | |||||||||||||
SETZ | 111 | 10100 | XOR | 00100 | 4 | |||||||||||||
CLRZ | 111 | 00100 | NOT | 00110 | 6 | |||||||||||||
RETN | 111 | 01111 | INC | 00111 | 7 | |||||||||||||
DEC | 01000 | 8 | ||||||||||||||||
CLR | 01001 | 9 | ||||||||||||||||
BRANCH FUNCTIONS | op =011 | |||||||||||||||||
use like ASL 2,… | ||||||||||||||||||
normal | func(43) | =00 | act like ASL and AND | |||||||||||||||
op | func | don't care | disp | |||||||||||||||
BR | 011 | 00000 | -------- | 16 | ||||||||||||||
BEQ | 011 | 00001 | -------- | 16 | ||||||||||||||
BNE | 011 | 00010 | -------- | 16 | ||||||||||||||
BLT | 011 | 00011 | -------- | 16 | ||||||||||||||
BGT | 011 | 00100 | -------- | 16 | ||||||||||||||
subroutine | func(43) | =01 | ||||||||||||||||
op | func | don't care | disp | LOAD FUNCTIONS | op = | 100 | ||||||||||||
CALL | 011 | 01000 | -------- | 16 | ||||||||||||||
op | func | aca | ra | imm | disp | |||||||||||||
special | func(4) | =1 | LD | 100 | 10001 | -- | xx | ---- | 16 | |||||||||
op | func | don't care | disp | LDI | 100 | 00010 | -- | xx | NNNN | |||||||||
BBS | 011 | 10000 | -------- | 16 | LDA | 100 | 00100 | xx | xx | ---- | ||||||||
BBC | 011 | 10001 | -------- | 16 | LDD | 100 | 01000 | -- | xx | rb | -- | |||||||
RPT | 011 | 11111 | -------- | 16 | ||||||||||||||
ALU FUNCTIONS | op= | 000 | MULT FUNCTIONS | op= | 100 | |||||||||||||
2-operand | func(4) = 0 | |||||||||||||||||
op | func | aca | ra | rb | ||||||||||||||
op | func | aca | acb | MULT | 001 | 00100 | xx | xx | xx | -- | ||||||||
ADD | 0 | 000 | 00000 | xx | xx | ---- | MULTI | 001 | 10100 | xx | xx | NNNN | ||||||
SUB | 1 | 000 | 00001 | xx | xx | ---- | SQR | 001 | 00101 | xx | xx | -- | -- | |||||
AND | 2 | 000 | 00010 | xx | xx | ---- | MAC | 001 | 00000 | xx | xx | xx | -- | |||||
OR | 3 | 000 | 00011 | xx | xx | ---- | ||||||||||||
XOR | 4 | 000 | 00100 | xx | xx | ---- | ||||||||||||
CMP | 5 | 000 | 00101 | xx | xx | ---- | ||||||||||||
SHIFT FUNCTIONS | op= | 010 | ||||||||||||||||
1-operand | sh.op(3) | = 0 | ||||||||||||||||
immediate | func(4) = 1 | 1-operand | shift | func= | 11111 | |||||||||||||
op | func | aca | sh.op. | |||||||||||||||
op | func | aca | #N | ASL | 010 | 11111 | xx | -- | 0000 | |||||||||
ADDI | 000 | 10000 | xx | NNNNNN | ASR | 010 | 11111 | xx | -- | 0001 | ||||||||
SUBI | 000 | 10001 | xx | NNNNNN | LSR | 010 | 11111 | xx | -- | 0010 | ||||||||
ANDI | 000 | 10010 | xx | NNNNNN | ROL | 010 | 11111 | xx | -- | 0011 | ||||||||
ORI | 000 | 10011 | xx | NNNNNN | ROR | 010 | 11111 | xx | -- | 0100 | ||||||||
XORI | 000 | 10100 | xx | NNNNNN | RND | 010 | 11111 | xx | -- | 0101 | ||||||||
TNK | 010 | 11111 | xx | -- | 0110 | |||||||||||||
1-operand | ||||||||||||||||||
arithametic | shift to | mem | sh.op(3) | = 1 | ||||||||||||||
op | func | aca | don't care | op | func | aca | sh.op. | disp | ||||||||||
NOT | 6 | 000 | 10110 | xx | ------ | RNDA | 010 | ----- | xx | -- | 1100 | 16 | ||||||
INC | 7 | 000 | 10111 | xx | ------ | TNKA | 010 | ----- | xx | -- | 1010 | 16 | ||||||
DEC | 8 | 000 | 11000 | xx | ------ | LIMA | 010 | ----- | xx | -- | 1000 | 16 | ||||||
CLR | 9 | 000 | 11001 | xx | ------ | RNDF | 010 | ----- | xx | -- | 1101 | 16 | ||||||
PASS | F | 000 | 11111 | xx | ------ | TNKF | 010 | ----- | xx | -- | 1011 | 16 | ||||||
NEG | A | 000 | 11010 | xx | ------ | LIMF | 010 | ----- | xx | -- | 1001 | 16 | ||||||
ABS | B | 000 | 11011 | xx | ------ | |||||||||||||
shift with | ALU | |||||||||||||||||
op | func | aca | sh.op. | |||||||||||||||
ASL | 010 | ALU# | xx | -- | 0000 | |||||||||||||
ASR | 010 | ALU# | xx | -- | 0001 | |||||||||||||
LSR | 010 | ALU# | xx | -- | 0010 | |||||||||||||
SPECIAL FUNCTIONS | op= | 111 | ROL | 010 | ALU# | xx | -- | 0011 | ||||||||||
ROR | 010 | ALU# | xx | -- | 0100 | |||||||||||||
0-operation | RND | 010 | ALU# | xx | -- | 0101 | ||||||||||||
op | func | TNK | 010 | ALU# | xx | -- | 0110 | |||||||||||
NOP | 111 | 00000 | ||||||||||||||||
STOP | 111 | 11111 | ALU com. | ALU# | ||||||||||||||
SETC | 111 | 10001 | ADD | 00000 | 0 | |||||||||||||
CLRC | 111 | 00001 | SUB | 00001 | 1 | |||||||||||||
SETN | 111 | 10010 | AND | 00010 | 2 | |||||||||||||
CLRN | 111 | 00010 | OR | 00011 | 3 | |||||||||||||
SETZ | 111 | 10100 | XOR | 00100 | 4 | |||||||||||||
CLRZ | 111 | 00100 | NOT | 00110 | 6 | |||||||||||||
RETN | 111 | 01111 | INC | 00111 | 7 | |||||||||||||
DEC | 01000 | 8 | ||||||||||||||||
CLR | 01001 | 9 | ||||||||||||||||
BRANCH FUNCTIONS | op =011 | |||||||||||||||||
use like ASL 2,… | ||||||||||||||||||
normal | func(43) | =00 | act like ASL and AND | |||||||||||||||
op | func | don't care | disp | |||||||||||||||
BR | 011 | 00000 | -------- | 16 | ||||||||||||||
BEQ | 011 | 00001 | -------- | 16 | ||||||||||||||
BNE | 011 | 00010 | -------- | 16 | ||||||||||||||
BLT | 011 | 00011 | -------- | 16 | ||||||||||||||
BGT | 011 | 00100 | -------- | 16 | ||||||||||||||
subroutine | func(43) | =01 | ||||||||||||||||
op | func | don't care | disp | LOAD FUNCTIONS | op = | 100 | ||||||||||||
CALL | 011 | 01000 | -------- | 16 | ||||||||||||||
op | func | aca | ra | imm | disp | |||||||||||||
special | func(4) | =1 | LD | 100 | 10001 | -- | xx | ---- | 16 | |||||||||
op | func | don't care | disp | LDI | 100 | 00010 | -- | xx | NNNN | |||||||||
BBS | 011 | 10000 | -------- | 16 | LDA | 100 | 00100 | xx | xx | ---- | ||||||||
BBC | 011 | 10001 | -------- | 16 | LDD | 100 | 01000 | -- | xx | rb | -- | |||||||
RPT | 011 | 11111 | -------- | 16 | ||||||||||||||
ALU FUNCTIONS | op= | 000 | |||||
2-operand | func(4) = 0 | ||||||
op | func | aca | acb | ||||
ADD | 0 | 000 | 00000 | xx | xx | ---- | |
SUB | 1 | 000 | 00001 | xx | xx | ---- | |
AND | 2 | 000 | 00010 | xx | xx | ---- | |
OR | 3 | 000 | 00011 | xx | xx | ---- | |
XOR | 4 | 000 | 00100 | xx | xx | ---- | |
CMP | 5 | 000 | 00101 | xx | xx | ---- | |
1-operand | |||||||
immediate | func(4) = 1 | ||||||
op | func | aca | #N | ||||
ADDI | 000 | 10000 | xx | NNNNNN | |||
SUBI | 000 | 10001 | xx | NNNNNN | |||
ANDI | 000 | 10010 | xx | NNNNNN | |||
ORI | 000 | 10011 | xx | NNNNNN | |||
XORI | 000 | 10100 | xx | NNNNNN | |||
1-operand | |||||||
arithametic | |||||||
op | func | aca | don't care | ||||
NOT | 6 | 000 | 10110 | xx | ------ | ||
INC | 7 | 000 | 10111 | xx | ------ | ||
DEC | 8 | 000 | 11000 | xx | ------ | ||
CLR | 9 | 000 | 11001 | xx | ------ | ||
PASS | F | 000 | 11111 | xx | ------ | ||
NEG | A | 000 | 11010 | xx | ------ | ||
ABS | B | 000 | 11011 | xx | ------ | ||