集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 1541|回复: 4

FPGA Verilog中计数器的2中写法对比

[复制链接]
晓灰灰 发表于 2018-9-21 12:53:32 | 显示全部楼层 |阅读模式
功能是,计数记到24,清零,重新计数….

第一种写法:

module   count_debug        (

                                     clk,

                                     rst_n,

                                     dout

                                     );

input                    clk;

input                    rst_n;

output         [4:0]  dout;

reg              [4:0]  cnt;

always @(posedgeclk or negedge rst_n) begin

         if(rst_n == 1'b0) begin

                   cnt <= {5{1'b0}};

         end else if(cnt == 5'd24)begin

                   cnt <= {5{1'b0}};

         end else begin

                   cnt <= cnt + 1'b1;

         end

end

assign                  dout = cnt;

endmodule

         这种写法是我常用的方式,现在来看看消耗的逻辑单元



; Family                             ; Cyclone II                                    ;

; Device                             ; EP2C8Q208C8                                 ;

; TimingModels                      ; Final                                           ;

; Total logicelements               ; 9 / 8,256 ( <1 % )                     ;

;     Total combinational functions  ; 9 / 8,256 ( < 1 % )           ;

;     Dedicated logic registers      ; 5 / 8,256 ( < 1 % )               ;

; Totalregisters                    ; 5                                              ;

; Total pins                         ; 7 / 138 ( 5 % )                                ;

; Total virtualpins                 ; 0                                              ;

; Total memorybits                  ; 0 / 165,888 ( 0 %)                    ;

; EmbeddedMultiplier 9-bit elements ; 0 / 36 ( 0 % )              ;

RTL图如下:


第二种写法:

module   count_debug        (

                                      clk,

                                   rst_n,

                                         dout

                                     );



input                    clk;

input                    rst_n;

output         [4:0]  dout;

reg              [4:0]  cnt;

always @(posedgeclk or negedge rst_n) begin

         if(rst_n == 1'b0) begin

                   cnt <= {5{1'b0}};

         end else if(cnt < 5'd24)begin

                   cnt <= cnt + 1'b1;

         end else begin

                   cnt <= {5{1'b0}};

         end

end

assign                  dout = cnt;

endmodule

消耗的逻辑单元:

; Family                             ; Cyclone II                                    ;

; Device                             ; EP2C8Q208C8                                 ;

; TimingModels                      ; Final                                           ;

; Met timingrequirements            ; Yes                                         ;

; Total logicelements               ; 6 / 8,256 ( <1 % )                      ;

;     Total combinational functions  ; 6 / 8,256 ( < 1 % )            ;

;     Dedicated logic registers      ; 5 / 8,256 ( < 1 % )                ;

; Totalregisters                    ; 5                                                ;

; Total pins                         ; 7 / 138 ( 5 % )                                  ;

; Total virtualpins                 ; 0                                                ;

; Total memorybits                  ; 0 / 165,888 ( 0 %)                       ;

; EmbeddedMultiplier 9-bit elements ; 0 / 36 ( 0 % )                 ;


RTL图如下:



第一种写法比第二种写法多耗了3个逻辑单元。

从上面的逻辑单元和RTL图对比,在用计数器实现相同的功能时,可以看出  ==  COUNT 消耗的逻辑单元比   <   COUNT  消耗的逻辑单元要多。

这只是从例子上看出来的,那具体其他情况是不是,就不知道了。目前我在学习中,

以上结论仅供参考。


仿真波形如下:


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
Sunlife 发表于 2018-9-21 16:37:33 | 显示全部楼层
               学习了
zhangyukun 发表于 2018-9-22 09:39:54 | 显示全部楼层
FPGA Verilog中计数器的2中写法对比
 楼主| 晓灰灰 发表于 2018-11-29 20:28:37 | 显示全部楼层
FPGA Verilog中计数器的2中写法对比
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2025-5-1 07:10 , Processed in 0.061678 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表