差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
代码风格 [2021/05/14 11:53]
anran
代码风格 [2021/05/14 17:17] (当前版本)
anran
行 5: 行 5:
 module beeper ( module beeper (
 input clk, input clk,
-output ​reg speaker+input [3:0] key_n, 
 +output speaker
 ); );
    
-reg [13:0] cnt;+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'b0end 
 +    endcase 
 always @(posedge clk)  always @(posedge clk) 
-    if(cnt >= 15'​d27271) cnt <= 15'd0;  +    if(cnt >= ClkDivider-1) cnt <= {cnt_Width{1'b0}};  
-    else cnt <= cnt + 15'd1;+    else cnt <= cnt + 1'b1;
    
 always @(posedge clk)  always @(posedge clk) 
-    if(cnt >= 15'​d13136speaker ​<= 1'b1+    if(cnt >= ClkDivider-1beep <= ~beep
-    else speaker ​<= 1'b0;+    else beep <= beep;
    
 +assign speaker = en? beep : 1'b0;
 +
 endmodule ​ endmodule ​
 +
  
 </​code>​ </​code>​