题解 | #信号发生器#

信号发生器

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;
	always @(posedge clk or negedge rst_n) begin
		if(!rst_n) begin
			cnt <= 0;
		end
		else if(cnt >= 19) begin
			cnt <= 0;
		end
		else begin
			cnt <= cnt + 1'b1;
		end
	end

	reg flag;
	// 三角波模式下,标志位控制
    always@(posedge clk or negedge rst_n) begin
        if(~rst_n)
            flag <= 0;
        else
            flag <= wave_choise!=2 ? 0:
                    wave       ==1 ? 1:
                    wave       ==19? 0:
                    flag;
    end

	always @(posedge clk or negedge rst_n) begin
		if(!rst_n) begin
			wave <= 0;
		end
		else begin
			case(wave_choise)
				0:	wave <= (cnt == 9)?(20):(cnt == 19?0:wave);
				//0:	wave <= (cnt >= 9)?(20):(0);
				1:	wave <= (wave == 20)?0:(wave + 1'b1);
				2:  wave <= (flag == 0)?(wave - 1'b1):(wave + 1'b1);
				default: wave <= 0;
			endcase
		end
	end


endmodule

全部评论

相关推荐

04-13 11:05
中国海洋大学
ResourceUtilization:两万块的算法专家给HR自己都整笑了
点赞 评论 收藏
分享
完美的潜伏者许愿简历通过:我上表jd,请求封我做后端大将军的事,北京有消息了:竟然不许!!! 他们一定是看我没有实习,这才故意驳回我的请求!
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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