题解 | #可置位计数器#

可置位计数器

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

//本题非常奇怪是序列是由控制信号的上升沿触发,在一般的电路中,控制信号由时序电路产生,因此在下降沿有效。

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务