Programmable Digital Signal Processors Commercial DSP Devices
Programmable Digital Signal Processors Commercial DSP Devices
Bus structure:
Accumulators:
Accumulators A and B store output form the ALU (or) the multiplier/adder block and provide a
second input to the ALU
Each accumulator is divided into 3 parts.
Guard bits (bits 32-39)
High order word (bits 31-16)
Low order word (bits 15-0)
These 3 parts can be stored or retrieved individually.
Barrel shifter:
The barrel shifter provides the capability to scale the data during an operand read (or) write.
The 54xx barrel can produce a left shift of 0-31 bits and right shift of 0to 16 bits on the input
data.
The shift details are defined in the shift count field of the instruction, the shift count field of the
status register (ST1) or the temporary register T.
The barrel shifter and the exponent encoder normalize the values in an accumulator in a single
cycle.
The LSB’s of the output are filled with 0’s.
The MSB’s can be either zero filled or sign extended.
It depends on the sign- extension mode bit in the status register ST1.
Multiplier/adder unit:
It supports Exp instruction, which stores the number of leading redundant bits in the T register.
Absolute addressing:
Accumulator addressing:
Direct addressing:
Here, the 16-bit address of the data – memory location is formed by combining the lower 7-bits
of the data memory address contained in the instructions with the base address give by data-
page pointer (DP) or the stack pointer(SP).
We can access a page of 128 contiguous locations without changing the DP (or) SP.
The compiler mode bit (CPL) located in status register ST1 selects between the two pointers.
CPL=0 Selects DP
CPL=1 selects SP.
When CPL=0, to add the contents of memory location on page 4 in the data memory to
accumulator to accumulator B,
LD #4, DP : DP=4=upper a bits of address
ADD=0, B : lower 7 bits of the address.
When SP is used instead of DP the effective address is computed by adding 7-bit offset to SP.
Indirect addressing:
Any location in the data space can be accessed by means of address contained in an auxiliary
register.
54xx devices have 8 16-bit auxiliary registers (AR0-AR7)
It is to be used when there is need to step through a sequence of locations in the memory in the
fixed size steps.
Two auxiliary register arithmetic units (ARAU 0 & ARAU1) are used to modify the contents of
auxiliary registers.
They perform unsigned, 16-bit arithmetic operations.
They can be loaded with an immediate value.
Loaded via the data bus.
Modified by indirect addressing field of any instruction.
Modify auxiliary register (MAR) instruction.
Used as loop counters.
Address can be modified before (or) after accessing the location or can be left unchanged.
We can increment (or) decrement the address by 1
We can add a 16-bit offset.
We can index with the value in AR0.
These modifications can be carried out either before after accessing the memory location.
Circular addressing:
Real time algorithms like convolution, correlation, FIR filters require implementation of circular
buffer.
A circular buffer is a sliding window containing the most recent data.
As new data come in, the buffer overwrites the oldest data.
An indirect addressing mode with circular buffer address modification allows implementation of
circular buffers.
The circular buffer size register (BK) specifies the size of the circular buffers.