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
CLRA = 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