xilinx和altera的区别

一、从好用来说,肯定是Xilinx的好用,不过Altera的便宜

他们的特点,Xilinx的短线资源非常丰富,这样在实现的时候,布线的成功率很高,尤其是逻辑做得比较满的时候。

Altera的FPGA的短线资源经常不够用,经常要占用LE来充当布线资源(这也是为什么Altera的FPGA可以便宜的原因,资源少些当然便宜),但是如果你是高手,也能把他的性能发挥得很好。

另外就是关于块RAM,Xilinx的双口RAM是真的,Altera的没有双口RAM,如果你要实现真正的双口RAM,只能用两块RAM来背靠背地实现,这样你的RAM资源就少了一半,如果你的应用对片内双口RAM的需求很重要,用Altera的就划不来。

xilinx和altera的区别 - 第1张

二、Xilinx与Altera FPGA比较系列之一 逻辑资源速度

一开始没想到这个比较会得到大家的关注,纯粹是出于自己的兴趣。两个厂商都会宣称自己某一方面比对方好,到底是谁的更好呢?这肯定是个仁者见仁,智者见智的问题。最近这段时间比较忙,项目到了比较关键的阶段,加上其他一些杂七杂八的事情,很难有比较完整的时间坐下来完成报告,直到今天才基本把一些文档整理完。在整理的过程中,越来越觉得很难比较两者之间的速度,因为相关的因素实在太多了。软件的好坏,器件本身的延迟,设计等等对最优的速度都有着相当大的影响。做速度比较用的滤波器很难代表其他的设计,算是抛砖引玉,希望能够和大家一起讨论FPGA的速度这个问题。在整理过程中,发现了很多很有趣的事情,比如Stratix III和Stratix II的速度区别等。为此,作者做了一些简单的实验,希望能够找到合理的解释,来分析出现这些现象的原因。 

编译之前的考虑

根据作者自己的一些经验,作者把常用的一些开关打开了,以便更好的优化速度。另外,有一些选项作者拿不准是否两个软件都有相似的开关,就没有打开。  为了使得比较更加合理,作者尽可能选择门数和IO速度都比较接近的FPGA。  Xilinx采用ISE9.1 Service Pack1版本,Altera采用Quartus7.1 Service Pack1版本, 

Xilinx:   

TypeOptionValue
Synthesis OptionOptimization GoalSpeed
Optimization EffortHigh
Use DSP48No
Map OptionPerform timing driven packing and placementyes
Map effort levelhigh
Optimization strategyspeed
Place & RoutePlace and route effort levelhigh

Altera

TypeOptionValue
Synthesis Optionstratixii_optimization_techniqueSpeed
Fit OptionFitter_EffortStandard (Highest)
optimize_fast_corner_timingon
physical_synthesis_combo_logicon

编译结果

作者采用了两种形式的滤波器来比较两者的速度。第一种实现形式是57阶FIR滤波器, 8比特输入数据, 8比特输出数据, 13比特系数, 滤波器采用转置形式的结构 。 

下面是得到的测试结果。 

表1 转置形式滤波器 

逻辑资源运行速度
FPGA PlatformFPGA TypeSpeed (MHz)Speed (MHz)FPGA TypeFPGA Platform
Stratix IIIEP3SE80F780C2330269xc5vlx85-ff1153-3Virtex 5
EP3SE80F780C3276238xc5vlx85-ff1153-2
EP3SE80F780C4245203xc5vlx85-ff1153-1
Stratix IIEP2S90F1020C3318207xc4vlx100-ff1148-12Virtex 4
EP2S90F1020C4279182xc4vlx100-ff1148-11
EP2S90F1020C5234156xc4vlx100-ff1148-10

第二种实现方式是相同的滤波器,采用直接形式的结构,乘完之后的数据按照四输入加法的方式求和。 

下面是得到的测试结果。 

表2 直接形式滤波器 

逻辑资源运行速度
FPGA PlatformFPGA TypeSpeed (MHz)Speed (MHz)FPGA TypeFPGA Platform
Stratix IIIEP3SE80F780C2239275xc5vlx85-ff1153-3Virtex 5
EP3SE80F780C3212243xc5vlx85-ff1153-2
EP3SE80F780C4180211xc5vlx85-ff1153-1
Stratix IIEP2S90F1020C3223189xc4vlx100-ff1148-12Virtex 4
EP2S90F1020C4200167xc4vlx100-ff1148-11
EP2S90F1020C5171150xc4vlx100-ff1148-10

一些简单的结论

1.         从表1可以看出,Altera的FPGA运行速度快不少。Stratix II 比 V4的速度高出尤其多。 

2.         表1,2的结果表明Stratix III 的速度比 Stratix II的没有显著的增加。Xilinx的V5比V4速度提升了不少。 

3.         对于直接形式的FIR滤波器,一个有趣的现象是Stratix II比V4快,但是V5比Stratix III快。 

为了能够更好的理解造成这些差异的原因,下面对两个公司的FPGA做进一步的分析。首先,作者对32 bit的加法在两个FPGA进行编译,比较两者的速度。 

表1 32-bit加法器速度 

FPGA PlatformFPGA TypeSpeed (MHz)Speed (MHz)FPGA TypeFPGA Platform
Stratix IIIEP3SE80F780C2457534xc5vlx85-ff1153-3Virtex 5
Stratix IIEP2S90F1020C3405361xc4vlx100-ff1148-12Virtex 4

从上面的表格来看,Xilinx的V5比V4速度提高了不少,尤其是逻辑资源的加法器速度。Xilinx的V5一位进位逻辑延迟为 83ps,寄存器输出延迟为326ps, 最低位加法延迟为318ps。Xilinx的V4一位进位逻辑延迟为 66ps,寄存器输出延迟为258ps, 最低位加法延迟为433ps。Altera的Stratix III比Stratix II只提高了一些,但是并不是太大。暂时没有找到Altera的进位逻辑的延迟参数,Stratix II寄存器输出延迟为94ps, Stratix III为 

下面我们来看看乘法器的情况。这里我比较了两种乘法器:两个输入可变(下面称为可变乘法器),一个输入可变(下面称为固定系数乘法器)。分别针对16bit 和8 bit情况做了比较,还是采用纯逻辑资源来实现上述运算。对于一个输入可变的情况,另外一个数我用的是有符号数的最大值,即8bit的0x7F和16bit的0x7FFF。 

下面的一些表格给出了一些测试结果。 

表2 两个输入可变16bit乘法器 

FPGA PlatformFPGA TypeSpeed (MHz)Speed (MHz)FPGA TypeFPGA Platform
Stratix IIIEP3SE80F780C2193140xc5vlx85-ff1153-3Virtex 5
Stratix IIEP2S90F1020C3182115xc4vlx100-ff1148-12Virtex 4

表3 一个输入可变16bit乘法器 

FPGA PlatformFPGA TypeSpeed (MHz)Speed (MHz)FPGA TypeFPGA Platform
Stratix IIIEP3SE80F780C2349191xc5vlx85-ff1153-3Virtex 5
Stratix IIEP2S90F1020C3312151xc4vlx100-ff1148-12Virtex 4

表4 两个输入可变8bit乘法器 

FPGA PlatformFPGA TypeSpeed (MHz)Speed (MHz)FPGA TypeFPGA Platform
Stratix IIIEP3SE80F780C2265203xc5vlx85-ff1153-3Virtex 5
Stratix IIEP2S90F1020C3255166xc4vlx100-ff1148-12Virtex 4

表5 一个输入可变8bit乘法器 

FPGA PlatformFPGA TypeSpeed (MHz)Speed (MHz)FPGA TypeFPGA Platform
Stratix IIIEP3SE80F780C2431303xc5vlx85-ff1153-3Virtex 5
Stratix IIEP2S90F1020C3440251xc4vlx100-ff1148-12Virtex 4

从以上的表格可以看出Altera的可变输入乘法器比Xilinx稍微快一些。固定系数乘法器比Xilinx速度高出不少(由于Quartus优化的缘故,下面会专门分析)。Xilinx的V5比V4速度有了较大的提高,而Stratix III的速度比Stratix II没有明显的提高。 

Quartus软件可以对固定系数乘法器做优化,比如与0x7F相乘,等价于先与0x080相乘,然后减去被乘数。我使用了另外一个系数0x7D,结果发现速度明显下降,Stratix III C2的最高速度只有253MHz,而占用的资源却增加不少。因为这一点,也导致了在实现转置形式的FIR滤波器(速度主要局限在固定系数乘法器)上,Altera不仅可以少用一部分资源,速度比Xilinx快不少。

上次的分析还剩下一点点尾巴,就是寻找直接形式滤波器Xilinx V5比Altera S3快的原因。 

在对直接形式的滤波器做比较时,发现Xilinx的V5比Altera的S3要快一些,时序分析报告显示关键路径在乘完之后的求和运算。我单独把求和运算做了分析,下面是得到的结果。奇怪的是这种情况下Xilinx的V5比Altera的S3要慢一些。可能是其他原因造成了上述的差别,今后再继续研究这个问题。 

FPGA PlatformFPGA TypeSpeed (MHz)Speed (MHz)FPGA TypeFPGA Platform
Stratix IIIEP3SE80F780C2304255xc5vlx85-ff1153-3Virtex 5
Stratix IIEP2S90F1020C3264208xc4vlx100-ff1148-12Virtex 4

下一个系列继续研究直接形式和转置形式滤波器采用DSP块的一些实现情况。 

大家知道,高端的FPGA中都有为数不少的DSP块,里边主要包括一些18X18的乘法器,以及加法器等单元,相邻的DSP往往可以通过专用的连线互连,从而实现滤波器的级联设计,提高滤波器的运行速度。Xilinx和Altera的DSP块有所差别,Xilinx的DSP模块可以做18X18乘法,18X18乘累加运算,18X18乘加运算等,其中累加器可以到48位宽,厂家标称的最高速度位500MHz。Altera的DSP块可以分解成为8X8, 16X16, 32X32块,可以完成乘法,乘累加,乘加等运算,厂家标称的最高速度为450MHz。 

下面的表格给出了一些综合结果。 

表1  转置形式的FIR滤波器综合结果 

FPGA PlatformFPGA TypeSpeed (MHz)Speed (MHz)FPGA TypeFPGA Platform
Stratix IIEP2S90F1020C3313165xc4vsx35-ff668-12Virtex 4
EP2S90F1020C4282154xc4vsx35-ff668-11
EP2S90F1020C5240124xc4vsx35-ff668-10

表2  直接形式的FIR滤波器综合结果 

FPGA PlatformFPGA TypeSpeed (MHz)Speed (MHz)FPGA TypeFPGA Platform
Stratix IIEP2S90F1020C3195109xc4vsx35-ff668-12Virtex 4
EP2S90F1020C4169101xc4vsx35-ff668-11
EP2S90F1020C514188xc4vsx35-ff668-10

一些简单的分析: 

1.  Xilinx之所以速度比Altera慢一个原因可能是ISE综合时可能需要加一些约束才可以达到最佳状态,就这件事情我曾经咨询过Xilinx的应用工程师,她给了我一个使用Synplify综合的结果,速度明显比我使用ISE的好不少。 

2.  有关Xilinx的DSP Block,我还试了不少其他的模块,包括简单的乘法器等,但是都不能达到器标称的500MHz,另外,ISE不能支持随意的写法,对代码的风格有一定的要求,比如,需要写成同步reset,这样才能被综合到DSP Block当中。

首先, Xilinx和Altera的FPGA DSP功能基本相同, 两者基本上可以实现相近的功能. 比较小的差别是,Xilinx的DSP模块可以在模块内做乘累加运算, 而Altera的必须借助逻辑资源实现. 另外, 两者的速度有所区别, Xilinx V4标称最高速度为500MHz, 而Altera S2标称最高速率为450MHz.  在实际使用过程当中, 厂商的参数固然重要, 然而用户的使用对性能的影响也是非常大的. 我在Altera的S2C3上用综合工具自动识别 *, 以及调用 IP core, 发现两者的结果一致, 对于16X16的乘法器速度是367.65MHz, 对于8X8乘法器的速度是375.94MHz. Altera的IP core对流水线的支持相对较少, 只有2级. Xilinx综合工具似乎并没有那么智能, 只能把 * 识别出来, 用IP core的0级流水线替代, 而不能将乘法后跟随的一级流水线自己吸收到IP core中. 不过Xilinx的乘法器提供了18级流水线选择, 因而采用IP core例化实现的乘法器速度大大的提升. 我做的一个结果(V4-12), 采用综合工具infer出乘法器的速度是189MHz, 而采用IP core例化的方法实现的为260MHz和611MHz, 分别对应一级流水线和两级流水线结构.   

从以上实验结果以及笔者的使用经验来看, 似乎Altera的软件的智能程度稍高一些, 然而Xilinx的硬件功能更强. 在本例子当中, 通过例化IP core, 可以大大提高乘法器的速度. 如果采用Xilinx的FPGA, 在项目前期时可以采用综合工具infer, 留两级流水线待将来例化IP core使用, 这样一方面可以达到原型平台的快速开发, 用可以保证以后性能的改进和提高. 而采用altera的FPGA, 似乎软件已经解决了以上问题, 利用IP core例化的效果并不明显.

本文原创,作者:二牛学FPGA,其版权均为FPGA线上课程平台|最全栈的FPGA学习平台|FPGA工程师认证培训所有。
如需转载,请注明出处:https://z.shaonianxue.cn/9441.html

"愿我的文字能带给您一丝美好"

还没有人赞赏,支持一下

评论

A 为本文作者,G 为游客总数:0
加载中…

提交评论

游客,您好,欢迎参与讨论。

我的购物车

购物车为空

优惠券

没有优惠券