芯创电子手把手教你学习FPGA—蜂鸣器篇.docx

上传人:b****1 文档编号:168209 上传时间:2022-10-05 格式:DOCX 页数:11 大小:2.54MB
下载 相关 举报
芯创电子手把手教你学习FPGA—蜂鸣器篇.docx_第1页
第1页 / 共11页
芯创电子手把手教你学习FPGA—蜂鸣器篇.docx_第2页
第2页 / 共11页
芯创电子手把手教你学习FPGA—蜂鸣器篇.docx_第3页
第3页 / 共11页
芯创电子手把手教你学习FPGA—蜂鸣器篇.docx_第4页
第4页 / 共11页
芯创电子手把手教你学习FPGA—蜂鸣器篇.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

芯创电子手把手教你学习FPGA—蜂鸣器篇.docx

《芯创电子手把手教你学习FPGA—蜂鸣器篇.docx》由会员分享,可在线阅读,更多相关《芯创电子手把手教你学习FPGA—蜂鸣器篇.docx(11页珍藏版)》请在冰豆网上搜索。

芯创电子手把手教你学习FPGA—蜂鸣器篇.docx

2013

芯创电子FPGA开发板配套教程

手把手教你学习FPGA—蜂鸣器篇

或许您可能听说过FPGA,但不是很了解;或许您已经知道FPGA的存在,但没有掌握这门技术;或许您打算在不久的将来对FPGA进行初步尝试;不管怎样,只要您对FPGA感兴趣,那么就让我们一起踏出通往FPGA世界的第一步,芯创电子手把手教你学习FPGA。

芯创电子工作室

51FPGA

2013/3/3

2013

芯创电子FPGA开发板配套教程

目录

1.实验简介 3

2.背景知识 3

2.1.蜂鸣器的基础知识 3

2.2.蜂鸣器发声基本原理 3

2.3.DIY开发板蜂鸣器电路图 4

3.实验环境 4

4.实验一(蜂鸣器发出救护车鸣笛声) 5

4.1.实验目的 5

4.2.试验任务 5

4.3.原理分析 5

4.4.代码实现 6

4.5.实验步骤 6

4.6.实验现象 7

4.7.日积月累 7

4.8.课后作业 7

5.实验二(简易硬件电子琴) 8

5.1.实验目的 8

5.2.试验任务 8

5.3.原理分析 8

5.4.代码实现 9

5.5.实验步骤 10

5.6.实验现象 10

5.7.日积月累 11

5.8.课后作业 11

淘宝店铺:

http:

//51fpga.taobao.com/

9

1.实验简介

本教程以实验为主,力求以详细的步骤和讲解让大家以最快的方式了解

FPGA的开发的基本流程以及QuartusII软件的使用方法。

蜂鸣器篇的实验相对简单,为基础实验,希望通过对蜂鸣器篇的学习,大家能够掌握以下知识要点:

Ø熟悉和掌握FPGA开发的基本流程和QuartusII软件的基本使用方法。

Ø掌握蜂鸣器发声的基本原理。

2.背景知识

2.1.蜂鸣器的基础知识

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

2.2.蜂鸣器发声基本原理

Ø硬件电路发声的基本原理

硬件电路的发声原理,声音的频谱范围约在几十到几千赫兹,若能利用程序来控制FPGA芯片某个引脚输出一定频率的矩形波,接上无源蜂鸣器就能发出相应频率的声音。

乐曲中的每一音符对应着一个确定的频率,要想FPGA发出不同音符的音调,实际上只要控制它输出相应音符的频率即可。

乐曲都是由一连串的音符组成,因此按照乐曲的乐谱依次输出这些音符所对应的频,就可以在无源蜂鸣器上连续地发出各个音符的音调。

而要准确地演奏出一首乐曲,仅仅让无源蜂鸣器能够发声是不够的,还必须准确地控制乐曲的节奏,即乐曲中每个音符的发生频率及其持续时间是乐曲能够连续演奏的两个关键因素。

Ø音符频率的获得

多个不同频率的信号可通过对某个基准频率进行分频器获得。

由于各个音符的频率多为非整数,而分频系数又不能为小数,故必须将计算机得到的分频系数四舍五入取整。

若基准频率过低,则分频系数过小,四舍五入取整后的误差较大。

若基准频率过高,虽然可以减少频率的相对误差,但分频结构将变大。

实际上应该综合考虑这两个方面的因素,在尽量减少误差的前提下,选取合适的基准频率。

2.3.DIY开发板蜂鸣器电路图

如上图所示,蜂鸣器用PNP三极管进行驱动控制,并使用无源蜂鸣器,当在

BEEP输入一定频率的脉冲时,蜂鸣器蜂鸣,改变输入频率可以改变蜂鸣器的响声。

因此可以利用一个PWM来控制BEEP,通过改变PWM的频率来得到不同的声响,也可以用来播放音乐。

3.实验环境

Ø硬件实验环境为EEPWFPGA开发板DIY活动套件

Ø软件实验环境为QuartusII9.0开发软件

4.实验一(蜂鸣器发出救护车鸣笛声)

4.1.实验目的

Ø掌握蜂鸣器发声基本原理。

Ø掌握采用VerilogHDL语言编程实现蜂鸣器发出救护车鸣笛声的设计方法。

4.2.试验任务

实现DIY开发板上的蜂鸣器发出救护车鸣笛声

4.3.原理分析

DIY开发板板载50MHZ的晶振,通过VerilogHDL语言编程将此频率分频后驱动一个I/O口。

这个I/O口连接到DIY开发板上的无源蜂鸣器。

通过改变这个I/O口的输出频率,就可以使蜂鸣器发出各种声音和音乐。

本次实验实现蜂鸣器发出救护车鸣笛声,我们可以通过让蜂鸣器交替发出两个音调来实现。

首先我们使用一个25位的计数器“div_cnt”来产生一个低频的方波。

其最高有效位(div_cnt[24])以大约1.5Hz的频率翻转。

我们使用这一位

(div_cnt[24])来控制主计数器产生在两个频率之间切换的输出波形,这样一来就可以交替发出两个音调,发出类似救护车的鸣笛声。

4.4.代码实现

4.5.实验步骤

(1)建立新工程项目:

打开QuartusII软件,进入集成开发环境,点击File→Newproject

wizard建立一个工程项目。

(2)建立文本编辑文件:

点击File→New..在该项目下新建VerilogHDL源程序文件,输入试验程

序中的源程序代码保存后选择工具栏中的 按钮启动编译,若在编译中发现错误,则找出并更正错误,直到编译成功为止。

(3)选择器件型号及引脚的其他设置:

选择所用的FPGA器件 EP2C5Q208C8,以及进行一些配置。

选择配置

器件EPCS4,设置不需要使用的IO功能为Asinputs,tri-stated。

点击两次ok,回到主界面。

(4)配置FPGA引脚:

在QuartusII软件主页面下,选择Assignments→Pins或选择工具栏上

按钮,配置相关引脚。

(5)编译工程项目:

在QuartusII主页面下,选择Processing→StartCompilation或点击工具栏上的按钮启动编译,直到出现“FullCompilationReport”对话框,点击OK即可。

(6)下载设计程序.sof文件到目标FPGA,下载采用JTAG方式(由于配置芯片擦写次数有限,实验均采用JTAG下载方式)。

4.6.实验现象

DIY开发板上的蜂鸣器发出救护车鸣笛声

4.7.日积月累

有源蜂鸣器和无源蜂鸣器区别,这里的“源”不是指电源。

而是指震荡源。

也就是说,有源蜂鸣器内部带震荡源,所以只要一通电就会叫。

而无源内部不带震荡源,所以如果用直流信号无法令其鸣叫。

必须用2K~5K的方波去驱动它。

有源蜂鸣器往往比无源的贵,就是因为里面多个震荡电路。

无源蜂鸣器的优点是:

便宜,声音频率可控,可以做出“多来米发索拉西”的效果。

有源蜂鸣器的优点是:

程序控制方便。

4.8.课后作业

蜂鸣器发出警车鸣笛声或者报警声。

5.实验二(简易硬件电子琴)

5.1.实验目的

Ø掌握蜂鸣器发声的基本原理和实现方法。

Ø掌握利用蜂鸣器和按键设计简易硬件电子琴的方法。

5.2.试验任务

在DIY开发板上实现一个简易电子琴,按下KEY1~KEY7分别表示中音的DO、RE、MI、FA、SOL、LA、SI;按住KEY8再按KEY1~KEY7分别表示高音的DO、RE、MI、FA、SOL、LA、SI。

5.3.原理分析

DIY开发板板载50MHZ晶振,故在50MHZ时钟下,中音1(对应的频率值为523.3Hz)的分频系数为50000000/(2*523.3)=47774,这样只需对系统时钟进行47774次分频即可得到所要的中音1。

可利用同样方法求出其他音符对应的分频系数,这样利用程序可以很轻松得到相应的音调,结合按键可实现简易的电子琴。

音名

频率(Hz

音名

频率(Hz)

音名

频率(Hz)

低音1

261.6

中音1

523.3

高音1

1045.5

低音2

293.7

中音2

587.3

高音2

1174.7

低音3

329.6

中音3

659.3

高音3

1318.5

低音4

349.2

中音4

698.5

高音4

1396.9

低音5

392

中音5

784

高音5

1568

低音6

440

中音6

880

高音6

1760

低音7

493.9

中音7

987.8

高音7

1975.5

5.4.代码实现

5.5.实验步骤

(1)建立新工程项目:

打开QuartusII软件,进入集成开发环境,点击File→Newproject

wizard建立一个工程项目。

(2)建立文本编辑文件:

点击File→New..在该项目下新建VerilogHDL源程序文件,输入试验程

序中的源程序代码保存后选择工具栏中的按钮启动编译,若在编译中发现错误,则找出并更正错误,直到编译成功为止。

(3)选择器件型号及引脚的其他设置:

选择所用的FPGA器件 EP2C5Q208C8,以及进行一些配置。

选择配置

器件EPCS4,设置不需要使用的IO功能为Asinputs,tri-stated。

点击两次ok,回到主界面。

(4)配置FPGA引脚:

在QuartusII软件主页面下,选择Assignments→Pins或选择工具栏上按钮,配置相关引脚。

(5)编译工程项目:

在QuartusII主页面下,选择Processing→StartCompilation或点击工具栏上的按钮启动编译,直到出现“FullCompilationReport”对话框,点击OK即可。

(6)下载设计程序.sof文件到目标FPGA,下载采用JTAG方式(由于配置芯片擦写次数有限,实验均采用JTAG下载方式)。

5.6.实验现象

依次按下KEY1~KEY7,蜂鸣器依次发出中音的DO、RE、MI、FA、SOL、

LA、SI;按住KEY8再依次按下KEY1~KEY7,蜂鸣器依次发出高音的DO、RE、

MI、FA、SOL、LA、SI。

大家可以找个曲谱,试试硬件电子琴的效果如何。

淘宝店铺:

http:

//51fpga.taobao.com/

11

5.7.日积月累

VerilogHDL语言提供的case语句可直接处理多分支选择。

case括弧内的表达式为控制表达式,case分支项的表达式为分支表达式。

控制表达式通常表示为控制信号的某些位,分支表达式则用这些控制信号的具体状态值来表示,因此分支表达式又可称为常量表达式。

当控制表达式的值与分支表达式的值相等时,就执行分支表达式后面的语句。

如果所有分支表达式的值都没有与控制表达式的值相匹配的,就执行default后面的语句,为避免产生锁存器,case表达式应完整。

5.8.课后作业

实现乐曲自动演奏,演奏歌曲自选。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 党团建设

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1