




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验一DSP编程与VisualDSP++入门实验目的:熟悉VisualDSP++集成开发环境,掌握工程文件的创建、构造和调试的方法和技巧。实验内容:针对ADSP-21161SHARCDSP,利用几个用C、C++和汇编语言写成的简单例子来描述VisualDSP++编程环境和调试器(debugger)的主要特征和功能。对于运行在其它类型SHARC处理器的程序只需对其链接描述文件(.LDF)做一些修改,就可用于其它芯片或者ADSP-21161的硬件仿真。在目录…\21k\ldf下有每种处理器类型的链接描述文件,可供参考。实验一包括四个基本练习:练习一:启动VisualDSP++,建立一个用C源代码的工程(Project),同时用调试器来评估用C语言所编写代码的性能;练习二:创立一个新的工程,修改源码来调用一个汇编(asm)程序,重新编译工程,用调试器来评估用汇编语言所写程序的性能;练习三:利用调试器的绘图(plot)功能来图形显示一个卷积算法中的有关数据的波形;练习四:利用调试器的性能统计功能(Statisticalprofile统计剖析)来检查练习三中卷积算法的效率。利用所收集到的性能统计数据就能看出算法中最耗时的地方。实验步骤练习一:进入VisualDSP++集成开发环境,并打开一个工程(Project)进入VisualDSP++,显示VisualDSP++的集成开发和调试环境窗口(IntegratedDevelopmentandDebuggerEnvironment,简称IDDE)。选择菜单File中Open打开文件…DSP_exp\unit_1\DotProductC\DotProductC.dpj。VisualDSP++环境将装载dotprodc工程,并列出相应的源文件。在输出窗口(OutputWindow)中显示简要信息。Dotprodc工程中有3个文件,定义数组和计算数组点积和的两个C语言源文件dotprod_main.c(主程序)、dotprod.c(子程序)以及一个描述程序和数据存储位置的链接描述文件dotprodc.ldf。编译dotprodc工程在菜单Project中选择BuildProject来对工程进行编译。此时,输出窗口显示程序编译时的各种状态信息(包括出错和编译进程信息)。当编译检测到错误时,将在输出窗口出现相应的出错信息,用鼠标双击它,编译器将自行打开源文件。这时可对源文件编辑、修改错误,再次进行编译。当编译不再有错时,输出窗口将显示“Buildcompletedsuccessfully”。在本例子中,编译器会检测到一个未定义的错误,显示为:“.\dotprod_main.c”,line115:error#20:identifier“itn”isundefineditni;在输出窗口中对该行文字用鼠标双击,环境会自动打开dotprod_main.c文件,并将光标定位在出错行。你可以看见单词“int”被错写成“itn”。将该错误改正后,保存并重新编译。如果再没有错误出现,这时工程已被成功编译,就可以用VisualDSP++的debugger来调试程序。运行VsualDSP++调试器在编译完成后,环境将自动进入调试状态,对于初次进入debugger,将显示对象选择对话框,在其中指定对象和处理器信息。如下图1所示:图1对象和处理器信息若在调试过程中需定义不同的对象和处理器类型,选取菜单Sessions中NewSession项来重新定义。NewSession对话框如下图2所示:图2NewSession对话框用VisualDSP++调试时,调试器会自动调入工程的可执行文件dotpordc.dxe。在默认情况下,调试器会打开三个窗口:输出窗口(下)、反汇编窗口(右)、包括工程主文件dotprodc_main.c的源代码窗口(左)。如图3所示,左窗的每一条C语句都对应右窗中的多条汇编指令:图3调试器的输出窗口、反汇编窗口和源代码窗口在图3中,箭头所指为当前执行指令,红圆圈代表设定的断点位置。当调试器加载C程序时,会自动设置两个断点,分别在代码执行的开头和结尾。浏览程序中的断点可选择Settings下的BreakPoints···,可在此对话框中增加或删除断点。另外也可通过在每条代码行的开头处双击鼠标或快捷键来设置或取消断点。运行dotprod.c从Debug菜单中选择Run项,程序将被执行,其输出结果在Outputwindow中显示。运行程序得到的结果如下图:图4dotprod.c程序输出结果评估函数a_doc_c的性能(profile)VisualDSP++的剖析工具用于分析程序的运行时间特性,通过线性/统计剖析,可以分析出每段程序的耗时量和在整个程序中运行所占的比例,为用户分析程序的性能、优化程序提供帮助。VisualDSP++的剖析工具有两种:线性剖析(LinearProfiling)和统计剖析(StatiscalProfiling)。线性剖析工具在VisualDSP++的模拟器环境下使用,,每执行一条指令,剖析工具记录一次程序执行的情况;而统计剖析工具则在VisualDSP++中通过JTAG与用户的目标系统连接的硬件环境中使用,指令运行情况的统计可通过对程序计数器进行取样来获得。通过下述步骤来设置Profile功能并显示其结果:(1)打开剖析窗口选Tools\LinearProfile\NewProfiling命令。剖析窗口中不会包含有任何数据和分析结构。在新建剖析窗口中的空白处单击鼠标右键,选择【Properties···】项,VisualDSP++将弹出剖析分析窗口。在该窗口中,可以对全部程序进行分析,也可以对部分C/C++子函数进行分析,还可以指定程序地址段进行分析。在剖析设置窗口中选择“C/C++Function”。单击【Add】,将需要进行分析的函数添加到分析窗口中,如图5所示。(2)运行程序,直至程序执行完毕。在剖析窗口中将显示出对函数剖析的结果。剖析结果窗口由两部分构成:左边窗口为剖析的函数,右边窗口为具体指令耗时数或占剖析时间的百分比,如图6所示。图5线性剖析参数设置页面练习二:创建一个新的工程从Project菜单中选取New项,在弹出的工程保存对话框中,将工程名定义为DotProductASM.dpj,并保存。接着在弹出的工程选项对话框中定义各项参数值,这些参数都是针对ADSP-21161处理器而设置的,VisualDSP++的Project选项卡如图6所示:图6VisualDSP++的Project选项卡在对话框中打开Compile选项卡,选中“Enableoptimization”和“Generatedebuginformation”两项,系统将自动生成对ADSP-21161的优化代码,如图7所示:向DotProductASM工程中添加文件选取菜单Project\AddtoProject\file(s)···项,按住Ctrl键来同时选中dotprod_main.c,dotprod.c,dotprod_func.asm和dotprodasm.ldf,点击“Add”将这几个文件添加到工程中。图7VisualDSP++的Compile选项卡修改工程源文件在此步骤中,我们将修改dotprod_main.c文件,让其调用一个汇编子程序a_dot_c_asm来取代a_doc。打开dotprod_main.c文件,在源代码中找到下列响应的四条语句:externdoublea_dot_c(doublepm*,double*);/*externdoublea_dot_c_asm(doublepm*,double*);*/···result[1]=a_dot_c(a,c);/*result[1]=a_dot_c_asm(a,c);*/将这四条语句修改为/*externdoublea_dot_c(doublepm*,double*);*/externdoublea_dot_c_asm(doublepm*,double*);···/*result[1]=a_dot_c(a,c);*/result[1]=a_dot_c_asm(a,c);这样主程序将调用a_dot_c_asm汇编程序来取代练习一中的a_dot_c子程序。编译和运行dot_product先选取菜单Project\BuildProject项来编译工程;再选取Debug\Run项来运行程序。在输出窗口中就会得到运行结果。如图8所示:图8dot_productASM输出结果评估a_dot_c_asm的效率如图练习一那样设置Profile参数并显示其结果:(1)选Tools\LinearProfile\NewProfiling命令;(2)在新建窗口中的空白处单击鼠标右键,选择[Properties···]项,VisualDSP++将弹出剖析分析窗口。在剖析窗设置窗口中选择“C/C++Function”。单击[Add]按钮,将需要进行分析的函数添加到分析窗口中。运行dot_product程序,显示Profile结果窗口如图9所示:图9a_dot_c_asmProfile结果窗口练习三:将算法程序调入Debugger环境关闭所有已经打开的工程和文件,选择菜单File\LoadProgram···项或点击图标。在出现的对话框中选择文件…DSP_exp\nint_1\convolution\debug\convolution.dxe。并在随后的源文件对话框中选择文件…DSP_exp\nint_1\convolution\convolutio.cpp。可以在C代码源文件中看到四个全局数组:Table、Input、Output和Impulse。以及四个调用数组的函数:InitializeSineTable(),GenerateInputPulse(),GenerateImpulseCoeffS()和CaculateOutputPulse()。打开绘图窗口并设定参数选择菜单View\DebugWindows\Plot\New···项,将出现Plot参数设置窗口。在PlotType项中选择LinePlot,在PlotTitle中输入Convolution。Plot设置对话框如图10所示:图10Plot设置对话框各行参数在设置完后,点击“Add”加入,最后点击“OK”。此时屏幕将出现Plot设置对话框如图11所示的绘图窗口:图11程序运行之前的Plot窗口运行Convolution程序并在图形窗口中观察数据按F5运行程序,当程序Halt(SHIFT-F5)后,Plot窗口中将出现数据曲线。图中的三条曲线分别代表Table、Input和Output三个数组的值,程序运行后的Plot窗口如图12所示:图12程序运行后的Plot窗口在Plot窗口中可用鼠标左键选取图形的一部分,图形会自动对所选区域放大,便于数据的观察。若要精确地知道某个数据在某点的值,可点击鼠标的右键,在弹出的菜单中选取“DateCurse”项,图形上将出现“十”字大光标,可点击曲线上的任一点,在窗口左下角会出现该点的数值和曲线名。练习四:打开练习三的程序并进行代码分析;实验结果及数据分析练习一:运行程序得到的结果如下图13:图13dotprod.c程序输出结果未进行优化前的代码性能分析结果如下图14:图14未执行优化前的代码效率分析使用程序优化器之后的代码性能分析结果如下图15:图15优化后的代码执行效率分析从上图可以看出,优化使子函数的运行时间减少,提高了执行效率。练习二:运行结果如下图16:图16采用混合编码后的代码执行效率分析从上面的代码效率分析图中可以看出,main函数运行时间占程序总运行时间的13.08%;a_dot_b运行时间占程序总运行时间的49.38%;a_dot_d运行时间占程序总运行时间的32.81%;而a_dot_c_asm运行时间只占程序总运行时间的4.74%。和练习一相比,除a_dot_c_asm外,其余的三个函数是完全相同的,而a_dot_c_asm的运行时间和a_dot_c相比,则有显著的下降。说明汇编程序和C程序相比有较高的执行效率和较快的执行时间。汇编代码的执行效率高于C代码的执行效率,而采用汇编语言的C语言的混合代码的执行效率是最高的。练习三:使用plot功能得到的绘图结果入下图17:图17绘图结果(包含Table,Input,Output)练习四:由于使用的Session为仿真器,所以软件中的Tools菜单的Statistical功能无法使用,所以只能通过linearprofile功能进行了分析,结果如下图18所示:图18对convolution程序的代码执行效率的linearprofile分析从上图可以看出,CalculateOutputPulse子函数运行占用了绝大多数的时间,可以通过采用汇编语言的方式进行程序的优化,提高程序的执行效率。实验心得通过实验熟悉了VisualDSP++的操作环境和一些基本功能的实现方法,比如工程文件的创建和调试,绘图功能和程序性能分析功能。掌握了用C、C++和汇编写成的程序在VisualDSP++编程环境中的调试和调用。另外,了解了在程序中合适地使用汇编语言可以提高代码的执行效率。
论大学生写作能力写作能力是对自己所积累的信息进行选择、提取、加工、改造并将之形成为书面文字的能力。积累是写作的基础,积累越厚实,写作就越有基础,文章就能根深叶茂开奇葩。没有积累,胸无点墨,怎么也不会写出作文来的。写作能力是每个大学生必须具备的能力。从目前高校整体情况上看,大学生的写作能力较为欠缺。一、大学生应用文写作能力的定义那么,大学生的写作能力究竟是指什么呢?叶圣陶先生曾经说过,“大学毕业生不一定能写小说诗歌,但是一定要写工作和生活中实用的文章,而且非写得既通顺又扎实不可。”对于大学生的写作能力应包含什么,可能有多种理解,但从叶圣陶先生的谈话中,我认为:大学生写作能力应包括应用写作能力和文学写作能力,而前者是必须的,后者是“不一定”要具备,能具备则更好。众所周知,对于大学生来说,是要写毕业论文的,我认为写作论文的能力可以包含在应用写作能力之中。大学生写作能力的体现,也往往是在撰写毕业论文中集中体现出来的。本科毕业论文无论是对于学生个人还是对于院系和学校来说,都是十分重要的。如何提高本科毕业论文的质量和水平,就成为教育行政部门和高校都很重视的一个重要课题。如何提高大学生的写作能力的问题必须得到社会的广泛关注,并且提出对策去实施解决。二、造成大学生应用文写作困境的原因:(一)大学写作课开设结构不合理。就目前中国多数高校的学科设置来看,除了中文专业会系统开设写作的系列课程外,其他专业的学生都只开设了普及性的《大学语文》课。学生写作能力的提高是一项艰巨复杂的任务,而我们的课程设置仅把这一任务交给了大学语文教师,可大学语文教师既要在有限课时时间内普及相关经典名著知识,又要适度提高学生的鉴赏能力,且要教会学生写作规律并提高写作能力,任务之重实难完成。(二)对实用写作的普遍性不重视。“大学语文”教育已经被严重地“边缘化”。目前对中国语文的态度淡漠,而是呈现出全民学英语的大好势头。中小学如此,大学更是如此。对我们的母语中国语文,在大学反而被漠视,没有相关的课程的设置,没有系统的学习实践训练。这其实是国人的一种偏见。应用写作有它自身的规律和方法。一个人学问很大,会写小说、诗歌、戏剧等,但如果不晓得应用文写作的特点和方法,他就写不好应用文。(三)部分大学生学习态度不端正。很多非中文专业的大学生对写作的学习和训练都只是集中在《大学语文》这一门课上,大部分学生只愿意被动地接受大学语文老师所讲授的文学经典故事,而对于需要学生动手动脑去写的作文,却是尽可能应付差事,这样势必不能让大学生的写作水平有所提高。(四)教师的实践性教学不强。学生写作能力的提高是一项艰巨复杂的任务,但在教学中有不少教师过多注重理论知识,实践性教学环节却往往被忽视。理论讲了一大堆,但是实践却几乎没有,训练也少得可怜。阅读与写作都需要很强的实践操作,学习理论固然必不可少,但是阅读方法和写作技巧的掌握才是最重要的。由于以上的原因,我们的大学生的写作水平着实令人堪忧,那么如何走出这一困境,笔者提出一些建议,希望能对大学生写作水平的提高有所帮助。三、提高大学生应用写作能力的对策(一)把《应用写作》课设置为大学生的必修课。在中国的每一所大学,《应用写作》应该成为大学生的必修课。因为在这个被某些人形容为实用主义、功利主义甚嚣尘上的时代,也是个人生存竞争最激烈的时代,人们比任何时代都更需要学会写作实用性的文章,比如职场竞争中的求职信,生活中的财经文书、法律文书等,以提高个人的生存竞争能力。(二)端正大学生的学习态度。首先,要让大学生充分认识到实用写作课的重要性,这门课关乎到他人生的每一个方面,诸如就职,求爱,理财,人际交往等,是他终生都需要使用的一些基础性的知识,也是他必备的一项生存技能。其次,实用写作有它自身的规律和方法。它不是你想怎样写都行的,它有严格的格式性的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年高考生物426个易错点
- DB36-T1852-2023-茯苓规范化生产技术规程-江西省
- 财务成本管理中的绿色管理理念探讨试题及答案
- 2025年小学教师资格考试《综合素质》教育活动设计题历年真题汇编试卷
- 2025年小学教师资格《综合素质》文化素养全真试题解析及答案
- 2025年注册税务师税法(二)个人所得税专项实战演练卷
- 脾破裂的护理
- 福建省福州市二检2024-2025学年高三第二次质量检测 语文试题及答案
- 尿路结石护理措施
- 2025年国际化学奥林匹克竞赛试题及解析
- JJF1101-2019环境试验设备温度、湿度校准规范-(高清现行)
- 汉语拼音单韵母aoeiuü课件
- 【45精品】新苏教版四年级音乐下册教案全册
- JJF(鄂) 86-2021 放射性气溶胶监测仪校准规范(高清版)
- 蔬菜捆扎机机械部分的设计说明书
- 昆虫化学生态学资料
- 电力施工委托合同
- 腌腊肉制品生产车间工艺布置图
- 课程设计--铁路综合性货场平面图设计
- 大金空调设定代码表
- 山东花卉产业提质增效转型升级实施方案
评论
0/150
提交评论