User`s manual

Chip Errata
DSP56305 Digital Signal Processor
Mask: 0F13S
DSP56305 Errata 1996 - 2002 Motorola pg. 44 /ng/12/20/02
ED40
Description (added 11/11/99):
When an instruction with all the following conditions follows a
repeat instruction, then the last move will be corrupted.:
1. The repeated instruction is from external memory.
2. The repeated instruction is a DALU instruction that includes 2
DAL registers, one as a source, and one as destination (e.g. tfr, add).
3. The repeated instruction has a double move in parallel to the
DALU instruction: one moves source is the destination of the
DALU instruction (causing a DALU interlock); the other moves
destination is the source of the DALU instruction.
Example:
rep #number
tfr x0,a x(r0)+,x0 a,y0 ; This instruction is from external memory
|__|_________|------|----------> This is condition 3 second part.
|_____________|----------> This is condition 3, first part - DALU interlock
In this example, the second iteration before the last, the "x(r0)+,x0"
doesnt happen. On the first iteration before the last, the X0 register
is fixed with the "x(r0)+,x0", but the "tfr x0,a" gets the wrong value
from the previous iterations X0. Thus, at the last iteration the A
register is fixed with "tfr x0,a", but the "a,y0" transfers the wrong
value from the previous iterations A register to Y0.
Workaround:
1. Use the DO instruction instead; mask any necessary interrupts
before the DO.
2. Run the REP instructions from internal memory.
3. Dont make DALU interlocks in the repeated instruction. After
the repeat make the move. In the example above, all the "move a,y0"
are redundant so it can be done in the next instruction:
rep #number
tfr x0,a x(r0)+,x0
move a,y0
If no interrupts before the move is a must, mask the interrupts
before the REP.
Pertains to: DSP56300 Family Manual, Rev. 2, Section A.3,
Instruction Sequence Restrictions.
0F13S
Errata
Number
Document Update
Applies
to Mask