TMS320C6X has two type addressing mode, linear and circular. all registers involved in linear mode and A4 - A7 & B4 -B7 used for circular addressing mode , A 32bit register Address Mode Register is used to configure address mode
• Determines how one access memory
• Addressing refers to means to specify location of operands for
- types of addressing are called addressing modes
- operands may be input operands for the operation as well as
results of the operation
• Addressing modes supported by the TMS320C67x include
and modulo addressing (circular addressing).
Immediate data is also supported.
• The TMS320C67x does not support modulo addressing for 64-bit
ADD .L1 -13,A1,A6
(implied) ADD .L1 A7,A6,A7
LDW .L1 *A5++,A1
– The operand is part of the
– The operand is specified in a
– The address of the operand is
part of the instruction (added
to imply memory page)
– The address of the operand is
stored in a register
• Operand is located in memory address stored in a register
• Special group of registers can be used to store addresses
• Most important addressing mode in DSPs
• Efficient from instruction set point of view
• Few bits are needed to indicate address of operand
• 32 registers(A0-A15,B0-B15) are used as pointers
• Indirect addressing uses ‘*’ in conjunction with one of the 32
1.*R – register R contains address of a memory location
where a data value is stored
2. *R++ (d) - register R contains memory address
- after the memory address is used, R is
postincremented such that new address is R+1 if d=1
- double minus (- -) update the address by d-1
3. * ++ R(d) - address is preincremented or offset by d
- current address is R+d or R-d
4. * + R(d) - address is preincremented by d, such that the current
address is R+d
- however R pre increments without modification
- unlike previous case, R is not updated or modified
Delay Line pointer manipulation using
• Circular addressing is used to create a circular buffer
• Buffer is created in hardware and is very useful for applications like
• This addressing mode in conjunction with circular buffer updates
samples by shifting data without creating overhead as in direct
• When pointer reaches bottom location, and when incremented the
pointer is automatically wrapped around to the top location.
• Two independent buffers are available using BK0 and BK1 within the
• Registers A4-A7 and B4-B7 in conjunction with .D unit can be used as
• MVC (move constant) is the only instruction to access AMR and other
At the beginning of each
a new sample will be read into the
circular buffer,overwriting the
The newest sample x(n) will be
stored at the memory location
pointed at by auxiliary register
• The need of processing the digital signals in real time,
evolves the concept of Circular Buffering.
• Circular buffers are used to store the most recent values of
a continually updated signal.
• Circular buffering allows processors to access a block of
data sequentially and then automatically wrap around to
the beginning address exactly the pattern used to access
coefficients in FIR filter.
• Circular buffering also very helpful in implementing first-in,
first-out buffers, commonly used for I/O and for FIR delay
• Most DSP Implement Circular addressing in hardware in
order to conserve memory and minimizing software
Addressing Mode Register (AMR)
• For each of the eight registers (A4–A7, B4–B7) that can perform linear
or circular addressing, the addressing mode register (AMR) specifies
the addressing mode.
• A 2-bit field for each register selects the address modification mode:
linear (the default) or circular mode.
• With circular addressing, the field also specifies which BK (block size)
field to use for a circular buffer.
• In addition, the buffer must be aligned on a byte boundary equal to
the block size.
AMR mode and description
00 for linear addressing
01 for circular addressing using BK0
• For circular addressing using BK1