【FPGA】五、蜂鸣器播放音乐

本文介绍如何使用FPGA开发板操控无源蜂鸣器,通过计算不同音符频率实现歌曲《两只老虎》的播放。涉及程序设计思路、代码实现以及音频频率控制原理。

文章目录

前言

一、蜂鸣器简介

二、音频音符简介

三、任务要求

四、程序设计

1、设计思路

 2、程序代码   

总结


前言

        蜂鸣器(Buzzer)是现代常用的一种电子发声器,主要用于产生声音信号。它是一种一体化结构的电子讯响器,采用直流电压供电,被广泛用于计算机、报警器、电子玩具、定时器等一些列电子产品中。


一、蜂鸣器简介

        蜂鸣器按照其驱动方式不同主要分为有源蜂鸣器和无源蜂鸣器,两者的主要区别为蜂鸣器内部是否还有振荡源。一般有源蜂鸣器内部自带振荡源,通电就会发声,而无源蜂鸣器内部不含振荡源,需要外接振荡信号才能发声。

        相较于有源蜂鸣器,无源蜂鸣器的成本较低,而我们FPGA开发板上的蜂鸣器一般都是无源蜂鸣器,需要我们对其进行编程配置,我们利用不同的频率变化,控制蜂鸣器发出不同音调的声音。


二、音频音符简介

        我们是通过不同的频率去控制蜂鸣器的音调变化的,所以我们想要使蜂鸣器播放音乐,首先我们要直到不同音符所对应的频率,下面是低、中、高音下不同音符的频率对应表:

         根据上图可以计算出不同音符振动的周期,我所采用的Cyclong IV开发板上的晶振时钟为50MHZ,每一个周期就是20ns。那么每个音调的分频系数为:50 000 000 / 音调频率(可四舍五入)。


三、任务要求

        本次设计的要求就是利用FPGA开发板上的无源蜂鸣器,通过不同振动频率播放歌曲两只老虎。

 


四、程序设计

1、设计思路

        ① 首先我们需要计算出每个不同的音符对应的分频系数,由此产生不同的音调,我们需要设计一个分频计数器,来计数当前发出音调的分频系数。

        ② 然后我们需要一个节拍计数器,我们定义为半拍300ms,一拍500ms。

        ③ 利用组合逻辑case语句进行设计,将需要的节拍和要发出的音调写入case语句中。

 2、程序代码   

/*========================================*
    filename    : beep_music.v
    description : 无源蜂鸣器播放音乐实验
    time        : 2022-11-010 
    author      : 卡夫卡与海
*====================
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值