DSp原理及应用(C54x)课程实训

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1绪论数字信号处理器(DSP)是一种特别适合于进行数字信号处理运算的微处理器,主要用于实时快速实现各种数字信号处理的算法。在20世纪80年代以前,由于受实现方法的限制,数字信号处理的理论还不能得到广泛的应用。直到20年及80年代初,世界上第一块单片可编程DSP芯片的诞生,才使理论研究成果广泛应用到实际的系统中,并且推动了新的理论和应用领域的发展。可以毫不夸张地讲,DSP芯片的诞生及发展对近20年来通信、计算机、控制等领域的技术发展起到十分重要的作用。数字信号处理不同于普通的科学计算与分析,它强调运算的实时性。除了具备普通微处理器所强调的高速运算和控制能力外,针对实时数字信号处理的特点,在处理器的结构、指令系统、指令流程上作了很大的改进,其主要特点如下:1.哈佛结构DSP芯片普遍采用数据总线和程序总线分离的哈佛结构或改进的哈佛结构,比传统处理器的冯·诺伊曼结构有更快的指令执行速度。(1)冯·诺伊曼(VonNeuman)结构该结构采用单存储空间,即程序指令和数据共用一个存储空间,使用单一的地址和数据总线,取指令和取操作数都是通过一条总线分时进行。当进行高速运算时,不但不能同时进行取指令和取操作数,而且还会造成数据传输通道的瓶颈现象,其工作速度较慢。(2)哈佛(Harvard)结构该结构采用双存储空间,程序存储器和数据存储器分开,有各自独立的程序总线和数据总线,可独立编址和独立访问,可对程序和数据进行独立传输,使取指令操作、指令执行操作、数据吞吐并行完成,大大地提高了数据处理能力和指令的执行速度,非常适合于实时的数字信号处理。(3)改进型的哈佛结构改进型的哈佛结构是采用双存储空间和数条总线,即一条程序总线和多条数据总线。它允许在程序空间和数据空间之间相互传送数据,使这些数据可以由算术运2算指令直接调用,增强芯片的灵活性;同时提供了存储指令的高速缓冲器(cache)和相应的指令,当重复执行这些指令时,只需读入一次就可连续使用,不需要再次从程序存储器中读出,从而减少了指令执行作需要的时间。如:TMS320C6200系列的DSP,整个片内程序存储器都可以配制成高速缓冲结构。2.多总线结构许多DSP芯片内部都采用多总线结构,可同时进行取指令和多个数据存取操作,并由辅助寄存器自动增减地址进行寻址,使CPU在一个机器周期内可多次对程序空间和数据空间进行访问,大大地提高了DSP的运行速度。如:TMS320C54x系列内部有P、C、D、E等4组总线,每组总线中都有地址总线和数据总线,这样在一个机器周期内可以完成如下操作:1)从程序存储器中取一条指令;2)从数据存储器中读两个操作数;3)向数据存储器写一个操作数。3.流水线结构DSP执行一条指令,需要通过取值,译码,取操作数和执行等几个阶段。在DSP芯片中,采用流水线结构,在程序运行过程中这几个阶段是重叠的,如图1所示。这样,在执行本条指令的同时,还依次完成了后面3条指令的取操作数、译码和取指,大大地DSP的处理能力。利用这种流水线结构,加上执行重复操作,就能保证数字信号处理中用得最多的乘法累加运算可以在单个指令周期内完成。图14.配有专用的硬件乘法累加器niiixay13为了适应数字信号处理的需要,当前的DSP芯片都配有专用的硬件乘法累加器,可在一个周期内完成一次乘法和一次累加操作,从而可实现数据的乘法-累加操作。如矩阵运算、FIR和IIR滤波、FFT变换等专用信号的处理。5.特殊的DSP指令为了满足数字信号处理的需要,在DSP的指令系统中,设计了一些完成特殊功能的指令。如:TMS320C54x中的FIRS和LMS指令,专门用于完成系数对称的FIR滤波器和LMS算法。6.指令周期由于采用哈佛结构、流水线操作、专用的硬件乘法器、特殊的指令以及集成电路的优化设计,使指令周期可在20ns以下。如:TMS320C54x的运算速度为100MIPS,即100百万条/秒。7.硬件配置强新一代的DSP芯片具有较强的接口功能,除了具有串行口、定时器、主机接口(HPI)、DMA控制器、软件可编程等待状态发生器等片内外设外,还配有中断处理器、PLL、片内存储器、测试接口等单元电路,可以方便地构成一个嵌入式自封闭控制的处理系统。8.支持多处理器结构为了满足多处理器系统的设计,许多DSP芯片都采用支持多处理器的结构。如:TMS320C40提供了6个用于处理器间高速通信的32位专用通信接口,使处理器之间可直接对通,应用灵活、使用方便;9.省电管理和低功耗DSP功耗一般为0.5~4W,若采用低功耗技术可使功耗降到0.25W,可用电池供电,适用于便携式数字终端设备。4第一章系统简介1.1CCS集成开发环境简介利用CCS集成开发环境,用户可以在一个开发环境下完成工程定义、程序编辑、编译链接、调试和数据分析等工作环节。使用CCS开发应用程序的一般步骤为:(1)打开或创建一个工程文件.工程文件中包括源程序(或汇编)、目标文件、库文件、连接命令文件和包含文件。(2)编辑各类文件。如头文件(.h文件),命令文件(.cmd文件)和源程序(.c,.asm文件)等。可以使用一般的编辑软件或CCS集成编辑环境进行各类文件编辑。(3)对工程进行编译.如果有语法错误,将在构建(Build)窗口中显示出来。用户可以根据显示的信息定位错误位置,更改错误。(4)排除程序的语法错误后,用户可以对计算结果/输出数据进行分析,评估算法性能。CCS提供了探针、图形显示、性能测试等工具来分析数据、评估性能。图中为一个典型的CCS集成环境窗口示例.整个窗口由主菜单、工具条、工5程窗口、编辑窗口、图形显示窗口、内存单元显示窗口和寄存器显示窗口等构成。1.2使用步骤CCS采用工程文件来集中管理一个工程。一个工程包括源程序、库文件、链接命令文件和头文件等,它们按照目录树的结构组织在工程文件中。工程构建(编译链接)完成后生成可执行文件。工程视窗显示了工程的整个内容。命令ProjectNew用于创建一个新的工程文件(后缀为”.mak”),此后用户就可以编辑源程序、链接命令文件和头文件等然后加入到工程中.工程编译链接后产生的可执行程序后缀为”.out”.命令ProjectOpen用于打一个已存在的工程文件。例如用户打开位于”c:\ti\c5400\dsk\examples\dsp”目录下的codec_eg.mak工程文件时,,工程中包含的各项信息也被载入,其工程窗口。如图2所示:图21.3在工程中添加删除文件以下任一操作都可以添加文件到工程中:①选择命令ProjectAddFiletoProject…②在工程视图中右键单击调出关联菜单,选择AddFile…在工程中源文件、链接命令文件及库文件(Libraries)需要用户指定加入,6头文件(Include文件)通过扫描相关性(ScanAllDependencies)自动加入到工程中。在工程视图中右键单击某文件,从关联莱单中选择”Removefromproject”可以从工程中删除此文件。1.4编辑源程序CCS集成编辑环境可以编辑任何文本文件(对C程序和汇编程序),可以打开多个窗口或对同一文件打开多个窗口,进行多窗口显示.点击主莱单命令FileNewSourceFile弹出编辑窗口进行编辑。1.5编译和调试1)载入可执行程序:命令FileLoadProgram载入编译链接好的可执行程序。用户也可以修改”ProgramLoad”属性,使得在构建工程后自动装入可执行程序。设置方法为选择命令OptionsProgramLoad。2)使用反汇编工具:在某些时候(例如调试C语言关键代码),用户可能需要深入到汇编指令一级。此时可以利用CCS的反汇编工具。用户的执行程序(不论是C程序或是汇编程序)载入到目标板或仿真器时,CCS调试器自动打开一个反汇编窗口。如图3所示:图33)断点:①断点设置有两种方法可以增加一条断点:7(1)使用断点对话框选择命令DebugBreakpoints,在“BreakpointType”栏中可以选择“无条件断点(BreakatLocation)”或“有条件断点(BreakatLocationifexpressionisTRUE)”。在“Location”栏中填写需要中断的指令地址。用户可以观察反汇编窗口,确定指令所处地址。对C代码,由于一条C语句可能对应若干条汇编指令,难以用唯一地址确定位置。为此可以采用“filenamelinelineNumber”的形式定位源程序中的一条C语句。断点类型和位置设置完成后,依次单击“Add”和“OK”按钮即可。断点设置成功后,该语句条用彩色光条显示。(2)采用工程工具条将光标移到需要设置断点的语句上,点击工程工具条上的“设置断点”按钮。则该语句位置一断点,默认情况下为“无条件断点”。用户也可以使用断点对话框修改断点属性,例如将“无条件断点”改为“有条件断点”。②断点的删除选择命令DebugBreakpoints,在弹出的断点对话框中,单击“Breakpoint”列表中的一个断点,然后点击“Delete”按钮可删除此断点。点击“Deleteall”按钮或工程工具条上的“取消所有断点”按钮,将删除所有断点。③允许和禁止断点选择命令DebugBreakpoints,在弹出的断点对话框中,单击“EnableAll”或“DisableAll”将允许或禁止所有断点。“允许”状态下,断点位置前的复选框有“对勾”符号。注意只有当设一断点,并使其“允许”时,断点才发挥作用。4)查看、编辑内存CCS允许显示特定区域的内存单元数据。方法为选择ViewMemory或单击调试工具条上的”显示内存数据”按钮。在弹出对话框中输入内存变量名(或对应地址)、显示方式即可显示指定地址的内存单元。为改变内存窗口显示属性(如数椐显示格式,是否对照显示等),可以在内存显示窗口中单击右键,从关联莱单中选择Properties即弹出选项对话框。8内存窗口选项包括以下内容:(1)Address:输入需要显示内存区域的起始地址。(2)QValue:显示整数时使用的Q值(定点位置)。新的整数值=整数/2Q。(3)Format:从下拉菜单中选取数据显示的格式。(4)UseIEEEFloat:是否使用IEEE浮点格式。(5)Page:选择显示的内存空间类型-程序、数据或I/O。(6)EnableReferenceBuffer:选择此检查框将保存一特定区域的内存快照以便用于比较。(7)StartAddress:用户希望保存到参考缓冲区(ReferenceBuffer)的内存段的起始地址.只有当用户选中”EnableReferenceBuffer”检查框时此区域才被激活。(8)EndAddress:用户希望保存到参考缓冲区的内存段的终止地址.只有当用户选中”EnableReferenceBuffer”检查框时此区域才被激活。(9)UpdateReferenceBufferAutomatically:若选择此检查框,则参考缓冲区的内容将自动被内存段(由定义参考缓冲区的起始/终止地址所规定的区域)的当前内容覆盖。9第二章实验目的、内容及原理2.1实验目的学会使用CCS(CodeComposerStudio)集成开发环境软件,,在此集成开发环境下完成工程项目创建,程序编写、编译、连接、调试以及数据的分析。同时完成一个正弦波信号发生器的编程的编写,并在集成开发环境下进行模拟运行,观察结果。2.2实验内容编写一个产生正弦信号的程序,在CCS软件下进行模拟运行,观察输出结果。2.3实验原理在通信、仪器和控制等领域的信号处理系统中,可能会用到正弦发生器。一般,产生正弦波的方法有两种:1、查表法。此中方法用于对精度要求不是很高的场合。如果要求精度高,表就很大,相应的存储器容量也要增大。2、台劳级数展开法。这是一种更为有效的方法。与查表法相比,需要的存储单元很少,而且精度很高。一个角度θ的正弦和余弦函数,都可以展开成台劳级数,取其前5项进行近似:sinθ=x-x3/3!+x5/5!-x7/7!+x9/9!=x(1-x2/2*3(1-x2/

1 / 26
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功