APP下载

基于FPGA的无源蜂鸣器音乐播放器的设计与实现

2022-05-11武汉轻工大学电气与电子工程学院王洪钦李素芬吴倩

内江科技 2022年4期
关键词:方波蜂鸣器音调

◇武汉轻工大学电气与电子工程学院 王洪钦 李素芬 吴倩

本文介绍了基于FPGA设计的无源蜂鸣器的音乐播放,使用无源蜂鸣器在不同频率的脉冲方波信号下来产生基本的音调,采用了VerilogHDL语言进行描述,通过Diamond 3 软件和ModelSim进行电路的综合与仿真,并下载到小脚丫MachXO2-4000HC开发板中验证了无源蜂鸣器音乐播放的可行性。

1 引言

蜂鸣器是电器设备中经常使用的一种声音器件,按其结构主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型:

一种是电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场,振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。

另一种是压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。多谐振荡器由晶体管或集成电路构成,当接通电源后(1.5~15V直流工作电压),多谐振荡器起振,输出1.5~2.5kHZ的音频信号,阻抗匹配器推动压电蜂鸣片发声。

按是否带有信号源分为有源蜂鸣器和无源蜂鸣器两种类型。

一种是有源蜂鸣器只需要在其供电端加上额定直流电压,其内部的震荡器就可以产生固定频率的信号,驱动蜂鸣器发出声音。

另一种是无源蜂鸣器可以理解成与喇叭一样,需要在其供电端上加上高低不断变化的电信号才可以驱动发出声音。

图1 无源蜂鸣器去驱动电路

2 基本工作原理

使用无源蜂鸣器产生乐曲时,是没有音色的区别的,只会有简单的音调和节拍,蜂鸣器使用NPN三极管(9013)驱动,三极管当开关用,当基极电压拉高时,蜂鸣器通电,当基极电压拉低时,蜂鸣器断电,FPGA控制GPIO口给三极管的基极输出不同频率的脉冲信号,蜂鸣器就可以发出不同的音节。小脚丫MachXO2-4000HC开发板内置时钟为12MHz,无需外置时钟,时钟分频后每一个特定的频率对应一个音调,对应关系如表1所示。

表1 音调简码表

音调是通过给无源蜂鸣器输入给定频率的方波信号来实现的,不同的音调不同的频率方波信号,因此在编程中首先要实现分频产生不同的信号方波,而方波的信号又来自于计数器的计数值不同而产生的,表1展示了不同音调对应下12MHz中计数器理论计数值。

3 音乐播放功能实现

本次实验实现的是歌曲《Astronomia》简单曲谱演奏,精简后的曲谱如下:

图2 歌曲《Astronomia》简谱

由简谱可见,前四拍每一小节中有4拍,每拍有2个音符,则每一小节有8个音符,粗略计算为每一小节2s钟,则每一个音符对应的时间为0.125s,程序如下:

计数器CNT的最大值CNT_MAX的值为24位宽的1499999,小脚丫开发板的内置系统时钟为12MHZ,分频的到0.125s对应的计数值为1499999。

《Astronomia》简谱至采取了前2段,故音符数的位宽为8位宽共129位,每个音符的时间间隔都控制好之后,接下来就是让每个音符都发出固定的声音,无源蜂鸣器要给出不同频率的信号方波才可以发出不同的音调,程序如下:

Freq_cnt在达到音调频率计数值或计数器cnt达到最大时清零,其它时刻都自行计数,同时将音符计数值右移一位赋值给duty_data,同时将音符频率计数值与duty_data进行比较,前者大的时候,beep高电平;前者小的时候,beep低电平。这样就形成了一束频率信号方波输入给无源蜂鸣器发生,至此一个音符的发生完毕。

实现多个甚至整首歌曲的音符演奏,本程序采用了内置多个case分之语句与定义多个频率来完成。

4 结束语

基于FPGA的无源蜂鸣器音乐播放实验成功发声并发出不同的音调,但并并没有对每个音符时间间隔给出一个通解,具有特殊性,同时程序编配上还具有最优解。实际生活中可以编配简单的歌曲,具有一定的经济意义。

猜你喜欢

方波蜂鸣器音调
电动自行车产品车速提示音检测现状和整改技术研究(2)
便携式多功能频率计的设计与实现
掌控板制作简易钢琴
本尼丢了蜂鸣器
测绘技术在土地资源管理中的应用
一种基于555定时器的方波产生电路设计
听力障碍幼儿音调异常矫治的实施建议
你可以相信电话那头的人吗?
刘涛《音调未定的儒家——2004年以来关于孔子的论争·序》
丰田凯美瑞240V车间隙警告蜂鸣器异常鸣响