fpga之计数器和状态机规范

本文探讨了FPGA中计数器的设计要点,包括初始值、加1条件和结束条件,强调了自增和自减计数器的适用场景。此外,还介绍了状态机的三段式写法,强调了state_c和state_n信号的作用,并提醒在设计时需先绘制状态转移图确保精确到时钟周期。
摘要由CSDN通过智能技术生成

一、计数器最关心的三个问题:

1.初始值是多少

  • 复位值
  • 每轮技术的初始值

2.加1条件是什么

3.结束条件

  • 即结束本轮技术的条件
  • 一般又是加1条件,不要特地为结束而多统计一个数
  • 记得要变回初始值

计数器使用中的注意问题

  • 用于统计计数的,建议用自增计数器
  • 用于不定时计数的(即每轮计数多少个不定),建议自减计数器
  • 计数器一般从0开始计数,不要从非0开始。这样有助于检查计数器是否正确,也便于他人理解。
  • 选好结束数,不要多计一个数来做结束。例如需要计10个数,则从0计数到9即可,结束数时9二不是10.
  • 位宽应合理。位宽要能保证可以容纳得下计数器可以达到的最大的数,例如,记到6最少需要3位的位宽,二计到10就需要4位位宽了。
  • 计数时,特别要注意0是否要统计在内。
//不定时计数,用自减计数器
always  @(posedge clk or negedge rst_n)begin
    if(rst_n == 1'b0)begin
        cnt <=  0;
    end
    else if(start == 1)begin
        cnt <=  max;
    end
    else if(cnt != 0)begin
        cnt <=  cnt - 1;
    end
end

//统计计数,用自增计数器
always @(posedge clk or negedge rst_n)begin
    if(!rst_n)begi
  • 6
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值