![background image](http://html2.mh-extra.com/html/rabbit/2000/2000_user-manual_3110256220.webp)
214
Rabbit 2000 Microprocessor
B.2.10 DDCB/FDCB Instruction Page and Wait State Bug Fixes
Four-byte instructions starting with DD-CB or FD-CB didn't work when attempted with
wait states.
The fetch of the byte immediately following the instruction did not have the correct num-
ber of wait states inserted for the following instructions only when using wait states.
Rather than the programmed number of wait states, the fetch was short by one wait state.
DJNZ (branch not taken only)
JR cc (branch not taken only)
JP cc (branch not taken only)
A similar thing happens for the block move instructions. In these cases, the read cycle is
short by one wait state.
LDDR
LDIR
For the multiply instruction, the fetch of the first byte after the MUL instruction had no
wait states, independent of the number programmed.
These problems were corrected in revisions A–C of the Rabbit 2000.
New Bug with LDIR/LDDR
A new LDIR/LDDR bug was discovered in September, 2002. The problem has to do with
wait states and the block move operations. With this problem, the first iteration of
LDIR/LDDR
uses the correct number of wait states for both the read and the write. How-
ever, all subsequent iterations use the number of waits programmed for the memory
located at the write address for both the read and write cycles. This becomes a problem
when moving a block of data from a slow memory device requiring wait states to a fast
memory device requiring no wait states. With respect to external I/O operations, the
LDIR
or
LDDR
performs reads with zero wait states independent of the waits programmed for the
I/O for all but the first iteration. The first iteration is correct. This bug is automatically cor-
rected by Dynamic C.
B.2.11 LDIR/LDDR Instruction/Data Split Bug Fix
The bug with
LDIR
/
LDDR
and separate I & D space discovered in the Rabbit 2000A had to
do with the way the memory control unit treated the move from and the move to addresses
of the block move operation. With the instruction/data split enabled, data access in the
ROOT and/or DATASEG regions would result in addresses A16 and/or A19 being
inverted, depending on how the MMIDR was configured. This would allow the data space
to be moved up or down by 64K or 512 K.
With this problem, the first iteration of
LDIR
/
LDDR
resulted in the correct address inver-
sion for data accesses in the ROOT and/or DATASEG regions. However, all subsequent
iterations took place in the code region (without any address inversion).
This problem was fixed in revisions B and C of the Rabbit 2000.
Summary of Contents for 2000
Page 1: ...Rabbit 2000 Microprocessor User s Manual 019 0069 041018 M...
Page 12: ...6 Rabbit 2000 Microprocessor...
Page 46: ...40 Rabbit 2000 Microprocessor...
Page 54: ...48 Rabbit 2000 Microprocessor...
Page 76: ...70 Rabbit 2000 Microprocessor...
Page 96: ...90 Rabbit 2000 Microprocessor...
Page 142: ...136 Rabbit 2000 Microprocessor...
Page 154: ...148 Rabbit 2000 Microprocessor...
Page 170: ...164 Rabbit 2000 Microprocessor...
Page 174: ...168 Rabbit 2000 Microprocessor...
Page 180: ...174 Rabbit 2000 Microprocessor...
Page 202: ...196 Rabbit 2000 Microprocessor...
Page 206: ...200 Rabbit 2000 Microprocessor...
Page 226: ......
Page 230: ...224 Rabbit 2000 Microprocessor...