Microchip Technology MA330025-1 Data Sheet

Page of 622
 2009-2012 Microchip Technology Inc.
DS70616G-page 133
dsPIC33EPXXX(GP/MC/MU)806/810/814 and PIC24EPXXX(GP/GU)810/814
4.8
Interfacing Program and Data 
Memory Spaces
The dsPIC33EPXXX(GP/MC/MU)806/810/814 and
PIC24EPXXX(GP/GU)810/814 architecture uses a
24-bit wide Program Space and a 16-bit wide data
space. The architecture is also a modified Harvard
scheme, meaning that data can also be present in the
Program Space. To use this data successfully, it must
be accessed in a way that preserves the alignment of
information in both spaces.
Aside from normal execution, the
dsPIC33EPXXX(GP/MC/MU)806/810/814 and
PIC24EPXXX(GP/GU)810/814 architecture provides
two methods by which Program Space can be
accessed during operation: 
• Using table instructions to access individual bytes 
or words anywhere in the Program Space
• Remapping a portion of the Program Space into 
the data space (Program Space Visibility)
Table instructions allow an application to read or write
to small areas of the program memory. This capability
makes the method ideal for accessing data tables that
need to be updated periodically. It also allows access
to all bytes of the program word. The remapping
method allows an application to access a large block of
data on a read-only basis, which is ideal for look-ups
from a large table of static data. The application can
only access the least significant word of the program
word.
TABLE 4-77:
PROGRAM SPACE ADDRESS CONSTRUCTION
FIGURE 4-12:
DATA ACCESS FROM PROGRAM SPACE ADDRESS GENERATION
Access Type
Access
Space
Program Space Address
<23>
<22:16>
<15>
<14:1>
<0>
Instruction Access
(Code Execution)
User
0
PC<22:1>
0
0xx
xxxx
xxxx
xxxx
xxxx xxx0
TBLRD/TBLWT
(Byte/Word Read/Write)
User
TBLPAG<7:0>
Data EA<15:0>
      0xxx xxxx
xxxx xxxx xxxx xxxx
Configuration TBLPAG<7:0>
Data 
EA<15:0>
      1xxx xxxx
xxxx xxxx xxxx xxxx
0
Program Counter
23 Bits
Program Counter
(1)
TBLPAG
8 Bits
EA
16 Bits
Byte Select
0
1/0
User/Configuration Space Select
Table Operations
(2)
24 Bits
1/0
Note 1: The Least Significant bit (LSb) of Program Space addresses is always fixed as ‘0’ to maintain word 
alignment of data in the program and data spaces.
2: Table operations are not required to be word-aligned. Table read operations are permitted in the 
configuration memory space.