FPGA-计数器设计规范

计数器的书写规范个人感觉明德扬的模板言之有理,其规则如下:

规则一:逐一考虑三要素-初值、加1条件和结束值。

规则二:计数初值必须为0

规则三:使用某一计数值,必须同时满足加一条件

规则四:结束条件必须同时满足加1条件,且结束值必须是x-1的形式

规则五:当取某个数时,assign形式必须为:(加1条件)&&(cnt==计数值-1)

规则六:结束后必须回到0

规则七:若限定范围,则推荐使用“>="和"<"两种符号

规则八:设计步骤是,先写计数器的always段,条件用名字代替;然后用assign写出加1条件;最后用assign写出结束条件

规则九:加1条件必须与计数器严格对齐,其它信号一律向计数器对齐

规则十:命名必须符合规范,比如:add_cnt表示加1条件;end_cnt表示结束条件

具体的规则细节建议通读潘文明的书籍,手把手教你学FPGA设计:基于大道至简的至简设计法

计数器的设计步骤主要包括:

1.明确功能,输入输出信号

2.功能波形,信号的时序波形图

3.计数结构,计数框架,一个always块只处理一个信号

4.加1和结束条件

5.定义特殊点,如结束点、触发点、开始点、中点等

6.完整性检查

7.计数器代码

8.功能代码

计数器模板为:

parameter CHANGETIME=1000_0000;

wire add_cnt;
wire end_cnt;

reg [23:0] cnt;

always @(posedge sys_clk or negedge sys_rst)begin
	if(!sys_rst)
		cnt <= 1'b0;
	else if(add_cnt)begin
		if(end_cnt)
			cnt <= 1'b0;
		else
			cnt <= cnt + 1'b1;
	end
end

assign add_cnt = 1'b1;//计数条件
assign end_cnt = add_cnt && cnt==CHANGETIME-1;//计数结束条件

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值