21. The assembly program, dft_128.asm,can be further optimized. Use parallel instructions
to improve the DFT performance. Profile the optimized code,and compare the cycle counts
against the profile data obtained in experiment given in Section 4.6.3.
22. Find the clock rate of the TMS320C55x device,and use the profile data to calculate the total
time the DFT routine spent to compute 128-point samples. Can this DFT routine be used for
a real-time application? Why?
23. Why does the C55x DSP have two stack pointers,XSP and XSSP,and how are these
pointers initialized? The C55x also uses RETA and CFCT during subroutine calls. What
are these registers? Create and use a simple assembly program example to describe how the
RETA,CFCT,XSP,and XSSP react to a nested subroutine call (hint: use references from
the CCS help menu).
24. Modify experiments given in Section 4.6.4 to understand how the linker works:
(a) Move all the programs in .text section (exp4b. asm, dft_128.asm and
mag_128.asm) to a new section named .sect "dft_code",which starts at the
program memory of address 0x020400. Adjust the section length if necessary.
(b) Put all the data variables (exp4b. asm, dft_128.asm,and mag_128.asm) under the
section named. usect "dft_vars",which starts at the data memory of address
0x08000. Again,adjust the section length if necessary.
(c) Build and run the project. Examine memory segments in the map file. How does the
linker handle each program and data section?