应用系统设计举例.ppt
《应用系统设计举例.ppt》由会员分享,可在线阅读,更多相关《应用系统设计举例.ppt(62页珍藏版)》请在三一办公上搜索。
1、第8章 应用系统设计举例,DSP应用中几个典型的案例:正弦信号发生器 FIR数字滤波器的设计和实现方法 快速傅里叶变换 语音信号采集和回放的实现方法,第8章:应用系统设计举例,8.1 DSP应用系统设计基本步骤,第8章:应用系统设计举例设计基本步骤,典型的DSP目标板结构框图,第8章:应用系统设计举例设计基本步骤,一个DSP应用系统设计包括硬件设计和软件设计两部分。硬件设计又称为目标板设计,考虑算法需求分析和成本、体积、功耗核算等。软件设计是指设计包括信号处理算法的程序,用DSP汇编语言或通用的高级语言(C/C+)编写出来并进行调试。这些程序要放在DSP片内或片外存储器中运行,在程序执行时,D
2、SP会执行与DSP外围设备传递数据或互相控制的指令。DSP的软件与硬件设计调试是密不可分的。,第8章:应用系统设计举例设计基本步骤,8.1 DSP应用系统设计基本步骤,第8章:应用系统设计举例 正弦信号发生器,8.2 正弦信号发生器用DSP实现正弦信号发生器的基本方法有三种:(1)查表法。即将某个频率的正弦/余弦值计算出来后制成一个表,DSP工作时仅作查表运算即可。这种方法适用于信号精度要求不是很高的情况。当对于信号的精度要求较高时,其信号采样点的个数增多,占用的存储器空间也将增大。(2)泰勒级数展开法。与查表法相比,需要的存储单元少,但是泰勒级数展开一般只能取有限次项,精度无法得到保证。(3
3、)迭代法。利用数字振荡器通过迭代方法产生正弦信号。,第8章:应用系统设计举例 正弦信号发生器,8.2.1 数字振荡器原理设单位冲击序列经过一系统后,其输出为正弦序列 则系统的传递函数为其中,其振荡频率由系数A、B和C来决定。因此,设计振荡器主要就在于确定这些系数。,第8章:应用系统设计举例 正弦信号发生器,设初始值为0,数字振荡器的二阶差分方程形式为:利用单位冲击函数性质,即仅当k=1时,xk1=1,得:当k2,yk能用yk1和yk2算出,递归的差分方程。,第8章:应用系统设计举例 正弦信号发生器,8.2.2 正弦波信号发生器的设计要求:设计产生频率为 的正弦波;采用定时中断的方法输出yn;设
4、采样率为(即通过定时器中断,每隔25s产生一个yn)。,第8章:应用系统设计举例 正弦信号发生器,递归的差分方程系数为:,将所有系数除以2,用16位定点,第8章:应用系统设计举例 正弦信号发生器,定时器的初值计算要求:定时器产生25s时间间隔,获得40kHz的采样频率。定时器的初值计算由下式决定式中 为DSP时钟频率,为采样频率。设预分频系数TDDR=0,则定时器周期寄存器初值PRD为本例中,则PRD=2499。,第8章:应用系统设计举例 正弦信号发生器,8.2.3 正弦波信号发生器的实现初始化:初始化y1和y2、初始化定时器、初始化中断1.初始化y1和y2SSBXFRCT;置FRCT=1,准
5、备进行小数乘法运算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到T寄存器MPY y1,A;y1乘系数A,结果放入A寄存器STH A,y2;y2=AA*y1,第8章:应用系统设计举例 正弦信号发生器,2.初始化定时器程序STM#10h,TCR;停止定时器STM#2499,PRD;设置PRD寄存器值为2499,TINT中断频率为40KHzSTM#20h,TCR;重新装入TIM和PSC,启动定时器,第8章:应用系统设计举
6、例 正弦信号发生器,3.中断初始化 包括设置中断总开关和中断屏蔽寄存器,修改中断向量表的入口地址。中断初始化程序代码片断:LD#0,DP;设置DP页指针SSBX INTM;关闭所有中断 LD#vector,A;读出中断向量(地址vector在中断 向量表程序中定义)AND#0FF80h,A OR PMST,A;保留PMST的低7位STLM A,PMST;设置PMST(其中包括IPTR)RSBX INTM;开所有中断,第8章:应用系统设计举例 正弦信号发生器,中断服务程序 利用前面的y1和y2,计算出新的yn。_tint:LD BB,T;将系数B 装入T寄存器MPY y1,A;y1乘系数B,结果
7、放入A寄存器LTD y2;将y2装入T寄存器,同时复制到y1MAC AA,A;完成新正弦数据的计算,a寄存器中为;y2*AA+y1*BBSTH A,l,y1;将新数据存入y1,因所有系数都除过2,所以;在保存结果时转移一位,恢复数据正常大小STH A,y0;将新正弦数据存入y0NOPRETE,第8章:应用系统设计举例 正弦信号发生器,要获得完整的程序,必须有中断向量表文件和内存定位文件。中断向量表清单如下:.mmregs.ref _ret.ref _c_int00.ref _tint.global vector.sect.int_table;-;interrupte vector table!
8、;-vector:rs b _c_int00 nop tint b _tint,第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.switch PROG PAGE 0.int_table VEC PAGE 0.data DATA PAGE 1.bss DATA PAGE 1.
9、const DATA PAGE 1.sysmem DATA PAGE 1.stack DATA PAGE 1,第8章:应用系统设计举例 正弦信号发生器,4.观察输出信号波形以及频谱启动CCS,新建工程文件,sinewave.pjt。加入:汇编源程序sin.asm,包括初始化代码和中断服务程序;汇编源程序vec_table.asm,为中断向量表。连接定位sinewave.cmd文件(2)完成编译、连接,生成.out文件,并装载.out文件到片内存储器。(3)选择“ViewGraphTime/Frequency”,打开图形显示设置窗口。在弹出的对话框中按图8.3设置,主要修改“Star Addre
10、ss”为y0(y0为生成的正弦波输出变量);“Acquisition Buffer Size”为1,“DSP Data Type”为“16-bit signed integer”。,第8章:应用系统设计举例 正弦信号发生器,第8章:应用系统设计举例 FIR数字滤波器,8.3 FIR数字滤波器8.3.1 FIR滤波器的基本原理和结构差分方程:结构图:,算法实际上是一种乘法累加运算。它不断地从输入端读入样本值xn,经延时()后做乘法累加,输出滤波结果yn。,第8章:应用系统设计举例 FIR数字滤波器,8.3.2 FIR滤波器的设计方法 FIR滤波器的设计方法主要有窗函数法和频率采样法。窗函数法是最
11、基本的方法,窗的类型有:矩形窗 Hanning窗 Blackman窗 Kaiser窗 DSP设计者可以利用功能强大的MATLAB工具很方便的设计出逼近理想特性的FIR滤波器。得到阶数N和系数bi.然后将FIR系数放入DSP程序中。,第8章:应用系统设计举例 FIR数字滤波器,8.3.3 FIR滤波器的DSP实现 FIR滤波器的输出表达式为 不断地对输入样本进行n1延时后,再进行乘法累加。C54x通过两种方法实现FIR滤波器的延迟线:1.线性缓冲区法 2.循环缓冲区法 3.系数对称FIR滤波器的实现方法,第8章:应用系统设计举例 FIR数字滤波器,1.线性缓冲区法(又称延迟线法)实现N阶FIR滤
12、波器,需要在数据存储器中开辟一个N单元的缓冲区(滑窗),用来存放最新的N个输入样本。DSP每计算一个输出值,都需要读取N个样本并进行N次乘法和累加;每当读取一个样本后,将此样本向后移动,如xn-7,读完最后一个样本后,最老的样本被推出缓冲区,输入最新样本xn+1存入缓冲区的顶部。优点:存储器中新老数据位置直观明了。缺点:线性缓冲区只能定位在DARAM中。,第8章:应用系统设计举例 FIR数字滤波器,N=8的线性缓冲区:顶部为低地址单元,存放最新样本,底部为高地址单元,存放最老样本;AR1被用作间接寻址的数据缓冲区的辅助寄存器,指向最老样本单元。AR2被用作间接寻址的系数区的辅助寄存器。,第8章
13、:应用系统设计举例 FIR数字滤波器,实现 的运算 可通过执行存储器延时指令DELAY来实现:DELAY Smem;(Smen)(Smem+1)将延时指令与其它指令结合使用,可在同样的机器周期内完成这些操作。例如:LTD LD+DELAY MACDMAC+DELAY注意:用线性缓冲区实现运算时,缓冲区的数据需要移动,这样在一个机器周期内需要一次读和一次写操作。因此,线性缓冲区只能定位在DARAM中。,第8章:应用系统设计举例 FIR数字滤波器,线性缓冲区法实现FIR滤波器的汇编语言程序设计.titleFIR1.ASM.mmregs.defstartX.usectx,7;自定义数据空间PA0.s
14、et0PA1.set1.dataCOEF:.word1*32768/10;定义b6.word2*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,第8章:应用系统设计举例 FIR数字滤波器,start:SSBXFRCT;设置小数乘法STM#x+7,AR1;AR1指向缓冲区底部x(n-6)STM#7,AR0;AR0=7,设置AR1复位值PORTR PA1,x;输入x(n)FIR1:RPTZA,#7;累加器A
15、清0,设置迭代次数 MACD*AR1-,COEF,A;完成乘法-累加,数据移位STHA,*AR1;暂存y(n)PORTW*AR1,PA0;输出y(n)BDFIR1 PORTR PA1,*AR1+0;输入最新样本,并修改;AR1=AR1+AR0;指向缓冲区底部.end,第8章:应用系统设计举例 FIR数字滤波器,2.循环缓冲区法(重点)用线性缓冲区法的限制:实现运算时,缓冲区的所有数据需要移动,只能定位在DARAM中。循环缓冲区法:每当输入新的样本时,以新样本改写滑窗中最老的数据,而滑窗的其他数据不需要移动。优点:不用移动数据,不需要在一个机器周期中要求进行一次读和一次写的数据存储器,因此,可将
16、循环缓冲区定位在数据存储器的任何位置,而不像线性缓冲区要求定位在DARAM中那样。缺点:在循环缓冲区新老数据不很直接明了。,第8章:应用系统设计举例 FIR数字滤波器,指针ARx指向最新样本单元。顶部为低地址单元,底部为高地址单元;,第1次运算,求yn 的过程如下:(1)以ARx为指针,按xn,xn-7 的顺序取数,每取一次数后,完成一次乘法累加运算;(2)当经过8次取数、运算之后,得到 yn;(3)求得 yn后,ARx指向最老样本 单元;(4)从I/O口输入新样本xn+1,替代最老样本xn-7,为下次计算做好准备,如 图8.8(b)所示。第2次运算按xn+1,xn,xn-6 的顺序取数,求得
17、yn+1后,ARx指向xn-6,输入的新样本xn+2 将替代xn-6 样本,如图8.8(c)所示。,第8章:应用系统设计举例 FIR数字滤波器,第8章:应用系统设计举例 FIR数字滤波器,实现循环缓冲区间接寻址的关键:循环寻址方式第一,BK(循环缓冲区长度)满足:BK=N 在实现N阶FIR时,设定BK的值为FIR的阶数,就能保证循环缓冲区的指针ARx始终指向循环缓冲区,实现循环缓冲区顶部和底部的相邻。第二,必须满足2kN,其中k是循环缓冲区的基地址ARx的k个最低有效位,必须为0。如N=31时,由于25=3231,k=5,该地址的最低5位为0,所以循环缓冲区必须从二进制地址xxxx xxx0
18、0000B开始,第8章:应用系统设计举例 FIR数字滤波器,利用循环缓冲区和双操作数寻址方法实现的FIR滤波器,第8章:应用系统设计举例 FIR数字滤波器,.titleFIR2.ASM.mmregs.defstart.bssy,1X.usectx,7;定义数据存储器空间b0.usectb0,7PA0.set0PA1.set1.dataCOEF:.word1*32768/10;定义b6.word2*32768/10;定义b5.text,第8章:应用系统设计举例 FIR数字滤波器,start:SSBXFRCT;设置小数乘法STM#b0,AR1;AR1指向b0RPT#6 MVPD COEF,*AR1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 应用 系统 设计 举例
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-5723678.html