完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
接触DSP有大半年时间,对DSP有了一个大概的了解。
本人尝试用DSP做了几个小项目,现在看来对自己从单片机到DSP的过度起到了不小作用。 先说说DSP程序运行时间测量吧,以前在做单片机项目里面考虑得比较少。现在使用DSP就不同了,DSP在项目中主要起数据处理、数据运算作用。 数据运算时间对整个项目的性能起着决定性作用,DSP程序中经常要用到测量某个程序的运行时间。 我们在项目中测量程序运行时间主要有一下几种方法: 1>. ti DSP编译环境CCS3.3, 在profiler菜单中,选择Enable Clock和view clock,在view clock窗口中可 以看到程序运行的时间/周期(时钟)数。 在view clock窗口中第2行显示的时间就是程序从第1行所在位置到第2行位置的时间,也就是你要测定的 时间。 缺点:时间cycle数据不准确,比实际的要大。如果用profiler得到的数据比你的要求好要少的话,那就说明 已经达到了要求。 克服方法:(1)多次统计; (2)测量之前重新使能 Enable Clock和view clock 。 2>. 使用clock 测试程序运行时间 #include start=clock(); **************************** 中间是要测试的代码 **************************** stop=clock(); 在profiler中设置Enable Clock以及时钟周期,完了单步运行后就能看见结果。 3>. 利用TSCL和TSCH来测量DSP程序运行时间 #include #include void main() { unsigned long long start; TSCH=0; //Very important! Enable the registers. TSCL=0; //Very important! Enable the registers. start = _itoll (TSCH, TSCL); // start = TSCL; // end = TSCL; printf("%d DSP-cyclesn",end-start); } DSP开发,测量某个函数或某段代码的cycles消耗是经常要做的事情,常用的profiling和clock()一般在simulation下使用。其实在c64x+ core上有两个计数寄存器TSCL/TSCH,它们与CPU同频,共同表示一个64-bit数,CPU运行一个cycle,该寄存器就加1,因此可以用它们来准确的测量cpu在某个执行段中消耗的cycles。一般我们只会用到TSCL这个寄存器,而TSCH是高32位,除非测试整个工程,一般用不到它。 我使用的开发板DSP芯片是TMS320C6748,用第三种方法特别方便。我做项目是用的时间测量方法就是方法3. 再说说程序优化,程序优化对DSP的重要性就不在提了,现在主要分析程序优化的方式。 1> 选择合适的算法和数据结构; 2> 使用尽量小的数据类型; 3> 减少运算的强度; 4> 结构体成员的布局; 5> 循环优化; 每一种优化方式都需要工程师针对相应的开发环境对症下药。 授人以鱼不如授人以渔。 在工作中学习,学习后工作! |
|
相关推荐
2 个讨论
|
|
你正在撰写讨论
如果你是对讨论或其他讨论精选点评或询问,请使用“评论”功能。
基于 DSP5509 进行数字图像处理中 Sobel 算子边缘检测的硬件连接电路图
3262 浏览 0 评论
796 浏览 0 评论
普中科技F28335开发板中,如何使用aic23播放由代码生成的正弦波
3695 浏览 0 评论
4454 浏览 1 评论
1376 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 16:20 , Processed in 0.742499 second(s), Total 64, Slave 50 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号