题解 | #可置位计数器#
可置位计数器
https://www.nowcoder.com/practice/b96def986e29475e8100c213178b73a8
`timescale 1ns/1ns module count_module( input clk, input rst_n, input set, input [3:0] set_num, output reg [3:0]number, output reg zero ); reg [3:0] num; always@(posedge clk or negedge rst_n) if(!rst_n) number<=0; else number<=num; //本题非常奇怪是序列是由控制信号的上升沿触发,在一般的电路中,控制信号由时序电路产生,因此在下降沿有效。 always@(posedge clk or negedge rst_n) if(!rst_n) {num,zero}<={4'b0,1'b0}; else if(set) {num,zero}<={set_num,!set_num}; else if(num==4'd15) {num,zero}<={4'b0,1'b0}; else if(num==4'd0) {num,zero}<={4'b1,1'b1}; else {num,zero}<={num+4'b1,1'b0}; endmodule
//本题非常奇怪是序列是由控制信号的上升沿触发,在一般的电路中,控制信号由时序电路产生,因此在下降沿有效。