1毕业论文设计题目:基于FPGA的PS/2键盘鼠标控制电子琴摘要文中介绍了电子琴系统的整体设计,并基于超高速硬件描述语言VHDL在Xilinx公司的SpartanⅡ系列的2sc200PQ208-5芯片上编程实现.电子琴系统的设计包含四个模块,分别是控制输入电路、FPGA、显示电路和扬声器电路。其中FPGA模块的设计是整个电子琴系统设计的核心内容。四个模块的有机组合完成了电子琴自动演奏的功能。文中还详细介绍了FPGA功能模块的原理及其工作时序仿真图。本产品的特点是成本较低,性能稳定,精度高,有一定的开发价值。DesignofElectronics_orgonsystembasedonFPGAAbstract:Itwillintroducetheintegratedesign—electronics_orgonsystembasedonFPGA.Thedesignwillbeachievedinthe2sc200—5pq208chipofXilinxcorporationwiththeVHDL(VeryHigh-speedDescription-Language)ThedesignofElectronics_orgonSystemconsistof4parts,theyarecontrolinputcircuit、FPGA、displaycircuitandspeakercircuit.TheprogramdesignofFPGAisthecoreofthesystemdesign.Fourpartscombinedtoachievetheautomaticplayelectronics_orgonsystem.thearticleilluminatesthedetailofthebasiclawofFPGAmoduleandit’sworkingtimingcharacteristics.Sincethemostspecialtyoftheproductisit’slowcost、highprecision,it’sworthdeveloping.Keyword:FPGAVHDLElectronics_orgonsystemAutomaticplay目录摘要………………………………………………………………………2目录……...……………………………………………….3第一章系统设计……...………………………………………………4第一节设计要求……...………………………………………………..41.1基本部分1.2发挥部分第二节设计思路……...…………………………………52第三节整体设计方案…...…………………………………63.1方案一…...…………………………………3.2方案二…...…………………………………3.3方案三…...…………………………………第四节比较方案…...…………………………………第二章FPGA简介第一节FPGA背景第二节FPGA的基本原理2.1MHZ_generator模块的原理2.2NoteTabs模块的原理2.3ToneTaba模块的原理2.4Speakera模块的原理第三节FPGA的基本特点第四节FPGA基本结构第三章单元电路设计.…………..……………………………………..5第一节顶层模块(top)的设计…………………………………………………………..5第二节自动演奏模块(automusic)的设计……………………………………5第三节音调发生模块(tone)的设计…………………………………………5第四节数控分频模块(speaker)的设计………………………………………5第四章PS2键盘控制电子琴程序第一节VHDL语言简介………………………6第二节软件设计………………………………………………………………6第五章参考文献…..…………………………………………………..73第六章附录…..………………………………………………………..8第一章系统设计第一节设计要求1.1基本部分设计一八音电子琴,由键盘输入来控制其对应的音响。1.2发挥部分设计一乐曲自动演奏器,由用户自己编制乐曲存入电子琴,电子琴可以完成自动演奏的功能。第二节设计思路通过可编程逻辑器件(PLD)和VHDL硬件描述引言来实现电子琴的基本部分和发挥部分的设计。对于基本部分,设计的主体是数控分频器,对输入的频率进行分频,得到各个音阶对应的频率最为输出。对于发挥部分,则在原设计的基础上,增加一个乐曲存储模块,代替了键盘输入,产生节拍控制(index数据存留时间)和音阶选择信号,即在此模块中可存放一个乐曲曲谱真值表,由一个计数器来控制此真值表的输出,而由此计数器的计数时钟信号作为乐曲节拍控制信号,从而可以设计出一个纯硬件的乐曲自动演奏电路。通过可编程逻辑器件(PLD)和VHDL硬件描述引言来实现电子琴的基本部分和发挥部分的设计。对于基本部分,设计的主体是数控分频器,对输入的频率进行分频,得到各个音阶对应的频率最为输出。对于发挥部分,则在原设计的基础上,增加一个乐曲存储模块,代替了键盘输入,产生节拍控制(index数据存留时间)和音阶选择信号,即在此模块中可存放一个乐曲曲谱真值表,由一个计数器来控制此真值表的输出,而由此计数器的计数时钟信号作为乐曲节拍控制信号,从而可以设计出一个纯硬件的乐曲自动演奏电路。第三节整体设计方案3.1方案一:采用数字逻辑电路制作,用IC拼凑焊接实现,这种电路很直观,简单方便。但应用数字逻辑电路制作的话,使用的器件较多,连接复杂,体积大,功耗大。电路中焊点和线路较多会,使成品的稳定度和精度大大降低。3.2方案二:采用现场可编程逻辑器件(FPGA)制作,利用EDA软件中的VHDL硬件描述语言编程进行控制,然后烧制实现.采用FPGA来设计的原理图如图1.1所示.它由控制输入电路、FPGA、4显示电路和扬声器电路组成。图1.1采用FPGA设计的电子琴原理方框图控制输入电路主要是为用户设计的,起到一个输入控制的作用.FPGA是现场可编程逻辑器件,也是本设计方案的核心内容,它是实现电子琴运作的主要控制模块.由设计者把编好的VHDL程序烧制到现场可编程逻辑器件FPGA中,然后通过控制输入电路把乐谱输入到FPGA,产生不同的频率驱动扬声器,发出不同的乐谱.同时也把发出的乐谱符号通过显示器输出.3.3方案三:单片机现在已经达到很成熟的阶段了,它的应用也十分广泛.采用单片机来实现电子琴,它的原理方框图与用FPGA来实现的原理方框图类似,如图1.2所示.图1.2采用单片机实现电子琴的原理方框图图1.1和图1.2的基本原理都相同,唯一不同的是一个是用FPGA来制作一个是用单片机来实现.采用单片机来实现电子琴,主要的核心是单片机的设计.第四节比较方案对于电子琴的设计,三个方案均可以实现,但是第一个方案中采用的是数字逻辑电路来制作,该电路硬件所需的器材多,体积庞大,比较复杂,而且精度和稳定度都不是很高.第二个方案采用的是现场可编程逻辑器件来实现,它的优点是所有电路集成在一块芯片上,此方案所需的外围电路简单,这样它的体积就减少了,同时还提高了系统的稳定度。还可以用ModelsimXE5.3d软件进行仿真和调试等。设计人员可以充分利用VHDL硬件描述语言方便的编程,提高开发效率,缩短研发周期,降低研发成本;而且易于进行功能的扩展,实现方法灵活,调试方便,修改容易.方案三也有它的优点,但同时也存在缺点.它对设计者的要求控制输入电路FPGA显示电路扬声电路控制输入电路MCU(单片机)显示电路扬声器电路5比较高,设计者对软硬件必须十分熟悉.和方案二来比它的实验仿真没有方案二简单直观,调试也有一定的难度.在外界环境相同的条件下,方案三设计出来的产品精度和稳定度要比方案二稍微差一些.因此,电子琴的设计我们选择方案二来实现第二章FPGA简介第一节FPGA背景目前以硬件描述语言(Verilog或VHDL)所完成的电路设计,可以经过简单的综合与布局,快速的烧录至FPGA上进行测试,是现代IC设计验证的技术主流。这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器(Flip-flop)或者其他更加完整的记忆块。系统设计师可以根据需要通过可编辑的连接把FPGA内部的逻辑块连接起来,就好像一个电路试验板被放在了一个芯片里。一个出厂后的成品FPGA的逻辑块和连接可以按照设计者而改变,所以FPGA可以完成所需要的逻辑功能。FPGA一般来说比ASIC(专用集成芯片)的速度要慢,无法完成复杂的设计,而且消耗更多的电能。但是他们也有很多的优点比如可以快速成品,可以被修改来改正程序中的错误和更便宜的造价。厂商也可能会提供便宜的但是编辑能力差的FPGA。因为这些芯片有比较差的可编辑能力,所以这些设计的开发是在普通的FPGA上完成的,然后将设计转移到一个类似于ASIC的芯片上。另外一种方法是用CPLD(复杂可编程逻辑器件备)。第二节FPGA的基本原理2.1MHZ_generator模块的原理分频器的输入是一个标准时钟频率,输出是每秒12MHZ的频率和8HZ的频率。其内部实际是一个计数器,根据所需要的要求进行不同的分频设计。本程序中已知标准频率为32MHZ,要得到12MHZ和8HZ的频率,通过计算我们可以确定它的分频系数.MHZ_generator模块的工作时序仿真图(略),它的程序见附录62.2NoteTabs模块的原理NoteTabs模块其实就是一个乐谱预置器,可设置电子琴演奏的乐谱.原理很简单即来一个脉冲输出一个已设置好的乐谱.假定预先设计的乐谱为3335556211333333它的输出工作时序仿真图如图2.2所示,程序见附录.图2.2NoteTabs模块的工作原理仿真图2.3ToneTaba模块的原理ToneTaba模块是一个音阶发生器,实质是译码电路,控制音调的预置数.乐谱信号是该模块的敏感信号,输入的每一个乐谱都将被译成与之相对映的频率从Tone端口输出去控制Speakera模块,让Speakera模块发出不同的音调.ToneTaba模块在将乐谱译成相映的频率的同时会将乐谱的符号从codel输出到显示部分,并判断乐谱是高音还是低音,再从highl端口输出去显示.在ToneTaba模块的设计中tone的计算很重要,tone是根据产生该音阶频率所对应的分频比获得的.此值是通过查表和计算所到,查表我们可以知道每个乐谱符号的频率,然后计算出要得到该乐谱的频率所需的分频系数.例如音符’1’的发音,通过查表得它的频率是785HZ左右,我们要计算tone的值可由公式:音符频率=振荡频率/(16#7FF#-tone的值)振荡频率是经过分频之后得到的,在此是1MHZ,由公式可计算出tone的值为:773.为了进一步了解ToneTaba模块的工作原理,可假定一些参数进行仿真.设它的输入乐谱为:3333555211312153则ToneTaba模块的工作时序仿真图如图2.3所示,程序见附录.图2.3ToneTaba模块的工作时序仿真图2.4Speakera模块的原理模块Speakera中的主要电路是一个数控分频器,它由一个初值可预置的加法计数器和两7个分频器构成.数控分频器的功能就是当输入端给定不同的输入时,将对输入的时钟信号有不同的分频比,Speakera模块中的数控分频器就是用计数值可并行预置的加法计数器设计完成的,方法是将计数溢出位与预置数加载输入信号相接即可.当模块Speakera由端口tone获得一个十进制数后,将以此值为计数器的预置数,对端口CLK12MHZ输入的频率进行分频,之后将输出再进行2分频,将脉冲展宽,以使扬声器有足够功率发音,最后由SPKOUT向扬声器输出发声.Speakera模块的工作时序仿真图如图2.4所示,程序见附录.注:为了能清晰的看到输入与输出的关系,第一次分频系数设的是2,第二次分频系数设的是5,第三次