我的DSP之路
【VIP专享】一个高手的DSP开发经验之谈

一. 我是已经从事DSP开发有几年了,看到许多朋友对DSP的开发非常感兴取,我结合这几年对DSP的开发写一写自己的感受,一家之言,欢迎指教。
我上研究生的第一天起根据老板的安排就开始接触DSP,那时DSP开发在国内高校刚刚开始,一台DSP开发器接近一万还是ISA总线的,我从206开始240、2407A都作过产品,对5402、2812、5471在产品方案规划制定和论证时也研究过。
由于方向所限对6X、8X系列没有接触。
我发现在国内无论在公司或高校许多地方为了加快开发周期往往把一个产品开发分为硬件和软件两个相对独立部分,由不同的人完成。
这在具有一定技术和管理基础的公司,由总设计师统一规划协调,分任务并行完成的情况下是可行的,也是符合现代产品开发规律的。
但是在高校人员的流动很大,研究生的有效科研时间很短、基础差(许多研究生起步时对电熔、电阻、三极管的分类和选型都很困难,我也是这样过来的)更不用说系统规划设计了,况且许多老板自己也不太懂,师兄有自己的任务,他们搞明白时也毕业了。
在许多高校做DSP就是找一个算法加到自己的主程序里,在板子上跑一下,基本达到效果就可以了,至于可靠性是次要的,产业化无从谈起,这已经算不错的了。
其实我觉得一个系统的完成,系统的规划是最重要的,在规划时对硬件设计的知识和认识是决定性的,它可以让你知道什么是可行的,什么是不可行的,当你同时具有软件设计能力时,就可以合理的分配系统功能,完成使用VHDL进行系统行为描述-—系统功能划分—— 系统子结构设计这样的自顶向下的设计规划流程,成为系统设计专家、项目经理,否则只是硬件工程师、软件工程师。
无论作51、196、还是DSP都是这样。
下面分别谈谈我对硬件和软件设计的感受硬件设计是系统设计的关键,国内和国外产品的差距往往是硬件设计水平高低决定的,任何软件设计思想没有可靠的物理载体都是空中楼阁,纸上谈兵。
学校的研究生很多都想避开硬件设计,对于一个全新的设计与其说不屑不如说不敢。
DSP课程设计

本科课程设计报告(2016至2017学年第一学期)设计题目:基于TMS320F28335 DSP微处理器的最小系统设计课程名称:DSP原理与应用专业名称:行政班级:学号:姓名:指导教师:赵成报告时间:2016年月日目录一、引言 (1)二、设计目的………………………………………………………..… .1三、设计要求 (1)四、总体设计 (1)最小系统硬件构成及设计思路 (1)TMS320F28335原理图及封装 (2)电源设计 (3)复位电路设计 (5)时钟电路设计 (5)JTAG仿真调试接口电路设计 (6)最小系统原理图 (6)最小系统PCB板 (7)五、总结 (8)六、参考文献 (8)一、引言DSP以其主频高、运算性能好、外设丰富等众多优点应用于工控控制、仪器仪表消费电子等领域,特别是工程领域,DSP应用极广,如电机控制器、电机设备、机床设备、过程装备等应用。
F28335资源丰富、功能强大,增加了浮点运算单元(FPU),非常适合工业控制,很多新的、强大功能的工程算法都是涉及到浮点运算的。
因此我们必须要能够搭建起系统。
TMS320F28335型数字信号处理器是TI公司的一款C2000系列浮点DSP控制器。
与以往的定点DSP相比,该器件的精度高、成本低、功耗小、性能高、外设集成度高,数据以及程序存储量大,A/D转换更精确快速等。
它采用内部 1.9V 供电,外部3.3V供电,因而功耗大大降低;且主频高达150MHz,处理速度快,是那些需要浮点运算便携式产品的理想选择。
二、设计目的能够独立的设计并运行基于TMS320F28335 DSP微处理器的最小系统;了解最小系统的硬件要求;在绘制硬件电路的同时对TMS320F28335的工作原理进行更为深入的了解。
三、设计要求1、利用Protel软件绘制并添加TMS320F28335的原理图库。
2、利用Protel软件绘制TMS320F28335最小系统的电路原理图,包括时钟电路模块,电源模块、复位电路模块、JTAG接口模块。
干货 DSP技术芯片C2000上电引导模式解析

干货DSP技术芯片C2000上电引导模式解析
DSP技术目前已经被广泛的应用在了集成芯片研发过程中,这一类新产品的出现,为工程师的电路设计工作带来了极大的革新和帮助。
C2000作为一种比较常见的DSP技术集成芯片产品,应用范围广泛,但在使用过程中却常常会出现仿真运行正常但单机程序跑不起来的情况,今天我们将会就这种问题进行详细解析。
其实就DSP集成芯片C2000而言,之所以会在调试时出现单机程序无法运行的情况,其根本原因还是因为工程师没有正确的完成C2000的引导模式设置。
以C2000Piccolo系列的引导模式为例,尽管这一系列的芯片与delfino稍微有点区别,而concerto系列的芯片在引导模式设置方面更复杂。
但是Piccolo系列是最基础的DSP集成芯片类型,理解了Piccolo的引导原理对我们在日后工作中使用其余两个系列的芯片有非常大的帮助。
首先我们需要了解的,是C2000DSP技术集成芯片的代码执行程序运行问题。
下图中,图1是C2000的芯片复位流程图,从图中我们可以看到,当芯片在接收到一个复位信号后,会到0x3FFFC0去复位向量,该复位向量跳到BootROM0x3FF75C中去执行bootloader的程序,这里主要有进入引导和选择启动模式,以及一些外设引导的函数。
选择启动模式根据芯片的硬件或软件设置来判断芯片该去哪里寻找程序入口,其直接目的是如何找到main,然后执行应用程序。
图1 DSP技术芯片C2000的复位流程图
在了解了这种C2000集成芯片的复位流程之后,接下来我们再来看一下这。
dsp毕业设计

dsp毕业设计我的DSP毕业设计是设计一个基于数字信号处理(DSP)技术的音频降噪系统。
首先,我选择了一个用于测试和实现的音频信号。
我选择了一个包含白噪声和语音信号的音频文件。
白噪声是一种包含各种频率的噪声,而语音信号是包含人类声音的信号。
这个音频文件可以模拟实际环境下的噪声情况。
为了降低噪声,我首先将音频文件输入到DSP系统中。
然后,我使用数字滤波器来滤除噪声。
我选择了一个常见的降噪算法,如Least Mean Square (LMS) 算法。
该算法可以根据输入信号的统计特性来自适应地估计和抵消噪声。
我在DSP系统中实现了一个实时滤波器,它可以将输入音频信号通过数字滤波器进行处理,并输出降噪后的信号。
为了提高系统的性能,我还实现了一个自适应滤波器,它可以根据环境中的噪声变化来调整滤波器的参数。
在设计过程中,我遇到了一些挑战。
首先,我需要选择适当的滤波器设计方法和参数。
我进行了一些研究,并使用MATLAB进行了模拟和优化。
其次,我需要实现一个实时的数字滤波器,并确保它可以处理连续的音频数据流。
为了解决这个问题,我使用了硬件加速器和高效的算法设计。
经过测试和调试,我成功地实现了这个音频降噪系统。
在测试中,我输入了不同噪声水平和语音信号的音频文件,并比较了降噪前后的音频质量。
结果显示,我的系统可以有效地降低噪声,并提高音频的清晰度和可听性。
总的来说,我的DSP毕业设计是一个基于数字信号处理技术的音频降噪系统。
通过使用数字滤波器和自适应滤波器,我成功地实现了一个可以降低噪声的实时音频处理系统。
我很满意我的设计成果,并对将来在该领域的研究和应用充满了希望。
DSP开发环境和流程的简单例程

图1-3典型的软件开发流程图
1.2.3硬件仿真和实时数据交换
TI DSPs提供在片仿真支持,它使得CCS能够控制程序的执行,实时监视程序运行。增强型JTAG连接提供了对在片仿真的支持,它是一种可与任意DSP系统相连的低侵扰式的连接。仿真接口提供主机一侧的JTAG连接,如TI XSD510。为方便起见,评估板提供在板JTAG仿真接口。
图2-2装载程序
图2-3反汇编(Disassembly)窗口
现在可以开始运行我们的程序:在主菜单中单击“Debug”,选择“Go Main”,让程序从主函数开始执行。程序会停在main()处,并会有一个黄色的箭头标记当前要执行的C语言代码。如果希望同时看到C语言代码和对应编译生成的汇编代码,在主菜单中单击“View”,选择“Mixed Source/ASM”,此时会有一个绿色的箭头量标记当前要执行的汇编代码,如图2-4所示。
此时,在浅灰色显示的汇编指令上单击鼠标,然后按F1键,CCS会对该汇编指令进行搜索并弹出帮助窗进行解释。可以利用该功能来了解不熟悉的汇编指令。
在主菜单中单击“Debug”,选择“Run”,或单击工具条图标(Run),让程序全速执行。在主菜单中单击“Debug”,选择“Halt”,或单击工具条(Halt),让程序退出运行。
工程窗口用来组织用户的若干程序构成一个项目,用户可以从工程列表中选中需要编译和调试的特定程序。在源程序编译/调试窗口中用户既可以编译程序又可以设置断点、探针,调试程序。反汇编窗口可以帮助用户查看机器指令,查找错误。内存和寄存器显示窗口可以查看、编辑内存单元和寄存器。图形显示窗口可以根据用户需要直接或经过处理后显示数据。用户可以通过主菜单Windows条目来管理窗口。
DSP初学者入门教程从零学DSPC5000C2000C6000OMAP

DSP初学者入门教程从零学DSPC5000C2000C6000OMAPDSP入门教程1、TI DSP的选型主要考虑处理速度、功耗、程序存储器和数据存储器的容量、片内的资源,如定时器的数量、I/O口数量、中断数量、DMA通道数等。
DSP的主要供应商有TI,ADI,Motorola,Lucent 和Zilog等,其中TI占有最大的市场份额。
TI公司现在主推四大系列DSP1)C5000系列(定点、低功耗):C54X,C54XX,C55X相比其它系列的主要特点是低功耗,所以最适合个人与便携式上网以及无线通信应用,如手机、PDA、GPS等应用。
处理速度在80MIPS--400MIPS之间。
C54XX和C55XX一般只具有McBSP同步串口、HPI 并行接口、定时器、DMA等外设。
值得注意的是C55XX提供了EMIF 外部存储器扩展接口,可以直接使用SDRAM,而C54XX则不能直接使用。
两个系列的数字IO都只有两条。
2)C2000系列(定点、控制器):C20X,F20X,F24X,F24XX,C28x该系芯片具有大量外设资源,如:A/D、定时器、各种串口(同步和异步),W ATCHDOG、CAN总线/PWM发生器、数字IO脚等。
是针对控制应用最佳化的DSP,在TI所有的DSP中,只有C2000有FLASH,也只有该系列有异步串口可以和PC的UART相连。
3)C6000系列:C62XX,C67XX,C64X该系列以高性能著称,最适合宽带网络和数字影像应用。
32bit,其中:C62XX和C64X是定点系列,C67XX是浮点系列。
该系列提供EMIF 扩展存储器接口。
该系列只提供BGA封装,只能制作多层PCB。
且功耗较大。
同为浮点系列的C3X中的VC33现在虽非主流产品,但也仍在广泛使用,但其速度较低,最高在150MIPS。
4)OMAP系列:OMAP处理器集成ARM的命令及控制功能,另外还提供DSP的低功耗其他系列的DSP曾经有过风光,但现在都非TI主推产品了,除了C3X系列外,其他基本处于淘汰阶段,如:C3X的浮点系列:C30,C31,C32C2X和C5X系列:C20,C25,C50每个系列的DSP都有其主要应用领域.2、设计中如何得到技术参考资料以及如何得到相关源码原则是碰到问题就去/doc/cb15462718.html 1)在TI网站的搜索中用keyword搜索资料,主要要注意的就是Application Notes,user guides 比如不知道怎样进行VC5402的McBSP编程,搜McBSP和VC5402如果不知道如何设计VC5402和TLV320AIC23的接口以及编程,搜TLV320AIC23和VC5402;这样可以搜到一堆的资料,这些资料一般均有PDF文档说明和相应的源程序包提供,download后做少许改动即可2)版上发问hellodsp 欢迎每一位有需要的提问者3)google搜4)再不济,找技术支持,碰运气了3、如何看待TI DSP庞杂的技术文档新手进行DSP开发学习之时,常常感觉技术文档太多,哪本都有用,哪本都想看,无从下手。
我的之路作文800字

我的之路作文800字篇1条条大路通罗马。
世界上有许多条路,都能到达目的地,就看你怎么选择。
路也有各种各样的不同,有的路崎岖,但它富有乐趣,有的路平坦,但他枯燥无味。
每当我们面对分岔路口时,我们总是纠结,纠结哪条路更适合自己。
走上这条路后我们时常会想,这条路是好是坏,这条路会让我们通向何方。
越走,我们越疑惑,越走,我们越不自信,但无论如何既然走了,就好好走。
每个人活在世上都有自己想走的路,有的人喜欢平坦的路,因为她们的心如一潭平静的湖水,他们不想让这潭湖水泛起波澜。
有的人喜欢那条崎岖的路,因为他们他们心中有满腔的热血,他们不甘于平凡。
但事实上没有一条路是能够永远平坦或永远崎岖的。
平坦能给以人必胜的信心,而阻碍则会给以人必胜的激励;平坦能给以人一定的鼓励,让我们再接再厉,而阻碍则会给以人一定的失落,让我们卷土重来。
它们像两股风,一左一右地吹着我们的人生之船,让我们不至于偏离正轨。
我们必须用同样的心态来面对他们,才能走对我们的人生之路。
无论你选择了那一条路,你都会走过一段最黑暗的路。
黑暗并不可怕,可怕的是走路的人没有战胜黑暗的意志,没有走向光明的信心。
尽管被黑暗笼罩着,尽管看不清前方的道路,但是心始终是明亮的。
如果哪一天你真的走进了黑暗,那就闭上眼睛吧,看看你的心,找到你心中的光,朝着那个方向走一定能够走出黑暗。
想象一下,你从一个黑暗的地方,一个黑得伸手不见五指的地方出发,带着要走到天涯海角的的决心,一直走,一直走。
走着走着,天就亮了。
这是一件多么美好的事啊。
喝完药后吃的糖是最甜的,经历过挫折后的成功才是最美好的'。
鲁迅说:“其实世上本没有路,走的人多了,也便成了路。
”如果你选择了一条没有人走过的路,那么请不要怀疑自己,路只是连接你通往你的目标的一个通道。
别人可以随波逐流,你当然也可以另辟蹊径。
崔灏有一首诗中写到:“小水长流,则能穿石。
”柔弱的水滴只要坚持不懈,尚且能击穿坚硬的岩石。
人比起水滴总要强大的多吧,只要我们心中有像水滴般坚定的意志,就没有什么困难能够阻止我们前进。
刚刚开始玩DSP,属于一个菜鸟

刚刚开始玩DSP,属于一个菜鸟。
在网上找了个关于AD采样的程序,几经修改,终于可以在板子上跑起来了。
不过,后来不管怎么优化程序,采样得到的波形总是不太如意,波形漂移很严重。
ADC.C 配置如下:for(i = 0;i<DELAY_ADC_POWERUP;i++){asm(" NOP ");}AdcRegs.ADCTRL1.bit.RESET=1;//ADC模块软件复位位,复位整个ADC模块for(i=0;i<10000;i++) {};AdcRegs.ADCTRL1.bit.SUSMOD=3;//仿真挂起模式设置AdcRegs.ADCTRL1.bit.ACQ_PS=15;//获取窗口大小AdcRegs.ADCTRL1.bit.CPS=0;//内核时钟预定标器AdcRegs.ADCTRL1.bit.CONT_RUN=0;//连续运行模式AdcRegs.ADCTRL1.bit.SEQ_CASC=1;//级联排序器操作位for(i = 0;i<15;i++){asm(" NOP ");}AdcRegs.ADCTRL3.bit.ADCBGRFDN = 3; //Power up bandgap/reference circuityfor(i = 0;i<DELAY_ADC_POWERUP;i++){asm(" NOP ");} //Delay defore powering up rest of ADCAdcRegs.ADCTRL3.bit.ADCPWDN = 1;AdcRegs.ADCTRL3.bit.ADCCLKPS =1; //hspclk/16//内核时钟分频器for(i = 0;i<DELAY_ADC_POWERUP;i++){asm(" NOP ");}AdcRegs.ADCTRL3.bit.SMODE_SEL=0; //采样模式选择AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1=1;//ESQ1中断使能位AdcRegs.ADCTRL2.bit.RST_SEQ1=1; //排序器1复位位AdcRegs.ADCCHSELSEQ1.bit.CONV00 =0x09; //ADCINB0输入通道选择AdcRegs.ADCMAXCONV.all = 0; //最大转换通道寄存器AdcRegs.ADCTRL2.bit.SOC_SEQ1=1;主函数为:#include "DSP281x_Device.h" // Headerfile Include File#include "DSP281x_Examples.h" // Examples Include File#include "IQmathLib.h"#include "pid_reg3.h"unsigned int sampling[128];unsigned int sampling1[128];int flag1=0,m=0,n1=0;interrupt void timer0(void);void main(void){InitSysCtrl();//系统初始化,主要对开门狗,时钟等模块进行初始化,以保证2812正常工作InitGpio();//GPIO的初始化函数,只和GPIO相关nitPeripherals();//外设初始化DINT;//清空INTM全局使能InitPieCtrl();//PIE初始化函数,和中断相关 IER = 0x0000;IFR = 0x0000;InitPieVectTable();//PIE中断向量表定义以及初始化EALLOW;PieVectTable.TINT0 = &timer0;EDIS;IER |= (M_INT2|M_INT1);PieCtrlRegs.PIEIER1.bit.INTx7 = 1; //Enable CPU定时器0InitCpuTimers();//CPU定时器的初始化和配置函数,与CPU的定时器相关ConfigCpuTimer(&CpuTimer0, 150, 19); //19usStartCpuTimer0();EINT; // 打开INTM 全局使能ERTM; // 允许DEBUG中断interrupt void timer0(void){AdcRegs.ADCTRL2.bit.SOC_SEQ1=1;//AD转换软件触发while(AdcRegs.ADCST.bit.INT_SEQ1==0){}AdcRegs.ADCST.bit.INT_SEQ1_CLR=1;sampling[flag1]=((AdcRegs.ADCRESULT0)>>4);flag1 ++;if(flag1==128){flag1=0;for(m=0;m<128;m++){sampling1[m]=sampling[m] ; }}CpuTimer0.InterruptCount++;CpuTimer0Regs.TCR.bit.TIF=1;//CPU定时器中断标志位PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;//PIE响应寄存器CpuTimer0Regs.TCR.bit.TRB=1;//CPU定时器重新装载位return;}程序已经调到无法再动的程度了,最终我想到了会不会是硬件电路除了什么问题(哎,这时才想到硬件出问题,真得要好好检讨啊--!)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
许久许久没有这么安静下来写点东西了,最近特别有功夫,就回忆了一下学习DSP的整个过程,我算不上会DSP只是在认真的学习罢了,我想时常有空就把我学习DSP的心得写下来,以作将来自己的一份回忆,也许无什么大的价值供大家参考,我还是会认真虚心的去写下去。
我学DSP有半年多了吧,还是不是很懂整个奥妙的专业,也许台深了也许我的知识储备还是不够吧,学习起来也说不上吃力,但还是不是那么明朗的感觉。
闲话就不多说了,我们说正题吧,学DSP其实是我的一个同学给我引的路,他是做ARM的对这个方面多少有点了解,就推荐我学DSP,在大三的暑假快结束的时候就引我见了一个导师,在DSP方面做过研究我就跟着老师学习,开始嘛自己不是了解,老师就推荐我先看TI的54系列的手册,我用了一个暑假认真的看,做了至少一本的笔记,感觉还是不够,但想想那本书其实还真的很有用的,我到显示还时常在那时做的笔记中去查找一些东西。
要说学DSP我不得不说一本学DSP人很多都了解的一本书,程佩青的《数字信号处理》,初学DSP不看这本书也许会走些弯路吧,这本书讲了很多基础的数字信号处理的知识,我现在不管在哪都会带上这本书,为什么呢?这本书讲了很多基础知识,算法从何而来,就是从那些传递函数,从那些模拟向数字转换的推导再经过MATLAB做以处理,就会得到DSP 的一些算法的数据,说的是很简单,我们大家都有这样的经历吧,别人给你好的路让你去走你会觉得没什么难的,等叫你自己去走一条别人没有告诉你的路的时候我们就知道自己的问题很多了,所以这条路不是说的那么简单。
但我想数学好的人在这方面可能会少走一些弯路,我用了一个暑假看TI手册和数字信号处理,反正到现在还是不能说自己都懂,我只认为自己都了解一点皮毛而已。
到了大四开学,我就去实验室做DSP的实验,没什么难的都是按实验书的步骤往下走就会完成预订的目标,大概用了一个星期做完了这些。
在接下来的日子感觉有点漂浮了,呵呵。
导师就给了我一个新的任务,把我做的DSP的实验的程序不管是C语言的还是汇编的都“翻译”出来,这个可够我呛的了,学C的时候还学了点大概就跟看英语一样还能马马虎虎看下去,可汇编啊,我的天哪,学单片机和微机原理的汇编时候就没怎么学,谈汇编色变啊。
没办法,自己想学就只有拿一本写有指令集的书一个对着一个慢慢的看,终于用了快一个月的时间完了。
松了一口气,可后面的路还厂呢,岂是这些就足矣的,在后面学习CMD文件。
就是关于CCS的一些知识,到此还是只会在试验箱上跑现成的程序,自己下的程序都还不会在试验箱上运行,怎么办呢?不跑怎么知道自己下的程序是不是可以通过运行呢?就找导师教我,先将CMD文件的后缀改为CMD这样就变成了CMD 文件了,在CCS中先建一个工程文件,随便你想放哪都可以,但最好要有一个文件夹,建完了就在ADD(在工程文件的下拉目录下点右键)加C文件,要是有汇编的话还要加汇编的文件,加了C语言就要加编译器,将C转换为汇编语言,当然这是机子自身的运行步骤不是我们考虑的我们只要把转换器加载进去就OK了,这个也是在右键ADD加载了,最后还有一点重要的别忘了,CMD文件还没加呢,这些做完了可以用CCS上的检验功能检验,无错的话可以生成OUT文件,这个就是运行的执行文件,大家有一点需要注意的,有时一些参数需要修改的在DEBUG中,依自己需要修改,这个现在还不是太明白,以后弄懂了在后续文章中写出来。
运行OUT文件,就要在LODE中加入这个OUT文件再运行就可以了,可以在视窗中改些参数看到自己想要得到的图形等。
以上些的比较杂,我现在在看MATLAB在数字信号处理中的应用,我想DSP就是做算法最难,而MA TLAB是做算法实现的工具,所以就抽些时间集中把MA TLAB看下,DSP也不是传说中的那么难我们只要有信心多看多做一定可以做的很好的。
好了,今天就先写这么多吧,以后在写。
这个博客中的一些文章是我转载的,希望对大家有用,我以后也会尽量加些自己写的文章。
欢迎大家常来看看,支持小弟。
要学好DSP我们有不能忽视的三门基础先修课程:信号与系统,数字信号处理和微机(单片机)。
这三门课是学DSP的基础,要想做好DSP我们要做到硬件和软件的结合,还要会设计系统,那么问题来了,硬件和软件的结合必然要求对基础知识有深刻的理解和认识(这里系统的设计我们在后面谈)。
那先说下信号与系统,信号与系统的核心思想是什么呢?就是把复杂的信号给分解了,分解成简单的信号分解成我们可以容易下手的处理的简单信号,再通过一个系统或者若干得到响应,最后将这些若干响应用同样组合的方式组合起来送到输出端,结果就会得到我们的系统响应。
细点说,时域分析,时域分析是把信号分解后分别乘上单位冲击响应(即把信号分别通过单位系统),再把得到的响应累加求和就会得到时域的响应(单位冲击响应移位加权和),为什么说是累加求和呢?线性积分就是求和很多因子的求和这里也是同样的道理。
再说频域分析,频域分析是把信号分解成若干不同频率的正弦信号再通过系统然后累加求和。
思路跟上面一样,总的来说信号与系统的思想就是把复杂的信号分解成简单的信号,分别通过系统,但后累加求和(积分)得到我们需要的响应。
说到信号与系统不能不提到傅立叶变换,傅立叶变换是信号与系统的工具,通过它才可以得到系统变换,下面几个需要记下,正余弦函数的指数表示,欧拉公式(重点),周期函数的傅立叶级数的展开,傅立叶变换对,一些常用函数的傅立叶变换需要记住(正余弦,指数,常数,冲击响应,,,,),单位冲击序列的傅立叶变换尤其需要记住这是DSP后面处理函数的核心内容,F[δ(t-nT)]=w。
Σn=-∞∞δ(w-w。
)=w。
δw。
(w).这里说下数字信号处理,数字信号处理主要处理的是离散信号,离散时间信号尽管在时间上是离散的,但在幅度上仍然是连续变化的,因此仍然是模拟信号,只有经过量化器,也就是将各离散时间点上的信号幅度归并到有限的若干个电平上,并用数字来表示时,才称其为数字信号(digital signal).实际上,任何序列都可以表示成δ[n]的移位加权和,这是一个非常重要的概念,因为我们在讨论信号通过系统的时候,只需要讨论单位数字冲激通过系统的响应,即单位冲激响应,然后将系统对各移位的冲击的响应叠加,就得到系统的输出。
这个思想和信号与系统的处理思想是一样的,整个一部信号与系统的理论就是建立在对信号的不同形式分解,然后再综合的基础上的。
数字信号处理中有两个比较重要也比较基础的冲激响应系统:有限冲激响应系统(FIR,Finite Impulse Response);无限冲激响应系统(IIR, Infinite Impulse Response);也有两个比较基础的变换:Z变换和傅立叶变换。
下面是时域和频域的对应:时域的连续非周期信号←→频域连续非周期谱(FT)时域的周期信号←→频域离散谱(FST)时域的离散信号←→频域周期谱(DTFT)时域的离散周期信号←→频域离散周期谱(DFT)在DFT中,变换的两边都是离散的,从而才是真正能用计算机来做数字信号处理的变换对。
两边都是周期的,从而处理可以只在一个周期内进行,这有两个重要的意义,一是所做的处理是有限的(这对计算机来说是必须的);二是只在一个周期内就可以保留全部的信息(这对准确的处理来说是必须的);在现实工程中我们遇到的信号往往是连续的非周期的,为了进行DFT,就必须将其离散(抽样)周期化(周期延拓)。
在信号的采样的时候要遵循奈奎斯特准则,奈奎斯特抽样频率fS=1/T=2fm(即不失真的最低采样频率);奈奎斯特抽样间隔T=1/2fm(即不失真的最大采样间隔),由于理想低通滤波器是不可实现的,所以实际上的低通滤波器都有上升时间和下降时间,因此工程上往往采用fS›2.5~3 fm.采样后的信号,时间上是离散的,但幅度仍然是连续的,还不是真正的数字信号,必须对其幅度做量化,即将离散时间点上的幅度归入有限数目的等级。
关于微机原理的知识自己学的不是太好,也不知道怎么说起就不说了。
我想还是多看看书会有帮助的。
前面(一)说了截至到现在我的大概学习过程,(二)说了信号与系统,数字信号处理的知识。
这个篇章我想说说DSP的硬件结构。
DSP的硬件和软件以及系统设计称为DSP的三大部分,我觉得这部分内容还是比较有用的。
说DSP的硬件结构不得不说起它的CPU结构,世界上的CPU结构从上个世纪四十年代起CPU发展的时候就分为两大种类,一种是冯•••诺依曼结构(V on Neuman);另一种是哈佛结构(Harvard);冯•••诺依曼结构主要用于通用的处理器中,而哈佛结构主要用于DSP处理器中。
两个结构的构成见下图(1):从上图可以显而易见的看出哈佛结构可以做并行处理,可以减少处理时间。
有两中指标可以表示处理器的处理速度:MIPS与MFLOPS。
MIPS--(million instruction per second),每秒百万次运算MFLOPS――(million floating operation per second),浮点运算多少次每秒现在市面上32的处理器可以达到90亿次浮点运算/秒(9000MFLOPS)DSP的处理器可以进行流水作业(pipeline),一个数据从取指到存储需要经过取指(指令,例如加法),译码(编程机器语言,含有数据的地址),寻址,取数,运算,存储这六个步骤,流水作业可以让他们在单周内完成,怎么讲呢?举个例子就是说DSP处理器进行的是并行的处理,可以在一个周期内同时进行第一条数据的寻址,第二条数据的译码,第三条数据的取指,依次类推理解这个概念就不难了。
这里需要理解的是单周期,不说说一个数据可以在一个周期内进行完所有的步骤而是一个相对概念,可以一个周期内同时处理不同数据的不同步骤。
DSP处理器中用两个通用处理器没有的东西,是什么呢?1,独立的硬件乘法器:在卷积,数字滤波,FFT,相关,矩阵运算等算法中都有ΣA(k)B(n-k)一类的运算大量的重复乘法和累加。
通用计算机的乘法是用软件实现的,当然需要若干个周期;DSP用硬件乘法器,用MAC指令(取数,乘法,累加)在单周期内完成。
2,独立的DMA总线与控制器:当然通用的计算机中也有DMA也不占用CPU资源但它是公用的不是独立的。
取数是从总线上取的是从存储器中取的,虽然现在的时钟频率很高,但你要从总线上取数就要占用总线的时间,CPU的数据也是从总线上收发的,总线的时间占用了CPU只能暂时的挂起,等于变相的占用了CPU的资源。
运算速度的快满取决于数据的吞吐量,有了硬件乘法器和独立的DMA 总线与控制器,可想了DSP的处理速度会加快很多。
有一组或多组独立的DMA总线与CPU 的程序,数据总线并行处理,在不影响CPU工作的条件下,DMA目前已达到800Mbyte/s。