当前位置:文档之家› 14_DSP技术原理及应用教程_课后答案

14_DSP技术原理及应用教程_课后答案

1 .1 数字信号处理器与一般通用计算机和单片机的主要差别有哪些?答:在通用的计算机上用软件实现该方法速度太慢, 适于算法仿真;在通用计算机系统上加上专用的加速处理机实现该方法专用性较强,应用受限制,且不便于系统的独立运行;用通用的单片机实现这种方式多用于一些不太复杂的数字信号处理,如简单的PID控制算法;用通用的可编程DSP芯片实现与单片机相比,DSP芯片具有更加适合于数字信号处理的软件及硬件资源,可用于复杂的数字信号处理算法;用专用的DSP芯片实现在一些特殊场合, 要求信号处理速度极高, 用通用的DSP 芯片很难实现,而专用的DSP 芯片可以将相应的信号处理算法在芯片内部用硬件实现,不需要编程。

1 .4 什么是冯·诺埃曼结构计算机, 什么是哈佛结构计算机, 二者的特点是什么?答:冯.诺曼结构:将指令、数据存储在同一个存储器中,统一编址,译稿指令计数器提供的地址来区分是指令还是数据。

取指令和取数据都访问统一存储器,数据吞吐率低。

哈佛结构:程序和数据存储在不同的存储空间,程序存储空间和数据存储空间是两个相互独立的存储空间,每个存储空间独立编址,独立访问。

1 .8 DSP的工作电压越来越低,内核电压已低至1V,这样做有何意义?为什么DSP内核工作电压和I/O工作电压不一样?答:集成电路速度越来越快,随之而来,功耗越来越大,这样散热就是很大的问题.在芯片走线尺寸不变的情况下,内部阻抗也不变,降低工作电压会降低功耗,这样能再较高频率下芯片发热较少。

内核不容易受到外部干扰,所以电压可以做的较低,但IO容易受外部信号干扰,保持较高电压容易是器件工作稳定,这是功耗和稳定性的折中。

1 .10 定点DSP和浮点DSP有什么区别?在具体应用中, 应如何选择?答:在浮点DSP中,数据即可以表示成整数,也可以表示成浮点数。

浮点数在运算中,表示数的范围由于其指数可自动调节,因此可避免数的规格化和溢出等问题。

但浮点DSP 一般比定点DSP 复杂, 成本也较高。

在定点DSP中, 数据采用定点表示方法。

它有两种基本表示方法:整数表示方法和小数表示方法。

整数表示方法主要用于控制操作、地址计算和其他非信号处理的应用, 而小数表示方法则主要用于数字和各种信号处理算法的计算中2 .4 当要使用硬中断INT3作为中断响应矢量时,请问可屏蔽中断寄存器IMR和中断标志寄存器IFR应如何设置?答:IFR中INT3位=1,IMR中INT3位=1,使能中断。

2 .5 若处理器方式寄存器PMST的值设为01A0H,而中断矢量为INT3,那么在中断响应时, 程序计数器指针PC的值为多少?答:PMST中IPTR=(000000011)b,int3中断向量号为24H,做移量为后变为60H,则中断响应时程序计数器指针PC=01E0H.2 .10 DSP如何与不同速度的片外存储器及其他外设进行数据交换?答:软件可编程等待状态发生器可以将外部总线周期扩展到7个机器周期,以使’C54x能与低速外部设备接口。

而需要多于7个等待周期的设备,可以用硬件READY线来接口。

2 .11 TMS320C54x可进行移位操作,它的移位范围是多少?答:’C54x的移位操作最多可以左移31位,或右移16位。

(-16~31)2 .13 为什么说应尽量利用DSP的片内存储器?答:与片外存储器相比,片内存储器不需要插入等待状态,因此成本低,功耗小。

2 .14 如何操作通用I/ O 引脚XF和BIO?答:XF信号可以由软件控制。

通过对STl中的XF位置1得到高电平,清除而得到低电平。

对状态寄存器置位的指令SSBX和对状态寄存器复位的指令RSBX可以用来对XF置位和复位。

同时XF引脚为高电平和低电平,亦即CPU向外部发出1和0信号。

程序可以根据BIO的输入状态有条件地跳转,可用于替代中断。

条件执行指令(XC)是在流水线的译码阶段检测BIO的状态,其它条件指令(branch、call和return)是在流水线的读阶段检测BIO 的状态的。

4 .1 写出汇编语言指令的格式, 并说明应遵循怎样的规则?答:助记符指令格式:[标号][:] 助记符[操作数列表] [;注释]代数指令格式:[标号][:] 代数指令[;注释]应遵循下列规则:①语句的开头只能是标号、空格、星号或分号。

②标号是可选项,如果使用,必须从第一列开始。

③每个域之间必须由一个或多个空格来分开。

制表符等同于空格的作用。

⑤源语句的字符数每行不能超过200个。

4 .2 TMS320C54x 有几种寻址方式? 它们是什么?答:寻址方式有七种;他们是:○1即数寻址;②绝对地址寻址;③累加器寻址;④直接寻址;⑤间接寻址;⑥存储器映射寄存器寻址;⑦堆栈寻址;4 .4 直接寻址有两种方式, 它们是什么? 如何控制? 当SP = 2000H, DP = 2 , 偏移地址为25H 时, 分别寻址的是哪个存储空间的哪个地址单元?答:(1)直接寻址中,操作数是一个数据页内的偏移地址,而所在的数据页由数据页指针DP或SP决定,该偏移地址与DP和SP的值决定了在数据存储器中的实际地址;(2)位于状态寄存器ST1中的编译方式位(CPL)(bit14)决定选择采用哪种方式来产生实际地址。

CPL=0 偏移地址与9bits的DP域相结合形成16bits的数据存储器地址。

CPL=1 偏移地址加上SP的值形成16bits的数据存储器地址。

(3)当CPL=0时,寻址的是数据存储空间的0125h地址单元;当CPL=1时,寻址的是数据存储空间的2025h地址单元;4 .13 已初始化段和未初始化段的含义是什么? 由哪些伪指令来完成它们的定义?答:未初始化的段占用’C54x DSP的存储空间,它通常被分配在RAM中。

这些段在目标文件中并没有实际的内容,只是保留一定的存储空间,程序运行时可以使用这些空间来产生或存储变量。

已初始化的段包括可执行的代码或已初始化的数据。

装载程序时这些在目标文件里的段被放在’C54x的存储空间中。

未初始化段定义伪指令有.bss和.usect指令;已初始化的段定义伪指令有.text、.data、.sect指令5 .1 COFF文件格式中的段是如何定义的,它们的作用是什么?答:COFF文件中的段就是一段代码或数据,或是保留的空间。

目标文件被分成各个段,这些数据段和代码段在内存空间中占据各自的位置。

目标文件中的各个段是分开的而且是不同的。

COFF目标文件总是包含3个默认段:.text、.data和.bss段。

.text段通常包含可执行代码;.data段一般包含已经初始化的数据(程序运行时所需的具体数据);.bss段通常为变量保存空间(未初始化段)。

段的使用能更有效地分配目标存储器。

5 .3 链接命令文件有什么作用?在生成DSP代码过程中何时发挥这些作用?答:链接命令文件(.cmd文件)通过段定位控制命令,分配程序代码空间、数据代码空间、程此命令文件链接example.obj和vector.obj两个目标文件(输入文件),并生成一个映像文件example.map以及一个可执行的输出文件example.out,标号“start”是程序的入口。

5.4 用C语言设计时C编译器会产生哪些代码段?它们包含哪些内容?如何将它们配置到目标存储器中?答:.text段包括可执行代码、字符串和常量。

.cinit段包括初始化常量和常数表。

.const段为字符串常量和以const关键字定义的常量。

.switch段用于开关(switch)语句的数据表。

通常.text、.cinit和.switch段可以链接到系统ROM或RAM中去, 但必须放在程序存储空间(page0);而.const段可以链接到系统ROM或RAM中去,但必须放在数据存储器(page1)。

.bss段保留全局和静态变量空间。

在程序开始运行时,C的引(boot)程序将数据从cinit段复制到.bss段。

.Stack段为C的系统堆栈分配存储空间,用于传递变量。

.Sysmem段为动态存储器函数malloc、calloc、realloc分配存储器空间。

以上3个段链接到系统RAM中去,但必须放在数据存储器(page1)中。

5 .8 DSP编程可采用C或汇编编程,两种编程方法各有何优缺点?答:用C语言开发DSP程序不仅使DSP 开发的速度大大加快,而且开发出来的DSP 程序可读性和可移植性都大大增强,程序修改也极为方便。

采用C编译器的优化功能可以提高C代码的效率,有时C代码的效率甚至接近于手工代码的效率。

在DSP芯片的运算能力不是十分紧张时用C语言开发DSP程序是非常合适的。

但在一般情况下,C代码的效率还是无法与手工编写的汇编代码的效率相比,如FFT程序等。

因为即使是最佳的C编译器,也无法在任何情况下都能最佳地利用DSP芯片所提供的各种资源,如TMS320C54x所提供的循环寻址和可用于FFT的位倒序寻址等。

用C语言编写的中断程序,虽然可读性很好,但只要进入中断程序(不管程序中是否用到),中断程序就会对寄存器进行保护,从而降低中断程序的效率。

如果中断程序频繁被调用,那么即使是一条指令也会影响全局。

此外,用C语言编程,DSP芯片的某些硬件控制也不如用汇编语言方便,有些甚至无法用C语言实现。

因此,通常DSP应用程序往往需要用C语言和汇编语言的混合编程方法来实现,以达到最佳的利用DSP芯片软、硬件资源的目的。

5 .10 在文件的链接过程中,需要用到Linker命令文件。

请按如下参数设计一个命令文件,其参数为:中断向量表起始地址为7600H;长度为8000H ;源程序代码在中断向量之后;初始化数据起始为1F10H;长度为4000H;未初始化数据在初始化数据之后。

答:5.4 用C语言设计时C编译器会产生哪些代码段?它们包含哪些内容?如何将它们配置到目标存储器中?答:.text段包括可执行代码、字符串和常量。

.cinit段包括初始化常量和常数表。

.const段为字符串常量和以const关键字定义的常量。

.switch段用于开关(switch)语句的数据表。

通常.text、.cinit和.switch段可以链接到系统ROM或RAM中去, 但必须放在程序存储空间(page0);而.const段可以链接到系统ROM或RAM中去,但必须放在数据存储器(page1)。

.bss段保留全局和静态变量空间。

在程序开始运行时,C的引(boot)程序将数据从cinit段复制到.bss段。

.Stack段为C的系统堆栈分配存储空间,用于传递变量。

.Sysmem段为动态存储器函数malloc、calloc、realloc分配存储器空间。

以上3个段链接到系统RAM中去,但必须放在数据存储器(page1)中。

相关主题