2022年DSP原理与应用课后习题答案 .pdf
第一章:1、数字信号处理的实现方法一般有哪几种?答:数字信号处理的实现是用硬件软件或软硬结合的方法来实现各种算法。(1) 在通用的计算机上用软件实现;(2) 在通用计算机系统中加上专用的加速处理机实现;(3) 用通用的单片机实现,这种方法可用于一些不太复杂的数字信号处理,如数字控制;(4) 用通用的可编程DSP 芯片实现。与单片机相比,DSP 芯片具有更加适合于数字信号处理的软件和硬件资源,可用于复杂的数字信号处理算法;(5) 用专用的DSP 芯片实现。 在一些特殊的场合,要求的信号处理速度极高,用通用DSP 芯片很难实现(6)用基于通用dsp核的asic 芯片实现。2、简单的叙述一下dsp 芯片的发展概况?答:第一阶段,DSP 的雏形阶段(1980 年前后)。代表产品: S2811。主要用途:军事或航空航天部门。 第二阶段, DSP 的成熟阶段 (1990 年前后)。 代表产品: TI 公司的 TMS320C20 主要用途:通信、计算机领域。第三阶段,DSP 的完善阶段( 2000 年以后)。 代表产品:TI 公司的 TMS320C54 主要用途:各个行业领域。3、可编程dsp 芯片有哪些特点?答: 1、采用哈佛结构(1)冯。诺依曼结构, (2)哈佛结构(3)改进型哈佛结构2、采用多总线结构3.采用流水线技术4、配有专用的硬件乘法-累加器 5、具有特殊的dsp 指令 6、快速的指令周期7、硬件配置强8、支持多处理器结构9、省电管理和低功耗4、什么是哈佛结构和冯。诺依曼结构?它们有什么区别?答:哈佛结构: 该结构采用双存储空间,程序存储器和数据存储器分开,有各自独立的程序总线和数据总线,可独立编址和独立访问,可对程序和数据进行独立传输,使取指令操作、指令执行操作、 数据吞吐并行完成,大大地提高了数据处理能力和指令的执行速度,非常适合于实时的数字信号处理。冯。诺依曼结构:该结构采用单存储空间,即程序指令和数据共用一个存储空间, 使用单一的地址和数据总线,取指令和取操作数都是通过一条总线分时进行。当进行高速运算时,不但不能同时进行取指令和取操作数,而且还会造成数据传输通道的瓶颈现象,其工作速度较慢。区别:哈佛:该结构采用双存储空间,程序存储器和数据存储器分开, 有各自独立的程序总线和数据总线,可独立编址和独立访问,可对程序和数据进行独立传输,使取指令操作、指令执行操作、数据吞吐并行完成,大大地提高了数据处理能力和指令的执行速度,非常适合于实时的数字信号处理。冯:当进行高速运算时,不但不能同时进行取指令和取操作数,而且还会造成数据传输通道的瓶颈现象,其工作速度较慢。5、什么是流水线技术?答:每条指令可通过片内多功能单元完成取指、译码、取操作数和执行等多个步骤,实现多条指令的并行执行,从而在不提高系统时钟频率的条件下减少每条指令的执行时间。利用这种流水线结构, 加上执行重复操作,就能保证在单指令周期内完成数字信号处理中用得最多的乘法- 累加运算。(图)6、什么是定点dsp 芯片和浮点dsp芯片?它们各有什么优缺点?答:若数据以定点格式工作的称为定点DSP 芯片。若数据以浮点格式工作的称为浮点DSP芯片。定点dsp 芯片优缺点:大多数定点dsp 芯片称为定点dsp 芯片,浮点dsp 芯片优缺点:不同的浮点DSP 芯片所采用的浮点格式有所不同,有的DSP 芯片采用自定义的浮点格式,有的 DSP 芯片则采用IEEE 的标准浮点格式。7、dsp 技术的发展趋势主要体现在什么方面?答: (1)DSP 的内核结构将进一步改善(2)DSP 和微处理器的融合(3) DSP 和高档CPU 的融合 (4)DSP 和 SOC 的融合 ( 5)DSP 和 FPGA 的融合 (6)实时操作系统RTOS与 DSP 的结合(7)DSP 的并行处理结构(8)功耗越来越低名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 1 页,共 13 页 - - - - - - - - - 8、简述 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)。 (图)抗混叠滤波器AD 转换器 - 数字信号处理器DA转换器低通滤波器9、简述 dsp系统的设计步骤?答: :明确设计任务,确定设计目标算法模拟,确定性能指令选择DSP 芯片和外围芯片设计实时的DSP 芯片系统硬件和软件调试系统集成和测试。(图)10、 dsp系统有哪些特点?答: (1)接口方便(2)编程方便( 3)具有高速性(4)稳定性好(5)精度高( 6)可重复性好( 7)集成方便11、在进行dsp 系统设计时,应如何选择合理的dsp 芯片?答: 1、dsp 的运算速度2、dsp 芯片价格3、dsp 芯片运算精度4、 dsp 芯片的硬件资源5、dsp芯片的开发工具6、dsp 芯片的功耗7、其他因素。第二章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、处理器工作方式状态寄存器PMST 中的 MP/MC 、OVLY 和 DROM 三个状态位对C54x的存储空间结构各有何影响?当 OVLY= 0 时,程序存储空间不使用内部RAM 。当 OVLY= 1 时,程序存储空间使用内部RAM 。内部RAM同时被映射到程序存储空间和数据存储空间。当MP/ MC=0时,4000HEFFFH程序存储空间定义为外部存储器;F000HFEFFH 程序存储空间定义为内部ROM ;当MP/ MC=1时, 4000HFFFFH程序存储空间定义为外部存储。DROM=0 :0000H3FFFH 内 部RAM; 4000HFFFFH 外 部 存 储 器 ; DROM=1:0000H3FFFH 内部RAM ; 4000HEFFFH 外部存储器;F000HFEFFH 片内ROM ;FF00HFFFFH 保留。4 、 TMS320C54x 芯片的片内外设主要包括哪些电路? 通用 I/O 引脚定时器时钟发生器主机接口HPI 串行通信接口软件可编程等待状态发生器可编程分区转换逻辑5、TMS320C54x 芯片的流水线操作共有多少个操作阶段?每个阶段执行什么任务?完成一条指令都需要哪些操作周期?六个操作阶段 : 预取指 P;将 PC 中的内容加载PAB 取指 F; 将读取到的指令字加载PB 译码 D; 若需要,数据1 读地址加载DAB ;若需要,数据2 读地址加载CAB ;修正辅助寄存器和堆栈指针寻址 A; 数据 1 加载 DB;数据 2 加载 CB;若需要,数据3 写地址加载 EAB 读数 R; 数据 1 加载 DB ;数据 2 加载 CB;若需要,数据3 写地址加载EAB ;名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 2 页,共 13 页 - - - - - - - - - 执行 X。执行指令,写数据加载EB。6、TMS320C54x 芯片的流水线冲突是怎样产生的?有哪些方法可以避免流水线冲突?答:C54x 的流水线结构, 允许多条指令同时利用CPU 的内部资源。 由于 CPU 的资源有限,当多于一个流水线上的指令同时访问同一资源时,可能产生时序冲突。解决办法由 CPU 通过延时自动解决;通过程序解决,如重新安排指令或插入空操作指令。为了避免流水冲突,可以根据等待周期表来选择插入的NOP 指令的数量。7、TMS320C54x 芯片的串行口有哪几种类型?四种串行口:标准同步串行口SP,缓冲同步串行口BSP,时分多路串行口TDM , 多路缓冲串行口McBSP。8 、 TMS320VC5402 共有多少可屏蔽中断?它们分别是什么?NMI 和 RS 属于哪一类中断源?答: TMS320VC5402 有 13 个可屏蔽中断,RS 和 NMI 属于外部硬件中断。9、试分析下列程序的流水线冲突,画出流水线操作图。如何解决流水冲突?STLM A , AR0 STM #10 ,AR1 LD *AR1 ,B 解:流水线图如下图:解决流水线冲突:最后一条指令(LD *AR1 ,B)将会产生流水线冲突,在它前面加入一条 NOP 指令可以解决流水线冲突。10、试根据等待周期表,确定下列程序段需要插入几个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 指令第三章1、已知 (80H)=50H,AR2=84H,AR3=86H,AR4=88H。名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 3 页,共 13 页 - - - - - - - - - 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 的地址为地址的存储单元中;3.5TMS320C54x的数据寻址方式各有什么特点?应该应用在什么场合?答: TMS320C54x有 7 种基本的数据寻址方式:立即寻址,绝对寻址,累加器寻址,直接寻址,间接寻址,存储器映像寄存器寻址和堆栈寻址。1, 立即寻址:其特点是指令中包含有一个固定的立即数,操作数在指令中,因而运行较慢,需要较多的存储空间。它用于对寄存器初始化。 2, 绝对寻址:可以寻址任一数据存储器中操作数,运行较慢,需要较多的存储空间。它用于对寻址速度要求不高的场合。3, 累加器寻址:把累加器内容作为地址指向程序存储器单元。它用于在程序存储器和数据存储器之间传送数据。4, 直接寻址:指令中包含数据存储器的低7 位和 DP或 SP结合形成16 位数据存储器地址,它寻址速度快,用于对寻址速度要求高的场合。5, 间接寻址:利用辅助寄存器内容作为地址指针访问存储器,可寻址 64 千字 X16为字数据存储空间中任何一个单元。它用于按固定步长寻址的场合。6,堆栈寻址: 用于中断或子程序调用时,将数据保存或从堆栈中弹出。7, 存储器映像寄存器名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 4 页,共 13 页 - - - - - - - - - (MMR )寻址,是基地址为零的直接寻址,寻址速度快,它用于直接用MMR 名快速访问数据存储器的0 页。第四章1、软件开发的环境有哪几种?在非集成开发环境中,软件开发常采用哪些部分?答:可以在两种开发环境中进行C54X 的开发:非集成的开发环境和集成的开发环境。在非 集成开发环境中,软件开发常采用:编辑、汇编、链接、调试等部分。2、什么是COFF 格式?它有什么特点?答:汇编器和链路器生成的目标文件,是一个可以由C54x 器件执行的文件。这些目标文件的格式称为公共目标文件格式,即COFF。特点:在编写汇编语言程序时,COFF 采用代码段和数据段的形式,以便于模块化的编程,使编程和管理变得更加方便。3、 说明 .text 段、 .data 段和 .bss段分别包含什么内容? .text 段(文本段 ),通常包含可执行代码;.data 段(数据段 ),通常包含初始化数据;.bss 段(保留空间段 ),通常为未初始化变量保留存储空间。5、链接器对段是如何处理的? 答: 链接器将一个或多个COFF 目标文件中的各种段作为链接器的输入段,经过链接后在一个可执行的COFF 输出模块中建立各个输出段,通过情况下是将不同目标文件中的同名段进行合并,并为各个输出段分配进具体的存储器中。6、 什么是程序的重定位?答:将各个段配置到存储器中,使每个段都有一个合适的起始地址;将符号变量调整到相对于新的段地址的位置;将引用调整到重新定位后的符号,这些符号反映了调整后的新符号值。7、 宏定义、宏调用和宏展开分别指的是什么?答:在调用宏之前,必须先定义宏。可以在源程序的任何位置定义宏,宏定义的所有内容必须包含在同一个文件中。宏定义可以嵌套,即在一条宏指令中调用其他的宏指令。在定义宏之后,可在源程序中使用宏名进行宏调用。8、 链接器能完成什么工作?链接器命令文件中,MEMORY 命令和SECTIONS 命令的任务是什么 ? 答:链接器将各个目标文件合并起来,并完成如下工作:(1)将各个段配置到目标系统的存储器。(2)对各个符号和段进行重新定位,并给它们指定一个最终的地址。( 3)解决输入文件之间的未定义的外部引用。MEMORY 命令的作用:MEMORY 命令用来建立DSP 应用系统中的存储器模型。通过这条命令,可以定义系统中所包含的各种形式的存储器,以及它们占用的地址范围。SECTION 命令的作用:说明如何将输入段结合成输出段;在可执行程序中定义输出段;规定输出段在存储器中的存储位置;允许重新命名输出段。第六章 应用程序设计2、FIR 低通滤波器的截止频率为0.2n,其输出方程为:790( )()iiy na x ni。存放079aa的系数表以及存放数据的循环缓冲区设置在DARAM中,如图6.1 所示。试用MATLAB中的 fir1 函数确定各系数ai,用循环缓冲区实现。名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 5 页,共 13 页 - - - - - - - - - 解:运行 Coef.m 文件,生成滤波器所需系数文件。Coef.m 文件内容如下:n=79; b=fir1(n,0.1); fid=fopen(FIRCoef.inc,wt); fprintf(fid,%s %s %sn,FIRCoef, .sect, FIRCOEF); fprintf(fid, %sn,); for j=1:1:(n+1) fprintf(fid, %s %6.0fn,.word,round(b(j)*16384); end fclose(fid) 用循环缓冲区实现的参考程序如下:;FIR 滤波器的参考程序,使用循环缓冲区法。.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 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 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 .copy FIRInput.inc .copy FIRCoef.inc .text _c_int00: ssbx INTM ; INTM=1 ,禁止所有可屏蔽中断ssbx FRCT ;- stm #0, CLKMD ; 切换 CPU 内部 PLL 到分频模式名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 6 页,共 13 页 - - - - - - - - - Clk_Status: ldm CLKMD, A and #01b, A bc Clk_Status, ANEQ ;检查是否已经切换到分频模式?stm #0 x07ff,CLKMD ;设置 DSP 时钟16.384MHZ ;- nop stm #0 x3FF2,PMST stm #0 x7FFF,SWWSR stm #0 xF800,BSCR stm #0 x0000, IMR ; 禁止所有可屏蔽中断stm #0 xFFFF, 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; MVPD #FIRCoef,*FIR_COFF_P+ ;把滤波器常数拷贝到内存中。STM #K_FIR_INDEX,FIR_INDEX_P STM #d_data_buffer,FIR_DATA_P ; load cir_bfr address for the recent samples RPTZ A,#K_FIR_BFFR STL A,*FIR_DATA_P+ ; 清除滤波器缓冲区,所有数据存储单元置0。STM #(d_data_buffer+K_FIR_BFFR-1), FIR_DATA_P ; STM #fir_coff_table, FIR_COFF_P; AR5指向滤波器系数缓冲区最低地址。STM #FIR_Dinbuf,INBUF_P AR6 指向输入数据缓冲区,准备读入数据。STM #FIR_Doutbuf,OUTBUF_P ; AR7 指向输出数据缓冲区,准备读出数据。;修改数据页指针LD #FIR_DP,DP STM #K_FRAME_SIZE-1,BRC ; 程序执行256 次。RPTBD fir_filter_loop-1 STM #K_FIR_BFFR,BK ; LD *INBUF_P+, A ; 从输入数据缓冲区读入数据,准备处理。fir_filter: 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 7 页,共 13 页 - - - - - - - - - STL A,*FIR_DATA_P+% ;读入最新数据RPTZ A,(K_FIR_BFFR-1) MAC *FIR_DATA_P+0%,*FIR_COFF_P+0%,A ; 累加处理。STH A, *OUTBUF_P+ ; 把数据输出到输出缓冲区,可以验证结果。fir_filter_loop Wait b Wait .END 第七章 TMS320C54x 片内外设、接口及应用1、已知 TMS320C54X 的 CLKOUT频率为 4MHz ,那么,在 SAM 工作方式下,主机的时钟频率是多少?解:在 SAM 工作方式下,主机频率可达3.2MHz 或 2.4MHz 。在 HOM 工作方式下,主机的时钟频率与TMS320C54X 的时钟频率有关吗?答:在 HOM 工作方式下,主机的时钟频率与TMS320C54X 的时钟频率无关。2、试分别说明下列有关定时器初始化和开放定时中断语句的功能(针对5402 处理器)。STM #0004H ,IFR 解:清除外部中断2 标志位STM #0080H ,IMR 解:允许定时器T1 或 DMAC1 中断(使用哪一种中断由DMA 通道优先级和使能控制寄存器 DMPREC 控制。在复位以后,中断被配置为定时器T1 中断) 。RSBX INTM 解:使能所有可屏蔽中断。STM #0279H ,TCR 解: 设置定标计数器的值PSC 为 9; 定时器分频系数为9; 以 PRD 中的值加载TIM , 以 TDDR中的值加载PSC;定时器停止工作。3、试分别说明下列语句的功能。STM #SPCR10,SPSA0 STM #0001H,BSP0 解:对串口控制寄存器SPCR10 赋值。不使用数字循环返回模式,接收数据DRR1 ,2采用右对齐方式,连续时钟方式,DX 使能判断,接收中断由RRDY 产生,接收移位寄存器未超载,串口接收器准备好,使能串口接收器。STM #SPCR20,SPSA0 STM #0081H,BSP0 解:对串口控制寄存器SPCR20 赋值。串口使用软件模式,帧同步逻辑、采样率发生器复位,由发送准备好XRDY驱动发送中断;发送移位寄存器为空,发送器未准备好,使能串口发送器。STM #SPCR20,SPSA0 ORM #01000001B,BSP0 解: 修改串口控制寄存器SPCR20 的值。 由采样率发生器产生帧同步信号,使能串口发送器。4、已知中断向量TINT=013H ,中断向量地址指针IPTR=0111H ,求中断向量地址。解:中断向量地址=(100010001B)9+(10011)2=88CCH 第八章1、一个典型的dsp 系统通常有哪些部分组成?画出原理框图?答:一个完整的DSP 系统通常是由DSP 芯片和其他相应的外围器件构成。一个典型的DSP 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 8 页,共 13 页 - - - - - - - - - 系统应包括抗混叠滤波器、数据采集A/D 转换器、数字信号处理器DSP、 D/A 转换器和低通滤波器等。DSP 系统的工作过程:将输入信号x(t)经过抗混叠滤波,滤掉高于折叠频率的分量,以防止信号频谱的混叠。经过采样和A/D 转换器,将滤波后的信号转换为数字信号x(n)。 数字信号处理器对x(n) 进行处理, 得数字信号y(n)。 经D/A 转换器,将 y(n)转换成模拟信号;经低通滤波器, 滤除高频分量, 得到平滑的模拟信号y(t) 。2、dsp 系统硬件设计过程都有哪些步骤?答:第一步:确定硬件实现方案;第二步:器件的选择;第三步:原理图设计;第四步:PCB 设计;第五步:硬件调试;第九章工程项目的管理CCS 开发环境对用户系统采用工程项目的集成管理,使用户系统的开发和调试变得简单明了。在开发过程中,CCS 会在开发平台中建立不同独立程序的跟踪信息,通过这些跟踪信息对不同的文件进行分类管理,建立相应的文件库和目标文件。一个工程项目包括源程序、库文件、 链接命令文件和头文件等,它们按照目录树的结构组织在工程项目中。工程项目构建(编译链接 )完成后生成可执行文件。9.1 CCS集成开发环境都有哪些功能?答: CCS集成开发环境。此环境集编辑,编译,链接,软件仿真,硬件调试和实时跟踪等功能于一体,包括编辑工具,工程管理工具和调试工具等。9.3 在 CCS的所有窗口中,都含有一个关联菜单。怎样打开这个关联菜单?答,只要在该窗口中单击右键就可以打开关联菜单。9.4 CCS软件为用户提供哪几种常用的工具条?答:标准工具条,编辑工具条,项目工具条和调试工具条9.6 CCS软件可为用户提供各种窗口,常用的窗口都有哪些?怎样打开?答: 反汇编窗口,存储器窗口,寄存器窗口,观察窗口,反汇编窗口:主要用来显示反汇编后的指令和调试所需的符号信息,包括反汇编指令,指令所存放的地址和相应的操作码。当程序装入目标处理器或仿真器后,CCS会自动打开反汇编窗口。存储器窗口: 可以直接显示存储器的内容。在调试程序的过程中,可直接观察存储器的内容来确定程序的正确性。9.7 一个工程项目都包含有哪些文件?怎样建立一个新的工程项目?答:一个工程项目包括源程序,库文件,链接命令文件和头文件等,它们按照目录树的结构组织在工程项目中。见课本(P358)9.8 CCS软件为用户构建工程项目提供了哪几种操作?这些操作有什么不同?答:1,编译文件: 编译文件仅完成对当前源文件的编译,不进行链接。 2,增加性构建:增加性构建仅对修改的源文件进行编译,先前编译过,没有修改的文件不再进行编译。3,全部重新构建:是对当前工程项目中的所有文件进行重新编译,重新链接,形成输输入放 大 电路抗混叠滤波器A/D转换器DSP I/O 口存储器D/A转换器平 滑滤 波输出名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 9 页,共 13 页 - - - - - - - - - 出文件。 4,停止构建:停止当前的构建进程。9.9 怎样使用CCS软件来调试程序?其都有哪些步骤?答:CCS开发环境提供了异常丰富的调试手段。当完成工程项目构建,生成目标文件后,就可以进行程序的调试。一般的调试步骤为:1、装入构建好的目标文件;2、设置程序断点,探测点和评价点;3、执行程序; 4、程序停留在断点处,查看寄存器和内存单元的数据,并对中间数据进行在线(或输出)分析。反复上述过程直到程序达到预期的功能为止。9.10 在 CCS软件中, 程序运行控制经常需要哪些操作?CCS提供了四种实时运行程序的操作,它们分别是哪些操作?各有什么不同?答: 在调试程序的过程中,经常需要复位,执行,单步执行等操作。1、装载文件2、复位目标处理器3、单步运行4、实时运行第 7 章程序;初始化定时器0 ;根据定时长度计算公式:Tt=T* (TDDR+1) * (PRD+1) ;给定 TDDR=9 ,PRD=1599, CLKOUT 主频 f=4MHz ,T=250ns ;Tt=250*(9+1)*(1599+1)=4,000,000(ns)=4(ms) STM #1599,TIM0 STM #1599,PRD0 STM #K_TCR0 , TCR0 ;启动定时器0 中断RET ;定时器0 的中断服务子程序:通过引脚XF 给出周期为8ms 的占空比;为 50%的方波波形t0_flag .usect “ vars” ,1 ;当前 XF 输出电平标志位;若 t0_flag=1,则 XF=1 ;若 t0_flag=0,则 XF=0 time0_rev: PSHM TRN PSHM T PSHM ST0 PSHM ST1 BITF t0_flag, #1 BC xf_out ,NTC SSBX XF ST #0,t0_flag B next xf_out :RSBX XF ST #1,t0_flag next:POPM ST1 POPM ST0 POPM T POPM TRN RETE (3)方波发生器程序清单周期为 8ms 的方波发生器,定时中断周期为4ms,每中断一次,输出端电平取一次反。;abc1.asm 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 10 页,共 13 页 - - - - - - - - - ;定时器 0 寄存器地址TIM0 set 0024H PRD0 set 0025H TCR0 set 0026H ;K_TCR0 :设置定时器控制寄存器的内容K_TCR0_SOFT .set 0b ;Soft=0 K_TCR0_FREE .set 0b ;Free=0 K_TCR0_PSC .set 1001b ;PSC=9H K_TCR0_TRB .set 1b ;TRB=1 K_TCR0_TSS .set 0b ;TSS=0 K_TCR0_TDDR .set 1001b ;TDDR=9 K_TCR0 .set K_TCR0_SOFT| K_TCR0_FREE| K_TCR0_PSC| K_TCR0_TRB| K_TCR0_TSS| K_TCR0_TDDR 周期信号的周期检测定时器计数器的使用对于周期信号的周期检测,可在信号的每个周期内发出一个脉冲,然后通过程序计算两个脉冲之间的时间来确定信号的周期。当脉冲来临时触发外部中断INT0 外部中断 INT0 用来记录脉冲定时器0 用来记录时间。为了增加计时长度,可在程序中设置一级计数器。定时器 0 的寄存器用来记录低位时间,程序中的计数器用来记录高位时间,在外部中断服务程序中读取时间。在定时器0 中断服务程序中对计数器加1,实现低位时间的进位。;abc3.asm ;定时器0 寄存器地址TIM0 .set 0024H PRD0 .set 0025H TCR0 .set 0026H TSSSET .set 010H TSSCLR .set 0ffefH ; K_TCR0 :设置定时器控制寄存器的内容K_TCR0_SOFT .set 0b ;Soft=0 K_TCR0_FREE .set 0b ;Free=0 K_TCR0_PSC .set 1111b ;PSC=15 K_TCR0_TRB .set 1b ;TRB=1 K_TCR0_TSS .set 0b ;TSS=0 K_TCR0_TDDR .set 1111b ;TDDR=15 K_TCR0 .set K_TCR0_SOFT| K_TCR0_FREE| K_TCR0_PSC| K_TCR0_TRB| K_TCR0_TSS| K_TCR0_TDDR t_counter .usect “ vars” ,1 t_ptr_counter .uset “ vars” ,1 tim_ptr_counter .usect “ vars” ,1 tcr_ptr_counter .usect “ vars” ,1 ;变量定义t_array .usect “ vars” ,15 tim_array .usect “ vars” ,15 tcr_array .usect “ vars” ,15 asg AR7,t_ptr asg AR6,tim_ptr 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 11 页,共 13 页 - - - - - - - - - asg AR5,tcr_ptr _inittime :;初始化定时器0,定时长度为T*393,216 ;定时长度 =T*(TDDR+1)*(PRD+1),本程序中TDDR=11 ,PRD=32767,;主频为f,T=1/f STM #32767, TIM0 STM #32767, PRD0 STM # K_TCR0 ,TCR0 ST #0,*(t_counter) ST #t_array,*( t_ptr_counter) ST #tim_array ,*( tim_ptr_counter) ST #tcr_array,*( tcr_ptr_counter) RET;外部中断INT0 ,在脉冲来时被激活并响应服务子程序,从脉冲响应;到响应存在延迟int0isr :PSHM ST0 PSHM ST1 PSHM t_ptr PSHM tim_ptr PSHM tcr_ptr PSHM AL PSHM AH PSHM AG PSHM BL PSHM BH PSHM BG 中断服务程序: ;外部中断INT0 中断服务子程序:INT0ISR : PSHM ST0 ;保存寄存器PSHM ST1 PSHM BG PSHM BH PSHM BL PORTR HPIPORT,*(hpi_var) ;读 HPI 口STL *(hpi_var) ,B AND #01B, B BC IR2,ANEQ ;首先判别是否是IR1, ;是,则执行服务程序, ;否,则跳至对IR2 的判断;扩展中断IR0 的服务程序主体IR2:STL *(hpi_var) ,B AND #010B,B BC INT0END ,ANEQ ;首先判别是否是IR1,;是,则执行服务程序,;否,则跳转至结束;扩展中断IR1 的服务程序主体名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 12 页,共 13 页 - - - - - - - - - INT0ED : POPM BL POPM BH POPM BG POPM ST1 POPM ST0 ;外部中断INT1 中断服务子程序:INT1ISR : PSHM ST0 ;保存寄存器PSHM ST1 PSHM BG PSHM BH PSHM BL PORTR HPIPORT ,*(hpi_var) ;读 HPI 口STL *(hpi_var) ,B AND #0100B,B BC IR4,ANEQ ;首先判别是否是IR3,;是,则执行服务程序,;否,则跳至对IR4 的判断RETE ;扩展中断IR3 服务程序主体IR4:S