当让蜂鸣器发声时,beep=~beep是什么意思
再取反不是又有声音了么,
但是让蜂鸣器发出类似救护车的声音是一直响的,程序里面同样有取反
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始终保持初始值。蜂鸣器会是导通或截止。所以无法实现救护车一样的声音!
蜂鸣器响是因为内部的一个片按一定频率震动发出声音的,为了好听!