用QuartusII设计电子琴.docx

上传人:b****5 文档编号:4189665 上传时间:2022-11-28 格式:DOCX 页数:8 大小:205.71KB
下载 相关 举报
用QuartusII设计电子琴.docx_第1页
第1页 / 共8页
用QuartusII设计电子琴.docx_第2页
第2页 / 共8页
用QuartusII设计电子琴.docx_第3页
第3页 / 共8页
用QuartusII设计电子琴.docx_第4页
第4页 / 共8页
用QuartusII设计电子琴.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

用QuartusII设计电子琴.docx

《用QuartusII设计电子琴.docx》由会员分享,可在线阅读,更多相关《用QuartusII设计电子琴.docx(8页珍藏版)》请在冰豆网上搜索。

用QuartusII设计电子琴.docx

用QuartusII设计电子琴

 

电子设计自动化课程设计报告

 

院系:

信息工程学院

专业:

电子信息工程

学号:

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完整程序代码

modulesonger(Clk1,Clk2,Code1,High1,Spkout,reset);

inputClk1,Clk2,reset;

output[3:

0]Code1;

outputHigh1,Spkout;

wire[10:

0]Tone;

wire[3:

0]ToneIndex;

wireClk1,CLK2;

NoteTabsu1(.Clk2(Clk2),

.reset(reset),

.ToneIndex(ToneIndex));

ToneTabau2(.Index(ToneIndex),

.Code(Code1),

.High(High1),

.Tone(Tone));

Speakerau3(.Clk1(Clk1),

.Tone(Tone),

.SpkS(Spkout));

endmodule

moduleSpeakera(Clk1,Tone,SpkS);

inputClk1;

input[10:

0]Tone;

outputSpkS;

regPreClk;

regFullSpkS;

reg[3:

0]Count4;

reg[10:

0]Count11;

regCount2;

regSpkS;

always@(posedgeClk1)

begin

if(Count4>11)begin

PreClk<=1'b1;

Count4<=1;

end

elsebegin

PreClk<=1'b0;

Count4<=Count4+4'b1;

end

end

always@(posedgePreClk)begin

if(Count11>=11'h7FF)begin

Count11<=Tone;

FullSpkS<=1'b1;

end

elsebegin

Count11<=Count11+11'b1;

FullSpkS<=0;

end

end

always@(posedgeFullSpkS)begin

Count2<=~Count2;

if(Count2==1'b1)SpkS<=1'b1;

elseSpkS<=1'b0;

end

endmodule

moduleToneTaba(Index,Code,High,Tone);

input[3:

0]Index;

output[3:

0]Code;

outputHigh;

output[10:

0]Tone;

reg[3:

0]Code=0;

regHigh=0;

reg[10:

0]Tone=0;

always

begin

case(Index)

4'b0000:

beginTone<=11'b11111111111;Code<=4'b0000;High<=1'b0;end//2047

4'b0001:

beginTone<=11'b01100000101;Code<=4'b0001;High<=1'b0;end//773

4'b0010:

beginTone<=11'b01110010000;Code<=4'b0010;High<=1'b0;end//912

4'b0011:

beginTone<=11'b10000001100;Code<=4'b0011;High<=1'b0;end//1036

4'b0101:

beginTone<=11'b10010101101;Code<=4'b0101;High<=1'b0;end//1197

4'b0110:

beginTone<=11'b10100001010;Code<=4'b0110;High<=1'b0;end//1290

4'b0111:

beginTone<=11'b10101011100;Code<=4'b0111;High<=1'b0;end//1372;

4'b1000:

beginTone<=11'b10110000010;Code<=4'b0001;High<=1'b1;end//1410;

4'b1001:

beginTone<=11'b10111001000;Code<=4'b0010;High<=1'b1;end//1480;

4'b1010:

beginTone<=11'b11000000110;Code<=4'b0011;High<=1'b1;end//1542;

4'b1100:

beginTone<=11'b11001010110;Code<=4'b0101;High<=1'b1;end//1622;

4'b1101:

beginTone<=11'b11010000100;Code<=4'b0110;High<=1'b1;end//1668;

4'b1111:

beginTone<=11'b11011000000;Code<=4'b0001;High<=1'b1;end//1728;

endcase

end

endmodule

 

moduleNoteTabs(reset,Clk2,ToneIndex);

inputClk2,reset;

output[3:

0]ToneIndex;

reg[7:

0]Counter;

always@(posedgeClk2ornegedgereset)begin

if(!

reset)

Counter<=8'b00000000;

else

if(Counter>=138)Counter<=8'b00000000;

elseCounter<=Counter+8'b1;

end

endmodule

3.3程序仿真及结果

1、构建一个工程名为songer的工程

 

由于图片太多仅贴出主要步骤,下同

2、输入Speakera的Verilog文本

3、将设计的Verilog程序输入,并存盘名为Speakera.v

 

4由Processing->start->startannlysis&elaboration对程序进行初步的分析

 

依次输入各个模块进行验证,最后将所有模块输入验证,最后不知是什么原因,speakera无输出。

本次试验并没有得到所需的试验结果。

4试验小结

我在这一次电子琴的设计过程中,很是受益匪浅。

通过对自己在大学三年时间里所学的知识的回顾,并充分发挥对所学知识的理解和对毕业设计的思考及书面表达能力,最终完成了。

这为自己今后进一步深化学习,积累了一定宝贵的经验。

撰写论文的过程也是专业知识的学习过程,它使我运用已有的专业基础知识,对其进行设计,分析和解决一个理论问题或实际问题,把知识转化为能力的实际训练。

培养了我运用所学知识解决实际问题的能力。

通过这次课程设计我发现,只有理论水平提高了;才能够将课本知识与实践相整合,理论知识服务于教学实践,以增强自己的动手能力。

这个实验十分有意义我获得很深刻的经验。

通过这次课程设计,我们知道了理论和实际的距离,也知道了理论和实际想结合的重要性,,也从中得知了很多书本上无法得知的知识。

我们的学习不但要立足于书本,以解决理论和实际教学中的实际问题为目的,还要以实践相结合,理论问题即实践课题,解决问题即课程研究,学生自己就是一个专家,通过自己的手来解决问题比用脑子解决问题更加深刻。

学习就应该采取理论与实践结合的方式,理论的问题,也就是实践性的课题。

这种做法既有助于完成理论知识的巩固,又有助于带动实践,解决实际问题,加强我们的动手能力和解决问题的能力。

 

参考文献:

(五号,宋体加粗)

[1]潘松,《EDA实用教程》,科学出版社,2004年

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1