FPGA中Verilog的单首音乐播放器代码,简洁易懂

利用数控分频器设计硬件乐曲演奏电路,利用蜂鸣器播放《我和我的祖国》

分频器模块:

module div(iclk_50,rst,addr,clk_4);
input iclk_50;
input rst;
output [8:0]addr;
output clk_4;

reg clk_4;
reg [8:0]addr;
reg [31:0]count_4;

always@(posedge iclk_50 or negedge rst)
begin
    if(!rst)
        begin
         clk_4=1'b0;
         count_4<=32'd0;
        end
     else if(count_4==50000000/4*2-1)
        begin
         clk_4=~clk_4;
         count_4<=32'd0;
        end
     else 
        count_4<=count_4+32'd1;
end
always@(posedge clk_4 or negedge rst)
begin
   if(!rst)
     addr<=9'd0;
     else if(addr==9'd420)
      addr<=9'd0;
     else addr<=addr+9'd1;
end 
endmodule
音频产生模块:

module ToneTaba(iclk_50,code,speaker);
input iclk_50;
input [4:0]code;
output speaker;
reg [17:0]Tone;
reg [17:0]cnt;
reg clk_tmp;
always@(posedge iclk_50)
begin
case(code)
5'd0:Tone<=134;
5'd1:Tone<=191132;
5'd2:Tone<=170242;
5'd3:Tone<=151700;
5'd4:Tone<=143184;
5'd5:Tone<=127552;
5'd6:Tone<=113636;
5'd7:Tone<=101236;
5'd8:Tone<=95548;
5'd9:Tone<=85136;
5'd10:Tone<=75838;
5'd11:Tone<=71582;
5'd12:Tone<=65776;
5'd13:Tone<=56818;
5'd14:Tone<=50618;
5'd15:Tone<=47824;
5'd16:Tone<=42564;
5'd17:Tone<=37992;
5'd18:Tone<=35794;
5'd19:Tone<=31888;
5'd20:Tone<=28409;
5'd21:Tone<=25310;
endcase;
if(cnt==Tone/2-1)
begin
clk_tmp=~clk_tmp;
cnt<=0;
end
else
cnt<=cnt+1;
end
assign speaker=clk_tmp;
endmodule 

顶层文件

最后mif文件大家自己选择自己喜欢的音乐进行编写在mif文件中

data_rom文件省略。 

  • 1
    点赞
  • 63
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

泰西颖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值