Chip Errata
DSP56301 Digital Signal Processor
Mask:2K30A
DSP56301 Errata 301CE2K30A_0_1 ng 7/5/00 pg. 24
1996-2000, Motorola
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 move’s source is the destination of the
DALU instruction (causing a DALU interlock); the other move’s
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.
|______ _______|--- -------> Thi s is conditi on 3, first part - DALU interlock
In this example, the second iteration before the last, the "x(r0)+,x0"
doesn’ t 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 iteration’s 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 iteration’s 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. Don’t 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.”
2K30A
Errata
Number Document Update Applies
to Mask