新手小白跪求各位大神详解下面的Verilog程序

2019-07-15 23:33发布

module count
(
input clk,
input reset,
input zero,
output [23:0] num
);
//捕捉zero上升沿
reg zero_r1;
reg zero_r2;
always @ ( posedge clk or negedge reset )
if( !reset )
  begin
   zero_r1 <= 1'b0;
   zero_r2 <= 1'b0;
  end
else
  begin
   zero_r1 <= zero;
   zero_r2 <= zero_r1;
  end
//用来计数zero一个周期内有多少个时钟
reg [23:0] num_r;
reg [1:0] step;
always @ ( posedge clk or negedge reset )
if( !reset )
  begin
   num_r <= 24'd0;
   step <= 2'd0;
  end
else
  begin
   case( step )
   2'd0://等待zero上升沿到来
    if( zero_r1 && !zero_r2 )
     begin
      step <= step + 1'b1;
      num_r <= num_r + 1'b1;
     end
    else ;
   2'd1://计数
    if( zero_r1 && !zero_r2 )
     step <= step + 1'b1;
    else
     num_r <= num_r + 1'b1;
   endcase
  end
assign num = num_r;


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
s125053597
1楼-- · 2019-07-16 00:53
 精彩回答 2  元偷偷看……
odbc1230
2楼-- · 2019-07-16 04:07
已经注释的很清楚了,还有什么不明白?不是要每行都注释一下吧?
s125053597
3楼-- · 2019-07-16 05:52
odbc1230 发表于 2015-9-7 14:45
已经注释的很清楚了,还有什么不明白?不是要每行都注释一下吧?

。。。主要是不太理解,不知道为什么这样写。。
lovechunhuip
4楼-- · 2019-07-16 10:05
学习                                                

一周热门 更多>