版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于FPGA的乐曲发生器设计'现代电子技术>2003年第18期总第161期基于FPGA的乐曲发生器设计姜田华(杭州商学院信息与电子工程学院浙江杭州310035)摘要:介绍了在MAX+plusI的EDA软件平台上,一种基于FPGA的乐曲发生器的设计方法,并给出了it-gJ顶层电路图和底层元件的VI-IDL源程序.谈设计的正确性已通过硬件实验得到验证.关键词:乐曲发生器;电子设计自动化;现场可缩程门阵列;VHDL中圈分类号:TP391.72文献标识码:B文章编号:1004373X(2003)1806703DesignofMusicGeneratorBasedonFPGAJIA
2、NGTianhua(CollegeofInformationandElectronicEngineering.HangzhouUniversityofCommerce?Hangshou?310035,China)Abstract:ThispaperintroducedadesignbasedonmusicgeneratorbyFPGAwhenMAX+plusl,aEDAsoftwareisused?AndasourceprogramofVHDLofthetopschematicsandthebottomcomponentissupplied?Thecorrectnessofthedesigni
3、sbeenapprovedthroughhardwareexperiment?Keywords:musicgenerator;EDA;FPGA;VHDL1概述随着EDA技术的进展,基于可编程ASIC的数字电子系统设计的完整方案越来越受到人们的重视,并且以EDA技术为核心的能在可编程ASIC上进行系统芯片集成的新设计方法,也正在快速地取代基于PCB板的传统设计方式.与利用微处理器(CPU或MCU)来实现乐曲演奏相比,以纯硬件完成乐曲演奏电路的逻辑要复杂得多,如果不借助于功能强大的EDA工具和硬件描述语言,仅凭传统的数字逻辑技术,即使最简单的演奏电路也遍关心的问题,本设计在美国AITERA公司MA
4、X+plusI的EDA软件平台上,使用层次化设计方法,实现了乐曲发生器的设计.乐曲选取梁祝中化蝶部分,其简谱如图1所示.3165615一17一.2nII?一0I一0一一?'Ii0一.l图1梁祝中化蝶部分简谱收稿日期t2003-06一O22音符与频率的关系我们知道,组成乐曲的每个音符的发音频率值及其持续的时间是乐曲能连续演奏所需的2个基本要素,首先让我们来了解音符与频率的关系.乐曲的12平均率规定:每2个八度音(如简谱中音之间,又可分为12个半音,每2个半音的频率比为虿.另外,音符A(简谱中的低音6)的频率为440Hz,此可以计算出简谱中从低音1至高音1之间每个音符的频率,如表1所示.表
5、1简谱中音符与频率的关系音符频率/Hz音符频率/Hz音符频率/Hz产生各音符所需的频率可用一分频器实现,由于各音符对应的频率多为非整数,而分频系数又不能为67姜田华:基于FPGA的乐曲发生器设计分频器时钟频率过低,则由于分频系数过小,四舍五人取整后的误差较大;若时钟频率过高,虽然误差变考虑两方面的因素,在尽量减小频率误差的前提下取的基准频率.若无6MHz的时钟频率,则可以先分频得到6MHz或换一个新的基准频率.实际上,只要各个音符间的相对频率关系不变,演奏出的乐曲听起来都不会"走调".化蝶简谱中各音符对应的分频系数如表2所示.为了减小输出的偶次谐波分量,最后输出到扬声器的波
6、形应为对称方波,因此在到达扬声器之前,有一个大的分频系数为9101,故采用14位二进制计数器已能满足分频要求.表2各音阶频率对应的分频值音符分频系数音符分频系数低音39101中音25108低音57653中音34551低音66818中音53827低音76074中音63409中音15733高音12867每个音符持续的时间是乐曲能连续演奏所需的另一个基本要素.化蝶的最小的节拍为1/4拍,将1拍的时间长度定为1s,则只需要再提供一个4Hz的时钟频来完成,对于占用时间较长的节拍(一定是1/4拍的整数倍,如2/4拍),只需将该音符连续记录2次即可.3层次化设计我们在美国AITERA公司MAX+plusI的
7、EDA软件平台上,使用层次化设计手段,实现了化蝶乐曲发生器的设计.图2为化蝶乐曲发生器的顶层电路.定.输出为方波信号,其频率为3000ooo/(1+D13.0),单位为Hz.音符的持续时间需根据乐曲的速度及每个音符的节拍数来确定,TABLE元件首先是为PULSE元件提供决定所发音符的分频预置数,而此数停留的时间即二进制计数器(计数最大值为138),这个计数器的计数频率选为4Hz,所以每一计数值的停留时间为0.25s,即四四拍的4分音符持续时间.例如,化蝶乐曲的第一个音符为"低音3"(1拍),停留的时间需用4个计数时钟节拍,即1s.相应地,所对应的"低音3"
8、;音符分频预置值为9100,其值在AF13.0输的时钟速率作加法计数时,化蝶乐曲就开始连续自然地演奏起来了.底层元件的VHDL逻辑描述如下:一-pULSE元件LIBRARYIEEEzUSEIEEE.STD_L0GIC一1164.ALL;UNSIGNED.ALL:ENTITYpulseISPORT(elk:INSTD_LOGIC;一一待分频时钟d:INSTDL0GICVECT0R(13DOWNTOO)'一一分频预置数输入lout:0UTSTD_LOGIC);一一发音输出ENDpulselARCHITECTUREbehavOFpulseISSIGNALcount:STDLOGICVECT0
9、R(13D0WNT0O)'图2顶层电路音符的频率可以由PUISE元件的输出SPEAK获得,这是一个数控分频器,由其CLK6MHz端输入6MHz脉冲信号,分频比由预置输入端D13.0决68SIGNALcao.caol,cao2.load:STDLLOGIC:BEGINPR0CESS(elk,load.d)BEGINIFelk'EVENTANDelk一'1'THENIFload一'1'THENcount<=d:ELSEcount<一count一1:ENDIF:ENDIFENDPR0CESS:PR0CESS(count)BE
10、GINIFcount=0THENcao<='1':ELSEcao<='0'ENDIF;load<一cao;ENDPR0CESS:PROCESS(clk)一一去毛刺BEGINIFelk'EVENTANDelk:'1'THENcaol<cao;ENDIF;ENDPR0CESSzPROCESS(cao1)一一2分频,方波输出BEGINIFcaol'EVENTANDcao1一'1'THEN'现代电子技术>2003年第18期总第161期cao2&a
11、mp;lt;=NOTcao2;ENDIF;f0Ut<=cao2;ENDPROCESS;ENDbehav;一一TABLE元件IBRARYIEEE;LOGIC一1164.ALL;ENTITYtableISP0RT(clk:INSTDLOGIC;af:OUTINTEGERRANGEOTO16#3FFF#);一14位二进制数END;ARCHITECTUREoneOFtableISCONSTANT|ow_3:INTEGER:=9100;CONSTANTlow_5:INTEGER:=7652;CONSTANTlow_6:INTEGER:=6817;CONSTANTlOW-7:INTEGER:
12、一6073;CONSTANTmid一1:INTEGER:一5732;C0NSTANTmid_2:INTEGER:=5107;CONSTANTmid一3:INTEGER:=4550;CONSTANTmid一5:INTEGER:一3826;CONSTANTmid_6:INTEGER:一3408;CONSTANThigh1:INTEGER:2866;CONSTANTstop:INTEGER:=0;一一休止符分频系数SIGNALcounter:1NTEGERRANGEOTO138;BEGINPROCESS(clk)BEGINIFcounter一138THENcounter<=0;ELSI
13、F(clk'EVENTANDclk='I')THENcounter<.counter+1;ENDIF;ENDPROCESS;PROCESS(counter)BEGINCASEcounterISwHENOO=>af<=lOW一3;一一低音3WHEN01=>af<一lOW-3;WHENO2一>af<=lOW-3;WHENO3一>af<=lOW-3;WHEN04=>af<一lOW-5;WHENO5=>af&am
14、p;lt;一lOW-5;WHENO6=>af<=low_5;WHEN07=>af<=lOW-6;WHEN08一>af<一midI;WHEN09=>af<=midI;WHEN10一>af<=midI;WHEN1I一>af<=mid一2;WHEN134:>af<一low_5;WHEN135:>af<=lOW-5;WHEN136=>af<=stop;一
15、一休止符WHEN137:>af<=stop;WHEN138=>af<=stop;WHENOTHERS:>NULL;ENDCASE;ENDPRoCESS:END;4实验验证需要说明的是不同的数字系统其引脚锁定是不一样的,为了便于在实验系统上验证设计结果,必须按照采用的是杭州康芯电子生产的Gw48一CK实验系统,FPGA目标芯片的型号为EPF10K10LC84.芯片配置成功后即可进行硬件测试:选择实验电路结构图NO.6,使CLK6MHz与Clock9相接(接受6MHz时钟频率),CLK4Hz与Clock2相接(接受4Hz时钟频率),发音输出接SPEAK,当乐曲一遍演奏完成后,乐曲发生器能自动从头开始循环演奏.Ell233参考文献潘松,王国栋.VHDL实用教程MI.四川:电子科学大学出版社,2001.MI.北京:电子工业出版
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论