差别
这里会显示出您选择的修订版和当前版本之间的差别。
| 两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
|
代码风格 [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> | ||