module CNT10(CLK,RST,EN,LOAD,COUT,DOUT,DATA);
input CLK,EN,RST,LOAD ;
input [3:0] DATA;
output [3:0] DOUT;
output COUT;
reg [3:0] Q1; reg COUT;
assign DOUT=Q1;
always @(posedge CLK or negedge RST)begin
if(!RST) Q1<=0;
else if(EN)begin
if(!LOAD) Q1<=DATA;
else if(Q1<9)Q1<=Q1+1;
else Q1<=4'b0000; end
end
always@(Q1)
if(Q1==4'h9) COUT=1'b1;
else COUT=1'b0;
endmodule
input CLK,EN,RST,LOAD ;
input [3:0] DATA;
output [3:0] DOUT;
output COUT;
reg [3:0] Q1; reg COUT;
assign DOUT=Q1;
always @(posedge CLK or negedge RST)begin
if(!RST) Q1<=0;
else if(EN)begin
if(!LOAD) Q1<=DATA;
else if(Q1<9)Q1<=Q1+1;
else Q1<=4'b0000; end
end
always@(Q1)
if(Q1==4'h9) COUT=1'b1;
else COUT=1'b0;
endmodule
本文介绍了一个使用Verilog实现的计数器模块,该模块具有同步复位、使能控制、加载数据及进位输出等功能。通过不同的输入信号控制,模块能够实现递增计数、数据加载或保持当前状态不变。
2793

被折叠的 条评论
为什么被折叠?



