• beep的控制程序


      参照艾米电子的程序进行改写的

    //date : 2014,5,4 
    
    
    module for_beep (
                                  clock ,
                                  reset ,
                                  out_beep 
                                  );
    input  clock ,reset ;
    output  reg out_beep ; 
    
    reg [2:0]    state ; 
    reg [3:0]     clk1 ; 
    reg [12:0]   cnt0 ;         
    reg [24:0]   delay_cnt1;                      
                                  
    parameter   du  =  4775 ,
                        re  =  4255 ,
                        mi =  3790 ,
                        fa =   3580 ,
                        so =  3185 ,
                        la  =  2840 ,
                        xi  =  2530 ,
                        do1 =  2385 ; 
                        
    always @ (posedge clock  or negedge reset )
            begin 
                    if (!reset )
                            begin
                                    clk1              <=    4'd0 ; 
                                    state            <=    3'd0 ; 
                                    cnt0             <=  13'd0 ;
                                    delay_cnt1  <=  24'd0 ; 
                                    out_beep     <=   1'd0 ; 
                            end 
                    else  if(clk1 == 4'd8)
                            begin 
                                    case (state)
                                            3'd0    :    begin 
                                                                    delay_cnt1  <= delay_cnt1 + 24'd1;
                                                                    if(delay_cnt1 == 25'h1ff_ffff)
                                                                                    state          <=  3'd1 ;
    
                                                                    if(cnt0 != du)
                                                                                cnt0 <= cnt0 + 13'd1 ; 
                                                                    else 
                                                                            begin 
                                                                                cnt0 <= 13'd0 ; 
                                                                                out_beep <= ~out_beep ;
                                                                            end 
                                                            end 
                                            3'd1    :    begin 
                                                                    delay_cnt1  <= delay_cnt1 + 24'd1;
                                                                    if(delay_cnt1 == 25'h1ff_ffff)
                                                                                    state          <=  3'd2 ;
    
                                                                    if(cnt0 != re)
                                                                                cnt0 <= cnt0 + 13'd1 ; 
                                                                    else 
                                                                            begin 
                                                                                cnt0 <= 13'd0 ; 
                                                                                out_beep <= ~out_beep ;
                                                                            end 
                                                            end 
                                            3'd2    :    begin 
                                                                    delay_cnt1  <= delay_cnt1 + 24'd1;
                                                                    if(delay_cnt1 == 25'h1ff_ffff)
                                                                                    state          <=  3'd3 ;
    
                                                                    if(cnt0 != mi)
                                                                                cnt0 <= cnt0 + 13'd1 ; 
                                                                    else 
                                                                            begin 
                                                                                cnt0 <= 13'd0 ; 
                                                                                out_beep <= ~out_beep ;
                                                                            end 
                                                            end 
                                            3'd3    :    begin 
                                                                    delay_cnt1  <= delay_cnt1 + 24'd1;
                                                                    if(delay_cnt1 == 25'h1ff_ffff)
                                                                                    state          <=  3'd4 ;
    
                                                                    if(cnt0 != fa)
                                                                                cnt0 <= cnt0 + 13'd1 ; 
                                                                    else 
                                                                            begin 
                                                                                cnt0 <= 13'd0 ; 
                                                                                out_beep <= ~out_beep ;
                                                                            end 
                                                            end 
                                            3'd4    :    begin 
                                                                    delay_cnt1  <= delay_cnt1 + 24'd1;
                                                                    if(delay_cnt1 == 25'h1ff_ffff)
                                                                                    state          <=  3'd5 ;
    
                                                                    if(cnt0 != so)
                                                                                cnt0 <= cnt0 + 13'd1 ; 
                                                                    else 
                                                                            begin 
                                                                                cnt0 <= 13'd0 ; 
                                                                                out_beep <= ~out_beep ;
                                                                            end 
                                                            end 
                                            3'd5    :    begin 
                                                                    delay_cnt1  <= delay_cnt1 + 24'd1;
                                                                    if(delay_cnt1 == 25'h1ff_ffff)
                                                                                    state          <=  3'd6 ;
    
                                                                    if(cnt0 != la)
                                                                                cnt0 <= cnt0 + 13'd1 ; 
                                                                    else 
                                                                            begin 
                                                                                cnt0 <= 13'd0 ; 
                                                                                out_beep <= ~out_beep ;
                                                                            end 
                                                            end 
                                            3'd6    :    begin 
                                                                    delay_cnt1  <= delay_cnt1 + 24'd1;
                                                                    if(delay_cnt1 == 25'h1ff_ffff)
                                                                                    state          <=  3'd7 ;
    
                                                                    if(cnt0 != xi)
                                                                                cnt0 <= cnt0 + 13'd1 ; 
                                                                    else 
                                                                            begin 
                                                                                cnt0 <= 13'd0 ; 
                                                                                out_beep <= ~out_beep ;
                                                                            end 
                                                            end 
                                            3'd7    :    begin 
                                                                    delay_cnt1  <= delay_cnt1 + 24'd1;
                                                                    if(delay_cnt1 == 25'h1ff_ffff)
                                                                                    state          <=  3'd0 ;
    
                                                                    if(cnt0 != do1)
                                                                                cnt0 <= cnt0 + 13'd1 ; 
                                                                    else 
                                                                            begin 
                                                                                cnt0 <= 13'd0 ; 
                                                                                out_beep <= ~out_beep ;
                                                                            end 
                                                            end 
                                                            
                                    endcase 
                            end 
                     else  if(clk1 < 4'd9 )  clk1 <= clk1 + 4'd1 ; 
                     else                           clk1 <= 4'd0  ;
            end 
                                  
                                  
                                  
                                  
    endmodule     
  • 相关阅读:
    Mysql添加远程访问权限
    Android下安装应用不成功解决
    Unity 编译apk启动出异常
    Java 实现函数回调
    C# 实现函数回调
    北京数字认证无领导小组讨论总结
    深圳市共进电子 嵌入式软件工程师笔试题
    北京君正和博彦科技笔试体会及总结
    9月5日 华为2014校园招聘的机试题目_C语言版答案
    ios客户端base64上传图片到java服务器遇到的问题
  • 原文地址:https://www.cnblogs.com/sepeng/p/3735768.html
Copyright © 2020-2023  润新知