DSP课后习题答案
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第六章 应用程序设计 1、FIR滤波器的算法为y(n)=a0x(n)+a1x(n-1)+a2x(n-2)+a3x(n-3)+a4x(n-4),试 用线性缓冲区和直接寻址方法实现。 解:参考教材P179—P181。 2、FIR低通滤波器的截止频率为,其输出方程为: 。 存放的系数表以及存放数据的循环缓冲区设置在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',' "FIRCOEF"'); 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滤波器的参考程序,使用循环缓冲区法。
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 的地址为地址的存储单元 中;
stm #0, CLKMD ; 切换CPU内部PLL到分频模式
Clk_Status:
ldm CLKMD, A
and #01b, A
bc Clk_Status, ANEQ ;检查是否已经切换到分频模式?
stm #0x07ff,CLKMD ;设置DSP 时钟 16.384MHZ
;--------------------------------------------------------------------
第三章 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
123456 7 89
STLM A,AR0
预 取 译 寻 读 执行 取指码址数 指
写 AR1
预 取 译 寻 读数 执行 取指码址 指
STM #10,AR1
(1st Word)
写写 AR2 AR2
预 取 译 寻址 读数 执
取指码
行
指
STM #10,AR1
(2nd Word)
LD *AR1,B
预 取 译码 寻址 读 执
RPT #(K_FRAME_SIZE-1)
MVPD #FIRIn,*AR1+ ;以上3行的功能是把模拟数据拷贝到内
FIR_Dinbuf .usect "fir_dinbuf",K_FRAME_SIZE
FIR_Doutbuf .usect "fir_doutbuf",K_FRAME_SIZE
.asg AR0, FIR_INDEX_P .asg AR4,FIR_DATA_P .asg AR5,FIR_COFF_P .asg AR6,INBUF_P .asg AR7,OUTBUF_P
②2个40位的累加器(ACCA、ACCB)。 ③1 个运行-16至31位的桶形移位寄存器。 ④17×17位的乘法器和40位加法器构成的乘法器-加法器单元 (MAC)。 ⑤比较、选择、存储单元(CSSU)。 ⑥指令编码器。 ⑦CPU状态和控制寄存器。 3、TMS320VC5402共有多少可屏蔽中断?它们分别是什么?和属于哪一 类中断源? 答:TMS320VC5402有13个可屏蔽中断,和属于外部硬件中断。 4、试分析下列程序的流水线冲突,画出流水线操作图。如何解决流水 冲突? STLM A,AR0 STM #10,AR1 LD *AR1,B 解:流水线图如下图:
AmpCoef: .word 25*32768/100 .word -1*32768/10 .text
_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
Wait: b Wait .end
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、简述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芯片系统。 ⑤硬件和软件调试。 ⑥系统集成和测试。
第四章 汇编语言程序的开发工具及CCS集成开发环境 1、软件开发环境有哪几种?在非集成开发环境中,软件开发常采用哪些部 分? 答:可以在两种开发环境中进行C54X的开发:非集成的开发环境和集 成的开发环境。在非集成开发环境中,软件开发常采用:编辑、汇编、
链接、调试等部分。 2、链接器对段是如何处理的? 答:链接器将一个或多个COFF目标文件中的各种段作为链接器的输入 段,经过链接后在一个可执行的COFF输出模块中建立各个输出段,通 过情况下是将不同目标文件中的同名段进行合并,并为各个输出段分配 进具体的存储器中。 3、链接器能完成什么工作?链接器命令文件中,MEMORY命令和 SECTIONS命令的任务是什么? 答:链接器将各个目标文件合并起来,并完成如下工作: (1)将各个段配置到目标系统的存储器。 (2)对各个符号和段进行重新定位,并给它们指定一个最终的地址。 (3)解决输入文件之间的未定义的外部引用。 MEMORY命令的作用: MEMORY命令用来建立DSP应用系统中的存储器模型。通过这条命令, 可以定义系统中所包含的各种形式的存储器,以及它们占用的地址范 围。 SECTION命令的作用: 说明如何将输入段结合成输出段;在可执行程序中定义输出段;规定输 出段在存储器中的存储位置;允许重新命名输出段。
.copy "FIRInput.inc" .copy "FIRCoef.inc"
.text
_c_int00: ssbx INTM
; INTM=1,禁止所有可屏蔽中断
ssbx FRCT
;--------------------------------------------------------------------
第二章 TMS320C54x硬件结构 1、 TMS320C54X芯片的基本结构都包括哪些部分? 答:①中央处理器 ②内部总线结构 ③特殊功能寄存器 ④数据存储器RAM ⑤程序存储器ROM ⑥I/O口 ⑦串行口 ⑧主机接口HPI ⑨定时器 ⑩中断系统 2、TMS320C54X芯片的CPU主要由哪几部分组成? 答:①40位的算术运算逻辑单元(ALU)。
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
取指
数行
指
读
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指令
.title "fir_main.asm" .mmregs .global _c_int00
K_FIR_BFFR .set 80 K_FIR_INDEX .set 1 K_FRAME_SIZE .set 256 stack_len .set 100
stack
.usect "STACK",stack_len
第五章 TMS320C54x的汇编语言程序设计 1、伪指令和注释有什么差别?它们在程序中的作用一样吗? 答:伪指令用于为程序提供数据并指示汇编程序如何汇编程序,是汇编 语言程序的一个重要内容。汇编伪指令主要完成以下工作: (1)将代码和数据汇编进指定的段 (2)为未初始化的变量在存储器中保留空间 (3)控制清单文件是否产生 (4)初始化存储器 (5)汇编条件代码块 (6)定义全局变量 (7)为汇编器指定可以获得宏的库 (8)考察符号调试信号 注释是程序的任选项。注释可以由ASCII码和空格组成。注释在汇编源 清单中要显示,但不能影响汇编。注释在程序中的作用是说明程序语句
FIR_DP
.usect "fir_vars",0
d_filin .usect "fir_vars",1
d_filout .usect "fir_vars",1
fir_coff_table .usect "fir_coff",K_FIR_BFFR
d_data_buffer .usect "fir_bfr",K_FIR_BFFR ; buffer size for the filter
来自百度文库
的含义,以便对软件进行维护。 2、在堆栈操作中,PC当前地址为4020H,SP当前地址为1013H,运行 PSHM AR7后,PC和SP的值分别是多少? 解:SP=1012H; PC=4021H 3、试编写0.25×(-0.1)的程序代码。 参考程序如下:
.title "FracAmp.asm" .mmregs .global _c_int00 .bss x,1 .bss y,1 .bss z,1 .data
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 的地址为地址的存储单元 中;
stm #0, CLKMD ; 切换CPU内部PLL到分频模式
Clk_Status:
ldm CLKMD, A
and #01b, A
bc Clk_Status, ANEQ ;检查是否已经切换到分频模式?
stm #0x07ff,CLKMD ;设置DSP 时钟 16.384MHZ
;--------------------------------------------------------------------
第三章 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
123456 7 89
STLM A,AR0
预 取 译 寻 读 执行 取指码址数 指
写 AR1
预 取 译 寻 读数 执行 取指码址 指
STM #10,AR1
(1st Word)
写写 AR2 AR2
预 取 译 寻址 读数 执
取指码
行
指
STM #10,AR1
(2nd Word)
LD *AR1,B
预 取 译码 寻址 读 执
RPT #(K_FRAME_SIZE-1)
MVPD #FIRIn,*AR1+ ;以上3行的功能是把模拟数据拷贝到内
FIR_Dinbuf .usect "fir_dinbuf",K_FRAME_SIZE
FIR_Doutbuf .usect "fir_doutbuf",K_FRAME_SIZE
.asg AR0, FIR_INDEX_P .asg AR4,FIR_DATA_P .asg AR5,FIR_COFF_P .asg AR6,INBUF_P .asg AR7,OUTBUF_P
②2个40位的累加器(ACCA、ACCB)。 ③1 个运行-16至31位的桶形移位寄存器。 ④17×17位的乘法器和40位加法器构成的乘法器-加法器单元 (MAC)。 ⑤比较、选择、存储单元(CSSU)。 ⑥指令编码器。 ⑦CPU状态和控制寄存器。 3、TMS320VC5402共有多少可屏蔽中断?它们分别是什么?和属于哪一 类中断源? 答:TMS320VC5402有13个可屏蔽中断,和属于外部硬件中断。 4、试分析下列程序的流水线冲突,画出流水线操作图。如何解决流水 冲突? STLM A,AR0 STM #10,AR1 LD *AR1,B 解:流水线图如下图:
AmpCoef: .word 25*32768/100 .word -1*32768/10 .text
_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
Wait: b Wait .end
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、简述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芯片系统。 ⑤硬件和软件调试。 ⑥系统集成和测试。
第四章 汇编语言程序的开发工具及CCS集成开发环境 1、软件开发环境有哪几种?在非集成开发环境中,软件开发常采用哪些部 分? 答:可以在两种开发环境中进行C54X的开发:非集成的开发环境和集 成的开发环境。在非集成开发环境中,软件开发常采用:编辑、汇编、
链接、调试等部分。 2、链接器对段是如何处理的? 答:链接器将一个或多个COFF目标文件中的各种段作为链接器的输入 段,经过链接后在一个可执行的COFF输出模块中建立各个输出段,通 过情况下是将不同目标文件中的同名段进行合并,并为各个输出段分配 进具体的存储器中。 3、链接器能完成什么工作?链接器命令文件中,MEMORY命令和 SECTIONS命令的任务是什么? 答:链接器将各个目标文件合并起来,并完成如下工作: (1)将各个段配置到目标系统的存储器。 (2)对各个符号和段进行重新定位,并给它们指定一个最终的地址。 (3)解决输入文件之间的未定义的外部引用。 MEMORY命令的作用: MEMORY命令用来建立DSP应用系统中的存储器模型。通过这条命令, 可以定义系统中所包含的各种形式的存储器,以及它们占用的地址范 围。 SECTION命令的作用: 说明如何将输入段结合成输出段;在可执行程序中定义输出段;规定输 出段在存储器中的存储位置;允许重新命名输出段。
.copy "FIRInput.inc" .copy "FIRCoef.inc"
.text
_c_int00: ssbx INTM
; INTM=1,禁止所有可屏蔽中断
ssbx FRCT
;--------------------------------------------------------------------
第二章 TMS320C54x硬件结构 1、 TMS320C54X芯片的基本结构都包括哪些部分? 答:①中央处理器 ②内部总线结构 ③特殊功能寄存器 ④数据存储器RAM ⑤程序存储器ROM ⑥I/O口 ⑦串行口 ⑧主机接口HPI ⑨定时器 ⑩中断系统 2、TMS320C54X芯片的CPU主要由哪几部分组成? 答:①40位的算术运算逻辑单元(ALU)。
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
取指
数行
指
读
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指令
.title "fir_main.asm" .mmregs .global _c_int00
K_FIR_BFFR .set 80 K_FIR_INDEX .set 1 K_FRAME_SIZE .set 256 stack_len .set 100
stack
.usect "STACK",stack_len
第五章 TMS320C54x的汇编语言程序设计 1、伪指令和注释有什么差别?它们在程序中的作用一样吗? 答:伪指令用于为程序提供数据并指示汇编程序如何汇编程序,是汇编 语言程序的一个重要内容。汇编伪指令主要完成以下工作: (1)将代码和数据汇编进指定的段 (2)为未初始化的变量在存储器中保留空间 (3)控制清单文件是否产生 (4)初始化存储器 (5)汇编条件代码块 (6)定义全局变量 (7)为汇编器指定可以获得宏的库 (8)考察符号调试信号 注释是程序的任选项。注释可以由ASCII码和空格组成。注释在汇编源 清单中要显示,但不能影响汇编。注释在程序中的作用是说明程序语句
FIR_DP
.usect "fir_vars",0
d_filin .usect "fir_vars",1
d_filout .usect "fir_vars",1
fir_coff_table .usect "fir_coff",K_FIR_BFFR
d_data_buffer .usect "fir_bfr",K_FIR_BFFR ; buffer size for the filter
来自百度文库
的含义,以便对软件进行维护。 2、在堆栈操作中,PC当前地址为4020H,SP当前地址为1013H,运行 PSHM AR7后,PC和SP的值分别是多少? 解:SP=1012H; PC=4021H 3、试编写0.25×(-0.1)的程序代码。 参考程序如下:
.title "FracAmp.asm" .mmregs .global _c_int00 .bss x,1 .bss y,1 .bss z,1 .data