求分析两段简单的verilog的计数器的代码写法上的不同会带来什么不同的效果,
时间:10-02
整理:3721RD
点击:
代码一:
always@(posedge CLK_25M)
if(cnt == 20'd1000000)
begin
cnt <= 20'd0;
end
else cnt <= cnt + 1'd1;
代码二:
always @ (posedge CLK_25M or negedge rst_n)
begin
if (!rst_n)
time_cnt <= 27'h0;
else
time_cnt <= time_cnt_n;
end
always @ (*)
begin
if (time_cnt == SET_TIME_1S)
time_cnt_n <= 27'h0;
else
time_cnt_n <= time_cnt + 27'h1;
end
两段代码都是计数器,后者将时序逻辑和组合逻辑分成了两个always的好处是什么?
always@(posedge CLK_25M)
if(cnt == 20'd1000000)
begin
cnt <= 20'd0;
end
else cnt <= cnt + 1'd1;
代码二:
always @ (posedge CLK_25M or negedge rst_n)
begin
if (!rst_n)
time_cnt <= 27'h0;
else
time_cnt <= time_cnt_n;
end
always @ (*)
begin
if (time_cnt == SET_TIME_1S)
time_cnt_n <= 27'h0;
else
time_cnt_n <= time_cnt + 27'h1;
end
两段代码都是计数器,后者将时序逻辑和组合逻辑分成了两个always的好处是什么?
为什么只能看到一段
什么情况?
我有发两段啊,分别注明了第一段和第二段了
只是不懂第二段代码那种写法的好处是在哪里
不知道有什么区别,可以综合一下看看原理图
将时序逻辑和组合逻辑分开,有点像三段式状态机的写法。就看到过锆石科技的视频这样写计数器,不知道好在哪
如果彻底理解时序逻辑和组合逻辑,就知道这样写的好处了,我是这样认为的。我也是从锆石科技的文章里理解的,分清时序逻辑和组合逻辑确实挺重要的
计数器没必要这样吧,一个信号用一个always就行了。感觉分两段写两个信号还麻烦些