FPGA电子琴设计论文.docx
- 文档编号:23850169
- 上传时间:2023-05-21
- 格式:DOCX
- 页数:34
- 大小:1.45MB
FPGA电子琴设计论文.docx
《FPGA电子琴设计论文.docx》由会员分享,可在线阅读,更多相关《FPGA电子琴设计论文.docx(34页珍藏版)》请在冰豆网上搜索。
FPGA电子琴设计论文
编号:
本科毕业论文(设计)
题目:
基于FPGA的多功能电子琴的设计
学院物电学院
专业电子
学号200840620310
姓 名
指导教师职称助教
完成日期2012年4月5号
诚信承诺
我谨在此承诺:
本人所写的毕业论文《基于FPGA的多功能电子琴的设计》均系本人独立完成,没有抄袭行为,凡涉及其他作者的观点和材料,均作了注释,若有不实,后果由本人承担。
承诺人(签名):
2012年4号5日
姓名:
学号;200840620310指导老师:
摘要:
本设计以现场可编程逻辑门阵列器件(FPGA)为核心部件,运用高速的硬件描述语言veilog在ALTERA公司的cycloneII系列的EP2C5Q208C8芯片上编程实现,然后在QuartusⅡ软件平台上编译并下载到FPGA芯片中,采用FPGA器件驱动蜂鸣器与外部电路构成一个乐曲演奏电路。
本设计成功地完成了基本的要求以及相应的功能设计,使系统除了可实现电子琴功能外,还可实现自动演奏乐曲的和弹奏回放等功能。
本文主要介绍了基于FPGA的多功能电子琴的整个系统设计和实物实现过程。
关键词:
FPGA;verilog;电子琴;QuartusⅡ;PCB;AltiumDesigner
DesignoftheFPGA-basedmulti-functionkeyboard
Name:
HuangLeiNumber:
200840620310Instructor:
ZhouXiaoBo
Abstract:
窗体顶端
Thedesigntofieldprogrammablegatearraydevices(FPGAs)asthecorecomponents,theuseofhigh-speedhardwaredescriptionlanguageveilogprogrammingALTERAcompanycycloneIIseriesEP2C5Q208C8chip,andthencompiledintheQuartusIIsoftwareplatformanddownloadedtotheFPGAchip.FPGAdevice-drivensoundwithanexternalcircuitofamusic-playingcircuit.Thisdesignhassuccessfullycompletedthebasicrequirementsandfunctionaldesign,makingthesysteminadditiontoorganfunction,butalsoauto-playingmusicandplayingtheplaybackfunctions.ThispaperintroducestheoverallsystemdesignofFPGA-basedmulti-functionkeyboardandphysicalprocess.
Keywords:
FPGA;verilog;Keyboard;QuartusⅡ;PCB;AltiumDesigner
1.绪论
随着基于FPGA的EDA技术的发展和应用领域的扩大与深入,EDA技术在电子信息、通信、自动控制用计算机等领域的重要性日益突出。
专用集成电路(ASIC)和用户现场可编程门阵列(FPGA)的复杂度越来越高。
数字通信、工业自动化控制等领域所用的数字电路及系统其复杂程度也越来越高,特别是需要设计具有实时处理能力的信号处理专用集成电路,并把整个电子系统综合到一个芯片上。
设计并验证这样复杂的电路及系统已不再是简单的个人劳动,而需要综合许多专家的经验和知识才能够完成。
由于电路制造工艺技术进步非常迅速,电路设计能力赶不上技术的进步。
在数字逻辑设计领域,迫切需要一种共同的工业标准来统一对数字逻辑电路及系统的描述,这样就能把系统设计工作分解为逻辑设计(前端)和电路实现(后端)两个互相独立而又相关的部分。
由于逻辑设计的相对独立性就可以把专家们设计的各种常用数字逻辑电路和系统部件建成宏单元(Megcell)或软核(Soft-Core)库供设计者引用,以减少重复劳动,提高工作效率。
电路的实现则可借助于综合工具和布局布线工具(与具体工艺技术有关)来自动地完成。
VHDL和VerilogHDL这两种工业标准的产生顺应了历史的潮流,因而得到了迅速的发展。
现在VHDL和VerilogHDL两种语言已经成为IEEE标准,在大规模电路开发中运用十分广泛并已经深入各个领域。
2.系统设计
2.1设计要求
设计一个由音响播放的多功能电子琴,主要功能有模式一:
按键发出7个音阶的声音。
模式二:
可以自动播放写入ROM中的歌曲。
模式三:
回放按键演奏写入RAM的音阶或乐曲。
2.2方案比较
方案一:
用ASIC实现,这种电路很直观,简单方便。
但应用数字逻辑设计复杂,使用的器件复杂,体积不易控制,功耗较大。
电路设计及维护不方便,而且电路的保密性和安全性不易保证,使设计的稳定度和可靠性大大降低。
方案二:
运用单片机实现,这种设计方案思路直接,简单可行,但是单片机的运行速度和时钟频率是设计的弊端,而且程序运行可能由于环境影响而不稳定,同时要在外部设计存储器件,使设计变得复杂。
方案三:
基于FPGA芯片设计,这种方案使设计思路变得清晰明了,设计时只需使用verilog语言描述出所需的电路模块。
再把电路代码综合后布局布线映射成电路网表。
使其成为从语言到电路的转换,方法简便,思路清晰,并且芯片具有丰富的资源满足设计要求。
采用现场可编程逻辑门阵列器件(FPGA)制作,将所有器件集成在一块芯片上,体积大大减小,用verilog编程实现时更加方便,易于进行功能扩展,并可调试仿真,制作时间大大缩短。
因此选择第三种方案。
2.3方案论证
电路的乐曲演奏原理:
组成乐曲的每个音符持续的时间(音长),频率值(音调)以及音色(主要由演奏的乐器决定的)是乐曲能连续输出悦耳声音的基本要素,因此要使音响发出悦耳的乐曲声就要控制输出到音响的激励信号的频率的和各个频率信号持续的时间。
由于各种条件的的限制,本系统仅仅是通过控制音长和音调来实现多功能电子琴的设计,而音色由于受器件的类型和质量的影响所以不易控制不在设计之内。
功能电路设计思路:
按键演奏
音响播放器件
按键选择演奏模式
自动播放音乐
按键输入
并回放音乐
乐乐乐
通过模式选择电路可以选择相应的三种模式:
按键演奏,自动播放音乐,按键输入并回放音乐。
按键演奏电路通过设计分频器输出产生不同频率给音响从而产生不同音阶声音;自动播放音乐电路可以通过设计ROM和一个程序计数器来实现,有程序计数器来实现地址的选择ROM中存储的分频数,然后将分频数输入音响实现音乐播放功能;按键输入并回放音乐电路是通过设计按键演奏电路,同时设计读写时钟计数器作为选择地址,通过对RAM的操作实现对输入音乐的自动回放功能。
由于设计合情合理,又有科学依据,所以经过科学论证该设计可以实现。
3.硬件电路设计
3.1PCB设计软件简介
AltiumDesigner6.0是Protel软件的原厂商Altium公司推出的Protel系列的最新高端版本。
AltiumDesigner6.0是一种完全一体化电子产品开发系统,也是业界第一款也是唯一一种完整的板级设计解决方案。
AltiumDesigner是业界首例将设计流程、可编程器件(如FPGA)设计、集成化PCB设计和基于处理器设计的嵌入式软件开发功能都整合在一起的功能强大的软件,可以进行PCB和FPGA设计以及嵌入式设计等一系列设计,而且具有将设计从概念转变为最终实现成品所需的全部功能。
AltiumDesigner6.除了全面继承包括Protel2004,protel99SE,在内的先前一系列版本的功能和优点以外,还增加了许多改进和很多高端功能。
AltiumDesigner6.0拓宽了板级设计的传统界限,全面集成了FPGA和SOPC设计功能和实现功能,从而允许工程师能将系统设计中的PCB与FPGA设计以及嵌入式设计完全集成在一个开发环境。
而且是电子设计软件中功能最为强大的一款。
3.2关于芯片介绍
本设计使用的芯片是Altera公司的cycloneII系列的EP2C5Q208C8芯片。
EP表示封装,2C表示cycloneII系列,5Q表示芯片的速度等级,208个管脚。
该芯片由二个PLL,M4K内存,标准的TTL电平I/O口,具有嵌入式的乘法器,外部配有三星型号K4S281632K-UC60存储器,具有大量的逻辑资源,组成有LAB,LE,ALM。
逻辑布局LAB排列在网格阵列中,LAB可以通过阵列与本地互联。
3.2功能电路
3.2.1按键演奏电路
通过音阶对应的频率的计算得到各个对应频率的分频的数值,然后将分频的数值送给分频器则会产生不同频率的脉冲,然后将脉冲送给音响则会产生不同的音阶的声音。
下表说明了各个音频对应的频率。
表一:
简谱中的音名与频率的关系
音名
频率/Hz
音名
频率/Hz
音名
频率/Hz
低音1
261.6
中音1
523.3
高音1
1045.5
低音2
293.7
中音2
587.3
高音2
1174.7
低音3
329.6
中音3
659.3
高音3
1318.5
低音4
349.2
中音4
698.5
高音4
1396.9
低音5
392
中音5
784
高音5
1568
低音6
440
中音6
880
高音6
1760
低音7
493.9
中音7
987.8
高音7
1975.5
N
3.2.2分频器的音阶产生流程图
3.2.3按键演奏电路模块
分频器的时钟脉冲通过对原有的晶振进行分频得到,通过对案件的识别来确定输出的分频数,然后计数器开始计算分频比,当分频比小于分频数时,继续计数,当分频比大于分频数时计数器清零。
然后分频器输出对应的分频数也就是对应的音阶给音响。
该模块是按键控制模块,通过QuartusII软件对源文件编译过后,利用原件例化生成的原理图文件,在顶层设计中可直接当做电子原件联接生成电路。
该电路产生音阶对应的分频数给音响产生音乐。
3.2.4按键电路PCB设计
(1)按键对应的原理图与PCB封装设计由于在AltiumDesigner中没有对应的封装,所以需要自己进行原理图和封装的绘制。
(2)按键对应的电路原理图
该电路的作用是为电子琴提供按键输入,各个按键对应着相应的频率输出也就是各个音阶的发声频率。
(3)排阻对应的封装以及原理图
(4)音响驱动电路
音响驱动电路设计过程中将基极设计一个低通滤波电路,对高频进行滤除。
同时,基极接大电阻可以使三极管有效截止。
(5)驱动电路对应的音响,三极管和电容的封装
3.3.1自动播放音乐电路原理
每个音符的持续时间则由乐曲的速度以及节拍数来确定的。
所以,必须知道乐曲的速度和每个音符所对应的节拍数才能控制音符的音长,而在这个设计中所演奏的乐曲的最短的音符为四分音符,全音符的持续时间为1秒,则一拍所应该持续的时间应为0.25秒,则只需要一个4HZ的时钟频率即可产生四分音符的时长。
通过编写乐曲文件就可以让系统知道现在应该演奏哪个音符,而这个音符持续的时间是按乐曲文件中音符是按地址存放的,当ROM工作时就按4Hz的频率依次读取音符,当读ROM的某个音符时就对应发这个音符的音调,持续时间为0.25秒。
对于播放的乐谱是通过计算对应的分频数通过quartusII软件LPM宏向导写入MIF文件建立的ROM中的。
3.3.2自动播放音乐电路工作流程图
4HZ
系统通过外部的模式选择进入自动播放音乐电路模式,而自动播放电路时钟分为系统时钟和读ROM的乐谱时钟,通过音乐程序计数器对写入乐谱的ROM进行寻址,然后读出对应乐谱的分频数,然后通过播放时钟把读出的分频数以4HZ的频率输出相应产生不断循环的音乐。
3.3.3自动播放音乐电路模块及相应的ROM文件
图中对应的是二首歌曲的ROM弹奏电路的电路图
3.4.1按键输入并回放电路原理
系统通过模式选择进入按键输入并回放电路,该电路在没有触发回放时,可以弹奏音阶及音乐相当于按键演奏电路,当回放触发时按键演奏时则会向RAM中输入按键演奏的相应的分频数等待输出,当再次触发时则自动循环输出按键演奏时输入的分频数,此时便演奏输入的音乐,相当于按键输入回放了。
该自动回放电路有按键输入电路,读/写地址计数器,自动回放电路触发电路,乐曲播放电路以及可读可写的RAM组成。
而RAM同样也是QuartusII软件自带的LPM宏向导实现数据和参数的配置的。
3.4.2按键输入并回放电路的流程图
蜂鸣器播放器件
系统通过对按键输入并回放电路的模式触发判断进而判断模式,如果是音乐按键输入模式则按键演奏音乐的同时通过写地址计数器把乐谱对应的分频数写入RAM中,然后通过音响播放器件输出设定的音乐。
如果是读RAM模式则通过读地址计数器分别读出RAM的分频数,然后通过音响播放器件输出设定的音乐。
这样就可以实现按键输入,同时也可以通过读RAM实现按键输入的回放。
3.4.3按键输入并回放电路模块和模式触发电路模块
该模块式按键回放电路的模块图,通过按键来输出分频数也就是发出音阶,而下面的RAM模块就是将按键弹奏的通过写地址将其写入RAM中,当写完之后对RAM进行读操作时将是读RAM中的内容。
3.5.1模式选择电路
模式选择模块式整个系统的控制模块,其原理是通过对有限状态机的输入的判断来对所需模式进行选择。
3.5.2模式选择流程图
S2
当系统上电时模式为S0,这时则为按键音乐演奏模式,此时可以按键演奏任意音乐。
当模式按键按下时,模式进入S1,此时系统进入自动播放音乐模式,输出播放事先写入ROM中的东方红乐曲。
当模式按键按下时,模式进入S2,此时系统进入按键播放并回放模块,这时按键时可以演奏任意乐曲,而演奏的乐曲的数据被写入RAM中,如果这时触发按键被按下则系统会从RAM中通过地址计数器依次把写入RAM中的乐曲回放出来达到录音的效果。
而且模式选择开关是通过程序编译综合出特定的功能器件,所用程序的思想是通过有限状态机对按键输入的判断来控制选择各个输入中哪一个被输出。
有按键少,状态切换稳定快速等优点。
3.5.3模式选择模块
该图是模式选择模块,其中有六个输入和一个输出,keyin是触发模式的按键,通过keyin按键的输入,可以判断模式,状态机设置了S0,S1,S2,S3四个状态,状态赋值为00,01,10,11。
状态从S0,S1,S2,S3依次输入循环。
此时输出依次从ina,inb,inc,ind联接给beepout。
而clk则是模式转换模块的输入时钟。
3.6.1顶层模块设计
整个多功能电子琴的设计分为几个模块,系统是由底层设计到顶层设计的思想和方法。
通过软件编程和仿真对各个底层模块设计即实现,然后对底层模块的连接实现顶层模块的设计,这样的设计具有巨大的设计优势,由于通过软件编程设计特定的电路或模块,而且该电路或模块可以重用形成用户的库,通过软件编程设计使程序编译成具有形象封装的功能器件,这些功能器件不仅可以从程序到器件相互装换,还可以由各个功能器件联接生成高密度集成器件,以及相应的IP核。
ALTERA公司为我们提供了功能齐全而且丰富的IP核,这样给设计带来了巨大的方便,生成同时通过底层的设计到顶层设计模块重用得到广泛应用,也提高了设计的效率和周期。
避免了设计的重复进行,使得高集成度的电路开发变成现实。
而且特定的IP核已经成为知识产权加以保护。
3.6.2顶层模块
整个系统可以分为四个模块:
按键演奏模块,自动播放音乐模块,按键输入并回放模块和模式选择模块,系统是通过底层模块相互连接而建立的。
控制模块是模式选择模块,通过对输入的判断来选择进入的功能模块。
当选择模式一时,系统进入按键演奏,这时可以对按键输入演奏音乐;当选择模式二时,系统则进入自动播放音乐模式,这时系统则自动播放设定的音乐而且循环播放直到模式被转换;当选择模式三时,系统则进入按键输入并回放模式,此时若触发开关没有开启,则按键演奏音乐,而且按键演奏的音乐被写入RAM中,当触发开关被开启,则按键演奏音乐停止,此时地址计数器将写入RAM的数据依次输出,这时便是按键输入回放。
整个系统则是由模式选择模块通过判断进行模式的循环选择,使得系统稳定快速的在各个功能模块中的跳转。
由于,该设计是由程序通过编译综合成为硬件电路,所以电路在运行时十分稳定,不会因为程序问题而出现错乱。
因此,在环境比较恶劣时,FPGA芯片设计的电路便体现这方面的优势,同时由于系统建立在以硬件电路为基础,所以对于较大的系统其运行速度也是不可忽略的优势。
3.7.1外设板原理图设计
外设板的是通过软件设计然后腐蚀出来的,在从设计到设计出实物是通过各个步骤一步一步完成的,在设计过程中要严格按照步骤完成,不能跳过或混乱,不然不能设计出正确的PCB,更不能制作出功能正确的电路。
1.首先,是对所需电路进行分析,划分各个功能电路和模块,然后,在AltiumDesigner6中建立原理图文件,然后在原理图中画需要设计的电路图,所画电路图是电路的抽象出的原理图,所画的原件只需要在原理图库中寻找对应的原件图,如果没有对应的原件,我们只需要在对应的工程中建立一个原理图库,把我们需要且在系统自带库中找不到的原件画出。
各个原件也只是一种示意性的图形,与真实的原件有一定的差别,主要是其替代作用。
各个节点之间的联接可以通过网络标号来实现。
原理图画完后需要电气规则检查,如果出现错误,软件会自动提示错误。
然后需要检查错误,错误排除后需要重新检查电气错误。
直到没有错误提示。
通常在设计原理图过程中,需要注意网路标号标注是不是在正确位置,以及有没有标错或少标了,同时也要注意电源和地等选项。
设计的原理图可以选择图纸的大小,如果设计较大可以选择一个较大的图纸设计,同时软件还为大型设计提供了层次设计,使设计分为各个层次令设计更为层次化,设计思路更为清晰明朗。
2.原理图设计完成经过电气规则检查正确后便可以设计PCB板了。
首先,设计PCB时需要在工作空间中建立PCB原理图,建立好原理图时,将原理图原件通过封装后更新到PCB图中,如果再画原理图中的原件找不到封装,则需要建立PCB库,而PCB封装则需要在新建库文件中自己绘制,绘制的封装需要考虑实际封装的大小与真实尺寸相符合以及原件摆放的位置要与实际相适应。
通过封装管理器,我们把所有电路图中的原件封装后,然后生成PCB板,如果没有电气和封装错误,便在PCB中生成对应的封装的电路图。
在生成电路图时要特别注意画封装是要设计封装的参考点,如果不设计参考点时,在设计PCB摆放原件时没有设计参考点的原件则在图纸中找不到,所以要设计原件的参考点。
在摆放原件封装时,要在外围画出原件的范围一边设计完的腐蚀PCB板,划线的层次在keep-outlayer层。
摆放原件封装在划线以内区域,原件摆放要注意位置以及距离,原件发放的设计主要靠设计的开发经验,最后,还是要摆放整齐紧凑美观为主。
摆放完成以后则需要布线,在布线开始之前我们需要制定布线的规则,要设计布线的线宽,在实验室的设备下,我们布线的线宽为20mil,而电源与地的线宽可以设计为25mil,设计过孔的外径为50mil,内径为25mil,其他设计为默认值。
在布线过程中不仅有许多规则,同时有更多的经验。
我们设计的电路大都为二层板。
我们再设计顶层走线的方向一般与底层的方向垂直。
如果顶层布线为横向,则底层布线的方向为纵向。
这样布出的电路板层次清晰美观大方,同时在布线的时候我们尽量将线布在底层,这样布线后焊接原件时会比较方便。
以上为布线时需要注意的几点方面,还有布线的许多规则和经验需要在实际设计制作中体会到在此不作过多的赘述。
布线完成后需要检查布线的完整性,因为图纸中的方格与线极为混淆,所以通常把线设置为点,这样在布线过后容易查出有没有布完。
布完线后就是板子的铺铜,因为设计的是双层板,所以要双面铺铜,要注意的是在铺铜时要选择网格铺铜这样在实验室的的设备下才能雕刻出来。
3.7.2电路的原理图
该图是在AltiumDesigner6中绘制的完整电路的原理图
3.7.3电路的原理图对应的PCB板
该图是在AltiumDesigner6中绘制的完整的PCB,为双层板。
4.软件设计
4.1VerilogHDL硬件描述语言概述
VerilogHDL和VHDL一样,是目前大规模集成电路设计中最具代表性、使用最广泛的硬件描述语言之一。
作为硬件描述语言,VerilogHDL具有如下特点:
1.由于该语言的特点使得代码描述与具体工艺的实现无关,提高了设计的可重用性,便于设计的标准化。
如果有C语言的编程经验的设计人员,只需短暂的时间就能学会和掌握VerilogHDL语言。
2.它能够在各个抽象层次的描述上对设计进行仿真验证,所以它可以及时发现可能存在的错误设计,缩短了设计的周期,并保证整个了设计过程的完整性与正确性。
3.它能够在不同的抽象层次上,如系统级、行为级、RTL(RegisterTransferLevel)级也就是寄存器传输级、门级和开关级,对设计系统进行精确而简练的描述;因此,VerilogHDL可以作为学习HDL设计方法的入门和基础。
VerilogHDL的基本结构是由模块(module)构成的,而每个模块都对应着硬件电路中各个逻辑实体。
因此,每个模块都有独立的结构或功能,以及用于与其它模块之间相互通信端口。
其所写代码主要是由以下几部分组成:
第一部分是代码的注释部分,第二部分是模块定义行,第三部分是端口类型和数据类型的说明部分,第四部分是描述的主体部分,第五部分是结束行。
所以,这种语言在开发中具有简洁,易懂,描述精确,设计高效,在开关级中的描述性能优越于VHDL语言。
结束
4.2程序设计流程
4.3程序模块简介(详见附录)
顶层映射模块由按键演奏模块,音乐自动播放模块,按键演奏并回放模块,模式选择模块四部分组成。
(1)顶层映射模块
文件名:
top.bdf
功能:
对各子模块进行顶层映射。
说明:
对“keybeep”,“beepkey”,“key_piano”,“wrcounter”,“recounter”,“switch”,“eastcounter”,“rom1”,“eastswitch”,“ram”,“beep”,“choose”,“lzcounter”,“rom2”,“lzswitch”,“lastwitch”几个子模块进行顶层映射。
(2)音乐自动播放模块
文件名:
auto.bdf
功能:
通过读ROM自动循环播放音乐。
说明:
通过计数器达到对50MHz脉冲分频和32位存储器地址输出的目的。
对于ROM是通过quartusII软件在使用宏模块功能在LPM中自己定制的一个ROM,同时经过初始化存储文件把乐曲写入ROM中的。
最终,通过地址计数器将存储器单元内容输出给蜂鸣器播放器件。
(3)按键演奏模块
文件名:
keypiano.bdf
功能:
将按键和乐谱的分频数相
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- FPGA 电子琴 设计 论文