题解 | #信号发生器#

`timescale 1ns/1ns
module signal_generator(
	input clk,
	input rst_n,
	input [1:0] wave_choise,
	output reg [4:0]wave
	);
parameter peak=5'd20;
reg[4:0] out;
reg[3:0] cnt;
reg[1:0] pre_choice;
reg s_flag,t_flag,sflag_0;
always @(posedge clk or negedge rst_n)
begin
if(!rst_n)
begin
out=5'd0;
cnt=4'd0;
s_flag=1'b0;
t_flag=1'b0;
end
else
	if(wave_choise==2'd0)
	begin
		if(sflag_0)
		begin
         sflag_0=0;
		 s_flag=1'd0;
		 out=5'd0;
		end
	if(cnt==4'd9)
	begin
	cnt=4'd0;
	s_flag=s_flag+1;
	out=s_flag? peak :5'd0;
	end
	else
	begin
	cnt=cnt+1;
	end
	end
		else if(wave_choise==2'd1)
		begin
			begin
		out= (out==peak) ? 5'd0 : out+5'd1;  
			end
		end
			else if(wave_choise==2'd2)
			begin
					if(!t_flag)
					begin
					out=out-5'd1;
					if(out==0)
					begin
					t_flag=t_flag+1;
					end
					end
					else
					begin
					out=out+5'd1;
					if(out==peak)
					begin
					t_flag=t_flag+1;
					end
					end
			end
end

always@(posedge clk or negedge rst_n)
begin
if(!rst_n)
begin
sflag_0=0;
end
else
begin
pre_choice<=wave_choise;
if(pre_choice!=wave_choise)
sflag_0=1;
end
end
	
					always@(*)
					begin
						wave=out;
					end
  
endmodule

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-09 16:15
我应届生,去年10月份开始在这家公司实习,到今年10月份正好一年想(实习+试用期),在想要不要提前9月份就离职,这样好找工作些,但又差一个月满一年,又怕10月份国庆回来离职,容易错过了下半年的金九银十,到年底容易gap到年后
小破站_程序员YT:说这家公司不好吧,你干了快一年 说这家公司好吧,你刚毕业就想跑路说你不懂行情吧,你怕错过金九银十说 你懂行情吧,校招阶段在实习,毕业社招想换工作 哥们,我该怎么劝你留下来呢
应届生,你找到工作了吗
点赞 评论 收藏
分享
屌丝逆袭咸鱼计划:心态摆好,man,晚点找早点找到最后都是为了提升自己好进正职,努力提升自己才是最关键的😤难道说现在找不到找的太晚了就炸了可以鸡鸡了吗😤早实习晚实习不都是为了以后多积累,大四学长有的秋招进的也不妨碍有的春招进,人生就这样
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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