手把手教你学习FPGA系列视频教程_救护车鸣笛声

本套教程主要面对FPGA初学者,本次DIY活动不仅让初学者掌握FPGA硬件电路设计以及焊接方面的知识,更重要的是让初学者学习硬件描述语言 (VerilogHDL)描述数字电路,以及Quartus II、Modelsim等工具的使用,学会怎么用CPLD/FPGA做设计,掌握FPGA的学习方法,少走弯路,轻松迈进CPLD/FPGA设计开发的大门。


下面,我们来看一下蜂鸣器篇的第一个实验:让蜂鸣器发出救护车鸣笛的声音

首先我们看一下开发环境

我们硬件开发环境采用的是CycloeIV系列EP4CE6开发板

软件实验环境采用的是Quartus II 12.0开发软件及Modelsim SE 10.0c开发软件


我们来看一下本实验的实验任务:让开发板上的蜂鸣器发出救护车鸣笛声

我们先了解一下蜂鸣器的基础知识:蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中做发声器件。

我们了解了蜂鸣器的基础知识后,来了解一下硬件发声的原理


硬 件电路的发声原理:声音的频谱范围约在几十到几千赫兹,若能利用程序来控制FPGA芯片某个引脚输出一定频率的矩形波,接上无源蜂鸣器就能发出相应频率的 声音。乐曲中的每一音符对应着一个确定的频率,要想FPGA发出不出音符的音调,实际上只要控制它输出相应音符的频率即可。乐曲都是由一连串的音符组成, 因此按照乐谱依次输出这些音符所对应的频率,就可以在无源蜂鸣器上连续地发出各个音符的音调。而要准确地演奏出一首乐曲,仅仅让无源蜂鸣器发声是不够的, 还必须准确地控制乐曲的节奏,即乐曲中每个音符的发生频率及其持续时间是乐曲能够连续演奏的两个关键因素。

我们来看一下开发板上蜂鸣器的原理图

如下图所示,蜂鸣器用PNP三极管进行驱动控制,并使用无源蜂鸣器,当在BEEP输入一定频率的脉冲时,蜂鸣器将会蜂鸣,改变输入频率可以改变蜂鸣器的响声。因此,可以利用一个PWM来控制BEEP,通过改变PWM的频率来得到不同的声响,当然也可以用来播放音乐。

手把手教你学习FPGA系列视频教程_救护车鸣笛声_第1张图片



下面我们看一下我们本实验的原理

本次实验的目的是让开发板上的蜂鸣器发出救护车鸣笛声。通过查阅资料,我们了解到,救护车的是由两个音调按照一定频率交替实现的鸣笛声。我们的开发板板载 50MHz的晶振,通过Verilog HDL语言编程将此频率分频后驱动一个I/O口,这个I/O口连接到DIY开发板上的无源蜂鸣器,通过改变这个I/O口的输出频率,就叫使蜂鸣器发出各种 声音和音乐。本次实验实现蜂鸣器发出救护车鸣笛声,我们可以通过让蜂鸣器交替发出两个音调来实现。首先,我们使用一个25位的计数器"div_cnt"来 产生一个低频的方波,其最高有效位(div_cnt[24])以大约1.5Hz的频率翻转。我们使用这一位(div_cnt[24])来控制主计数器产生 在两个频率之间切换的输出波形,这样一来,就可以交替发出两个音调,发出类似救护车的鸣笛声。



下面,我们来看一下代码,了解一下这个实验具体是如何实现的。

手把手教你学习FPGA系列视频教程_救护车鸣笛声_第2张图片

你可能感兴趣的:(FPGA)