DSP与FPGA的技术特点和区别是什么?
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系列等。
DSP主要是用来计算的,比如进行加密解密、调制解调等,优势是强大的数据处理能力和较高的运行速度。FPGA可以用VHDL或verilogHDL来编程,灵活性强,由于能够进行编程、除错、再编程和重复操作,因此可以充分地进行设计开发和验证。当电路有少量改动时,更能显示出FPGA的优势,其现场编程能力可以延长产品在市场上的寿命,而这种能力可以用来进行系统升级或除错。
DSP和FPGA相比的优势和劣势
功能比较:
FPGA:
时序控制能力强。(时序能力强,没有指令周期,速度快)
控制能力较强(由于没有指令集,不如ARM和单片机)。
数字信号处理及算法弱(这里讲的弱是指内部不集成DSP的前提下)
DSP:
时序控制能力较弱。(没办法。有了指令集,就有指令周期。而且受到时钟约束)
控制能力较强(有指令集。但是不是专业搞控制的)
数字信号处理及算法强(专业特长嘛)
DSP和FPGA开发的概述:
DSP,专用电路(内部结构已经固定)通过对RAM内部的指令和数据工作(这个是CPU和ARM等等的工作方式)所以开发遵循嵌入式软件的设计原则。调试应更注重于算法的实现。
FPGA,ASIC一种,经典FPGA的内部结构是寄存器+组合逻辑(查找表)。最后是按照逻辑电路进行设计。所以是属于硬件设计原则。调试除了需要关心功能以外,还需要关心电路方面的特性。比如说延迟,整体功率等等。
开发工具:
DSP仿真器,开发板。仿真器比较多,网上查吧,DSP仿真器,网上大堆的,嫌不够正规,TI网站自己找教程和datasheet。
FPGA:开发工具比较多,他分成综合工具,仿真工具和开发板,综合工具altera的Quartus和xilinx的ISE以及synplicity的synplify用的比较多。仿真么,modelsim,时序仿真利器。也是网上去找吧。多滴很~~
技术支持你不用担心~TI和Xilinx和Altera的支持非常非常地道。就一个问题。英文要好。至少你能静下心来看。上了他们的网站。你就知道什么叫专业。fpga还好,因为就几家大公司才有能力出。dsp么,具体问题具体分析咯。
选择策略方面。这个是经验谈啊:不能绝对的说。DSP么,专业性比较强。而且的确能做别的IC做不了的事情(人家里面乘法器资源没话说稳定性和效率在数字信号处理这块基本无人能出其右)FPGA呢相对来说可以运用的面比较广泛(不过也是近期的事情。其实FPGA很早就有。只是当初设计领域都是通信方面的。现在有集成CPU和DSP以及公司提供的软核的强力支持,设计面越来越广)
真正的经验。只有在动手以后才知道。选择那条路无所谓。关键是在这条路上走的多好。
FPGA设计与DSP设计的区别在哪里
系统设计人员在项目的架构设计阶段要面临一系列关键问题,其中一个越来越重要的问题就是到底应采用现场可编程门阵列(FPGA),还是采用数字信号处理器(DSP)。FPGA设计与DSP设计相比,最大的不同之处在哪里?这个问题要从多个角度看,它们都用于某个功能的硬件电路实现,但是它们的侧重点有所不同,华清远见北京嵌入式培训就来给你做个详细介绍!
1、内部资源
FPGA侧重于设计具有某个功能的硬件电路,内部资源是VersaTiles(ActelFPGA)之类的微小单元,FPGA的内部单元初始在编程前都是使用的是HDL语言实现硬件电路的设计描述。FPGA内部的连线资源将这些功能模块的内部和模块之间的信号连接起来,构成较大的模块。FPGA可以内部实现ALU,加法器,乘法器,累加器,FIFO,SRAM,DDRcontroller,FFT,HDLC,DMA,PWM等等数字电路,也就说我们要用其实现一个特定的或是通用的硬件功能一个或是多个模块,这些模块的各个细节都要要用HDL来描述设计实现。
目前的FPGA都可以直接内嵌诸如ARM7,CoretexM1,Core8051等微处理器,用于FPGA的软核的,也有的FPGA厂商将一些硬件模块直接做到FPGA中,这些是FPGA内部的硬核。传统的FPGA都是实现纯数字电路的,业界只有Actel的FPGA实现了数模混合的PSC单芯片技术,真正的提升和扩大了FPGA的应用功能和领域。
此外,多数FPGA都有PLL,DLL之类的锁相环,Slew可调,Actel的还内建了OSC,RTC,Powermanager之类的硬件单元,甚至Actel的Fusion系列还内建了600kbps的12bit的ADC以及MOSFETDriver之类模拟接口,内部有UserFlashMemeory,FlashROM等资源可以实现真正的PSC,Bootloader之类的功能。
DSP主要是算法处理,内部资源主要是乘法器,加法器之类的资源,有SPI接口,UART接口,接受一定的指令集,内部的资源基本上都是现成的,需要客户的需要而重新配置,方便于客户的使用,但是相对来讲其功能是有局限性的,所以主要用于某些特定的领域。DSP也有内嵌的锁相环,计数器,Baudrate发生器,有的DSP也有ADC模拟接口。
2、编程语言
FPGA主要使用HDL,包括VHDl,Verilog,还有数模混合的描述语言Verilog-AMS等。
DSP使用C,汇编语言编程。
3、功能角度
FPGA普遍用于实现数字电路模块,基本上能实现所有的数字电路,传统的数字功能模块,以及客户产品特定需求的数字处理模块。FPGA的IO桥接种类繁多,不同种类的级别的FPGA支持的IO标准和协议都不尽相同,但是这些IO的驱动能力或是电压都是可编程配置的。任何数字功能电路的实现,高速信号的处理,控制领域的信号处理,桥转换协议的实现,Actel的Fusion还能用于电流/电压检测,温度的检测,MOSFETdriver,电源管理,其独特的Flash工艺技术可以依靠电池供电工作,和掉电实时保存数据,超低功耗,多种工作模式(Static,Sleepmode),尤其IGLOO芯片的功能在Sleepmode下功耗只有5uW。这样的功耗用于手机,GPS之类的移动手持设备中能发挥更大的功能应用。
除此之外,用FPGA实现ASIC的前期的设计验证,FPGA实现DSP的功能,实现CPU的功能,MCU的功能,内存控制器,用于工业的PWM,SVPWM,Clarke,Park的正逆变换的实现,VGA控制,数据的编解码,解复用,高达上Gbps的信号的处理,协议的转换实现等等等等功能,都是DSP难以胜任的。
DSP内部有很多现成的硬件模块和接口以及控制器,但是需要软件编程设定,可以实现PWM控制,接口控制,UART接口,SPI接口等功能。但是由于受指令集的时钟周期的限制,DSP不能处理太高的信号,至于说上Gbps的信号,LVDS之类的信号就很难以涉及了。所以相应的应用领域会有所限制。但是不同的领域客户的设计方案不同,考虑的侧重点不同,有些领域设计者也是爱好使用DSP的,诸如算法实现,协议的处理等等如果换作FPGA来处理那就得不偿失。
FPGA和DSP的区别还有很多,这里先说这些,当然具体的环境和设计方案各有其用武之地,设计者要根据自己的需要来选用。
CISS元器件
元器件行业最有态度的微信公众号
Sochips,最权威的元器件信息共享平台
每一天,都有新的期待…
点击阅读原文进入元器件行业最好用的网站