电子琴设计
高一 记叙文 8208字 748人浏览 铁院材3

1 / 17

设计题目:电子琴设计 学院:电子信息工程学院 学生姓名:陶龙,周伟,陈佳丽,杨宇辰,王博 班级:214341 指导教师:金长江

2016年12月19日星期一

2 / 17

课程设计任务书

3 / 17

4 / 17

5 / 17

1. 设计背景

1.1 目的和意义

电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。它在现代音乐扮演着重要的角色,FPGA 具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。本文的主要内容是用FPGA 为核心控制元件,设计一个电子琴。以FPGA 作为主控核心,与键盘、扬声器等模块组成核心主控制模块,在主控模块上设有16个按键和扬声器。

本文主要对使用FPGA 设计简易电子琴进行了分析,并介绍了基于FPGA 电子琴统硬件组成。利用FPGA 产生不同频率来获得我们要求的音阶,最终可随意弹奏想要表达的音乐。并且本文分别从原理图,主要芯片,各模块原理及各模块的程序的调试来详细阐述。本系统是简易电子琴的设计,扬声器播放器对应的音符。通过设计本系统可了解FPGA 的基本功能。对FPGA 的了解有一个小的飞跃。

2. 设计方案

2.1 控制模块选择方案

方案一:用可控硅制作电子琴。将220V 交流电经变压器降压,再经过整流、滤波,获得+13.5V直流电压。将单向可控硅SCR 和电阻、电容组成驰张振荡器电路。但该设计方案制作成本高且复杂。

方案二: 采用AT89C51FPGA 进行控制,由于AT89C51不具备ISP 功能,

因此Atmel 公司已经停产在市面上已经不常见,况且其ROM 只有4K 在系统将来升级方面没有潜力。

方案三:采用FPGA 进行控制,由于其性价比高,完全满足了本作品智能化的要求,它的内部程序存储空间达到8K ,使软件设计有足够的内部使用空间并且方便日后系统升级,使用方便,抗干扰性能提高。

选择方案:鉴于上述对比与分析,本设计采用方案三

3. 系统硬件设计及说明

3.1系统组成及总体框图

硬件设计的任务是根据总体设计要求,在选择的机型的基础上,具体确定系统中所

6 / 17

要使用的元器件,设计出系统的原理框图、电路原理图。

该设计要实现一种由FPGA 控制的电子琴,FPGA 工作于12MHZ 时钟频率,使用其定时/计数器T0,工作模式为1,改变计数值TH0和TL0可以产生不同频率的脉冲信号。该设计具有11个音节的键盘,用户可以根据乐谱在键盘上进行演奏,音乐发生器会根据用户的弹奏,通过扬声器将音乐播放出来。由于本例实现的音乐发生器是由用户通过键盘输入弹奏乐曲的,所以节拍由用户掌握,不由程序控制。用FPGA 产生的音频脉冲直接驱动扬声器并不能产生所要实现的音乐,因为它没有足够的驱动能力,这就需要音频功率放大电路。

本例使用s9013三极管来实现音频功放电路。

图3-1系统结构图 3.2 元件简介

3.2.1 CYCLONE2

随着低复杂度FPGA 器件成本的不断下降,具有灵活性和及时面市优势的FPGA 与 ASIC 相比更有竞争性,在数字消费市场上的应用也急剧增加。第一代Cyclone 系列迄今发售了3百多万片,在全球拥有3,000多位客户,对大批量低成本数字消费市场有着巨大的影响,该市场消纳了三分之一的器件。根据Gartner Dataquest 调查,在2004年光消费电子市场对FPGA 需求就将达到3亿9千万美元,预计到2008年,将增加到11亿6千万美元,年复合增长率(CAGR)为31.9%。同时,CycloneII 器件系列也在电信、计算机外设、工业和汽车市场上获得了巨大的进步。CycloneII 器件包含了许多新的特性,

7 / 17

如嵌入存储器、嵌入乘法器、PLL 和低成本的封装,这些都为诸如视频显示、数字电视(DTV)、机顶盒(STB)、DVD 播放器、DSL 调制解调器、家用网关和中低端路由器等批量应用进行了优化。产品简介编辑Altera 公司2004年推出了新款Cyclone II系列FPGA 器件。Cyclone II FPGA的成本比第一代Cyclone 器件低30%,逻辑容量大了三倍多,可满足低成本大批量应用需求Altera 最近推出的NiosII 系列软核处理器支持CycloneIIFPGA 系列。NiosII 系列软核处理器占用的逻辑仅需0.35美元,可以设计到CycloneII 器件中。在CycloneIIFPGA 中实现NiosII 的设计除了大幅度降低实现成本之外,还具有100DMIP 的性能,大约比Cyclone 器件和Nios 处理器提升了100%。设计者使用NiosII 处理器,能够在任何一个CycloneII 器件上构建完整的可编程系统芯片(SOPC),是中低规模ASIC 的新的替代方案。主要特性编辑Cyclone II 器件采用TSMC90nm 低K 绝缘材料工艺技术,这种技术结合Altera 低成本的设计方式,使之能够在更低的成本下制造出更大容量的器件。这种新的器件比第一代Cyclone 产品具有两倍多的I/O引脚,且对可编程逻辑,存储块和其它特性进行了最优的组合,具有许多新的增强特性。Altera 为配置Cyclone II FPGA 提供了低成本的串行配置器件。这些串行配置器件定价为批量应用,成本是相应Cyclone II FPGA 的10%。四个串行配置器件(1Mbit,4Mbit ,16Mbit 和64Mbit) 提供了节省空间的8脚和16脚SOIC 封装。器件中任何不用于配置的存储器可用于一般存储,进一步增强其价值。Altera 也为Cylcone II 器件客户提供了40多个可定制IP 核,Altera 和Altera Megafunction 伙伴计划(AMPPSM)合作者提供的不同的IP 核是专为Cyclone II架构优化的,包括:Nios II嵌入式处理器;DDR SDRAM 控制器;FFT/IFFT;PCI 编译器;FIR 编译器;NCO 编译器;POS-PHY 编译器;Reed Solomon 编译器;Viterbi 编译器等等。当客户完全满意IP 功能,再购买完全的许可。

3.2.2 S9013三极管

型号对比编辑

s9014,s9013,s9015,s9012,s9018系列的晶体小功率三极管,把显示文字平面朝自己,从左向右依次为e 发射极 b 基极 c 集电极;对于中小功率塑料三极管按图使其平面朝向自己,三个引脚朝下放置,则从左到右依次为e b c,s8050,8550,C2078 也是和这个一样的。用下面这个引脚图(管脚图) 表示:当前,国内各种晶体三极管有很多种,管脚的排列也不相同,在使用中不确定管脚排列的三极管,必须进行测量确定各管脚正确的位置(下面有用万用表测量三极管的三个极的方法),或查找晶体管使用手册,明确三极管的特性及相应的技术参数和资料。

非9014,9013系列三极管管脚识别方法:

8 / 17

(a) 判定基极。用万用表R ×100或R ×1k 挡测量管子三个电极中每两个极之间的正、反向电阻值。当用第一根表笔接某一电极,而第二表笔先后接触另外两个电极均测得低阻值时,则第一根表笔所接的那个电极即为基极b 。这时,要注意万用表表笔的极性,如果红表笔接的是基极b 。黑表笔分别接在其他两极时,测得的阻值都较小,则可判定被测管子为PNP 型三极管;如果黑表笔接的是基极b ,红表笔分别接触其他两极时,测得的阻值较小,则被测三极管为NPN 型管如9013,9014,9018。

(b) 判定三极管集电极c 和发射极e 。(以PNP 型三极管为例) 将万用表置于R ×100或R ×1K 挡,红表笔基极b ,用黑表笔分别接触另外两个管脚时,所测得的两个电阻值会是一个大一些,一个小一些。在阻值小的一次测量中,黑表笔所接管脚为集电极;在阻值较大的一次测量中,黑表笔所接管脚为发射极。

在实际应用中、小功率三极管多直接焊接在印刷电路板上,由于元件的安装密度大,拆卸比较麻烦,所以在检测时常常通过用万用表直流电压挡,去测量被测管子各引脚的电压值,来推断其工作是否正常,进而判断三极管的好坏。

3.3各功能模块原理图

3.3.1键盘扫描模块电路原理图

图3-8 键盘扫描模块电路原理图

3.3.2音频处理模块电路原理图

由于FPGA 驱动能力不够,在处理音符信号时,需加功率放大装置,音频信号放大器对信号进行放大。

9 / 17

图3-10 音频处理模块电路原理图

4. 系统软件设计

本软件设计关键是要实现一种由FPGA 控制的简单音乐发生器,它由16个音节组成的键盘,用户可以根据乐谱在键盘上进行演奏,音乐发生器会根据用户的弹奏,通过扬声器将音乐播放出来。

4.1 如何用FPGA 产生音频脉冲

了解音乐的一些基本知识后可知,产生不同频率的音频脉冲即能产生音乐,对于FPGA 而言,产生不同频率有脉冲非常方便,可以利用它的定时/计数器来产生这样的方波频率信号,因此,需要弄清楚音乐中的音符和对应的频率,以及FPGA 定时计数的关系。

在本实验中,FPGA 工作于12MHZ 时钟频率,使用其定时/计数器T0,工作模式为1,改变计数值TH0和TL0可以产生不同频率的脉冲信号,在此情况下,C 调的各音符频率与计数值T 的对照如下表:

10 / 17

表4-2 音符频率与计数值T 的对照表

5. 系统调试

电路调试是整个系统功能是否实现的关键步骤,我们将整个调试过程分为三大部分:硬件调试、软件调试和综合调试。

5.1软件仿真调试

软件仿真调试主要是针对FPGA 部分进行调试。

11 / 17

在软件运行前,先确保电路中连线正确,这一工作是整个调试工作的第一步,也是非常重要的一个步骤。在这部分调试中主要通过目测,用来完成检测电路中是否存在断路或者短路情况等。

在确保软件仿真电路正常,无异常情况(断路或短路) 方可进行软件运行,在本次设计中,软件运行主要是测试FPGA 键盘控制部分和音频功放电路调试。

5.2 软件测试

调试主要方法和技巧:

通常一个调试程序应该具备至少四种性能:跟踪、断点、查看变量、更改数值。整个程序是一个主程序调用各个子程序实现功能的过程,要使主程序和整个程序都能平稳运行,各个模块的子程序的正确与平稳运行必不可少,所以在软件调试的最初阶段就是把各个子程序模块进行分别调试。

5.3 调试结论

通过各方面努力,本次课程设计任务完成,系统部分功能已实现。基本达到预定的效果。课程设计是专科学习阶段一次非常难得的理论与实践相结合的机会,通过这次系统的项目设计提高了我运用所学的专业基础知识来解决面临实际问题的能力,同时也提高了我查阅各种文献资料、设计手册、设计规范以及软件编程排版的水平。

6. 致谢

通过这两周的FPGA 课程设计,我们学到了不少课本上没有的知识,也锻炼了自己的动手能力,将以前学过的零散的知识串到一起。

首先在课程设计刚开始的调研阶段,我们学会了怎么通过各种方式查询相关的资料。通过对这些资料的学习,我们大致了解了FPGA 的发展现状以及未来的发展趋势,认识到目前FPGA 方面的各种各样的发展,和它们之间的竞争。了解了FPGA 方面的先进技术,这些都为我的未来的学习指明了方向。

我们的课程设计主要涉及硬件和软件两方面的内容,通过这些我们的硬件和软件开发能力都获得了提高。首先硬件方面,基本了解了电子产品的开发流程和所要做的工作。并设计了一个FPGA 最小系统。通过开发板的设计和硬件搭建的过程,使我们对51系FPGA 的接口有了更深层次的理解,熟悉了一些FPGA 常用的外围电路引脚和连接方法,如LM386键盘等。

在软件方面,通过串行口调试工具的开发,使我们加深了对元器件封装的理解,熟

12 / 17

悉了51系列FPGA 内部的寄存器和编程规则,以及如何控制外围电路。

最后,感谢老师的精心指导,使我们能够完成这次课程设计。如果没有老师的热情帮助,我们想本次课题设计很难正常工作。

7. 参考文献

[1]赵鑫,蒋亮,齐兆群.数字电路设计[M].北京机械工业出版社,2005.6

[2]苏家健,曹柏荣,汪志锋.FPGA 原理及应用技术[M].高等教育出版社

[3]李朝青.FPGA 原理及接口技术[M].北京:北京航天航空大学出版色,2001

[4]胡汉才.FPGA 原理及其接口技术[M].北京:清华大学出版社,2004

[5]张靖武,周灵彬.FPGA 原理、应用与PROTEUS 仿真,2008.8

8. 附件

8.1元器件清单

8.2系统硬件电路图

13 / 17

8.3实物图

8.4程序

module music(keyin,clock,buzzout,ledout); input clock;

input[7:0]keyin;

output buzzout;

output[7:0]ledout;

reg buzzout_reg;

reg[15:0]count;

reg[15:0]count_end;

reg[7:0]keyin_reg;

always@(posedge clock)

begin

count=count+1;

14 / 17 if((count==count_end)&(count_end!=16'hffff)) begin

count=16'h0;

buzzout_reg=~buzzout_reg;

end

end

always@(keyin)

begin

keyin_reg=keyin;

case(keyin_reg)

8'b11111110:count_end=16'h5dfb;

8'b11111101:count_end=16'h53bb;

8'b11111011:count_end=16'h4a95;

8'b11110111:count_end=16'h4651;

8'b11101111:count_end=16'h3eb1;

8'b11011111:count_end=16'h37da;

8'b10111111:count_end=16'h31bf;

8'b01111111:count_end=16'h2ef2;

8'b11111100:count_end=16'h29d4;

8'b11111010:count_end=16'h2543;

8'b11110110:count_end=16'h232f;

8'b11101110:count_end=16'h1f58;

8'b11011110:count_end=16'h1bed;

8'b10111110:count_end=16'h18df;

default:count_end=16'hffff;

endcase

end

assign buzzout=buzzout_reg;

assign ledout=keyin_reg;

endmodule

15 / 17

FPGA 技术及应用实训总结

维持两周的FPGA 实训结束了,我们组选作的题目是电子琴的设计,我在我们组主要担当写报告的工作,在写报告期间查阅了相关资料,了解电子琴设计虽然看似简单,但一个不小心就会出错,在查阅资料的过程中也让我对FPGA 这门课程有了更加深入的了解,在此次实训的过程中我也有过挫折有不太清楚明了的地方,但是我并没有气馁,遇到困难我总是先自己寻找失败的原因,仔细的检查分析,请教同学、请教老师。在这一过程中我对FPGA 的掌握有了更进一步的见解,我和我的组员们分工合作,各自完成自己的模块,大家相互学习,相互提高。实训中,我学到了很多东西,首先我通过听老师讲述、查阅书本、网络等多种渠道学习了FPGA 的知识。在学习的过程中,我既体会到了学习的乐趣,又提高了合作能力,还懂得了对于我们在做事过程中发现的问题要冷静的思考,不要盲目的进行。在这次设计过程中所得到的体会,在过去是没有过的,在书本中是也是无法找到的。我以后将更努力的学习这方面的知识。

在学习FPGA 的整个过程中,我建立起对FPGA 学习的兴趣,遇到困难时要勇于面对它,并想办法解决。在整个电路设计中,我对寄分频器、计数器、LED 七段数码管显示器、Modelsim 等设计模块和软件有了更进一步的认识和掌握,拓宽了自己的知识面,锻炼了自己的动手能力,增加实践经验。途经困难参考成功者的经验,拓宽自己的视野,通过与同学、老师的交流,使自己在短短一周的实训中受益匪浅。

通过一周的实训学习,我收获颇多,我在不断钻研中了解了一些可编程逻辑器件的特点:FPGA 提供了最高的逻辑密度、最丰富的特性和最高的性能。我了解到了它的基本使用方法,学会了练习导入或者编辑一些简单的程序,并能通过仿真软件进行仿真。同时我通过学习FPGA 慢慢形成了硬件设计思想,虽然对于Verilog 语言不是很懂,我相信我以后会慢慢熟悉的。对于我这个初学者,一定要多动手,多练习,多仿真。总之,FPGA 给我带来的思想上的提升是难以言语的。

班级:214341

姓名:杨宇辰

16 / 17

FPGA 技术及应用实训总结

通过这两周有关FPGA 电子琴的设计,我的收获与体会颇多,受益匪浅。

首先,我们一个组五个成员,然后我们根据自己的擅长以分配工作。我的首要工作就是要通过课本以及网络去了解什么是乐曲电子琴,什么器件组成电子琴,然后列出元件清单,构所需的电路图,最后再完成焊接。

在课程设计刚开始的调研阶段,我学会了怎么通过各种方式查询相关的资料。通过对这些资料的学习,我大致了解了FPGA 的发展现状以及未来的发展趋势,认识到目前FPGA 方面的各种各样的发展,和它们之间的竞争,了解了FPGA 方面的先进技术,这些都为我的未来的学习指明了方向。 在这次实训中还锻炼了我其他方面的能力,提高了我的综合素质。首先,它锻炼了我做项目的能力,提高了独立思考问题、自己动手操作的能力,在工作的过程中,复习了以前学习过的知识,并掌握了一些应用知识的技巧等。对于Cyclone II 系列FPGA 器件,以前大二刚开始学的时候。在实训的过程中,深刻体会到团队合作的力量,仅凭一人之力想要完成整个实验是几乎不可能的事情,所以我们时时刻刻都应该合作。

可以说这次实训不仅使我学到了知识,丰富了经验,也帮助我缩小了关于FPGA 实践和理论的差距。比如,在做电路板的时候,我们几个人到处寻找自己所缺的工具,甚至跑到人家的教室去用工具,由此看来我们每一位成员构想竭尽全力去把这个工作做好,最后,我们也没有辜负自己,第一个完成了老师布置的任务,在完成电子琴制作的时候,那种油然而生的自豪感才是最难忘的。这次实训将会有利于我更好的适应以后的工作,我会把握和珍惜实训的机会,在未来的工作中我会把学到的理论知识和实践经验不断的应用到实际工作中,为实现理想而努力。

17 / 17

FPGA 技术及应用实训总结

两周的FPGA 实训就这样结束了,我们组的五个人分工合作大家各尽其职,进展也相对顺利,因为我们组的成员大多数以前都是学硬件的,接触实实在在的东西比较多,所以做第一个和第三个实验感觉还好。而第二个实验是对音频信号的处理,感觉那音频信号存储在ROM 中看不见摸不着,不知道怎么弄才好。不过,以后我们会在这一方面加强的。另外,我们组的成员坐得比较分散,不像其他四组的同学一样都是坐在一起的,所以呢,彼此之间的讨论很少,从而导致实验效率的下降。

第二次实验之后,金老师发现了这个问题,于是给我们重新分配了座位,果然现在我们在一起讨论的氛围越来越强了,相信在以后的学习和做项目的过程中会越来越好。随着大家的交流越来越多,可以分享到的知识也越来越多,虽然以后的任务会越来越多也越来越难,但我们组有信心可以做的很好。

这两周大家都觉得过得很快,应该是做任务做的太投入没有顾忌时间的飞逝。这两周虽然只完成了一个任务,但大家都收获颇丰,对于FPGA 的开发流程,大家都有了一定的认识,不再像开始那样懵懂,对于Verilog 语言的运用也更加熟练,对常见的错误可以很容易的找到解决的办法,可以说经过这一周的学习和大家的相互交流,大家设计FPGA 的能力都或多或少的得到了提高。

班级:214341

姓名:陈佳丽