使用Verilog HDL设计一个带有异步复位控制端的23进制计数器,其中复位信号为高电平

2024-11-25 17:39:03
推荐回答(1个)
回答1:

下面这个模块是一个计23输出进位的计数器,在顶层中例化多个该模块并将低位的cnt_out与高位的cnt_in相连就可以生成多位的23进制计数器

module counter_23 ( input clk, input rst, input cnt_in ,output reg cnt_out );
reg [4:0] cnt;
always @ (posedge clk or posedge rst_n) begin
if (rst) cnt <= 5'b0;
else if (~cnt_in) cnt <= cnt;
else if (cnt == 5'b10110) cnt <= 5'b0;
else cnt <= cnt + 1'b1;

end
always @ (posedge clk or posedge rst) begin
if (rst) cnt_out <= 1'b0;
else if (cnt_in && cnt == 5'b10110) cnt_out <= 1'b1;
else cnt_out <= 1'b0;
end
endmodule