显示页面 讨论 修订记录 反向链接 本页面只读。您可以查看源文件,但不能更改它。如果您觉得这是系统错误,请联系管理员。 用于代码风格 <code verilog> module beeper ( input clk, input [3:0] key_n, output speaker ); parameter cnt_Width = 15; parameter ClkDividerDo = 12000000/262/2; parameter ClkDividerRe = 12000000/294/2; parameter ClkDividerMi = 12000000/330/2; parameter ClkDividerFa = 12000000/349/2; reg en, beep; reg [cnt_Width-1:0] cnt, ClkDivider; always @(*) case(key_n) 4'b1110: begin ClkDivider = ClkDividerDo; en = 1'b1; end 4'b1101: begin ClkDivider = ClkDividerRe; en = 1'b1; end 4'b1011: begin ClkDivider = ClkDividerMi; en = 1'b1; end 4'b0111: begin ClkDivider = ClkDividerFa; en = 1'b1; end default: begin ClkDivider = ClkDivider; en = 1'b0; end endcase always @(posedge clk) if(cnt >= ClkDivider-1) cnt <= {cnt_Width{1'b0}}; else cnt <= cnt + 1'b1; always @(posedge clk) if(cnt >= ClkDivider-1) beep <= ~beep; else beep <= beep; assign speaker = en? beep : 1'b0; endmodule </code>