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