DSP课后习题答案

更新时间:2023-11-05 12:18:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第一章 绪论

1、简述DSP系统的构成和工作过程。 答:DSP系统的构成:

一个典型的DSP系统应包括抗混叠滤波器、数据采集A/D转换器、数字信号处理器DSP、D/A转换器和低通滤波器等。 DSP系统的工作过程:

①将输入信号x(t)经过抗混叠滤波,滤掉高于折叠频率的分量,以防止信号频谱的混叠。 ②经过采样和A/D转换器,将滤波后的信号转换为数字信号x(n)。 ③数字信号处理器对x(n)进行处理,得数字信号y(n)。 ④经D/A转换器,将y(n)转换成模拟信号;

⑤经低通滤波器,滤除高频分量,得到平滑的模拟信号y(t)。 9、简述DSP系统的设计步骤。 答:①明确设计任务,确定设计目标。 ②算法模拟,确定性能指令。 ③选择DSP芯片和外围芯片。 ④设计实时的DSP芯片系统。 ⑤硬件和软件调试。 ⑥系统集成和测试。

第二章 TMS320C54x硬件结构

1、 TMS320C54X芯片的基本结构都包括哪些部分? 答:①中央处理器 ②内部总线结构 ③特殊功能寄存器 ④数据存储器RAM ⑤程序存储器ROM ⑥I/O口 ⑦串行口 ⑧主机接口HPI ⑨定时器 ⑩中断系统

2、TMS320C54X芯片的CPU主要由哪几部分组成? 答:①40位的算术运算逻辑单元(ALU)。 ②2个40位的累加器(ACCA、ACCB)。 ③1 个运行-16至31位的桶形移位寄存器。

④17×17位的乘法器和40位加法器构成的乘法器-加法器单元(MAC)。 ⑤比较、选择、存储单元(CSSU)。 ⑥指令编码器。

⑦CPU状态和控制寄存器。

3、TMS320VC5402共有多少可屏蔽中断?它们分别是什么?RS和NMI属于哪一类中断源? 答:TMS320VC5402有13个可屏蔽中断,RS和NMI属于外部硬件中断。 4、试分析下列程序的流水线冲突,画出流水线操作图。如何解决流水冲突? STLM A,AR0 STM #10,AR1 LD *AR1,B 解:流水线图如下图:

1 2 3 4 5 6 7

预取指

取指 译码 寻址 读数 执行 STLM A,AR0

写AR1

预取指 取指 译码 寻址 读数 执行

8 9

STM #10,AR1 (1st Word)

STM #10,AR1 (2nd Word)

LD *AR1,B

解决流水线冲突:

预取指

取指 预取指 译码 取指 写AR2 寻址 译码 写AR2 读数 寻址 读AR2 执行 读数 执行 最后一条指令(LD *AR1,B)将会产生流水线冲突,在它前面加入一条NOP指令可以解决流水线冲突。 5、试根据等待周期表,确定下列程序段需要插入几个NOP指令。 ①LD @GAIN, T STM #input,AR1 MPY *AR1+,A

解:本段程序不需要插入NOP指令 ②STLM B,AR2 STM #input ,AR3 MPY *AR2+,*AR3+,A

解:本段程序需要在MPY *AR2+,*AR3+,A语句前插入1条NOP指令 ③MAC @x, B STLM B,ST0 ADD @table, A, B

解:本段程序需要在ADD @table, A, B语句前插入2条NOP指令

第三章 TMS320C54x指令系统

1、已知(80H)=50H,AR2=84H,AR3=86H,AR4=88H。 MVKD 80H,*AR2 MVDD *AR2,*AR3 MVDM 86H, AR4

运行以上程序后,(80H)、(84H)、*AR3和AR4的值分别等于多少? 解:(80H)=50H,(84H)=50H,*AR3=50H,AR4=50H 2、已知,(80H)=20H、(81H)=30H。 LD #0,DP LD 80H,16,B ADD 81H,B

运行以上程序,B等于多少? 答:(B)=00 0000 0000H

3、阅读以下程序,分别写出运行结果。 .bss x,4 .data

table:.word 4,8,16,32 …… STM #x,AR1 RPT #2

MVPD table,*AR1+

解:数据表table中的常量4传送到以变量x 的地址为地址的存储单元中;数据表table中的常量8传送到以变量x+1 的地址为地址的存储单元中;数据表table中的常量16传送到以变量x+2 的地址为地址的存储单元中; .bss x,4 .data

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

STM #x,AR1 RPT #2

MVPD table,*+AR2

解:数据表table中的常量4传送到以变量x+1 的地址为地址的存储单元中;数据表table中的常量8传送到以变量x+2 的地址为地址的存储单元中;数据表table中的常量16传送到以变量x+3 的地址为地址的存储单元中;

第四章 汇编语言程序的开发工具及CCS集成开发环境

1、软件开发环境有哪几种?在非集成开发环境中,软件开发常采用哪些部分?

答:可以在两种开发环境中进行C54X的开发:非集成的开发环境和集成的开发环境。在非集成开发环境中,软件开发常采用:编辑、汇编、链接、调试等部分。 2、链接器对段是如何处理的?

答:链接器将一个或多个COFF目标文件中的各种段作为链接器的输入段,经过链接后在一个可执行的COFF输出模块中建立各个输出段,通过情况下是将不同目标文件中的同名段进行合并,并为各个输出段分配进具体的存储器中。 3、链接器能完成什么工作?链接器命令文件中,MEMORY命令和SECTIONS命令的任务是什么? 答:链接器将各个目标文件合并起来,并完成如下工作: (1)将各个段配置到目标系统的存储器。

(2)对各个符号和段进行重新定位,并给它们指定一个最终的地址。 (3)解决输入文件之间的未定义的外部引用。 MEMORY命令的作用:

MEMORY命令用来建立DSP应用系统中的存储器模型。通过这条命令,可以定义系统中所包含的各种形式的存储器,以及它们占用的地址范围。

SECTION命令的作用:

说明如何将输入段结合成输出段;在可执行程序中定义输出段;规定输出段在存储器中的存储位置;允许重新命名输出段。

第五章 TMS320C54x的汇编语言程序设计

1、伪指令和注释有什么差别?它们在程序中的作用一样吗?

答:伪指令用于为程序提供数据并指示汇编程序如何汇编程序,是汇编语言程序的一个重要内容。汇编伪指令主要完成以下工作: (1)将代码和数据汇编进指定的段

(2)为未初始化的变量在存储器中保留空间 (3)控制清单文件是否产生 (4)初始化存储器 (5)汇编条件代码块 (6)定义全局变量

(7)为汇编器指定可以获得宏的库 (8)考察符号调试信号

注释是程序的任选项。注释可以由ASCII码和空格组成。注释在汇编源清单中要显示,但不能影响汇编。注释在程序中的作用是说明程序语句的含义,以便对软件进行维护。

2、在堆栈操作中,PC当前地址为4020H,SP当前地址为1013H,运行PSHM AR7后,PC和SP的值分别是多少? 解:SP=1012H; PC=4021H 3、试编写0.25×(-0.1)的程序代码。 参考程序如下:

.title \

.mmregs .bss x,1 .bss y,1 .bss z,1 .data

.word -1*32768/10 .text .global _c_int00

AmpCoef: .word 25*32768/100

_c_int00: ssbx FRCT

stm #x,ar1 rpt #0x1

mvpd #AmpCoef,*ar1+ stm #x,ar2 stm #y,ar3 mpy *ar2,*ar3,A sth A,*ar1 .end

Wait: b Wait

4、将定点数0.00125用浮点数表示。 解:A=28H;T=19H

8、试写出以下两条指令的运行结果: ①EXP A

A=FFFD876624 T=0000

则以上指令执行后,B、T的值各是多少? 解: A=0xFFFD876624;T=5 ②NORM B

B=420D0D0D0D, T=FFF9

则以上指令执行后,B、T的值各是多少? 解:B=0x841A1A1A, T=FFF9

第六章 应用程序设计

1、FIR滤波器的算法为y(n)=a0x(n)+a1x(n-1)+a2x(n-2)+a3x(n-3)+a4x(n-4),试用线性缓冲区和直接寻址方法实现。 解:参考教材P179—P181。

2、FIR低通滤波器的截止频率为?n?0.2?,其输出方程为:

79y(n)??ax(n?i)。

ii?0存放a0?a79的系数表以及存放数据的循环缓冲区设置在DARAM中,如图6.1所示。试用MATLAB中的fir1函数确定各系数ai,用循环缓冲区实现。

解:运行Coef.m文件,生成滤波器所需系数文件。Coef.m文件内容如下: n=79; b=fir1(n,0.1);

fid=fopen('FIRCoef.inc','wt');

fprintf(fid,'%s %s %s\\n','FIRCoef',' .sect',' \fprintf(fid,' %s\\n',''); for j=1:1:(n+1)

fprintf(fid,' %s %6.0f\\n','.word',round(b(j)*16384)); end fclose(fid)

用循环缓冲区实现的参考程序如下:

;FIR滤波器的参考程序,使用循环缓冲区法。

.title \.mmregs .global _c_int00 .set 80 .set 256

K_FIR_BFFR

K_FIR_INDEX .set 1 K_FRAME_SIZE

stack_len .set 100 stack

FIR_DP d_filin

d_filout

.usect \.usect \.usect \

.usect \

fir_coff_table .usect \

d_data_buffer .usect \FIR_Dinbuf .usect \FIR_Doutbuf

.usect \

.asg AR0, FIR_INDEX_P .asg AR4,FIR_DATA_P .asg AR5,FIR_COFF_P .asg AR6,INBUF_P .asg AR7,OUTBUF_P

.copy \ .text ssbx FRCT

stm #0, CLKMD ; 切换CPU内部PLL到分频模式

.copy \

_c_int00: ssbx INTM ; INTM=1,禁止所有可屏蔽中断

;-------------------------------------------------------------------- Clk_Status:

ldm CLKMD, A and #01b, A bc Clk_Status, ANEQ

;检查是否已经切换到分频模式?

stm #0x07ff,CLKMD ;设置DSP 时钟 16.384MHZ nop

stm #0x3FF2,PMST stm #0x7FFF,SWWSR

stm #0xF800,BSCR

stm #0x0000, IMR ; 禁止所有可屏蔽中断 stm #0xFFFF, IFR ; 清除中断标志

stm #stack+stack_len,SP ;设置堆栈指针

nop

STM #FIR_Dinbuf,AR1 RPT #(K_FRAME_SIZE-1)

MVPD #FIRIn,*AR1+ ;以上3行的功能是把模拟数据拷贝到内存中。

STM #fir_coff_table,FIR_COFF_P RPT #K_FIR_BFFR-1;

;--------------------------------------------------------------------

本文来源:https://www.bwwdw.com/article/wh82.html

Top