您的当前位置:首页正文

DSP技术及应用习题答案

2020-01-20 来源:年旅网


《DSP技术及应用》习题答案

第1章 绪论

1.1 DSP的概念是什么?本书说指的DSP是什么?

答:DSP有两个概念。一是数字信号处理(Digital Signal Processing),指以数字形式对信号进行采集、变换、滤波、估值、增强、压缩、识别等处理;二是数字信号处理器(Digital Signal Processor),指是一种特别适合于进行数字信号处理运算的微处理器,其主要应用是实时快速地实现各种数字信号处理算法。

本书中的DSP主要指后者,讲述数字信号处理器的应用。

1.2 什么是哈佛结构和冯•诺伊曼结构?它们有什么区别?

答:(1) 冯·诺伊曼(Von Neuman)结构

该结构采用单存储空间,即程序指令和数据共用一个存储空间,使用单一的地址和数据总线,取指令和取操作数都是通过一条总线分时进行.当进行高速运算时,不但不能同时进行取指令和取操作数,而且还会造成数据传输通道的瓶颈现象,其工作速度较慢。

(2)哈佛(Harvard)结构

该结构采用双存储空间,程序存储器和数据存储器分开,有各自独立的程序总线和数据总线,可独立编址和独立访问,可对程序和数据进行独立传输,使取指令操作、指令执行操作、数据吞吐并行完成,大大地提高了数据处理能力和指令的执行速度,非常适合于实时

1

的数字信号处理.

1.3 已知一个16进制数3000H,若该数分别用Q0、Q5、Q15表示,试计算该数的大小.

答:3000H=12288。若用Q0表示,则该数就是12288;若用Q5表示,则该数就是12288*2—5=384;若用Q15表示,则该数就是12288*2—15=0。375

1。4 若某一个变量用Q10表示,试计算该变量所能表示的数值范围和精度。

答:Q10能表示的数值范围是-32~31.9990234,其精度为2-10

1.5 若x=0.4567,试分别用Q15、Q14、Q5将该数转换为定点数.

答:Q15:x*215=int(0。4567*32768)=14965;Q14:x*214=int(0。4567*16384)=7482;Q5:x*25=int(0.4567*32)=14。

注意:结果都要取整;可以十进制也可以是十六进制。

第2章 TMS320C54x的CPU结构和存储器配置

2.1 TMS320C54x芯片的CPU主要由哪几部分组成?

答:CPU主要组成是40位的算术逻辑运算单元ALU;

40位的累加器A和B;

2

40位的桶形移位寄存器;

乘法累加单元(MAC);

比较、选择和存储单元(CSSU);

指数编码器(EXP);

16位的状态寄存器ST0、 ST1以及处理器工作方式状态寄存器PMST;

寻址单元。

2。2 处理器工作方式状态寄存器PMST中的MP/MC、OVLY和DROM三个状态位对‘C54x的存储空间结构各有何影响?

答:MP/MC控制位用来决定程序存储空间是否使用内部存储器。当MP/ MC=0时,称为微计算机模式,允许片内ROM配置到程序存储器。当MP/ MC=1时,称为微处理器模式,禁止片内ROM配置到程序存储器。

OVLY控制位用来决定程序存储空间是否使用内部RAM。当OVLY= 0时,程序存储空间不使用内部RAM。当OVLY= 1时,程序存储空间使用内部RAM,内部RAM同时被映射到程序存储空间和数据存储空间。

DROM:用来决定片内ROM是否可以映射到数据存储空间。当DROM=1时,片内ROM配置到程序和数据存储空间.当DROM=0时,禁止片内ROM配置到数据存储空间.

3

第3章 TMS320C54x的指令系统

3.1 已知(30H)=50H,AR2=40H,AR3=60H,AR4=80H。

MVKD 30H,*AR2 ;(40H)=50H

MVDD *AR2,*AR3 ;(60H)=50H

MVDM *AR3,AR4 ;AR4=50H

运行以上程序后,(30H)、(40H)、*AR3和AR4的值分别等于多少?

答:均等于50H。

3。2已知(80H)=20H,(81H)=30H。

LD #0,DP

LD 80H,16,B

ADD 81H,B

运行以上程序后,B等于多少?

答:此题错误.因为第2和第3条指令中的80H、81H默认是@80H、@81H,那么根据直接寻址方式的地址形成,DP的值放在高9位,@后面的值只取低7位,合在一起形成

4

16位地址就是0000000000000000B(0000H)、0000000000000001B(0001H)。而这2个地址的值已知条件中没有说明,此题无解.

如果按照已知条件,应该将DP值置为1,即第1条指令改为LD #1,DP。则第2条指令执行后,B=200000H;第3条指令执行后,B=200030H.

3。3 试为下列程序段的每条指令加上注释。

STM #88H, AR0 ;AR0=0088H

LD #1000H, A ;A=0000001000H

zhong: SUB AR0, A ;A=0000001000H-0088H=0000000F78H

BC zhong, AGT, AOV ;若A〉0且A溢出,则跳转至zhong

3。4 阅读以下程序,分别写出运行结果。

。bss x, 4 。bss x, 4

.data 。data

table: .word 4, 8, 16, 32 table: .word 4, 8, 16, 32

…… ……

5

STM #x, AR1 STM #x, AR1

RPT 2 RPT 2

MVPD table, *AR1+ MVPD table, *+AR1

答:左边的程序段的运行结果是以x开始的3个存储单元分别置初值4,8,16。

右边的程序段的运行结果是以x+1开始的3个存储单元分别置初值4,8,16,而x没有置初值.

第4章 TMS320C54x汇编语言程序设计

4.1 说明。text段、。data段和.bss段分别包含什么内容?

答:.text段是已初始化段,包含可执行的程序代码,是汇编语言程序的正文;

。data段也是已初始化段,一般包含初始化的数据块;

。bss段是未初始化段,没有确切内容,主要作用是定义变量,预留存储单元。

4.2 在堆栈操作中,PC当前地址为4020H,SP当前地址为0013H,运行PSHM AR7后,PC和SP的值分别是多少?

答:PC=4021,SP=0012H。

6

4。3 试编写0.25×(-0.1)的程序代码。

答: 。mmregs

STACK .usect “STACK\ ; 为堆栈指定空间

.bss x,1 ; 为变量x,y,z各分配1个字的空间

.bss y, 1

.bss z, 1

.def start

.data

table: 。word 25*32768 /100 ; 变量初始化

。word -1*32768 /10

.text

start: STM # 0,SWWSR ; 插入0个等待状态

STM # STACK + 10h,SP ; 设置堆栈指针

7

STM # x,AR1 ; AR1指向x

RPT #1

MVPD table,*AR1+ ; 从程序存储器到数据存储器

SSBX FRCT ;FRCT置1

LD # x, DP ;设置DP

LD @x, T

MPY @y, A ;x*y

STH A,@z ;存结果

end: B end

。end

4。4 编写程序段,设计一个存储空间为100字的堆栈。

答:STACK .usect “STACK”,100

STM # STACK + 100,SP ; 设置堆栈指针

8

4。5 编写程序段,实现对数组x[5]中的每个元素都加1。

答: .bss x, 5

begin: STM #x, AR4

STM #4, AR3

loop: ADDM #1, *AR4+

BANZ loop, *AR3-

4.6 编写完整程序,实现y=x1+x2+x3+x4+x5。

答: 。mmregs

STACK .usect “STACK”,10h ; 为堆栈指定空间

.bss x1,1 ; 为变量x1~x5,y各分配1个字的空间

.bss x2, 1

。bss x3, 1

.bss x4, 1

9

。bss x5, 1

。bss y, 1

.def start

.data

table: 。word 1,2,3,4,5 ; 初始化数据

。text

start: STM # 0,SWWSR ; 插入0个等待状态

STM # STACK + 10h,SP ; 设置堆栈指针

STM # x1,AR1 ; AR1指向x

RPT #4

MVPD table,*AR1+ ; 从程序存储器到数据存储器

STM # x1, AR2 ;设置首地址

RPTZ A, #4

10

ADD *AR2+, A

STL A, *AR2+

STH A, *AR2

end: B end

.end

4.9 阅读以下程序,写出运行结果。 .bss y, 5

table: .word 1, 2, 3, 4, 5

STM #y, AR2

RPT #5 MVPD table, *AR2+

LD #0, B

LD #81H, AR5

11

STM #0, A

STM #4, BRC

STM #y, AR5

RPTB sub-1

ADD *AR5, B, A

STL A, *AR5+

sub: LD #0, B

运行以上程序后,(81H)、(82H)、(83H)、(84H)和(85H)的值分别是多少?

答:题目中不仅有指令语法错误,还有逻辑错误.因为虽然通过LD #81H, AR5将81H赋给AR5,但是后面又有STM #y, AR5.所以AR5的值依然是y,运行后不会将加法的结果送到81H~85H单元。

当然,根据题意,运行后的结果是(81H)=1,(82H)=2,(83H)=3,(84H)=4,(85H)=5。

4。10 链接命令文件中,MEMORY和SECTION命令的任务是什么?

答:MEMORY命令的作用是定义系统中所包含的各种形式的存储器,以及它们占据

12

的地址范围.

SECTION命令的作用是将输出端定位到所定义的存储器中。

注:4.7、4。8、4。11题系实验要求,不提供参考答案,请同学们自行上机编程验证。

13

因篇幅问题不能全部显示,请点此查看更多更全内容