题解 | #信号发生器#
信号发生器
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 flag; always@(posedge clk or negedge rst_n) begin if(!rst_n) begin cnt <= 'd0; end else begin cnt <= cnt + 'd1; end end always@(posedge clk or negedge rst_n) begin if(!rst_n) begin flag <= 1'b0; end else begin flag <= (cnt=='d31)?(~flag):flag; end end always@(posedge clk or negedge rst_n) begin if(!rst_n) begin wave <= 'd0; end else begin case(wave_choise) 2'd0: wave <= {5{(cnt>='d16)}}; 2'd1: wave <= cnt; 2'd2: wave <= flag?(5'd31-cnt):cnt; default: wave <= 'd0; endcase end end endmodule