
2010 Microchip Technology Inc.
DS70139G-page 45
dsPIC30F2011/2012/3012/3013
4.2.1
START AND END ADDRESS
The Modulo Addressing scheme requires that a
starting and an ending address be specified and loaded
into the 16-bit
Modulo
Buffer
Address
registers:
XMODSRT, XMODEND, YMODSRT and YMODEND
The length of a circular buffer is not directly specified. It
is
determined
by
the
difference
between
the
corresponding Start and end addresses. The maximum
possible length of the circular buffer is 32K words
(64 Kbytes).
4.2.2
W ADDRESS REGISTER
SELECTION
The Modulo and Bit-Reversed Addressing Control
register, MODCON<15:0>, contains enable flags as
well as a W register field to specify the W address
registers. The XWM and YWM fields select which
registers
operate
with
Modulo
Addressing.
If XWM = 15,
X
RAGU
and
X
WAGU
Modulo
Addressing is disabled. Similarly, if YWM = 15, Y AGU
Modulo Addressing is disabled.
The X Address Space Pointer W register (XWM), to
which Modulo Addressing is to be applied, is stored in
enabled for X data space when XWM is set to any value
other than ‘15’ and the XMODEN bit is set at
MODCON<15>.
The Y Address Space Pointer W register (YWM), to
which Modulo Addressing is to be applied, is stored in
MODCON<7:4>. Modulo Addressing is enabled for Y
data space when YWM is set to any value other
than ‘15’
and
the
YMODEN
bit
is
set
at
MODCON<14>.
FIGURE 4-1:
MODULO ADDRESSING OPERATION EXAMPLE
Note:
Y
space
Modulo
Addressing
EA
calculations
assume
word-sized
data
(LSb of every EA is always clear).
0x1100
0x1163
Start Addr = 0x1100
End Addr = 0x1163
Length = 0x0032 words
Byte
Address
MOV
#0x1100,W0
MOV
W0,XMODSRT
;set modulo start address
MOV
#0x1163,W0
MOV
W0,MODEND
;set modulo end address
MOV
#0x8001,W0
MOV
W0,MODCON
;enable W1, X AGU for modulo
MOV
#0x0000,W0
;W0 holds buffer fill value
MOV
#0x1110,W1
;point W1 to buffer
DO
AGAIN,#0x31
;fill the 50 buffer locations
MOV
W0,[W1++]
;fill the next location
AGAIN: INC
W0,W0
;increment the fill value