DSP与STM32大PK
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
DSP与STM32⼤PK
1.FPGA:是可编程逻辑阵列,常⽤于处理⾼速数字信号,不过随着科技的发展,现在很多FPGA CPLD可以集成mcu内核,甚⾄具备了ARM DSP的功能
2.ARM,是⼀类内核的称谓,就像51⼀样,具体到芯⽚的话,会有很多不同的⼚家不同等级,诸如三星、易法、飞利浦、摩托罗拉等等,其中STM32是易法半导体的⼀款⾯向⼯
控低功耗内核为Cortex M3内核的ARM芯⽚
3.DSP顾名思义就是数字信号处理,⼚家主要是德州仪器(TI)主要⽤于数字型号处理等对运算速度有特殊要求的场合,诸如⾳频视频算法,军⼯等领域,但同时dsp有
2000 5000 6000等系列也可满⾜不场合需要
1.FPGA⼀般不会⽤来做复杂的系统,只⽤来做些简单的系统如状态机实现的⾃动售货机...展开>等,多少还是⽤来做信号的⾼速变换和处理,毕竟它只是可编程逻辑阵列。
2.ARM和DSP就各有千秋了;
ARM的系列从V3 V5 V7 V9 XSCALE,从thumb指令到arm指令(thumb arm也可同时实现),可以说遍布机会所有的领域,只要你接的价格可以接受(其实许多arm并不是很贵的),
单⽚机所有的功能基本他都能实现,我就不⽤举例⼦,特别是现在与各种RTOS结合更是开发⽅便功能强⼤。
DSP相对arm价格要贵些,这也是可能个体⼚家使⽤较少的⼀个原因吧,2000系列主要⽤于⼯控特别是2812这个⽤的⼈⽐较多,5000 6000主要⽤于⼿持设备、PDA、通信等领
域;
DSP还有⼀个特⾊就是对⼀些特殊算法的⽀持如快速福利叶变换等,所以对运算速度有特殊要求的场合⼀般会选择DSP;
DSP因其性能和功能⽐较好,还⼴泛⽤于军⼯领域!
关于DSP和普通51 AVR还有STM32的区别
DSP是为运算⽽⽣的,他最强⼤的地⽅就在与它的数**算性能,那是由它的指令集⽀持的。
那些拿DSP和STM32⽐较的,省省吧,如果你两者都熟悉你就知道根本没啥好⽐
的,
如果我需要很多⾼级的接⼝,⽐如以太⽹和USB,那么我⾃然选STM32,如果我需要实现⼀些算法,那肯定会选DSP。
如果你对运算速度不敏感,反正72M的速度已经⽐原
先快很多了,那当然是看你熟悉哪个,哪个价格⽐较好,⽀持⽐较好。
从51 AVR到DSP最⼤的障碍
1、应该是编译环境吧,TI的DSP都⽤的是CCS,CCS界⾯和原先IAR区别不是⼀般的⼤,⽐如程序导⼊,⽐如观察变量,⽐如烧写FLASH。
恩,是的。
⽤过了IAR那种傻
⽠化的操作了之后,真是怎么弄怎么别扭,CCS真是太不友好了。
但是没办法,IAR他们是专门做编译软件的,TI主要是做DSP的,TI也意识到这个问题了,所以现在推出的
CCSV4好像在这⽅⾯有很⼤的加强。
不过⽹上还是CCS3.3的资料最多,⼤家也熟悉,如果刚接触还是先⽤CCS3.3为好。
如果你⼿头有快,那⾥⾯应该有对这些操作的详细说明。
所以这个慢慢应该也可以熟悉。
2、库⽂件。
TI的库⽂件都是联合+结构+位域的形式。
对这些结构不是⾮常熟悉的话可能看着有点晕,这个只能慢慢去看C的书。
最纳闷的可能就是它的地址映射,如何把寄
存器映射到相应的地址,那是它由编译器来⽀持的主要通过#PROGRM来实现,可以去看看它的CMD⽂件
3、CMD,CMD⽂件可能是⼊门最⼤的⼀个坎了,单⽚机或者根本就没这么⼀说,这破东西到底啥⽤呐?CMD⽂件主要作⽤就是⽤来做内存分配,你的芯⽚⾥⾯有FLASH
有RAM有BOOT ROM,你编写的程序有代码,要烧到FLASH中,有全局变量要存到RAM的全局变量区域,有局部变量,要存到堆栈中。
CDM⽂件其实就是把你代码中的这些⼀
块⼀块的东西和具体的硬件存储对应起来。
你可以随你需要任意来配置,⽐如我有⼀个数据表格,普通的单⽚机你定义好了之后会有编译器来帮你存放到⼀个地⽅,但是DSP⾥
⾯你可以通过配置CMD把它放在你认为合适的地⽅。
再⽐如堆栈空间的⼤⼩,以前从来没关⼼过堆栈⼤⼩,但是开辟的太⼤的话可能浪费内存空间。
当然,每个芯⽚都有⼀个标
准的CMD⽂件,初学者完全可以不⽤去修改它。
4、⽂档。
TI的⽂档包括数据⼿册和外设指南,很多⼈说很乱,不像其它芯⽚,所有外设的资料都会放在⼀起,但是TI会每个外设弄⼀个。
这就要说说TI的外设,它的外设都
⾮常专业,是的专业。
⽐如它的PWM外设,叫ePWM,也就是增强型的PWM,这个外设可以轻松输出⾮常复杂的PWM波形,⽽且不⽤CPU参与。
所以它的外设指南有100多
页,你会发现很多外设都是这样,⾥⾯有很多很多增强的功能,相对应的它的说明⽂档也就⾮常长。
要是全部都集合在⼀起那就会⾮常的⼤。
⽽且它的每个外设都是有独⽴版本
的,⽐如ADC,已经从0版到3版,⽽ePWM还是1版,分开之后升级的维护会⽅便很多,很多外设在类似的芯⽚都是⼀样的。
⽤STM32的时候我从来没看懂过它的库,甚⾄都没仔细看过它的⼿册。
但是最后也搞出来了,完了之后我对这块芯⽚没多少熟悉的感觉。
但是⽤C2000系列的DSP的时候则
要反反复复的去看外设指南,分析⼿册上给出的结构,让我对芯⽚⾮常熟悉,再加上它的编译环境是完全可以配置的,我甚⾄都知道我某个变量会在哪个地⽅。
⼯业控制与⾃动化,这个按21IC的⽹友说:“那是万精油”⾯很⼴。
!
芯⽚只是个躯壳。
重要的是专业知识和算法。
TI的DSP 性能质量稳定可靠。
让你⽤的放⼼。
⽽STM32,有许多未知的因素,⽐如BUG,可靠性等等,如果楼主的产品价钱利润⾼,当然使⽤TI的DSP或者MICROCHIP的DSPIC.咱们不⽤太担⼼芯⽚的质量问题,
芯⽚的BUG/抗⼲扰等等。
TI的DSP有些地⽅做的⽐STM32专业好多。
例如可靠性,TI的DSP的许多寄存器有写保护功能,因此对某些从引脚等⼲扰芯⽚内部寄存器/改写内部寄存器等严重问题,会有
很⼤帮助。
但是STM32没有这个功能。
还有TI在DSP在电机控制控制⽅⾯做得很专业,PWM部件的功能,⽐如死区,输⼊保护,PWM脉冲的特殊波形等⽅⾯都有独到的地⽅。
⽽STM32 还是显得⽐较嫩。
TI多年前都专门有虚拟浮点库给定点的DSP使⽤。
也是最找出浮点DSC的⼚家。
28335⽐STM32F4早了3-4年推出市场。
⽽且TI 还出了⼀个芯⽚内包括两个核⼼:ARM7/CM3+DSP的控制器。
还有多通道同时采样转换的ADC , TI在医学/电⼒与新能源⽅⾯的应⽤等都可以看出 TI⽐ST公司专业很
多。
更知道咱们需要什么。
但对于咱们使⽤者来说,如果是中档路线或民⽤的⼯业产品,或者对成本⽐较敏感的产品,当然要STM32之类的了。
作为⼯程师,可以快速使⽤多种芯⽚,这个是必须的。
⽤STM32的好处是,芯⽚可以前后呼应,有ARM7,ARM9, CORTEX-M/A等等。
⼀系列的产品。
从低到⾼,功能外设都很强⼤,可以承前启后的。
如果是作为学习,我建议
楼主⽤STM32来⼊门。
********************************************************************************************************************************************************************************************************************************************就电机控制⽽⾔,你怎么就觉得STM32的功能更强⼤呢?我从datasheet来看,dsPIC和STM32F4xx其实半⽄⼋两,只是Microchip已经在这个⾏业混了很久了,各种应⽤⼿册相
对ST的来说要多些。
不⽤DSP,你会很累的。
另外,注意的是,现在市⾯上很流⾏的STM32都是不带DSP功能的STM32F1xx系列。
⽽带DSP和浮点运算的STM32F4系列才是⾯向电机控制的产品。
但这个东西⽐较新,
如果有什么BUG或有什么问题你现在在⽹上不⼀定有⼈帮你解决。
除⾮你要的量⽐较⼤,可以让ST的FAE来帮你搞定。
其实做电机控制,我优先推荐:1:TI的C2XXX系列;2:Microchip的dsPIC系列。
如果你做的项⽬中包含多种保护的话,外扩CPLD是⼀个推荐的⽅式。
如果你只是想做三闭环PID控制,之前推荐的C2000 DSP基本是较好的选择,这是硬件层⾯上的考
虑。
题外话,⽆刷控制难度在于控制算法的选择,⼯业控制领域以PID见⼴,如果是学校做项⽬的话不妨研究⼏种较为前沿的控制算法。
STM32做电机控制?可能有点偏颇。
⼩型集成⽆刷直流电机控制⽤DSP+FPGA也是有点夸张了。
推荐下简单的做法,TI:TMS320F28335;如果你想要有更⾼⼤上的玩法:TI:TMS320F28377D,双核浮点,做⽆刷控制⽆压⼒。
********************************************************************************************************************************************************************************************************************************************
常所说的单⽚机侧重于控制,不⽀持信号处理,属于低端嵌⼊式处理器,arm可以看做是低端单⽚机升级版,⽀持操作系统管理,更多接⼝如⽹卡,处理能⼒更强;fpga是可编程
逻辑器件,侧重时序,可构建从⼩型到⼤型的⼏乎所有数字电路系统,DSP主要完成复杂的数字信号处理,如fft,通常⼀个复杂系统可以由单⽚机、arm、FPGA、dsp中的⼀种
或⼏种构成,各有优势和不⾜。
dsp通常⽤于运算密集型,fpga⽤于控制密集型,许多⼈都⽤dsp⾼算法,⽤fpga作外围控制电路。
去年xilinx在北京介绍FPGA和DSP融合的时候,⼤有席卷DSP和FPGA市场之势。
但后来在实际中发现其阻⼒也是不⼩的,关键是很难搭配FPGA和DSP的⽐重。
我们知道
FPGA擅长各种控制(也包括适时性⾮常⾼的信号处理如移动通信中基带滤波,该滤波⽤C5000,C6000很难胜任,除⾮多芯⽚并⾏),DSP擅长各种信号处理运算,但在⼀个系统
中究竟有多⼤的控制电路,有多少密集运算?变数是很⼤的,我们不可能⽤⼀个芯⽚解决这个问题。
对于运算密集性系统,我们如果使⽤这种芯⽚的话很有可能还要其他DSP,
那么我们需要了解多种DSP编程和接⼝设计,这是否与我们的初衷背道⽽驰呢?
上⾯都是⼀些基本概念的介绍,下⾯我就来通俗介绍⼀下,在DSP⾥,你是⼀个软件设计者,硬件已经完全固化,你所要做的,就是在这个固定的硬件平台实现其功能的最优
化,⼀般TI的DSP涉及最多的是⼀些基本的BIOS操作系统之间的任务调度,以及算法改进与优化等待,DSP的关键优势包括其对于新型及复杂算法时的更短的开发时间,以及能
够运⾏多种算法的灵活性。
⽽对于FPGA来说,你是⼀个硬件设计者,FPGA就是⼀张⽩纸,上⾯写什么,画什么都取决于你。
同样⼀⽚FPGA,菜鸟和⾼⼿实现的功能会是天壤之别,FPGA的最⼤优势
在于硬件实现已及通过并⾏处理实现的效率增益。
使⽤FPGA,您⼤多的时间并⾮进⾏算法设计与优化,⽽是逻辑设计与时序约束等等。
FPGA与DSP关系:
1、DSP侧重于核⼼算法处理,FPGA侧重于外围控制处理。
2、DSP内是⽤C语⾔编写,语⾔执⾏是串⾏处理,效率⽐较低。
FPGA侧重于并⾏处理,效率较⾼;还有交合逻辑(外围接⼝、通讯等);
FPGA发展领域:
使⽤领域:电⼦设计、通讯、汽车、军⼯
不适合:消费类产品(⼿机)—FPGA功耗⾼;
FPGA技术难点:
1、需要专门的硬件语⾔来开发
2、FPGA灵活性⽐较⾼,设计是由⼯程师来决定,需要测试验证
**************************************************************************************************************************************************************************************************************************** 1.内容概要
信号处理系统⼀般不单单是模拟信号或者数字信号,⼀般两者都会有。
信号的处理关注的是信号以及信号所包含的信息的表⽰、变换及运算。
图1 典型的数字信号处理系统
1>模拟信号(analog signal)的输⼊⼀般包括(声、电、光、热等)模拟的连续信号;
2>模拟信号抗混叠(anti-aliasing filter)希望分开两个或多个混叠在⼀起的信号,或者增强某些信号;
3>AD将模拟信号转换成数字信号;
4>DSP/FPGA/ARM/MPU数字信号处理。
整个系统分为三个域,从模拟到数字,再到数字信号处理,再到数字变模拟。
数字信号处理⼀般所研究的内容涉及采样、滤波、变换、检测、谱分析、估计、压缩以及识别等;数字信号处理的理论和算法是密不可分的;相对于模拟信号系统处理,数字信
号处理体积⼩、功耗低、精度⾼、易于⼤规模集成以及可进⾏⼆维以及多维处理等优势。
数字信号处理系统的性能取决于三个因素:采样频率、架构和字长。
2.典型处理器对⽐
DSP芯⽚,也称数字信号处理器,是⼀种特别适合于进⾏数字信号处理运算的微处理器,其主要应⽤是实时快速地实现各种数字信号处理算法。
根据数字信号处理的要求,DSP
芯⽚⼀般具有如下主要特点:
(1)在⼀个指令周期内可完成⼀次乘法和⼀次加法;
(2)程序和数据空间分开,可以同时访问指令和数据;
(3)⽚内具有快速RAM,通常可通过独⽴的数据总线在两块中同时访问;
(4)具有低开销或⽆开销循环及跳转的硬件⽀持;
(5)快速的中断处理和硬件I/O⽀持;
(6)具有在单周期内操作的多个硬件地址产⽣器;
(7)可以并⾏执⾏多个操作;
(8)⽀持流⽔线操作,使取指、译码和执⾏等操作可以重叠执⾏。
当然,与通⽤微处理器相⽐,DSP芯⽚的其他通⽤功能相对较弱些。
MPU(Microprocessor Unit)微处理器
微机中的中央处理器(CPU)称为微处理器(MPU),是构成微机的核⼼部件,也可以说是微机的⼼脏。
它起到控制整个微型计算机⼯作的作⽤,产⽣控制信号对相应的部件进
⾏控制,并执⾏相应的操作。
微处理器的功能结构主要包括:运算器、控制器、寄存器三部分:
运算器的主要功能就是进⾏算术运算和逻辑运算。
控制器是整个微机系统的指挥中⼼,其主要作⽤是控制程序的执⾏。
包括对指令进⾏译码、寄存,并按指令要求完成所规定的操作,即指令控制、时序控制和操作控制。
寄存器⽤来存放操作数、中间数据及结果数据。
FPGA 具有规则的可编程结构,可实现各种逻辑功能。
1>运算能⼒强,并⾏能⼒强。
2>设计过程中具有很⼤的灵活性。
3>通过集成可以降低系统成本。
3. 混合系统
图2 FPGA作为协处理系统
图3 FPGA作为预处理系统
图4 FPGA+DSPs+ARM的数字信号处理系统
如图2、3和4数字信号处理系统,在不同的情况下我们可以采⽤不同的系统,具体根据芯⽚各⾃的优势来选择不同的系统。