经过前面的学习,我想大家已经意识到计数器的重要性,可以这样说,在FPGA的设计中,计数器无处不在,有时候计数器的性能决定了一个项目的成败,所以在这里,我们分别比较三种计数器的性能,第一种综合工具自动综合出来的计数器,第二种是经过优化的计数器,而第三种就是使用IP核的计数器。在比较这三种计数器之前,我们首先来了解一下计数器的数学模型。
计数器的数学模型:
有位宽是N的同步计数器count:
QN-1QN-2QN-3…Q1Q0= count[N-1:0];
其中:
Q0 = Q0(clk↑)
Q1 = Q1(clk↑, Q0 = 1)
Q2 = Q2(clk↑, Q1 & Q0 = 1)
Q3 = Q3(clk↑, Q2 & Q1 & Q0 = 1)
……………
QN-2 = Qn-2(clk↑, Qn-3 & Qn-4 &…… Q1 & Q0= 1)
QN-1 = Qn-1(clk↑, Qn-2 & Qn-3 &…… Q1 & Q0= 1)
若有EN-1EN-2 EN-3……E0满足:
E0 = 1
E1 = E0& Q0
E2 = E1& Q1
…………
EN-2 = EN-3& QN-3
EN-1 = EN-2& QN-2
则可以得到:
Q0 = Q0^ E0
Q1 = Q1^ E1
Q2 = Q2^ E2
…………
QN-2 = QN-2^ EN-2
QN-1 = QN-1^ EN-1
自动综合的计数器
架构图:
用Verilog HDL描述出来的代码如下:
测试代码如下:
仿真结果如下:
资源使用率如下图所示:
经过静态时序分析后,这种架构下的计数器最快可以去到327.23Mhz。
经过优化的计数器
架构图:
用Verilog HDL描述出来的代码如下:
测试代码如下:
仿真结果如下:
资源使用率如下图所示:
经过静态时序分析后,这种架构下的计数器最快可以去到357.27Mhz,比未优化的计数器频率提升20Mhz。
使用IP核计数器
测试代码如下:
仿真结果如下:
资源使用率如下图:
经过静态时序分析后,这种架构下的计数器最快可以去到397.93Mhz,比优化的计数器频率提升40Mhz,比未优化的计数器频率提升了60Mhz
总结:
速度方面 : IP核计数器 > 优化计数器 > 为优化计数器;
资源使用 : 优化计数器 > IP核计数器 >未优化计数器;
本帖最后由 梦翼师兄 于 2015-12-14 16:45 编辑