
有些资料可供你参考:
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动态范围为20log(最大的数/最小的数)=16676dB 这样大的动态范围使得我们在编程的时候几乎不必考虑乘法和累加的溢出,而如果使用定点处理器编程,对计算结果进行舍入和移位则是家常便饭,这在一定程度上会损失是精度原因在于定点处理处理的信号的动态范围有限,比如16位定点DSP,可以表示整数范围为1-65536,其动态范围为20log(65536/1)=96dB对于32定点DSP,动态范围为20log(2^32/1)=192dB,远小于32位ieee浮点数的16676dB,但是,实际上192dB对绝大多数应用所处理的信号已经足够了
由于AD转换器的位数限制,一般输入信号的动态范围都比较小,但在DSP的信号处理中,由于点积运算会使中间节点信号的动态范围增加,所以主要考虑信号处理流程中中间结果的动态范围,以及算法对中间结果的精度要求,来选择相应的DSP另外就是浮点的DSP更易于编程,定点DSP编程中程序员要不断调整中间结果的P,Q值,实际就是不断对中间结果进行移位调整和舍入
DSP与RTOS
TI的CCS提供BIOS,ADI的VDSP提供VDK,都是基于各自DSP的嵌入式多任务内核DSP编程可以用单用C,也可以用汇编,或者二者结合,一般软件编译工具都提供了很好的支持我不想在这里多说BIOS,VDK怎么用这在相应的文档里说的很详细我想给初学者说说DSP的RTOS原理用短短几段话说这个复杂的东西也是挑战!^_^
其实DSP的RTOS和基于其他处理器的通用RTOS没什么大的区别,现在几乎人人皆知的uCOSii也很容易移植到DSP上来,只要把寄存器保存与恢复部分和堆栈部分改改就可以一般在用BIOS和VDK之前,先看看 *** 作系统原理的书比较好uCOS那本书也不错
BIOS和VDK其实是一个RTOS内核函数集,DSP的应用程序会和这些函数连接成一个可执行文件其实实现一个简单的多任务内核并不复杂,首先定义好内核的各种数据结构,然后写一个scheduler函数,功能是从所有就绪任务中(通过查找就绪任务队列或就绪任务表)找出优先级最高的任务,并恢复其执行然后在此基础上写几个用于任务间通信的函数就可以了,比如event,message box,等等
RTOS一般采用抢先式的任务调度方式,举例说当任务A等待的资源available的时候,DSP会执行一个任务调度函数scheduler,这个函数会检查当前任务是否比任务A优先级低,如果是的话,就会把它当前挂起,然后把任务A保存在堆栈里寄存器值全部pop到DSP处理器中(这就是所谓的任务现场恢复)接着scheduler还会把从堆栈中取出任务A挂起时的程序执行的地址,pop到PC,使任务A继续执行这样当前任务就被任务A抢先了
使用RTOS之后,每个任务都会有一个主函数,这个函数的起始地址就是该任务的入口一般每个任务的主函数里有一个死循环,这个循环使该任务周期地执行,完成一部分算法模块的功能,其实这个函数跟普通函数没任何区别,类似于C语言中的main函数一个任务创建的时候,RTOS会把这个函数入口地址压入任务的堆栈中,好象这个函数(任务)刚发生过一次中断一样一旦这个新创建任务的优先级在就绪队列中是最高的,RTOS就会从其堆栈中d出其入口地址开始执行
有一个疑问是,不使用RTOS,而是简单使用一个主循环在程序中调用各个函数模块,一样可以实现软件的调度执行那么,这种常用的方法与使用RTOS相比有什么区别呢其实,使用主循环的方法不过是一种没有优先级的顺序执行的调度策略而已这种方法的缺点在于,主循环中调用的各个函数是顺序执行的,那么,即使是一个无关紧要的函数(比如闪烁一个LED),只要他不主动返回,也会一直执行直到结束,这时,如果发生一个重要的事件(比如DMA buffer full 中断),就会得不到及时的响应和处理,只能等到那个闪烁LED的函数执行完毕这样就使整个DSP处理的优先次序十分不合理而在使用了RTOS之后,当一个重要的事件发生时,中断处理会进入RTOS,并调用scheduler,这时scheduler 会让处理这一事件的任务抢占DSP处理器(因为它的优先级高)而哪个闪烁LED任务即使晚执行几毫秒都没任何影响这样整个DSP的调度策略就十分合理
RTOS要说的内容太多,我只能讲一下自己的一点体会吧
DSP与正(余)弦波
在DSP的应用中,我们经常要用到三角函数,或者合成一个正(余)弦波这是因为我们喜欢把信号通过傅立叶变换映射到三角函数空间来理解信号的频率特性信号处理的一些计算技巧都需要在DSP软件中进行三角函数计算然而三角函数计算是非线性的计算,DSP并没有专门的指令来求一个数的正弦或余弦于是我们需要用线性方法来近似求解
一个直接的想法是用多项式拟合,这也正是大多数DSP C编译器提供正余弦库函数所采用的方法其原理是把三角函数向函数空间{1,x,x^2,x^3}上投影,从而获得一系列的系数,用这些系数就可以拟合出三角函数比如,我们在[0,pi/2]区间上拟合sin,只需在matlab中输入以下命令:
x=0:005:pi/2;
p=polyfit(x,sin(x),5)
就得到5阶的多项式系数:
p =
000581052047605 000580963216172 -017193865685360
000209002716293 099969270087312 000000809543448
于是在[0,pi/2]区间上:
sin(x)= 000000809543448+099969270087312x+ 000209002716293x^2-017193865685360x^3+
000580963216172x^4+000581052047605x^5
于是在DSP程序中,我们可以通过用乘加(MAC)指令计算这个多项式来近似求得sin(x)
当然如果用定点DSP还要把P这个多项式系数表用一定的Q值来改写成定点数
这样的三角函数计算一般都需要几十个cycle 的开销这对于某些场合是不能容忍的
另一种更快的方法是借助于查表,比如,我们将[0,pi/2]分成32个区间,每个区间长度就为pi/64,在每个区间上我们使用直线段拟合sin曲线,每个区间线段起点的正弦值和线段斜率事先算好,存在RAM里,这样就需要在在RAM里存储64个
常数:
32个起点的精确的正弦值(事先算好): s[32]={0,sin(pi/64),sin(pi/32),sin(pi/16)}
32个线段的斜率: f[32]={0049,}
对于输入的每一个x,先根据其大小找到所在区间i,通常x用定点表示,一般取其高几位就是系数i了,然 后通过下式即可求出sin(x):
sin(x)= sf
这样一般只需几个CYCLE就可以算出正弦值,如果需要更高的精度,可以将区间分得更细,当然,也就需 要更多的RAM去存储常数表
事实上,不仅三角函数,其他的各种非线性函数都是这样近似计算的
1. 接触DSP
在参加过一次社会上多的尽乎到了泛滥地步的"DSPxxx"培训班之后,我"自信"已经具备DSP工师资格,便欣喜若狂跑道书店买了一本名为"DSP xxx应用"的书,作者叫xxx,并且是这个领域的牛人,这本书确实是很出色的书籍但是当时,对于我这个对DSP一窍不通、刚刚入门的人来说却建立了一个错误的概念——DSP是个很容易的领域,只要培训一下,再稍微看看书,就可以成为专家所以,现在看来,这些都是误导,我认为学习DSP技术应该分为两个阶段,第一阶段学习DSP技术基础概念;第二阶段学习DSP技术的行业应用那本"DSP xxx应用"的书,它更适合书名应叫做"DSP中的数学或物理运用"什么的
2. 购买DSP学习套件
有了兴趣,就要去学习,于是我撺掇领导批准购买了DSP学习入门套件(DSK),许多公司均有销售,如TI等,大概是需要3000-4000人民币买后不久,我就发现,这种套件对于我来说一点用处都没有因为我的基础知识实在是太差了这些套件对于我来说,只是另一种涵义的PC机及一些外围设备,想要懂的这些东西,我就需要去读更多的相关书籍,这时,很难没有想要放弃的念头,我开始有点畏惧DSP这种技术,门槛太高了可是,我不能放弃,我已经投入了许多的金钱和时间,我不想丢掉这4000元钱,也不能对领导没有交待事实上,我没有想到,我将付出更多的钱和时间去学习
3. 再次参加培训班,再次购买DSP书籍
在我就感到了无助,困惑之际我又想到了放弃虽然我的数学还算不错,但其中遇到的一些问题在我思考后,还是无法解决,我越来越畏惧DSP了于是,我开始在"google"上搜索DSP培训相关的信息,终于发现闻亭公司"DSP培训中心"的教程和内容正是我一直寻找的东西也许是DSP技术对我的有着巨大的诱惑力,也许是我的之直着,我又一次勇敢的报名参加了培训32个课时之后,解决了我半年多来积累的很多粗浅的问题再翻开培训教材刚刚复读了第一章时,我想如果这本教材是我读到的第一本书,并且我没有花4000元买那个可的学习套件,我会毫不犹豫的投降,放弃学习DSP,但那个可的xxx作者,他的书怎么可以用作教学呀他的书虽然让我对DSP产生了浓厚的兴趣,却把我引到了一条艰难的路上,而且花了那么多的冤枉钱既然事已如此,我只有慢慢的去读这些书籍,在我读到教材的后面章节以后,我开始明白前面章节的内容,所以当你读书遇到不明白的时候,千万不要气馁有时,一个内容,可能需要读上几遍,才能明白,这比一开始的感觉要好的多了
4. 实验——至关重要的一步
现在,从你的架子上取下那套DSK,去尝试做一些小实验,我的第一个实验是"正弦发生器",这个实验比较简单,但是它也花费了我几周的时间去读大量的关于串口、编码、寄存器等的书并且进行大量的实验这个执行半小时的"正弦发生器",让我查阅了恨不得够组建一个图书馆的书籍,而且这个东西没有任何用途我是用汇编语言在54x中执行,这个实验让我很好的理解了什么是DSP,什么是McBSP, DMA, 等当然问题也同步产生了,我就又不得不做了许多的实验去验证我建议,在系统未定型之前,使用mathlab/simulink进行仿真,并且可以多实验几种芯片,这样可以让你明白更多的内容我觉得我就要成为一个真正的DSP工程师了,我度过了最困难的时期我觉得自己是个英雄,嘿嘿
5. 去寻找一份与DSP相关的工作,去当个DSP工程师
我希望困难已经过去,但这种愿望为时过早了在DSP的研究中,我还遇到了很多的困难,由于篇幅有限,我就不在进行描述了反正,如果想成为真正的DSP专家,就不要期望事情会变得容易有些DSP开发人员并不知道什么是真正的0和1,他们只会查阅各种参考书籍和参数表,我们并不提倡这种做法因为这些人选择了一种简单的做法,但是他们并不是真正的DSP开发人员他们只是编写一些他们不理解的代码,他们似乎在担当着一台"编码器"的角色
6. 总结
这篇文章只是我的一点感慨,可能并不是很适用现在的DSP开发工程师,因为,市面上已经有了供你学习的DSP教学套件,搭配了多种实验供你参考,轻松入门,如:闻亭公司的"大学实验箱"什么的这个实验箱提供了一个很好的实验环境,并且为初学的你设计了多种实验、教材,让你由浅入深的学习不会向我似的,绕一大圈才走到正确的路上另外,你也可以向他们的工程师咨询
DSP是一个针对广告主的应用平台,管理广告主的投放预算和计划等,ADExchange是广告交易平台,对接SSP和DSP的,其中ssp是媒体资源的管理平台,我们要做的就是管理广告主的需求,同时和整个广告投放过程中的其他资源做好数据对接。其中有财务的、需求的等等。
我们在做产品的过程中,最好从宏观和微观两个角度来考虑,宏观上,我们目前做的这个产品在大的业务线中处于什么位置,能为这条线带来什么价值;微观上,我们这个产品目前能提供的具体功能是什么
不知道你本科做了些什么,基础如何。DSP算法关键在于移植和优化,一般来说,做DSP的分为算法工程师、应用工程师,底层驱动集成工程师等等。你这种情况基本是成型的算法拿来用就行了。至于数学也没必要懂的很多,只有会阅读源码,理解算法的数据流就够了。其实不用担心,菜鸟学好基础,不用怕的。没必要c2000学习,直接拿板子上手就行
看函数的名字,貌似是在往端口写数据,然后定义一个status的变量,一个延时,之后的循环一直在轮询,就是等待端口完成某些 *** 作,你应该看看中断里面执行了什么 *** 作,因为这里很明显,c_addr这儿在不断轮询过程中会发生变化。最后把数据值付给了端口。
导语:拍照手机排行榜,拍照手机哪个好?在这个颜值担当的时代,一款手机如果没有过硬的拍照能力都不好意思说自己是智能手机,手机拍照功能也就成了智能手机必备功能之一。现在市面上的手机品牌有很多,哪一款在拍照方面好一点呢?下面和我一起来看看吧!
NO1 vivo X9s
vivox9s(前置2000万柔光双摄,1600万后置摄像头,人像双摄虚化,全新柔光灯,知性美颜35)
vivo X9s的前置双摄配备了 2000万的双摄传感器,还配备了暗光条件下还原摄影棚灯光的全局柔光灯和知性美颜35的软件优化。
2000W高清加背景虚化传感器,人像还原要清晰准确些,背景层次要分明些,配合vivox9s新的知性美颜功能,颜值呈现的要自然白皙些。在暗光条件下的全局柔光灯有相对柔和的补光效果。
后置拍摄上,vivox9s搭载了1/28英寸的1600W传感器,搭配透光相对更好更耐刮的蓝宝石镜片,再加上PDAF快速对焦,以及新的优化算法,vivoX9s的后置拍摄的体验相对要好些,景象记录要准确清晰些,层次感相对要好些,色彩饱和度准确,没有出现偏色情况。
NO2 vivox9splus
vivox9splus(前置2000万柔光双摄,全新智能优化算法,DSP影像芯片优化技术,知性美颜35)
vivox9splus前置采用了全新设计的2000万双摄单元,后置上搭载了新的1/28英寸的高清1600W传感器,升级的`拍照软件算法,还搭载了DSP相片优化技术、双摄模式、智能拍摄等技术。
在软件上,DSP影像芯片优化技术,知性美颜35技术等技术的优化和搭载,提升了vivox9splus的拍摄体验。
vivox9splus首次加入了DSP影像优化拍照技术,提升拍照算法运算能力,可以快速完成十帧多帧合成,拍照基础画质有所提升,在逆光、暗光、抖动等拍照场景下,都有不错的画质表现。
前置双摄模式,主摄像头取景,辅摄像头背景虚化。在保证了画质的基础上,让画面的层次感得到了一定提升。
NO3 vivo X9
vivo X9采用2000W+800W的前置双摄配置,搭载vivo 与索尼共同研发的IMX376传感器,X9的拍摄物理光圈达到了F20超大光圈,通过硬件和技术的优化使电子光圈达到了F095的超大光圈,从而形成了F095-F16的光圈排序。
后置摄像头,vivo X9采用的是搭载imx278传感器的1600W高清摄像头。
NO4 vivo Xplay6
Xplay6后置采用了1200W+500W双镜头设计,主镜头负责取景,副镜头负责景深虚化,前置摄像采用了一个1600W的摄像头。Xplay6的主镜头使用了IMX362,单位像素尺寸14μm,光圈F/17,支持4轴OIS光学防抖,以及全像素双核对焦,相当于后置摄像头拥有了2倍的感光单元,极大的提升了暗光条件下的感广度。
NO5华为P9
华为P9在拍照上采用了黑白+彩色双摄像头设计,通过黑白摄像头增强拍摄效果,并且搭配了徕卡SUMMARIT镜头,加上新的照片算法,在拍照画质上确实有很大提升。
NO6 Iphone7和Iphone7 Plus
iphone7系列增加了人像拍照功能,自动识别人脸,勾勒出背景进行后期虚化,模拟单反相机中的大光圈效果。
iphone 7使用的是1200W广角镜头,光圈由F22提升到了F18,使其在夜间拍照的性能得到了提升。
NO7三星s7 Edge
S7后置配备了1200万像素,前置搭载500万像素。三星在S7 edge上首发搭载了IMX260传感器,有效像素为1200万像素,相较前作,S7 edge的感光元件尺寸降到了14μm,光圈则增大到了F17,以降低总像素的方式提升拍照画质,也就是说在暗光条件下,S7 edge将获得更好的拍照效果。
NO8华为mate9
华为Mate 9后置摄像头采用1200万像素彩色和2000万像素黑白双摄像头配置组合,支持OIS光学防抖技术,F22大光圈,快速混合对焦技术。
华为Mate 9在镜头方面进行了不小的升级,双镜头达到了专业级2倍双摄变焦。前置摄像头,华为Mate 9搭载前置800万像素摄像头,F19光圈,支持自动对焦技术,自拍的功能方面也是支持暗光自拍,笑脸抓拍及长按指纹拍照等特色功能。
以上就是关于求DSP学习建议全部的内容,包括:求DSP学习建议、如何做DSP广告系统_dsp程序化广告、初学DSP,比较困惑,求高手点拨等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)