在第一篇做先做一个最基本的比较,就是比较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 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<
