新学verilog,有个问题想请教

2019-07-16 01:47发布

我想实现这么一个功能:一个两位的输出,从00开始加到11,并且每个数字保持1秒,然后循环这个功能。这个保持应该怎么实现呢?是对时钟计数然后计到1秒了对输出加1,还是有其他可以实现1秒保持的办法?晶振就是是32.768M的晶振。刚学verilog不久,求教
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
3条回答
my_electron
2019-07-16 05:10
你的时钟是32.768M,每秒运行32,768,000次,用个寄存器32,768,000次一个循环就是一秒钟了

reg   [28:0] cnt;
reg   [1:0] led;

always @(posedge clk or negedge rst_n)
begin
    if(rst_n == 1'b0) begin
        cnt <= 0;
   end
   else if(cnt < (32768000 - 1)) begin
      cnt <= cnt + 1;
    end
   else begin
      cnt <= 0;  
   end
end

always @(posedge clk or negedge rst_n)
begin
    if(rst_n == 1'b0) begin
       led  <= 0;
   end
   else if(cnt == (32768000 - 1) ) begin
       led  <=  led + 1;  
   end
   else ;
end

一周热门 更多>