集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 2506|回复: 1

FPGA快速入门-蜂鸣器

[复制链接]
lxw 发表于 2019-6-22 17:51:10 | 显示全部楼层 |阅读模式
或许您可能听说过 FPGA,但不是很了解;或许您已经知道 FPGA 的存在,但没有掌握这门技术;或许您打算在不久的将来对 FPGA 进行初步尝试;不管怎样,只要您对 FPGA 感兴趣,那么就让我们一起踏出通往 FPGA 世界的第一步。
1.实验简介
本教程以实验为主,力求以详细的步骤和讲解让大家以最快的方式了解FPGA 的开发的基本流程以及 Quartus II 软件的使用方法。蜂鸣器篇的实验相对简单,为基础实验,希望通过对蜂鸣器篇的学习,大家能够掌握以下
知识要点:
熟悉和掌握 FPGA 开发的基本流程和 Quartus II 软件的基本使用方法。
掌握蜂鸣器发声的基本原理。
2.背景知识
2.1.蜂鸣器的基础知识
蜂鸣器的作用 蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。
2.2.蜂鸣器发声基本原理
硬件电路发声的基本原理 硬件电路的发声原理,声音的频谱范围约在几十到几千赫兹,若能利用程序来控制 FPGA 芯片某个引脚输出一定频率的矩形波,接上无源蜂鸣器就能发出相应频率的声音。乐曲中的每一音符对应着一个确定的频率,要想 FPGA 发出不同音符的音调,实际上只要控制它输出相应音符的频率即可。乐曲都是由一连串的音符组成,因此按照乐曲的乐谱依次输出这些音符所对应的频,就可以在无源蜂鸣器上连续地发出各个音符的音调。而要准确地演奏出一首乐曲,仅仅让无源蜂鸣器能够发声是不够的,还必须准确地控制乐曲的节奏,即乐曲中每个音符的发生频率及其持续时间是乐曲能够连续演奏的两个关键因素。
音符频率的获得 多个不同频率的信号可通过对某个基准频率进行分频器获得。由于各个音符的频率多为非整数,而分频系数又不能为小数,故必须将计算机得到的分频系数四舍五入取整。若基准频率过低,则分频系数过小,四舍五入取整后的误差较大。若基准频率过高,虽然可以减少频率的相对误差,但分频结构将变大。实际上应该综合考虑这两个方面的因素,在尽量减少误差的前提下,选取合适的基准频率。

图zx1开发板蜂鸣器电路图
如上图所示,蜂鸣器用PNP三极管进行驱动控制,并使用无源蜂鸣器,当在BEEP输入一定频率的脉冲时,蜂鸣器蜂鸣,改变输入频率可以改变蜂鸣器的响声。因此可以利用一个PWM来控制BEEP,通过改变PWM的频率来得到不同的声响,也以用来播放音乐。
3.实验环境
 硬件实验环境为开发板套件 软件实验环境为 Quartus II13.0 开发软件
4.实验一(蜂鸣器发出救护车鸣笛声)
4.1.实验目的
 掌握蜂鸣器发声基本原理。
 掌握采用 Verilog HDL 语言编程实现蜂鸣器发出救护车鸣笛声的设计方
法。
4.2.试验任务
实现开发板上的蜂鸣器发出救护车鸣笛声
4.3.原理分析
开发板板载 50MHZ 的晶振,通过 Verilog HDL 语言编程将此频率分频后驱动一个 I/O 口。这个 I/O 口连接到 DIY 开发板上的无源蜂鸣器。通过改变这个 I/O 口的输出频率,就可以使蜂鸣器发出各种声音和音乐。本次实验实现蜂鸣器发出救护车鸣笛声,我们可以通过让蜂鸣器交替发出两个音调来实现。首先我们使用一个 25 位的计数器“div_cnt”来产生一个低频的方波。其最高有效位(div_cnt [24])以大约 1.5Hz 的频率翻转。我们使用这一位(div_cnt [24])来控制主计数器产生在两个频率之间切换的输出波形,这样一来就可以交替发出两个音调,发出类似救护车的鸣笛声。
4.4.代码实现

4.5.实验步骤
(1)建立新工程项目:
打开 Quartus II 软件,进入集成开发环境,点击 File→New project wizard 建立一个工程项目。
(2)建立文本编辑文件:
点击 File→New..在该项目下新建 Verilog HDL 源程序文件,输入试验程序中的源程序代码保存后选择工具栏中的按钮启动编译,若在编译中发现错误,则找出并更正错误,直到编译成功为止。
(3)选择器件型号及引脚的其他设置:
选择所用的 FPGA 器件----EP4C10F17C8,点击两次 ok,回到主界面。
(4)配置 FPGA 引脚:
在 Quartus II 软件主页面下,选择 Assignments→Pins 或选择工具栏上按钮,配置相关引脚。
(5)编译工程项目:
在 Quartus II 主页面下,选择 Processing→Start Compilation 或点击工具栏上的按钮启动编译,直到出现“Full Compilation Report”对话框,点击 OK 即可。
(6)下载设计程序.sof 文件到目标 FPGA,下载采用 JTAG 方式(由于配置芯片擦写次数有限,实验均采用 JTAG 下载方式)。
4.6.实验现象
开发板上的蜂鸣器发出救护车鸣笛声
4.7.日积月累
有源蜂鸣器和无源蜂鸣器区别,这里的“源”不是指电源。而是指震荡源。 也就是说,有源蜂鸣器内部带震荡源,所以只要一通电就会叫。 而无源内部不带震荡源,所以如果用直流信号无法令其鸣叫。必须用 2K~5K 的方波去驱动它。 有源蜂鸣器往往比无源的贵,就是因为里面多个震荡电路。 无源蜂鸣器的优点是:便宜,声音频率可控,可以做出“多来米发索拉西”的效果。有源蜂鸣器的优点是:程序控制方便 。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
雷磊 发表于 2019-6-25 14:58:07 | 显示全部楼层
FPGA快速入门-蜂鸣器
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2024-12-24 07:28 , Processed in 0.056432 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表