jicheng0622

基于Cortex-M4的飞思卡尔Kinetis的DSP功能

0
阅读(9320)

 

    当今各种处理器主频疯长和硬件资源的不断改进完善,使各种复杂算法的实现成为可能,从而也大大扩展了复杂算法的应用领域。因此,一款处理器的数字信号处理能力也成为衡量其性能的灰常重要的一个指标,我们在芯片选型的时候也常把DMIPS,MFLOPS等衡量计算处理能力的参数作为关键因素,甚至在一些对信号处理能力要求苛刻的项目里,成为决定因素。(注一下,呵呵,省得大家再去谷歌百度了:DMIPS为每秒百万次整数运算指令,MFLPS为每秒百万次浮点运算指令,对我们这些搞单片机的人来说,这两个参数希望记住了)

    说完大方向了,呵呵,咱再转向小方向,在嵌入式领域,对于信号处理的要求已经从专用处理器转向了混合微控制器。人们往往期望一款片子在能够提供出色的数字信号控制的同时,又能为有效地进行其它处理操作提供灵活性。因此在去年二月份,ARM公司发布了为数字信号控制,就是我们传说中的DSC,提供解决方案的Cortex-M4核,在低功耗的数字信号微控制器领域占有了领先地位,在这里不得不对ARM的敏锐的市场定向和商机的捕捉赞一个。

    简单的说,M4相当于M3+DSP指令,呵呵。如果用一句官方对cortex-M4的说法,就是”Cortex-M4处理器完美融合了高效的信号处理能力以及Cortex-M 系列处理器诸多无可比拟的优势,包括低功耗、低成本和易于使用,旨在满足那些新兴的、灵活多变的解决方案的需求”,够官方吧,呵呵。Cortex-M4核具有一个单时钟周期乘法累加(MAC)单元、优化的单指令多数据(SIMD)指令、饱和运算指令和一个可选的单精度浮点运算单元(FPU),因此我们说其为简单的DSC也不为过。

    话完了ARM下面改FSL了,晕,敢情给这俩公司做广告了,哈哈。ARM发布M4核没多久,紧接着飞思卡尔6月份就发布了业界首款针对Cortex-M4的Kinetis系列MCU,行动够迅速的了,呵呵。90nm的工艺,最高150MHz的主频,丰富的外设等等,造就了Kinetis。目前在Kinetis家族的7个成员之中(明年要加Kinetis X了,我有一篇提到过,呵呵),K10,K20,K60,K70有可选的单精度浮点运算单元。下面简单说说Cortex-M4的DSP的一些特点,注意了,又要上图了,呵呵~

    图一,Cortex-M4的内核架构,其ARMv指令集为ARMv7E-M,注意了,这可不是咱口中老说的ARM7,指令集和内核不是一回事啊,呵呵。

   (1) 对数字信号处理来说,饱和算法是很重要的一个功能(没听过饱和算法的可以到谷歌一下,呵呵,要恶补啊),上图,从左到右为原始波形信号,标准CPU算法(瞧瞧,完全失真了,这就是因为饱和之后溢出造成的运算错误,以致于严重失真),带有饱和算法的dsp指令(可以看出来,溢出部分顶多被滤掉,其他部分正常)。看出效果来了吧,呵呵,咱的Cortex-M4核当然属于第三种,厉害吧,哈哈~

   (2)Cortex-M4核支持的数据类型,定点数据M4支持8位、16位、32位和64位,浮点数据支持8位、16位、32位。

   (3)Cortex-M4核支持的部分DSP指令,包括饱和指令(上面提到的)、乘加指令(MAC,单周期哈)、单指令多数据指令(SIMD)。

   (4)算法支持上,包括滤波算法(最常用的FIR,IIR算法了),域之间的转换(频率到时域,时域到频率等,FFT,DCT等),闭环控制等等。

    当然这些特点介绍完了,大家最关心的就是怎么用它了,呵呵,这个放心,Cortex-M4处理器得到Cortex微控制器软件接口标准(CMSIS)的完全支持,同时ARM公司正在对CMSIS进行扩展,将加入支持Cortex-M4扩展指令集的 C编译器(对我们广大C的爱好者是一个福音啊,呵呵,毕竟汇编虽然在优化性上会好些,不过太难记了),而且ARM也在完善一个DSP优化库,其中包含数字滤波算法和其他基本功能,例如数学计算、三角计算和控制功能等。数字滤波算法也将可以与滤波器设计工具和设计工具包(例如MATLAB和LabVIEW)配套使用,当然这都是后话,具体应用我也没有实际用,所以无法给大家太多的借鉴了,在这方面期待高手的解答和分享,哈哈~

    不过最后要说的是,Cortex-M4虽然带有DSP扩展指令集,不过它只具有简单的DSP特点,比那些功能强大的专用DSP片子差距还是灰常大的,不过毕竟市场定位不一样,咱也不能太期望它给咱们太大的DSP享受,那些对DSP功能要求敏感的项目,这款片子不是好的选择,不过对一些简单的电机控制类而且对成本敏感的项目,注意了哈,这个该是不错的选择吧~

    附件为前几天IAR公司发过来的一篇关于基于Cortex-M4的Kinetis的DSP设计文档,里面介绍的比我说的丰富些,是全英文的(哎,英语的重要性又体现出来了,呵呵),不过只是part1,另一部分part2没有,等我找到了会再传到这篇博客里或者另起一篇,貌似part2会是一篇电机驱动的DSP应用实例,呵呵,期待吧~ 

    最新添加(2011.12.24)IAR官方的基于Cortex-M4的DSP设计文档part2部分(以电机驱动为例分析了M4的DSP应用),这下全了part1+part2,这是一套完整的DSP设计方案,有兴趣的可以看看。