解读啥是FPGA/DSP? 点击:78 | 回复:0



wayaj

    
  • 精华:30帖
  • 求助:95帖
  • 帖子:5269帖 | 8770回
  • 年度积分:0
  • 历史总积分:28783
  • 注册:2020年5月25日
发表于:2018-02-01 17:25:15
楼主

   这世界真是疯了,貌似有人连FPGA原理是什么都不知道就开始来学习FPGA了。

 

   DSP主要用于处理信号,事先算法,特点是多级流水,可以加快数据处理的速度,开发环境主要是C语言,可以说DSP应用的范围更专DSP的设计。可以理解为软件设计,设计师不需要太了解DSP的结构。

 

   FPGA区别于ASIC设计属于硬件设计的范畴ASIC是硬件全定制FPGA是硬件半定制。具体来说ASIC整个电路都由设计师设计的,用多少资源设计多少资源一般多用于产品设计。FPGA资源事先由厂商给定,例如Altera Xilinx等都提供不同系列的FPGA芯片,设计师可以在给定资源下做硬件设计开发。

 

   DSP就是一个指令比较独特的处理器。它虽然是通用处理器,但是实际上不怎么“通用”。技术很牛的人可以用DSP做一台电脑出来跑windows,而实际上真正这么干的肯定不怎么聪明。用DSP做信号处理,比其他种类的处理器要厉害;用DSP做信号处理之外的事情,却并不见长。而且信号处理的代码一般需要对算法很精通的人才能真正写好。

  

  数据结构里面的时间复杂度和空间复杂度在这里是一把很严酷的尺子。 FPGA只不过披着软件的外衣,实际上是硬件。FPGA内部有两层相对独立的电路。使用者“编码->编译”后生成一个映像,这个映像作用于第一层电路。这层电路之际上就是一个01的开关矩阵,这个开关矩阵用来控制第二层工作电路,将第二层工作电路配置成一个相应的处理器。

  

   理论上FPGA可以配置成任何需要的处理器,而实际上为了尽量少出bugFPGA开发都使用已经开发好的“库文件”,也就是把人家能稳定工作的电路图拿过来。 

因此,对大多数FPGA开发者来说,FPGA内部有几个核基本上只能从库文件里面选——除非你有能力自己设计核心内部的电路和核间总线——ramrom也是用宏来配置,自己只需要改改外部的专用电路和接线方式等等。

  

    甚至外部的专用电路都有库文件,搭个积木就完事了。玩FPGA真正挣钱的人是做积木的人,你原创几个积木并且能申请专利,迫使人家给你交专利费,那你这辈子可以衣食无忧了。

  

补充几个小概念

DSP

 

   DSP原意就是指数字信号处理,只不过DSP芯片由于主要功能是实现数字信号处理实现各种算法所以简称为DSP(数字信号处理器)。  

FPGA

 

 FPGA一样可以做DSP(数字信号处理),就意味着可以用FPGA做硬件设计来实现DSP芯片的功能,当然,相比较专业的DSP芯片成本太高。  

ARM

 

    现在除了FPGADSP之外还有一个近几年热门的产品ARMARM主要应用与手持设备和嵌入式产品,几乎笼罩了90%的市场份额,可以说ARM开发也偏向于软件开发,设计者主要是讲wince系统或者linux系统移植到ARM开发平台上,然后做各种软件应用开发。 

所以这三个方向都有其不同的应用场合,很难讲谁更有前途。主要是给设计者提供了一个硬件平台开发的核心,还是需要独立的应用设计和高效的算法设计,所以设计者应该处理好工具的掌握和具体设计的区别:FPGA——并行处理,内部资源多;DSP——成本低,低功耗,高性能的处理能力。

 

    也许FPGA更有前途,DSP其实只是个特殊的处理器,有专用的硬件乘法器,有桶形移位器可以把数据从存储  器移到ALU,还有流水线等技术。

  

   但FPGA同样可以完成这些功能,并且FPGA是并行工作的,现在很多FPGA内部可以使用软DSP或者硬核的DSP,当你的项目需要时序很严格的情况非FPGA莫属。

  

   比如说用DSPUSB芯片CY68013进行FIFO(同步传送)数据时,IFCLK可以是外部或内部,USB芯片在(IFCONFIGIFCLKSRC里配置)。如果IFCLK使用内部的情况下,DSP根本无法知道我把数据送到FIFO数据端口后USB芯片内部时钟过了多少周期,但FPGA就可以,因为FPGA的时钟取自于USB芯片的48M输出,在FPGA内部做一个状态机,当数据送到USB芯片的FIFO数据端口时,下一状态把SLWR拉低,再下一状态拉高,就等于USB内部过了一周期,数据就写进USB芯片内部的FIFO了。

 

   举个简单的例子,很多关于时序的案例非FPGA莫属,DSP做算法快速,成熟,FPGA更有挑战,据我的经验,FPGA现在内部起码有很多核是可以用的,

  

   这像一个可配置的单片机,不用的我就不放进项目。以ACTELFPGA来说,用的比较多的软核是:Core8051SCoreABC、微处理器软核,特别说明CoreABC占用的空间非常少,可以裁减指令,可以配置数据宽度8,16,32,有1组通用输入端口和输出端口,可配置堆栈。

  

       CoreDESCoreAES128CoreFROMCoreI2CCoreGPIOCoreInterruptCoreLPCCoreSDRCoreUART,还有很多很多,看这些名字,很多人都知道干什么用的。 关于DPSFPGAAME你如何看待呢?哪个是你的最爱?


1分不嫌少!


楼主最近还看过


热门招聘
相关主题

官方公众号

智造工程师