打印

DSP学习求助!急!!!!!!!!!

[复制链接]
12120|42
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
奇兵|  楼主 | 2009-5-29 14:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

那位高手能指点一下:DSP该怎么入门,我看了一本F2812的书,但是看不太明白,一个字"晕"我该怎么学起!!!

 

相关帖子

沙发
armecos| | 2009-5-30 23:57 | 只看该作者

《快快乐乐跟我学DSP》

《快快乐乐跟我学DSP》
        2009/01/12  asdjf@163.com  www.armecos.com

    “我想学习DSP开发,怎样快速入门?”
    “我的项目中使用了DTMF和FSK,怎样用DSP产生和检测这些信号呢?”
    “怎样设计电机控制程序?怎样设计VOIP系统?”
    “我想基于PC机做个虚拟仪器,实现低成本的示波器、频谱分析仪、波形发生器,如何规划和设计?”
    ......
    
    很多《ecos增值包》用户希望在自己的项目里使用DSP处理器,进行实时高速数字信号处理,毕竟ARM之类的MCU不适合实时信号情况,但苦于DSP开发太复杂,不知如何快速入门。为此,在《ecos增值包》中增加关于DSP方面的文档。
    
    我们首先带着大家复习相关基础理论课,一些用户没有学过,另一些学过但忘记了,不论怎样,温故知新,DSP最难的部分在于算法,而理解算法需要了解基础理论。当然,基础理论课比这篇文档大得多,我们只能直接给出结论,概括介绍。
    其次,依次介绍DSP硬件/软件结构、开发注意事项、开发环境、典型DSP算法(FFT、IIR、FIR实现),最后,用大型工程应用实例演示如何用DSP开发项目。
    
    ----------
    DSP相关技术
    ----------
    DSP开发之所以困难主要在于涉及的内容太多,基础理论、算法、高速PCB、CPLD/FPGA、驱动开发等等都要求有一定了解,其中有些内容不是DSP所独有的,所以,在本篇文档里将不涉及,感兴趣的用户可以参阅《ecos增值包》中的其他相关文档。
    
    《快快乐乐跟我学高速PCB设计》------用于指导设计高速DSP板/插卡
    《快快乐乐跟我学FPGA设计》---------用于指导DSP+CPLD/FPGA设计
    《快快乐乐跟我学Linux驱动》--------有些DSP板卡使用了PC机的PCI/USB,需要配套Linux驱动
    《快快乐乐跟我学Windos驱动WDM》----增加for Windows的产品能够增加用户数,大大提升DSP产品销量
    《快快乐乐跟我学嵌入式系统》--------MCU+DSP完美解决方案,对于理解DSP上的RTOS也有益处
    《如何选择和评估CPU处理器芯片》-----先了解一般的CPU处理器选型,能更透彻地了解DSP选型
    《如何选择和评估嵌入式操作系统》----有利于DSP上的RTOS评估
    
    总之,《ecos增值包》已经覆盖了大部分DSP通用技术,我们只需要继续学习DSP专用技术就可以了,大大减轻了负担。
    
    参考网站:除了以上资料和www.armecos.com网站外,以下网站资源非常有用。
        www.ti.com
        www.analog.com
        www.mot.com
        www.alcatel-lucent.com

    -------
    DSP介绍
    -------
    什么叫DSP?DSP能干什么?为什么要数字化?数字处理优缺点是什么?DSP发展迅速。DSP选型。
    
    DSP区别于MCU单片机和通用处理器,软硬件经过专门优化,特别适合于数字信号处理应用,目前用途越来越广泛。当然,DSP也不是万能的,工程上不能做到理想状态,需要折中考虑。总之,DSP没什么大不了的,战略上藐视,战术上重视就对了。
    
    用途广泛:移动通信系统、MODEM、软件无线电、数码相机、汽车电子、雷达、图像识别/鉴别、电机控制、巡航导弹......
    总之,DSP的应用领域取决于设计者的想象能力。
    
    数字化优点:(1)灵活性;(2)精度高;(3)可靠性和可重复性;(4)大规模集成;(5)实时性。
    数字化局限:(1)高频信号的处理;(2)现实世界信号大多是模拟的。
    
    预测DSP市场不断增长,对DSP工程师的需求急剧增加。对DSP工程师要求高:既要掌握数字信号处理基本理论和方法,又要掌握复杂的DSP软硬件结构和整个系统的设计。
    
    DSP不同于通用CPU,没有486淘汰386,586淘汰486的现象,而是各种性能和年代的DSP共存。
    DSP选型主要考虑:功耗、价格、性能。这三者在不同的项目应用中优先顺序不一样。例如:手机/PDA要求功耗、成本、性能;基站要求性能、成本、功耗;大容量存储设备(硬盘、光驱)、马达控制要求成本、性能、功耗。
    总之,不要认为高性能低功耗的DSP一定会取代低性能高功耗的型号,这还与用户熟悉程度,前期投资,成本等有关。另外,DSP开发20%工作量在硬件,80%在软件,更换硬件芯片可能需要重写、重测软件,这个代价用户不一定接受。
    
    -------------------
    DSP相关基础理论课复习
    -------------------
    DSP相关基础理论课就是《信号与系统》和《数字信号处理》
    
    《信号与系统》
    
    《信号与系统》研究信号、系统、信号通过系统。
    信号是千变万化的,怎么研究呢?一个思路就是把信号分解成某种最简单的单一信号的组合,研究这种单一信号通过系统后得到的响应,然后在系统输出端将系统对单一信号的响应用同样方式组合起来,就能得到希望的响应。即:叠加的响应 = 响应的叠加。
    
    信号
    常用信号:单位阶跃信号、正余弦信号、指数形式正余弦信号(欧拉公式)、指数信号、门信号、单位冲激信号。
    特别要理解抽象的单位冲激信号的物理意义,可以用密度、压强、电流概念来类比。
    明白任意信号都可以表示为单位冲激函数的移位加权和。
    
    系统
    线性时不变系统LTI
    理解线性、时不变特性,掌握对应公式
    
    信号通过系统
    系统单位冲激响应h(t)
    y(t) = f(t) * h(t)  卷积
    对于一个LTI系统,可以用系统的单位冲激函数和输入信号的卷积来表示它的输出。
    
    以上就是《信号与系统》时域分析的全部内容。既然时域信号可以分解为单位冲激函数的移位加权和,那还有没有其他分解信号的方式呢?
    
    当然有啦!把信号分解为不同频率的正弦信号的加权和,就可以进行频域分析啦!
    
    先讨论指数形式的周期信号的傅立叶级数,当令周期T趋于无穷大时就可以得到非周期信号的频谱分析---傅立叶变换。注意:当周期T趋于无穷大时,谱线的幅度和间距都趋于0,这时再用谱线的幅度来描述就不合理了,因为离散的谱线已不再存在,从而引入了频谱密度的概念。
    
    特别要理解抽象的频谱密度的物理意义,可以用密度概念来类比。级数与变换的思想是一样的,都是把一个信号分解成很多单一信号的某种组合。
    
    信号
    常用信号函数的傅立叶变换:门函数、指数信号、单位冲激函数、常数1、正弦函数与余弦函数、单位冲激序列等
    傅立叶变换的性质:线性性、时移特性、频移特性(调制定理)、能量定理、卷积定理(时域/频域)
    卷积定理说明(时域卷积频域相乘):可以先通过变换将信号变到频域,相乘后再反变换回来,就可以把复杂的卷积运算下降为代数乘运算。傅立叶变换对是对称的,所以频域卷积时域相乘。可见,能够将一个域的卷积运算转化为另一个域的代数运算,降低运算量。
    
    信号的频谱比信号本身具有更明确的物理意义,谱分析越来越流行。
    
    《数字信号处理》
    
    DSP只能处理数字化的信息,所以还需要进一步研究数字信号处理。
    和前面讨论的思路一样,整个一部信号与系统理论就是建立在对信号用不同形式分解,然后再综合的基础上的。
    
    信号
    典型离散时间序列:单位数字冲激信号、单位阶跃序列、门序列、正弦序列等。
    主要了解单位数字冲激信号和单位冲激信号的差别;单位阶跃序列和单位阶跃信号的差别等。
    明白任何序列都可以表示成单位数字冲激信号的移位加权和。在讨论信号通过系统时,只需要讨论单位数字冲激通过系统的响应,即单位冲激响应,然后将系统对各移位的冲激响应叠加,就得到系统的输出。
    了解时域分析、频域分析、复频域分析。
    
    系统
    离散线性位移不变系统。
    理解线性、位移不变特性,掌握对应公式。
    延时器、加法器、数乘器组成离散时间系统。
    
    (离散)信号通过(线性位移不变)系统
    y[n] = x[n] * h[n]  卷和
    掌握卷和的计算,图形法计算,先翻转再移动计算。
    
    以上是离散时间系统的时域分析,下面我们看看变换域分析。
    
    x[n]的Z变换可以由拉普拉斯变换推导出来。有些信号是发散的,其傅立叶变换不存在,加个衰减因子后,就可以将各种信号变换到S域,扩大了研究范围,各种信号都可以研究了。
    拉普拉斯变换和傅立叶变换的关系就是多加了一个衰减因子。
    拉普拉斯变换和Z变换存在映射关系:S左半平面映射到Z平面单位圆上,周期地在单位圆上映射。
    根据傅立叶变换对称性可知:时域离散,频域周期。
    S平面jw轴上是傅立叶变换;Z平面单位圆上是傅立叶变换。
    
    信号
    常用信号的Z变换:单位数字冲激、单位阶跃序列、指数序列、正弦序列等的Z变换。
    Z变换的性质:线性性、移位性、卷和定理
    
    (离散)信号通过(线性位移不变)系统
    y[n] = x[n] * h[n]
    Y(Z) = X(Z)H(Z)
    
    离散时间信号的傅立叶变换(DTFT)就是Z平面单位圆上的变换。
    
    DTFT的性质
    线性性、时移、时域卷积定理、频域卷积定理、能量定理。
    
    综上,我们得到如下结论:
    
    时域连续非周期信号  <--->  频域连续非周期谱(傅立叶变换FT)
    时域周期信号       <--->  频域离散谱(傅立叶级数变换FST)
    时域离散信号       <--->  频域周期谱(离散时间傅立叶变换DTFT)(注意:它是连续的)
    
    DSP只能处理数字化信息,因此要求时域和频域都是离散的,实际上就是要求时域和频域既是离散的又是周期的。
    
    时域离散周期信号   <--->  频域离散周期谱(离散傅立叶变换DFT)
    
    在DFT中,变换两边都是离散的,从而是真正能用DSP来做数字信号处理的变换对。
    
    两边都是周期的,从而处理可以只在一个周期内进行。这有两个重要意义:一是所作的处理是有限的(这对DSP来说是必须的);二是只在一个周期内就可以保留全部信息(这对准确处理来说是必须的)。其它周期都是这个周期的重复,一个周期内包含所有信息,结果是准确的。
    
    工程中的实际信号往往是连续非周期的,为了进行DFT,就必须将其离散周期化。
    离散化也就是采样的过程。
    周期化分为两种情况:
    1、若x[n]是有限长序列,长度为N,则将该N点序列看成是周期信号的一个周期,进行周期延拓;
    2、若x[n]是无限长序列,,首先将其截断为长度为N点的有限长序列,然后再作周期延拓,截尾的过程,必然带来失真,因此要研究各种截尾的方法,这也是各种加窗算法的由来。
    图示FT--->DTFT--->DFT过程,即从连续非周期到时域和频域两边都离散且周期的过程。无限长序列到有限长序列意味着加窗。
    
    DFT的定义
    
    DFT的性质:线性性、移位特性、能量定理。
    
    由于x[n]是周期序列中的一个周期,所以对x[n]的移位应该是整个序列的移位,即前面的移位出去,后面的移位进来,移位后仍然是N点的周期序列,这就称为循环移位。
    图示循环移位过程。非周期函数的移位和周期函数循环移位的对比。
    
    后面会介绍DFT的快速算法FFT。
    
    好啦,基础课就复习到这里,现在终于能够用DSP处理时域和频域的信息了。那么我们怎样才能得到数字信号输入信息呢?
    
    ------------------
    模拟信号的数字化问题
    ------------------
    奈奎斯特采样定理:采样频率大于等于最高信号频率的2倍,就能获得信号的全部信息。由于理想低通滤波器不可实现,工程上取fs>=(2.5到3)fm。不满足奈奎斯特条件会产生频率混叠。
    
    采样脉冲尽可能窄,否则产生Sa(x)包络调制。
    
    S/H采样/保持 使AD有充分的时间量化。
    
    量化 AD变换:逐次逼近、闪烁(flash)、积分等。
    
    量化噪声  S/N = (6.02n + 4.77)dB  每增加1bit,S/N提高约6dB。
    
    采样量化很有学问:
    1、S/N不是越小越好,当信号本身的噪声大于量化噪声时,再降低量化噪声已经没有任何意义了。bit数高会降低速度,增加成本,影响存储空间与数据的吞吐速度。其实S/N满足要求就行了。
    2、上述信噪比的推导是以信号满度为前提的,要做到即满度又不饱和,其实蛮难的。采样前加入一级低噪声放大器,程控其增益,使输入信号即接近满度又不饱和,从而达到最好的信噪比。这个属于信号调理。
    3、数据采集需要注意与传感器耦合方式、程控防混叠滤波、程控前置放大(衰减)器、与外部电路的隔离、共模抑制、多通道分时/同时采集等问题。
    
    ----------
    DSP硬件结构
    ----------
    为什么说DSP特别适合数字信号处理呢?为什么它的运算速度这么快?
    原来DSP在硬件结构上做了优化,使得其运算效率非常高。
    下面我从各家DSP硬件共同点、各家硬件特点、和通用CPU共同点来说说DSP硬件结构。其实你只要掌握了任何一家的DSP硬件结构,就可以触类旁通理解其他厂家的DSP,因为只要是DSP,就有很多共同点。当然,各家也有各自的特色,我们一并对比介绍。通用CPU上也有加快运算速度的优化结构,这里列举的硬件结构主要是指和通用CPU不一样的部分。
    
    1、DSP采用哈佛结构总线,程序存储器和数据存储器分开,取指和数据访问同时进行。通用CPU采用冯.诺依曼型总线,程序和数据总线共享同一总线,取指和数据访问不能并发。
    2、流水线操作(pipeline),取指、译码、寻址、取数、运算、存储流水操作,等效单周期完成指令,而通用CPU通常一条指令需要几个时钟周期才可以完成。当然,流水线操作引入了一些新问题,比如需要在适当位置加NOP空操作指令或者调整指令位置以确保流水操作能顺利完成。
    3、独立的硬件乘法器。卷积、数字滤波、FFT、相关、矩阵运算等算法中,大量重复乘法和累加。MAC指令(取数、乘法、累加)在单周期内完成(通过流水线等效实现),比用软件乘法快很多。
    4、独立的DMA总线和控制器。通用CPU中的总线是共享的,DMA使用了总线则CPU就要等待,而DSP中的DMA使用独立的DMA总线通路,可以和CPU core并发操作。独立的源、目的地址寄存器、长度寄存器,自动计算地址和循环。光DSP处理器运算速度快还不行,还与数据吞吐率有关。
    5、中心算术逻辑单元CALU。DSP中有很多ALU,如DMA控制器、地址发生器中就含有可做乘加运算的ALU,这样他们就不用占用CALU了。DSP中的ALU非常简单,地址、乘法、移位都不管了,只管算术与逻辑运算。
    6、移位:通用CPU每次移动1bit,DSP可在一个机器周期内左移/右移多个比特。可用来对数字定标,使之放大或缩小以保证精度和防止溢出,还可以用来做定点数和浮点数之间的转换。
    7、溢出:通用CPU中,溢出发生后,设置溢出标志位,不带符号位时回绕,带符号位时反相,带来很大误差。此时,溢出已经发生,无法挽回。DSP把移位输出的最高位(MSB)存放在一个位检测状态寄存器中,检测到MSB=1时,就通知下一次会发生溢出,此时溢出还未发生,来得及采取措施防止。
    8、数据地址发生器(DAG)。取数不光要占用数据总线,还要计算地址。通用CPU数据、地址的产生和数据的处理都由ALU来完成。DSP中,设置了专门的数据地址发生器(实际上就是专门的ALU),来产生所需要的数据地址,节省公共的ALU时间。CALU主要做运算而不是做这些辅助的工作。
    9、外设(peripherals)
        时钟发生器、定时器、软件可编程等待状态发生器、GPIO、同步串口与异步串口、JTAG。
    10、CSSU比较、选择、存储单元。用于维特比译码,通信中常用算法,专门设计一个硬件单元用于此算法。
    11、片内具有快速RAM,通常可通过独立的数据总线在两块中同时访问。片内RAM同片外存储器相比,有以下优点:(1)片内RAM的速度较快,可以保证DSP无等待运行;(2)对于C2000/C3x/C5000系列,部分片内存储器可以在一个指令周期内访问两次,使得指令可以更加高效;(3)片内RAM运行稳定,不受外部的干扰影响,也不会干扰外部。 4)DSP片内多总线,在访问片内RAM时,不会影响其它总线的访问,效率较高。
    12、具有低开销或无开销循环及跳转的硬件支持。
    13、快速的中断处理和硬件I/O支持。
    当然,与通用微处理器相比,DSP芯片的其他通用功能相对较弱些。
    
    以上讲的是各家DSP共同点,其实,每家厂商或者同一家厂商的不同系列的DSP都有各自特点。比如:MOTOROLA DSP56系列是24bit(3字节),而TI是16bit(2字节)。MOTOROLA分成X、Y两块数据存储器同时操作,提高速度,而TI是在一个周期内访问2次,异曲同工。TI的C2000(C20x、C24x)侧重于控制;C5000(C54x、C55x)侧重于低功耗、有效性能(手机使用可以省电延长电池寿命,不用风扇散热体积小);C6000(C62xx、C67xx、C64xx)侧重于高性能;OMAP侧重于嵌入式。此外,还有一些专用DSP和多处理器DSP芯片。
    
    CACHE是DSP和通用处理器都使用的技术,就不多讲了。经过前面的讨论,再遇到新的DSP就不怕了。
    
    此外还要注意:
    定点DSP和浮点DSP,定点DSP中经常要考虑溢出问题,浮点基本不用考虑。浮点用指数表示,定点用小数表示。浮点DSP功耗高、设计难度大、价格高,手机里用定点DSP,功耗小、成本低。
    多处理器接口
    VLIW超长指令字,TMS320C6701高达256bit指令要分到8个处理单元去处理,效率高。
    
    预测图表,型号、制程(微米)、MIPS、RAM、Price、Power(mW/MIPS)
    
    DSP的发展受到应用需求多样化和集成电路技术发展的双重推动。更高的运行速度和信号处理速度;多DSP协同工作;更方便的开发环境;DSP Core;更高性价比;更广泛应用。
    
    总之,DSP硬件结构均围绕着怎么样提高数字信号处理器运算速度这个目的设计的。由此可见,DSP的确比通用处理器和单片机MCU更适合更有效地做实时数字信号处理。
    
    ----------
    DSP软件结构
    ----------
    软件结构必须结合具体的DSP型号讨论,我们以TI C54x为基础来讨论各种DSP共通的东西。
    我们希望DSP更快地处理大量的乘加运算,需要大量的高速数据,要从存储器里调用数据,这就涉及到寻址问题。
    
    寻址方式:
    
    立即数寻址
    绝对地址寻址
    累加器寻址
    存储器映射寄存器(MMR)寻址
    堆栈寻址
    直接寻址
    间接寻址
    位倒序寻址    正向进位与反向进位,专为FFT设计,所有DSP都支持此寻址方式。
    循环寻址
    
    指令分类:(按功能)
    
    算术运算指令
        加、减、乘、乘加、乘减、双数/双精度、特殊操作
    逻辑运算指令
        与、或、非、移位
    程序控制指令
        分支调用、中断、返回、循环、堆栈操作、混合程序控制指令
    装入和存储指令
        一般装入和存储
        条件存储
        并行装入和存储
        并行装入和乘法
        并行存储和加减乘指令
        混合装入和存储指令
    FIRS指令
    Viterbi译码指令 DADST、DSADT、CMPS
    最小均方运算LMS
    数据归一化相关指令EXP、NORM    调整到最大精度格式
    数据块移动 MVDD、MVDP、MVPD
    并行指令
    伪指令
    宏语言 宏库
    
    指令有几百条,选择重点的介绍一下并用源程序演示算法的DSP实现。
    NOP(空等待)指令:流水线冲突,6级流水线,要加NOP完成流水。外部设备慢,可设置软件等待状态发生器。
    
    ----------
    DSP开发环境
    ----------
    DSP开发环境需要在实践中不断使用才能真正熟悉,光靠讲是不行的。
    主要是汇编器、C编译器、链接器的使用,命令文件书写、初学者开发套件、评估板、调试仿真固化等等内容。
    课上会详细讲解,而且很多书里都有这部分内容,网站上和手册里也有介绍,这里就不赘述了。
    
    -------------
    MATLAB辅助设计
    -------------
    MATLAB语言的基本操作
    MATLAB的函数设计
    MATLAB的DSP设计模拟
    MATLAB中的DSP类函数
    推荐一本好书《数字信号处理及其MATLAB实现》 美Vinay K.Ingle和John G.Proakis著
    
    ----------------------
    定点数浮点数加减乘除算法
    ----------------------
    DSP芯片的定点运算
    
    数的定标
    定点加、减、乘、除实现
    变量Q值确定
    非线性运算的定点快速实现    对数运算、开方运算、指数运算、三角函数运算等,库函数法、查表法、混合法(折线近似)
    浮点至定点变换的C程序举例
    
    DSP芯片的浮点运算
    
    浮点数格式  IEEE格式、TMS320C3X格式及互相之间的转换
    浮点加、减、乘、除实现
    非线性运算的浮点快速实现
    
    ----------------
    经典DSP算法的实现
    ----------------
    FFT快速算法原理与实现
    模拟滤波器设计(模拟滤波器参数指标、巴特沃斯、契比雪夫I/II型、椭圆)
    IIR滤波器设计与实现
    FIR滤波器设计与实现
    
    以下讨论的经典DSP算法其实各个厂商或第三方都已经提供了,有些甚至提供了图形化生成工具,你只要输入一些参数,就可以自动计算系数,代码生成工具可以自动产生针对某款型号DSP的汇编和C代码,根本不需要自己再费事了,但是你要明白这些参数的含义,所以仍有必要学习一下。
    
    快速傅立叶变换FFT
    
    DSP只能处理数字信号,只有DFT才真正可以被DSP处理,FFT是其快速算法实现。
    
               时域  <--->  频域
            离散信号  <--->  周期谱(连续的)
    (连续的)周期信号  <--->  离散谱
        离散周期信号  <--->  离散周期谱
    
    对于周期信号,只研究一个周期既可知全部信息。
    
    FFT推导过程
    
    DFT和FFT复数乘、复数加计算量比较列表
    
    DIT按时间抽取,DIF按频率抽取。
    DIT输入是混序的,频域的输出是顺序的。DIT的复数乘法出现在加减之前。
    DIF输入是顺序的,频域的输出是混序的。
    
    定点DSP计算1024点FFT的时间
    DSP型号       时间(ms)
    TMS320C25     10.9
    TMS320C6201   0.067
    DSP56001      1.65
    
    浮点DSP计算1024点FFT的时间
    DSP型号       时间(ms)
    TMS320C30     3.87
    TMS320C40     1.02
    ADSP21060     0.46
    DSP96001      0.6
    ADSP21160     0.45us
    
    多片DSP阵列处理,速度还可进一步提高。
    
    顺序、混序与位倒序
    DIT与DIF总有一边是混序的,绝大多数DSP都提供了位倒序(bit reverse)寻址指令。
    
    溢出问题
    在多级运算中,要充分注意溢出的问题,尤其是用定点DSP时。
    
    厂商都会提供现成的在DSP上实现FFT的程序(汇编和C),FFT和DSP是配套的。
    
    数字滤波器
    
    理想低通滤波器
    低通、高通、带通、带阻、多带等滤波器
    其他各种类型的滤波器都可以由低通滤波器构造出来,故只研究低通滤波器即可。了解如何由低通滤波器构造其他各种类型滤波器。
    滤波器各种参数的含义:
    截止频率与带宽  幅度降为0.707时的频率宽度称为带宽,即功率变成一半。也称为半功率点或3dB点。
    通带、阻带、过渡带
    滚降(roll off)
    阻带衰减
    带内平坦度(纹波)
    
    巴特沃斯滤波器  最大带内平坦度
    契比雪夫I型    阻带平坦
    契比雪夫II型   通带平坦
    椭圆滤波器     通带阻带都有纹波
    二阶低通滤波器
    
    根据需要选择合适的滤波器形式,平坦的话需要的阶数多,总之是有代价的,不能说越平坦越好。
    
    IIR滤波器的主要特点:
    
    单位冲激响应有无限多项(因为递归)
    高效率
    与模拟滤波器有对应关系,人们对模拟滤波器有很多现成的研究成果。
    强制指定位置为零点
    有极点,要考虑稳定性。
    具有反馈,可能误差积累。
    
    标准二阶节的C54X实现
    通过级联/并联实现高阶滤波器
    
    IIR滤波器的设计
    
    (1)设计一个符合要求的模拟滤波器;
    (2)从S平面映射到Z平面,得到相应的数字滤波器
    冲激响应不变法
    双线性变换法
    
    FIR滤波器的主要特点:
    
    单位冲激响应只有有限多项
    可以设计成线性相位系统(非线性相位要加全通网络校正)
    只在零点处有极点,因此系统总是稳定的
    便于DSP实现,并可用立即数乘加指令编程(节约存储器)
    
    图示系统非线性相移造成输出信号失真,了解忽略相位信息的后果。
    
    要求线性相位的例子:
    通信系统、数据通信、调制解调器
    希尔伯特变换器,要求输入输出信号正交
    高保真音响系统
    理想微分器
    
    线性相位设计
    
    用傅氏级数实现FIR滤波器,截取有限项得近似H(z),因为截取,所以一定带来截尾误差。截取方式即加窗问题。
    
    图示用DSP实现FIR滤波器的存储器安排
    FIR滤波器的编程实现
    C54X的FIRS指令
    
    加窗问题
    矩形窗、三角窗、海宁窗、海明窗、布兰克门窗、凯撒窗等的旁瓣蜂值幅度、过渡带宽、阻带衰减比较表。
    
    数字滤波器的自动化设计
    
    ----------------
    DSP设计的实现步骤
    ----------------
    对象分析
    算法设计
    DSP选择
    系统设计(软硬件设计)
    系统实现
    系统调试
    
    ---------------
    大型工程应用实例
    ---------------
    DTMF编解码(CCITT关于DTMF的指标、Goertzel算法、有效性检查)
    FSK编解码(指标要求,算法实现)
    DSP在VOIP系统中的应用(回声消除算法、VAD算法、各种语音编码实现G.711/G.723.1/G.729等、局端多DSP分布式处理等等)
    F2812永磁同步/无刷直流电机控制(PID算法实现、电流检测、转速检测、保护控制、转子位置检测及换相,数字滤波、PWM脉冲发生及同步等)

使用特权

评论回复
板凳
charrijon| | 2009-5-31 12:12 | 只看该作者

你需要的是实践

光看书是没有用的,需要结合实践,那样才能真正明白cpu是怎么回事,还有外设是什么东西

使用特权

评论回复
地板
angelguard| | 2009-6-4 15:43 | 只看该作者

按我的话去做

首先你以前可搞过51单片机?我说的是你有没有做过51单片机的实物?
若没有,你先去看看51单片机,做做51单片机,我再来告诉你下一部该做啥。
请把你手中的书丢掉,现在不是你看书的时候,可以很负责的告诉你,你手里的那些书不是书,而是2812的使用手册。若你现在能看懂,我立马拜你为师,推荐你去麻省理工学院当教授。

使用特权

评论回复
5
奇兵|  楼主 | 2009-6-30 16:48 | 只看该作者

DSP学习求助!急!!!!!!!!!

谢谢各位!我做过51单片机的电路!那我该怎么做!

使用特权

评论回复
6
奇兵|  楼主 | 2009-7-1 18:35 | 只看该作者

评价的好

7楼的朋友评价的很好!我看那本书就有这种通病,写的东西就象一本说明书!像我这样的初学者看起来不容易呀!汇编程序后面没有注释!本来汇编语言可读性差,而且也没介绍一下F2812的指令系统!难读呀!高手指点以下迷经吧!

使用特权

评论回复
7
hebu007| | 2009-7-9 14:56 | 只看该作者

实践出真知

实践出真知 

使用特权

评论回复
8
tyrone3000| | 2009-7-17 14:43 | 只看该作者

来学习的,不知道咋入手?

使用特权

评论回复
9
qiao1102| | 2009-7-17 22:38 | 只看该作者

个人建议

   楼主可以找块DSP开发板跑跑例程,实在不行把它当个单片机玩
GPIO TIMER interrupt DMA 等,一个一个跑。到最后把这些例程柔和到一起
就是一个简单的工程,虽然不如DSP/BIOS  CSL开发方便,但至少能入门。

 我就是这样做的,不一定正确。但确实有可行性。

使用特权

评论回复
10
ldyeah| | 2009-7-20 21:52 | 只看该作者

re

实在不行可以先学学单片机吧,这个简单,资料多
看下寄存器头文件就知道,单片机的就那个几个寄存器,而DSP相对来说就多些了。等单片机用熟了再来学DSP2000系列,上手就快些了。
如果非得一开始就从DSP入手,有会DSP的朋友带最好,没有的话还是买块开发板吧,上面有些资料对新手比较有利,买的时候选择哪种资料比较详尽的,有例程的。先把一个简单的程序在板子上跑起来,把CCS如何设置,要添加那些文件,编译,LOAD程序这些流程搞懂,然后买本书,买针对某个具体型号的,最好和你开发板上DSP一个型号的书来看,具体可以先看DSP的整体结构,内存部分,中断部分,IO部分看看,其他外设可以先不看,等到用相应的外设再细看。等你可以自己写一个控制IO口的程序了,就可以研究CMD和其他外设了。
我也是个初学者,个人是这样走过来的,仅供借鉴,还有就是之前有点单片机基础,所以写程序是从C开始的,汇编只是看书看了看,没写过程序。

使用特权

评论回复
11
andy.free-tech| | 2009-8-25 14:09 | 只看该作者
不是因为C2000有多高级才难入门,而是因为TI没找到一个好的第三方软件支持,弄了个CCS,写程序还得先写CMD文件,而且DEBUG观察也很不直观,仿真器还死贵,第三方出的都买2000多。像飞思卡尔的56F800系列DSP,入门不一定比51难,第三方出的仿真器+开发板总共都不到400块钱,原厂仿真器也不到1000块钱。

使用特权

评论回复
12
tcc8073| | 2009-8-25 17:15 | 只看该作者
本帖最后由 tcc8073 于 2009-8-25 17:24 编辑

只要做过51单片机,再懂C,花点时间学什么都容易,简单点看都是单片机,只是侧重点不一样而已,找到编程软件和烧写软件,先找点简单的程序测试IO口,同时候搞通调试方法和烧写方法,再练习中断,等把这些都明白了,也就差不多了,小的工程项目也就是这些东西,大的就要考你的编程思想了,这里面学问很大,慢慢学,没有人可以说完全精通,经验总是需要积累的

使用特权

评论回复
13
machunshui| | 2009-8-25 23:34 | 只看该作者
ti的资料怎一个“乱”字了得!

虽然东西不少,但是太分散。

使用特权

评论回复
14
madboy21| | 2009-8-26 08:22 | 只看该作者
我N年前就有接触,但总是要入门又不学了。
所以现在还不算是个入门者,但我想说说我的看法,也许对初学都有一定的帮助。
1、观念:要把C28XX系列认为就是普通的MCU,没什么特别的。
学习者要想这就是普通MCU,不就操作IO或是读取AD或是控制通信接口等~~~~,这些会认人感觉就这么简单,学起来也不费劲,所以会很快就能入门了。
2、多利用官方例子。
上面的网友也讲了,TI的资料很让人费解,像MSP430的资料我就找不到AD采样参数在哪(如采样率,采样时钟,采样保持等等~~)像C28系列的我也找不到且体的PWM操作(如HRPWM是如何工作与加载相关数数),可能是我的理解能力比较差,呵呵!!!不过说回来,一个几十K以上的程序让我们像普通MCU那样写程序确实比较费劲,所以直接采用一些代码模块还是比较方便的。

要学好TI的C28XX控制器,银子是少不了的,不管如何成本都远高于学其它MCU,像学习AVR单片机,以M8为例,一片M8单片机零售只需6元,一个ISP下载线4元也能搞定,总共10元搞定。而C28XX一片F28015零售就要40元,可通过串口方式来烧写程序,但还非得制个板,不能像其它几个脚MCU搞个万用板就行了,这样算下来估计花上100块,关于硬件仿真我认为对初学者来讲并不是必要的,所以没必要搞个仿真器(那太贵了,有钱是另外一回事)

使用特权

评论回复
15
xwj| | 2009-8-26 08:34 | 只看该作者
必须要有实物,多动手,最好是做个实际的、复杂点的东东,等做完做好后自然就会了

以后就是广闻博见、精益求精的阶段了

使用特权

评论回复
16
machunshui| | 2009-8-26 11:00 | 只看该作者
TMS320F28XX不好学,TI有很大责任。

1.以前仿真器贵的要死,不少厂家还靠这个吃饭。
不过最近便宜了一点有所改善。

2.资料散乱。

3.IDE开饭环境CCS在方便用户上面作的太差,非得要用户自己写CMD文件,
这本来应该根据不同芯片提供不同的通用CMD,但是允许用户修改。

4讨厌的烧写插件,为啥不集成?
同种芯片,不同版本有的还不能通用!

尤为恶劣的是,烧写flash的时候一旦断电或者复位,片子有可能就废了!
真实猪脑子设计的!
完全不考虑用户!
用户用外部看门狗的时候,很容易因为跳线没拿掉,烧写的时候发生复位。

虽然是因为要加密的原因,难道就没有两全其美的办法?

5.要不是这个破玩艺叫dsp,
就凭价格死贵,开发环境难用,
在stm32面前基本上毫四轴飞行器会.

使用特权

评论回复
17
andy.free-tech| | 2009-8-26 15:49 | 只看该作者
有时候花时间适应不友好的开发环境不值当。

使用特权

评论回复
18
yiming1001| | 2009-8-26 21:01 | 只看该作者
其实最主要的就是实践,买一块开发板和仿真器,在开发环境下写程序。开始不要想那么多Datasheet该怎么办,一点一点的来。先跑程序,再熟悉例程,再温习Datasheet,循序渐进才能不断深入。
任何一样东西都是要花时间做的

使用特权

评论回复
19
skyellow| | 2009-8-26 21:03 | 只看该作者
我以前是学数学的!

使用特权

评论回复
20
angelguard| | 2009-8-27 12:12 | 只看该作者
本帖最后由 angelguard 于 2009-8-27 12:15 编辑
谢谢各位!我做过51单片机的电路!那我该怎么做!
奇兵 发表于 2009-6-30 16:48

忘了这个帖子了,楼主实在是不好意思。
若你做过51单片机实物那就太好办了,你就会很容易的明白什么是AD(若你做过51与AD0832或AD0809的连接),什么是SCI(若你做过51的串口通信),什么又是SPI(若你做过51的i2c通信)。
接下来你需要的是一块2812的开发板,例如闻亭的或瑞泰的,附带的还需要开发板的说明书和例程
你先把附带的例程在2812板上运行一下,然后把里面的LED和DIP例程看懂,(若不知道CCS怎么操作,网上有太多的资料,这个应该不会有问题的)然后我再告诉你下一步该怎么做。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

102

主题

1254

帖子

4

粉丝