FPGA设计一个乐曲自动演奏控制器
- 格式:docx
- 大小:82.64 KB
- 文档页数:9
音乐播放器控制电路课程设计报告班级:学号:姓名:指导老师:一、设计目的将《断桥残雪》简谱按照要求进行编码并将其写入只读存储器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的音频脉冲信号控制蜂鸣器,可以使其根据控制信号的频率发出不同的音调。
设计报告课程名称任课教师设计题目乐曲硬件演奏电路班级姓名学号日期一. 题目分析1、利用可编程逻辑器件FPGA,设计乐曲硬件演奏电路,其结构框图如下图所示:2、功能要求利用数控分频器设计硬件乐曲电路,由键盘输入控制音响,同时可自动演奏乐曲。
演奏时可选择键盘输入乐曲或者已存入的乐曲,并配以一个扬声器,该设计产生的音乐选自“梁祝” 片段。
二、方案选择与利用微处理器来实现乐曲演奏相比,以纯硬件完成乐曲演奏电路的逻辑要复杂得多,如果不借助功能强大的EDA 工具和硬件描述语言,仅凭传统的数字逻辑技术,即使最简单的演奏电路也难以实现。
三、细化框图(1)音乐硬件演奏电路基本原理硬件电路的发声原理,声音的频谱范围约在几十到几千赫兹,若能利用程序来控制FPGA芯片某个引脚输出一定频率的矩形波,接上扬声器就能发出相应频率的声音。
乐曲中的每一音符对应着一个确定的频率,要想FPGA发出不同音符的音调,实际上只要控制它输出相应音符的频率即可。
乐曲都是由一连串的音符组成,因此按照乐曲的乐谱依次输出这些音符所对应的频,就可以在扬声器上连续地发出各个音符的音调。
而要准确地演奏出一首乐曲,仅仅让扬声器能够发生是不够的,还必须准确地控制乐曲的节奏,即乐曲中每个音符的发生频率及其持续时间是乐曲能够连续演奏的两个关键因素。
(2)音符频率的获得多个不同频率的信号可通过对某个基准频率进行分频器获得。
由于各个音符的频率多为非整数,而分频系数又不能为小数,故必须将计算机得到的分频系数四舍五入取整。
若基准频率过低,则分频系数过小,四舍五入取整后的误差较大。
若基准频率过高,虽然可以减少频率的相对误差,但分频结构将变大。
实际上应该综合考虑这两个方面的因素,在尽量减少误差的前提下,选取合适的基准频率。
本设计中选取750KHz的基准频率。
由于现有的高频时钟脉冲信号的频率为12MH,z 故需先对其进行16 分频,才能获得750KHz的基准频率。
对基准频率分频后的输出信号是一些脉宽极窄的尖脉冲信号(占空比=1/分频系数)。
课程设计课程设计名称:EDA课程设计专业班级电科0603学生姓名:杨宏乐学号: 20064360323指导教师:梁义涛课程设计时间: 2009-3-9~2009-3-201 设计任务及要求设计任务:乐曲自动播放器。
自行选择一首自己喜爱的经典乐曲,用FPGA设计实现一个该曲目的自动演奏电路。
要求:(1)根据设计题目要求编写相应程序代码(2)对编写的VHDL程序代码进行编译和仿真(3)利用实验箱完成硬件验证(4)总结设计内容,完成课程设计说明书与利用微处理器,以纯硬件完成乐曲演奏电路的逻辑要复杂得多。
本实验设计项目作为“两只老虎”乐曲演奏电路的实现,组成每个乐曲的每个音符的发音频率值及持续的时间是乐曲能连续演奏所需要的两个基本要素。
2设计原理及总体框图(1)音符的发音频率设定及实现音符的频率可由一个数控分频器SPEAKERA获得,由其CLK端输入一个有较高频率的信号,通过SPEAKERA分频后由SPKOUT输出。
由于直接从数控分频器中出来的输出信号是脉宽极窄的,为了有利于驱动扬声器,需另加一个D触发器以均衡其占空比,但这时的频率将是原来的1/2.SPEAKERA对clk输入信号的分频比由11位预置数Tone[10..0]决定。
SPKOUT 的输出频率就有了对应关系。
例如,在TONETABA模块中若取Tone[10..0]=1036,将对应法音符为“3”音的信号频率。
(2)音符的持续时间音符的持续时间需根据乐曲的速度及每个一怒的节拍数来确定,图中模块TONETABA的功能首先是为SPEAKERA提供决定所发音符的分频预置数,而此数在SPEAKER 输入口停留的时间即为次音符的节拍值。
模块TONETABA是乐曲简谱码对应的分频预置数查表电路,其中设置“两只老虎”乐曲全部音符所对应的分频预置数,共11个,每一音符的停留时间由音乐节拍和音调发生器模块NOTETABS的clk输入频率决定,这11个值的输出由对应于TONETABA中Index[3..0]的值ToneIndex[3..0]的输出值与持续时间由模块NOTETABS决定。
毕业设计基于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/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。
摘要本文以FPGA为核心控制器件,描述了一种基于FPGA的乐曲发生器的设计方法,该设计在MAX+PLUSⅡ的EDA软件平台上,通过定制LPM-ROM存储音乐数据,达到了以纯硬件的手段来实现乐曲的演奏效果。
只要修改LPM-ROM中所存储的音乐数据,就可以实现其它乐曲的演奏。
因此,该设计具有电路简单、程序易改和调试方便等特点。
整个系统工作稳定,程序精简,界面友好。
关键词: FPGA ;乐曲播放器器;EDAAbstractThis article introduces the design taking FPGA as the core control device, describes a FPGA based music generator design method, the design in the MAX+PLUS II EDA software platform, through custom LPM-ROM stored music data, reached a pure hardware means to achieve the music playing effect. As long as the modified stored in LPM-ROM music data, can realize the other music playing. Therefore, the design has the advantages of simple circuit, easy to program and convenient debugging etc.. The entire system is stable, procedure simplification, friendly interface. Keyword: FPGA; Music generator;EDA目录1 绪论.................................................... 错误!未定义书签。
基于FPGA的乐曲演奏电路设计自1985年Xilinx公司推出第一片现场可编程逻辑器件(FPGA)至今,FPGA 已经历了十几年的发展历史。
纵观现场可编程逻辑器件的发展历史,其之所以具有巨大的市场吸引力,根本在于;FPGA不仅可以解决电子系统小型化、低功耗、高可靠性等问题,而且其开发周期短、开发软件投入少、芯片价格不断降低,促使FPGA越来越多地取代了ASIC的市场,特别是对小批量、多品种的产品需求,使FPGA成为首选。
目前,FPGA的主要发展动向是:随着大规模现场可编程逻辑器件的发展,系统设计进入“片上可编程系统”(SOPC)的新纪元:芯片朝着高密度、低压、低功耗方向挺进;国际各大公司都在积极扩充其IP库,优化的资源更好的满足用户的需求,以扩大市场;特别是引人注目的所谓FPGA动态可重构技术的开拓,将推动数字系统设计观念的巨大转变。
本文使用MaxPlusⅡ设计基于FPGA的乐曲演奏电路。
1.硬件发声的原理声音的频谱范围约在几十到几千赫兹,只要利用程序来控制FPGA芯片某个引脚输出一定频率的矩形波,接上扬声器就能发出相应频率的声音。
乐曲中的每一音符对应着一个确定的频率,因此,要想FPGA发出不同音符的音调,实际上只要控制它输出相应音符的频率即可。
乐曲都是由一连串的音符组成,要想让硬件电路准确地演奏出一首乐曲,不仅要控制电路能按照乐曲的乐谱依次输出这些音符所对应的频率,还必须准确地控制乐曲的节奏,即每个音符的持续时间。
因此,乐曲中每个音符的发音频率及其持续的时间是乐曲能够连续演奏的两个关键因素。
2.音符频率的获得在FPGA设计中,多个不同频率的信号,一般是通过对某个基准频率进行分频获得的。
由于各个音符的频率多为非整数,而分频系数又不能为小数,故必须将计算得到的分频系数四舍五入取整。
若基准频率过低,则分频系数过小,四舍五入取整后的误差较大。
若基准频率过高,虽然可以减少频率的相对误差,但分频电路耗用的资源会增加。
FPGA设计一个乐曲自动演奏控
制器
的每个音符的频率值(音调)相对应于状态机的每一个状态。
只要让状态机的状态按顺序转换,就可以自动播放音乐了。
《友谊天长地久》乐谱见下表(注:也一拍;也两拍;N •四拍:N •八拍:N为乐谱。
由于芯片存储容量太小,源程序只加入乐谱的一部分音符)
《友谊天长地久》乐谱
0 5 | 1・]1 3 | 2. ] 2 3 | 1. ] 3 5 I 6・ © | 5. 』3
1 I 2・1
2
3 11 ・ 6 6 5 I 1 ・ 6 I 5. 3 3 1 I 2・ 1 2 6
— -
|5・ 3 3 5 I 6. 1 I 5 ・ 3 3 1 I 2 ・ 1 2 3 I 1 ・ 6 6 5
I 1. 0 11
简谱中的音名与频率的关系
二、硬件设计(电路图、原器件清单)
实物元件清单:
印刷电路板一个;
电阻(10KQ的10个,200Q的8个,1KQ的14个,50Q的1个);三极管3个;
发光二极管(红黄绿各三个);
蜂鸣器1个;
8段显示器2个;
按键4个;
4M晶振1个;
电容(104的6个,的1个);电源线1个;
芯片底座1个;
电路图:
功率放大显示部分:
核心控制部分:
口令L
三、软件设计(流程图、源程序)
流程图
一个完整的EDA设计流程既是自顶向下设计方法的具体实施途径,也是EDA工具软件本身的组成结构。
其大致的设计流程包括:设计输入、综合、适配、时序仿真和功能仿真、编程下载、硬件测试的步骤。
对于目前流行的EDA工具软件,图
1-1的设计流程具有一般性
图1T 应用FPGA/CPLD的EDA开发设计流程框图各部分源程序及说明
module song(clk,beep); 〃模块名称song
//I/O 口说明
input elk; output beep; 〃系统时钟4MHz 〃蜂鸣器输出端
〃内部寄存器
reg beep_r;
reg[3:0] state;
reg[15:0]count,count_end; reg[17:0]countl; 〃寄存器
〃乐谱状态机
〃参数••分频系数
parameter L_5=16'd5102, L_6=16,d4545, M_l=16'd3821, M_2=16'd3405, M_3=16P3033, M_5=16*d2551, M_6=16*d2273, H_l=16 'hl913;
parameter TIME=1000000; assign beep= beep_r;
〃低音5 〃低音6 〃中音1 〃中音2 〃中音3 〃中音5 〃中音6 〃高音6
〃控制每个音的长短(250ms ) 〃输出音乐
〃上升沿脉冲计数
always @(posedge elk) begin
cou nt<=count+11 b 1; if(count==count_end) begin countv=16'h0; beep_r<=! beep_r; end end
〃上升沿脉冲计数 always @ (posedge elk) begin
if(countl<TIME) countl= countl+Lbl;
else begin countl=18f d0; if(state==4*dl5) state= 4*d0; else
〃计数器加1
〃计数器取0
〃输出取反
state= state+Fbl;
case(state)
4'dO,
4*dl: count_end=L_5;
402, 4f d3,4,d4, 4f d5, 4,d6, 4,d7, 4*d8 : count_end=M_l;
4*d9, 4dl0: count_end=M_3;
4,dll, 4*dl2, 4'dl3, 4*dl4: count_end=M_2;
4f dl5:
count_end=M_l;
default:count_end=16'hffff; endcase
end
end
Endmodule
引脚锁定方法
四、设计总结
经过我们一组人的共同努力,我们的课程设计完成。
在此期间,我们收获颇丰。
首先这是既制作收音机后的又一次焊接印刷电路板的机会,利于提高我们的对器件的辨别、理解能力,还有自己的动手能力。
焊好电路板后,我觉得挺麻烦的就是程序的调试。
刚开始的调试是在实验室的试验箱上,一切运行正常,但转到我们需要
用的芯片上就不能出现
我们想要的结果。
后来又查资料,了解到芯片的时钟的频率不同,然后我们就开始转换频率再计算,同时把原来的程序根据要求的频率进行修改,但还是不能显示出流畅的音乐。
最后,当我们想放弃这个设计换其他程序设计的时候,我们想起可能是蜂鸣器本身的问题。
然后,我们找到以前制作收音机的喇叭,接上后效果还是挺明显的,听到音乐的那一刻确实挺有成功感。
其次,也是对EDA这门课的深入理解与应用。
如果说刚开始我还不知道EDA 是干嘛的,但现在我可以说写一下简单的程序,看懂一些复杂的程序,然后就是提高了对Quartusll操作能力。
当然,通过这次课程设计,还是发现自己的很多不足。
由于当初EDA课程学得不是太好,导致刚开始操作时经常会遇到或大或小的问题,而且这次做的设计我觉得是老师要求里的比较简单的一个,还花费了这么长时间,也说明自己的能力不是太好。
事实证明:要想真正掌握这门课还需要再花费一些精力0。