MPC563XM Reference Manual, Rev. 1
880
Freescale Semiconductor
Preliminary—Subject to Change Without Notice
This operation is independent of B-source. Instruction fields T4BBS, BINV and CINV are ignored in this
operation. The Absolute Value operation size is the minor between A-source size and Destination size.
23.4.8.3
MAC and Divide Unit (MDU)
MDU is an autonomous resource in the microengine which can carry out sequential multiply,
multiply-accumulate, fractional multiplication and divide operations, selected through the
microinstruction fields ALUOP or ALUOPI. The unit supports signed and unsigned multiply and
fractional multiplication of any combination of 8, 16 or 24 bit operands
1
, and also signed and unsigned
24-bit multiply-accumulate. Divide operation is unsigned, and both operands are always 24-bit wide.
Depending on the size of operands and the type of operation, MDU can take more than one microcycle to
execute the operation, but microengine continues to execute microinstructions in parallel. When the
microcode issues an END command, any MDU executing operation terminate immediately and is left
incomplete. When selecting an operation that uses MDU, the result is always placed in MACH and MACL
registers, and the register selected as destination does not have its value changed (
“Selecting Sources and Destination
”). During calculations, MACH and MACL holds temporary values
and should not be written, otherwise the result is unpredictable. One must not start an MDU operation
while MDU is already busy: the result is unpredictable for both the ongoing operation and the started one.
MDU Operations update its own set of 5 flags, described in
Section 23.4.8.3.10, “MDU Flags
operations never update C, N, V and Z flags. CIN and BINV microinstruction fields affect MDU
operations according to
Table 23-50. ALU Flags in Absolute Value operation
operation
size
V, N
1
1
V, N can be 1 on 8- and 16-bit Absolute Value, because the operand sign
is always taken from bit 23. V, N can also be 1 in 23-bit Absolute Value
(or 8-bit and 16-bit with sign extension), if the operand is 0x800000
(0x80, 0x8000).
C
Z
8
alu_output[[7]
AS[23]
alu_output[7:0] == 0
16
alu_output[15]
alu_output[15:0] == 0
23
alu_output[23]
alu_output[23:0] == 0
1.
There is no distinct selection of 24-bit fractional multiplication, for it works exactly as a 24-bit ordinary multiplication.
Table 23-51. CIN and BINV with MDU Operations
B-source
operand
BINV
CIN
Op. Performed
signed
1
1
AS mdu_op BS
0
0
AS mdu_op (-BS)
1
0
reserved
0
1
reserved