EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
* A3 L1 Q+ {4 A/ d' v
经过前面的学习,我想大家已经意识到计数器的重要性,可以这样说,在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
1 o" o J! I5 d F. H, U6 D
自动综合的计数器 架构图: 用Verilog HDL描述出来的代码如下: 测试代码如下: 仿真结果如下: 资源使用率如下图所示: 经过静态时序分析后,这种架构下的计数器最快可以去到327.23Mhz。 经过优化的计数器 9 r7 M% ] R9 _' Z4 I0 h- ]' k
架构图: 用Verilog HDL描述出来的代码如下: ( @$ j- v, F" i% c2 x
! w( R5 g' P4 _! n
6 u. Z9 ?3 I8 a# X t! @
8 _: B8 n$ h+ G# K- T* w
4 ^# s1 s3 i3 b# T' S% n, P
- {- `0 g" {( Q1 b3 ^- {
: M" m. Q' N9 H$ u
" c" ~% K3 @, C5 Y% U# G* r
测试代码如下: 仿真结果如下: 资源使用率如下图所示: 经过静态时序分析后,这种架构下的计数器最快可以去到357.27Mhz,比未优化的计数器频率提升20Mhz。 使用IP核计数器 测试代码如下: 仿真结果如下: 资源使用率如下图: 经过静态时序分析后,这种架构下的计数器最快可以去到397.93Mhz,比优化的计数器频率提升40Mhz,比未优化的计数器频率提升了60Mhz 总结: 速度方面 : IP核计数器 > 优化计数器 > 为优化计数器; 资源使用 : 优化计数器 > IP核计数器 >未优化计数器;
& j; Y$ ^5 B! C* w/ x, c! ?
5 t5 K! ]- i ]1 p" l) T h) ?
4 f9 U2 n' h j* s& {: v |