题解 | #可置位计数器#

可置位计数器

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] out;
	always @(posedge clk or negedge rst_n)
	begin
	if(!rst_n)
	begin
	out<=4'd0;
	number<=4'd0;
	end
	else
	begin
	if(set)
	begin
	out<=set_num;
	end
	else
	begin
	out<= out==4'd15 ? 4'd0 : out +4'd1;
	end
	number<=out;
	end
	end
		always@(posedge clk or negedge rst_n)
		begin
			if(!rst_n)
			begin
				zero<=1'b0;
			end
			else
			begin
				zero<= out ==4'd0 ;

			end
		end

endmodule

`timescale 1ns/1ns
module testbench();
    reg rst,mode;
	reg clk=1;
	wire [3:0]number;
	reg[3:0] set_num;
	wire  zero;
	 count_module u1(
	. clk(clk),
	.set(mode),
	.set_num(set_num),
	.rst_n(rst),
    .number(number),
	.zero(zero)
);
	always #5 clk = ~clk;  // Create clock with period=10 
  initial begin
  rst=0;
  set_num=4'd0;
 #10 rst=1;mode=0;
 #200 mode=1;set_num=4'd10;
  #10 mode=0;
 #200 ;
 $finish;
end  
    
endmodule

仿真波形图如下:

全部评论

相关推荐

头像
11-27 14:28
长沙理工大学
刷算法真的是提升代码能力最快的方法吗?&nbsp;刷算法真的是提升代码能力最快的方法吗?
牛牛不会牛泪:看你想提升什么,代码能力太宽泛了,是想提升算法能力还是工程能力? 工程能力做项目找实习,算法也分数据结构算法题和深度学习之类算法
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务