新学verilog,有个问题想请教

2019-07-16 01:47发布

我想实现这么一个功能:一个两位的输出,从00开始加到11,并且每个数字保持1秒,然后循环这个功能。这个保持应该怎么实现呢?是对时钟计数然后计到1秒了对输出加1,还是有其他可以实现1秒保持的办法?晶振就是是32.768M的晶振。刚学verilog不久,求教
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
my_electron
1楼-- · 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

虽虽碰碰拳
2楼-- · 2019-07-16 07:39
my_electron 发表于 2013-4-1 15:37
你的时钟是32.768M,每秒运行32,768,000次,用个寄存器32,768,000次一个循环就是一秒钟了

reg   [28:0 ...

猿来还是要靠计数器啊。。。我还是重新弄个分频模块好了。。。其他地方也能用~谢了~
xiewenbin520
3楼-- · 2019-07-16 08:21
分频模块还是不要随便用,对设计稳定性有影响,一般都是用计数器作为使能控制端

一周热门 更多>