FPGA蜂鸣器实现歌曲《两只老虎》-FPGA CPLD资料源码分享论坛-FPGA CPLD-ChipDebug

FPGA蜂鸣器实现歌曲《两只老虎》

该帖子部分内容已隐藏
付费阅读
3积分
此内容为付费阅读,请付费后查看

1、简谱中的符号含义

图片[1]-FPGA蜂鸣器实现歌曲《两只老虎》-FPGA CPLD资料源码分享论坛-FPGA CPLD-ChipDebug

2、两只老虎简谱

图片[2]-FPGA蜂鸣器实现歌曲《两只老虎》-FPGA CPLD资料源码分享论坛-FPGA CPLD-ChipDebug

3、音符与频率的对照表

图片[3]-FPGA蜂鸣器实现歌曲《两只老虎》-FPGA CPLD资料源码分享论坛-FPGA CPLD-ChipDebug

4、首先在这里解释一个名词→音乐频率——众所周知,声音是由物体的振动产生的,本质是传播媒介的振动,另外声音有两大特性——音量和音色,我们又知道振动幅度决定音量,波形和传播媒介决定音色;而在这里我们需要考虑的便是音量,即低音、中音和高音;因此,我们只需要考虑音源的振动频率即可。在这里我们又知道我们的音源只有一个,那便是我们开发板上的蜂鸣器(开发板上蜂鸣器的也可以是外接蜂鸣器)。振动频率以“Hz”(赫兹)为单位,赫兹(Hz)是指每秒周期运动次数。

由音符与频率的对照表可以知道低音DO 的频率是262Hz,但是我们的系统时钟是50MHz(这里以50MHz为例,也有可能是其它频率),所以50MHz ÷ 262Hz便是低音DO在0.5s时间内的重复次数。

低音DO的重复次数:50MHz ÷ 262Hz = 190839·········后面的计算和低音DO 的计算方法相同,完全一样,在这里就不做赘述了。

5、模块框图

图片[4]-FPGA蜂鸣器实现歌曲《两只老虎》-FPGA CPLD资料源码分享论坛-FPGA CPLD-ChipDebug

6、工程源码

.v文件

tb文件

/* ============================================================= *\
*    Author                     : 星·回
*    Filename                   : beep_two_tiger_tb.v
*    Create Date                : 2022/12/21
*    Module Name                :  
*    Project Name               : beep_two_tiger
*    Description                : 蜂鸣器实现“两只老虎”
*    Create Date                : 2022/12/21
*    Revision【修订】            : 1.0 
*    Email                      : 
*    Company                    : 
*    Copyright(c) 2022 【版权】
*    Additional Comments【备注】:
\* ============================================================= */
`timescale 1ns/1ns     //  时间单位/时间精度
module beep_two_tiger_tb ();
 
//激励信号
reg          clk        ;
reg          rst_n      ;
//输出信号
wire         beep      ;
 
parameter   L1    =  100    ,//低音
            L2    =  150    , 
            L3    =  250    , 
            L4    =  300    , 
            L5    =  350    , 
            L6    =  400    , 
            L7    =  450    ,
 
            M1    =  100     ,//中音
            M2    =  150     ,
            M3    =  200     ,
            M4    =  250     ,
            M5    =  300     ,
            M6    =  350     ,
            M7    =  400     ;
 
beep_two_tigers  u_beep_two_tigers(
                                  .clk    ( clk   )  ,
                                  .rst_n  ( rst_n )  ,
                                  .beep   ( beep  )  
);
 
initial begin
    clk = 1'b1 ;
    rst_n = 1'b1 ;
    #20
    rst_n = 1'b0 ;
    #30
    rst_n = 1'b1 ;
    #20
    rst_n = 1'b0 ;
    #10
    rst_n = 1'b1 ;
 
 
end            
always #10 clk=~clk ;
 
    
endmodule

7、总结

本次使用蜂鸣器实现播放两只老虎音乐实验的上板现象音乐较为难以入耳,但是仔细听还是能听出来有那种感觉的,在后续的实践中可能会寻求改进。

请登录后发表评论