版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、在系统编程技术项目设计报告课程名称 在系统编程技术 任课教师 谭敏 设计题目 乐曲硬件演奏电路设计 班级 09级电子信息工程(1)班姓名学号 王闯 0905071023 成绩 日期 2012-5-28 目录1题目分析31.1 功能要求31.2 性能指标32设计方案42.1顶层实体描述42.2模块划分52.3模块描述52.3.1 speakera模块52.3.2 tonetaba模块62.3.3 notetabs模块62.4顶层电路图73方案实现73.1 notetabs模块仿真及描述73.2 tonetaba模块仿真及描述83.3 speakera模块仿真及描述83.4顶层电路仿真及描述84硬
2、件测试及说明95结论96课程总结97附录10前言:这次设计实验我做的是乐曲硬件演奏电路设计,通过在系统编程技术课程的学习,我已经学会了用vhdl语言来实现系统要求的电路设计。vhdl语言具有良好的电路行为描述和系统描述的能力,用vhdl语言进行电子系统的设计非常方便和实用,而基于vhdl的自顶向下的设计方法是其很大的一个优点。1题目分析1.1 功能要求(1)按顺序播放歌曲(3)通过按键选择性播放歌曲(3)通过led灯显示音阶1.2 性能指标(1)乐曲硬件演奏电路的基本原理乐曲都是由一连串的音符组成,每一音符对应着一个确定的频率,按照乐曲的乐谱依次输出这些音符所对应的频率,就可以在扬声器上连续地
3、发出各个音符的音调。我们知道,组成乐曲的每个音符的发音频率值及其持续的时间是乐曲能连续演奏所需的两个基本要素,所以,掌握好一首歌曲的节奏,就能完整地演奏出来。(2)音符频率和乐曲节奏多个不同频率的信号可通过对某个基准频率进行分频器获得,本设计中选取750khz的基准频率,由于clk端输入的是较高频率12mhz信号,可以对其进行16分频。计数时钟信号作为输出音符快慢的控制信号,时钟快时输出节拍速度就快,演奏的速度也就快,时钟慢时输出节拍的速度就慢,演奏的速度自然降低。简谱音符和频率关系:2设计方案自顶向下的设计框图乐曲硬件电路设计数控分频器音乐节拍和音调发生器预置数查表电路2.1顶层实体描述顶层
4、实体图当一个4hz的时钟脉冲来到时,乐谱发生器模块输出一个音符数据给分频系数模块,分频系数模块输出此音符相应的分频系数,将分频系数送给数控分频器模块,当12mhz的时钟脉冲来到时,数控分频器就根据分频系数输出相应的频率(即此音符所对应的发生频率)给扬声器,扬声器就可发出对应音符的声音来.连续的4hz的时钟脉冲就将乐谱发生器里所存储的音符数据一个接一个的送给了分频系数模块,再经过数控分频模块,最后扬声器一个接一个的发出音符数据所对应的声音来。曲子也就流畅的播放出来了,当乐曲一遍演奏完成后,乐曲发生器能自动从头开始循环演奏,按下sel键时播放第二首歌,按下rst键时从头开始播放歌曲。2.2模块划分
5、主系统由三个模块组成,分别为speakera模块、tonetaba模块、notetabs模块。(1)speakera是数控分频模块;(2)tonetaba是分频预置数查找表电路模块;(3)notetabs音调发生器模块。2.3模块描述2.3.1 speakera模块speakera模块实体图音符的频率可以由此模块获得,这是一个数控分频器,由其clk端输入一具有较高频率的信号,通过speakera分频后由spkout输出,由于直接从数控分频器中出来的输出信号是脉冲极窄的脉冲式信号,为了有利于驱动扬声器,需另加一个d触发器以均衡其占空比,但这时的频率将是原来的1/2。speakera对clk输入信
6、号的分频比由11位预置数tone10.0决定。spkout的输出频率将决定每一音符的音调,这样,分频计数器的预置值tone10.0与spkout的输出频率就有了对应关系。例如在tonetaba模块中若取tone10.0=1036,将发出音符为“3”音的信号频率。2.3.2 tonetaba模块tonetaba模块实体图音符的持续时间需根据乐曲的速度及每个音符的节拍数来确定,tonetaba的功能首先是为speakera提供决定所发音符的分频预置数,而此数在speakera输入口停留的时间即为此音符的节拍值。tonetaba模块是乐曲简谱码对应的分频预置数查找表电路,其中设置了乐曲全部音符对应的
7、分频预置数,每一个音符的停留时间由音乐节拍和音调发生器模块notetabs的clk输入频率决定。分频预置数的输出对应4位输入值index3.0确定,而当乐曲全部分频预置数不止16个时,可以用5位输入值index4.0。输向tonetaba中的index3.0的值toneindex3.0的输出值与持续的时间由notetabs模块觉定。2.3.3 notetabs模块notetabs模块实体图在notetabs中设置了一个8位二进制计数器,作为音符数据rom的地址发生器,计数最大值为138,如果乐曲比较长的话可以用9位,此时计数最大值为512。这个计数器的计数频率选为4hz,即每一计数值的停留时间
8、为0.25秒,恰为当全音符设为1秒时,四四拍的4分音符持续时间。随着notetabs中的计数器按4hz的时钟速率作加法计数时,即随地址值递增时,音符数据rom中的音符数据将从rom中通过toneindex3.0端口输向tonetaba模块,乐曲就开始自然地演奏起来。在notetabs模块中定制rom元件,首先建立.mif文件输入音乐谱,再利用megawizard plug-in manager定制rom宏功能块,最后加载于rom中,步骤为:(1)进入quartusii,选菜单 tool-megawizard plug-in manager,选择“creat a new”,然后按“next”键,
9、选择lpm-rom;最后在browse下的栏中键入路径与输出文件名。(2)单击“next”键,选择rom数据位宽度为4,地址线宽为256,即设置此rom能存储4位二进制数据共256个。(3)通过“browse” 钮,找到rom中的加载文件路径和文件名:注意rom元件的inclock是地址锁存时钟。(4)打开已定制的rom文件,将它设置为工程,并确定目标器件,进行测试仿真波形,按照定制步骤对音符数据文件进行rom定制。2.4顶层电路图顶层电路图3方案实现3.1 notetabs模块仿真及描述notetabs模块仿真图由仿真波形可以看出当ret为低电平时, tone输出的始终都是“0000”,当r
10、et为高电平时,根据 sel来选择播放音乐,实现了选择复位功能。3.2 tonetaba模块仿真及描述tonetaba模块仿真图tonetaba 分频预置数模块的功能是输出各个音符所对应的分频预置数,由上面的仿真波形图可看到若当index是“1000”,tone输出为1410,即高音1的分频预置数;当index是“1010”时, tone输出为1542即高音3的分频预置数;当index是“1001”时, tone输出为1480即高音2的分频预置数等等其它状态时,tone分别输出相应音符的分频预置数,仿真波形图是正确的。3.3 speakera模块仿真及描述speakera模块仿真图spks为输
11、出频率,由图可以看出与11位分频相对应,仿真的结果是正确的。3.4顶层电路仿真及描述顶层电路仿真图由仿真结果可以看出,但ret为低电平时,code1为“0000”,这说明此时不播放音乐;当ret为高电平时,code1开始变化,spkout的输出频率也开始变动,高八度音指示high1也开始变化。4硬件测试及说明选择实验电路模式1。引脚锁定,将clk12mhz与clock9相接,clk8hz与clock2相连,接受4hz频率,发音输出spkout接speaker,与演奏发音相对应的简谱码输出显示可由code1在数码管5显示;high1为高八度指示,可由发光管d5指示;复位键ret、选择键sel分别
12、接键7、键8。查表得对应引脚号如下:引脚锁定图程序经下载后,在硬件上,按下键7,d15灯亮,开始从头播放音乐,再按下键8,d16灯亮,播放第二首,再按下ret,d15灯灭,停止播放。此测试的结果证明了设计是正确的。5结论实验是对我们所学的知识和个人应用能力检验,更重要的是通过实验能增强学生的逻辑思维能力和锻炼独立动手能力。这次做的乐曲硬件演奏电路让我感触颇深,我从中学到了很多,不仅加深了对课本理论知识的理解,而且还学到了与课本无关的知识,了解了音乐的组成和使其演奏的几个基本要素。这次设计实验我投入了很多的精力,在实验的过程中也遇到了不懂的问题,不过在自己解决不了的时候,我请教了老师和同学,得到
13、过老师和同学的帮助,在此表示感谢。实验很快就完成了,在设计的过程中,我体会到了学习的乐趣,我喜欢接受新知识,接受新挑战,学习能让我的生活更充实。有时间我还会做其他的设计,拓展自己的知识。6课程总结eda,electronic design automation,即电子设计自动化,对以硬件描述语言为系统逻辑描述手段完成的设计文件,自动地完成逻辑编译、逻辑化简、逻辑分割、逻辑综合、结构综合,以及逻辑优化和仿真测试,直到实现电路的系统功能。eda是现代电子技术的核心,在电子技术飞速发展的今天,掌握eda技术是电子设计者和爱好者不可缺少的一部分。通过一个学期的学习,对eda技术已有了深刻的了解。用ed
14、a技术进行电子系统设计的最终目标是完成专用集成电路asic的设计和实现。现在市场上实现这一目标的主流器件是fpga和cpld,fpga是现场可编程门阵列,cpld是复杂可编程逻辑器件,它们都是使用超大规模集成电路工艺,开发效率高,成本低,工作可靠性好,所以取代了之前的简单pld而得到广泛的使用。eda技术中主要讲的是vhdl,用vhdl对电子线路进行表达和设计是eda建模和实现技术中最基本和最重要的方法。用vhdl设计电路的一个很大优点是设计者可以专心致力于其功能的实现,而不需要对不影响功能的与工艺有关的因素花费过多的时间和精力。在vhdl的各个设计方法中,自顶向下的设计方法充分体现了它的实用
15、性,自顶向下的设计方法就是在整个设计流程中个设计环节逐步求精的过程,它使系统被分为多个子模块,每个子模块可以独立设计,可以分工合作,提高了设计效率。学好eda的前提是学好vhdl语言, vhdl不仅可以作为系统模拟的建模工具,而且可以作为电路系统的设计工具,可以利用软件工具将vhdl源码自动地转化为文本方式表达的基本逻辑元件连接图,即网表文件,这种方法显然对于电路自动设计是一个极大的推进。eda技术不是短时间就能全部掌握的,在以后的学习当中,还需要对其进行温故和拓展,我相信学好这项技术在以后的工作中会有非常大的帮助。7附录(2)notetabs模块程序设计library ieee; -音乐节拍
16、和音调发生器模块use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity notetabs isport(sel:instd_logic; -选择键rst:instd_logic; -复位键clk:in std_logic; -音乐节拍时钟4hztoneindex:out std_logic_vector(3 downto 0) );end;architecture one of notetabs iscomponent music -音符数据rom1port( address:in std_logic_vector(
17、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 rst=1 then if(clkevent and clk = 1) then counter=counter+1; if sel=1 thenif (counter254) then counter 138) then counter =
18、00000001;end if; else null; end if; end if; else counter counter,q=toneindex,inclock=clk);end;(2)speakera模块源程序library ieee; -音乐符数控分频电路模块use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity speakera isport ( clk:in std_logic; -音调频率信号12mhz tone: in std_logic_vector(10 downto 0); -音乐符对应分频
19、11位 spks: out std_logic); -声音输出end;architecture one of speakera issignal preclk,fullspks :std_logic;begindivideclk:process(clk)variable count4:std_logic_vector(3 downto 0);beginpreclk 11 then preclk=1;count4:=0000;elsif clkevent and clk=1 then count4:=count4+1;end if;end process;genspks:process(prec
20、lk,tone) -11位可预置计数器variable count11:std_logic_vector (10 downto 0);beginif preclkevent and preclk=1 thenif 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;beginif fullspksevent and fullspks=1 then count2:=not count2; if count2=1 then spks=1;else spkstone=11111111111;code=0000;hightone=01100000101; code =0001; high tone=01110010000; code =0000; high tone=10000001100; code =0011; high tone=10010101101; code
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论