功能是,计数记到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 消耗的逻辑单元要多。
这只是从例子上看出来的,那具体其他情况是不是,就不知道了。目前我在学习中,
以上结论仅供参考。
仿真波形如下:
全部0条评论
快来发表一下你的评论吧 !