EasyManua.ls Logo

Analog Devices adsp-2100 - Indirect Addressing; Initialize L Registers to 0 for Non-Circular Addressing

Analog Devices adsp-2100
486 pages
Print Icon
To Next Page IconTo Next Page
To Next Page IconTo Next Page
To Previous Page IconTo Previous Page
To Previous Page IconTo Previous Page
Loading...
4Data Transfer
4 – 3
The address generators support both linear addressing and circular
addressing. The value of the L register corresponding to an I register (for
example, L0 would correspond to I0) determines which addressing scheme is used
for that I register. For circular buffer addressing, the L register is initialized
with length of the buffer. For linear addressing, the modulus logic is
disabled by setting the corresponding L register to zero.
Each time an I register is selected, the corresponding L register provides
the modulus logic with the length information. If the sum of the M register
and the I register crosses the buffer boundary, the modified I register
value is calculated by the modulus logic using the L register value.
All data address generator registers (I, M, and L registers) are loadable
and readable from the lower 14 bits of the DMD bus. Since I and L register
contents are considered to be unsigned, the upper 2 bits of the DMD bus
are padded with zeros when reading them. M register contents are signed;
when reading an M register, the upper 2 bits of the DMD bus are sign-
extended.
4.2.2 Indirect Addressing
The ADSP-2100 family processors allow two addressing modes for data
memory fetches: direct and register indirect. Indirect addressing is
accomplished by loading an address into an I (index) register and
specifying one of the available M (modify) registers.
The L registers are provided to facilitate wraparound addressing of
circular data buffers. A circular buffer is only implemented when an L
register is set to a non-zero value. For linear (i.e. non-circular) indirect
addressing, the L register corresponding to the I register used must be set
to zero.
Do not assume that the L registers are automatically initialized or may be
ignored; the I, M, and L registers contain random values following processor
reset. Your program must initialize the L registers corresponding to any I
registers it uses.
4.2.2.1 Initialize L Registers To 0 For Non-Circular Addressing
Setting an L register to a non-zero value activates the processor’s circular
addressing modulus logic. For linear indirect addressing you must set the
appropriate L register to zero to disable the modulus logic.

Table of Contents

Related product manuals