我是靠谱客的博主 呆萌天空,最近开发中收集的这篇文章主要介绍【Verilog基础】7.计数器4位计数器4位计数器--带清零端、置数端和使能端同步置数和同步清零的计数器4 位 Johnson 计数器(异步复位)十进制模 24 计数器模为 60 的 BCD 码加法计数器减法计数器,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
4位计数器
module count4(out,reset,clk);
output[3:0] out;
input reset,clk;
reg[3:0] out;
always @(posedge clk)
begin
if (reset) out<=0;
else out<=out+1;
end
endmodule
如果是电平触发的话,只需要把posedge clk 换成reset or clk 就可以了;
4位计数器--带清零端、置数端和使能端
module cnt16(co,q,clk,r,s,en,d);
output[3:0] q; //计数输出端
output co; //进位信号
input clk,r,s,en; //时钟信号、清零端、置数端和使能端
input[3:0] d; //预置数数据端
reg [3:0] q;
reg co;
always @(posedge clk)
if(r)
begin q=0; end
else
begin
if(s)
begin q=d; end
else
if(en)
begin
q=q+1;
if(q==4'b1111)
begin co=1; end
else
begin co=0; end
end
else
begin q=q; end
end
endmodule
同步置数和同步清零的计数器
module count(out,data,load,reset,clk);
output[7:0] out;
input[7:0] data;
input load,clk,reset;
reg[7:0] out;
always @(posedge clk) //clk 上升沿触发
begin
if (!reset) out = 8'h00; //同步清 0,低电平有效
else if (load) out = data; //同步预置
else out = out + 1; //计数
end
endmodule
4 位 Johnson 计数器(异步复位)
Johnson 计数器是一种数字电路, 具有以反馈方式连接的一系列触发器。 如果位数为N,则Verilog Johnson计数器是对2N个状态进行计数的计数器。
该电路是一种特殊类型的移位寄存器, 中最后一个触发 器的补码输出反馈到第一个触发器的输入。 类似于环形计数器。
module johnson(clk,clr,out);
input clk,clr;
output[3:0] out;
reg[3:0] out;
always @(posedge clk or posedge clr)
begin
if (clr) out<= 4'h0;
else
begin out<= out<< 1;
out[0]<= ~out[3];
end
end
endmodule
十进制模 24 计数器
module cnt24(ten,one,co,clk,clr);
output[3:0] ten,one;
output co;
input clk,clr;
reg[3:0] ten,one;
reg co;
always @(posedge clk)
begin
if(clr)
begin ten<=0;one<=0; end
else
begin
if({ten,one}==8'b00100011)
begin ten<=0;one<=0;co<=1; end
else if(one==4'b1001)
begin one<=0;ten<=ten+1;co<=0; end
else
begin one=one+1;co<=0; end
end
end
endmodule
模为 60 的 BCD 码加法计数器
module count60(qout,cout,data,load,cin,reset,clk);
output[7:0] qout;
output cout;
input[7:0] data;
input load,cin,clk,reset;
reg[7:0] qout;
always @(posedge clk) //clk 上升沿时刻计数
begin
if (reset) qout<=0; //同步复位
else if(load) qout<=data; //同步置数
else if(cin)
begin
if(qout[3:0]==9) //低位是否为 9,是则
begin
qout[3:0]<=0; //回 0,并判断高位是否为 5
if (qout[7:4]==5) qout[7:4]<=0;
else
qout[7:4]<=qout[7:4]+1; //高位不为 5,则加 1
end
else //低位不为 9,则加 1
qout[3:0]<=qout[3:0]+1;
end
end
assign cout=((qout==8'h59)&cin)?1:0; //产生进位输出信号
endmodule
减法计数器
module jian_cnt10(q,clk,rst);
output[3:0] q; //计数器输出端
input clk,rst; //时钟、复位
reg[3:0] q;
always @(posedge clk)
begin
if(rst)
begin q<=0; end
else if(q==4'b0000)
begin q<=4'b1001; end
else
begin q<=q-1; end
end
endmodule
最后
以上就是呆萌天空为你收集整理的【Verilog基础】7.计数器4位计数器4位计数器--带清零端、置数端和使能端同步置数和同步清零的计数器4 位 Johnson 计数器(异步复位)十进制模 24 计数器模为 60 的 BCD 码加法计数器减法计数器的全部内容,希望文章能够帮你解决【Verilog基础】7.计数器4位计数器4位计数器--带清零端、置数端和使能端同步置数和同步清零的计数器4 位 Johnson 计数器(异步复位)十进制模 24 计数器模为 60 的 BCD 码加法计数器减法计数器所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复