
Symphony DSP56724/DSP56725 Multi-Core Audio Processors, Rev. 0
4-4
Freescale Semiconductor
DSP56300 Platform
4.3.1.1
Data ALU Registers
The Data ALU registers can be read or written over the X memory data bus (XDB) and the Y memory data
bus (YDB), as 24- or 48-bit operands (or as 16- or 32-bit operands in 16-bit arithmetic mode). The source
operands for the Data ALU, which can be 24, 48, or 56 bits (16, 32, or 40 bits in 16-bit arithmetic mode),
always originate from Data ALU registers. The results of all Data ALU operations are stored in an
accumulator.
All the Data ALU operations are performed in two clock cycles (in pipeline fashion) so that a new
instruction can be initiated on every clock, yielding an effective execution rate of one instruction per clock
cycle. The destination of every arithmetic operation can be used as a source operand for the immediately
following arithmetic operation without a time penalty (without a pipeline stall).
4.3.1.2
Multiplier-Accumulator (MAC)
The MAC unit comprises the main arithmetic processing unit of the DSP56300 core and performs all of
the calculations on data operands. For arithmetic instructions, the MAC accepts as many as three input
operands and outputs one 56-bit result with the following form: Extension:Most Significant Product:Least
Significant Product (EXT:MSP:LSP).
The multiplier executes 24-bit
×
24-bit, parallel, fractional multiplies, between two’s-complement signed,
unsigned, or mixed operands. The 48-bit product is right-justified and added to the 56-bit contents of either
the A or B accumulator. A 56-bit result can be stored as a 24-bit operand. The LSP can either be truncated
or rounded into the MSP. Rounding is performed if specified.
4.3.2
Address Generation Unit (AGU)
The Address Generation Unit performs effective address calculations using integer arithmetic necessary
to address data operands in memory, and contains the registers used to generate the addresses. The AGU
implements four types of arithmetic (linear, modulo, multiple wrap-around modulo, reverse-carry), and
operates in parallel with other chip resources to minimize address-generation overhead.
The AGU is divided into two halves, each with its own Address ALU. Each Address ALU has four sets of
register triplets. Each register triplet is composed of an address register, an offset register and a modifier
register. The two Address ALUs are identical. Each Address ALU contains a full 24-bit adder (called an
offset adder).
A second full adder (called a modulo adder) adds the summed result of the first full adder to a modulo
value that is stored in its respective modifier register. A third full adder (called a reverse-carry adder) is
also provided.
The offset adder and the reverse-carry adder are in parallel and share common inputs. The only difference
between the offset and reverse-carry adders is that the carry propagates in opposite directions. Test logic
determines which of the three summed results of the full adders is output.
Each Address ALU can update one address register (from its respective address register file) during one
instruction cycle. The contents of the associated modifier register specifies the type of arithmetic to be used
in the address register update calculation. The modifier value is decoded in the Address ALU.