本套教程主要面对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的频率来得到不同的声响,当然也可以用来播放音乐。

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

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

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

手把手教你学习FPGA系列视频教程_救护车鸣笛声的更多相关文章

  1. 手把手教你学习DSP_硬件设计

    <<手把手教你学习DSP>>顾卫刚,感觉写的不错,将感兴趣的部分摘录下俩. 1.A/D保护及矫正电路 TMS320X2812 AD输入为0-3V,用上述电路可以起到钳位作用.当 ...

  2. ML学习分享系列(2)_计算广告小窥[中]

    原作:面包包包包包包 改动:寒小阳 && 龙心尘 时间:2016年2月 出处:http://blog.csdn.net/Breada/article/details/50697030 ...

  3. ML学习分享系列(1)_计算广告小窥[上]

    原作:面包包包包包包 修改:寒小阳 && 龙心尘 时间:2016年1月 出处: http://blog.csdn.net/breada/article/details/50572914 ...

  4. 手把手教你学习R语言

    本文为带大家了解R语言以及分段式的步骤教程! 人们学习R语言时普遍存在缺乏系统学习方法的问题.学习者不知道从哪开始,如何进行,选择什么学习资源.虽然网络上有许多不错的免费学习资源,然而它们多过了头,反 ...

  5. HTML5+CSS3前端入门教程---从0开始通过一个商城实例手把手教你学习PC端和移动端页面开发第5章CSS盒子模型

    本教程案例在线演示 有路网PC端 有路网移动端 教程配套源码资源 教程配套源码资源 div div 可定义文档中的分区(division). div 标签可以把网页分割为独立的.不同的部分. 可以看成 ...

  6. 史上最全最详细的环境搭建教程,行百里者手把手教你在windows下搭建Anaconda+pycharm+库文件(TensorFlow,numpy)环境搭建

    我是在搭建TensorFlow开发环境的道路上走了很多弯路 掉了很多头发,为了让广大同学们不在受苦受累 下面我将手把手教你学习如特快速搭建python环境 快速导入numpy,PIL,pillow,等 ...

  7. iOS 非ARC基本内存管理系列 -手把手教你ARC——iOS/Mac开发ARC入门和使用(转)

    手把手教你ARC——iOS/Mac开发ARC入门和使用 Revolution of Objective-c 本文部分实例取自iOS 5 Toturail一书中关于ARC的教程和公开内容,仅用于技术交流 ...

  8. 完毕port(CompletionPort)具体解释 - 手把手教你玩转网络编程系列之三

       手把手叫你玩转网络编程系列之三    完毕port(Completion Port)具体解释                                                    ...

  9. 最准确的单点登录SSO图示和讲解(有代码范例)|手把手教做单点登录(SSO)系列之二

    写第一篇博客<手把手教做单点登录(SSO)系列之一:概述与示例>,就获得了园子里朋友们热情的评论和推荐,感谢各位. 我那篇文章同时发了CSDN和博客园.对比一下,更感受到博客园童鞋们的技术 ...

随机推荐

  1. Linux下使用VirtualBox安装Windows系统

    (文档比较长,只是写的详细,实际操作起来相对简单.) 由于一些特殊原因,我们并不能完全抛下Windows而使用Linux.VirtualBox 是一款虚拟机软件,支持多系统.在Linux下安装 Vir ...

  2. 从头到尾彻底理解KMP(2014年8月22日版)

    http://blog.csdn.net/v_july_v/article/details/7041827

  3. Qt之四方分割器QuadSplitter

    在Qt经常会用到分割器QSplitter,可以对多个控件进行水平或者垂直分割,但有一些特殊的需求无法满足,比如:四方分割...QuadSplitter是qt-apps里面的一个应用,挺不错的,拿来和大 ...

  4. UltraChart导出图片

    ? //一定要先绑定UltraChart,如果先绑定,然后有点击图片导出,没有用的 string fulPath="xxxx"; this.UltraChartTScore.Sav ...

  5. 〔写在OS边上〕定性note

    转载:http://tieba.baidu.com/p/1273477757 0 neta 有的时候我们在读书或者看文档.——啊,原来这东西的框架就是这样而已,很直白么.有的时候我们在读代码.——于是 ...

  6. 测试jsp

    一. get.jsp <%@ page contentType="text/html;charset=UTF-8"%> <%@ page import=" ...

  7. 转:PHP的(Thread Safe与Non Thread Safe)

    在安装xdebug到时候你会有有TS和NTS版本的选择,在以前还有VC6和VC9的版本.如果你没有根据你目前的服务器的状况选择对应的版本的话,那么xdebug是安装不成功的. 一.如何选择 php5. ...

  8. Oracle ORA-03137: TTC protocol internal error : [12333] 故障分析

    程序通过JDBC 连接数据库异常,报 ORA-03137[12333]的错误. 当前程序的JDBC 驱动版本:ojdbc16-11.2.0.1.0.jar 数据库版本: 11.2.0.3 一. Log ...

  9. 【转】Device Tree(三):代码分析

    原文网址:http://www.wowotech.net/linux_kenrel/dt-code-analysis.html 一.前言 Device Tree总共有三篇,分别是: 1.为何要引入De ...

  10. obiz

    ofbiz 安装 1. 由 binary 安装: 由 binary 安装非常简单, 以下是安装方法: 下载ofbiz-2.0-beta1-complete.tar.gz, 注意不是ofbiz-2.0- ...