音乐播放器蜂鸣器AX301开发板verilog,视频/代码

名称:音乐播放器蜂鸣器播放音乐按键切歌

软件:Quartus

语言:Verilog

代码功能:

       设计一个音乐播放器,使用板子上的蜂鸣器播放歌曲,可以播放三首歌(歌曲任选),通过按键控制切歌,使用led显示音乐节奏。

本代码曲目为:

《两只老虎》

《妈妈的吻》

《让我们荡起双桨》

本代码已在AX301开发板验证,开发板资料:

FPGA 开发板手册.pdf

演示视频:音乐播放器蜂鸣器播放AX301开发板verilog切歌_Verilog/VHDL资源下载

代码下载:音乐播放器蜂鸣器播放AX301开发板verilog切歌_Verilog/VHDL资源下载名称:音乐播放器蜂鸣器播放音乐按键切歌(代码在文末付费下载)软件:Quartus语言:Verilog代码功能: 设计一个音乐播放器,使用板子上的蜂鸣器播放歌曲,可以播放三首歌(歌曲任选),通过按键控制切歌,使用led显示音乐节奏。本代码曲目为:《两只老虎》《妈妈的吻》《让我们荡起双桨》本代码已在AX301开发板验证,开发板资料:FPGA 开发板手册.pdf演示视频:部分代码展示//音乐icon-default.png?t=N7T8http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=193

部分代码展示

//音乐播放器
module music(sysclk, model_Key, spkout,led);
   input           sysclk;//50M晶振
   input           model_Key;//歌曲选择键
   output          spkout;//蜂鸣器输出
output      [1:0] led;//指示灯
   
   wire [7:0] tonecode;
   wire [9:0] tonestep;
   wire model_Key_down;
   //调用频率控制字产生模块
   musicdec u_musicdec
(
.tonecode(tonecode),//输入简谱
.tonestep(tonestep)//输出频率控制字
);
   
//调用按键消抖模块
key_jitter u_key_jitter(
     . clkin(sysclk),   
     . key_in(model_Key),//输入
  . key_posedge(),//消抖后按键上升沿
  . key_negedge(model_Key_down),//消抖后按键下降沿
     . key_value()//消抖后按键
);
   
//音乐控制模块
music_ctrl i_music_ctrl(
   .  sysclk(sysclk),//50M晶振
   .  model_Key_down(model_Key_down),//歌曲选择键
   .  tonecode(tonecode),
   .  tonestep(tonestep),
   .  spkout(spkout),//蜂鸣器输出
   .  led(led)//指示灯
);   
   
endmodule


//控制模块
module music_ctrl(
   input  sysclk,//50M晶振
   input  model_Key_down,//歌曲选择键
   output reg [7:0]  tonecode,
   input  [9:0] tonestep,
   output reg   spkout,//蜂鸣器输出
   output [1:0] led//指示灯
);   
   reg [21:0]      addr;//分频控制字
   reg [24:0]      divclk_counter;
   reg             musicclk;
   wire [31:0]     musickeyshiftbuf;
   wire [1:0]      musicno;
   
   wire [9:0]      step;
   reg [8:0]       codeaddr1;
   reg [8:0]       codeaddr2;
   reg [8:0]       codeaddr3;
   
//定义3个数组,用于存储3首歌曲
   reg [7:0] music1[0:255];
   reg [7:0] music2[0:447];  
   reg [7:0] music3[0:495];
//初始化三首歌,存入数组
initial begin
$readmemh("music1.list", music1);//music1.list存储的是两只老虎的简谱
$readmemh("music2.list", music2);//music2.list存储的是妈妈的吻的简谱
$readmemh("music3.list", music3);//music3.list存储的是让我们荡起双桨的简谱
end
   
   reg [1:0] music_select=2'd0;
assign led=music_select;
always@(posedge sysclk)
if(model_Key_down)
music_select<=music_select+2'd1;//按一次按键,music_select加1
   assign step = tonestep;
   always @(posedge sysclk)     
      begin
addr <= addr + step;//step是根据音乐文件产生的频率控制字,不同step产生不同频率的spkout
      end
   always @(posedge sysclk)     
      begin
         if (divclk_counter == 1799999)//50M/(1799999*2)=分频到13.9Hz
         begin
            musicclk <= (~musicclk);//musicclk=13.9Hz

设计文档:

设计文档.doc

1. 工程文件

音乐播放器蜂鸣器AX301开发板verilog,视频/代码_第1张图片

2. 程序文件

音乐播放器蜂鸣器AX301开发板verilog,视频/代码_第2张图片

音乐播放器蜂鸣器AX301开发板verilog,视频/代码_第3张图片

3. 程序编译

音乐播放器蜂鸣器AX301开发板verilog,视频/代码_第4张图片

4. RTL图

音乐播放器蜂鸣器AX301开发板verilog,视频/代码_第5张图片

5. 管脚分配

音乐播放器蜂鸣器AX301开发板verilog,视频/代码_第6张图片

6. Testbench

音乐播放器蜂鸣器AX301开发板verilog,视频/代码_第7张图片

7. 仿真图

整体仿真图

音乐播放器蜂鸣器AX301开发板verilog,视频/代码_第8张图片

按键模块

音乐播放器蜂鸣器AX301开发板verilog,视频/代码_第9张图片

音乐播放器蜂鸣器AX301开发板verilog,视频/代码_第10张图片

音乐控制模块

音乐播放器蜂鸣器AX301开发板verilog,视频/代码_第11张图片

音乐播放器蜂鸣器AX301开发板verilog,视频/代码_第12张图片

频率控制模块

你可能感兴趣的:(fpga开发,Verilog,AX301,音乐播放器)