题解 | #信号发生器#

信号发生器

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 [5:0] cnt0;
    reg flag0;
    reg flag2;
    always@(posedge clk or negedge rst_n) begin
        if(!rst_n) begin
            wave <= 0;
            cnt0 <= 0;
            flag0 <= 0;
            flag2 <= 1;
        end else if(wave_choise == 0) begin
            if(cnt0 < 9) begin
                cnt0 <= cnt0 + 1; 
            end else begin
                cnt0 <= 0;
                if(!flag0)begin
                    wave <= 20; 
                end else begin
                    wave <= 0; 
                end
                //wave <= flag0 ? 'd20 : 0;
                flag0 <= ~flag0;
                
            end
        end else if(wave_choise == 1) begin
            if(wave == 20) begin
                wave <= 0;
            end else begin
                wave <= wave + 1;    
            end
            
        end else if(wave_choise == 2) begin
            if(wave == 19) begin
                flag2 <= 1; 
            end else if(wave == 0) begin
                flag2 <= 0; 
            end
            if(flag2 & wave != 0)
                wave <= wave - 1;
            else
                wave <= wave + 1;
        end
            
    end

  
endmodule



全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务