xilinx和altera的区别
一、从好用来说,肯定是Xilinx的好用,不过Altera的便宜
他们的特点,Xilinx的短线资源非常丰富,这样在实现的时候,布线的成功率很高,尤其是逻辑做得比较满的时候。
Altera的FPGA的短线资源经常不够用,经常要占用LE来充当布线资源(这也是为什么Altera的FPGA可以便宜的原因,资源少些当然便宜),但是如果你是高手,也能把他的性能发挥得很好。
另外就是关于块RAM,Xilinx的双口RAM是真的,Altera的没有双口RAM,如果你要实现真正的双口RAM,只能用两块RAM来背靠背地实现,这样你的RAM资源就少了一半,如果你的应用对片内双口RAM的需求很重要,用Altera的就划不来。

二、Xilinx与Altera FPGA比较系列之一 逻辑资源速度
一开始没想到这个比较会得到大家的关注,纯粹是出于自己的兴趣。两个厂商都会宣称自己某一方面比对方好,到底是谁的更好呢?这肯定是个仁者见仁,智者见智的问题。最近这段时间比较忙,项目到了比较关键的阶段,加上其他一些杂七杂八的事情,很难有比较完整的时间坐下来完成报告,直到今天才基本把一些文档整理完。在整理的过程中,越来越觉得很难比较两者之间的速度,因为相关的因素实在太多了。软件的好坏,器件本身的延迟,设计等等对最优的速度都有着相当大的影响。做速度比较用的滤波器很难代表其他的设计,算是抛砖引玉,希望能够和大家一起讨论FPGA的速度这个问题。在整理过程中,发现了很多很有趣的事情,比如Stratix III和Stratix II的速度区别等。为此,作者做了一些简单的实验,希望能够找到合理的解释,来分析出现这些现象的原因。
编译之前的考虑
根据作者自己的一些经验,作者把常用的一些开关打开了,以便更好的优化速度。另外,有一些选项作者拿不准是否两个软件都有相似的开关,就没有打开。 为了使得比较更加合理,作者尽可能选择门数和IO速度都比较接近的FPGA。 Xilinx采用ISE9.1 Service Pack1版本,Altera采用Quartus7.1 Service Pack1版本,
Xilinx:
Type | Option | Value |
Synthesis Option | Optimization Goal | Speed |
Optimization Effort | High | |
Use DSP48 | No | |
Map Option | Perform timing driven packing and placement | yes |
Map effort level | high | |
Optimization strategy | speed | |
Place & Route | Place and route effort level | high |
Altera
Type | Option | Value |
Synthesis Option | stratixii_optimization_technique | Speed |
Fit Option | Fitter_Effort | Standard (Highest) |
optimize_fast_corner_timing | on | |
physical_synthesis_combo_logic | on |
编译结果
作者采用了两种形式的滤波器来比较两者的速度。第一种实现形式是57阶FIR滤波器, 8比特输入数据, 8比特输出数据, 13比特系数, 滤波器采用转置形式的结构 。
下面是得到的测试结果。
表1 转置形式滤波器
逻辑资源运行速度 | |||||
FPGA Platform | FPGA Type | Speed (MHz) | Speed (MHz) | FPGA Type | FPGA Platform |
Stratix III | EP3SE80F780C2 | 330 | 269 | xc5vlx85-ff1153-3 | Virtex 5 |
EP3SE80F780C3 | 276 | 238 | xc5vlx85-ff1153-2 | ||
EP3SE80F780C4 | 245 | 203 | xc5vlx85-ff1153-1 | ||
Stratix II | EP2S90F1020C3 | 318 | 207 | xc4vlx100-ff1148-12 | Virtex 4 |
EP2S90F1020C4 | 279 | 182 | xc4vlx100-ff1148-11 | ||
EP2S90F1020C5 | 234 | 156 | xc4vlx100-ff1148-10 |
第二种实现方式是相同的滤波器,采用直接形式的结构,乘完之后的数据按照四输入加法的方式求和。
下面是得到的测试结果。
表2 直接形式滤波器
逻辑资源运行速度 | |||||
FPGA Platform | FPGA Type | Speed (MHz) | Speed (MHz) | FPGA Type | FPGA Platform |
Stratix III | EP3SE80F780C2 | 239 | 275 | xc5vlx85-ff1153-3 | Virtex 5 |
EP3SE80F780C3 | 212 | 243 | xc5vlx85-ff1153-2 | ||
EP3SE80F780C4 | 180 | 211 | xc5vlx85-ff1153-1 | ||
Stratix II | EP2S90F1020C3 | 223 | 189 | xc4vlx100-ff1148-12 | Virtex 4 |
EP2S90F1020C4 | 200 | 167 | xc4vlx100-ff1148-11 | ||
EP2S90F1020C5 | 171 | 150 | xc4vlx100-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 Platform | FPGA Type | Speed (MHz) | Speed (MHz) | FPGA Type | FPGA Platform |
Stratix III | EP3SE80F780C2 | 457 | 534 | xc5vlx85-ff1153-3 | Virtex 5 |
Stratix II | EP2S90F1020C3 | 405 | 361 | xc4vlx100-ff1148-12 | Virtex 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 Platform | FPGA Type | Speed (MHz) | Speed (MHz) | FPGA Type | FPGA Platform |
Stratix III | EP3SE80F780C2 | 193 | 140 | xc5vlx85-ff1153-3 | Virtex 5 |
Stratix II | EP2S90F1020C3 | 182 | 115 | xc4vlx100-ff1148-12 | Virtex 4 |
表3 一个输入可变16bit乘法器
FPGA Platform | FPGA Type | Speed (MHz) | Speed (MHz) | FPGA Type | FPGA Platform |
Stratix III | EP3SE80F780C2 | 349 | 191 | xc5vlx85-ff1153-3 | Virtex 5 |
Stratix II | EP2S90F1020C3 | 312 | 151 | xc4vlx100-ff1148-12 | Virtex 4 |
表4 两个输入可变8bit乘法器
FPGA Platform | FPGA Type | Speed (MHz) | Speed (MHz) | FPGA Type | FPGA Platform |
Stratix III | EP3SE80F780C2 | 265 | 203 | xc5vlx85-ff1153-3 | Virtex 5 |
Stratix II | EP2S90F1020C3 | 255 | 166 | xc4vlx100-ff1148-12 | Virtex 4 |
表5 一个输入可变8bit乘法器
FPGA Platform | FPGA Type | Speed (MHz) | Speed (MHz) | FPGA Type | FPGA Platform |
Stratix III | EP3SE80F780C2 | 431 | 303 | xc5vlx85-ff1153-3 | Virtex 5 |
Stratix II | EP2S90F1020C3 | 440 | 251 | xc4vlx100-ff1148-12 | Virtex 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 Platform | FPGA Type | Speed (MHz) | Speed (MHz) | FPGA Type | FPGA Platform |
Stratix III | EP3SE80F780C2 | 304 | 255 | xc5vlx85-ff1153-3 | Virtex 5 |
Stratix II | EP2S90F1020C3 | 264 | 208 | xc4vlx100-ff1148-12 | Virtex 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 Platform | FPGA Type | Speed (MHz) | Speed (MHz) | FPGA Type | FPGA Platform |
Stratix II | EP2S90F1020C3 | 313 | 165 | xc4vsx35-ff668-12 | Virtex 4 |
EP2S90F1020C4 | 282 | 154 | xc4vsx35-ff668-11 | ||
EP2S90F1020C5 | 240 | 124 | xc4vsx35-ff668-10 |
表2 直接形式的FIR滤波器综合结果
FPGA Platform | FPGA Type | Speed (MHz) | Speed (MHz) | FPGA Type | FPGA Platform |
Stratix II | EP2S90F1020C3 | 195 | 109 | xc4vsx35-ff668-12 | Virtex 4 |
EP2S90F1020C4 | 169 | 101 | xc4vsx35-ff668-11 | ||
EP2S90F1020C5 | 141 | 88 | xc4vsx35-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例化的效果并不明显.
"愿我的文字能带给您一丝美好"
分享海报

xilinx和altera的区别
一、从好用来说,肯定是Xilinx的好用,不过Altera的便宜他们的特点,Xilinx的短…
FPGA线上课程平台|最全栈的FPGA学习平台|FPGA工程师认证培训
FPGA在线学习平台
评论
A 为本文作者,G 为游客总数:0