一个DSP高手的成长之路.doc

上传人:sk****8 文档编号:3150318 上传时间:2019-05-23 格式:DOC 页数:7 大小:41.50KB
下载 相关 举报
一个DSP高手的成长之路.doc_第1页
第1页 / 共7页
一个DSP高手的成长之路.doc_第2页
第2页 / 共7页
一个DSP高手的成长之路.doc_第3页
第3页 / 共7页
一个DSP高手的成长之路.doc_第4页
第4页 / 共7页
一个DSP高手的成长之路.doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

1、一个 DSP 高手的成长之路我是已经从事 DSP 开发有几年了,看到许多朋友对 DSP 的开发非常感兴取,我结合这几年对 DSP 的开发写一写自己的感受,一家之言,欢迎指教。我上研究生的第一天起根据老板的安排就开始接触 DSP,那时 DSP 开发在国内高校刚刚开始,一台 DSP 开发器接近一万还是 ISA 总线的,我从 206 开始 240、2407A 都作过产品,对 5402、2812、5471 在产品方案规划制定和论证时也研究过。由于方向所限对 6X、8X 系列没有接触。我发现在国内无论在公司或高校许多地方为了加快开发周期往往把一个产品开发分为硬件和软件两个相对独立部分,由不同的人完成。这

2、在具有一定技术和管理基础的公司,由总设计师统一规划协调,分任务并行完成的情况下是可行的,也是符合现代产品开发规律的。但是在高校人员的流动很大,研究生的有效科研时间很短、基础差(许多研究生起步时对电熔、电阻、三极管的分类和选型都很困难,我也是这样过来的)更不用说系统规划设计了,况且许多老板自己也不太懂,师兄有自己的任务,他们搞明白时也毕业了。在许多高校做DSP 就是找一个算法加到自己的主程序里,在板子上跑一下,基本达到效果就可以了,至于可靠性是次要的,产业化无从谈起,这已经算不错的了。其实我觉得一个系统的完成,系统的规划是最重要的,在规划时对硬件设计的知识和认识是决定性的,它可以让你知道什么是可

3、行的,什么是不可行的,当你同时具有软件设计能力时,就可以合理的分配系统功能,完成使用 VHDL 进行系统行为描述系统功能划分 系统子结构设计这样的自顶向下的设计规划流程,成为系统设计专家、项目经理,否则只是硬件工程师、软件工程师。无论作 51、196、还是 DSP 都是这样。下面分别谈谈我对硬件和软件设计的感受硬件设计是系统设计的关键,国内和国外产品的差距往往是硬件设计水平高低决定的,任何软件设计思想没有可靠的物理载体都是空中楼阁,纸上谈兵。学校的研究生很多都想避开硬件设计,对于一个全新的设计与其说不屑不如说不敢。试想一下烧几个片子的压力要比跑飞几段程序的压力大的多,尤其是功率器件,一旦烧掉,

4、弄不好火光冲天,人的自信都没了。况且改一次板周期长,经费高,还不知行不行。其实在国外实力一般的公司也是尽量避免硬件的更新设计,产品一旦定型往往通过软件升级,这是公司的发展策略,对个人而言物以希为贵,培养一个硬件设计师往往要比软件设计师时间长花费多。在设计 dsp 硬件时,开始设计最小系统板,系统按功能分板设计调试,注意分板电路的稳定性可能不如整板电路,要多加入抗干扰环节,分板间的引线包括电源线地线要短,尽量在 10 公分以内,实在不行加入光耦隔离、采用隔离电源。切记电源线、地线的干扰远比信号干扰对系统的危害大得多,又常常被人忽视。电路板工作正常的先决条件就是电源正常!当分板电路正常后再更居情况

5、设计整板电路。在调试时发现的问题一定要找到原因解决,即使是飞线,割线,不要寄希望于下一板改了再看,除非原理性错误。每一个功能环节多准备几套方案。DSP 的选型要根据系统功能而定,2000 是一个功能比较全的控制器,但运算性能相对低,但目前大部分控制类、家电类包括中低层次的工业总线通信产品足够了,281X 不错但太贵,而且开发技术不成熟。54XX 更像一个协处理器,其实高端产品 5471 就很好,功能完*,但 BGA 封装对产品的开发有一定难度。如果没有从事过嵌入式系统开发的朋友其实可以从 51 看起,许多思想是共通的,51 很经典没有哪一款微处理器像 51 那样使用持久和普遍。在硬件设计时更多

6、的精力放在外围电路设计上,外围电路设计的灵活性要比 DSP 本身高得多,难度大得多。建议多考虑 CPLD。软件设计上,着眼点不要仅局限于某种算法和控制策略,而是软件系统框架的制定,即操作系统的选择和实现,算法和控制策略只是其中技巧性很强的子程序和子程序间参数相互关系,建议设计软件时能具有操作系统、数据结构和编译原理方面的知识,特别是使用 C。对 DSP 的内部硬件结构一定要掌握,特别是中断结构和流程、流水线操作,不然飞都不知道怎么飞的。在语言选择上我当时是这么给自己规定的先编 20 个左右的汇编程序,每个代码量超过4K,使用语句范围覆盖全部语句的 6070,在此基础上使用 C。现在发现用 C

7、构建程序的主体框架(操作系统)比较快而其不容易出错, (我现在正在用 ASM 根据 UCOSII 的思想重写自己的操作系统)但对系统实时性影响比较大的运算算法一般采用 MATLABCASM 的办法仿真调试优化,这里的优化不单单是利用优化器优化,而是根据数据的特点改变运算方法,以除法为例 C 里的号其实掩盖了许多技巧,当除数为常数时就可以放大倒数移位相乘移位的办法进行,精度高速度快。这些办法只有掌握了 ASM 语言并用 ASM语言思考才会熟练应用。另外我想告诉一些作算法特别是控制算法的朋友,千万不要随意评判一个算法的优劣,在程序中程序和代码优化的程度往往影响了控制效果好坏,而不是算法本身的思想。

8、其实在实际中往往 PID 甚至 PI、PD 就够了,神经元、模糊、小波适用于研究和写论文,模糊在实际中用的多一点,主要是? 本用的比较成熟,我再恨日本人,这点也服气,?本就是滑,许多物理现象搞不透,就用这法,还管用,题外话。最后我想说的是,当我们面对市场要求时,产品往往考虑的是可靠性、性能、价格而不是你用的什么芯片,在满足性能的基础上结构越简单就越可靠,芯片越通用价格就越低,能用 51 就不用 196,能用 2407 就不用 2812,除非把芯片本身作买点利用高成本赢取高利润。无论 2000 还是 5000、6000 系列都有市场前景,关键是要做深做透获取知识的方法、处理项目的能力是相通的,具

9、体的说就是不要把目光盯在做硬件还是做软件上,用 ASM 还是 C,要勤动手打好基础,提高自己对系统总体设计的能力,从系统的眼光看问题。为什么都是做 DSP 的有的毕业拿 3000,有的 5000、8000,除了运气和关系外,重要的是你对事物的认识深度和高度。我一直都记住这句话:有前途的人做什么都有前途,没前途的人做什么都没前途。二. 与其说是钻在里面,毕业设计是搞 240,在老师的压力做出了一点东西,这期间主要是对 DSP 的各种基础知识的熟悉与理解,对 DSP 的真正深入是在公司工作以后。当初进公司,因为正有一个项目需要用 5410 要我接手。说实话,在学校期间我 5000 的书都没有看过一

10、眼,可没办法,只能靠自己了。不过好的是我 2000DSP 的基础很好。接过项目后,我第一个星期就全部看的是 5000 的指令,DSP 的结构倒没怎么看,因为项目硬件已成型,主要是算法。这样,花了一个星期熟悉指令与项目相关的程序,第二个星期也就开始编程了。半个月以后我对 5410 也就用很熟了的,当然主要还是讲在算法方面。这个项目太概做了四个月吧,系统程序是我编写的,主要有如 6?位加减乘除乘方开方、及时域方面的一些算法。现在又做一个控制系统,用 2407 开发的,硬件主要有直交变频,并把 2407 的所有外设资源全部用到了。现在我可以这样自夸一句吧:TI 的 2000 系列与 5000 系列的

11、我都熟悉,要我去以此做个系统,没问题。上面是把我搞 DSP 的经历简单说了一下的吧,在这里我想对正在学及想学 DSP 的难兄们说一句的是,DSP 并不是很难。当然,这个前提是你的基础要好,我单片机,接口都还行,当初就是从单片机改成 DSP 的。有了单片机的基础再去学 2000 第列的 DSP(下面的 DSP 单指 2000 系列,另有说明为止) ,你就可以把 DSP 看成一个 super microcontroller 了。相比之下,DSP 除了比单片机多了更丰的外设接口(SPI,SCI、CAN 、PWM 、CAP、QEP 等等) ,他就是一块单片机,只不过在单片机来说你要另加芯片的工作,DS

12、P 全部把它做在一块芯片去了,我现在看 DSP 也真就这么简单。前面有人提到 DSP 主要是做算法,这句话有一定的片面性: TI 有很多系列的 DSP,现在主流的 DSP 主要为 2000 系列、 3000 系列、4000 系列、5000 系列、6000 系列。除了 2000 与5000 系列是定点 DSP 外,其余的均为浮点系列。 TI 的 2000 系列主要长处是在用于控制系统,因为它的资源非常丰富,前面提到,在控制系统中用到的一些外设 2000 系列均在片内集成了。 TI 的 5000 系列主要长处是用于数字信号的算法处理,这里所讲算法处理主要是指在数字信号处理时的一些算法,如 FIR、

13、IIR、FFT 等等。5000 系列的 DSP 的速度比 2000快,2407 最快只能到 40M,2800 系列除外,5410 的 DSP 可以达到 160M,如现在我们主要用来做数字信号方面的处理以及简单的静态图像处理等这样一些在资源需要处于中等的一些算法。 TI 的 6000 系列主要是用在实时图像处理,这个就更则重于算法处理。一般的硬件很少自制,我们是用 TI 的 DSK 板再加上自主板相结合。三. 使用 C/C+语言编写基于 DSP 程序的注意事项 1、 不影响执行速度的情况下,可以使用 c 或 c/c+语言提供的函数库,也可以自己设计函数,这样更易于使用“裁缝师”优化处理,例如:进

14、行绝对值运算,可以调用 fabs()或 abs()函数,也可以使用 if.else.判断语句来替代。 2、 要非常谨慎地使用局部变量,根据自己项目开发的需要,应尽可能多地使用全局变量和静态变量。 3、 一定要非常重视中断向量表的问题,很多朋友对中断向量表的调用方式不清楚。其实中断向量表中的中断名是任意取定的,dsp 是不认名字的,它只认地址!中断向量表要重新定位。这一点很重要。 4、 要明确 dsp 软件开发的第一步是对可用存储空间的分析,存储空间分配好坏关系到一个 dsp 程序员的水平。对于 dsp,我们有两种名称的存储空间,一种是物理空间,另一种是映射空间。物理空间是 dsp 上可以存放数

15、据和程序的实际空间(包括外部存储器) ,我们的数据和程序最终放到物理空间上,但我们并不能直接访问它们。我们要访问物理空间,必须借助于映射空间才行!但是映射空间本身是个“虚”空间,是个不存在的空间。所以,往往是映射空间远远大于实际的物理空间,有些映射空间,如 io 映射空间,它本身还代表了一种接口。只有那些物理空间映射到的映射空间才是我们真正可访问(读或写)的存储空间。 5、 尽可能地减少除法运算,而尽可能多地使用乘法和加法运算代替。 6、 如果 ti 公司或第三方软件合作商提供了 dsplib 或其他的合法子程序库供调用,应尽可能地调用使用。这些子程序均使用用汇编写成,更为重要之处是通过了 t

16、ms320 算法标准测试。而且,常用的数字信号处理算法均有包括! 7、 尽可能地采用内联函数!而不用一般的函数!可以提高代码的集成度。 8、 编程风格力求简炼!尽可能用 c 语言而不用 c+语言。我个人感到虽然 c+终代码长了一些,好象对执行速度没有影响。 9、 因为在 c5000 中 double 型和 float 型均占有 2 个字,所以都可以使用,而且,可以直接将 int 型赋给 float 型或 double 型,但,尽可能地多使用 int 数据类型代替!这一点需要注意! 10、 程序最后至少要加上一个空行,编译器当这个空行为结尾提示符。 11、 大胆使用位运算符,非常好用! 12、

17、2003 年 6 月份从 ti 的网站上下到了关于 tms320c67x 系列 dsp 的快速算法库,于是,tms320c5000 和 c6000 全系列的快速算法库都问世了,这些算法库均可供 c/c+语言直接调用,优化程度 100%,实际编程时尽可能地使用(下载时可以同时下载到说明文档和 ascii 源程序,可以根据自己需要作出修改,修改前最好做个备份) 。DSP 新手解疑1、TI DSP 的选型主要考虑处理速度、功耗、程序存储器和数据存储器的容量、片内的资源,如定时器的数量、I/O 口数量、中断数量、DMA 通道数等。DSP 的主要供应商有TI,ADI,Motorola,Lucent 和

18、Zilog 等,其中 TI 占有最大的市场份额。TI 公司现在主推四大系列 DSP1) C5000 系列(定点、低功耗):C54X,C54XX,C55X 相比其它系列的主要特点是低功耗,所以最适合个人与便携式上网以及无线通信应用,如手机、PDA、GPS 等应用。处理速度在 80MIPS-400MIPS 之间。C54XX 和 C55XX 一般只具有 McBSP 同步串口、HPI并行接口、定时器、DMA 等外设。值得注意的是 C55XX 提供了 EMIF 外部存储器扩展接口,可以直接使用 SDRAM,而 C54XX 则不能直接使用。两个系列的数字 IO 都只有两条。2)C2000 系列(定点、控制

19、器):C20X,F20X ,F24X,F24XX ,C28x 该系芯片具有大量外设资源,如:A/D、定时器、各种串口(同步和异步) ,WATCHDOG 、CAN 总线/PWM 发生器、数字 IO 脚等。是针对控制应用最佳化的 DSP,在 TI 所有的 DSP 中,只有C2000 有 FLASH,也只有该系列有异步串口可以和 PC 的 UART 相连。3)C6000 系列:C62XX, C67XX,C64X 该系列以高性能著称,最适合宽带网络和数字影像应用。32bit,其中:C62XX 和 C64X 是定点系列,C67XX 是浮点系列。该系列提供 EMIF 扩展存储器接口。该系列只提供 BGA

20、封 装,只能制作多层 PCB。且功耗较大。同为浮点系列的 C3X 中的 VC33 现在虽非主流产品,但也仍在广泛使用,但其速度较低,最高在 150MIPS。4)OMAP 系列: OMAP 处理器集成 ARM 的命令及控制功能,另外还提供 DSP 的低功耗实时信号处理能力,最适合移动上网设备和多媒体家电。 其他系列的 DSP 曾经有过风光,但现在都非 TI 主推产品了,除了 C3X 系列外,其他基本处于淘汰阶段,如:C3X 的浮点系列:C30, C31,C32 C2X 和 C5X 系列:C20, C25, C50每个系列的 DSP 都有其主要应用领域.2、设计中如何得到技术参考资料以及如何得到相

21、关源码原则是碰到问题就去 1)在 TI 网站的搜索中用 keyword 搜索资料,主要要注意的就是 Application Notes, user guides 比如不知道怎样进行 VC5402 的 McBSP 编程,搜 McBSP 和 VC5402 如果不知道如何设计 VC5402 和 TLV320AIC23 的接口以及编程,搜 TLV320AIC23 和 VC5402; 这样可以搜到一堆的资料,这些资料一般均有 PDF 文档说明和相应的源程序包提供,download 后做少许改动即可2)版上发问3)google 搜4)再不济,找技术支持,碰运气了3、如何看待 TI DSP 庞杂的技术文档新

22、手进行 DSP 开发学习之时,常常感觉技术文档太多,哪本都有用,哪本都想看,无从下手。此时原则是只看入门必须的、只看和芯片相关的。根据经验,如下的资料必看不可:1)讲述 DSP 的 CPU,memory,program memory addressing,data memory addressing 的资料都需要看、外设资源的资料可以只看自己用到的部分;2)C 和汇编的编程指南需要看3)汇编指令和 C 语言的运行时间支持库、DSPLIB 等资料需要看其他的如:Applications Guide,Optimizing CC+ Compiler Users Guide,Assembly Lang

23、uage Tools Users Guide 等资料留待入门之后再去看体会会更深一些。4、如何高效开始 TI DSP 的硬件开发1)根据应用领域选择 TI 推荐的 DSP 类型2)参考选定的 DSP 之 EVM 板,DSK 等原理图,完成 DSP 最小系统的搭建(包括外扩内存空间、电源复位系统、各控制信号管脚的连接、JTAG 口的连接等);3)根据具体应用需要,选择外围电路的扩展,一般如语音、视频、控制等领域均有成熟的电路可以从 TI 网站得到。外围电路与 DSP 的接口可参看 EVM 或 DSK,以及所选外围电路芯片的典型接口设计原理图;最好外围电路芯片也选择 TI 的,这样的话不管硬件接口

24、有现成原理图、很多连 DSP 与其接口的基本控制源码都有。4)地址译码、IO 扩展等用 CPLD 或者 FPGA 来做,将 DSP 的地址线、数据线、控制信号线如 IS/PS/DS 等都引进去有利于调试5、如何高效开始 TI DSP 的软件开发 如果你不是纯做算法,而是在一个目标版上进行开发,需要使用 DSP 的片上外设,需要控制片外接口电路,那么建议在写程序前先好好将这个目标版的电路设计搞清楚。最重要的是程序、数据、I/O 空间的译码。不管是否纯做算法还是软硬结合,DSP 的 CPU,memory, program memory addressing, data mem.ory addres

25、sing 的资料都需要看.1)看 CCS 的使用指南2)明白 CMD 文件的编写3)明白中断向量表文件的编写,并定位在正确的地方4)运行一个纯 simulator 的程序,了解 CCS 的各个操作5)到 TI 网站下相关的源码,参考源码的结构进行编程6)不论是 C 编程还是 ASM 编程,模块化是必须的6、选择 C 还是选择 ASM 进行编程记住一条原则,TI 的工程师在不断改进 CCS 的 C 程序优化编译器,现在 C 优化的效率可达到手工汇编的 90甚至更高。当然有的时候如果计算能力和内存资源是瓶颈,ASM 还是有优势,比如 G.729 编解码。但是针对一般的应用开发, C 是最好的选择。 新手编程则选择 C 和汇编混合编程更有利一些7、选择什么仿真器一般来说,买个并口的 EPP 就够了,价格便宜又稳定8、关于 TI 54X 系列 DSP 的 bootloader 过程 请详细阅读 TI 文档 SPRA618A、SPRA571,这些文档对 boot 的机制进行了详细说明同时说明了利用 hex500 将*.out 文件转化为*.hex 文件时,需要编写的 cmd 文件的写法。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 重点行业资料库 > 建筑建材

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。