当前位置:   article > 正文

【Verilog异步清零计数器】

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39

总结

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

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号