DSP

DSP献给初学者

2019-07-13 11:35发布

dsp和FPGA我都做过一些,感觉DSp主要是地址和常规的编程语言,FPGA主要是逻辑和时序,相对难一点(自我感觉);另外用不同公司 的 FPGA所用的语言也是不一样的。
建议你先学DSP,用处比较广;
之后再慢慢扩展,很多东西是相通的,一旦上了手再学别的就快了
其实只要 做得好,什么都是有前途的,至于薪金,毕业时的薪金只要取决于学历,以后的就看个人努力和机遇了   总结及建议
      1)选好自己的工具和平台
      
学DSP当然首先要选择一款DSP(这里主要说TI的DSP,AD公司的不熟这里就不说了)。如果是个人学习的话主 要看个人需要和应用场合,比如做图像处理那当然首推TI 6000了,初学者不必将DSP分出三六九等,各个系列没有明显的优劣,但有明确的应用领域,2000偏接口控制,5000偏语音,6000适合做大数据 量信号处理,比如图像、雷达等等。初学者最好有个开发板,不然无异于纸上谈兵,2000、5000的开发板相对便宜,6000的就比较昂贵。
       就上手容易度来说,我个人觉得6000更易上手,6000的结构较2000、5000明了清晰,硬件上的条条框框比较少,你不需要看很多的硬件结构资料就 能着手编程,这个大概是技术的进步吧。不过还是这句话,应用场合决定你的选择。
       2)自己先动手
       初学者如果会C语言语法,在看过一些资料后就可以着手写自己的第一个程序,如果写不出来,看看TI最初级的例程,完成自己第一个程序。我给我们单位新同事 做6000培训的时候,给他们的第一个题目就是写一个程序让LED灯不停闪烁,这个灯可能接在GPIO上或者通过EMIF译码与FPGA配合控制(后者可 能更有意义),更进一步的程序是控制闪烁的频率。我比较喜欢让他们用GPIO和EMIF,它们可能是6000里最简单和用的最多的外设了,它们是初学者最 早要攻克的堡垒。
       初学者往往对硬件结构和软件的配合没有概念,对片内存储空间、片外存储空间、片上外设这些概念没有实在的理解,这些概念需要自己的反复的思考、反复的实 验、反复的体会才能最终搞清楚,这些弄明白了你也就入门了。
       初学者比较忌讳看太多和太复杂的例程,看得太多你的思绪会比较乱,看得太复杂你会心浮气躁,复杂的例程一般它都有相对复杂的编程结构,这个初学者是很难体 会到的,所以刚开始不要看,等你写了20到30个程序的时候再试着看相对复杂的例程。
       3)多动手
       这个不用多说了,光看不练假把式。
       4)片上外设
       这里拿DM642来说,我把常用的外设由简单到复杂排个序:GPIO-TIMER-EDMA-EMIF-I2C-MCASP-VideoPort- EMAC、MDIO,MCASP我没用过,不过看过资料感觉不复杂,我给初学者的建议是先把前面4个学清楚,可以先学GPIO这个真的是简单,刚开始不要 急着用CSL,用汇编或是C写个程序让某个GPIO脚上输出波形,这样有助于理解片上外设以及有关的概念。前面4个明白了后面的具体用到再学,这个时候你 可以看TI相应的例程,拿来用就可以。
       5)汇编、C和线性汇编
       现在开发6000的标准流程是先用C写,C的好处很多这里不说了,有太多的文章在论述,不过对于准备做优化的同志们来说,汇编不会也不行,用汇编相对于C 更助于你理解6000的架构,很多初学者对C语言中用指针对某个空间操作不理解,用汇编写的话相对要好理解的多。
       大家不必对汇编心存畏惧,其实它也很简单,只不过它比较晦涩,用它开发整个系统的时间上的花费太多,不过关键算法的优化有时还是离不开它,TI目前还提供 线性汇编,它是汇编和C的折中,兼备汇编的效率和C的易开发性。
       汇编和C都只是工具,关键还是你对架构的理解和编程理念,所以选择哪个都有道理,通过工具去探索架构而已。我个人觉得初学者主要应学习C,毕竟它是主流, 可以用汇编写4-5个小程序,熟悉它的语法就行,日后用它做优化也不会什么都不知道,而且也助于对硬件架构的理解。
结束
       就写这么多了,一家之言,里面有很多废话,希望对初学者有点帮助,抛砖引玉,也希望高手们多多写出自已的经验。   --------------------------------------------------------- DSP献给初学者

DSP的特点
对于没有使用过DSP的初学者来说,第一个困惑就是DSP其他的嵌入式处理器究竟有什么不同,它和单片机,ARM有什么区别.事实上,DSP也是一种嵌入 式处理器,它完全可以完成单片机的功能.
唯一的重要的区别在于DSP支持单时钟周期的"乘-加"运算.这几乎是所有厂家的DSP芯片的一个共有特征.几乎所有的DSP处理器的指令集中都会有一条 MAC指令,这条指令可以把两个操作数从RAM中取出相乘,然后加到一个累加器中,所有这些操作都在一个时钟周期内完成.拥有这样一条指令的处理器就具备 了 DSP功能.
具有这条指令就称之为数字信号处理器的原因在于,所有的数字信号处理算法中最为常见的算术操作就是"乘-加".这是因为数字信号处理中大量使用了内积,或 称"点积"的运算.无论是FIR滤波,FFT,信号相关,数字混频,下变频.所有这些数字信号处理的运算经常是将输入信号与一个系数表或者与一个本地参考 信号相乘然后积分(累加),这就表现为将两个向量(或称序列)进行点积,在编程上就变成将输入的采样放在一个循环buffer里,本地的系数表或参考信号 也放在一个buffer里,然后使用两个指针指向这两个buffer.这样就可以在一个loop里面使用一个MAC指令将二者进行点积运算.这样的点积运 算对与处理器来说是最快的,因为仅需一个始终周期就可以完成一次乘加.
了解DSP的这一特点后,当我们设计一个嵌入式系统时,首先要考虑处理器所实现的算法中是否有点积运算
,即是否要经常进行两个数组的乘加,(记住数字滤波,相关等都表现为两个数组的点积)如果有的话,每秒要做多少次,这样就能够决定是否采用DSP,采用多 高性能的DSP了.
浮点与定点
浮点与定点也是经常是初学者困惑的问题,在选择DSP器件的时候,是采用浮点还是采用定点,如果用定点是16位还是32位?其实这个问题和你的算法所要求 的信号的动态范围有关.
定点的计算不过是把一个数据当作整数来处理,通常AD采样来的都是整数,这个数相对于真实的模拟信号有一个刻度因子,大家都知道用一个16位的AD去采样 一个0到5V的信号,那么AD输出的整数除以2^16再乘以5V就是对应的电压.在定点DSP中是直接对这个16位的采样进行处理,并不将它转换成以小数 表示的电压,因为定点DSP无法以足够的精度表示一个小数,它只能对整数进行计算.
而浮点DSP的优势在于它可以把这个采样得到的整数转换成小数表示的电压,并不损失精度(这个小数用科学记数法来表示),原因在于科学记数法可以表示很大 的动态范围的一个信号,以IEEE754浮点数为例,
单精度浮点格式: [31] 1位符号 [30-23]8位指数 [22-00]23位小数
这样的能表示的最小的数是+-2^-149,最大的数是+-(2-2^23)*2^127.动态范围为20*log(最大的数/最小的 数)=1667.6dB 这样大的动态范围使得我们在编程的时候几乎不必考虑乘法和累加的溢出,而如果使用定点处理器编程,对计算结果进行舍入和移位则是家常便饭,这在一定程度上 会损失是精度.原因在于定点处理处理的信号的动态范围有限,比如16位定点DSP,可以表示整数范围为1-65536,其动态范围为 20*log(65536/1)=96dB.对于32定点DSP,动态范围为20*log(2^32/1)=192dB,远小于32位ieee浮点数的 1667.6dB,但是,实际上192dB对绝大多数应用所处理的信号已经足够了.
由于AD转换器的位数限制,一般输入信号的动态范围都比较小,但在DSP的信号处理中,由于点积运算会使中间节点信号的动态范围增加,所以主要考虑信号处 理流程中中间结果的动态范围,以及算法对中间结果的精度要求,来选择相应的DSP.另外就是浮点的DSP更易于编程,定点DSP编程中程序员要不断调整中 间结果的P,Q值,实际就是不断对中间结果进行移位调整和舍入.     ---------------------------------------------------------

写给DSP初学者:轻松入门,快速精通

随 着3G技术的发展,要求处理器的速度越来越高,体积越来越小,DSP的发展正好能满足这一发展的要求。因为,传统的其它处理器都有不同的缺陷:MCU的速 度较慢;CPU体积较大,功耗较高;嵌入CPU的成本较高。 DSP的发展,使得在许多速度要求较高,算法较复杂的场合,取代MCU或其它处理器,而成本 有可能更低。
数字化的时代已经来临,对DSP专业人才的需求也越来越大,如今DSP技术和DSP应用已经成为当今嵌入式系统应用领域 中最热门的技术,是高校、科研院所和高新技术企业的DSP软件、硬件开发人员的新的课题。很多高校开设了DSP专业,很多相关专业也增设了DSP课程,更 有许多业内人士在准备给自己充电的时候选择了学习DSP。在这里,笔者就根据个人的一些经验和体会向初学者介绍一些学习方法和途径:

一、选择培训

有 条件的朋友可以选择参加培训班,聪明的学员会做好两手准备:一是带着问题听培训,这就要求你必须提前熟悉教材,以便在听课时与老师和其他学员交流。二要珍 惜老师和同学们的交流机会和以后的联系方式,一般的培训班讲师们和同学都会留下他们的联系方式,以后遇到了问题也能找行家求援了。其实培训班的意义就在于 解决问题和建立今后的交流平台。在这里向大家推荐一些比较专业的培训中心:上海闻亭公司培训中心、飓风数字系统(北京)培训中心、浙江大学微系统专业技术 培训中心、深圳爱华人才培训中心等等。

二、选对教材

目前,跟DSP相关的教材充斥着电子图书市场,选对入门教材很 关键。在这里向大家推荐个人认为比较好的书目:江思敏主编的《TMS320LF240xDSP 硬件开发教程》、彭启琮等主编的《DSP的发展与应用》、 朱铭锆等主编的《DSP应用系统设计》、邬可军、朱铭锆等主编的《DSP实时多任务操作系统设计与实现》、刘和平等主编的 《TMS320LF240xDSP C语言开发应用》、何苏勤主编的《TMS320C2000系列DSP原理与应用技术》 等都是比较好的教材。对于教 材,我想说的是,不在于通读,初学者应该选择适合自己的教材,然后精读。

三、有自己的操作平台

由于DSP是一门实践性很强的专业,所以要想快速精通,就必须有自己的操作平台。这样既可以增强动手能力,也可以节约很多时间。所以,对于初学者来说,选 择一款性价比较高的教学套件很重要。

1、 支持DSP软件开发及教学实验电机控制算法开发的评估板选择。在这里向大家推荐性能好,价格超低的评估板。CY-SOM2407评估板,市场价只有300 元。其硬件组成是:TMS320LF2407A芯片30/40MHZ;片上32K words Flash存储器;板上64K words程序存储器;板 上64K words数据存储器;RS232串口;单电源供电(+5V);符合IEEE11.49.1标准JTAG接口;软件包括:板上资源的测试程序、 存储器测试程序、RS232串口测试程序、对Flash的编程插件“SD Flash”、支持TI的CCS软件。

2、仿真器的选择。 目前市场上的仿真器种类繁多,性能、价钱差别很大。建议大家选择 CY-XDS510USB2.0 JTAG DSP仿真器。因为这款仿真器采用高速版本 USB2.0标准接口,即插即用,传输速度可达480MB/S,向下兼容USB1.1主机;采用标准JTAG仿真接口,不占用用户资源;特别接口安全保护 设计,支持全系列有JTAG接口的芯片;体积特小,便携方便;性能卓越 ,仿真速度快,支持RTDX数据交换;支持Windows98/NT/2000 /XP操作系统;支持TI CCS2.X、支持CCS3.1集成开发环境,支持C语言和汇编语言;实现对F28x/F240x/F24x/F20x 的 Flash可靠编程;支持RTDX数据交换;自动适应目标板DSP电压;设计独特,完全克服目标板掉电后造成的系统死机;完全解决目标板掉电后不能重起 CCS的问题;安装简单,运行稳定;最重要的是,价格低廉,才1100多。

在这里把我的经验和体会介绍给大家,就是希望各位同行们能少走些弯路,早日成为高手