基于FPGA音乐硬件演奏电路设计
基于-FPGA的音乐播放器的设计

摘要根据国家发改委与专业教学委员会对教育机构的要求,为培养适应我国21世纪国民经济发展的电子设计人才;同时基于国家教委面向21世纪电工电子课程体系改革和电工电子工科教学基地建设两项教学改革研究成果。
要求高等本科在校学生能够自己动手完成简单的数字器件设计。
本次设计在自己手动焊接简易的PFGA板子上实现,并且在QusrtusII 9.0上利用VHDL设计数控分频器电路,利用数控分频原理设计音乐硬件演奏电路,并制定LPM-ROM 存储音乐数据,以“梁祝”乐曲为例,将音乐数据存储到LPM-ROM,就达到了已纯硬件的手段来实现乐曲演奏的效果,只要修改LPM-ROM所存储的音乐数据,将其转换为其他的音乐数据,再重新制定LPM-ROM,在连接到程序中就可以实现其他与取得演奏。
本次设计采用的FPGA主芯片位ALTERA公司的FLEX系列的EPF10K10LC84-4。
由于板子是自己手动在万用板上焊接的所以只焊接了必要的外设如蜂鸣器和LED。
关键词FPGA;音乐播放器;QuartusII;VHDL;目录摘要 (I)第一章前言 (2)1.1关于EDA技术 (2)1.2 关于VHDL (2)1.3 关于EDA工具 (3)1.4 有关本次课程设计 (3)第二章设计实现 (4)2.1音乐演奏电路原理 (4)2.1.1音符频率的获得 (4)2.1.2乐曲节奏的控制 ............................................................... 错误!未定义书签。
2.1.3乐谱发生器 ....................................................................... 错误!未定义书签。
2.1.4乐曲演奏电路原理框图 ................................................... 错误!未定义书签。
基于FPGA音乐硬件演奏电路设计.

设计报告课程名称任课教师设计题目乐曲硬件演奏电路班级姓名学号日期一. 题目分析1、利用可编程逻辑器件FPGA,设计乐曲硬件演奏电路,其结构框图如下图所示:2、功能要求利用数控分频器设计硬件乐曲电路,由键盘输入控制音响,同时可自动演奏乐曲。
演奏时可选择键盘输入乐曲或者已存入的乐曲,并配以一个扬声器,该设计产生的音乐选自“梁祝” 片段。
二、方案选择与利用微处理器来实现乐曲演奏相比,以纯硬件完成乐曲演奏电路的逻辑要复杂得多,如果不借助功能强大的EDA 工具和硬件描述语言,仅凭传统的数字逻辑技术,即使最简单的演奏电路也难以实现。
三、细化框图(1)音乐硬件演奏电路基本原理硬件电路的发声原理,声音的频谱范围约在几十到几千赫兹,若能利用程序来控制FPGA芯片某个引脚输出一定频率的矩形波,接上扬声器就能发出相应频率的声音。
乐曲中的每一音符对应着一个确定的频率,要想FPGA发出不同音符的音调,实际上只要控制它输出相应音符的频率即可。
乐曲都是由一连串的音符组成,因此按照乐曲的乐谱依次输出这些音符所对应的频,就可以在扬声器上连续地发出各个音符的音调。
而要准确地演奏出一首乐曲,仅仅让扬声器能够发生是不够的,还必须准确地控制乐曲的节奏,即乐曲中每个音符的发生频率及其持续时间是乐曲能够连续演奏的两个关键因素。
(2)音符频率的获得多个不同频率的信号可通过对某个基准频率进行分频器获得。
由于各个音符的频率多为非整数,而分频系数又不能为小数,故必须将计算机得到的分频系数四舍五入取整。
若基准频率过低,则分频系数过小,四舍五入取整后的误差较大。
若基准频率过高,虽然可以减少频率的相对误差,但分频结构将变大。
实际上应该综合考虑这两个方面的因素,在尽量减少误差的前提下,选取合适的基准频率。
本设计中选取750KHz的基准频率。
由于现有的高频时钟脉冲信号的频率为12MH,z 故需先对其进行16 分频,才能获得750KHz的基准频率。
对基准频率分频后的输出信号是一些脉宽极窄的尖脉冲信号(占空比=1/分频系数)。
基于FPGA的音乐硬件演奏电路设计与实现(一)

基于FPGA的音乐硬件演奏电路设计与实现(一)
1 系统的设计要求
应用VHDL 硬件描述语言,设计一个乐曲硬件演奏电路,它能将一首预先设置存储好的乐曲自动播放出来,除此之外,也能够通过按键的方式输入音符,使其具备简易电子琴的功能。
通过此项研究,能够深切的体会利用EDA 工具开发的优越性,在此基础上,对乐曲硬件演奏电路功能进行丰富,具有一定的社会实用性。
根据硬件演奏电路的功能进行全局分析,采用自上至下的设计方法,从系统总体要求出发,逐步将设计内容细化,最后完成系统结构的整体设计。
将功能分为以下几个部分,1)实现预先设置乐曲的播放功能;2)实现预置乐曲的暂停和继续播放实时控制功能;3)实现预置多首乐曲间的切换功能。
预置乐曲,本文选取了《梁祝》的一段作预置,作预置时,需要将乐曲音符转换成相应的代码,通过计算逐一将音符转换成代码,通过EDA 开发平台quartusii6.0 进行乐曲定制。
为了提供乐曲发音所需要的发音频率,编写数控分频器程序,对单一输入高频,进行预置数分频,生成每个音符发音的相应频率。
为了给分频提供预置数,需要计算分频预置数。
对每部分结构单元逐一进行编译,生成相应的元器件符号,并对独立结构单元功能进行仿真。
2 系统的详细设计方案
2.1 顶层实体描述
按照EDA 开发流程,采用VHDL 硬件描述语言开发,将乐曲硬件演奏电路设计进行模块化分解,层次化设计,分成几个单独的结构体,每个结构体实现。
基于fpga音乐硬件演奏电路设计

目录第1章.系统设计总述 (1)1.1设计要求 (1)1.2系统组成 (1)1.2.1音乐硬件演奏电路基本原理 (1)1.2.2音符频率的获得 (1)1.2.3各模块工作原理 (1)第2章.总体程序设计 (3)2.1总体原理图 (3)2.2顶层电路VHDL程序设计 (3)2.3总体仿真 (4)第3章.单元模块程序设计 (4)3.1音乐ROM文件的定制 (5)3.2音乐节拍和音调发生器模块 (7)3.2.1音乐节拍和音调发生器模块 (7)3.2.2音乐节拍和音调发生器模块VHDL程序设计 (7)3.2.3波形仿真 (8)3.3音乐谱对应分频预置数查表电路模块 (8)3.3.1音乐谱分频预置数模块 (8)3.3.2音乐谱对应分频预置数查表电路VHDL程序设计 (8)3.3.3波形仿真 (10)3.4音乐符数控11分频电路模块 (10)3.4.1音乐符数控11分频电路模块 (10)3.4.2音乐符数控11分频模块电路VHDL程序设计 (11)3.4.3图形仿真 (12)第4章.下载验证及其引脚绑定 (13)4.1模式选择 (13)4.2具体引脚绑定图 (13)第5章心得体会 (14)参考文献 (15)第1章.系统设计总述1.1设计要求(1)顺序播放乐曲功能(2)具有通过按键切换及其复位乐曲的功能1.2系统组成1.2.1音乐硬件演奏电路基本原理硬件电路的发声原理,声音的频谱范围约在几十到几千赫兹,若能利用程序来控制FPGA 芯片某个引脚输出一定频率的矩形波,接上扬声器就能发出相应频率的声音。
乐曲中的每一音符对应着一个确定的频率,要想FPGA发出不同音符的音调,实际上只要控制它输出相应音符的频率即可。
模块U1类似于弹琴人的手指;U2类似于琴键;U3类似于琴弦或音调发生器。
1.2.2音符频率的获得多个不同频率的信号可通过对某个基准频率进行分频器获得。
对照各个音频的频率计算该音频的分频系数。
音频的频率可以四舍五入计算。
基于FPGA的乐曲演奏电路设计_毕业设计论文

毕业设计基于FPGA的乐曲演奏电路设计摘要设计了一种基于FPGA的电子琴,该电子琴由用VHDL硬件描述语言设计的核心部件和适当的外围电路构成,可从琴键上进行演奏也可自动进行乐曲演奏。
基于FPGA(现场可编程门阵列)芯片,利用VHDL语言,介绍了一种通用乐曲演奏电路的设计,可实现多个八度音阶的乐曲演奏,与简谱的对应关系简单,编程方便,占用资源少,通用性好,可作为IP core模块引用,构成复杂的SOPC系统.关键词:电子琴;现场可编程门阵列(FPGA);智力产权核(IP core);超高速集成电路硬件描述语言(VHDL);乐曲AbstractAn electronic piano is designed based on FPGA,which consists of core paris that designed by using VHDL hardware description languages,as well as some periphery circuits.The musical perform ance can be donenot only by keys but also with automatic type in the electronic piano.Based on FPGA,by VHDL language,this paper introduces a universal music circuit design,it can play high,middle and low multiple tonality,simple corresponding relation with simple musical notation,which programs easily using little resource.It can be used universally for IP core in making complicated SOPC system.Key words:electronic piano;Field Programmable Gate Array(FPGA);Intelligence Property core(IP core) ;Very-High-Speed Integrated Circuit Hardware Description Language(VHDL);music目录1.简易电子琴与音乐发生器设计的介绍 (4)1.1简易电子琴设计介绍 (4)1.2音乐发生器设计介绍 (4)2.F P G A功能与使用简介 (6)2.1F P G A简介 (6)2.1.1F P G A的产生 (6)2.1.2F P G A的基本结构 (7)2.1. 3 MAX+PLUSII (7)2.2硬件描述语言V H D L (10)2.2.1V H D L语言的优点 (10)2.2.2利用V H D L语言设计数字系统的特点 (11)2.2.3V H D L语言的基本结构 (13)2.2.4V H D L的设计流3.简易电子琴设计及程序 (16)3.1简易电子琴设计总体框图 (16)3.2模块设计 (16)3.2.1模块Q I N设计 (16)3.2.2模块F A N A设计 (17)4.音乐发生器设计及程序 (20)4.1使用的乐谱 (20)4.2音乐发生器设计及程序 (20)4.2.1音乐发生器总框图 (20)4.2.2可变分频器设计 (20)4.2.3到计时模块设计 (31)5.仿真 (3)45.1概述 (34)5.2仿真验证与实5.2.1电子琴电路的仿真 (35)5.2.2音乐发生器仿真 (35)6.结论 (3)77.致谢 (3)88.参考文献 (39)1.简易电子琴与音乐发生器设计的介绍1.1简易电子琴设计介绍电子琴因其操作简单,且能模拟各种传统乐器的音色,而深受消费者喜爱。
基于FPGA的音乐播放控制电路设计

音乐播放器控制电路课程设计报告班级:学号:姓名:指导老师:一、设计目的将《断桥残雪》简谱按照要求进行编码并将其写入只读存储器ROM之中,然后通过设计的电路读出ROM的内容,进行解码后驱动蜂鸣器播放。
二、开发环境采用Altera Quartus II 9.0软件设计环境。
它提供了全面的逻辑设计能力,包括电路图、文本和波形的设计输入以及编译、逻辑综合、仿真和定时分析以及器件编程等诸多功能。
特别是在原理图输入等方面,Altera Quartus II 9.0被公认为是最易使用、人机界面最友好开发软件。
并采用FPGALP-2900开发装置硬件实现,给人们带来极大的方便。
三、设计过程概述1、数字简谱简介数字简谱用不同的点和线段配合8个阿拉伯数字0~7构成音符,记录表示千变万化的音乐曲子及其基本音乐元素。
乐音是由三个要素决定的:频率决定了乐音的音高,频谱决定过了乐音的音色,音形标志着演奏方式。
乐曲的基本元素是:音的高低(音高)、音的长短(时值)、音的力度和音质(音色)。
音的高低和长短不同决定了乐曲的不同,因此构成了音乐的最重要的基础元素。
音乐用1、2、3、4、5、6、7分别表示同一调式7个不同的音高:多、来、米、法、索、拉、西。
这七个数字上、下标注的点表示音调升高8度音程或降低8度音程。
数字0为休止符,表示停止发音。
数字下或数字上的线段表示因的持续时间的长短。
没有线段的数字为4分音符,器时值为音长的基本度量单元,成为一拍。
数字下面标注的线段表示时间减短,没增加一条线段,表示时值减少一半,音符相应的成为8分音、16分音……数字后面的线段称为延长线,表示前一个音符的市场的增加,每条延长线的时值增量为1拍。
音长是一个相对的时间概念,一拍的时间长度没有限制,可以是1s,也可以是2s或是0.5s,。
若将4分音符的时长定为1s,其他音符的时值长度以其为基本参照度量,半拍为0.5s,2拍为2s,以此类推。
2、音高与频率关系20Hz至20KHz的音频脉冲信号控制蜂鸣器,可以使其根据控制信号的频率发出不同的音调。
基于FPGA的音乐硬件演奏电路

基于FPGA的音乐硬件演奏电路设计李宁(渭南师范学院物理与电气工程学院电气工程及其自动化2010级3班)摘要:本设计是一种基于FPGA的音乐硬件演奏电路,该乐曲演奏电路是通过数控分频器电路控制FPGA芯片的某个引脚输出音符所对应频率的方波,接上扬声器就能发出各音符的音调,并且准确地控制乐曲中每个音符的持续时间,使乐曲能够完整并且连续的播放出来。
在此基础上加上数码管,将音符通过数码管显示出来。
该设计可用于生活的各个方面,比如手机铃声、mp3等,提高人们的生活质量。
关键词:FPGA;音乐硬件演奏电路;VerilogHDL语言设计;QUARTUS II 9.0;EDA 技术音乐硬件演奏电路已广泛应用于我们生活的各个角落,比如mp3,手机铃声等,为我们的生活带来了乐趣,同时也说明了现在的电子产品越来越发达。
因此根据国家专业教学委员会对教育机构的要求,为了培养适应我国21世纪国民经济发展需要的电子设计人才,同时基于国家教委面向21世纪电工电子课程体系改革和电工电子工科教学基地建设两项教学改革研究成果,要求高等学校学生能够自己动手完成简单数字器件的设计。
这不但反应了我国当前在电子电路的实验教学体系、内容和方法上的改革思路和教学水平的提高,更重要的是在加强以传统电子设计方法为基础的工程设计训练的同时,使学生能够尽快掌握现代电子设计自动化技术的新方法、新工具和新手段,系统的、科学的培养了学生的实际动手能力、工程设计能力、创新能力,提高了学生的学习与设计兴趣。
本次设计在EDA开发平台QUARTUS II9.0上利用verilog HDL语言设计数控分频器电路,采用FPGA驱动小扬声器,利用数控分频的原理设计音乐硬件演奏电路,以“送别”为例,控制输出到扬声器的激励信号的频率的高低和持续的时间,就可以使扬声器发声,同时用数码管实现音符的显示。
1 EDA技术介绍及其发展1.1 EDA技术的介绍EDA是电子设计自动化(Electronic Design Automation)缩写,是90年代初从CAD(计算机辅助设计)、CAM(计算机辅助制造)、CAT(计算机辅助测试)和CAE(计算机辅助工程)的概念发展而来的。
基于FPGA的脉冲型音乐播放器的设计

基于FPGA/CPLD的脉冲信号型乐曲播放器的设计摘要用纯硬件来完成乐曲演奏电路的逻辑非常复杂,仅凭传统的数字逻辑技术,即使最简单的电路也难以实现。
但是借助于功能强大的EDA工具和硬件描述语言,就可以轻松的实现设计。
本设计利用可编程逻辑器件设计一个控制器让不同频率的脉冲信号有序的输出并驱动扬声器发声,最终完成一首乐曲的演奏。
设计以《世上只有妈妈好》为例,分析了硬件电路发声的基本原理,探讨了可以实现设计的方案,利用VHDL语言在QuartusⅡ上编程设计了节拍发生器、分频器、顺序控制、音高控制等模块的功能。
最后,运用原理图编辑器调出已经设计好的各个模块,根据设计的要求进行连线、加输入输出脚,得到了总体设计的仿真实体。
并对总体设计进行了功能仿真和下载。
本设计完成了乐曲《世上只有妈妈好》的32个音符64个节拍的播放,每个节拍0.5秒,整曲播放时长为32秒。
基于FPGA,利用Quartus Ⅱ和VHDL语言完成的脉冲型乐曲播放器,其特点是设计简单、灵活、设计周期短;缺陷是实现播放的乐曲种类单一,播放时间长度较短,若想要实现较长的乐曲播放,则需要很长的源程序。
关键词:FPGA,EDA,VHDL,QuartusⅡ,乐曲播放器The design of the pulse-type music player based on FPGA / CPLDAbstractIt is very complex to complete the music playing logic circuit using pure hardware. Only depend on the traditional digital logic technology, it is difficult to achieve even the simple circuit. However, it is very ease to achieve by using the EDA tools and hardware description language. The design finished a controller that output a series of orderly pulse signal with different frequencies and driven speaker with, by using the programmable logic device ,and finally complete the concert of a music.The music <shi shang zhi you ma ma hao> was used as an example. The basic principal of the hardware circuit sing was analyzed. How could achieve the player’s faction was also discussed. Following functional module was designed in Quartus II by using VHDL language: pulse generator, frequencies divider, sequence control, pitch control and so on. Finally, simulate entity was build in the Block Editor of the Quartus II , using all of the module which has been designed and according to the design’s requirements to connect, and plus input and output pin. Following these, the player’s entity was simulated and downloaded. The <shi shang zhi you ma ma hao>’s note 32 of the 64 players beat was completed in this design. One beat was sat as 0.5 seconds long, and the whole song was played within 32 seconds。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录摘要 (I)1 系统设计总述 (1)1.1 设计要求 (1)1.2 系统组成 (1)2 总体程序设计 (5)2.1 顶层模块设计流程图 (5)2.2 顶层电路VHDL程序设计 (5)3 单元模块程序设计 (7)3.1 音乐节拍和音调发生器模块 (7)3.2 音乐谱对应分频预置数查表电路模块 (8)3.3 音乐谱对应分频预置数查表电路模块 (10)3.4 乐曲演奏音符数据文件(《妈妈的吻》) (12)3.5 定制音符数据的ROM文件 (13)4 VHDL音乐硬件演奏电路系统仿真与调试 (16)4.1 NoteTabs音乐节拍和音调发生器模块的仿真 (16)4.2 ToneTaba分频预置数查表模块的仿真 (16)4.3 Speakera音乐符数控分频模块的仿真 (17)4.4 扩大此音乐硬件演奏电路的通用性 (19)5 心得体会 (21)参考文献 (22)摘要根据国家教委与专业教学委员会对教育机构的要求,为培养适应我国21世纪国民经济发展需要的电子设置人才;同时基于国家教委面向21世纪电工电子课程体系改革和电工电子工科教学基地建设两项教学改革研究成果。
要求高等专科学校学生能够自己动手完成简单数字器件的设计。
这不但反应了我国当前在电子电路的实验教学体系、内容和方法上的改革思路和教学水平的提高,更重要的是在加强以传统电子设计方法为基础的工程设计训练的同时,使学生能够尽快掌握现代电子设计自动化技术的新方法、新工具和新手段系统的、科学的培养了学生的实际动手能力、理论联系实际的能力、工程设计能力,创新能力,提高了学生对基础实验的兴趣。
本次设计在EDA开发平台QUARTUS II 6.0上利用VHDL语言设计数控分频器电路,利用数控分频的原理设计音乐硬件演奏电路,并定制LPM-ROM存储音乐数据,以“梁祝”和“月亮代表我的心”两首乐曲为例,将音乐数据存储到LPM-ROM,就达到了以纯硬件的手段来实现乐曲的演奏效果。
只要修改LPM-ROM所存储的音乐数据,将其换成其他乐曲的音乐数据,再重新定制LPM-ROM,连接到程序中就可以实现其它乐曲的演奏。
本设计采用的是武汉理工大学的开放设计实验箱,FPGA目标芯片型号为Altera公司的Cyclone系列中的EP1C3T144C8N。
芯片配置成功后即可进行硬件测试:选择实验电路结构图,发音输出接SPEAKER,当乐曲一遍演奏完成后,乐曲发生器能自动从头开始循环演奏。
关键词: FPGA/CPLD,音乐硬件演奏电路,VHDL语言设计,QUARTUS II 6.01 系统设计总述1.1 设计要求这是一种运用纯硬件实现乐曲播放的电路,比运用微处理器实现乐曲播放更加复杂。
它运用了强大功能的EDA工具——开放设计试验箱和硬件描述语言VHDL。
本课题以歌曲《妈妈的吻》来实现乐曲播放电路的功能。
(1)顺序播放乐曲功能:当电路开始工作时,如果存储器中有多首乐曲,那么演奏电路将从头到尾顺序播放这些乐曲。
(2)循环播放乐曲功能:当演奏完后一首乐曲时,将自动返回到第一首歌曲开始播放,反复不止,直到关闭电源电路停止工作为止。
(3)乐曲简谱显示功能:当演奏电路播放乐曲时,能够将当前播放的音符通过一列发光二极管以二进制的形式予以显示。
(4)乐曲高音显示功能:如果电路正在播放高音音符,那么将有一个发光二极管点亮来显示。
(5)音量大小可调功能:运用EDA实验箱上的数字功率放大器LM386N,对数控分频器输出的音频信号予以处理,输出大小连续可调的音频信号到扬声器。
1.2 系统组成(1)音乐硬件演奏电路基本原理硬件电路的发声原理,声音的频谱范围约在几十到几千赫兹,若能利用程序来控制FPGA芯片某个引脚输出一定频率的矩形波,接上扬声器就能发出相应频率的声音。
乐曲中的每一音符对应着一个确定的频率,要想FPGA发出不同音符的音调,实际上只要控制它输出相应音符的频率即可。
乐曲都是由一连串的音符组成,因此按照乐曲的乐谱依次输出这些音符所对应的频,就可以在扬声器上连续地发出各个音符的音调。
而要准确地演奏出一首乐曲,仅仅让扬声器能够发生是不够的,还必须准确地控制乐曲的节奏,即乐曲中每个音符的发生频率及其持续时间是乐曲能够连续演奏的两个关键因素。
(2)音符频率的获得多个不同频率的信号可通过对某个基准频率进行分频器获得。
由于各个音符的频率多为非整数,而分频系数又不能为小数,故必须将计算机得到的分频系数四舍五入取整。
若基准频率过低,则分频系数过小,四舍五入取整后的误差较大。
若基准频率过高,虽然可以减少频率的相对误差,但分频结构将变大。
实际上应该综合考虑这两个方面的因素,在尽量减少误差的前提下,选取合适的基准频率。
本设计中选取750KHz的基准频率。
由于现有的高频时钟脉冲信号的频率为12MHz,故需先对其进行16分频,才能获得750KHz的基准频率。
对基准频率分频后的输出信号是一些脉宽极窄的尖脉冲信号(占空比=1/分频系数)。
为提高输出信号的驱动能力,以使扬声器有足够的功率发音,需要再通过一个分频器将原来的分频器的输出脉冲均衡为对称方波(占空比=1/2),但这时的频率将是原来的1/2。
下表中各音符的分频系数就是从750KHz的基准频率二分频得到的375KHz频率基础上计算得到的。
由于最大分频系数是1274,故分频器采用11位二进制计数器能满足要求,乐曲中的休止符,只要将分频系数设为0,即初始值=211-1=2047,此时扬声器不会发声。
表1 各个音符的频率及其对应的分频系数(基准频率375KHz)音符名频率(Hz) 分频系数计数初值音符名频率(Hz) 分频系数计数初值休止符375000 0 2047 中音4 796.178 468 1579低音1 294.349 1274 773 中音5 882.353 425 1622低音2 330.396 1135 912 中音6 989.446 379 1668低音3 370.92 1011 1036 中音7 1136.363 330 1717低音4 386.598 970 1077 高音1 1175.549 319 1728低音5 394.737 950 1197 高音2 1353.790 277 1770低音6 495.376 757 1290 高音3 1512.097 248 1799低音7 555.56 675 1372 高音4 1609.442 233 1814中音1 588.697 637 1410 高音5 1802.884 208 1839中音2 638.84 587 1480 高音6 2027.027 185 1862中音3 742.574 505 1542 高音7 2272.727 165 1882(3)乐曲节奏的控制本设计中的梁祝和月亮代表我的心的乐曲,最小的节拍为1/4拍,若将1拍的时间定为1秒,则只需要提供一个4Hz的时钟频率即可产生1/4拍的时长(0.25秒),对于其它占用时间较长的节拍(必为1/4拍的整数倍)则只需要将该音符连续输出相应的次数即可。
计数时钟信号作为输出音符快慢的控制信号,时钟快时输出节拍速度就快,演奏的速度也就快,时钟慢时输出节拍的速度就慢,演奏的速度自然降低。
(4)乐谱发生器本文将乐谱中的音符数据存储在LPM-ROM中,如“梁祝”乐曲中的第一个音符为“3”,此音在逻辑中停留了4个时钟节拍,即1秒的时间,相应地,音符“3”就要在LPM-ROM 中连续的四个地址上都存储。
当一个4Hz的时钟来时,相应地就从LPM-ROM中输出一个音符数据。
(5)音乐硬件演奏电路总体设计流程当一个4Hz的时钟脉冲来到时,乐谱发生器模块输出一个音符数据给分频系数模块,分频系数模块输出此音符相应的分频系数,将分频系数送给数控分频器模块,当12MHz 的时钟脉冲来到时,数控分频器就根据分频系数输出相应的频率(即此音符所对应的发生频率)给扬声器,扬声器就可发出对应音符的声音来.连续的4Hz的时钟脉冲就将乐谱发生器里所存储的音符数据一个接一个的送给了分频系数模块,再经过数控分频模块,最后扬声器一个接一个的发出音符数据所对应的声音来。
曲子也就流畅的播放出来了,当乐曲一遍演奏完成后,乐曲发生器能自动从头开始循环演奏,按下SEL键时播放第二首歌,按下RST 键时从头开始播放歌曲。
音乐硬件演奏电路主要是用VHDL语言来设计,并利用Quartus6.0软件工具来编译、测试和仿真,音乐硬件演奏电路设计总体设计方框图如下图所示。
2 总体程序设计2.1 顶层模块设计流程图2.2 顶层电路VHDL程序设计LIBRARY IEEE; -- 硬件演奏电路顶层设计USE IEEE.STD_LOGIC_1164.ALL;ENTITY Songer ISPORT ( CLK12MHZ : IN STD_LOGIC; --音调频率信号CLK8HZ : IN STD_LOGIC; --节拍频率用于控制音长(节拍)的时钟频率;SEL : IN STD_LOGIC;--音乐选择键RST : IN STD_LOGIC;--复位键CODE1 : OUT STD_LOGIC_VECTOR (3 DOWNTO 0);-- 简谱码输出显示HIGH1 : OUT STD_LOGIC; --高8度指示SPKOUT : OUT STD_LOGIC );--声音输出END;ARCHITECTURE one OF Songer ISCOMPONENT NoteTabs--元件U1例换化PORT ( clk : IN STD_LOGIC;SEL : IN STD_LOGIC;RST : IN STD_LOGIC;ToneIndex : OUT STD_LOGIC_VECTOR (3 DOWNTO 0) );END COMPONENT;COMPONENT ToneTaba--元件U2例换化PORT ( Index : IN STD_LOGIC_VECTOR (3 DOWNTO 0) ;CODE : OUT STD_LOGIC_VECTOR (3 DOWNTO 0) ;HIGH : OUT STD_LOGIC;Tone : OUT STD_LOGIC_VECTOR (10 DOWNTO 0) );END COMPONENT;COMPONENT Speakera--元件U3例换化PORT ( clk : IN STD_LOGIC;Tone : IN STD_LOGIC_VECTOR (10 DOWNTO 0);SpkS : OUT STD_LOGIC );END COMPONENT;SIGNAL Tone : STD_LOGIC_VECTOR (10 DOWNTO 0);SIGNAL ToneIndex : STD_LOGIC_VECTOR (3 DOWNTO 0);BEGINu1 : NoteTabs PORT MAP (clk=>CLK8HZ,RST=>RST,SEL=>SEL, ToneIndex=>ToneIndex);--参数传递映射语句u2 : ToneTaba PORT MAP(Index=>ToneIndex,Tone=>Tone,CODE=>CODE1,HIGH=>HIGH1);u3 : Speakera PORT MAP(clk=>CLK12MHZ,Tone=>Tone, SpkS=>SPKOUT);END;3 单元模块程序设计根据顶层原理图,共分为music 模块、地址发生器模块、分频预置数模块、十六进制模块、数控分频模块这五个模块。