FPGA设计一个乐曲自动演奏控制器
基于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的音频脉冲信号控制蜂鸣器,可以使其根据控制信号的频率发出不同的音调。
Verilog_HDL综合设计实例(自动乐曲演奏)

Place & Route
Timing Analysis
基于FPGA的乐曲自动演奏器设计
FPGA
产生音符所对应频率的方波信号
在输入参考频率fc=3MHz时, 计算简谱中所有音符的分频系 数。
实际上,只要各个 音符之间的相对频率关 系不变,演奏出的音乐 听起来就不会“走调”。
1. 一.设计目的与要求
音名显示电路用来显示乐曲演奏时对应的 音符。可以用3个数码管,分别显示高、 中、低音的音名,实现演奏的动态显示, 十分直观。在本例中,high[3:0]、 med[3:0]、low[3:0]等信号分别用于显示高 音、中音、低音音符。为了使演奏能循环 进行,需另外设置一个时长计数器,当乐 曲演奏完成时,保证能自动从头开始演奏。
4)12MHz分频成1mhz波形分频器,源代码和顶层模块如下: //12mhz分成1mhz的分频模块,提供给quma模块 module div_clk1mhz(clk_12mhz,clk_1mhz); input clk_12mhz; output clk_1mhz; reg clk_1mhz; reg [21:0] cnt; always @(posedge clk_12mhz) if(cnt<5) cnt=cnt+1; // (12mhz/1mhz=12,cnt<[12/2-1=5]) else begin cnt=0; clk_1mhz =! clk_1mhz; end Endmodule
用纯硬件完成乐曲演奏电路的设计与利用微处 理器(CPU)实现相比逻辑要复杂得多,如不借助 于功能强大的EDA工具和硬件描述语言,仅凭传 统的数字逻辑技术,即使最简单的演奏电路也难以 实现。
基于FPGA音乐硬件演奏电路设计.

设计报告课程名称任课教师设计题目乐曲硬件演奏电路班级姓名学号日期一. 题目分析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的乐曲演奏电路设计摘要设计了一种基于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的脉冲型音乐播放器的设计

基于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的乐曲自动演奏器的设计

方 向: 信号与信息处理 。
3 5期
吴定允 : 于 F G 基 P A的乐 曲 自动演奏器 的设计
玛 01 s m
1 1 ' Va 1 l 0
6 4
m5
9 3 ms 08
,
9 6
ms
12 8 s 0 m
而不 同节 拍 的 控 制 可 以通 过 对 某 一 时钟 信 号
进行 不 同的延 时而得到 。
通过上 面 关 于 一 个 音 符 音 调 和 节 拍 的确 定 方 法, 我们 就 可 以用 F G 来 演 奏音 乐 了。具 体 的实 PA 现方 法为 : 乐谱 中的 每个 音 符 的音 调 及 节 拍 变换 将 成相 应 的音 调参数 和节 拍 参 数 , 他 们 做 成 数据 表 将 格 , 放在存 储 器 中 , 过 程 序 取 出 一 个 音 符 的相 存 通 关 参数 , 播放该 音 符 , 音符 唱完 后 , 着取 出下 一 该 接
然后 由计 算机 自动 地 完成 逻 辑 编译 、 简 、 割 、 化 分 综
合、 优化 、 局 、 线 和 仿 真 , 至 对 于 特 定 目标 芯 布 布 直 片的 适 配 编 译 、 辑 映 射 和 编 程 下 载 等 工 作 J 逻 。
E A技术 的 出现 , 大地 提高 了 电路设 计 的效 率 和 D 极
魅 0
c k 1
1
1 3
囡 tn o tB 0 】 o , u 1 0
E s p 』
l 01 1 01 0 0 0i 1
]] ] 厂n厂n几几几n几nnn几几 n几几几几厂n几几厂几几nn广nnn几 n几几几厂门n几n几几nn ] ] ] ] 图 4 音 调 产 生 模 块 仿 真 图
基于FPGA的乐曲自动演奏器的设计

第 10卷 第 35期 2010年 12月 1671) 1815( 2010) 35- 8858- 04
科 学 技 术与 工 程
Sc ience T echno logy and Eng inee ring
V o l110 N o135 D ec12010 Z 2010 Sci1T ech1Engng1
GA 可以灵活、高效地实现乐曲的自动演奏。
关键词 电子设计自 动化 现场可编程门阵列 乐曲自动演奏器
中图法分类号 TP391. 42;
文献标志码 B
图 1 5两只蝴蝶 6部分乐谱
EDA 技术就是以计算机为工具, 设计者在 EDA 软件平台上, 用硬件描述语言 H DL 完成设计文件, 然后由计算机自动地完成逻辑编译、化简、分割、综 合、优化、布局、布线和仿真, 直至对于 特定目标芯 片的适 配编 译、逻 辑 映 射和 编 程 下载 等 工 作 [ 1 ] 。 EDA 技术的出现, 极大地提高了电路设计的效率和 可操作性, 减轻了设计者的劳动强度。
1 设计原理
本文在 A ltera 公司的 FPGA 和 CPLD 开发平台 QuartusII7. 0上, 采用硬件描述语言的系统层次的设计 思想, 利用数控分频器以及 LPM _ROM 定制的设计方 法, 完成了乐曲自动演奏电路的设计, 使之能自动完成 5两只蝴蝶 6的自动播放。图 1是乐谱的前几句。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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。