⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.v

📁 基于FPGA的VHDL编程实现各种音频信号
💻 V
字号:
// main.v
/**********************************************************************/
/*                                                                    */
/*                       蜂鸣器播放音乐的程序                         */
/*                通过按键选择不同的音乐,按一下键进入下一首           */
/*                                                                    */
/**********************************************************************/
module main(
            //input
             clk_48m, 
             rst_K2,
             choose_K5,
             //output
             speaker,
             LED
            );
input clk_48m;
input  rst_K2;
input  choose_K5;
output  speaker;
output [7:0]   LED; 

reg   speaker;
reg  [7:0]   LED; 

//------例化锁相环----------------------------
wire clk_25m;          //25M频率输出,驱动各音乐盒
PLL_25M    PLL_25M_U0 (
                        .POWERDOWN(1'b1),
                        .CLKA(clk_48m),
                        .GLA(clk_25m)
                        );

//--------例化键盘控制--------------------------
wire [3:0]  key_out;
key_measure key_measure_0(
                            .clk(clk_25m),
                            .rst_n(!rst_K2),     //低电平复位
                            .key_in(choose_K5),         //按下为高电平
                            .key_out(key_out)
                          );

//--------------例化各音乐盒----------------------
//普通声乐
wire speaker_simple_beep;
music_simple_beep   U0(
                        .clk(clk_25m), 
                        .speaker(speaker_simple_beep)
                       );
//字符的A发声
wire speaker_note_A_440HZ;
music_note_A_440HZ   U1(
                         .clk(clk_25m), 
                         .speaker(speaker_note_A_440HZ)
                        );//第二种方式发声'A'
wire speaker_440HZ;
music_440HZ          U2(
                         .clk(clk_25m), 
                         .speaker(speaker_440HZ)
                        );//第三种方式发声'A'
wire speaker_parameter;
music_parameter      U3(
                         .clk(clk_25m), 
                         .speaker(speaker_parameter)
                        );//救护车鸣笛
wire speaker_ambulance;
music_ambulance_siren U4(
                         .clk(clk_25m), 
                         .speaker(speaker_ambulance)
                         );
//音调变换
wire  speaker_tune;
music_tune            U5 (
                          .clk(clk_25m), 
                          .speaker(speaker_tune)
                         );
//警笛
wire  speaker_police_siren;
music_police_siren     U6 (
                           .clk(clk_25m), 
                           .speaker(speaker_police_siren)
                          );

//警车追击声
wire speaker_pursuit;
music_high_speed_pursuit U7(
                            .clk(clk_25m),
                            .speaker(speaker_pursuit)
                            );
//------键盘控制--敏感信表要列出所有的输入信号,否则无效----------------------------
always @(
          key_out,speaker_note_A_440HZ,speaker_440HZ,speaker_parameter,
		  speaker_ambulance,speaker_tune,speaker_police_siren,
		  speaker_pursuit,speaker_simple_beep
        )
begin
      case (key_out)
      4'd1:  speaker=speaker_note_A_440HZ;
      4'd2:  speaker=speaker_440HZ;
      4'd3:  speaker=speaker_parameter;
      4'd4:  speaker=speaker_ambulance;
      4'd5:  speaker=speaker_tune;
      4'd6:  speaker=speaker_police_siren;
      4'd7:  speaker=speaker_pursuit;
      4'd8:  speaker=speaker_simple_beep;

      default:speaker=1'b1;
	  endcase
end

//-------LED显示键值,表示那一首曲----------------------
always @(key_out)
begin
      case (key_out)
      4'd1:  LED=8'b1111_1110;
      4'd2:  LED=8'b1111_1101;
      4'd3:  LED=8'b1111_1011;
      4'd4:  LED=8'b1111_0111;
      4'd5:  LED=8'b1110_1111;
      4'd6:  LED=8'b1101_1111;
      4'd7:  LED=8'b1011_1111;
      4'd8:  LED=8'b0111_1111;

      default:LED=8'b1111_1111;
	  endcase
end













endmodule

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -