Microchip Technology MA330026 데이터 시트

다운로드
페이지 392
dsPIC33FJ16(GP/MC)101/102 AND dsPIC33FJ32(GP/MC)101/102/104
DS70000652F-page 78
 2011-2014 Microchip Technology Inc.
4.6
Interfacing Program and Data 
Memory Spaces
The dsPIC33FJ16(GP/MC)101/102 and
dsPIC33FJ32(GP/MC)101/102/104 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 dsPIC33FJ16(GP/
MC)101/102 and dsPIC33FJ32(GP/MC)101/102/104
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 lookups
from a large table of static data. The application can
only access the lsw of the program word.
4.6.1
ADDRESSING PROGRAM SPACE
Since the address ranges for the data and program
spaces are 16 and 24 bits, respectively, a method is
needed to create a 23-bit or 24-bit program address
from 16-bit data registers. The solution depends on the
interface method to be used.
For table operations, the 8-bit Table Page (TBLPAG)
register is used to define a 32K word region within the
program space. This is concatenated with a 16-bit EA to
arrive at a full 24-bit program space address. In this
format, the MSb of TBLPAG is used to determine if the
operation occurs in the user memory (TBLPAG<7> = 0)
or the configuration memory (TBLPAG<7> = 1).
For remapping operations, the 8-bit Program Space
Visibility (PSVPAG) register is used to define a
16K word page in the program space. When the MSb
of the EA is ‘1’, PSVPAG is concatenated with the lower
15 bits of the EA to form a 23-bit program space
address. Unlike table operations, this limits remapping
operations strictly to the user memory area.
 show how the program EA is
created for table operations and remapping accesses
from the data EA. 
TABLE 4-42:
PROGRAM SPACE ADDRESS CONSTRUCTION
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
Program Space Visibility
(Block Remap/Read)
User
0
PSVPAG<7:0>
Data EA<14:0>
(
)
   0        xxxx xxxx
xxx xxxx xxxx xxxx
Note 1:
Data EA<15> is always ‘1’ in this case, but is not used in calculating the program space address. Bit 15 of 
the address is PSVPAG<0>.