MCF548x Reference Manual, Rev. 3
Freescale Semiconductor 4-1

Chapter 4

Enhanced Multiply-Accumulate Unit (EMAC)

This chapter describes the functionality, microarchitecture, and performance of the enhanced
multiply-accumulate (EMAC) unit in the ColdFire family of processors.

4.1 Introduction

The MAC design provides a set of DSP operations which can be used to improve the performance of
embedded code while supporting the integer multiply instructions of the baseline ColdFire architecture.
The MAC provides functionality in three related areas:
Signed and unsigned integer multiplies
Multiply-accumulate operations supporting signed and unsigned integer operands, as well as
signed, fixed-point, fractional operands
Miscellaneous register operations
The ColdFire family supports two MAC implementations with different performance levels and
capabilities. The original MAC uses a three-stage execution pipeline optimized for 16-bit operands and
featuring a 16 ×16 multiply array with a single 32-bit accumulator. The EMAC features a four-stage
pipeline optimized for 32-bit operands, with a fully pipelined 32 ×32 multiply array and four 48-bit
accumulators.
The first ColdFire MAC supported signed and unsigned integer operands and was optimized for 16 ×16
operations, such as those found in a variety of applications, including servo control and image
compression. As ColdFire-based systems proliferated, the desire for more precision on input operands
increased. The result was an improved ColdFire MAC with user-programmable control to optionally
enable use of fractional input operands.
EMAC improvements target three primary areas:
Improved performance of 32 ×32 multiply operations.
Addition of three more accumulators to minimize EMAC pipeline stalls caused by exchanges
between the accumulator and the pipeline’s general-purpose registers.
A 48-bit accumulation data path to allow the use of a 40-bit product plus the addition of 8 extension
bits to increase the dynamic number range when implementing signal processing algorithms.
The three areas of functionality are addressed in detail in following sections. The logic required to support
this functionality is contained in a MAC module, as shown in Figure 4-1.
Figure 4-1. Multiply-Accumulate Functionality Diagram
X
+/-
Operand Y Operand X
Shift 0,1,-1
Accumulator(s)