我看FPGA现在难以取代FPGA+DSP的架构,这段时间的思索总结
你是使用FPGA的吧,我觉得以上是设计FPGA的人才该想的问题~
对啊,我现在是在用FPGA,正考虑下个要处理复杂算法项目架构的问题,所以在考虑光用一片FPGA开发的难度
小编观点有点武断哈。不完全同意
1 一些复杂的算法,如视频监控,小目标的提取等,用Verilog开发FPGA算法的复杂性远远超过C开发,有很多对于C来说很简单的事,如浮点乘法,但对于FPGA来说很难。
小编的复杂定义应该明确一下。我理解一个算法适合用DSP还是FPGA实现,是由算法的架构(Architecture)决定的。而算法的数学公式到架构还有一个设计的过程。如果目标是DSP实现,当然是要充分结合DSP结构来进行架构设计。如果偏要用一个适合DSP的架构映射到FPGA上,当然是自找烦恼了。另外要指出,从另个角度看DSP芯片的架构实际就是哈佛架构的逻辑处理设备,与其它可以在FPGA上实现的流水线,并行,脉动等架构一样,只是一种逻辑实现方法。
2 素材,基于复杂算法的代码范例的缺乏现在许多成熟的算法都是基于C语言的,你能找到很多教材关于基于C语言的数字图像处理,但你几乎看不到一本书是基于FPGA的数字图像处理,当然有很多基于FPGA的数字信号处理的教材。这也正是现在FPGA主要的功能,作为协处理器处理大量的底层数据。但是要跑一些算法,肯定还是用DSP编写C算法来地容易。
不知道小编的团队是如何工作的。我知道业内做算法的职业团队,不论目标是DSP和FPGA实现,都会有一组人根据架构设计的结果,做基于架构设计的标准模型(称为Golden模型,有可能用C,也可能用Matlab),而最终不论DSP还是FPGA的实现结果,都必须与Golden模型比较才能有资格说我实现的水平怎么样。那些教科书里的代码,目的并不是为了高效实现产品,而是演示算法本身效果,不会考虑实现效率和结构优化,因此根本不是在算法实现中可用的Golden模型。而小编想直接用那种开源的代码跑跑,想快速实现和验证功能,如果做为产品开发,只能说是票友水平了。
3 现在FPGA是有内嵌的内核,但它的速度比不上DSP芯片的速度。嵌在FPGA芯片里的内核肯定不如单片DSP内核的速度。
单个MAC计算可能是不如DSP,但FPGA一般有几百个:),最新xilinx V6有好几千个,每个MAC能到几百M时钟。
4 复用IP内核的概念一直很热。但我觉得IP核涉及的范围很窄,只会有那些特别通用的算法,如FFT等。更重要的是每个人的需求都是不一样的,算法都是不一样的,很难有其他通用IP。而且如果对频率要求很高的话,那么还需要加时序约束,位置约束,但每块板子,每块芯片都是不一样的,这个很有难度。而且IP核是不是实际好用,很成问题。
其实这又回到根本目的上,小编的目的是做什么。如果小编是做产品,而且是要与竞争对手进行全面的成本,上市时间,质量,功能进行比拼时,那用IP是必须的。否则你可以做出来,但市场窗口已经没有了。如果是票友玩玩票,那另当别论了。
5 FPGA架构比FPGA+DSP架构的明显优势,除了简化板级设计外,我觉得其他也比较难说。关键是现在FPGA+DSP的架构非常灵活高效,没有被单片FPGA取代的必要。 总之,就我看到现在的论文或工程实例,几乎没看到有单片FPGA处理复杂算法的成功范例,如视频监控(不止是显示图像,还包括目标识别等功能的)。当然,FPGA毕竟是灵活,尤其适合软硬件协同开发。 很想多听听大家对这个问题的看法意见,或谈谈有没有必要或优势把FPGA+DSP替代成单片FPGA。这个问题我一直在想。
现在很多FPGA都有处理器集成了。
最后总结个人观点和经验:
小编的想法我觉得与DSP和FPGA开发本身特点有关。要做出一个水平为60分的产品,DSP和FPGA都可以一个人就行。但要做出一个90分的产品,DSP靠一个人还有可行性,FPGA基本上很难了,一定要专业分工。
da niu a
小编的看法有一定道理,凡事无绝对,FPGA无法取代FPGA+DSP那是肯定的,DSP有它自己的应用范围和发展方向。
对于有些系统功能,是可以用FPGA里面的软核CPU加上DSP乘法器资源来实现,如果DSP算法灵活性太大,而且又无法固化到FPGA中去的,如何全部用FPGA来实现。
且不要说FPGA取代DSP了,就是要做到FPGA完全取代FPGA+CPU的架构还需要一段时间呢,哈哈。
www.losang.cn
关键是看需求了,产品的要求以及现有的条件决定你采用什么方案。
都是牛人啊,呵呵!
长知识拉
都是牛人啊
各有各的位置吧
感谢大家的讨论,让我们把对问题的认识深化
非常感谢fangll和大家的回复,一开始考虑这个问题的时候对问题的认识非常肤浅,就是想自己的项目究竟是用一片FPGA还是FPGA+DSP的架构,用一片FPGA能不能做?
现在想想当初提这个问题时真的是对很多问题的认识不够。现在觉得有一点是最重要的,正如fangll所说的,哪种硬件体系架构更合适,是由算法的架构决定的。所以,脱离算法的硬件讨论是空洞的,没有意义的。硬件是用来支持算法的。
fangll写的这一段“不知道小编的团队是如何工作的。我知道业内做算法的职业团队,不论目标是DSP和FPGA实现,都会有一组人根据架构设计的结果,做基于架构设计的标准模型(称为Golden模型,有可能用C,也可能用Matlab),而最终不论DSP还是FPGA的实现结果,都必须与Golden模型比较才能有资格说我实现的水平怎么样。那些教科书里的代码,目的并不是为了高效实现产品,而是演示算法本身效果,不会考虑实现效率和结构优化,因此根本不是在算法实现中可用的Golden模型。而小编想直接用那种开源的代码跑跑,想快速实现和验证功能,如果做为产品开发,只能说是票友水平了。” 这一段写地尤其出彩,确实现在本人的水平是票友水平。这还和我们的教育背景有关,我本人现在是研二,本科包括现在都是电子专业的,受到的教育都是基于串行思想的C代码。无论是基于PC机的也好,就算是单片机,MATLAB,DSP,其实都是类似的。包括我们室这里的水平,都是这样的,基本上都是从教科书中找到那种诸如图像处理算法的原型代码,然后修改后用在现有的系统。实事求是说,就我们室的水平,在中国这个业界里并不差。但看来和业内做算法的职业团队相比,真的是差太多太多了。
好,让我们把问题深化,接下去再谈谈以下几个问题:
1 哪里能找到关于SOC系统理论,系统架构设计的资料
fangll提到了Golden模型,我想对电子专业的人来说,可能过去不一定听说过。我查了百度和Google,资料介绍也不多,主要可能以前还是软件方面的概念,不过倒也查到点东西,但和芯片制造好像更有关系。怎么说呢,以前电子专业的不懂微电子的东西,只要会用芯片。现在做了FPGA了,开始涉及芯片内部了,发现自己的知识陈旧了,很多概念都不懂。但是这些对于FPGA的设计又是至关重要的,FPGA把它当做跑逻辑的东西倒不难,但想构建SOC,那些系统理论,系统方法,建模能力,现在觉得可能都是关键的。
2 怎么设计并行算法
其实现在的问题从一开始的FPGA与FPGA+DSP之争,到了算法设计之争,是用适合FPGA的并行算法还是适合DSP的我们现在更容易想到的串行算法。这可能由算法本身决定的,很想多了解些这方面的知识,但现在几乎所有数字信号处理的书都如fangll所说“那些教科书里的代码,目的并不是为了高效实现产品,而是演示算法本身效果,不会考虑实现效率和结构优化”,但还是想问问有没有这方面的教材,资料。自己当然要摸索,但首先希望站在巨人的肩膀上。
对了,最近我有了几点新的认识:
1 看了点SYSTEM GENERATOR方面的资料,现在更倾向于采用FPGA的架构,因为matlab+SYSTEM GENERATOR是现在美国很多人采用的开发流程,算法通过SYSTEM GENERATOR建模,然后在FPGA实现,如果是这样的方法,那么就是想用DSP,都不知道怎么用了。而且我觉得最重要的是SYSTEM GENERATOR描述算法的方法更接近于算法本质。
2 现在我觉得,不是说FPGA+DSP架构会不会被FPGA淘汰的问题,8位单片机都还有很多人用呢。其实我更应该讨论以后高端的实时信号处理平台是哪个架构(排除那种用GPU等特殊的处理器),现在我觉得,从长远来说,FPGA+DSP架构会更快达到它的极限,而FPGA能支持更高的速度要求,满足更高的实时处理能力
感谢大家的讨论,让我们把对问题的认识深化
12# zhj1985
楼上那位大牛说的GOLDEN模型,其实就是一个比较对象。
用硬件实现算法,肯定会有ERROR。因为每个数据的BIT数分配是有限的。比如算一个模,就需要平方、开根等计算,为评价这样一个算法的精度,一般就会用MATLAB或C用软件的方式计算一个精确值(浮点计算),再用软件的方式计算一个限制位数的仿硬件结果的计算值。和用FPGA(MODELSIM 前仿真)得到的结果作以下比较。很容易知道,这个算法相对精确值的误差,以及用硬件实现的过程是否准确(和软件模拟的硬件计算结果作比较可得)。
另外,滤波器之类的设计中,FILTER的系数,一般是小数,这里限制每一个系数的位数,都会影响到整个系统的输出结果(transition BAND、RIPPLE都会变)也需要一个参照结果来评价。
还有,POLYPHASE之类的过程,中间有没有错误,能不能PERFECT RECONSTRUCTION都要做对比分析中来评价。所以无论是FPGA还是ASIC,谁做都肯定是需要一个比较结果的。只是有的地方不叫GOLDEN 模型或SOFTWARE SIMULATION。
我们这把浮点计算做出的结果较GOLDEN MOTHOD结果,限制位数用软件模拟硬件计算结果较HARDWARE SIMULATION
学习了啊
SYSTEM GENERATOR,貌似只需要选选框图,就可以自动生成VHDL或VERILOG的CODE,只用过一次。
CODE的质量也不错。
DSP processor一般的频率都比较高。动辄几个GHZ。但他的运算方式需要若干个CLOCK来串联才可以得到结果。
FPGA一般不用很高的频率。频率高了,CONSTRAINT、LOCATION都要限制,过于麻烦。ASIC就更不用说了。最常用的卷积计算因为可以用PIPELINE,所以即使频率低也不影响实时运算。
另外,现在的ADC的频率远远达不到通信的载频的频率。FPGA顶多用几倍于SAMPLING FREQ.就够了吧。
图像处理,麻烦就在于需要一个2维memory、甚至多维MEMORY,BANDWIDTH要求也很高。一般的信号处理就是个CONVOLUTION、乘法、开方、加法,用REG就可以做了,但图像处理一般参与计算的数据比较多,更麻烦一些。
各种跨CHIP的架构,最需要考虑的就是之间的传输的带宽,片内的BUS WIDTH一般可以比较宽,但跨片子的时候无论LVDS还是其他的通信方式,带宽是有限的,这里应该有个TRADE OFF。内部DSP核速度慢点有些时候可能方便,外部DSP核速度高但之间的传输带宽可能受限。
但一般的数字信号处理,用内部IP核就够用了。ASIC的时候头疼的是MEMORY用得多片子就会变大,FIFO也尽量能不用就不用,逻辑多用几倍都不嫌多。
做数据处理,特别是FPGA应该避免用浮点数。即使用DSP也应该避免用浮点硬件的DSP,否则性价比太低。
小编抛砖引玉 这种帖子赞
其实FPGA能不能取代FPGA+DSP
你只要看现在的大多数同类产品(国外的)是怎么做的就知道了
如果国外产品方案绝大多数都是基于DSP+FPGA 说明单用FPGA还是存在问题的
可能是开发复杂程度 也可能是成本 等等 :)
小编啊,这是你想的吗?还是哪里转的,好像是比较早的资料了吧。
看成本
长知识拉
都是牛人啊
牛人啊,学习了
我是 菜鸟级别的
牛!
确实上面有几个人分析的听透彻的,牛
现在看起来的确不可能,但将来就难说了
恩,个人比较同意4楼的观点哈!
呵呵呵 牛人!
一切来自于需求,需求分析之后才能决定系统的体系结构
浮点数在硬件里比定点数处理起来复杂是真的,但是FPGA之所以不同于CPU就在于CPU同时只能做几个浮点乘法(再多核的CPU也不会有太多乘法器),而FPGA可以同时做几百个(stratix3都有700+的dsp block,相当于不到200个单精度乘法器,新一代的FPGA更多)并行,FPGA的优势是并行...根据需求决定架构。
另外关于golden model:这东西真的说不好,同样的C代码在不同的机器上(intel, amd, 32-bit, 64-bit)就能跑出不同的结果,matlab也一样,所以误差足够小就行了(如果不是做高精度的话)。
