5、已知FIR滤波器的系统函数为
H(z)??(???.?z??????.?z????.?z???z??)
求其单位脉冲响应h(n),判断是否具有线性相位,求其幅度特性函数和相位特性函数。
6、用矩形窗设计一个线性相位低通FIR滤波器,要求过渡带宽度不超过?/?rad。希望逼近的理想低通滤波器频率响应函数为:Hd(ej??e?j??,?????c)??
??,?c????(1)求出理想低通滤波器的单位脉冲响应hd(n);
(2) 求出加矩形窗设计的低通FIR滤波器的单位脉冲响应h(n)的表达式,确定?与N的关系。
7、用窗设计法设计一个线性相位FIR低通滤波器,要求通带截止频率为?/?rad,过渡带宽为??/??rad,阻带最小衰减为45dB。
(1)选择合适的窗函数及其长度,求出h(n)的表达式; (2)用MATLAB绘出FIR的频谱特性。 解:
8、分别用矩形窗、汉宁窗、汉明窗、Blackman、Kaise(β=8.5)窗设计10阶(N=11)FIR数字滤波器,使得其频谱特性满足:
??,?????.?? |H(ej?)|????,?.?????绘出滤波器单位取样响应和频率特性。
9、采用频率采样法和Blackman窗函数设计一个FIR低通数字滤波器,取样响应长度为32,截止频率取?c?0.3?。 解:
10、采用频率采样法和Blackman窗函数设计一个10阶FIR高通数字滤波器,截止频率取?c?0.3?。
第8章 TMS320C55x DSP处理器思考题
1.C55x CPU包括哪些功能单元?
2.C55x内部总线有哪些?各有什么作用? 3.C55x的CPU包括哪几个状态寄存器?
4.C55x的CPU在读取程序代码和读写数据时有什么不同? 答:
5.C55x的堆栈有哪些种类?涉及到的寄存器有哪些? 6.C55x对中断是如何处理的? 7.C55x有哪些寻址方式?
8.阅读下列程序,给程序加上注释,指出该程序的功能。 (1)mov *AR0+,AC0
add *AR0+,AC0 mov AC0,T0
(2)mpym *AR0+,*AR1+,AC0
mpym *AR0+,*AR1+,AC1
26
add AC1,AC0
mpym *AR0+,*AR1+,AC1 add AC1,AC0 mov AC0,T0
9.C55x的哪些指令最适合于完成以下运算 (1)
?xi?0L?1i?0L?1iyi
(2)
?(xL?1i?0ii?yi)2
(3)
?h[x(n?i)?x(n?L?1?i)]
10.什么是段指针?有何用途? 11.什么是命令文件?有何用途?
12.标号和注释有什么差别?各自的作用是什么? 13.MEMORY和SECTIONS指令的作用是什么? 14.伪指令的作用是什么?
15.什么是初始化段和末初始化段?
参考答案
1. C55x芯片的CPU包含5个功能单元,分别为:指令缓冲单元(I单元);程序流单元(P单元);地址-数据流单元(A单元);数据运算单元(D单元);存储器接口单元(M单元)。
2.C55x芯片内部含有12组独立总线,分别为:程序地址总线(PAB):1组,24位;程序数据总线(PDB):1组,32位;数据读地址总线(BAB、CAB、DAB):3组,24位;数据读总线(BB、CB、DB):3组,16位;数据写地址总线(EAB、FAB):2组,24位;数据写总线(EB、FB):2组,16位。具体功能如下表
总 线 PAB PB CAB、DAB CB、DB BAB 宽 度 24位 32位 每组24位 每组16位 24位 功 能 读程序的地址总线,每次从程序空间读时,传输24位地址 读程序的数据总线,从程序存储器传送4字节(32位)的程序代码给CPU 这两组读数据的地址总线,都传输24位地址。DAB在数据空间或I/O空间每读一次时传送一个地址,CAB在两次读操作里送第二个地址 这两组读数据的数据总线,都传输16位的数值给CPU。DB从数据空间或I/O空间读数据。CB在读长类型数据或读两次数据时送第二个值 这组读数据的地址总线,在读系数时传输24位地址。许多用间接寻址模式来读系数的指令,都要使用BAB总线来查询系数值 这组读数据的数据总线,从内存传送一个16位数据值到CPU。 BB不和外存连接。BB传送的数据,由BAB完成寻址某些专门的指令,BB 16位 在一个周期里用间接寻址方式,使用BB、CB和DB来提供3个16位的操作数。经由BB获取的操作数,必须存放在一组存储器里,区别于CB和DB可以访问的存储器组 EAB、FAB EB、FB 每组24位 每组16位 这两组写数据的地址总线,每组传输24位地址。EAB在向数据空间或I/O空间写时传送地址。FAB在双数据写时,传送第二个地址 这两组写数据的数据总线,每组都从CPU读16位数据。EB把数据送到数据空间或I/O空间。FB在写长类型数据或双数据写时传送第二个值 27
3.C55x的CPU包括4
27
个状态寄存器,分别为ST0_55、 ST1_55 、ST2_55、 ST3_55。
4.当CPU读取程序代码时,使用24位地址访问相关字节;而CPU读写数据时,使用23位地址访问相关的16位字。两种情况下地址总线上均为24位,只是数据寻址时地址总线上的最低位强制填充0。 5.C55x支持两个16位堆栈,即数据堆栈和系统堆栈,涉及到的寄存器如下表 寄存器 XSP SP XSSP SSP SPH 含 义 扩展数据堆栈指针 数据堆栈指针 扩展系统堆栈指针 系统堆栈指针 XSP和XSSP的高位域部分 指令访问 是MMR,可通过专用指令访问 不是MMR,只能通过专用指令访问 是MMR,可通过专用指令访问 是MMR,可通过专用指令访问 注意:写XSP或XSSP都会影响SPH的值 访 问 属 性 不是MMR(存储器映射寄存器),只能通过专用 6.DSP处理中断的步骤如下:
(1)接收中断请求。软件和硬件都要求DSP将当前程序挂起。(2)响应中断请求。CPU必须响应中断,如果是可屏蔽中断,响应必须满足某些条件。如果是不可屏蔽中断,则CPU立即响应。(3)准备进入中断服务子程序。CPU要执行的主要任务有:①完成当前指令的执行,并冲掉流水线上还未解码的指令;②自动将某些必要的寄存器的值保存到数据堆栈和系统堆栈;③从用户实现设置好的向量地址获取中断向量,该中断向量指向中断服务子程序。(4)执行中断服务子程序。CPU执行用户编写的ISR。ISR以一条中断返回指令结束,自动恢复步骤(3)中自动保存的寄存器值。 7.C55x芯片通过以下三种寻址方式访问数据空间、存储器映射寄存器、寄存器位和I/O空间。①绝对寻址方式:通过在指令中指定一个常数地址完成寻址;②直接寻址方式:使用地址偏移量寻址;③间接寻址方式:使用指针完成寻址。 8.(1)mov *AR0+,AC0 ;将AR0指向的数据放到累加器AC0中,AR0加1
add *AR0+,AC0 ;将AR0指向的数据与累加器AC0相加,同时AR0寄存器加1 mov AC0,T0 ;将累加器AC0的值写入T0寄存器 整体程序实现16位加法功能。 (2)mpym *AR0+,*AR1+,AC0
;将寄存器AR0、AR1指向的数值相乘放到累加器ACO,同时寄存器AR0、AR1加1 mpym *AR0+,*AR1+,AC1 ;
;将寄存器AR0、AR1指向的数值相乘放到累加器AC1,同时寄存器AR0、AR1加1 add AC1,AC0
;将累加器AC1与AC0相加,数值放到ACO mpym *AR0+,*AR1+,AC1 ;
;将寄存器AR0、AR1指向的数值相乘放到累加器AC1,同时寄存器AR0、AR1加1 add AC1,AC0
;将累加器AC1与AC0相加,数值放到ACO mov AC0,T0
;将累加器AC0的值写入T0寄存器 整体程序实现y??axi?13ii功能。
9.C55x的哪些指令最适合于完成以下运算 (1)
?xi?0L?1i?0L?1iyi 适合指令:mpym,add,mov
(2)
?(xi?yi)2 适合指令:squr,add,sub,mov
28
(3)
?h[x(n?i)?x(n?L?1?i)] 适合指令:mpym,add,mov
ii?0L?110.汇编器为每个段分配一个程序指针,这些程序指针称为段指针(SPCs),一个SPC指向一个段的当前地址初始时,汇编器设置每个SPC为0,当汇编器在段中填充代码和数据时,SPC跟着增加,如果重新开始汇编一个段,汇编器会记得该段SPC的原来值,并继续增加SPC。
11.链接命令文件用来为链接器提供链接信息,可将链接操作所需的信息放在一个文件中,这在多次使用同样的链接信息时,可以方便地调用。
12.①标号必须从语句的第1列写起,其后的冒号“:”可任选 ;标号为任选项,若不使用标号,则语句的第一列必须是空格、星号或分号;标号是由字母、数字以及下划线和美元符号等组成,最多可达32个字符;标号分大小写,且第一个字符不能是数字;在使用标号时,标号的值是段程序计数器SPC的当前值。②注释可位于句首或句尾,位于句首时,以“*”或“;”开始,位于句尾时,以分号“;”开始;注释可单独一行或数行;注释是任选项。③标号是供本程序或其它程序调用,注释用来说明指令功能,便于用户阅读。 13.MEMORY指令允许用户定义一个目标系统的存储器映射,可以命名存储器的各个部分,并且指定开始地址和大小。SECTIONS指令告诉链接器合成输入段为输出段,并且告诉链接器把这些输出段放在存储器的某个位置。
14.伪指令用于处理汇编和连接过程,是汇编语言源程序的重要组成部分,但是最后产生的目标文件不包括它们。 15.初始化段包含可执行代码或者初始化数据,当程序被装载时,它们就被放到处理器存储空间里。未初始化段是指保留一定的存储器空间,一段程序可以在运行过程中使用这个空间,用来生成和存储变量:
第9章 数字信号的DSP处理器实现思考题
1、C语言作为DSP的开发语言有哪些优势? 2、小存储模式和大存储器模式有什么不同? 3、Pragma编译预处理命令有什么用途? 4、关键字interrupt有什么作用?
5、如何用C语言访问DSP的I/O空间? 6、小存储器模式和大存储器模式有何区别? 7、Inline关键字的作用是什么? 8、运用双线性变换法基于C语言设计一个IIR低通滤波器,其中通带截止频率ω=0.4π通带最大衰减αp=3dB;阻带最小衰减αs=15dB;阻带截止频率ωs=0.5π。
29
29