Enhanced Multiply-Accumulate Unit (EMAC)
MCF52235 ColdFire® Integrated Microcontroller Reference Manual, Rev. 6
4-2
Freescale Semiconductor
Figure 4-1. Multiply-Accumulate Functionality Diagram
4.1.1.1
Introduction to the MAC
The MAC is an extension of the basic multiplier in most microprocessors. It is typically implemented in
hardware within an architecture and supports rapid execution of signal processing algorithms in fewer
cycles than comparable non-MAC architectures. For example, small digital filters can tolerate some
variance in an algorithm’s execution time, but larger, more complicated algorithms such as orthogonal
transforms may have more demanding speed requirements beyond scope of any processor architecture and
may require full DSP implementation.
To balance speed, size, and functionality, the ColdFire MAC is optimized for a small set of operations that
involve multiplication and cumulative additions. Specifically, the multiplier array is optimized for
single-cycle pipelined operations with a possible accumulation after product generation. This functionality
is common in many signal processing applications. The ColdFire core architecture is also modified to
allow an operand to be fetched in parallel with a multiply, increasing overall performance for certain DSP
operations.
Consider a typical filtering operation where the filter is defined as in
.
Eqn. 4-1
Here, the output y(i) is determined by past output values and past input values. This is the general form of
an infinite impulse response (IIR) filter. A finite impulse response (FIR) filter can be obtained by setting
coefficients a(k) to zero. In either case, the operations involved in computing such a filter are multiplies
and product summing. To show this point, reduce
to a simple, four-tap FIR filter, shown in
, in which the accumulated sum is a past data values and coefficients sum.
Eqn. 4-2
X
+/-
Operand Y
Operand X
Shift 0,1,-1
Accumulator(s)
y i
( )
a k
( )
y i
k
–
(
)
k
1
=
N
1
–
∑
b k
( )
x i
k
–
(
)
k
0
=
N
1
–
∑
+
=
y i
( )
b k
( )
x i
k
–
(
)
k
0
=
3
∑
b 0
( )
x i
( )
b 1
( )
x i
1
–
(
)
b 2
( )
x i
2
–
(
)
b 3
( )
x i
3
–
(
)
+
+
+
=
=
Because
of
an
order
from
the
United
States
International
Trade
Commission,
BGA-packaged
product
lines
and
part
numbers
indicated
here
currently
are
not
available
from
Freescale
for
import
or
sale
in
the
United
States
prior
to
September
2010:MCF52234CVM60,
MCF52235CVM60