zoukankan      html  css  js  c++  java
  • 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     
  • 相关阅读:
    sql server 复制数据库
    sql server 修改数据库名、修改逻辑文件名、修改数据库物理文件名
    前端工具集合
    如何写一个日历组件
    封装一个通过class获取元素的方法--我的JS原生库(1)
    关于复选框选中状态的判断
    42种常见的浏览器兼容性问题大汇总(转载)
    CSS样式命名整理(非原创)
    setTimeout和setInterval实现滚动轮播中,清除定时器的思考
    注册登陆拖拽验证(1)
  • 原文地址:https://www.cnblogs.com/sepeng/p/3735768.html
Copyright © 2011-2022 走看看