




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
在系统编程技术项目设计报告课程名称 在系统编程技术 任课教师 设计题目 乐曲硬件演奏电路 班 级 09电子信息工程(1)班 姓名学号 成 绩 日 期 2012年6月6日 目 录1题目分析12设计方案12.1顶层实体描述12.2模块划分22.3模块描述22.3.1音乐节拍和音调发生器模块:noteabs22.3.音乐谱对应分频预制数查表电路模块:tonetaba42.3.2音乐符数控11分频电路模块:SPEAKERA42.4顶层电路图53方案实现63.1模块仿真及实现63.1.1 tonetaba模块63.1.2 speakera模块63.1.3 noteaba模块73.2顶层电路仿真及实现74硬件测试及说明75结论86课程总结87附录:程序代码9I乐曲硬件演奏电路1题目分析本设计要求完成简单乐曲的播放,同时可以实现对乐曲播放的播放及暂停控制,以及歌曲选择的控制。为了达到以上要求,本设计选择了FPGA来实现。乐曲播放的基本要素就是节拍和音阶,而音阶对应不同的频率,节拍对应音阶的持续时间。本设计通过定制LPM-ROM在不同的地址段存储两首不同音乐数据,通过按键切换歌曲。ROM中的数据,以一定的时间(即节拍)读出,用数控分频的原理得出相应频率,驱动扬声器发出对应的音阶,从而来实现完整乐曲的播放。2设计方案2.1顶层实体描述乐曲播放器顶层实体songer由4个输入、3个输出组成。其中len使能信号输入端,具有播放停止功能:当len输入高电平时顺序播放音乐,输入低电平时停止;lxz是选择信号输入端,在使能信号len输入高电平时,根据lxz输入的高低电平播放不同的音乐。CLK8HZ输入端输入8HZ的时钟信号,用于产生节拍基准,CLK12MHZ输入端输入12MHZ的时钟信号,用于实现分频音阶;CODE13.0输出端输出与演奏发音相对应的简谱码;HIGH1是高八度音指示信号输出端,SPKOUT是声音输出端口,驱动扬声器播放音乐。图1 顶层实体2.2模块划分按照顶层实体描述,本设计将乐曲播放器系统分为三个模块:ROM地址发生器,分频查找表和数控分频器。由自顶向下设计思想设计如下图:乐曲播放器分频查找表ROM地址发生器数控分频器图2 模块划分2.3模块描述2.3.1音乐节拍和音调发生器模块:noteabsnoteabs地址发生器模块中包含有一个4位二进制计数器(计数最大值为256)的ROM,其作为音符数据ROM的地址发生器。每来一个时钟脉冲信号(clk),4位二进制计数器就计数一次,ROM文件中的地址也就随着递增,音符数据ROM中的音符也就一个接一个连续的取出来了。在地址发生器的VHDL设计中,这个计数器的计数频率选为4Hz,即每一计数值的停留时间为0.25秒,恰为当全音符设为1秒,四四拍的4分音符持续时间。例如,地址发生器在以下的VHDL逻辑描述中,“梁祝”乐曲的第一个音符为“3”,此音在逻辑中停留了4个时钟节拍,即1秒时间。那么相应随着程序4中的计数器按4Hz的时钟频率作加法计数时,即随地址递增时,将从音符数据ROM中将连续取出4个音符“3”通过toneindex3.0端口输向分频预置数模块。这样梁祝乐曲中的音符就一个接一个的通过toneindex3.0端口输向分频预置数模块。en为noteabs模块的使能端,当en为高电平时,noteabs开始工作;xz为歌曲选择端,当xz为高电平时,选择歌曲2,反之,选择歌曲1;歌曲选择的原理即是,在ROM中不同的地址段存储不同的歌曲,当播放歌曲时选择相应的地址段;在本设计中,前中存储的为梁祝,后存储的为送别。ROM的定制:在QUARTUS|中编辑.mif文件。首先在File菜单下的New菜单上选择Text Editor File命令,进入文本编辑器,然后输入以上格式的数据文件。文件中的关键词WIDTH设置ROM的数据宽度;DEPTH设置ROM数据的深度,即4位数据的数量,文件中设置的256等效于8位地址线宽度;ADDRESS-RADIX=DEC和DATA-RADIX=DEC表示设置地址和数据的表达式格式都是十进制;地址/数据表以CONTENT BEGIN开始,以END结束;其中的地址/数据表达方式是冒号左边写ROM地址值,冒号右边写对应此地址放置的十进制数据,如46:9,表示46为地址,9为该地址中的数据。这样每读到一个地址,即可输出其相应的数据。文件编辑好后,保存时取文件名为“MUSIC.mif”,存盘的路“F:huchuanshu0905071022MUSICMUSIC.mif”。 图3noteabs实体描述 图4ROM实体描述表1ROM数据表2.3.音乐谱对应分频预制数查表电路模块:tonetaba音乐谱分频预置数模块是乐曲简谱码对应的分频预置数查表电路。它提供了每个音符所对应的分频预置数,即给数控分频模块提供计数初值。在这个模块的VHDL逻辑描述中设置了四四拍乐曲中全部音符所对应的分频预置数,共13个,每一音符的停留时间由音乐节拍和地址发生器模块的时钟(Clk)的输入频率决定,在此为4Hz。这13个值的输出由程序3的4位输入值index3.0确定。输向程序4中index3.0的值又由地址发生器模块的输出toneindex3.0的输出值和持续时间决定。模块的功能是输出各个音符所对应的分频预置数,即当index是“0000”,tone输出为2047,即休止符的分频预置数;当index是“0101”时, tone输出为1197即低音5的分频预置数;当index是“1111”时, tone输出为1728即高音1的分频预置数等等其它状态时,tone分别输出相应音符的分频预置数。图5 toneaba实体描述2.3.2音乐符数控11分频电路模块:SPEAKERA音符的频率由数控分频模块获得,这是一个数控分频电路。它是由一个初值可变的加法计数器构成。该计数器的模为2047,当计数器记满时,计数器产生一个溢出信号FULL,此溢出信号就是用作发音的频率信号。在计数器的输入端给定不同的初值,而此预置数就是表1中的计数初值,就可得到不同音符的发音频率信号。它计满时所需要的计数初值可由下式来表示。计数初值(Tone)=2047-分频系数而分频系数又可有下式来求:分频系数=基准频率/音符的发生频率低音时Tone值小,分频系数大,溢出信号周期长,扬声器发出的声音低,Tone随音乐的乐谱变化大,自动控制分频比,实现了数控分频,发生信号的频率与音调Tone成正比。这就是利用数控分频器自动演奏音乐的原理。时钟(Clk)端输入的是在十六进制模块里对12MHz的信号进行16分频得到的750KHz,750KHz的信号根据分频预置数模块中所提供的计数初值,分别得出相应音符频率的两倍值。此时从数控分频器中出来的输出信号是脉宽极窄的脉冲式信号,为了有利于驱动扬声器,需另加一个D触发器以均衡其占空比,这时的频率就变为原来的1/2,刚好就是相应音符的频率。数控分频模块中对Clk输入信号的分频比由11位预置数tone10.0决定。Fout的输出频率将决定每一个音符的音调,这样,分频计数器的预置值tone10.0与Fout的输出频率就有了对应关系。例如在分频预置数模块中若取tone10.0=1036,将发出音符为“3”音的信号频率。图6 speakera实体描述音符名频 率(Hz)分频系数计数初值音符名频 率(Hz)分频系数计数初值休止符37500002047中音4796.1784681579低音1294.3491274773中音5882.3534251622低音2330.3961135912中音6989.4463791668低音3370.9210111036中音71136.3633301717低音4386.5989701077高音11175.5493191728低音5394.7379501197高音21353.7902771770低音6495.3767571290高音31512.0972481799低音7555.566751372高音41609.4422331814中音1588.6976371410高音51802.8842081839中音2638.845871480高音62027.0271851862中音3742.5745051542高音72272.7271651882表2各个音符的频率及其对应的分频系数(基准频率375KHz)2.4顶层电路图当一个4Hz的时钟脉冲来到时,乐谱发生器模块输出一个音符数据给分频系数模块,分频系数模块输出此音符相应的分频系数,将分频系数送给数控分频器模块,当12MHz的时钟脉冲来到时,数控分频器就根据分频系数输出相应的频率(即此音符所对应的发生频率)给扬声器,扬声器就可发出对应音符的声音来.连续的4Hz的时钟脉冲就将乐谱发生器里所存储的音符数据一个接一个的送给了分频系数模块,再经过数控分频模块,最后扬声器一个接一个的发出音符数据所对应的声音来。曲子也就流畅的播放出来了,当乐曲一遍演奏完成后,乐曲发生器能自动从头开始循环演奏,按下lxz键时播放第二首歌,按下len键时停止播放歌曲。图7 顶层电路图3方案实现3.1模块仿真及实现3.1.1 tonetaba模块(1)仿真波形 本模块由VHDL程序设计(代码见附录),编译成功后选择目标芯片EP1C3T144-C8,然后进行仿真,结果如下:图8 tonetaba仿真图(2)仿真结果分析tonetaba 分频预置数模块的功能是输出各个音符所对应的分频预置数,由上面的仿真波形图可看到若当index是“0001”,tone输出为773,即低音1的分频预置数;当index是“0010”时, Tone输出为912,即低音2的分频预置数;此时high为0;当index是“1000”时, Tone输出为1410即高音1的分频预置数,此时high为1;其他情况也满足,音阶对应相应频率。3.1.2 speakera模块(1)仿真波形本模块由VHDL程序设计(代码见附录),编译成功后选择目标芯片EP1C3T144-C8,然后进行仿真,结果如下:图9 speakera仿真图(2)仿真结果分析spks的输出频率决定每一音符的音调,tone为773时对应的分频系数为1294即294.349HZ。周期为3.4ms; tone为1410时对应的分频系数为637即588.697HZ。周期为1.7ms;与波形图对照,满足该条件。3.1.3 noteaba模块(1)仿真波形 本模块由VHDL程序设计(代码见附录),编译成功后选择目标芯片EP1C3T144-C8,然后进行仿真,结果如下:图10 noteaba仿真图(2)仿真结果分析 由仿真波形可以看出当en为低电平时,无论xz为高电平还是低电平ToneIdex输出都是“0”,当xz为高电平时,根据xz的高低电平选择播放音乐,实现了选择复位功能。3.2顶层电路仿真及实现(1)仿真波形顶层电路设计是利用原理图设计的。将前面已经做好的模块进行封装入库,然后在设计顶层原理图时一一调用,在根据程序将端口一一连接,再编译。编译成功后选择目标芯片EP1C3T144-C8,然后进行仿真,结果如下:图11 顶层仿真图(2)仿真结果分析 由仿真结果可以看出,但len为低电平时,CODE1为0,这说明此时不播放音乐;当len为高电平时,code1开始变化,spkout的输出频率也开始变动,高八度音指示high1也开始变化。4硬件测试及说明(1) 引脚锁定选择实验电路模式5。先将引脚锁定,使CLK12MHZ与clock9相接;CLK8HZ与clock2相连,接受4HZ频率;发音输出SPKOUT接Speaker;与演奏发音相对应的简谱码输出显示可由CODE1在数码管5显示;HIGH1为高八度指示,可由发光管D5指示;复位键RET、选择键SEL分别接键7、键8。查表得对应引脚号如下:图12 引脚锁定图 存储这些引脚信息后,再编译一次(2)硬件测试结果分析 程序下载后,按下键7,开始从头播放音乐,再按下键6,播放第二首;再按下键7,停止播放。与预期结果一致,硬件实现结果正确。5结论通过自顶而下,层层分解,本设计已经满足了预期的实验目标。可以实现停止选择功能。但是还是有很多的不足,比如说设计还是较简单,不够实用,如果以后有时间可以把它改成电子琴。6课程总结经过这次课程设计,我对FPGA自上而下的编程方法有了更深的了解。我进一步的了解了EDA技术,应用也更加自如,这为我们将来工作打下了坚实的基础,我们用EDA技术设计并了完成乐曲硬件演奏电路,实现了硬件自动发出音乐的功能,设置了手动和自动的输入控制器,实现自动手动输入。乐曲高低音的转换随着我们设计参数的改变而得以实现, 使我们的设计有更高的广泛性和实用性。回顾此次课程设计,从书籍,网络不断的寻找到设计电路,从开始到完成整个设计,从理论到实践,可以学到很多很多的的东西。对课本知识的进一步加深的同时学到了很多在书本上没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的。把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正提高自己的实际动手能力和独立思考的能力。在设计的过程难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,通过这次课程设计之后,一定把以前所学过的知识重新温故。我对EDA的学习只能算是个入门,这个领域的发展空间非常大,应用范围也非常广泛,而且我相信在将来还会有更加广阔的应用前景。因此在以后的学习过程中,我不能因为课程学习的结束而结束了我对这个方面的学习甚至这个领域的探索,相反我会更加努力的去学习它。感谢老师兢兢业业的教导,让我不仅学到了知识,也学到了做人做事的一些道理,为我提供了很多帮助。在接下来的学习中,我会继续努力,努力扎实地学习专业知识,为以后打好铺垫,奠定基础。7附录:程序代码1、speakera.vhdLIBRARY IEEE;-音乐符数控分频电路模块USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;-运算符重载ENTITY speakera IS PORT ( clk : IN STD_LOGIC;-音调频率信号12MHZ tone : IN STD_LOGIC_VECTOR (10 DOWNTO 0);-音乐符对应分频11位 spks : OUT STD_LOGIC );-声音输出END;ARCHITECTURE one OF speakera IS SIGNAL PreCLK, FullSpkS : STD_LOGIC;BEGIN DivideCLK : PROCESS(clk) VARIABLE Count4 : STD_LOGIC_VECTOR (3 DOWNTO 0) ; BEGIN PreCLK 11 THEN PreCLK = 1; Count4 := 0000;-变量 ELSIF clkEVENT AND clk = 1 THEN Count4 := Count4 + 1; END IF; END PROCESS;GenSpkS : PROCESS(PreCLK, Tone)- 11位可预置计数器 VARIABLE Count11 : STD_LOGIC_VECTOR (10 DOWNTO 0); BEGIN IF PreCLKEVENT AND PreCLK = 1 THEN IF Count11 = 16#7FF# THEN Count11 := Tone ; FullSpkS = 1; ELSE Count11 := Count11 + 1; FullSpkS = 0; END IF; END IF;END PROCESS;DelaySpkS : PROCESS(FullSpkS)-将输出再2分频,展宽脉冲,使扬声器有足够功率发音 VARIABLE Count2 : STD_LOGIC; BEGIN IF FullSpkSEVENT AND FullSpkS = 1 THEN Count2 := NOT Count2; IF Count2 = 1 THEN spks = 1; ELSE spks tone=11111111111 ; code=0000; HIGH tone=01100000101 ; code=0001; HIGH tone=01110010000 ; code =0010; HIGH tone=10000001100 ; code =0011; HIGH tone=10010101101 ;code=0101; HIGH tone=10100001010 ; code=0110; HIGH tone=10101011100 ; code E=0111; HIGH tone=10110000010 ; code =0001; HIGH tone=10111001000 ; code =0010; HIGH tone=11000000110 ; code =0011; HIGH tone=11001010110 ; code =0101; HIGH tone=11010000100 ; code =0110; HIGH tone=11011000000 ; code =0001; HIGH NULL;END CASE;END PROCESS;END;3、notetabs.vhdLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY notetabs IS PORT (en,xz,clk : IN STD_LOGIC; ToneIndex : OUT STD_LOGIC_VECTOR (3 DOWNTO 0) );END;ARCHITECTURE one OF notetabs ISCOMPONENT MUSIC-调用MUSIC ROM的声明 PORT( address : IN STD_LOGIC_VECTOR (7 DOWNTO 0); inclock : IN STD_LOGIC ; q : OUT STD_LOGIC_VECTOR (3 DOWNTO 0);END COMPONENT; SIGNAL Counter : STD_LOGIC_VECTOR (7 DOWNTO 0); BEGIN CNT8 : PROCESS(clk, Counter) -计数器 BEGINIF en=1 THEN-复位使能端进行选择 if(clkEVENT AND clk = 1)THEN Counter=Counter+1;-计数器 IF xz=1 THEN-选择语句当ret为高电平且满足计数大于144或小于254时都播放第一首歌曲IF (Counter254) THEN Counter 138) THEN Counter = 00000001;END IF;ELSE null;END IF; end if; ELSE Counter Counter,q=toneindex,inclock=clk);end;4、songer.vhdlibrary ieee;use ieee.std_logic_1164.all;entity song
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年机动车驾驶培训行业当前竞争格局与未来发展趋势分析报告
- 2025年外卖O2O行业当前发展趋势与投资机遇洞察报告
- 支部工作手册讲解课件
- 支气管哮喘吸入剂
- 操场跑道课件
- 播音主持社团课件
- 2025年《中共中央关于全面推进依法治国若干重大问题的决定》知识考试题库及答案
- 医院基层卫生人才能力提升培训班理论考试题(附答案)
- 2025年公共管理学真题含答案
- 撞人安全知识培训内容课件
- 医学技术专业讲解
- 唯奋斗最青春+课件-2026届跨入高三第一课主题班会
- 共青团中央所属事业单位2024年度社会公开招聘笔试备考题库参考答案详解
- 2025年《分级护理制度》考试试题(及答案)
- 高中喀斯特地貌说课课件
- 气候变化与健康课件
- 公司电脑配备管理办法
- 2025年中国花盆人参行业市场发展前景及发展趋势与投资战略研究报告
- 娱乐直播培训课件下载
- 细胞生物学复习资料非常详细
- 临沂在编考试试题及答案
评论
0/150
提交评论