其实之前在ARM的时候早就接触过不少的外围模块,蜂鸣器当然也算是一个,有源无源之类自己了解一波,这里只需要知道,根据电路图,低电平导通蜂鸣器电路,高电平关闭,改变输出频率(单位时间内高低电平的变化次数)可以调节蜂鸣器的声音
if(fre==1'b0)
begin
pwm = 1'b0;
cnt = 32'd0;
end
else
begin
if(cnt==(MAIN_FRE*1000_000)/(2*fre))
begin
pwm = ~pwm;
cnt = 32'd0;
end
else
begin
cnt = cnt + 32'd1;
pwm = pwm;
end
end
ARM里面是通过定时器实现的,因此,在原理相同的情况下,只是根据不同的语法规则,换一种程序实现罢了,也没什么值得大谈特谈的,只是在Quartus开发环境里,Verilog HDL下的计数调节使用的确实更方便一点(并不代表我对FPGA是完全看好的,至少的自动控制方面,ARM绝对是我的最爱)
/***
for nothing user input
***/
if(timer_cnt==32'd50_000_000)
begin
if(fre_io>=32'd50_000_000)
begin
fre_io = 32'd3400;
end
else
begin
fre_io = fre_io + 25;
end
timer_cnt = 32'd0;
end
else
begin
timer_cnt = timer_cnt + 32'd1;
fre_io = fre_io;
end
pin_out = pwm_;
程序都是自主实现的,只有在一些有点难度的外围模块出现的时候会仔细地阅读一下商家代码,借用已经完成的程序,看懂后在进行测试,有可能的话进一步完善,毕竟有些时候,程序需要自己的想法,但是,不可否认,别人的好的代码,是,非常值得参考的,不光是在拓展自己的见识方面,也有利于学习别人的好的代码逻辑、组织、定义等等
视频链接改天附上!!!