题解 | #可置位计数器#
可置位计数器
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
//本题非常奇怪是序列是由控制信号的上升沿触发,在一般的电路中,控制信号由时序电路产生,因此在下降沿有效。