Bootstrap

fpga开发——蜂鸣器

蜂鸣器的原理

有源蜂鸣器和无源蜂鸣器

         无源蜂鸣器利用电磁感应现象,为音圈接入交变电流后形成的电磁铁与永磁铁相吸或相斥而推动振膜发声,接入直流电只能持续推动振膜而无法产生声音,只能在接通或断开时产生声音。无源蜂鸣器的工作原理与扬声器相同。在使用方波信号源驱动的应反向并联一个二极管,防止突然断电时产生的高压反向电动势击穿其他元件以及使用寿命缩短。

        有源蜂鸣器插上电就能用,内部有固定频率,无法更改。

        在我的开发板上使用的是无源蜂鸣器,只有产生方波才能发出声音,产生不同频率的方波就产生不同音调的波形。

发出特定音调的声音

        开发板外部时钟50Mhz,若要产生262hz(do)音调,则计数器应该计数到50000000/262 = 190840个数,若要产生占空比为0.5的方波,则计数器可以计数到190840/2 = 95420 信号翻转,就产生了占空比0.5 的方波,可以驱动蜂鸣器发出连续的do音调。

代码如下:

module beep
#(parameter cnt_max = 17'd95419)
(input wire clk,
input wire rst,
output reg  beep);

//发出连续音调的声音
reg [16:0] cnt ;

always@(posedge clk or negedge rst)
begin
	if(rs
;