智能车制作

标题: ARM、DSP、FPGA的技术特点和区别 [打印本页]

作者: peilet    时间: 2009-11-20 21:45
标题: ARM、DSP、FPGA的技术特点和区别
本帖最后由 peilet 于 2009-11-20 21:47 编辑

在嵌入式开发领域,ARM是一款非常受欢迎的微处理器,其市场覆盖率极高,DSP和FPGA则是作为嵌入式开发的协处理器,协助微处理器更好的实现产品功能。那三者的技术特点以及区别是什么呢?下文就此问题略做了总结。  

ARM(Advanced RISC Machines)是微处理器行业的一家知名企业,设计了大量高性能、廉价、耗能低的RISC处理器、相关技术及软件。

ARM架构是面向低预算市场设计的第一款RISC微处理器,基本是32位单片机的行业标准,它提供一系列内核、体系扩展、微处理器和系统芯片方案,四个功能模块可供生产厂商根据不同用户的要求来配置生产。由于所有产品均采用一个通用的软件体系,所以相同的软件可在所有产品中运行。目前arm在手持设备市场占有90以上的份额,可以有效地缩短应用程序开发与测试的时间,也降低了研发费用。

DSP(digital singnal processor)是一种独特的微处理器,有自己的完整指令系统,是以数字信号来处理大量信息的器件。一个数字信号处理器在一块不大的芯片内包括有控制单元、运算单元、各种寄存器以及一定数量的存储单元等等,在其外围还可以连接若干存储器,并可以与一定数量的外部设备互相通信,有软、硬件的全面功能,本身就是一个微型计算机。DSP采用的是哈佛设计,即数据总线和地址总线分开,使程序和数据分别存储在两个分开的空间,允许取指令和执行指令完全重叠。也就是说在执行上一条指令的同时就可取出下一条指令,并进行译码,这大大的提高了微处理器的速度 。另外还允许在程序空间和数据空间之间进行传输,因为增加了器件的灵活性。其工作原理是接收模拟信号,转换为0或1的数字信号,再对数字信号进行修改、删除、强化,并在其他系统芯片中把数字数据解译回模拟数据或实际环境格式。它不仅具有可编程性,而且其实时运行速度可达每秒数以千万条复杂指令程序,远远超过通用微处理器,是数字化电子世界中日益重要的电脑芯片。它的强大数据处理能力和高运行速度,是最值得称道的两大特色。由于它运算能力很强,速度很快,体积很小,而且采用软件编程具有高度的灵活性,因此为从事各种复杂的应用提供了一条有效途径。根据数字信号处理的要求,DSP芯片一般具有如下主要特点:

(1)在一个指令周期内可完成一次乘法和一次加法;
(2)程序和数据空间分开,可以同时访问指令和数据;
(3)片内具有快速RAM,通常可通过独立的数据总线在两块中同时访问;
(4)具有低开销或无开销循环及跳转的硬件支持;
(5)快速的中断处理和硬件I/O支持;
(6)具有在单周期内操作的多个硬件地址产生器;
(7)可以并行执行多个操作;
(8)支持流水线操作,使取指、译码和执行等操作可以重叠执行。
当然,与通用微处理器相比,DSP芯片的其他通用功能相对较弱些。

FPGA是英文Field Programmable Gate Array(现场可编程门阵列)的缩写,它是在PAL、GAL、PLD等可编程器件的基础上进一步发展的产物,是专用集成电路(ASIC)中集成度最高的一种。FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个新概念,内部包括可配置逻辑模块CLB(Configurable Logic Block)、输出输入模块IOB(Input Output Block)和内部连线(Interconnect)三个部分。用户可对FPGA内部的逻辑模块和I/O模块重新配置,以实现用户的逻辑。它还具有静态可重复编程和动态在系统重构的特性,使得硬件的功能可以像软件一样通过编程来修改。作为专用集成电路(ASIC)领域中的一种半定制电路,FPGA既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。可以毫不夸张的讲,FPGA能完成任何数字器件的功能,上至高性能CPU,下至简单的74电路,都可以用FPGA来实现。FPGA如同一张白纸或是一堆积木,工程师可以通过传统的原理图输入法,或是硬件描述语言自由的设计一个数字系统。通过软件仿真,我们可以事先验证设计的正确性。在PCB完成以后,还可以利用FPGA的在线修改能力,随时修改设计而不必改动硬件电路。使用FPGA来开发数字电路,可以大大缩短设计时间,减少PCB面积,提高系统的可靠性。FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此工作时需要对片内的RAM进行编程。用户可以根据不同的配置模式,采用不同的编程方式。加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。当需要修改FPGA功能时,只需换一片EPROM即可。这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。因此,FPGA的使用非常灵活。可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。目前FPGA的品种很多,有XILINX的XC系列、TI公司的TPC系列、ALTERA公司的FIEX系列等。


最后提一下,我们智能车竞赛使用freescale的MCU和DSC不在以上3种处理器范围之内(比赛相关芯片没有采用ARM架构内核)。和ARM与DSP相比,MCU和DSC相对来说更多用于工业控制,其中DSC可以看作是MCU+弱版DSP。FPGA由于其硬件可编程性,更多用于高级算法,如模糊控制及神经网络应用中。


作者: chenrunshe_007    时间: 2009-11-21 00:35
支持,老兄强啊,是不是看到这个版块没有帖子就像开个先河
作者: peilet    时间: 2009-11-21 09:38
支持,老兄强啊,是不是看到这个版块没有帖子就像开个先河
chenrunshe_007 发表于 2009-11-21 00:35



呵呵,转贴而已。没错~~~
作者: ssg322    时间: 2009-11-21 10:21
谢谢
作者: zdhly0401    时间: 2009-11-21 12:01
研究这个的人有多少,交流交流
作者: peilet    时间: 2009-11-22 10:33
研究这个的人有多少,交流交流
zdhly0401 发表于 2009-11-21 12:01



    估计很少,呵呵,国内除了电子类专业的,其他基本都不学这个。好像国内工程师也更喜欢用单片机DSP而不是FPGA
作者: Michael_Fei    时间: 2009-11-22 19:10
上午看到的CPLD与FPGA的比较,自己还抄到实验笔记上了。
也顺便贴上来,顶老兄的帖子。共同学习了

CPLD是Complex Programmable Logic Device(复杂可编程逻辑器件)的缩写,代表的是一种可编程逻辑器件,它可以在制造完成后由用户根据自己的需要定义其逻辑功能。CPLD 的特点是有一个规则的构件结构,该结构由宽输入逻辑单元组成,这种逻辑单元也叫宏单元,并且 CPLD 使用的是一个集中式逻辑互连方案。
FPGA是英文Field-Programmable Gate Array的缩写,即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
******FPGA基于SRAM的架构,集成度高,以LE(包括查找表、触发器及其他)为基本单元,有内嵌Memory、DSP等,支持IO标准丰富。具有易挥发性,需要有上电加载过程。在实现复杂算法、队列调度、数据处理、高性能设计、大容量缓存设计等领域中有广泛应用,如Altera Stratix系列。
******CPLD基于EEPROM工艺,集成度低,以MicroCell(包括组合部分与寄存器)为基本单元。具有非挥发特性,可以重复写入。在粘合逻辑、地址译码、简单控制、FPGA加载等设计中有广泛应用,如Altera MAX3000A系列。
********详细比较:尽管FPGA和CPLD都是可编程ASIC器件,有很多共同特点,但由于CPLD和FPGA结构上的差异,具有各自的特点
①CPLD更适合完成各种算法和组合逻辑,FP GA更适合于完成时序逻辑。换句话说,FPGA更适合于触发器丰富的结构,而CPLD更适合于触发器有限而乘积项丰富的结构。
②CPLD的连续式布线结构决定了它的时序延迟是均匀的和可预测的,而FPGA的分段式布线结构决定了其延迟的不可预测性。

③在编程上FPGA比CPLD具有更大的灵活性。CPLD通过修改具有固定内连电路的逻辑功能来编程,FPGA主要通过改变内部连线的布线来编程;FP GA可在逻辑门下编程,而CPLD是在逻辑块下编程。

④FPGA的集成度比CPLD高,具有更复杂的布线结构和逻辑实现。

⑤CPLD比FPGA使用起来更方便。CPLD的编程采用E2PROM或FASTFLASH技术,无需外部存储器芯片,使用简单。而FPGA的编程信息需存放在外部存储器上,使用方法复杂。

⑥CPLD的速度比FPGA快,并且具有较大的时间可预测性。这是由于FPGA是门级编程,并且CLB之间采用分布式互联,而CPLD是逻辑块级编程,并且其逻辑块之间的互联是集总式的。

⑦在编程方式上,CPLD主要是基于E2PROM或FLASH存储器编程,编程次数可达1万次,优点是系统断电时编程信息也不丢失。CPLD又可分为在编程器上编程和在系统编程两类。FPGA大部分是基于SRAM编程,编程信息在系统断电时丢失,每次上电时,需从器件外部将编程数据重新写入SRAM中。其优点是可以编程任意次,可在工作中快速编程,从而实现板级和系统级的动态配置。

⑧CPLD保密性好,FPGA保密性差。

⑨一般情况下,CPLD的功耗要比FPGA大,且集成度越高越明显。
作者: peilet    时间: 2009-11-23 10:19
回复 7# Michael_Fei


    多谢仁兄分享,学习了
作者: hoho枫弦    时间: 2009-11-25 23:26
嘿嘿  好东西
作者: 日升日落    时间: 2009-11-26 14:29
不错啊
作者: lhl3108003039    时间: 2009-11-27 12:15
henhao
作者: qianjincheng    时间: 2009-12-8 20:40
顶!
作者: jakerroo    时间: 2009-12-12 01:10
我刚接到任务要弄FPGA,晕,什么也不会,正看VERILOG,晕啊。。。。
作者: a0804211    时间: 2009-12-22 22:04
顶一下
作者: drcess    时间: 2009-12-28 11:12
大家 以后可以多了解嵌入式
作者: feiyangxiaomi    时间: 2009-12-29 08:44
不错,谢谢分享。。
作者: peilet    时间: 2010-1-1 10:22
我刚接到任务要弄FPGA,晕,什么也不会,正看VERILOG,晕啊。。。。
jakerroo 发表于 2009-12-12 01:10



    呵呵 现在高校里越来越多用C来做FPGA了 虽然是个间接的方法
作者: liukexin    时间: 2010-1-2 19:42
好东西
作者: 632693521    时间: 2010-3-16 10:39
学习一下,以后会从事这方面的工作,希望可以多多交流哦!
作者: zhangjiarui    时间: 2010-11-7 16:41
好东西
作者: 200841055    时间: 2010-11-28 17:12
学习学习
作者: liliang129    时间: 2011-3-2 22:36
回复 1# peilet


    lihai
作者: 尼古拉斯    时间: 2011-7-15 16:30
好东西 ,赞一下
作者: 雷家财    时间: 2011-8-18 09:26
问一个弱弱的 问题.......DSP.与FPGA,与arm相比......那个发展前途好捏? 学习是那一个比较难....
作者: 海日生明月    时间: 2011-8-19 14:51
顶起
作者: peilet    时间: 2011-9-1 11:49
回复 25# 雷家财


    fpga和arm应用场合不同。前者多用于特定场合,有时可以和ASIC互换。后者更多用于通用场合。dsp就算了吧,现在fpga和arm很多片子内部集成了dsp单元。
作者: jayce    时间: 2011-11-14 14:41
很好
作者: liuwei_sain    时间: 2011-11-15 16:48
学习了
作者: 竹子    时间: 2011-12-3 15:21
呵呵。。突然觉得自己好无知啊。。。
作者: 7998    时间: 2011-12-4 13:28
哈哈,学习了,这么多人研究这个啊?
作者: 李帅李帅    时间: 2012-3-2 17:33
:lol:lol
作者: excellentlizhen    时间: 2012-3-15 17:33

作者: 星斗520    时间: 2012-5-29 16:02
学习学习
作者: lifeng2106    时间: 2012-5-30 14:29
不错啊。。。
作者: 彡钢铁侠    时间: 2013-12-15 19:44
这是目前我看到的比较精辟的对三者的介绍!!




欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2