【Verilog异步清零计数器】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

本人只是初学,代码经过实验验证,仅供参考
我自己查找模仿编写运行的代码,如有侵权,联系删除。

一、异步清零的计数器

这是异步清零+控制加减法+进位指示灯的计数器

1.代码

代码如下(示例):

module jishu_125 (CLK,RST,x,q,co);	//时钟信号,清零信号,加减法控制端,输出,进位输出
	input CLK,RST,x;
	output[3:0] q;
	output co;
	reg[3:0] q;
	reg co;
	always@(posedge CLK or negedge RST)	//异步清零的控制语句
	begin 
		if(!RST)     	 //异步清零控制
		q<=4'd0000;
		else
		begin
			if(x==1'b1)    //如果x=1(高电位),控制为加法器
			begin
				if (q==4'b1001) //如果q=9,则把0赋值给q
				q<=4'b0000;
				else if (q>=4'b0000&&q<4'b1001)	
				q<=q+1'b1;
				else q<=4'b0000;
				end
			if (x==1'b0)  //如果x=0(低电位),控制为减法器
			begin
				if (q==4'b0000)
				q<=4'b1001;
				else if (q>=4'b0000&&q<4'b1010)  //这里减法特殊,范围要到10才能包含9
				q<=q-1'b1;
				else q<=4'b0000;
				end
			end		
 	end
 always @(q)	//进位显示端口可以删去
	begin 
		if (RST==1'b0)
		co<=1'b0;
		else if (x==1'b1&&q==4'b1001) co<=1'b1;
		else if (x==1'b1&&q==4'b0000) co<=1'b1;
		else co <=0;
	end
endmodule

总结

这个程序适合已经了解书本例题的同学,要先看书上的例题
第一次写这个,不太会,有问题可以问我哈,一般晚上休息会回复
有什么建议,也欢迎留言

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值