关于我的DSP学习经验
先谈谈我是如何接触DSP的吧!在我大二的时候,也是刚进实验室不到三个月,那时我刚做完全场定位,不知道接下来该干些什么,这时我的前辈(实验室的老队员)给我说:“晓松啊,你要是闲着没事就学DSP吧!”
当时我唯一的基础就是单片机和STM32,至于这个DSP,我连它是干嘛的我都不知道!
我向前辈们了解到实验室要在车上开发摄像头技术,而这个DSP刚好就适合做数字图像处理,于是就让我学习DSP。
就这样我开始了我的DSP学习之旅。刚才我就说了,我对这个DSP是一点都不了解啊! 我开始在网上搜索有关DSP的各类资料(这个网络真是个好东西,各种资料都能找到,在以后学习DSP的过程中出现的各类问题都能在网上找到解决方法),渐渐的我开始了解到DSP原来就是Digital Signal Processor的简称,即数字信号处理器。那这东西是用来干嘛使的呢?进一步了解后发现这东西可不一般,它是一种特别适合于进行数字信号处理运算的微处理器,其主要应用是实时快速地实现各种数字信号处理算法。根据数字信号处理的要求,DSP芯片一般具有如下主要特点:
(1)在一个指令周期内可完成一次乘法和一次加法;
(2)程序和数据空间分开,可以同时访问指令和数据;
(3)片内具有快速RAM,通常可通过独立的数据总线在两块中同时访问;
(4)具有低开销或无开销循环及跳转的硬件支持;
(5)快速的中断处理和硬件I/O支持;
(6)具有在单周期内操作的多个硬件地址产生器;
(7)可以并行执行多个操作;
(8)支持流水线操作,使取指、译码和执行等操作可以重叠执行。
正因为有这些特点,它才能够实时快速地实现各种数字信号处理算法。当然了,与通用微处理器相比,DSP芯片的其他通用功能相对较弱些。
对于DSP的介绍我就讲这些,因为我写这篇**的目的也不是奔着DSP教科书的方向写,我也没这个能力。所以关于DSP的更多介绍,你只要在百度上输入“DSP”,就可以搜索到很多相关资料。我之所以写这篇**只是想谈谈我是怎样学习DSP的,希望能对想学习DSP的盆友有所帮助。
在初步了解完DSP的原理后(可以阅读一下文档内的<<DSP简介>>),我建议你从DSP的某一款芯片开始学习,因为DSP的种类实在是太多了,光TI公司生产的就有C2000系列、C5000系列、C6000系列等等,另外还AT&T公司、MOTOROLA公司、 NEC公司等这些都是生产DSP的主要厂家。就拿TI公司来说吧,它的每一系列的DSP都是针对不同的用途而设计的,例如C2000系列是一个控制器系列,全部为16位定点DSP,C2000系列主要偏重于工控领域,这个系列的DSP自身集成了丰富的I/O口,A/D采样接口及PWM输出接口,多为定点型芯片;C5000系列是一个定点低功耗系列,特别适用于手持通讯产品、PDA、GPS等,C6000系列是一个32位的高性能的DSP芯片,主要偏重于视频图像处理。所以要想全部了解那是不可能的,因此我们必须根据学习目的选择具体的芯片,刚才我说了,我学DSP的目的是为了做图像处理,根据DSP的功能本应该选择偏重于视频图像处理的TI的C6000系列,但一块好的C6000系列的开发板动不动就得上千RMB,玩不起啊!所以退而求其次,选择了C5000系列的TMS320VC5509A开发板,价格在200多一点,再加上一块XDS100-v2的仿真器一共花了400元左右。关于开发板和仿真器的资料文档里有。
选好板子后,开发板附带的资料里有DSP的开发软件,你也可以到TI官网上自个下载个开发软件(在TI官网上注册一个账号,就可以在TI官网下载各种有关DSP的资料,这个很有用,我也注册了一个账号,你也可以试试),CCS4.2、CCS3.3的安装包文档里都有,具体的安装流程《TI_CCS4.1.2开发环境中文入门指导书》有介绍。我开始使用的是3.3的,但XDS100的仿真器不支持,所以后来改成4.2的了,应该说CCS4比CCS3使用起来更方便,但它不如3.3的稳定,时常出现故障。
板子有了,开发软件也安装了,接下来可以在CCS4.2上导入一个例程,熟悉一下CCS4.2的开发环境,然后试着新建一个工程,编译一下看看通不通得过(这些《TI_CCS4.1.2开发环境中文入门指导书》上有介绍,可以照着上面试试)。接下来联上板子,把例程下载到板子跑跑看,最好下载个有明显现象的例子,例如gpio流水灯,只要程序能在板子上跑成功,那你就成功了一大半了。然后就是熟悉一下其他各个例程,了解对板子上的各个外设如何使用。一般都是先下载例程,然后在熟悉例程的基础上对它进行修改,使之满足你的要求。在这过程中你一定会遇到各种各样的问题,不用怕,你出现过的问题别人也一定遇到过,只要上网上一搜,都能找到解决办法。 |