Datasheet
3-4 MCF5407 User’s Manual
Overview
The need to move large amounts of data quickly can limit throughput in DSP engines.
However, data can be moved efficiently by using the MOVEM instruction, which
automatically generates line-sized burst references and is ideal for filling registers quickly
with input data, filter coefficients, and output data. Loading an operand from memory into
a register during a MAC operation makes some DSP operations, especially filtering and
convolution, more manageable.
The MACSR has a 4-bit operational mode field and three condition flags. The operational
mode bits control the overflow/saturation mode, whether operands are signed or unsigned,
whether operands are treated as integers or fractions, and how rounding is performed.
Negative, zero and overflow flags are also provided.
The three program-visible MAC registers, a 32-bit accumulator (ACC), the MAC mask
register (MASK), and MACSR, are described in Section 3.1.0.1, “MAC Programming
Model.”
3.1.0.3 MAC Instruction Set Summary
The MAC unit supports the integer multiply operations defined by the baseline ColdFire
architecture, as well as the new multiply-accumulate instructions. Table 3-1 summarizes
the MAC unit instruction set.
3.1.0.4 Data Representation
The MAC unit supports three basic operand types:
• Two’s complement signed integer: In this format, an N-bit operand represents a
number within the range -2
(N-1)
< operand < 2
(N-1)
- 1. The binary point is to the right
of the least significant bit.
Table 3-1. MAC Instruction Summary
Instruction Mnemonic Description
Multiply Signed MULS <ea>y,Dx Multiplies two signed operands yielding a signed result
Multiply Unsigned MULU <ea>y,Dx Multiplies two unsigned operands yielding an unsigned result
Multiply Accumulate MAC Ry,RxSF
MSAC Ry,RxSF
Multiplies two operands, then adds or subtracts the product
to/from the accumulator
Multiply Accumulate
with Load
MAC Ry,RxSF,Rw
MSAC Ry,RxSF,Rw
Multiplies two operands, then adds or subtracts the product
to/from the accumulator while loading a register with the
memory operand
Load Accumulator MOV.L {Ry,#imm},ACC Loads the accumulator with a 32-bit operand
Store Accumulator MOV.L ACC,Rx Writes the contents of the accumulator to a register
Load MACSR MOV.L {Ry,#imm},MACSR Writes a value to the MACSR
Store MACSR MOV.L MACSR,Rx Write the contents of MACSR to a register
Store MACSR to CCR MOV.L MACSR,CCR Write the contents of MACSR to the processor’s CCR register
Load MASK MOV.L {Ry,#imm},MASK Writes a value to MASK
Store MASK MOV.L MASK,Rx Writes the contents of MASK to a register
