FPGA演奏歌曲(国际歌)

编曲部分

clk_out是周期为0.5s的时钟信号

M是使能段,当M为1时演奏歌曲

m表示不同音调,1-7对应中音do、ri、mi、fa、so、la、xi  ,8-14对应高音 ,14-21对应低音

state表示状态,一共157个状态,每个状态为0.5s,全歌时长78.5s

module state(
input clk_out,     //周期0.5s的时钟信号
input M,            
output reg [4:0] m=0,
output reg [7:0] state=0
    );

    
    always@(posedge clk_out)         
    if(~M|state>=157)
       state=0;
    else
     state=state+1;

       

 
 always@(M,state)               //国际歌乐谱
   if(M)
     begin
     case(state) 
     0: m=5;                    
        
     1: m=8; 
     2: m=7;
     3: m=9;     
     4: m=8;   
     5: m=5;    
     6: m=3;
         
     7: m=6;   
     8: m=6;  
     9: m=4;
     10: m=0;
     11: m=6;     
        
     12: m=9;
     13: m=8;
     14: m=7;     
     15: m=6;
     16: m=5;
     17: m=4;
     
     18: m=3;     
     19: m=3;
     20: m=3;
     21: m=5;    
     
     22: m=8;  
     23: m=7;    
     24: m=9;
     25: m=8;
     26: m=5;
     27: m=3;        
     
     28: m=6;     
     29: m=6;    
     30: m=4;
     31: m=6;
     32: m=9;
     33: m=8;
         
     34: m=7;    
     35: m=8;
     36:
  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值