用QuartusII设计电子琴文档格式.docx
- 文档编号:17105671
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:8
- 大小:205.71KB
用QuartusII设计电子琴文档格式.docx
《用QuartusII设计电子琴文档格式.docx》由会员分享,可在线阅读,更多相关《用QuartusII设计电子琴文档格式.docx(8页珍藏版)》请在冰豆网上搜索。
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:
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
b0;
=Count4+4'
always@(posedgePreClk)begin
if(Count11>
=11'
h7FF)begin
Count11<
=Tone;
FullSpkS<
=Count11+11'
=0;
end
always@(posedgeFullSpkS)begin
Count2<
=~Count2;
if(Count2==1'
b1)SpkS<
elseSpkS<
end
moduleToneTaba(Index,Code,High,Tone);
input[3:
0]Index;
0]Code;
outputHigh;
output[10:
0]Code=0;
regHigh=0;
0]Tone=0;
always
begin
case(Index)
4'
b0000:
beginTone<
b11111111111;
Code<
=4'
b0000;
High<
end//2047
b0001:
b01100000101;
b0001;
end//773
b0010:
b01110010000;
b0010;
end//912
b0011:
b10000001100;
b0011;
end//1036
b0101:
b10010101101;
b0101;
end//1197
b0110:
b10100001010;
b0110;
end//1290
b0111:
b10101011100;
b0111;
end//1372;
b1000:
b10110000010;
end//1410;
b1001:
b10111001000;
end//1480;
b1010:
b11000000110;
end//1542;
4'
b1100:
b11001010110;
end//1622;
b1101:
b11010000100;
end//1668;
b1111:
b11011000000;
end//1728;
endcase
moduleNoteTabs(reset,Clk2,ToneIndex);
inputClk2,reset;
reg[7:
0]Counter;
always@(posedgeClk2ornegedgereset)begin
if(!
reset)
Counter<
=8'
b00000000;
else
if(Counter>
=138)Counter<
=8'
elseCounter<
=Counter+8'
3.3程序仿真及结果
1、构建一个工程名为songer的工程
由于图片太多仅贴出主要步骤,下同
2、输入Speakera的Verilog文本
3、将设计的Verilog程序输入,并存盘名为Speakera.v
4由Processing->
start->
startannlysis&
elaboration对程序进行初步的分析
依次输入各个模块进行验证,最后将所有模块输入验证,最后不知是什么原因,speakera无输出。
本次试验并没有得到所需的试验结果。
4试验小结
我在这一次电子琴的设计过程中,很是受益匪浅。
通过对自己在大学三年时间里所学的知识的回顾,并充分发挥对所学知识的理解和对毕业设计的思考及书面表达能力,最终完成了。
这为自己今后进一步深化学习,积累了一定宝贵的经验。
撰写论文的过程也是专业知识的学习过程,它使我运用已有的专业基础知识,对其进行设计,分析和解决一个理论问题或实际问题,把知识转化为能力的实际训练。
培养了我运用所学知识解决实际问题的能力。
通过这次课程设计我发现,只有理论水平提高了;
才能够将课本知识与实践相整合,理论知识服务于教学实践,以增强自己的动手能力。
这个实验十分有意义我获得很深刻的经验。
通过这次课程设计,我们知道了理论和实际的距离,也知道了理论和实际想结合的重要性,,也从中得知了很多书本上无法得知的知识。
我们的学习不但要立足于书本,以解决理论和实际教学中的实际问题为目的,还要以实践相结合,理论问题即实践课题,解决问题即课程研究,学生自己就是一个专家,通过自己的手来解决问题比用脑子解决问题更加深刻。
学习就应该采取理论与实践结合的方式,理论的问题,也就是实践性的课题。
这种做法既有助于完成理论知识的巩固,又有助于带动实践,解决实际问题,加强我们的动手能力和解决问题的能力。
参考文献:
(五号,宋体加粗)
[1]潘松,《EDA实用教程》,科学出版社,2004年
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- QuartusII 设计 电子琴