功能是,计数记到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 消耗的逻辑单元要多。
这只是从例子上看出来的,那具体其他情况是不是,就不知道了。目前我在学习中,
以上结论仅供参考。
仿真波形如下:
-
FPGA
+关注
关注
1656文章
22292浏览量
630413
发布评论请先 登录
频率计数器/定时器 时间间隔计数器的应用领域和范围的深度解析 频率计数器模块
如何利用Verilog HDL在FPGA上实现SRAM的读写测试
武汉特高压:避雷器放电计数器校验仪,筑牢电力防雷 “安全屏障”
雷击计数器的种类和综合选型部署解决方案
雷电(雷击)计数器的原理、作用及行业应用解决方案
MCU定时器/计数器
STM32F103高级定时器中,开启单脉冲模式是不是会立刻清除计数器使能位?
KEYSIGHT是德科技53220A台式频率计计数器原安捷伦
尘埃粒子计数器有什么特点
智能雷击计数器的综合行业解决方案

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