本帖最后由 梦翼师兄 于 2015-12-14 16:45 编辑
经过前面的学习,我想大家已经意识到计数器的重要性,可以这样说,在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核计数器 >未优化计数器;
|