在上一期中,该文重点介绍了FPGA与DSP的含义、种类、原理和特点,那么本期还将继续为大家介绍FPGA与DSP两者的比较,希望能给广大读者提供借鉴意义。
FPGA与DSP的比较
一般,FPGA可以说是并行处理,硬件方式,具实时性;DSP是线性处理指令,独占执行方式,非实时。FPGA要考虑各模块之间的握手协调;DSP则要考虑中断响应和子功能程序挂起的优先级。
虽然FPGA与DSP都用于某个功能的硬件电路实现,但是它们的侧重点有所不同。现从下列三个方面比较如下。
从内部资源上比较
FPGA侧重于设计具有某个功能的硬件电路,内部资源是VersaTiles(ActelFPGA)之类的微小单元,FPGA的内部单元初始在编程前都是使用HDL语言实现硬件电路的设计描述。FPGA可以内部实现ALU、加法器、乘法器、累加器、FIFO、SRAM、DDRcontroller、FFT、HDLC、DMA、PWM等数字电路,FPGA内部的连线资源,将这些功能模块的内部和模块之间的信号连接起来,构成较大的模块。目前的FPGA都可以直接内嵌诸如ARM7、CoretexM1、Core8051等微处理器,用于FPGA的软核的,也有的厂商将一些硬件模块直接做到FPGA中,即FPGA内部的硬核。传统的FPGA都是实现纯数字电路的,只有Actel的FPGA实现了数模混合的PSC单芯片技术,真正的提升和扩大了FPGA的应用功能和领域。多数FPGA都有PLL、DLL之类的锁相环,Slew可调,Actel还内建了OSC、RTC、Power manager之类的硬件单元,甚至Actel的Fusion系列还内建了600kbps的12bit的ADC以及MOSFET Driver之类的模拟接口,内部有User Flash Memeory,Flash ROM等资源可以实现真正的PSC、Bootloader之类的功能。
DSP主要是侧重算法处理,内部资源主要是乘法器、加法器之类的资源,有SPI、UART等接口,接受一定的指令集。内部的资源基本上都是现成的,非常方便于客户的使用。但是相对来讲其功能是有局限性的,所以主要用于某些特定的领域。DSP也有内嵌的锁相环、计数器、Baud rate发生器,有的DSP也有ADC模拟接口。
从使用的编程语言上比较
FPGA主要使用HDL,包括VHDl、Verilog,还有数模混合的描述语言Verilog-AMS等;而DSP使用C、C++等汇编语言编程。
从功能角度上比较
FPGA普遍用于实现数字电路模块,基本上能实现所有的数字电路,以及客户特定需求的数字处理模块。FPGA的IO桥接种类繁多,不同种类级别的FPGA支持的IO标准和协议都不尽相同,但是这些IO的驱动能力或是电压都是可编程配置的。Actel的Fusion还能用于电流/电压检测、温度的检测、MOSFET driver、电源管理等,其独特的Flash工艺技术可以依靠电池供电工作,和掉电实时保存数据,超低功耗,多种工作模式(Static、Sleep mode)。尤其IGLOO芯片的功能在Sleep mode下功耗只有5uW,因而可用于手机、GPS之类的移动设备中。此外,用FPGA可实现ASIC前期的设计验证,能实现DSP、CPU、MCU等功能,内存控制器,用于工业的PWM、SVPWM、Clarke、Park的正逆变换的实现,VGA控制,数据的编解码,解复用,高达上Gbps的信号处理,实现协议的转换等功能,都是DSP难以胜任的。
DSP内部有很多现成的硬件模块和接口以及控制器,但是需要软件编程设定,可以实现PWM控制、接口控制、UART接口、SPI接口等功能。但是由于受指令集的时钟周期的限制,DSP不能处理太高的信号,至于说上Gbps的信号,LVDS之类的信号就很难涉及了。所以相应的应用领域会有所限制。但是,不同的领域设计方案不同,考虑的侧重点也会不同,有些领域设计者爱好使用DSP,如算法实现,协议的处理等换作FPGA来处理那就得不偿失。 [nextpage]
随着FPGA本身成本和体积的不断降低,性能不断上升,ASIC的市场大部分都已经不可否认地让给了FPGA,技术融合已经是一条必经之路。因CPU指令流水线的管道数有限,只能支持数量有限的指令并行处理;而FPGA则可以为之提供多管道,同时并行处理大量指令,且FPGA还可执行大量的数据吞吐操作,因此在指令和数据两方面FPGA都能获得比传统CPU更大的工作效率,从而产生了CPU+FPGA的组合。
FPGA器件可以实现各功能块同时工作,实现指令级、比特级、流水线级甚至是任务级的并行执行,其效率远远高过通用DSP处理器。但FPGA以前都是为验证ASIC原型而设计,因此虽然FPGA在节省工程开发时间上效率非常高,但是在利用效率方面却比DSP要逊色。一般,FPGA芯片价格贵过DSP,不过FPGA同时可并行处理的数字信号运算量大于DSP,当数字信号运算需求量够大的时候,FPGA在性价比上才会超过DSP。虽然FPGA拥有取代DSP的良好后续发展,但多核心处理器是FPGA的威胁。
ARM具有比较强的事务管理功能,可以用来跑界面以及应用程序等,其优势主要体现在控制方面,而DSP主要是用来计算的,比如进行加密解密、调制解调等,优势是强大的数据处理能力和较高的运行速度。FPGA可以用VHDL或verilogHDL来编程,灵活性强,由于能够进行编程、除错、再编程和重复操作,因此可以充分地进行设计开发和验证。当电路有少量改动时,更能显示出FPGA的优势,其现场编程能力可以延长产品在市场上的寿命,而这种能力可以用来进行系统升级或除错。
值得指出的是,Altera、Xilinx等公司开发了实现数字信号处理算法的FPGA,它们提供软件或VHDL等开发语言,通过软件编程用硬件实现特定的数字信号处理算法。由于它具有通用性的特点,并可以实现算法的并行运算,因而可代替DSP作为独立的数字信号处理器或作为DSP芯片的协处理器应用。通用的DSP的灵活性主要体现在软件容易更改,以及对各种算法处理和复杂算法的实现上,而对硬件本身的更改则不行。FPGA是由大量的逻辑宏单元组成,通过配置可使这些逻辑宏单元形成不同的硬件结构,从而可构成不同的电子系统来完成不同的功能。由FPGA构成的DSP电路同样以并行或顺序方式工作:在并行工作方面,FPGA与专用DSP相当,但远优于通用DSP,如通用DSP需大量运算指令完成的工作,FPGA可在一个周期内完成;在顺序执行方面,FPGA比通用DSP快,且每一顺序工作的时钟周期中能同时并行完成许多执行,而通用DSP却不能。随着多达数百万门高密度FPGA的出现,FPGA可嵌入许多面向DSP的专用硬核模块,结合大量可配置于FPGA硬件结构中的参数化的DSP IP软核,开发者能十分容易地将整个DSP系统实现在一片FPGA中,从而实现了所谓可编程SoC,显示了FPGA高速高带宽的优势。
由此,可粗略地列出FPGA与DSP的比较如表1所示。由表1可知,两者侧重点不同而各有优劣,一般专做数据处理用DSP;低端的FPGA比较善于做控制用,且用起来较灵活,想做什么控制器都可以自己编写,而不用专用芯片。但现在,从整体性价比考虑,一般实时处理系统均采取DSP+FPGA相结合的结构形式(未完待续)。