无源蜂鸣器驱动实验

03-03 1683阅读

1.原理

无源蜂鸣器驱动实验

无源蜂鸣器驱动实验

计划是,生成不同的7个频率控制蜂鸣器发声,每个音调发声0.5秒。

50MHZ计数0.5秒,50MHZ一个周期20ns,要计数0.5秒 ,0.5/0.000_000_02s=25000_000个时钟周期。因为是从0开始计数,所以计数的最大值是0-2499_999。

用一个计数器计数发音的7个0.5秒,当成是一个循环。

无源蜂鸣器驱动实验

1/262hz=0.0038167938931298s,约等于3816794 ns。因此3816794/20=190,839.7。约等于190840。也就是说要计数0-190839个时钟周期才是262hz。占空比是50%(占空比:
是一个脉冲周期内,高电平的时间与整个周期时间的比例)。

无源蜂鸣器驱动实验

无源蜂鸣器驱动实验

无源蜂鸣器驱动实验

注意:

无源蜂鸣器驱动实验

最后一个else在时序逻辑中可以不写,但在组合逻辑中一定要写。

2.1 beep.v

module beep #(
	parameter CNT_MAX=25'd24_999_999,
	parameter DO	=18'd190839,
	parameter RE    =18'd170067,
	parameter MI    =18'd151415,
	parameter FA    =18'd143265,
	parameter SO    =18'd127550,
	parameter LA    =18'd113635,
	parameter XI    =18'd101214
)
(
	input wire 		sys_clk,
	input wire 		sys_rst_n,
	
	output reg		beep
);
reg [24:0] cnt;
reg [2:0]  cnt_500ms;
reg [17:0] freq_cnt;
reg [17:0] freq_data;
wire [16:0] duty_data;
assign duty_data=freq_data>>1;
always@(posedge sys_clk or negedge sys_rst_n )
	if(sys_rst_n==1'b0)
		cnt
VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]