Jameco Electronics 3000 User Manual

Page of 349
28
Rabbit 3000 Microprocessor
fetching an instruction from memory and fetching or storing data in memory. When 
enabled separate I and D space make available the combined root and data segment, typi-
cally 52k bytes for root code in the I space. In the D space, the root code segment part of 
the D space is typically used for constant data mapped to flash memory while the data seg-
ment part of the D space is used for variable data mapped to RAM. Separate I and D space 
increases the amount of both root code and root data because they no longer have to share 
the same memory, even though they share the same addresses.
Figure 3-6.  Separate I and D Space
Normally separate I and D space is implemented as shown in Figure 3-6. In the I space the 
root segment and the data segment are combined into a single root code segment. In the D 
space the segments are separately mapped to flash and RAM to provide storage for con-
stant data and variable data. The hardware method to achieve separate 20 bit addresses for 
the D space is to invert either A16 or A19 for data accesses. The inversion may be speci-
fied separately for the root segment and the data segment. Normally A16 is inverted for 
data accesses in the root segment. This causes data accesses to the root segment to be 
moved 64k higher to a section of flash starting at 20 bit address 64k that is reserved for 
constant data. A19 is normally inverted for data accesses to the data segment, causing the 
data accesses in the data segment to be moved to an address 512k higher in the 20 bit 
space, an address normally mapped to RAM. The stack segment and the XPC segment do 
Constant
D Space
Variable
D Space
Root
Code
stack
xpc 
window
512k
64k
RAM
Flash
128k
52k
56k
64k
20 Bit Memory Space
D Space
Root
Segment
Data
Segment
I space