题解 | #信号发生器#
信号发生器
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