差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
代码风格 [2021/05/14 11:13] anran |
代码风格 [2021/05/14 17:17] (当前版本) anran |
||
---|---|---|---|
行 3: | 行 3: | ||
<code verilog> | <code verilog> | ||
- | // ******************************************************************** | + | module beeper ( |
- | // >>>>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<< | + | input clk, |
- | // ******************************************************************** | + | input [3:0] key_n, |
- | // File name : LED.v | + | output speaker |
- | // Module name : LED | + | ); |
- | // Author : STEP | + | |
- | // Description : control LED | + | parameter cnt_Width = 15; |
- | // Web : www.stepfpga.com | + | parameter ClkDividerDo = 12000000/262/2; |
- | // | + | parameter ClkDividerRe = 12000000/294/2; |
- | // -------------------------------------------------------------------- | + | parameter ClkDividerMi = 12000000/330/2; |
- | // Code Revision History : | + | parameter ClkDividerFa = 12000000/349/2; |
- | // -------------------------------------------------------------------- | + | reg en, beep; |
- | // Version: |Mod. Date: |Changes Made: | + | reg [cnt_Width-1:0] cnt, ClkDivider; |
- | // V1.0 |2017/03/02 |Initial ver | + | |
- | // -------------------------------------------------------------------- | + | |
- | // Module Function:利用按键和开关的状态来控制LED灯的亮灭。 | + | |
- | module LED (key,sw,led); | + | 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 | ||
- | input [3:0] key; //按键输入信号 | ||
- | input [3:0] sw; //开关输入信号 | ||
- | output [7:0] led; //输出信号到LED | ||
- | |||
- | assign led = {key,sw}; //assign连续赋值。大括号是拼接符,表示把key和sw拼接组成一个新的8位数赋值给led | ||
- | |||
- | endmodule | ||
</code> | </code> | ||