题解 | #信号发生器#
信号发生器
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
阿里云成长空间 753人发布
查看2道真题和解析