这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 交一下蜂鸣器篇培训的作业

共6条 1/1 1 跳转至

交一下蜂鸣器篇培训的作业

助工
2014-06-18 11:52:02     打赏

蜂鸣器篇的作业:蜂鸣器发出警车声音

这是实验现象:http://v.youku.com/v_show/id_XNzI4MDYzMDgw.html

想法:救护车的声音只是两个频率的变化的。如http://play.baidu.com/?__m=mboxCtrl.playSong&__a=2000100377&__o=/song/2000100377||playBtn&fr=-1||www.baidu.com#loaded。而警车色声音貌似有许多种,最简单的一种是频率周期性变化的。如http://www.9ku.com/play/549980.htm

这是实验现象:http://v.youku.com/v_show/id_XNzI4MDYzMDgw.html


/**************************************************************************
*Engineer: superdian   
*Create Date:   2014/6/17
*Design Name:   BEEP
*Module Name:   BEEP
*Project Name:  BEEO
*Target Devices: EP3CE5E144C8
*Tool versions: 
*Description: 蜂鸣器发出警车声音
******************************************************************************/
module BEEP(sys_clk,beep);
//定义输入输出信号
input sys_clk;
output beep;
//定义几个寄存器
reg beep;
reg[22:0] counter1;
reg[13:0] counter2;


always@(posedge sys_clk)
  begin 
   counter1<=counter1+1;
  end
//让发声频率在适当范围内改变
wire[6:0] rate=(counter1[22]?counter1[21:15]:~counter1[21:15]);
wire[13:0] clkdivider={1'b1,rate,6'h000000};


always@(posedge sys_clk)
  if(counter2==0)
    counter2<=clkdivider;
  else counter2<=counter2-1;


always@(posedge sys_clk)
  begin 
    if(counter2==0)
    beep<=~beep;
  end
endmodule






关键词: 作业    

助工
2014-06-18 11:54:09     打赏
2楼

再上交乐曲演奏的作业,两只老虎的。

这是实验现象:http://v.youku.com/v_show/id_XNzI4MDYzMTYw.html

/**************************************************************************
*Engineer: superdian   
*Create Date:   2014/6/18
*Design Name:   MUSIC
*Module Name:   MUSIC
*Project Name:  MUSIC
*Target Devices: EP3CE5E144C8
*Tool versions: 
*Description: 蜂鸣器乐曲演奏——两只老虎。
******************************************************************************/
module MUSIC(sys_clk,sys_rstn,beep);


//定义输入输出
input sys_clk;
input sys_rstn;
output beep;


//寄存器定义
reg beep;
reg [15:0] delay_cnt;
reg [15:0] delay_end;
reg [24:0] delay;
reg [5:0]  delay1;
wire [24:0] delay2;


/**************************************
改变唱到“一只没有耳朵,一只没有尾巴”
时的节拍。
***************************************/
parameter delay3=25'd9999999;
parameter delay4=25'd4999999;
assign  delay2=((delay1>16)&(delay1<29))? delay4:delay3;




always@(posedge sys_clk,negedge sys_rstn )
 begin
     if(!sys_rstn)
        delay<=25'd0;
     else if(delay==delay2)
        delay<=25'd0;
     else
        delay<=delay+1'b1;
end


always@(posedge sys_clk,negedge sys_rstn )
 begin
      if(!sys_rstn)
           delay1<=3'd0;
      else if(delay==delay2)
           delay1<=delay1+1'b1;
      else if(delay1==6'd36)
           delay1<=0;
      else
           delay1<=delay1;
   end
 

always@(posedge sys_clk,negedge sys_rstn)
   begin
    if(!sys_rstn)
        begin 
            delay_cnt<=16'd0;
            beep<=1'b0;
        end
    else if((delay_cnt==delay_end)&(!(delay_end==16'hffff)))      
        begin
            delay_cnt<=16'd0;
            beep<=~beep;
        end
    else 
        begin
             delay_cnt<=delay_cnt+1'b1;
             beep<=beep;
        end
        
end


/***************************************************
两只老虎歌曲对应的分频系数值.
注:开发板晶振为20MHZ的。
***************************************************/
always@(delay1)
begin
  case(delay1)


    6'd1:delay_end = 16'd38134; //低音1的分频系数值
    6'd2:delay_end = 16'd34129; //低音2的分频系数值
    6'd3:delay_end = 16'd30395; //低音3的分频系数值
    6'd4:delay_end = 16'd38134; //低音1的分频系数值
    6'd5:delay_end = 16'd38134; //低音1的分频系数值
    6'd6:delay_end = 16'd34129; //低音2的分频系数值
    6'd7:delay_end = 16'd30395; //低音3的分频系数值
    6'd8:delay_end = 16'd38134; //低音1的分频系数值
    6'd9:delay_end = 16'd30395; //低音3的分频系数值
    6'd10:delay_end = 16'd28653; //低音4的分频系数值
    6'd11:delay_end = 16'd25510; //低音5的分频系数值
    6'd12:delay_end = 16'd25510; //低音5的分频系数值
    6'd13:delay_end = 16'd30395; //低音3的分频系数值
    6'd14:delay_end = 16'd28653; //低音4的分频系数值
    6'd15:delay_end = 16'd25510; //低音5的分频系数值
    6'd16:delay_end = 16'd25510; //低音5的分频系数值
    6'd17:delay_end = 16'd25510; //低音5的分频系数值
    6'd18:delay_end = 16'd22727; //低音6的分频系数值
    6'd19:delay_end = 16'd25510; //低音5的分频系数值
    6'd20:delay_end = 16'd28653; //低音4的分频系数值
    6'd21:delay_end = 16'd30395; //低音3的分频系数值
    6'd22:delay_end = 16'd38134; //低音1的分频系数值
    6'd23:delay_end = 16'd25510; //低音5的分频系数值
    6'd24:delay_end = 16'd22727; //低音6的分频系数值
    6'd25:delay_end = 16'd25510; //低音5的分频系数值
    6'd26:delay_end = 16'd28653; //低音4的分频系数值
    6'd27:delay_end = 16'd30395; //低音3的分频系数值
    6'd28:delay_end = 16'd38134; //低音1的分频系数值
    6'd29:delay_end = 16'd38134; //低音1的分频系数值
    6'd20:delay_end = 16'd25510; //低音5的分频系数值
    6'd31:delay_end = 16'd38134; //低音1的分频系数值
    6'd32:delay_end = 16'd38134; //低音1的分频系数值
    6'd33:delay_end = 16'd38134; //低音1的分频系数值
    6'd34:delay_end = 16'd25510; //低音5的分频系数值
    6'd35:delay_end = 16'd38134; //低音1的分频系数值
    6'd36:delay_end = 16'd38134; //低音1的分频系数值
     default:delay_end = 16'd65535;
  endcase
end


endmodule 


/******************************************************
         开发板晶振20MHZ对应的分频系数            
        5'd1:delay_end = 16'd38134; //低音1的分频系数值
5'd2:delay_end = 16'd34129; //低音2的分频系数值
5'd3:delay_end = 16'd30395; //低音3的分频系数值
5'd4:delay_end = 16'd28653; //低音4的分频系数值
5'd5:delay_end = 16'd25510; //低音5的分频系数值
5'd6:delay_end = 16'd22727; //低音6的分频系数值
5'd7:delay_end = 16'd20283; //低音7的分频系数值
   5'd8:delay_end = 16'd19109; //中音1的分频系数值
5'd9:delay_end = 16'd17027; //中音2的分频系数值
5'd10:delay_end = 16'd15167; //中音3的分频系数值
5'd11:delay_end = 16'd14316; //中音4的分频系数值
5'd12:delay_end = 16'd12755; //中音5的分频系数值
5'd13:delay_end = 16'd11363; //中音6的分频系数值
5'd14:delay_end = 16'd10123; //中音7的分频系数值
5'd15:delay_end = 16'd09569; //高音1的分频系数值
5'd16:delay_end = 16'd08512; //高音2的分频系数值
5'd17:delay_end = 16'd07578; //高音3的分频系数值
5'd18:delay_end = 16'd07518; //高音4的分频系数值
5'd19:delay_end = 16'd06377; //高音5的分频系数值
5'd20:delay_end = 16'd05681; //高音6的分频系数值
5'd21:delay_end = 16'd05062; //高音7的分频系数值
                     
 ************************************************************/       


助工
2014-06-18 12:02:28     打赏
3楼
以前上音乐课都玩去了,对音乐不太了解,不会看谱,说也说不清楚,上传一些资料帮助大家理解下吧。单片机音乐演奏的资料.zip

助工
2014-06-18 12:05:01     打赏
4楼
这次作业其实没有完整的完成,因为乐曲演奏到“真奇怪,真奇怪”这一部分就怪了。先停了一下,然后只有一个“真奇怪”。希望讲师51FPGA指点一下

高工
2014-06-18 14:05:48     打赏
5楼
完成的不错,加油继续。

助工
2014-06-18 22:01:24     打赏
6楼
谢谢,一直在努力学习之中。又进行了一次试验,解决了上次乐曲演奏实验的问题,至少完全演奏出了乐曲。这是实验现象:http://v.youku.com/v_show/id_XNzI4MzQwMTM2.html

共6条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]