数字信号处理小实验.doc_第1页
数字信号处理小实验.doc_第2页
数字信号处理小实验.doc_第3页
数字信号处理小实验.doc_第4页
数字信号处理小实验.doc_第5页
已阅读5页,还剩69页未读 继续免费阅读

下载本文档

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

文档简介

西安电子科技大学DSP技术及应用实验小作业学 院 电子工程学院 专 业 电路与系统 学 号 1202120902 学生姓名 王艳涛 授课老师 郭万有 实验一VISUALDSP+的使用入门实验一的目的实验一的主要目的是熟悉VISUAL DSP+的开发环境。针对ADSPTS201,利用几个用C、C+和汇编语言写成的简单例子来描述 VISUAL DSP十编程环境和调试器(debugger)的主要特征和功能。对于运行在其它类型TS20x处理器的程序只需对其链接描述文件(LDF)做一些修改,就可用于其它芯片或者ADSPTS201的硬件仿真。在目录TSldf下有每种处理器类型的链接描述文件,可供参考。实验一包括4个基本练习:练习一:启动Visual DSP+ 4.0,建立一个用C源代码的工程(Project),同时用调试器来评估用C语言所编写代码的性能;练习二:创立一个新的工程,修改源码来调用一个汇编(asm)程序,重新编译工程,用调试器来评估用汇编语言所写程序的性能;练习三:利用调试器的绘图(plot)功能来图形显示一个FIR算法中的有关数据的波形;练习四:利用调试器的性能统计功能(Statistical profile)来检查练习三中FIR算法的效率。利用所收集到的性能统计数据就能看出算法中最耗时的地方。实验1运行C程序在练习一中,将创立和运行一个C程序,源文件在TS201讲义参考实验程序Tutorialdot_product_c子目录。1. 实验步骤l) 进入Visual DSP十并打开一个工程(Project)进入 Visual DSP,显示Visual DSP+的集成开发和调试环境窗口(Integrated Development and Debugger Environment,简称IDDE)。选择菜单File 中Open 打开文件unit_1dot_product_c dotprodcdpj。VisualDSP+环境将装载dotprodc工程,并列出相应的源文件。在输出窗口(Output Window)中显示简要信息。Dotprodc工程中有3个文件,定义数组和计算数组点积和的两个C语言源文件 dotprod_main.(主程序)、dotprod.c(子程序)。2) 编译 dotprodc工程在菜单 Project中选择 Build Project来对工程进行编译。此时,输出窗口显示程序编译时的各种状态信息(包括出错和编译进程信息)。当编译检测到错误时,将在输出窗口出现相应的出错信息,用鼠标双击它,编译器将自行打开源文件。这时可对源文件编辑、修改错误,再次进行编译。当编译不再有错时,输出窗口将显示“Build completed successfully”。在本例子中,编译器会检测到一个未定义的错误,显示为:“dotprod_main.c”,line 115:error 20:identifier“itn”is undefined itn i;在输出窗口中对该行文字用鼠标双击,环境会自动打开 dotprod_main.c文件,并将光标定位在出错行。你可以看见单词“int”被错写成“itn”。将该错误改正后,保存并重新编译。如果再没有错误出现,这时工程已被成功编译,就可以用VisualDSP+的debugger来调试程序。VisualDSP+开发环境的编辑窗口和输出窗口以及所显示的程序编译时的各种状态信息如图7.1所示: 图7.1 VisualDSP+开发环境的编辑窗口和输出窗口图 7.2 NeW Session 对话框3) 运行VsualDSP+调试器在编译完成后,环境将自动进入调试状态,对于初次进入debugger,将显示对象选择对话框,在其中指定对象和处理器信息。 域选择值Debug TargetADSP-TS20x Family SimulatorPlatformADSP-TS201 Rev.0.0 Single Processor SimulatorSession NameADSP-TS201 ADSP-TS201 Rev.0.0 Single Processor SimulatorProcessorADSP-TS201 若在调试过程中需定义不同的对象和处理器类型,选取菜单Sessions中NeW Session项来重新定义。NeW Session 对话框图7.2所示:用VisualDSP十调试时,调试器会自动调入工程的可执行文件dotprodcdxe。在默认情况下,调试器会打开三个窗口:输出窗口(下)、反汇编窗口(右)、包括工程主文件dotprod_main.c的源代码窗口(左)。如图7.3所示,左窗的每一条C语句都对应右窗中的多条汇编指令:图7.3 调试器的输出窗口、反汇编窗口和源代码窗口在图7.3中,箭头所指为当前执行指令,红圆圈代表设定的断点位置。当调试器加载C程序时,会自动设置两个断点,分别在代码执行的开头和结尾。测览程序中的断点可选择菜单Settings下的BreakPoints,可在此对话框中增加或删除断点。另外也可通过在每条代码行的开头处双击鼠标或快捷键F9来设置或取消断点。4) 运行dotprod.c从 Debug菜单中选择 Run项,程序将被执行,其输出结果在 Output window中显示。如图7.4所示:图7.4 dotprod.c 输出结果5) 评估函数 a_doc_c 的性能(profile)Profile用来分析程序的运行时间特性,通过Profile可以找到最耗时的程序段,这可能就是需要进一步优化性能的程序段。通过下述步骤来设置Profile功能并显示其结果:(1) 选 ToolsLinear ProfilingNew Profile命令,如图7.5所示:图7.5 设置Profile功能的菜单(2) 出现一个Profile的子窗口,在该窗口上点击右键弹出如图7.6(1)的快捷菜单,如图7.6(1)所示: 图7.6 Profile右键快捷菜单 图7.6(2) 设置进行评估的起始地址和结束地址(3) 点击菜单中的Properties.,选中第二个选项卡“filter”然后设置开始地址和结束地址;如图7.6(2)所示。VisualDSP+允许在整个程序空间中进行评估,当然也可以设置若干个Memory ranges(汇编程序评估选项)或若干个C子程序的函数体进行评估,即可以重复指定多个 Profile Range。在本例中要求对三个子函数a_dot_b() 、a_dot_c()、a_dot_d()的运行效率作出评估,应在 “Filter”选项卡中选择C/C+ function,如图7.6(2) 所示:(4)重新编译加载程序,按F5继续运行程序,程序完全执行后,将在Console窗口显示结果,并在Profile窗口中显示程序运行过程中的各种数据。点击右键菜单中View Sample Count,显示如图7.7(1)所示:7.7 Profile窗口(1)将Project Options中的编译器设置将代码优化功能选中,重新编译和链接程序后,对程序中的三个子函数的运行性能重新进行评估,如图7.7(2)所示,对比优化前和优化后的区别,说明其原因。图7.7 Profile窗口(2)2. 实验要求记录profile窗口中函数a_dot_c()的评估结果,分析程序的执行时间。实验2运行C和汇编混合程序在练习一中的例子是C主程序调用C子程序。在练习二中,要学会如何创建新工程,在此基础上我们将修改这个C主程序,让其调用一个汇编子程序,重新编译工程并评估汇编程序的性能。1实验步骤l)创建一个新的工程(project)从 Project菜单中选取New项,在弹出的工程保存对话框中,将工程名定义为dot_product_asm,并保存在unit_1dot_product_asm目录下。接着在弹出的工程选项对话框中定义其各项参数值,其各项参数值可如下表所示:选项设定值ProcessorADSP-TS201TypeDSP executable fileNamedot_product_asmSettings forDebug这些参数都是针对ADSP-TS201处理器而设置的,Visual DSP+的Project 选项卡如图7.8所示: 图7.8 Visual DSP+的Project 选项卡 图7.9 Visual DSP+的Compile 选项卡在Project Options对话框中,选中“Enable optimization”和“Generate debug information”两项,系统将自动生成针对ADSP-TS201的优化代码,如图7.9所示:2) 向dot_product工程中添加文件选取菜单ProjectAdd to Projectfile(s)项,按住Ctrl键来同时选中dotprod_mainc,dotprodc,dotprod_funcasm文件,点击“Add”将这几个文件加到工程中。结果如图7.10所示:图7.10 添加文件对话窗3)创建链接描述文件在此步骤中,我们将给该工程创建一个连接描述文件。连接描述文件创建步骤如下:1,在Tool菜单中,点击Expert Linker中的Creat LDF,就会出现如下图7.11所示的窗口。 图7.11 图7.122选择“Project type”为C型,点击“下一步“,如图7.123选择“System type”为“Single process”,下一步,窗口如图7.13。 图7.13 图7.144在如下图7.14的窗口中,点击完成,就会出现该工程的链接描述文件图。至此,该工程的链接描述文件就创建成功。4) 修改工程源文件在此步骤中,我们将修改dotprod_main.c文件,让其调用一个汇编子程序 a_dot_c_asm来取代a_doc。打开dotprod_main.c文件,在源代码中找到下列相应的四条语句:extern int a_dot_c( int *, int * );/*extern int a_dot_c_asm( int *, int * );*/ result1 = a_dot_c( a, c );/* result1 = a_dot_c_asm( a, c );*/将这四条语句修改为:/*extern int a_dot_c( int *, int * );*/extern int a_dot_c_asm( int *, int * ); /* result1 = a_dot_c( a, c );*/ result1 = a_dot_c_asm( a, c );这样主程序将调用a_dor_c_asm汇编程序来取代练习一中的a_dot_c子程序。5) 修改链接描述文件当工程源文件修改该完毕后,编译在工程,输出窗口如下图7.15所图7.15打开链接描述文件,如下图7.16:图7.16将左边方框中的带有红叉的“dotprod_func.doj”拖动到右边方框M0Code内存中(可通过右上角的放大器放大查看),红叉消失,这时我们就对链接描述文件进行了修改。6) 编译和运行dot_product先选取菜单 ProjectBuild Project项来编译工程;再选取菜单 DebugRun项来运行程序。在输出窗口(Output Windows)中就会得到运行结果:Dot product 0 = 13273595Dot product 1 = -49956078Dot product 2 = 358725187) 评估a_dot_asm的效率要评估汇编代码的效率,要在评估属性设置窗口中的“Memory ranges”中设定评估代码的起始地址。将Start Address设置为汇编子程序入口地址_a_dot_c_asm,将End Address设置为汇编子程序的出口地址_a_dot_c_asm.end。重新加载程序,并运行程序进行汇编语言程序评估,评估的设定窗口和结果窗口及结果如图7.17示:图7.17 a_dot_asm Profile 设定窗口和结果窗口从图中可以看出原来没有优化的C语言子程序为626,现在改变为汇编语言程序嵌入后为201,从而说明汇编语言执行速度比C语言快多了。实验3数据绘图(Plotting)练习三是对一个己编译的算法程序的数据进行绘图输出 1. 实验步骤l) 将算法程序调入Debugger环境关闭所有已打开的工程和文件,选择菜单 FileLoad Program.项或点击图标。在出现的对话框中选择文件bkfir2_flp32debug bkfir2_flp32dxe。可以在C代码源文件中看到两个全局数组:inputs和output。2) 打开绘图窗口并设定参数选择菜单 ViewDebug WindowsPlotNew项,将出现Plot参数设置窗口。在 Plot Type项中选择 Line Plot,在 Plot Title中输入fir。其它参数设定如表71所示:表71 Plot参数设置Data SetsNameMemoryAddressCount StrideDatainputsinputsTigerSharcMemoryInputs2561float outputoutputTigerSharcMemoryoutput2561floatPlot设置对话框如图7.18示:图7.18 Plot设置对话框各行参数在设置完后,点击“Add”加入,最后点击“OK”。此时屏幕将出现Plot设置对话框如图7.19所示的绘图窗口:图7.19 程序运行之前的Plot窗口IN变量图3) 运行fir程序并在图形窗口中观察数据接F5运行程序,当程序Halt(SHIFT-F5)后,用Plot窗口绘出出现数据output的曲线。图中的两条曲线分别代表inputs(绿)和output(紫)数组的值,程序运行后的Plot窗口如图7.20(1)所示:图7.20(1) 程序运行后的Plot 窗口在Plot窗口中可用鼠标左键选取图形的一部分 图形会自动对所选区域放大,便于数据的观察。若要精确地知道某个数据在某点的值,可点击鼠标的右键,在弹出的菜单中选取“Data Cursor”项,图形上将出现“十”字大光标,可点击曲线上的任一点,在窗口左下角会出现该点的数值和曲线名,可用键盘上的上()下()键来切换所选曲线。4)绘制幅度谱线图在plot窗口点击右键,选择“modify setting”,在“plot setting”窗口选择“data processing”,在“data sets”窗口选择“inputs”,在“data process”窗口选择“FFT Magnitude”,然后点“OK”,重复一以上操作,把数据“output”也改为“FFT Magnitude”,在plot窗口可以看到如下图7.20(2)所示:图7.20(2)数据的FFT该图就是bkfir2_flp32滤波前后的数据频谱图。实验4性能统计在练习四中,我们将再次调用并调试fir程序,用调试器的性能特性(statistical Profiling)来找出程序中最花时间的部分。1. 实验步骤l) 打开fir程序关闭所有的文件,如同练习三中的一样,选用菜单FileLoad Program命令项,在对话框中选择文件bkfir2_flp32debug bkfir2_flp32dxe。2) 打开统计特性选项选 ToolsLinear ProfilingNew Profile命令,出现 Statistical Profiling Results窗口,如图7.21所示:图7.24 Statistical Profiling Results窗口3) 收集和检查统计特性数据按F5使程序运行到结尾。统计数据会在统计特性结果窗口中出现,窗口被分为两个部分。左边窗口显示三列数据,每列的含义为: Histogram:用图形的方式来显示该执行单元所用时间百分比。 :用数字显示该执行单元所占用的时间百分比。 Execution Unit:执行单元,对于C或C十十语言中的函数显示其函数名,对于其它指令或汇编语言显示指令的地址,显示为 PCxxx。从窗口中我们可以看出main()函数用去了总程序时间的约99.94。用鼠标双击该行,在右边窗口显示该函数的源代码及其行数,且显示各语句所用的时间百分比。结果如图7.16所示:图7.16 统计特性数据窗口从窗口中可以看出,内循环占去了92.29的时间。因此,在编程时若需提高算法的执行效率,可将该段代码用汇编语言重新编写来提高它的效率。2. 实验要求记录统计特性数据窗口的结果,分析耗时最多的程序段,指出原因。实验结果实验1运行C程序实验结果:优化的实验结果:结论:选定程序优化选项后,程序运行时间明显减少。实验2运行C和汇编混合程序实验结果:C语言运行结果:汇编语言运行结果:结论:从图中可以看出原来没有优化的C语言子程序为643,现在改变为汇编语言程序嵌入后为194,从而说明汇编语言执行速度比C语言快多了。实验3数据绘图(Plotting)实验结果:未执行之前输入(inputs)蓝色,输出(output)紫色,时域图:执行之后输入(inputs)蓝色,输出(output)紫色,时域图:执行之后输入(inputs)蓝色,输出(output)紫色,频域图:实验4性能统计实验结果实验结果如下图所示,从图中可以看出程序loop循环部分耗时最多。原因:loop部分进行了大量的乘法运算因此比较耗费时间。如果想要减少运行时间提高效率 可以用汇编语言来提高函数的效率。实验5内存与SDRAM间的一维DMA通信1. 实验目的了解DMA通信基本原理,掌握内存与SDRAM间一维DMA通信方式及相关控制方法。2. 实验原理:DMA是一种不需要处理器内核干预的数据传输机制,作为一种后台任务执行,即进行DMA传输时,处理器可以处理其它任务。如果使能了DMA中断,那么当数据传输结束后会产生中断信号,表示DMA传输已经完成。DMA传输方式包括:一维DMA、二维DMA、链式DMA、AutoDMA等,本次实验使用一维DMA方式,即传输存储器中一段连续的数据(地址是相邻接的)。若要利用DMA传输数据,首先应配置DMA传输控制块(TCB)寄存器。DMA传输的数据具有方向性,即从发送端(源)到接受端(目的),若为外部存储器DMA传输,则需要设置两个TCB参数,一个源TCB,用于描述源数据的地址、大小和每次传输数据的长度等;还有一个目的TCB,用于描述数据传入的目标地址、数据大小及每次传输数据的长度等。若要使能DMA中断,也需要在TCB中设置相应位。若使用链路或AutoDMA通道则只需一个目的TCB。设置好TCB寄存器后,DMA传输自动开始。TS201S一共14个DMA通道,4个通道(03)专用于外部存储器设备,8个通道(411)用于链路口,2个通道(1213)用于自动DMA操作。本次实验使用DMA0通道实现内存与外部存储器SDRAM间的一维DMA通信。3. 相关寄存器说明:1 TCB寄存器TCB寄存器是一个128位的四字组寄存器,由DI、DX、DY和DP寄存器组成:a) DI是DMA索引寄存器,包括了将要发送或者接收的数据的源地址或者目的地址,既可以指向内部存储器又可以指向外部存储器,也可指向链路口b) DX包含了一个16位(高)的计数值和一个16位的修改量,若使能了二维DMA则该寄存器保存的只是X方向的计数值和修改量c) DY与DX结合一起使用,保存了Y方向上的16位计数值和16位修改量。如果只进行一维DMA传输,就不需要设置该寄存器。d) DP寄存器包括了DMA所有控制信息,分为两个主要段3122210DMA控制链式指针&链标记(用于链式DMA)对DP寄存器各位功能说明:位说明位说明014四字地址(TCB指针)2526操作数据长度:01=32位,10=64位,11=128位1516链指针选择存储单元1721链目的通道27二维DMA使能22使能链式DMA28DMA请求优先级,0=正常优先级,1=高优先级23DMA请求使能24DMA中断使能2931指定DMA设备类型2中断屏蔽寄存器(IMASK) IMASK是一个64位寄存器,由IMASKH和IMASKL组成,当IMASK中某位被设置成1的时,那么将响应这个位所对应的中断。DMA0中断对应在IMASKL中的第14位,所以我们要取消对DMA0中断的屏蔽,使能DMA0中断,可以通过如下指令实现:xr0=0x4000; /*0x4000= B 0100 0000 0000 0000 */IMASKL=xr0;xr0=0;IMASKH=0也可以直接使用如下指令实现,原理是一样的,下面的方法更为直观一些。xr0=INT_DMA0; /* INT_DMA0在头文件中的定义的值为0x4000*/IMASKL=xr0;4. 实验例程:程序说明:本程序用汇编语言编写,主要由以下几个部分构成:_Initialize_Bus_SDRAM:实现对总线初始化设置,本实验不予重点讲解,可参考硬件手册;_Fill_Tx_Data:利用循环向rx_daata写入要传输的数据值11024;_Load_DMA0_TCBs:向DMA0通道的TCB寄存器导入设置好的参数,开始DMA传输;_Done:用于观察相关存储器内存储值的变化。5. 实验步骤1启动程序运行VisualDSP+进入主程序界面,更改Session为ADSP-TS201S Rev.0.0 Single Processor Simulator。若此时程序自动打开一个(或多个)工程,先将其关闭,通过以下两种方式实现: 3编译程序新建工程文件,自定义文件名,然后将 .CodeDMADMA1下的DMA1.asm源文件导入工程中的Source Files内;建立链接文件(如下图),一切选项保持默认,完成链接文件建立。 选择Project菜单下的Build project 选项进行编译,此时会出现如下错误信息:含义:声明的程序段/数据段所存放到了不能被执行的位置,导致rx_data没有被分配到相应的存储空间,我们通过修改LDF文件来消除此错误。在左侧的工程窗口中双击相应的LDF文件会出现Expert Linker窗口(如下图),我们会发现sdram0上有红叉标记,说明此部分有问题。由于TS201S将外部存储器SDRAM地址映射到了0x4000 0000到0x7FFF FFFF之间的四个部分:MSSD03,所以我们将DMA1.obj拖拽至其中之一即可,由于开发板上SDRAM是映射在MSSD0,为方便以后实验,直接拖至MSSD0。完成上述操作后,重新编译工程。编译成功后,为方便观察存储器内相应地址其内容变化,在_Done处设置断点,将光标移至相应位置,按F9设置。与此同时打开两个存储器观察窗口,选择菜单Memory-TigerSHARC Memory,分别输入tx_data和rx_data,如下图:点击Debug菜单下的RUN选项开始运行(或直接按F5),程序自动运行至_Done后停止,观察tx_data内数据值,然后单步运行程序(F11),观察rx_data内数据变化。6. 实验要求1按照实验步骤完成实验;2修改程序,DMA每次传输一个字(32位),验证结果;3修改程序,用软环境模拟外部中断来启动DMA传输,并观察传输结果。提示:实际操作可参考之前实验课件中软模拟Interrupt Timing的设置并且通过修改一些程序。4分析两个程序的原理,简述软环境模拟外部硬件中断的程序流程。实验6内存与SDRAM间的二维DMA通信1. 实验目的了解DMA通信基本原理,掌握内存与SDRAM间二维DMA通信方式及相关控制方法。2. 实验原理:二维DMA将存储区中的数据块作为一个数据阵列进行传输,有利于执行矩阵操作的DSP算法。若要进行二维DMA传输,对DX、DY寄存器都要进行设置,同时在DP寄存器中使能二维DMA(第27位)。DX增量寄存器(DX低16位)保存的是偏移值,此值加上当前地址后指向X维的下一数据元素(下一内循环首址),DX计数寄存器(DX高十六位)保存在X维方向(循环内部)需要传输的字数,传输一次减一,可以指示当前行中待传输的字数。DY增量寄存器保存的是Y维方向(外循环)的偏移值,此值加上当前地址可以指示Y维方向上下一个数据元素(下外循环的首址)。DY计数寄存器初始值是Y维的传输单元数(外循环次数),每当DX计数器减少至零时,其值才减一。当Y计数寄存器内容减为零时,DMA传输完成。二维DMA的具体执行过程:a) 输出保存在TCB DI寄存器中的当前地址,启动一个DMA存储器周期;b) 在此周期内,将TCB DX增量寄存器中的值与当前DI寄存器中的当前地址相加,产生下一个要访问的数据元素地址,同时更新DI寄存器的值;c) DX计数器的值减一,然后跳回第二步执行,直至DX计数器值减为零;d) DX计数器减为零后,DX计数器被重新加载原来的初始值;e) DY增量寄存器的值加到DI寄存器中的当前地址;f) DY计数寄存器内容减一,然后从第二步继续开始执行,直至DY计数器减少至零,完成二维DMA传输。3. 相关寄存器说明:TCB寄存器TCB寄存器是一个128位的四字组寄存器,由DI、DX、DY和DP寄存器组成:a) DI是DMA索引寄存器,包括了将要发送或者接收的数据的源地址或者目的地址,既可以指向内部存储器又可以指向外部存储器,也可指向链路口b) DX包含了一个16位(高)的计数值和一个16位的修改量,若使能了二维DMA则该寄存器保存的只是X方向的计数值和修改量c) DY与DX结合一起使用,保存了Y方向上的16位计数值和16位修改量。如果只进行一维DMA传输,就不需要设置该寄存器。d) DP寄存器包括了DMA所有控制信息,分为两个主要段21310DMA控制链式指针&链标记(用于链式DMA)22对DP寄存器各位功能说明:位说明位说明014四字地址(TCB指针)2526操作数据长度:01=32位,10=64位,11=128位1516链指针选择存储单元1721链目的通道27二维DMA使能22使能链式DMA28DMA请求优先级,0=正常优先级,1=高优先级23DMA请求使能24DMA中断使能2931指定DMA设备类型4. 实验例程:程序说明:本程序用汇编语言编写,主要由以下几个部分构成:_Initialize_Bus_SDRAM:实现对总线初始化设置,本实验不予重点讲解,可参考硬件手册第八章;_Fill_Tx_Data:利用循环向rx_data写入要传输的数据值;_Load_DMA0_TCBs:向DMA0通道的TCB寄存器导入设置好的参数,开始DMA传输;_Done:用于观察相关存储器内存储值的变化。5. 实验步骤1启动程序运行VisualDSP+进入主程序界面,更改Session为ADSP-TS201S Rev.0.0 Single Processor Simulator。若此时程序自动打开一个(或多个)工程,先将其关闭,通过以下两种方式实现: 3编译程序新建工程文件,自定义文件名,然后将 .CodeDMADMA2下的DMA2.asm源文件导入工程中的Source Files内;建立链接文件(如下图),一切选项保持默认,完成链接文件建立。 选择Project菜单下的Build project 选项进行编译,此时会出现如下错误信息:含义:声明的程序段/数据段所存放到了不能被执行的位置,导致rx_data没有被分配到相应的存储空间,我们通过修改LDF文件来消除此错误。在左侧的工程窗口中双击相应的LDF文件会出现Expert Linker窗口(如下图),我们会发现sdram0上有红叉标记,说明此部分有问题。由于TS201S将外部存储器SDRAM地址映射到了0x4000 0000到0x7FFF FFFF之间的四个部分:MSSD03,所以我们将DMA1.obj拖拽至其中之一即可,由于开发板上SDRAM是映射在MSSD0,为方便以后实验,直接拖至MSSD0。完成上述操作后,重新编译工程。编译成功后,为方便观察存储器内相应地址其内容变化,在_Done处设置断点,将光标移至相应位置,按F9设置。与此同时打开两个存储器观察窗口,选择菜单Memory-TigerSHARC Memory,分别输入tx_data和rx_data,为便于观察现象调整窗口大小,每行显示四个地址单元,如下图:点击Debug菜单下的RUN选项开始运行(或直接按F5),程序自动运行至_Done后停止,观察tx_data内数据值,然后单步运行程序(F11),观察rx_data内哪些位置的数据发生了变化。6. 实验要求1按照实验步骤完成实验;2理解并修改程序,使rx_data收到的数据排列验证结果如下;3修改程序,只传输tx_data中的奇数值,且接受到的数据在tx_data中连续排列,验证结果。实验7无限脉冲响应数字滤波器(IIR)设计所谓的数字滤波,指的是输入、输出均为数字信号,通过一定运算关系改变输入信号所含频率成分的相对比例或者滤除某些频率成分。数字滤波可分为无限脉冲响应(IIR)滤波和有限脉冲响应(FIR)滤波。本次试验利用VISUAL DSP+ 软环境SIMULATOR模拟实现无限脉冲响应(IIR)数字信号处理。无限脉冲响应(IIR)的系统函数为: 公式1即如果输入为X(Z),输出为Y(N),则:Y(Z)= X(Z)H(Z),即公式2本试验中利用的公式是对上面的公式2对了相应的形式变化,利用中间变量 公式3那么 公式4因此,本次试验设计了一个4阶IIR滤波,其对应的公式3和公式4的时域公式如下:;公式5;公式6在本次设计中由于系数a4,a3,a2,a1,b4,b3,b2,b1都是用户自己初始化的时候给定的且均为常数,所以公式5和公式6也相应可以变为公式7和公式8: 公式7 公式8其中x(n)是输入的数字序

温馨提示

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

最新文档

评论

0/150

提交评论