题解 | 信号发生器

信号发生器

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]	cnt ;
reg flag0 ;
reg flag3;

//方波计数器
always@(posedge clk or negedge rst_n)
if(!rst_n)begin
	cnt <= 5'd0;
end
else if(wave_choise==1'b0)begin//模式为0,进行计数器的计数
if(cnt == 5'd19)begin
	cnt <= 5'd0;
end
else begin
	cnt <= cnt + 5'd1;
end
end
else begin
	cnt <= 5'd0;
end


//锯齿波标志寄存器
always@(posedge clk or negedge rst_n)
if(!rst_n)begin
	flag3 <= 1'b0;
end
else if(wave_choise==2'd2)begin
	if(wave==5'd1)
	flag3 <= 1'b1;//锯齿波翻转标志
	else if(wave==5'd19)
	flag3 <= 1'b0;
end
else begin
	flag3 <= 1'b0;
end


always@(posedge clk or negedge rst_n)
if(!rst_n)begin
	wave <= 2'd0;
end
else begin
case(wave_choise)
	2'd0:begin 
		if (cnt == 5'd9)begin 
			wave <= 5'd20;
		end
		else if (cnt == 5'd19)begin 
			wave <= 5'd0;
		end
		end
	2'd1:begin wave <= (wave == 5'd20)?0:wave+1;end
	2'd2:begin wave <= (flag3==0)?wave-1:wave+1;end
	default: wave <= 0;
endcase
end

  
endmodule

全部评论

相关推荐

白火同学:1、简历可以浓缩成一页,简历简历先要“简”方便HR快速过滤出有效信息,再要“历”用有效信息突出个人的含金量。 2、教育背景少了入学时间~毕业时间,HR判断不出你是否为应届生。 3、如果你的平台账号效果还不错,可以把账号超链接或者用户名贴到对应位置,一是方便HR知道你是具体做了什么内容的运营,看到账号一目了然,二是口说无凭,账号为证,这更有说服力。
面试被问期望薪资时该如何...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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