Immediate Modifiers; Circular Buffer Addressing - Analog Devices ADSP-2106x SHARC User Manual

Table of Contents

Advertisement

4 Data Addressing
Any M register can modify any I register within the same DAG (DAG1 or
DAG2). Thus,
DM(M0,I2) = TPERIOD;
is a legal instruction that accesses the data memory location M0 + I2;
however,
DM(M0,I14) = TPERIOD;
is not a legal instruction because the I and M registers belong to different
DAGs.

4.3.1.2 Immediate Modifiers

The magnitude of an immediate value that can modify an I register
depends on the instruction type and whether the I register is in DAG1 or
DAG2. DAG1 modify values can be up to 32 bits wide; DAG2 modify
values can be up to 24 bits wide. Some instructions with parallel
operations only allow modify values up to 6 bits wide. Here are two
examples:
32-bit modifier:
R1=DM(0x40000000,I1);
6-bit modifier:
F6=F1+F2,PM(I8,0x0B)=ASTAT;
4.3.2

Circular Buffer Addressing

The DAGs provide for addressing of locations within a circular data
buffer. A circular buffer is a set of memory locations that stores data. An
index pointer steps through the buffer, being post-modified and updated
by the addition of a specified value (positive or negative) for each step. If
the modified address pointer falls outside the buffer, the length of the
buffer is subtracted from or added to the value, as required to wrap the
index pointer back to the start of the buffer (see Figure 4.4). There are no
restrictions on the value of the base address for a circular buffer.
Circular buffer addressing must use M registers for post-modify of I
registers, not pre-modify; for example:
F1=DM(I0,M0);
F1=DM(M0,I0);
4 – 6
www.BDTIC.com/ADI
DM address = I1 + 0x4000 0000
PM address = I8, I8 = I8 + 0x0B
Use post-modify addressing for circular buffers,
not pre-modify.

Advertisement

Table of Contents
loading
Need help?

Need help?

Do you have a question about the ADSP-2106x SHARC and is the answer not in the manual?

Questions and answers

Table of Contents