应用系统设计举例.pptx

上传人:莉*** 文档编号:80035139 上传时间:2023-03-22 格式:PPTX 页数:59 大小:662.45KB
返回 下载 相关 举报
应用系统设计举例.pptx_第1页
第1页 / 共59页
应用系统设计举例.pptx_第2页
第2页 / 共59页
点击查看更多>>
资源描述

《应用系统设计举例.pptx》由会员分享,可在线阅读,更多相关《应用系统设计举例.pptx(59页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、会计学1应用系统设计举例应用系统设计举例第8章:应用系统设计举例设计基本步骤 第1页/共59页一个一个DSPDSP应用系统设计包括应用系统设计包括硬件设计和软件设计两部分。硬件设计和软件设计两部分。硬件设计硬件设计又称为目标板又称为目标板设计,考虑算法需求分析和设计,考虑算法需求分析和成本、体积、功耗核算等。成本、体积、功耗核算等。软件设计软件设计是指设计包括是指设计包括信号处理算法的程序,用信号处理算法的程序,用DSPDSP汇编语言或通用的高级汇编语言或通用的高级语言语言(C/C+)(C/C+)编写出来并进编写出来并进行调试。这些程序要放在行调试。这些程序要放在DSPDSP片内或片外存储器中

2、运片内或片外存储器中运行,在程序执行时,行,在程序执行时,DSPDSP会会执行与执行与DSPDSP外围设备传递数外围设备传递数据或互相控制的指令。据或互相控制的指令。DSPDSP的软件与硬件设计调的软件与硬件设计调试是密不可分的。试是密不可分的。第8章:应用系统设计举例设计基本步骤 8.1 DSP8.1 DSP应用系统设计基本步骤应用系统设计基本步骤第2页/共59页第8章:应用系统设计举例 正弦信号发生器8.2 正弦信号发生器正弦信号发生器用用DSP实现正弦信号发生器的基本方法有三种:实现正弦信号发生器的基本方法有三种:(1)查表法。查表法。即将某个频率的正弦即将某个频率的正弦/余弦值计算出来

3、后制成一个余弦值计算出来后制成一个表,表,DSP工作时仅作查表运算即可。这种方法适用于信号精度工作时仅作查表运算即可。这种方法适用于信号精度要求不是很高的情况。当对于信号的精度要求较高时,其信号要求不是很高的情况。当对于信号的精度要求较高时,其信号采样点的个数增多,占用的存储器空间也将增大。采样点的个数增多,占用的存储器空间也将增大。(2)泰勒级数展开法。泰勒级数展开法。与查表法相比,需要的存储单元少,但与查表法相比,需要的存储单元少,但是泰勒级数展开一般只能取有限次项,精度无法得到保证。是泰勒级数展开一般只能取有限次项,精度无法得到保证。(3)迭代法。迭代法。利用数字振荡器通过迭代方法产生正

4、弦信号。利用数字振荡器通过迭代方法产生正弦信号。第3页/共59页第8章:应用系统设计举例 正弦信号发生器8.2.1 数字振荡器原理数字振荡器原理设单位冲击序列经过一系统后,其输出为正弦序列设单位冲击序列经过一系统后,其输出为正弦序列 则系统的传递函数为则系统的传递函数为其中,其中,其振荡频率由系数其振荡频率由系数A、B和和C来决定。因此,设计振荡器主要就来决定。因此,设计振荡器主要就在于确定这些系数。在于确定这些系数。第4页/共59页第8章:应用系统设计举例 正弦信号发生器设初始值为设初始值为0,数字振荡器的二阶差分方程形式为:,数字振荡器的二阶差分方程形式为:利用单位冲击函数性质,即仅当利用

5、单位冲击函数性质,即仅当k=1时,时,xk1=1,得:,得:当当k2,yk能用能用yk1和和yk2算出算出,递归的差分方程。,递归的差分方程。第5页/共59页第8章:应用系统设计举例 正弦信号发生器8.2.2 正弦波信号发生器的设计正弦波信号发生器的设计要求:要求:设计产生频率为设计产生频率为 的正弦波;的正弦波;采用定时中断的方法输出采用定时中断的方法输出yn;设采样率为设采样率为 (即通过定时器中断,每隔即通过定时器中断,每隔25 s产生一个产生一个yn)。第6页/共59页第第第第8 8章:章:章:章:应用系统设计举例应用系统设计举例应用系统设计举例应用系统设计举例 正弦信号发生器正弦信号

6、发生器正弦信号发生器正弦信号发生器递归的差分方程系数为:递归的差分方程系数为:将所有系数除以将所有系数除以2,用,用16位定点位定点第7页/共59页第8章:应用系统设计举例 正弦信号发生器定时器的初值计算定时器的初值计算要求:要求:定时器产生定时器产生25 s时间间隔,获得时间间隔,获得40kHz的采样频率。的采样频率。定时器的初值计算由下式决定定时器的初值计算由下式决定式中式中 为为DSP时钟频率,时钟频率,为采样频率。为采样频率。设预分频系数设预分频系数TDDR=0,则定时器周期寄存器初值,则定时器周期寄存器初值PRD为为本例中本例中 ,则,则PRD=2499。第8页/共59页第8章:应用

7、系统设计举例 正弦信号发生器8.2.3 正弦波信号发生器的实现正弦波信号发生器的实现初始化:初始化:初始化初始化y1和和y2、初始化定时器、初始化中断、初始化定时器、初始化中断1.初始化初始化y1和和y2SSBXFRCT ;置;置FRCT=1,准备进行小数,准备进行小数乘法运算乘法运算ST#INIT_A,AA ;将常数;将常数A装入变量装入变量AAST#INIT_B,BB ;将常数;将常数B装入变量装入变量BBST#INIT_C,CC ;将常数;将常数C装入变量装入变量CCPSHD CC ;将变量;将变量CC压入堆栈压入堆栈POPD y1 ;初始化;初始化y1=CCLD AA,T ;装;装AA

8、到到T寄存器寄存器MPY y1,A ;y1乘系数乘系数A,结果放入,结果放入A寄存器寄存器STH A,y2 ;将寄存器;将寄存器A的高的高16位存入变量位存入变量y2第9页/共59页第8章:应用系统设计举例 正弦信号发生器2.初始化定时器程序初始化定时器程序STM#10h,TCR;停止定时器;停止定时器STM#2499,PRD;设置;设置PRD寄存器值为寄存器值为2499,TINT中断频率为中断频率为40KHzSTM#20h,TCR ;重新装入;重新装入TIM和和PSC,启动定,启动定时器时器第10页/共59页第8章:应用系统设计举例 正弦信号发生器3.中断初始化中断初始化 包括设置中断总开关

9、和中断屏蔽寄存器,修改中断向量表包括设置中断总开关和中断屏蔽寄存器,修改中断向量表的入口地址。中断初始化程序代码片断:的入口地址。中断初始化程序代码片断:LD#0,DP ;设置;设置DP页指针页指针SSBX INTM ;关闭所有中断;关闭所有中断 LD#vector;读出中断向量;读出中断向量(地址地址vector在中断在中断 向量表程序中定义向量表程序中定义)AND#0FF80h,A OR PMST,A ;保留;保留PMST的低的低7位位STLM A,PMST ;设置;设置PMST(其中包括其中包括IPTR)RSBX INTM;开所有中断;开所有中断第11页/共59页第8章:应用系统设计举例

10、 正弦信号发生器中断服务程序中断服务程序 利用前面的利用前面的y1y1和和y2y2,计算出新的,计算出新的ynyn。_tint_tint:LD LD BB,T BB,T ;将系数;将系数B B 装入装入T T寄存器寄存器MPY MPY y1,A y1,A ;y1y1乘系数乘系数B B,结果放入,结果放入A A寄存器寄存器LTD LTD y2 y2 ;将;将y2y2装入装入T T寄存器,同时复制到寄存器,同时复制到y1y1MAC MAC AA,A AA,A ;完成新正弦数据的计算,;完成新正弦数据的计算,a a寄存寄存器中为器中为 ;y2*AA+y1*BBy2*AA+y1*BBSTH STH A

11、,l,y1A,l,y1;将新数据存入;将新数据存入y1y1,因所有系数都除过,因所有系数都除过2 2,所以,所以 ;在保存结果时转移一位,恢复数据正常大小;在保存结果时转移一位,恢复数据正常大小STH STH A,y0 A,y0 ;将新正弦数据存入;将新正弦数据存入y0y0NOPNOPRETERETE第12页/共59页第8章:应用系统设计举例 正弦信号发生器 要获得完整的程序,必须有中断向量表文件和内存定位文件。要获得完整的程序,必须有中断向量表文件和内存定位文件。中断向量表清单如下:中断向量表清单如下:.mmregs .ref _ret .ref _c_int00 .ref _tint .g

12、lobal vector .sect.int_table;-;interrupte vector table!;-vector:rs b _c_int00 nop nop 第13页/共59页第8章:应用系统设计举例 正弦信号发生器内存定位文件清单如下:内存定位文件清单如下:MEMORY PAGE 0:VEC:origin=1000h,length=0ffh PROG:origin=1100h,length=8000h PAGE 1:DATA:origin=080h,length=0807fhSECTIONS .text PROG PAGE 0 .cinit PROG PAGE 0 .switc

13、h PROG PAGE 0 .int_table VEC PAGE 0 .data DATA PAGE 1 .bss DATA PAGE 1 .const DATA PAGE 1 .sysmem DATA PAGE 1 .stack DATA PAGE 1第14页/共59页第8章:应用系统设计举例 正弦信号发生器4.观察输出信号波形以及频谱观察输出信号波形以及频谱(1)启动启动CCS,新建工程文件,新建工程文件,sinewave.pjt。加入:。加入:汇编源程序汇编源程序sin.asm,包括初始化代码和中断服务程序;,包括初始化代码和中断服务程序;汇编源程序汇编源程序vec_table.asm

14、,为中断向量表。,为中断向量表。连接定位连接定位sinewave.cmd文件文件(2)完成编译、连接,生成完成编译、连接,生成.out文件,并装载文件,并装载.out文件到片内文件到片内存储器。存储器。(3)选择选择“ViewGraphTime/Frequency”,打开图形显示设,打开图形显示设置窗口。在弹出的对话框中按图置窗口。在弹出的对话框中按图8.3设置,主要修改设置,主要修改“Star Address”为为y0(y0为生成的正弦波输出变量为生成的正弦波输出变量);“Acquisition Buffer Size”为为1,“DSP Data Type”为为“16-bit signed

15、integer”。第15页/共59页第8章:应用系统设计举例 正弦信号发生器第16页/共59页第8章:应用系统设计举例 FIRFIR数字滤波器数字滤波器8.3 FIR数字滤波器数字滤波器8.3.1 FIR滤波器的基本原理和结构滤波器的基本原理和结构差分方程:差分方程:结构图:结构图:FIR滤波算法实际上是一种乘法累加运算。它不断地从输入端读入样本值xn,经延时()后做乘法累加,输出滤波结果yn。第17页/共59页第8章:应用系统设计举例 FIRFIR数字滤波器数字滤波器FIR滤波器的设计方法滤波器的设计方法 FIR滤波器的设计方法主要有窗函数法和频率采样法滤波器的设计方法主要有窗函数法和频率采

16、样法。窗函数法是最基本的方法窗函数法是最基本的方法,窗的类型有:,窗的类型有:矩形窗矩形窗 Hanning窗窗 Blackman窗窗 Kaiser窗窗 DSP设计者可以利用功能强大的设计者可以利用功能强大的MATLAB工具很方便的设计工具很方便的设计出逼近理想特性的出逼近理想特性的FIR滤波器。滤波器。然后将然后将FIR系数放入系数放入DSP程序中。程序中。第18页/共59页第8章:应用系统设计举例 FIRFIR数字滤波器数字滤波器8.3.2 FIR滤波器的滤波器的DSP实现实现FIR滤波器的输出表达式为滤波器的输出表达式为 不断地对输入样本进行不断地对输入样本进行n1延时后,再进行乘法累加。

17、延时后,再进行乘法累加。C54x通过两种方法实现通过两种方法实现FIR滤波器的延迟线滤波器的延迟线:1.线性缓冲区法线性缓冲区法 2.循环缓冲区法循环缓冲区法 3.系数对称系数对称FIR滤波器的实现方法滤波器的实现方法第19页/共59页第8章:应用系统设计举例 FIRFIR数字滤波器数字滤波器1.线性缓冲区法线性缓冲区法(又称延迟线法又称延迟线法)实现实现N阶阶FIR滤波器,需要在数据存储器中开辟一个滤波器,需要在数据存储器中开辟一个N单元的单元的缓冲区缓冲区(滑窗滑窗),用来存放最新的,用来存放最新的N个输入样本。个输入样本。DSP每计算一个输出值,都需要读取每计算一个输出值,都需要读取N个

18、样本并进行个样本并进行N次乘次乘法和累加法和累加;每当读取一个样本后,将此样本向后移动,读完最后一个样每当读取一个样本后,将此样本向后移动,读完最后一个样本后,最老的样本被推出缓冲区,输入最新样本存入缓冲区的本后,最老的样本被推出缓冲区,输入最新样本存入缓冲区的顶部。顶部。优点:线性缓冲区法具有存储器中新老数据位置直观明了。优点:线性缓冲区法具有存储器中新老数据位置直观明了。第20页/共59页第8章:应用系统设计举例 FIRFIR数字滤波器数字滤波器N=8的线性缓冲区的线性缓冲区:顶部为低地址单元,存放最新样本,底部为高地址单元,存放最老样本;AR1被用作间接寻址的数据缓冲区的辅助寄存器,指向

19、最老样本单元。AR2被用作间接寻址的系数区的辅助寄存器。第21页/共59页第8章:应用系统设计举例 FIRFIR数字滤波器数字滤波器实现实现 的运算的运算 可通过执行存储器延时指令可通过执行存储器延时指令DELAY来实现,其指令为:来实现,其指令为:DELAY Smem;(Smen)Smem+1或或DELAY*AR1-;AR1指向源地址指向源地址 将延时指令与其它指令结合使用,可在同样的机器周期内完成将延时指令与其它指令结合使用,可在同样的机器周期内完成这些操作。例如:这些操作。例如:LD+DELAYLTD指令指令 MAC+DELAYMACD指令指令注意:用线性缓冲区实现运算时,缓冲区的数据需

20、要移动,这注意:用线性缓冲区实现运算时,缓冲区的数据需要移动,这样在一个机器周期内需要一次读和一次写操作。因此,线性缓样在一个机器周期内需要一次读和一次写操作。因此,线性缓冲区只能定位在冲区只能定位在DARAM中。中。第22页/共59页第8章:应用系统设计举例 FIRFIR数字滤波器数字滤波器线性缓冲区法实现线性缓冲区法实现FIR滤波器的汇编语言程序设计滤波器的汇编语言程序设计 .titleFIR1.ASM.mmregs.defstartX.usectx,7;自定;自定义数据空间义数据空间PA0.set0PA1.set1.dataCOEF:.word1*32768/10 ;定义;定义b6.wo

21、rd2*32768/10;定义;定义b5.word-4*32768/10;定义;定义b4.word3*32768/10;定义;定义b3.word-4*32768/10;定义;定义b2 .word2*32768/10 ;定义;定义b1.word1*32768/10;定义;定义b0 .text第23页/共59页第8章:应用系统设计举例 FIRFIR数字滤波器数字滤波器start:SSBXFRCT ;设置小数乘法;设置小数乘法STM#x+7,AR1;AR1指向缓冲指向缓冲区底部区底部x(n-6)STM#7,AR0;AR0=7,设置设置AR1复位值复位值LD#x+1,DP;设置页指针;设置页指针POR

22、TR PA1,x+1 ;输入;输入x(n)FIR1:RPTZA,#7 ;累加器;累加器A清清0,设置设置迭代次数迭代次数 MACD*AR1-,COEF,A ;完成乘法;完成乘法-累加并移位累加并移位STHA,*AR1;暂存;暂存y(n)PORTW *AR1+,PA0 ;输出;输出y(n)BDFIR1 PORTR PA1,*AR1+0 ;输入最新样本,并修改输入最新样本,并修改 ;AR1=AR1+AR0;指向缓冲区底;指向缓冲区底部部.end第24页/共59页第8章:应用系统设计举例 FIRFIR数字滤波器数字滤波器2.循环缓冲区法循环缓冲区法 实现实现N阶阶FIR滤波器时,需要在数据存储器中开

23、辟一个称为滑滤波器时,需要在数据存储器中开辟一个称为滑窗为窗为N个单元的缓冲区,用来存放最新的个单元的缓冲区,用来存放最新的N个输入样本。个输入样本。每当输入新的样本时,以新样本改写滑窗中最老的数据,而每当输入新的样本时,以新样本改写滑窗中最老的数据,而滑窗的其他数据不需要移动。滑窗的其他数据不需要移动。优点:优点:不用移动数据,不需要在一个机器周期中要求进行一次不用移动数据,不需要在一个机器周期中要求进行一次读和一次写的数据存储器,因此,可将循环缓冲区定位在数据读和一次写的数据存储器,因此,可将循环缓冲区定位在数据存储器的任何位置,而不像线性缓冲区要求定位在存储器的任何位置,而不像线性缓冲区

24、要求定位在DARAM中中那样。那样。缺点:缺点:在循环缓冲区新老数据不很直接明了。在循环缓冲区新老数据不很直接明了。第25页/共59页第8章:应用系统设计举例 FIRFIR数字滤波器数字滤波器8级循环缓冲区的结构,顶部为低地址单元,底部为高地址单元;指针ARx指向最新样本单元。第26页/共59页第8章:应用系统设计举例 FIRFIR数字滤波器数字滤波器实现循环缓冲区间接寻址的关键:循环寻址方式实现循环缓冲区间接寻址的关键:循环寻址方式注意两点:注意两点:第一,第一,必须采用必须采用BK(循环缓冲区长度循环缓冲区长度)寄存器按模间接寻址来实寄存器按模间接寻址来实现。现。BK=N 在实现在实现N阶

25、阶FIR时,设定时,设定BK的值为的值为FIR的阶数,就能保证循的阶数,就能保证循环缓冲区的指针环缓冲区的指针ARx始终指向循环缓冲区,实现循环缓冲区顶始终指向循环缓冲区,实现循环缓冲区顶部和底部的相邻。部和底部的相邻。第二,第二,必须满足必须满足2kN,其中,其中k是整数,是整数,N是是FIR滤波器的级数,滤波器的级数,而且循环缓冲区的基地址的而且循环缓冲区的基地址的k个最低有效位必须为个最低有效位必须为0。如如N=31时,由于时,由于25=3231,k=5,该地址的最低,该地址的最低5位为位为0,所,所以循环缓冲区必须从二进制地址以循环缓冲区必须从二进制地址xxxx xxx0 0000B开

26、始开始 第27页/共59页第8章:应用系统设计举例 FIRFIR数字滤波器数字滤波器利用循环缓冲区和双操作数寻址方法实现的FIR滤波器第28页/共59页第8章:应用系统设计举例 FIRFIR数字滤波器数字滤波器.titleFIR2.ASM.mmregs.defstart.bssy,1X.usectx,7;定义数据存储;定义数据存储器空间器空间b0.usectb0,7PA0.set0PA1.set1.dataCOEF:.word1*32768/10;定义;定义b6.word2*32768/10;定义;定义b5.text第29页/共59页第8章:应用系统设计举例 FIRFIR数字滤波器数字滤波器s

27、tart:SSBXFRCT ;设置小数乘法;设置小数乘法STM#b0,AR1 ;AR1指指向向b0RPT#6 MVPD table,*AR1+;完成数;完成数据搬移据搬移STM#xn+6,AR2 ;AR2指向缓冲区底指向缓冲区底部部xn-6 STM#b0+6,AR3 ;AR3指向系数缓冲指向系数缓冲区底部区底部b6STM#7,BK;BK=7LD#xn,DP ;设置页指设置页指针针PORTR PA1,xn;输入;输入xn 第30页/共59页第8章:应用系统设计举例 FIRFIR数字滤波器数字滤波器FIR2:RPTZA,#6 ;累加器;累加器A清清0,设置迭设置迭代次数代次数 MAC*AR2+0%

28、,*AR3+0%,A;完成乘法;完成乘法-累加累加,循循环环STH A,y ;暂存;暂存ynPORTW y,PA0 ;输出;输出ynBDFIR2 PORTR PA1,*AR2+0%;循环输入最新样本并修改循环输入最新样本并修改 ;AR2=AR2+AR0 ;指向缓冲区底部;指向缓冲区底部.end第31页/共59页第8章:应用系统设计举例 FIRFIR数字滤波器数字滤波器3.系数对称系数对称FIR滤波器的实现方法滤波器的实现方法优点优点:乘法的次数减少了一半。乘法的次数减少了一半。实现方法实现方法:使用专门用于系数对称使用专门用于系数对称FIR滤波器的指令。滤波器的指令。FIRS Xmem,Yme

29、m,Pmad该指令的操作如下:该指令的操作如下:执行:执行:PmadPAR 当当(RC)0(循环计数器)(循环计数器)(Xmem)(Ymem)16A (B)(A(3216)PARB (PAR1)PAR (RC)1RC第32页/共59页第8章:应用系统设计举例 FIRFIR数字滤波器数字滤波器说明:说明:FIRS指令在同一机器周期内,通过指令在同一机器周期内,通过C和和D总线读两次数总线读两次数据存储器,同时通过据存储器,同时通过P总线读程序存储区的一个系数。总线读程序存储区的一个系数。注意两点:注意两点:(1)在数据存储器中开辟两个循环缓冲区,如在数据存储器中开辟两个循环缓冲区,如New和和O

30、ld缓冲区,缓冲区,分别存放分别存放N/2个新数据和老数据,循环缓冲区的长度为个新数据和老数据,循环缓冲区的长度为N/2。设。设置了循环缓冲区,就需要设置相应的循环缓冲区指针,如用置了循环缓冲区,就需要设置相应的循环缓冲区指针,如用AR2指向指向New缓冲区中最新的数据,缓冲区中最新的数据,AR3指向指向Old缓冲区中最缓冲区中最老的数据;老的数据;(2)将系数表存放在程序缓冲区内。将系数表存放在程序缓冲区内。第33页/共59页第8章:应用系统设计举例 FIRFIR数字滤波器数字滤波器 .mmregs.def start.bssy,1x_new:.usectDATA1,4x_old:.usec

31、tDATA2,4size .set4PA0.set0PA1.set1.dataCOEF .word1*32768/10,2*32768/10.word3*32768/10,4*32768/10.text第34页/共59页第8章:应用系统设计举例 FIRFIR数字滤波器数字滤波器start:LD#y,DPSSBXFRCTSTM#x_new,AR2 ;AR2指向新缓冲区第一个单元STM#x_old+(size-1),AR3;AR3指向老缓冲区最后1个单元STM#size,BK;循环缓冲区长度STM#-1,AR0LD#x_new,DPPORTR PA1,x_new;输入xnFIR:ADD*AR20%

32、,*AR30%,A;AH=xn+xn-7(第一次)RPTZB,#(size-1);B=0,下条指令执行size次FIRS*AR2+0%,*AR30%,COEF ;B+=AH*a0,AH=xn-1+xn-6,STHB,y;保存结果第35页/共59页第8章:应用系统设计举例 FIRFIR数字滤波器数字滤波器 PORTW y,PA0 ;输出结果;输出结果MAR*+AR2(2)%;修正;修正AR2,指向新缓冲,指向新缓冲区最老数据区最老数据MAR*AR3+%;修正;修正AR3,指向老缓冲,指向老缓冲区最老数据区最老数据MVDD*AR2,*AR3+0%;新缓冲区向老缓冲区传送一;新缓冲区向老缓冲区传送一

33、个数个数BDFIRPORTR PA1,*AR2 ;输入新数据至新缓冲;输入新数据至新缓冲区区.end第36页/共59页第8章:应用系统设计举例 FIRFIR数字滤波器数字滤波器8.3.3 FIR滤波器应用举例设计指标:设计指标:设计一个设计一个FIR低通滤波器低通滤波器 通带边界频率为通带边界频率为1500Hz,通带波纹小于,通带波纹小于1dB,阻带边界频率为阻带边界频率为2000Hz,阻带衰减大于,阻带衰减大于40dB,采样频率为采样频率为8000Hz。设计步骤设计步骤(4步步):(1)设计设计FIR滤波器滤波器利用利用MATLAB工具箱工具箱Signal中的中的fir1函数,选择函数,选择

34、Hamming窗。窗。b=fir1(16,1500/8000*2);FIR数字滤波器系数为数字滤波器系数为b0 b16,系数对称。系数对称。将上述系数存盘,建立一个数据文件将上述系数存盘,建立一个数据文件(如如fir01.txt)。第37页/共59页第8章:应用系统设计举例 FIRFIR数字滤波器数字滤波器(2)建立建立DSP汇编程序的汇编程序的FIR滤波器系数文件。滤波器系数文件。上述系数必须转换成上述系数必须转换成Q15格式,并放置在格式,并放置在DSP汇编程序的汇编程序的.inc文件中,进行文件中,进行FIR滤波器的汇编程序的汇编、链接时,滤波器的汇编程序的汇编、链接时,inc文件将被自

35、动地加入到工程中去。文件将被自动地加入到工程中去。从从MATLAB中产生的中产生的fir01.txt文件,通过执行转换命令,将文件,通过执行转换命令,将自动变换为自动变换为firdata.inc滤波器系数文件。滤波器系数文件。利用利用MATLAB中的转换命令:中的转换命令:!firdat fir01.txt 将产生将产生firdata.inc文件。文件。第38页/共59页第8章:应用系统设计举例 FIRFIR数字滤波器数字滤波器(3)产生滤波器输入信号的文件产生滤波器输入信号的文件 一个产生输入信号的一个产生输入信号的C语言程序。语言程序。这个信号是频率为这个信号是频率为1000Hz和和250

36、0Hz的正弦波合成的波形,的正弦波合成的波形,文件名为文件名为firinput.c。该程序将产生名为该程序将产生名为firin.inc的输入信号程序。的输入信号程序。(4)编写应用编写应用FIR数字滤波器的汇编程序数字滤波器的汇编程序 一个一个FIR滤波器源程序滤波器源程序 fir.asm 对应以上对应以上FIR滤波器的汇编程序的链接文件滤波器的汇编程序的链接文件fir.cmd。第39页/共59页第8章:应用系统设计举例 快速傅里叶变换快速傅里叶变换(FFT)(FFT)8.4 快速傅里叶变换快速傅里叶变换(FFT)FFT:是一种高效实现离散傅氏变换的算法。是一种高效实现离散傅氏变换的算法。FF

37、T:一个非常重要的工具经常使用,甚至成为一个非常重要的工具经常使用,甚至成为DSP运运 算能力的一个考核因素。算能力的一个考核因素。主要内容:主要内容:1 基基2按时间抽取按时间抽取FFT算法算法 2 FFT算法的算法的DSP实现实现 3 FFT算法的模拟信号产生和输入算法的模拟信号产生和输入第40页/共59页第8章:应用系统设计举例 快速傅里叶变换快速傅里叶变换(FFT)(FFT)8.4.1 基基2按时间抽取按时间抽取FFT算法算法8点基点基2 FFT流图与蝶形运算流图与蝶形运算 第41页/共59页第8章:应用系统设计举例 快速傅里叶变换快速傅里叶变换(FFT)(FFT)第42页/共59页第

38、8章:应用系统设计举例 快速傅里叶变换快速傅里叶变换(FFT)(FFT)8.4.2 FFT算法的算法的DSP实现实现 一般假定输入序列是复数。一般假定输入序列是复数。当输入是实数时,利用对称性质计算当输入是实数时,利用对称性质计算DFT。原始的原始的2N个点的实输入序列组合成一个个点的实输入序列组合成一个N点的复序列点的复序列;之后对复序列进行之后对复序列进行N点的点的FFT运算运算;最后再由最后再由N点的复数输出拆散成点的复数输出拆散成2N点的复数序列。这点的复数序列。这2N点点的复数序列与原始的的复数序列与原始的2N点的实数输入序列的点的实数输入序列的DFT输出一致。输出一致。使用这种方法

39、,在组合输入和拆散输出的操作中,使用这种方法,在组合输入和拆散输出的操作中,FFT运算运算量减半。量减半。下面用这种方法来实现一个下面用这种方法来实现一个256点实数点实数FFT(2N=256)运算。运算。第43页/共59页第8章:应用系统设计举例 快速傅里叶变换快速傅里叶变换(FFT)(FFT)1.实数实数FFT运算序列的存储分配运算序列的存储分配 程序代码安排在程序代码安排在0 x3000开始的存储器中,其中开始的存储器中,其中0 x30000 x3080存放中断向量表;存放中断向量表;FFT程序使用的正弦表、余弦表数据程序使用的正弦表、余弦表数据(.data段段)安排在安排在0 xc00

40、开始的地方;开始的地方;变量变量(.bss段定义段定义)存放在存放在0 x80开始的地址中。开始的地址中。256点实数点实数FFT程序的输入数据缓冲为程序的输入数据缓冲为0 x23000 x23ff;图图8.1 FFT变换后功率谱的计算结果存放在变换后功率谱的计算结果存放在0 x22000 x22ff中。中。连接定位连接定位.cmd文件确定。文件确定。第44页/共59页第8章:应用系统设计举例 快速傅里叶变换快速傅里叶变换(FFT)(FFT)2.基基2实数实数FFT运算的算法(四步)运算的算法(四步)1)输入数据的组合和位倒序输入数据的组合和位倒序组合:组合:首先,原始输入的首先,原始输入的2

41、N=256个点的实数序列个点的实数序列an,当成,当成N=128点的复数序列点的复数序列dn,dn表示复合表示复合FFT的输入。的输入。dn=rn+j in rn a2n表示实部;表示实部;in a2n1表示虚部。表示虚部。位倒序:位倒序:按位倒序的方式存储按位倒序的方式存储dn到数据处理缓冲中,是为了到数据处理缓冲中,是为了在整个运算最后的输出中得到的序列是自然顺序。在整个运算最后的输出中得到的序列是自然顺序。使用位倒序寻址方式可以大大提高程序执行的速度和使用使用位倒序寻址方式可以大大提高程序执行的速度和使用存储器的效率。图存储器的效率。图8.12第45页/共59页第8章:应用系统设计举例

42、快速傅里叶变换快速傅里叶变换(FFT)(FFT)2)N点复数点复数FFT运算运算旋转因子分为正弦和余弦部分,用旋转因子分为正弦和余弦部分,用Q15格式将它们存储在两个格式将它们存储在两个分离的表中。每个表中有分离的表中。每个表中有128项,对应从项,对应从0180。把把128点的复数点的复数FFT分为七级来算,第一级是计算分为七级来算,第一级是计算2点的点的FFT蝶形结,第二级是计算蝶形结,第二级是计算4点的点的FFT蝶形结,然后是蝶形结,然后是8点、点、16点、点、128点的蝶形结计算。最后所得的结果表示为点的蝶形结计算。最后所得的结果表示为第46页/共59页第8章:应用系统设计举例 快速傅

43、里叶变换快速傅里叶变换(FFT)(FFT)3)分离复数分离复数FFT的输出为奇部分和偶部分的输出为奇部分和偶部分分离分离FFT输出为相关的四个序列:偶实数输出为相关的四个序列:偶实数RPk、奇实数、奇实数RMk、偶虚数偶虚数IPk和奇虚数和奇虚数IMk,以便第四步形成最终结果。,以便第四步形成最终结果。RPk=RPN-k=0.5*(Rk+RN-k)RMk=-RMN-k=0.5*(Rk-RN-k)IPk=IPN-k=0.5*(Ik+IN-k)IMk=-IMN-k=0.5*(Ik-IN-k)RP0=R0 IP0=I0 RM0=IM0=RMN/2=IMN/2=0 RPN/2=RN/2 IPN/2=I

44、N/2 图图8.14第47页/共59页第8章:应用系统设计举例 快速傅里叶变换快速傅里叶变换(FFT)(FFT)4)产生最后的产生最后的N=256点的复数点的复数FFT结果结果 通过下面的公式由通过下面的公式由RPk、RMn、IPn和和IMn四个序列可四个序列可以计算出以计算出an的的DFT。Ak=A2N-k=ARk+j AIk=Fa(n)即是即是an的的DFT结果结果 实数实数FFT输出按照实数输出按照实数/虚数的自然顺序填满整个虚数的自然顺序填满整个4N=512个个字节的数据处理缓冲器。如图字节的数据处理缓冲器。如图8.15所示。所示。计算所求信号的功率计算所求信号的功率由于最后所得的由于

45、最后所得的FFT数据是一个复数,通常对所得的数据是一个复数,通常对所得的FFT数据数据进行处理进行处理取其实部和虚部的平方和即求得该信号的功率。取其实部和虚部的平方和即求得该信号的功率。第48页/共59页第8章:应用系统设计举例 快速傅里叶变换快速傅里叶变换(FFT)(FFT)8.4.3 FFT算法的模拟信号产生和输入算法的模拟信号产生和输入 在在CCS集成开发环境下利用集成开发环境下利用Simulator进行进行FFT的调试并观察的调试并观察运行结果时,需要输入一个模拟信号,该信号有两种方法产生:运行结果时,需要输入一个模拟信号,该信号有两种方法产生:第一种方法:第一种方法:是用是用C语言程

46、序产生语言程序产生FFTdata.inc文件,然后,在文件,然后,在DSP汇编语言程序中通过汇编语言程序中通过.copy汇编命令将数据文件汇编命令将数据文件FFTdata.inc复制到汇编程序中去。复制到汇编程序中去。第二种方法:第二种方法:先建立与信号对应的数据流文件先建立与信号对应的数据流文件FFTdata.dat,然,然后,输入数据通过后,输入数据通过CCS开发环境下的开发环境下的FileI/O功能完成待处理的数功能完成待处理的数据的输入。据的输入。第49页/共59页第8章:应用系统设计举例 快速傅里叶变换快速傅里叶变换(FFT)(FFT)8.4.4 观察信号时域波形及其频谱观察信号时域

47、波形及其频谱 第50页/共59页第8章:应用系统设计举例语音信号采集8.5 语音信号采集语音信号采集8.5.1 语音接口芯片语音接口芯片TLC320AD50C简介简介 TLC320AD50C是是TI公司生产的音频接口芯片,集成了公司生产的音频接口芯片,集成了16位位A/D和和D/A转换器,可工作在主、从两种方式,由上电时转换器,可工作在主、从两种方式,由上电时M/S管脚管脚的电平决定。在与的电平决定。在与DSP的的McBSP连接时,一般连接时,一般TLC320AD50C配置为主方式,而配置为主方式,而McBSP为从方式。为从方式。支持主通信和辅助通信两种通信模式,主通信用于正常的支持主通信和辅

48、助通信两种通信模式,主通信用于正常的ADC或或DAC的数据传输,辅助通信用于控制寄存器的读写。辅助通信的数据传输,辅助通信用于控制寄存器的读写。辅助通信模式可由硬件和软件两种方式触发。模式可由硬件和软件两种方式触发。工作方式通过对其内部工作方式通过对其内部7个控制寄存器的设置来进行控制。其中个控制寄存器的设置来进行控制。其中寄存器寄存器0是无操作寄存器。寄存器是无操作寄存器。寄存器5和和6保留用于工厂测试,故只保留用于工厂测试,故只有有4个寄存器可用。表个寄存器可用。表8-1表表8-4 第51页/共59页第8章:应用系统设计举例语音信号采集8.5.2 TLC320AD50C与与DSP的连接的连

49、接在实际应用中,一般将在实际应用中,一般将TLC320AD50C接至接至DSP的同步串行口,的同步串行口,并将并将TLC320AD50C设置在主动工作方式,即由设置在主动工作方式,即由TLC320AD50C提供帧同步信号和移位时钟。提供帧同步信号和移位时钟。第52页/共59页第8章:应用系统设计举例语音信号采集8.5.3 语音采集和回放程序语音采集和回放程序 实现初始化实现初始化DSP后,打开后,打开McBSP串口串口;初始化初始化AD50C,然后使串口在,然后使串口在AD50C 的控制下接受数据。的控制下接受数据。主函数用主函数用C语言编写语言编写(参考参考8.6节节),其中其中InitC5

50、402(void)是初始化是初始化DSP,OpenMcBSP(void)是初始化串口和初始化是初始化串口和初始化AD50C,READAD50(void)用来读取数据。用来读取数据。第53页/共59页第8章:应用系统设计举例C C语言编程及应用语言编程及应用8.6 C语言编程及应用语言编程及应用8.6.1 C语言编程的基本方法语言编程的基本方法 通常通常DSP应用程序需要用应用程序需要用C语言和汇编语言的混合编程方法语言和汇编语言的混合编程方法来实现。以达到最佳的利用来实现。以达到最佳的利用DSP芯片软、硬件资源的目的。芯片软、硬件资源的目的。用用C语言和汇编语言混合编程方法主要有以下语言和汇编

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > PPT文档

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁