计数器设计模板

所需计数的个数:num

计数器位宽:width

开始计数:wire start_cnt;

停止计数:wire end_cnt;

计数器:reg  [width-1:0]   cnt;

always @(posedge sclk or negedge rst_n)
begin
  if(rst_n == 1'b0)begin
    cnt <= 'd0;
  end
  else if(start_cnt)begin
    if(end_cnt)begin
      cnt <= 'd0;
    end
    else begin
      cnt <= cnt + 1'b1;
    end
  end
end

assign start_cnt = 1;
assign end_cnt = start_cnt && cnt==num-1;

 

/

 

例如:

reg [3:0] cnt0,cnt1;

wire start_cnt0,start_cnt1;

wire end_cnt0,end_cnt1;

always @(posedge sclk or negedge rst_n)
begin
  if(rst_n == 1'b0)begin
    cnt0 <= 'd0;
  end
  else if(start_cnt0)begin
    if(end_cnt0)begin
      cnt0 <= 'd0;
    end
    else begin
      cnt0 <= cnt0 + 1'b1;
    end
  end
end

assign start_cnt0 = 1;
assign end_cnt0 = start_cnt0 && cnt0==2-1;

always @(posedge sclk or negedge rst_n)
begin
   if(rst_n == 1'b0)begin
    cnt1 <= 'd0;
  end
  else if(start_cnt1)begin
    if(end_cnt1)begin
      cnt1 <= 'd0;
    end
    else begin
      cnt1 <= cnt1 + 1'b1;
    end
  end
end

assign start_cnt1 = end_cnt0;
assign end_cnt1 = start_cnt1 && cnt1==4-1;

 

转载于:https://www.cnblogs.com/MAQI/p/7693332.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值