网站大量收购闲置独家精品文档,联系QQ:2885784924

用Quartus_I设计子琴用Quartus_I设计电子琴.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
用Quartus_I设计子琴用Quartus_I设计电子琴

电子设计自动化课程设计报告 院 系: 信息工程学院 专 业: 电子信息工程 学 号: 200811014 姓 名: 张晓坡 同 组 人: 孙成、吴杲 指导教师:段美霞、袁胜、张晓华 2011 年12月29日 目 录 1.设计题目…………………………………………………3 2设计任务及目的…………………………………………3 3程序设计 3.1硬件电子琴电路模块设计………………………4 3.2完整程序代码……………………………………5 3.3程序仿真及结果…………………………………8 4总结体会…………………………………………………9 用Quartus_II设计电子琴 1.设计题目:用Quartus_II设计电子琴 2.设计任务及要求: (1)设计一个八音电子琴。 (2)由键盘输入控制音响,同时可自动演奏乐曲。 (3)用户可以将自己编制的乐曲存入电子琴,演奏时可选择键盘输入乐曲或者已存入的乐曲。 3.程序设计 3.1硬件电子琴模块设计 系统由数控分频器和乐曲存储模块组成。数控分频器对FPGA的基准频率进行分频,得到与各个音阶对应的频率输出。乐曲存储模块产生节拍控制和音阶选择信号,即在此模块中可存放一个乐曲曲谱真值表,由一个计数器来控制此真值表的输出,而由计数器的计数时钟信号作为乐曲节拍控制信号。 (1)模块Speaker 模块Speaker中的主要电路是一个数控分频器,它由一个初值可预置的加法计数器构成,当模块Speaker由端口Tone获得一个2进制数后,将以此值为计数器的预置数,对端口Clk12MHZ输入的频率进行分频,之后由Spkout向扬声器输出发声。 (2)模块TONE 模块Tone是音阶发生器,当8位发声控制输入Index中某一位为高电平时,则对应某一音阶的数值将从端口Tone输出,作为获得该音阶的分频预置值;同时由Code输出对应该音阶简谱的显示数码,如‘5’,并由High输出指示音阶高8度显示。 在原设计的基础上,增加一个Notetabs模块用于产生节拍控制(Index数据存留时间)和音阶选择信号,即在Notetabs模块放置一个乐曲曲谱真值表,由一个计数器的计数值来控制此真值表的输出,而由此计数器的计数时钟信号作为乐曲节拍控制信号,从而可以设计出一个纯硬件的乐曲自动演奏电路。 3.2完整程序代码 module songer(Clk1,Clk2,Code1,High1,Spkout,reset); input Clk1,Clk2,reset; output[3:0] Code1; output High1,Spkout; wire[10:0] Tone; wire[3:0] ToneIndex; wire Clk1,CLK2; NoteTabs u1( .Clk2(Clk2), .reset(reset), .ToneIndex(ToneIndex) ); ToneTaba u2( .Index(ToneIndex), .Code(Code1), .High(High1), .Tone(Tone) ); Speakera u3( .Clk1(Clk1), .Tone(Tone), .SpkS(Spkout) ); endmodule module Speakera(Clk1,Tone,SpkS); input Clk1; input[10:0] Tone; output SpkS; reg PreClk; reg FullSpkS; reg[3:0] Count4; reg[10:0]Count11; reg Count2; reg SpkS; always@(posedge Clk1) begin if(Count411)begin PreClk=1b1; Count4=1; end else begin PreClk=1b0; Count4=Count4+4b1; end end always@(posedge PreClk)begi

您可能关注的文档

文档评论(0)

zyongwxiaj8 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档