阅读新闻
电子工程周刊:   ←每周自动接收行业新闻,技术资料,设计文章

之一 逻辑资源速度

[日期:2008-6-23] 来源:EEFOCUS  作者:橄榄之家 [字体: ]

 

在第一篇做先做一个最基本的比较,就是比较Altera的LE和Xilinx的CLB在做数学运算时的速度。

这里我用的是自己设计的一个滤波器, 57阶FIR滤波器, 8比特输入数据, 8比特输出数据, 13比特系数, 滤波器采用直接形式的结构。Quartus II和ISE采用默认的设计,即不加各种约束。

下面是一些比较结果。如有不妥之处,欢迎各位高手指点。

从下面表中的结果来看,Stratix II 和 Virtex IV相比,速度略占优势。不过这跟设计有较大关系,欢迎有不同看法的人一起讨论。

FPGA Platform FPGA Type Speed (MHz) 速度百分比 相邻速度等级比较
Stratix II EP2S15F484C3  218 260% 114%
EP2S15F484C4 192 229% 119%
EP2S15F484C5 162 193%  
Stratix EP1S10F484C5 147 175% 111%
EP1S10F484C6 132 157% 118%
EP1S10F484C7 112 133% 108%
EP1S25F672C8 104 124%  
Statrix GX EP1SGX10CF672C5 143 170%  
Cyclone II EP2C8T144C6 146 174% 124%
EP2C8T144C7 118 140% 122%
EP2C8T144C8 97 115%  
Cyclone EP1C3T144C6 146 174% 121%
EP1C3T144C7 121 144% 111%
EP1C3T144C8 109 130%  
Virtex IV xc4vlx15,-12 205 244% 123%
xc4vlx15,-11 166 198% 111%
xc4vlx15,-10 149 177%  
Virtex II Pro xc2vp2-7fg256 176 210% 117%
xc2vp2-6fg256 150 179% 114%
xc2vp2-5fg256 132 157%  
Virtex II xc2v500-6fg256 148 176% 123%
xc2v500-5fg256 120 143% 115%
xc2v500-4fg256 104 124%  
Virtex xcv600-6bg432 87 104% 113%
xcv600-5bg432 77 92% 120%
xcv600-4bg432 64 76%  
Spartan III E xc3s500e-5cp132 133 158% 116%
xc3s500e-4cp132 115 137%  
Spartan III xc3s1000-5fg320 112 133% 114%
xc3s1000-4fg320 98 117%  
Spartan II E xc2s600e-7fg456 94 112% 112%
xc2s600e-6fg456 84 100%  

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

 

编译结果

作者采用了两种形式的滤波器来比较两者的速度。第一种实现形式是57FIR滤波器, 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可以看出,AlteraFPGA运行速度快不少。Stratix II V4的速度高出尤其多。

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

3.         对于直接形式的FIR滤波器,一个有趣的现象是Stratix IIV4快,但是V5Stratix 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
 

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

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

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

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优化的缘故,下面会专门分析)。XilinxV5<