3.7 DSP Engine

The DSP engine consists of a high-speed 17-bit x 17-bit multiplier, a 40-bit barrel shifter and a 40-bit adder/subtracter (with two target accumulators, round and saturation logic).

The DSP engine can also perform inherent accumulator-to-accumulator operations that require no additional data. These instructions are: ADD, SUB, NEG, MIN and MAX.

The DSP engine has options selected through bits in the CPU Core Control register (CORCON), as listed below:

  • Fractional or integer DSP multiply (IF)
  • Signed, unsigned or mixed-sign DSP multiply (USx)
  • Conventional or convergent rounding (RND)
  • Automatic saturation on/off for ACCA (SATA)
  • Automatic saturation on/off for ACCB (SATB)
  • Automatic saturation on/off for writes to data memory (SATDW)
  • Accumulator Saturation mode selection (ACCSAT)
Table 3-2. DSP Instructions Summary
InstructionAlgebraic OperationACC Write-Back
CLR A = 0Yes
ED A = (x – y)2No
EDACA = A + (x – y)2No
MACA = A + (x • y)Yes
MACA = A + x2No
MOVSACNo change in AYes
MPYA = x • yNo
MPYA = x2No
MPY.NA = – x • yNo
MSCA = A – x • yYes