DSP课程设计.doc_第1页
DSP课程设计.doc_第2页
DSP课程设计.doc_第3页
DSP课程设计.doc_第4页
DSP课程设计.doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目录第一章 绪论21.1 dsp的基本原理21.1.1数字信号处理的实现方法一般有以下几种:21.2 dsp芯片的基本结构,原理和功能31.2.1 dsp芯片的基本结构31.2.2 dsp芯片的特点51.3 tms320c54xdsp芯片的主要特性61.4用dsp实现正弦函数的基本算法8第二章ccs集成开发环境92.1 ccs集成开发环境简介92.2 建立工程文件102.3 在工程中添加删除文件, 编辑源程序112.4编译和调试11第三章 用ccs环境编程,调试实现正弦函数信号123.1编写汇编程序sin.asm和vectors.asm123.2编写链接命令文件sin.cmd153.3在ccs中生成项目,编译,调试16第四章 个人小结17参考文献17第一章 绪论1.1 dsp的基本原理数字信号处理(简称dsp)是一门涉及多门学科并广泛应用于很多科学和工程领域的新兴学科。数字信号处理是利用计算机或专用处理设备,以数字的形式对信号进行分析、采集、合成、变换、滤波、估算、压缩、识别等加工处理,以便提取有用的信息并进行有效的传输与应用。数字信号处理是以众多学科为理论基础,它所涉及的范围极其广泛。如数学领域中的微积分、概率统计、随机过程、数字分析等都是数字信号处理的基础工具。它与网络理论、信号与系统、控制理论、通信理论、故障诊断等密切相关。dsp可以代表数字信号处理技术(digital signalprocessing),也可以代表数字信号处理器(digitalsignalprocessor)。前者是理论和计算方法上的技术,后者是指实现这些技术的通用或专用可编程微处理器芯片。数字信号处理包括两个方面的内容:1.算法的研研究2.数字信号处理的实现1.1.1数字信号处理的实现方法一般有以下几种:(1)在通用的计算机(如pc机)上用软件(如fortran、c语言)实现;(2)在通用计算机系统中加上专用的加速处理机实现;(3)用通用的单片机(如mcs-51、96系列等)实现,这种方法可用于一些不太复杂的数字信号处理,如数字控制等;(4)用通用的可编程dsp芯片实现。与单片机相比,dsp芯片具有更加适合于数字信号处理的软件和硬件资源,可用于复杂的数字信号处理算法;(5)用专用的dsp芯片实现。在一些特殊的场合,要求的信号处理速度极高,用通用dsp芯片很难实现,例如专用于fft、数字滤波、卷积、相关等算法的dsp芯片,这种芯片将相应的信号处理算法在芯片内部用硬件实现,无需进行编程。在上述几种方法中,第1种方法的缺点是速度较慢,一般可用于dsp算法的模拟;第2种和第5种方法专用性强,应用受到很大的限制,第2种方法也不便于系统的独立运行;第3种方法只适用于实现简单的dsp算法;只有第4种方法才使数字信号处理的应用打开了新的局面。 虽然数字信号处理的理论发展迅速,但在20世纪80年代以前,由于实现方法的限制,数字信号处理的理论还得不到广泛的应用。直到20世纪70年代末80年代初世界上第一片单片可编程dsp芯片的诞生,才将理论研究结果广泛应用到低成本的实际系统中,并且推动了新的理论和应用领域的发展。可以毫不夸张地说,dsp芯片的诞生及发展对近20年来通信、计算机、控制等领域的技术发展起到十分重要的作用。1.2 dsp芯片的基本结构,原理和功能数字信号处理器(dsp)是一种特别适合于进行数字信号处理运算的微处理器,主要用于实时快速实现各种数字信号处理的算法。在20世纪80年代以前,由于受实现方法的限制,数字信号处理的理论还不能得到广泛的应用。直到20年及80年代初,世界上第一块单片可编程dsp芯片的诞生,才使理论研究成果广泛应用到实际的系统中,并且推动了新的理论和应用领域的发展。可以毫不夸张地讲,dsp芯片的诞生及发展对近20年来通信、计算机、控制等领域的技术发展起到十分重要的作用。数字信号处理不同于普通的科学计算与分析,它强调运算的实时性。除了具备普通微处理器所强调的高速运算和控制能力外,针对实时数字信号处理的特点,在处理器的结构、指令系统、指令流程上作了很大的改进。 1.2.1 dsp芯片的基本结构(1) 冯诺伊曼(von neuman)结构该结构采用单存储空间,即程序指令和数据共用一个存储空间,使用单一的地址和数据总线,取指令和取操作数都是通过一条总线分时进行。当进行高速运算时,不但不能同时进行取指令和取操作数,而且还会造成数据传输通道的瓶颈现象,其工作速度较慢。(2)哈佛(harvard)结构该结构采用双存储空间,程序存储器和数据存储器分开,有各自独立的程序总线和数据总线,可独立编址和独立访问,可对程序和数据进行独立传输,使取指令操作、指令执行操作、数据吞吐并行完成,大大地提高了数据处理能力和指令的执行速度,非常适合于实时的数字信号处理。微处理器的哈佛结构如图1.2.2所示。(3)改进型的哈佛结构改进型的哈佛结构是采用双存储空间和数条总线,即一条程序总线和多条数据总线。其特点如下:允许在程序空间和数据空间之间相互传送数据,使这些数据可以由算术运算指令直接调用,增强芯片的灵活性;.提供了存储指令的高速缓冲器(cache)和相应的指令,当重复执行这些指令时,只需读入一次就可连续使用,不需要再次从程序存储器中读出,从而减少了指令执行作需要的时间。如:tms320c6200系列的dsp,整个片内程序存储器都可以配制成高速缓冲结构。1.2.2 dsp芯片的特点1.采用流水线技术利用这种流水线结构,加上执行重复操作,就能保证在单指令周期内完成数字信号处理中用得最多的乘法 - 累加运算。如: 2采用多总线结构 dsp芯片都采用多总线结构,可同时进行取指令和多个数据存取操作,并由辅助寄存器自动增减地址进行寻址,使cpu在一个机器周期内可多次对程序空间和数据空间进行访问,大大地提高了dsp的运行速度。如:tms320c54x系列内部有p、c、d、e等4组总线,每组总线中都有地址总线和数据总线,这样在一个机器周期内可以完成如下操作: 从程序存储器中取一条指令;从数据存储器中读两个操作数;向数据存储器写一个操作数。3. 配有专用的硬件乘法-累加器 为了适应数字信号处理的需要,当前的dsp芯片都配有专用的硬件乘法-累加器,可在一个周期内完成一次乘法和一次累加操作,从而可实现数据的乘法-累加操作。如矩阵运算、fir和iir滤波、fft变换等专用信号的处理。 4. 具有特殊的dsp指令 为了满足数字信号处理的需要,在dsp的指令系统中,设计了一些完成特殊功能的指令。如:tms320c54x中的firs和lms指令,专门用于完成系数对称的fir滤波器和lms算法。5快速的指令周期由于采用哈佛结构、流水线操作、专用的硬件乘法器、特殊的指令以及集成电路的优化设计,使指令周期可在20ns以下。如:tms320c54x的运算速度为100mips,即100百万条/秒。6硬件配置强新一代的dsp芯片具有较强的接口功能,除了具有串行口、定时器、主机接口(hpi)、dma控制器、软件可编程等待状态发生器等片内外设外,还配有中断处理器、pll、片内存储器、测试接口等单元电路,可以方便地构成一个嵌入式自封闭控制的处理系统。7支持多处理器结构为了满足多处理器系统的设计,许多dsp芯片都采用支持多处理器的结构。如:tms320c40提供了6个用于处理器间高速通信的32位专用通信接口,使处理器之间可直接对通,应用灵活、使用方便;8省电管理和低功耗 dsp功耗一般为0.54w,若采用低功耗技术可使功耗降到0.25w,可用电池供电,适用于便携式数字终端设备。 1.3 tms320c54xdsp芯片的主要特性tms320c54x(简称c54x)是ti公司为实现低功耗、高速实时信号处理而专门设计的16位定点数字信号处理器,采用改进的哈佛结构,具有高度的操作灵活性和运行速度,适应于远程通信等实时嵌入式应用的需要,现已广泛地应用于无线电通信系统中。 (1)cpu1、 先进的多总线结构。2、 40位算术逻辑运算单元(alu),包括1个40位桶形移位寄存器和2个独立的40位累加器。3、 17位*17位并行乘法器,与40位专用加法器相连,用与非流水线式单周期乘法/累加(mac)运算。4、 比较、选择、存储单元(cssu),用于加法/比较选择。5、 指数编码器,可以在单个周期内计算40位累加器中数值的指数。6、 双地址生成器,包括8个辅助寄存器和2个辅助寄存器算术运算单元(arau)。(2)存储器1、192k字可寻址存储空间(64k字程序存储器、64k字数据存储器以及64k字i/o空间),在c548和c549中存储空间可扩展至8m字。2、片内rom,可配置为程序/数据存储器。3、片内双寻址ram(daram)。4、片内单寻址ram(saram)(仅c548和c549)。(3)指令系统1.单指令重复和块指令重复操作。2.块存储器传送指令。3.32位长操作数指令。4.同时读入2或3个操作数的指令。5.能并行存储和并行加载的算术指令。6.条件存储指令。7.从中断快速返回。(4)在片外围电路1.软件可编程等待状态发生器。2.可编程分区转换逻辑电路。3.带有内部振荡器或用外部时钟源的片内锁相环(pll)时钟发生器。4.全双工串行口,支持8位或16位传送(仅c541、lc545和lc546)。5.时分多路(tdm)串行口(仅c542、c543、c546、c548和c549)。6.缓冲串行口(bsp)(仅c542、c543、c545、c546、c548和c549)。7.16位可编程定时器。8.8位并行主机接口(hpi)(c542、c545、c548和c549)。9.外部总线关断控制,以断开外部的数据总线、地址总线和控制信号。10.数据总线具有总线保持器特性。(5)电源1、 可用idlei、idle2和idle3指令控制功耗,以工作在省电方式。2、 clkout输出信号可以关断。(6)在片坊真接口1、 具有符合ieee1149.1标准的在片坊真接口。(7)速度1、 单周期定点指令的执行时间为25/20/15/12.5/10ns(40/50/66/80/10/mips)。1.4用dsp实现正弦函数的基本算法在通信、仪器和控制等领域的信号处理系统中,可能会用到正弦发生器。一般,产生正弦波的方法有两种:1、查表法。此中方法用于对精度要求不是很高的场合。如果要求精度高,表就很大,相应的存储器容量也要增大。2、台劳级数展开法。这是一种更为有效的方法。与查表法相比,需要的存储单元很少,而且精度很高。一个角度的正弦和余弦函数,都可以展开成台劳级数,取其前5项进行近似:sin=x-x3/3!+x5/5!-x 7/7!+x9/9!=x(1-x2/2*3(1-x2/4*5(1-x2/6*7(1-x2 /8*9)cos=1-x2 /2!+x4 /4!-x6 /6!+x8 /8!=1-x2 /2!(1-x2 /3*4(1-x 2/5*6(1-x2 /7*8)上式中的x为的弧度值。也可以有递推公式求正弦和余弦值:sin n=2cos*sin(n-1)-sin(n-2)cos n=2cos*cos(n-1)-cos(n-2)利用递推公式计算正弦和余弦值需已知cos和正、余弦的前两个值。用这种方法,求少数点还可以,如产生连续正弦、余弦波,则积累误差太大,不可取。第二章ccs集成开发环境2.1 ccs集成开发环境简介利用ccs集成开发环境,用户可以在一个开发环境下完成工程定义、程序编辑、编译链接、调试和数据分析等工作环节.使用ccs开发应用程序的一般步骤为:(1) 打开或创建一个工程文件.工程文件中包括源程序(c或汇编)、目标文件、库文件、连接命令文件和包含文件.(2) 编辑各类文件.如头文件(.h文件),命令文件(.cmd文件)和源程序(.c,.asm文件)等.可以使用一般的编辑软件或ccs集成编辑环境进行各类文件编辑.(3) 对工程进行编译.如果有语法错误,将在构建(build)窗口中显示出来.用户可以根据显示的信息定位错误位置,更改错误.(4)排除程序的语法错误后,用户可以对计算结果/输出数据进行分析,评估算法性能.ccs提供了探针、图形显示、性能测试等工具来分析数据、评估性能.图中为一个典型的ccs集成环境窗口示例.整个窗口由主菜单、工具条、工程窗口、编辑窗口、图形显示窗口、内存单元显示窗口和寄存器显示窗口等构成.2.2 建立工程文件ccs采用工程文件来集中管理一个工程.一个工程包括源程序、库文件、链接命令文件和头文件等,它们按照目录树的结构组织在工程文件中.工程构建(编译链接)完成后生成可执行文件.工程视窗显示了工程的整个内容.例如图2-4显示了工程codec_eg.mak所包含的内容.其中include文件夹包含源文件中以”.include”声明的文件,libraies文件夹包含所有后缀为”.lib”的库文件,source文件夹包含所有后缀为”.c”和”.asm”的源文件.文件夹上的”+”符号表示该文件夹被折叠,”-“表示该文件夹被展开.命令project new用于创建一个新的工程文件(后缀为”.mak”),此后用户就可以编辑源程序、链接命令文件和头文件等,然后加入到工程中.工程编译链接后产生的可执行程序后缀为”.out”.命令project open用于打一个已存在的工程文件. 例如用户打开位于”c:tic5400dsk examplesdsp” 目录下的codec_eg.mak工程文件时, 工程中包含的各项信息也被载入,其工程窗口。如下图所示。 2.3 在工程中添加删除文件, 编辑源程序1.以下任一操作都可以添加文件到工程中:1.选择命令project add file to project 2.在工程视图中右键单击调出关联菜单,选择add file在工程中源文件、链接命令文件及库文件(libraries)需要用户指定加入,头文件(include文件)通过扫描相关性(scan all dependencies)自动加入到工程中.在工程视图中右键单击某文件,从关联莱单中选择”remove from project”可以从工程中删除此文件.2.编辑源程序:ccs集成编辑环境可以编辑任何文本文件(对c程序和汇编程序),可以打开多个窗口或对同一文件打开多个窗口,进行多窗口显示.点击主莱单命令file new source file弹出编辑窗口进行编辑.2.4编译和调试a, 载入可执行程序: 命令file load program载入编译链接好的可执行程序.用户也可以修改”program load”属性,使得在构建工程后自动装入可执行程序.设置方法为选择命令options program load.b, 使用反汇编工具: 在某些时候(例如调试c语言关键代码),用户可能需要深入到汇编指令一级.此时可以利用ccs的反汇编工具.用户的执行程序(不论是c程序或是汇编程序) 载入到目标板或仿真器时,ccs调试器自动打开一个反汇编窗口.如下图所示. 第三章 用ccs环境编程,调试实现正弦函数信号3.1编写汇编程序sin.asm和vectors.asm 1.正弦波源程序清单sin.asm;this function generates the sine wave of angle using the taylor series expansion;sin(theta)=x( i-x 2/2 * 3(1-x2/4 * 5(1-x 2/6 * 7(1-x2/8 * 9);cos(theta)=1-x2/2(1-x2/3 * 4(1-x2/5 * 6(1-x2/7 * 8);sin(2 * theta)=2 * sin(theta) * cos(theta).title sin.asm.mmregs.def start; .refd_xs,d_sinx,d_xc,d_cosx;.refsinx,d_xs,d_sinx,cosx,d_xc,d_cosxsin_x:.usect sin_x,360stack: .usect stack ,10k_theta .set 286 ;theta= pi/360(0. 5deg. )pa0 .set 0start:.textstm #stack + 10, spstm k_theta, ar0 ;aro-k theta (increment)stm 0,ar1 ;(arl)=x(rad. )stm #sin_x, ar6 ; ar6 - - sin xstm #90, brc ; form sino (deg.) sin90 (deg. )rptb loop1-1ldm ar1, ald # d_xs, dpstl a,d_xsstl a, d_xccall sinx ; (d sinx) = sin(x)call cosx ; (d cosx) = cos(x)ld #d_sinx,dpld d_sinx,16 , a ; a= sin(x)mpya d_cosx ; b= sin(x) * cos(x)sth b,1, *ar6+ ;ar6-2 * sin(x) * cos(x)mar *ar1+0loop1: stm #sin_x+89, ar7 ; sin91(deg. ).- sin179 (deg. )stm #88, brcrptb loop2-1ld *ar7-,astl a, *ar6+loop2: stm #179 , brc ; sin180 (deg.) sin359 (deg. )stm #sin_x, ar7rptb loop3-1ld *ar7+, aneg astl a, *ar6+loop3: stm #sin_x, ar6 ;generate sin wavestm #1, ar0stm #360,bkloop4: portw *ar6+0%, pa0b loop4sinx:.def d_xs,d_sinx.datatable_s .word 01c7h ;c1=1/(8 * 9).word 030bh ;c2=1/(6 * 7).word 0666h ;c3=1/(4 * 5).word 1556h ;c4=1/(2 * 3)d_coef_s .usect coef_s,4d_xs .usect sin_vars ,1d_squr_xs .usect sin_vars ,1d_temp_s .usect sin_vars ,1d_sinx .usect sin_vars ,1c_1_s .usect sin_vars ,1.textssbx frctstm #d_coef_s, ar5rpt #3mvpd #table_s, *ar5+stm #d_coef_s, ar3stm #d_xs, ar2stm #c_1_s, ar4st #7fffh, c_1_ssqur *ar2+, ast a, *ar2|ld *ar4, bmasr *ar2+, *ar3+, b, ampya asth a, *ar2masr *ar2-, *ar3+, b, ampya *ar2+st b, *ar2|ld *ar4, bmasr *ar2- , *ar3+, b, ampya *ar2+st b, *ar2|ld *ar4, bmasr *ar2- , *ar3+ , b, ampya d_xssth b, d_sinxretcosx:.def d_xc,d_cosxd_coef_c .usect coef_c , 4.datatable_c .word 0249h ;cl=1/(7 * 8).word 0444h ;c2=1/(5 * 6).word 0aabh ;c3=1/(3 * 4).word 4000h ;c4= 1 /2d_xc.usectcos_vars,1d_squr_xc .usect cos_vars,1d_temp_c .usect cos_vars,1d_cosx .usect cos_vars,1c_1_c .usect cos_vars,1.textssbx frctstm #d_coef_c, ar5 ;move coeff tablerpt #3mvpd #table_c, *ar5+stm #d_coef_c, ar3stm #d_xc, ar2stm #c_1_c, ar4st #7fffh,c_1_csqur *ar2+, a ; a= x-2st a, *ar2 ;(ar2)= x2|ld *ar4,b ;b=1masr *ar2+, *ar3+,b,a ;a=i-x-2/56;t= x2mpya a ;a=t * a=x2(1-x2/56)sth a, *ar2 ;(d temp) =x2(1-x2/56)masr *ar2-, *ar3+,b,a ;a=1-x2/30(1-x2/56);t=x2(1-x2/56)mpya *ar2+ ;b=x2(1-x2/30(1-x2/56)st b, *ar2 ;(d temp)=x2(1-x2/30(1-x2/56)|ld *ar4, b ;b=1masr * ar2-, * ar3+,b,a ;a=1-x2/12(1-x2/30(1-x2/56)sfta a,-1,a ;-1/2neg ampya *ar2+ ;b=-x2/2(1-x2/12(1-x2/30;(1-x2/56) )mar *ar2+retdadd *ar4,16,b ;b=1-x2/2(1-x2/12(1-x2/30;(1-)c2/56)sth b, *ar2 ;cos(theta)ret.end2. vectors.asm.title “vectors”“ref start.sect “.vectors”b start.end3.2编写链接命令文件sin.cmd.debugsin.obj.debugvectors.obj-osin.out-msin.map-estartmemorypage 0:eprom : org=0e000h, len=1000hvecs : org=0ff80h, len=0080hpage 1:spram : org=0060h, len=0020hdaram1 : org=0080h, len=0010hdaram2 : org=0090h, len=0010hdaram3 : org=0200h, len=0200hsections.text : eprom page 0.data : eprom page 0stack : spram page 1sin_vars : daram1 page 1coef_s : daram1 page 1cos_vars : daram2 page 1coef_c : daram2 page 1sin_x :align(512) daram3 page1.vectors: vecspage 0注意:在实际上机操作时命令文件中的以下段可以没有:.debugsin.obj.debugvectors.obj-osin.out-msin.map-es

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论