DSP编程与Visual DSP++入门

DSP编程与Visual DSP++入门
DSP编程与Visual DSP++入门

实验一DSP编程与Visual DSP++入门

一、实验内容

本次实验内容主要有四个部分:

练习一:启动VisualDSP++,建立一个用C源代码的工程(Project),同时用调试器来评估用C语言所编写代码的性能;

练习二:创立一个新的工程,修改源码来调用一个汇编(asm)程序,重新编译工程,用调试器来评估用汇编语言所写程序的性能并与C语言程序作比较;

练习三:利用调试器的绘图(plot)功能来图形显示一个卷积算法中的有关数据的波形;

练习四:利用调试器的性能统计功能(Statistical profile统计剖析)来检查练习三中卷积算法的效率。利用所收集到的性能统计数据就能看出算法中最耗时的地方。

二、实验步骤

1.练习一

进入VisualDSP++开发环境,选择菜单File中Open 打开文件G:\Program Files\Analog Devices\VisualDSP 5.1\work\test1\DSP_exp\unit_1\DotProductC\DotProductC.dpj。

DotProductC工程中有3个文件,定义数组和计算数组点积和的两个C语言源文件dotprod_main.C(主程序)、DOTPROD.c(子程序)以及一个描述程序和数据存储位置的链接描述文件DOTPRODC.LDF。

在菜单Project中选择Build Project来对工程进行编译。输出窗口显示程序编译时的各种状态信息(包括出错和编译进程信息)。当编译检测到错误时,输出窗口出现相应的出错信息,打开对应的源文件进行修改,保存并再次进行编译。当编译不再有错时,输出窗口将显示“Build completed successfully”。

编译成功后进入Debug界面,初次进入Debug需要设置session,其设置步骤如图1.1和图1.2所示,按图中步骤设置完毕后,点击next,再点finish即可。如果不是第一次进入Debug,不会出现session的设置,会默认之前的设置,这是如果要更换处理器的类型可以在session选项中选择new session来设置。

图1.1 session界面设置步骤1

图1.2 session界面设置步骤2

完成上述步骤后,在debug菜单中选择run,可以在console窗口中看到运行结果。下面对程序中的各个函数进行性能的分析,在进入debug没有运行程序之前,选Tools\Linear Profile\New Profiling命令,会在反汇编窗口上方出现一个小窗口如图1.3,窗口可以拖动放大。

图1.3 linear profiling窗口

在窗口空白处右击,选properties,点filter中的C/C++ function,点击add,将3个子函数和主函数都加进去如图1.5所示:

图1.5 剖析窗口的设置

窗口设置好后点确定,运行程序,得到分析结果。

2. 练习二

关闭DotProductC工程,file→open→project,选择路径G:\Program Files\Analog Devices\VisualDSP 5.1\work\test1\DSP_exp\unit_1\ DotProductASM\ DotProductASM.dpj。

如果需要对工程选用的处理器等做修改,在project窗口右击当前工程,选择project options,进行相应的设置如图1.6所示。

图1.6 project选项卡设置

在对话框中打开Compile选项卡点General,选中“Enable optimization”,“Generate debug information”这一项默认已选,系统将自动生成针对ADSP-21161的优化代码,如图1.7所示:

图1.7 Compile 选项卡设置

编译工程,主程序与练习一相比有两个地方被改动了:

extern double a_dot_b( double pm *, double * );

/*extern double a_dot_c( double pm *, double * );*/

extern double a_dot_c_asm( double pm *, double * );

extern double a_dot_d( double pm *, double * );

result[0] = a_dot_b( a, b );

/* result[1] = a_dot_c( a, c );*/

result[1] = a_dot_c_asm( a, c );

result[2] = a_dot_d( a, d );

上面两段程序中绿色的是练习一中的主程序用的语句,练习二的主程序则用的是标红的语句,从语句中可以看到练习二用汇编语言重新写了a数组和c数组的点乘,并在后面调用了这个汇编程序。实现了在C语言中调用汇编语言程序,同样也可以分析其性能。

对工程进行编译,右击练习一中建的linear profiling窗口的空白处,选择clear profile,将之前的性能分析清除掉,再右击:properties→filter→C/C++ function,将之前添加的函数选中,点remove,再点add,5个文件中只有a_dot_c不选,用a_dot_c_asm代替它,如图1.8所示

图1.8 添加待分析的函数

设置完成后运行程序,在console窗口得到运行结果,同时在性能分析窗口看到函数的性能分析结果。

3. 练习三

关闭DotProductASM工程,file→open→project,选择路径G:\Program Files\Analog Devices\VisualDSP 5.1\work\test1\DSP_exp\unit_1\ Convolution \ Convolution.dpj。编译工程,编译成功后,会在工程的debug文件中生成可执行文件Convolution.dxe。

将工程关闭,file→load program,找到Convolution 工程文件夹下的debug文件夹下的可执行文件Convolution.dxe打开,工程进入debug界面,运行程序后,在console窗口并没有输出结果,我们的得到的计算结果都存储在4个数组当中,为了看清运行结果,下面将数据以图形的形式展现出来。

选择菜单View\Debug Windows\Plot\New…项,将出现Plot参数设置窗口。在Plot Type 项中选择Line Plot,在Plot Title中输入Convolution。其它参数设定如表1-1所示:

表1-1 数组图形化的参数设置

在plot configuration窗口中还有一个很重要的选项设置memory选项,该选项默认为数据存储器,而这个练习中的3个数组都存在数据存储器中,所以不用选;但如果以后要处理的数据有存在其他的存储器中的就需要进行选择。每对一个数组设置完毕就点击add,都设完后点OK,就可以在一个convolution窗口中看到相应的曲线(程序已经运行完毕)。

想对图形的某一部分放大可以用鼠标左键选中这一部分,如果想恢复的话右击鼠标,右击鼠标选择reset,想精确的知道某点的数据也可以右击鼠标,选择“Data Cursor”项,图形上将出现“十”字大光标,可点击曲线上的任一点,在窗口左下角会出现该点的数值和曲线名,可用键盘上的上(↑)下(↓)键来切换所选曲线。

4. 练习四

关闭所有文件,选File→Load Programe命令项,在对话框中选择文件convolution.dxe。选Tools\Linear Profile\New Profiling命令,可以按练习二中的步骤对窗口进行设置,也可以直接选“Entire memory space”对整个程序进行分析,设置完毕后运行程序即可得到分析结果。

三、程序调试

这个实验中需要进行调试的程序只有练习一中DotProductC工程中的主程序,进行练习一时,编译工程会出现错误,提示信息如图1.9所示:

图1.9 编译错误提示图

将鼠标放在line 115处双击,可以打开有错误的源程序,而且光标所在行即为有错误的行,同时提示信息还提示了错误的类型,这里可以看到是说有未定义的变量“itn”,事实上这是int的误写,将这个错误改正后再编译就可以顺利通过。

四、实验结果及分析

1. 练习一

按练习一的步骤进行实验,得到的结果如图1.10和图1.11所示:

图1.10 DotProductC工程的结果显示

图1.11 DotProductC工程各程序性能分析

从程序上来看,a,b,c,d是四个复数数组,a,b,c的长度相同是20,d是10。函数a_dot_b,a_dot_c,a_dot_d分别将a和b,c,d做点乘,即逐点相乘之后累加,图1.10

显示的就是累加后的3个结果。由于a,b,c的长度相同,所以a_dot_b和a_dot_c的计算量可以说是完全相同的,其耗时也就完全一样,而d的长度只有前三者的一半,所以a_dot_d 是将a的偶数项和d中的数据点乘累加,其运算量要小于前两者,耗时也小于前两者,从图1.1中就可以看到这种分析与结果是一致的,子程序a_dot_b和a_dot_c各占总时间的34.54%,a_dot_d占22.40%,主程序基本上就是对3个函数的调用,所以仅占8.52%。窗口的右半部分显示的是各程序中逐条语句在这个程序中耗时所占百分比,想研究哪一个程序双击即可。

2. 练习二

按练习二的步骤进行实验,得到的实验结果如图1.12和图1.13所示:

图1.12 DotProductASM工程的结果显示

图1.13 DotProductASM工程各程序性能分析

练习二中的工程与练习一中的工程实现的功能是一样的,所以对比图1.12和图1.10可以发现它们的结果是一样的。但二者的区别在于练习DotProductASM工程主函数在调用子函数实现相应数组的点乘累加时,对a数组和c数组的点乘累加调用的不再是C语言的程序,而是汇编语言,也就是用_a_dot_c_asm代替了原来的a_dot_c。对比图1.12和图1.14可以发现,实现同样功能的汇编语言程序要比C语言程序高效,原来的a_dot_c耗时34.54%,而_a_dot_c_asm仅耗时18.10%。这是由于汇编语言可以在一个指令周期内实现多个操作(包括寻址,运算,条件判断等,具体如何组合使用由指令规则而定),而且人为地编写汇编程序可以有效地利用填充时间和排空时间,使程序更高效。但查看程序代码其编写难度也明显高于C语言程序。

3. 练习三

按练习三的步骤进行实验,得到的实验结果如图1.14和图1.15所示:

图1.14 数组数据的图形显示

图1.14 数组数据的局部放大图形

图1.14中的蓝色正弦波形是Table数据画出的,Table是从0到2 以0.017453292为步长取了360个点再求其sin值。红色波形是Input数据的图形,它是有Table的前36个数据不断赋值得到的,所以其最大幅值不会超过Table波形第36个数据的值。黄色的是Output的波形,它是由Input的每个数据和Impulse中所有数据分别相乘累加后得到的,而Impulse则是由Table中10的整数倍位置的数据不断赋值得到的。图1.14是图形某个部分的放大图,

这种方法可以很好地观察我们重点关注的区域。

4. 练习四

按练习四的步骤进行实验,结果如图1.15和图1.16所示:

图1.15 Convolution中个程序性能分析

图1.16 CalculateOutputPulse子程序中各语句所占时间比

图1.15和图1.16是性能分析窗口的左右两边,为了便于观看分两幅图截了下来。从图1.15中可以看到最耗时的程序就是Output的计算子程序,占总时间的89.04%;而在图1.16中可以看到CalculateOutputPulse子程序中最耗时又是程序的内循环,也就是用Input中的数据与Impulse中的数据逐个相乘在累加的过程,所以想要改善这个子程序的效率,可以将这一段程序用汇编语言编写。

五、实验体会

经过本次实验,基本上学会了DSP开发环境的使用,初步掌握了一些程序调试和分析的手段,深刻体会到了C语言和汇编语言的差别,C语言编写难度要比汇编语言的难度低,但其效率也没有汇编语言高。而且汇编语言由于一个指令周期可以有多条指令,其编写很灵活,想要编出高效的程序很需要一定的编程经验。

最新服务器基础知识(初学者必看)

服务器基础知识【初学者必看】 1. 什么是服务器 就像他的名字一样,服务器在网络上为不同用户提供不同内容的信息、资料和文件。可以说服务器就是Internet网络上的资源仓库,正是因为有着种类繁多数量庞大内容丰富的服务器的存在,才使得Internet如此的绚丽多彩。 2. 服务器的种类和功能 (1) WWW服务器(WWW Server) WWW服务器也称为Web服务器(Web Server)或HTTP服务器(HTTP Server),它是Internet上最常见也是使用最频繁的服务器之一,WWW服务器能够为用户提供网页浏览、论坛访问等等服务。比如:我们在使用浏览器访问https://www.360docs.net/doc/a213726708.html,的时候,实际上就是在访问Discuz!的WWW服务器,从该WWW服务器获取需要的论坛资料和网页。 (2) FTP服务器(FTP Server) FTP服务器是专门为用户提供各种文件(File)的服务器,FTP服务器上往往存储大量的文件,例如:软件、MP3、电影、程序等等。用户只要使用FTP客户端软件登录到FTP服务器上就可以从FTP服务器下载所需文件和资源到自己的电脑上,同时,

你也可以把自己电话上的文件上传到FTP上供其他用户下载,以实现文件资源的共享。 (3) 邮件服务器(Mail Server) e-mail是Internet上应用最频繁的服务之一,而Internet上每天数亿百亿计的电子邮件的收发都是通过邮件服务器实现的。邮件服务器就像邮局一样,可以为用户提供电子邮件的接收存储和发送服务。 除了以上介绍的3种主要服务器之外,还有很多其他类型的网络服务器,例如:数据库服务器(DatabaseServer)、代理服务器(Proxy Server)、域名服务器(Domain Name Server)等等…… 3. 服务器的操作系统 目前服务器中使用的操作系统主要有两类:Windows和Unix。 (1) Windows Windows是美国微软公司(Microsoft)开发的操作系统,在服务器领域,主要有Windows2000Server/Advanced Server/Data Center与Windows2003 Standard Edition/EnterpriseEdition操作系统,Windows的优点是操作简 单,由于Windows使用图形界面进行操作,因而对各种服务器软件功能配置简

(仅供参考)服务器硬件入门基础知识

服务器硬件入门基础知识 开篇一:服务器主板 服务器主板概述 对于服务器而言,稳定性才是首要,服务器必须承担长年累月高负荷的工作要求,而且不能像台式机一样随意的重起,为了提高起可靠性普遍的做法都是部件的冗余技术,而这一切的支持都落在主板的肩上。下面我就来看看有关服务器主板的一些特性: 1、首先,服务器的可扩展性决定着它们的专用板型为较大的ATX,EATX或WATX。 2、中高端服务器主板一般都支持多个处理器,所采用的CPU也是专用的CPU。 3、主板的芯片组也是采用专用的服务器/工作站芯片组,比方Intel E7520、ServerWorks GC-HE等等,不过像入门级的服务器主板,一般都采用高端的台式机芯片组(比如Intel875P芯片组) 4、服务器通常要扩展板卡(比如如网卡,SCSI卡等),因此我们通常都会发现服务器主板上会有较多的PCI、PCI-X、PCI—E插槽。 5、服务器主板同时承载了管理功能。一般都会在服务器主板上集成了各种传感器,用于检测服务器上的各种硬件设备,同时配合相应管理软件,可以远程检测服务器,从而使网络管理员对服务器系统进行及时有效的管理。

6、在内存支持方面。由于服务器要适应长时间,大流量的高速数据处理任务,因此其能支持高达十几GB甚至几十GB的内存容量,而且大多支持ECC内存以提高可靠性(ECC内存是一种具有自动纠错功能的内存,由于其优越的性能使造价也相当高)。 7、存储设备接口方面。中高端服务器主板多采用SCSI接口、SATA接口而非IDE接口,并且支持RAID方式以提高数据处理能力和数据安全性。 8、在显示设备方面。服务器与工作站有很大不同,服务器对显示设备要求不高,一般多采用整合显卡的芯片组,例如在许多服务器芯片组中都整合有ATI的RAGE XL显示芯片,要求稍高点的就采用普通的AGP显卡。而如果是图形工作站,那一般都是选用高端的3DLabs、ATI等显卡公司的专业显卡。 9、在网络接口方面。服务器/工作站主板也与台式机主板不同,服务器主板大多配备双网卡,甚至是双千兆网卡以满足局域网与Internet的不同需求。 10、最后是服务器的价格方面。一般台式机主板顶天也不过1、2千,而服务器主板的价格则从1千多元的入门级产品到几万元甚至十几万元的高档产品都有! 推荐品牌:泰安、超微、Intel 开篇二:服务器CPU 服务器CPU概述 服务器是网络中的重要设备,要接受少至几十人、多至成千上万人的访问,因此对服务器具有大数据量的快速吞吐、超强的稳定性、长时间运行等严格要求。所以说CPU是计算机的“大脑”,是衡量服务器

服务器基础知识(初学者必看)

精心整理服务器基础知识【初学者必看】 1. 什么是服务器? ?? 就像他的名字一样,服务器在网络上为不同用户提供不同内容的信息、资料和文件。可以说服 2. ?? WWW服务器也称为Web服务器(Web Server)或HTTP服务器(HTTP Server),它是Internet上最常见也是使用最频繁的服务器之一,WWW服务器能够为用户提供网页浏览、论坛访问等等服务。比如:我们在使用浏览器访问?

? (2) FTP服务器(FTP Server)? 以从 (3)

?? e-mail是Internet上应用最频繁的服务之一,而Internet上每天数亿百亿计的电子邮件的收发都是通过邮件服务器实现的。邮件服务器就像邮局一样,可以为用户提供电子邮件的接收存储和发送服务。? ?? ……? 3. ? ?? Windows是美国微软公司(Microsoft)开发的操作系统,在服务器领域,主要有Windows2000Server/Advanced?Server/Data Center与Windows2003 Standard Edition/EnterpriseEdition操作系统,Windows的优点是操作简?

单,由于Windows使用图形界面进行操作,因而对各种服务器软件功能配置简便。但它的缺点也不可忽视,例如:Windows操? 作系统成本较高;安全性相对较低;能承受的访问量较低等等。? Linux, Linux 企业(包括电信企业和Google、百度、新浪、搜狐等等)的服务器都运行在Unix/Linux系统之上。?

4. Apache与IIS? ?Apache与IIS都属于WWW服务器,是世界上使用最多的两种WWW服务器。? ?IIS操议 协议 但IIS 的性能和安全性相对较差,并且IIS只能在Windows中使用,无法在UNIX中运行。? (2) Apache?

服务器系统基础知识

服务器系统基础知识 1 什么是服务器? 服务器是计算机的一种,它是在网络操作系统的控制下为网络环境里的客户机提供(如PC) 共享资源(包括查询、存储、计算等)的高性能计算机,它的高性能主要体现在高速度的CPU 运算能力、长时间的可靠运行、强大的I/O 外部数据吞吐能力等方面。服务器主要为客户机提供Web 应用、数据库、文件、打印服务。简单的说,服务器就是在网络中为其他客户机提供服务的计算机. 2 服务器包括哪些子系统? CPU、内存、磁盘、扩展插槽、显示卡和网卡、电源、风扇。 3 服务器按处理器架构分哪几类? 巨型机与大型机(专用处理器)、小型机(IA-64,RISC处理器)、PC服务器(CISC处理器) 4 PC服务器按外形结构分类? A 塔式服务器(通用式服务器):具有较大的机箱尺寸,因此其内部扩展能力较强,可以安装的扩展板卡以及硬盘的数量都比较多 B 机架式服务器(机柜优化服务器):机箱尺寸比较小巧,在机柜中可以同时放置多台服务器,从而获得更高的处理能力。 C 刀片式服务器:超高密度服务器为动态的,空间紧缺的,向外扩展的环境而优化的快速部署。 5 服务器按CPU个数分类:? 4路及4路以上服务器(企业级服务器)、2路服务器(部门级服务器)、1路服务器(入门级服务器) 6 什么是内存? 内存是界于CPU 和外部存储之间,是CPU 对外部存储中程序与数据进行高速运算时存放程序指令、数据和中间结果的临时场所,它的物理实质就是一组具备数据输入输出和数据存储功能的高速集成电路。 7 服务器内存技术有哪些? ?Parity (校验) ?ECC ?ChipKill和高级ECC技术 ?双通道技术 ?内存交错技术 ?Registered内存 在线备用内存技术 内存镜像

相关文档
最新文档