题解 | #信号发生器#

信号发生器

https://www.nowcoder.com/practice/39f6766689cc448e928a0921d1d1f858

`timescale 1ns/1ns
module signal_generator(
	input clk,
	input rst_n,
	input [1:0] wave_choise,
	output reg [4:0]wave
	);
reg [4:0] cnt0;
reg dec;
always@(posedge clk or negedge rst_n)begin
	if(!rst_n) begin
	wave <= 'd0;
	cnt0 <= 'd0;
	dec  <= 'd1;
	end
	else 
	case(wave_choise)
	0: begin
		wave <= (cnt0 == 5'd19) ? 0:
				(cnt0 == 5'd9)  ? 5'd20:wave;
		cnt0 <= (cnt0 == 5'd19) ?'d0 :(cnt0 + 1) ;
		dec  <= 'd1;
	end
	1: begin
		wave <= (wave < 5'd20) ?(wave + 1) : 'd0;
		dec  <= 'd1;
	end
	2:begin
		wave <= (dec && (wave!='d0))?(wave -1):
				(!dec && (wave =='d20))?wave-1:wave+1;
		dec  <= (wave=='d0 || wave=='d20) ? ~dec:dec;
	end
	default:begin
		wave <= 'd0;
		cnt0 <= 'd0;
		dec  <= 'd1;
	end
	endcase
end

endmodule

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务