微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 当让蜂鸣器发声时,beep=~beep是什么意思

当让蜂鸣器发声时,beep=~beep是什么意思

时间:10-02 整理:3721RD 点击:
取反以后不是没有声音了嘛

再取反不是又有声音了么,

但是让蜂鸣器发出类似救护车的声音是一直响的,程序里面同样有取反
module jiuhuche(clk,sys_rst,beep);
input clk,sys_rst;
output reg beep;
reg[24:0] count;
reg[14:0] delay_cnt;
wire[14:0] delay_end;
parameter clk_divider0=10000/*56817*/;
parameter clk_divider1=50000/*28408*/;
assign delay_end=count[24]?clk_divider1:clk_divider0;
always@(posedge clk or negedge sys_rst)
begin
   if(sys_rst==0)
     count<=25'b0;
    else
     count<=count+1'b1;
end
always@(posedge clk or negedge sys_rst)
begin
   if(sys_rst==0)
      delay_cnt<=delay_end;
  else if(delay_cnt==15'd0)
         begin
            beep<=~beep;   //给beep取反是什么意思
            delay_cnt<=delay_end;
          end
       else
         delay_cnt<=delay_cnt-15'b1;
end
endmodule

beep自定义变量,=~表示取反

小编,是不是通过不同的定时,再取反发出不同频率的声音,像单片机一样的原理,Verilog不是看的很懂。

蜂鸣器响是因为内部的一个片按一定频率震动发出声音的    取反的话电平按一定频率翻转  然后蜂鸣器就响了

assign delay_end=count[24]?clk_divider1:clk_divider0;这条语句是一个持续赋值语句。它会使delay_end一直保持在clk_divider1和clk_divider0两个数据之间,delay_cnt==15'd0的条件是无法满足的,been始终保持初始值。蜂鸣器会是导通或截止。所以无法实现救护车一样的声音!

蜂鸣器响是因为内部的一个片按一定频率震动发出声音的,为了好听!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top