dsp56800e Freescale Semiconductor, Inc, dsp56800e Datasheet - Page 261

no-image

dsp56800e

Manufacturer Part Number
dsp56800e
Description
16-bit Digital Signal Controller Core
Manufacturer
Freescale Semiconductor, Inc
Datasheet
END_INNR
END_OUTR
Note that, due to dependencies in the execution pipeline, the outer and inner loops must not end on the
same instruction. In Example 8-11, a NOP instruction has been placed between the loop end labels to
ensure that they end on different instructions. Any useful instruction could be substituted for the NOP.
8.5.6.3
If more than two loops need to be nested, one of the loops can always be performed with standard software
looping techniques. Example 8-12 demonstrates a hardware DO loop that is nested in a regular software
loop.
OUTER
END_INNR
As compared to a hardware loop, a software loop involves considerably more looping overhead. Software
loops should only be used when necessary, or in code where execution time is not critical.
8.6
The DSP56800E core is designed with the ability to execute programs stored in data memory. Although
this capability is not intended for high-throughput DSC applications, it is useful for executing diagnostic
and test code on parts where program memory resides in ROM. Program instructions and interrupt vectors
are downloaded into data memory, where they can be executed later.
When instructions from data memory are executed, the core drives the address of the instruction onto the
XAB2 bus, and the memory places its result on the XDB2 bus. The data on this bus is then internally
transferred to the PDB bus, where the execution units expect to find it. Note that, because the program
address bus (PAB) is only 21 bits wide, only the lower 2
data-memory execution mode.
Figure 8-5 on page 8-24 shows the memory map in this mode.
Freescale Semiconductor
Executing Programs from Data Memory
ADDA
CLR.W
DO
DO
INC.W
ASL
NOP
MOVEU.W
DO
INC.W
ASL
DECTSTA
BGT
Nesting a DO Loop Within a Software Loop
Example 8-12. Example of Nested Looping in Software
#1,SP
A
#4,END_OUTR
#3,END_INNR
A
B
#4,R5
#4,END_INNR
A
B
R5
OUTER
Example 8-11. Example of Nested DO Loops
Program Controller
; (bump to unoccupied stack location)
; Outer loop
; Inner loop: saves LC->LC2, LA->LA2
; (body of innermost loop)
; (body of innermost loop)
; (required by pipeline)
; Load R5 for four outer loop iterations
; Inner DO loop
; (body of innermost loop)
; (body of innermost loop)
; Decrement Outer Loop Counter
; Branch to top of loop
21
locations in data memory can be accessed in
Executing Programs from Data Memory
8-23

Related parts for dsp56800e