veriloghdl电子琴专业课程设计Word格式文档下载.docx
- 文档编号:13589334
- 上传时间:2022-10-11
- 格式:DOCX
- 页数:24
- 大小:138.08KB
veriloghdl电子琴专业课程设计Word格式文档下载.docx
《veriloghdl电子琴专业课程设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《veriloghdl电子琴专业课程设计Word格式文档下载.docx(24页珍藏版)》请在冰豆网上搜索。
二、研究方法及手段应用
1、将任务分成若干模块,查阅相关论文资料,分模块调试和完成任务;
2、遇到问题小组成员及时讨论得出解决方法;
3、遇到本组内解决不了的问题,及时和其他小组交流或询问老师;
4、程序仿真,仿真无问题后进行模块调试,根据实验箱上的硬件实现是否符合要求来检验程序正确与否。
三、课程设计预期效果
1、完成实验环境搭建;
2、具有手动弹奏和自动播放功能;
3、以按键(或开关)作为琴键,至少可以通过蜂鸣器输出7个音阶;
4、自动播放曲目至少两首;
摘要
简易电子琴的设计通过通过软硬件结合实现,硬件系统包括主控器芯片、9个按键、LED、蜂鸣器等,软件资源包括编写VerilogHDL程序的应用软件Modelsim和仿真软件QuartusII。
电子琴有按键代替琴键的弹奏功能和自动播放功能。
按键有七个音,自动播放功能中有三首曲子,分别是《两只老虎》、《天空之城》和《康定情歌》。
程序共有五个模块,分别为主模块、琴键模块、曲1模块、曲2模块、曲3模块。
硬件实现是用三个LED灯组合亮暗分别表示七个按键按下情况,另外两个按键用来选择曲目。
实验箱原始时钟为50MHz,分频后变成不同的频率输出,通过蜂鸣器输出不同频率的声音。
音乐的节拍通过分频变为4Hz,作为1/4拍。
通过主模块调用各模块实现电子琴的功能。
【关键词】VerilogHDL电子琴模块分频
ABSTRACT
Thisarticleintroducedthesimpleelectricpiano’sdesign.Itrealizesthroughthesoftwareandhardwareunion.Thehardwaresystemincludesadirector,9keys,LEDsandabuzzer.ThesoftwaredesignusesVerilogHDL.EmulationusesQuartusII.Itcanbroadcastthesystemestablishmentthecorrespondingnote,andcancompleteamilitarysongthebroadcast,butalsohasshowsthesoundthefunction.Designsthesimpleelectricpianotohaveinthehardware.Theprogramhassevenmodules,includingmainmodule,fractionalfrequencymoduleandsoon.Keyboardwithkeystoplaythefunctionandreplacethekeystoplayfunction.Keyhassevensound,automaticplaybackfunctionwiththreeinsong,werethetwotiger"
"
theskycity"
and"
kangdinglovesongs.Softwarehasitsmerit.ItisperfectinthesoftwareVerilogHDL.Theoriginalfrequencyisdividedintodifferentfrequencys.Thepianomakessoundbythebuzzerwithdifferentfrequencys.
【keywords】VerilogHDLelectricpianomodulefractionalfrequency
第一章系统设计
第一节课题目标及总体方案
本次项目设计课程的目标是让我们在学习VerilogHDL的基础上更加深入的理解硬件设计语言的功能、作用及其特征,并且将我们的动手能力与创新能力结合起来。
本次电子琴实验的目标是:
1、具有手动弹奏和自动播放功能;
2、以按键(或开关)作为琴键,至少可以通过蜂鸣器输出7个音阶;
3、自动播放曲目至少两首;
本次实验的方框图为:
(每个模块中都有分频)
第二节设计框图说明
一、主模块
主模块中用mm=(key8,key9)值的不同选择调用不同模块,mm=01调用曲目1模块,即bell模块;
mm=10调用曲目2模块,即bell2模块;
mm=11调用曲目3模块,即bell3模块;
而在key8与key9没有被按下的情况下,程序调用按键模块,即digital_piano模块
modulemain(inclk,outclk,key1,key2,key3,key4,key5,key6,key7,key8,key9,num);
inputinclk;
inputkey1,key2,key3,key4,key5,key6,key7,key8,key9;
outputoutclk;
output[3:
0]num;
regoutclk,clk_6M;
reg[3:
0]c;
wireout1,out2,out3,out4;
wire[8:
0]key;
reg[1:
0]mm;
assignkey={key1,key2,key3,key4,key5,key6,key7,key8,key9};
//由按键拼键为变量key
//调用子调块
digital_pianom1(.inclk(inclk),.key1(key1),.key2(key2),.key3(key3),.key4(key4),
.key5(key5),.key6(key6),.key7(key7),.beep2(out2),.num(num));
bellm2(.inclk(inclk),.beep1(out1));
bell2m3(.inclk(inclk),.beep3(out3));
bell3m4(.inclk(inclk),.beep4(out4));
always@(posedgeclk_6M)//在时钟的上升沿检测是否有按键按下
begin
if(key==9'
b111111110)
mm<
=2'
b01;
elseif(key==9'
b111111101)
b10;
b111111100)
b11;
elsemm<
b00;
end
always@(posedgeinclk)
begin
if(c<
4'
d4)
c<
=c+4'
d1;
else
begin
=4'
d0;
clk_6M=~clk_6M;
end
always@(posedgeclk_6M)
if(mm==2'
b01)
outclk<
=out1;
elseif(mm==2'
b00)
=out2;
b10)
=out3;
elseoutclk<
=out4;
end
endmodule
二、按键模块
Key1到key7对应do到si七个音,用于模拟电子琴弹奏
//digital_piano子模块
moduledigital_piano(inclk,key1,key2,key3,key4,key5,key6,key7,beep2,num);
inputinclk,key1,key2,key3,key4,key5,key6,key7;
outputbeep2;
wire[6:
0]key_code;
regclk_6M;
regbeep_r;
reg[15:
0]count;
0]count_end;
parameterDo=7'
b1111110,//状态机的7个编码,分别对应中音的7个音符
re=7'
b1111101,
mi=7'
b1111011,
fa=7'
b1110111,
so=7'
b1101111,
la=7'
b1011111,
si=7'
b0111111;
assignkey_code={key7,key6,key5,key4,key3,key2,key1};
assignbeep2=beep_r;
//输出音乐
always@(posedgeclk_6M)//分频模块,得出乐谱
count<
=count+16'
//计数器加1
if(count==count_end)
count<
=16'
//计数器清零
beep_r<
=!
beep_r;
always@(posedgeclk_6M)//状态机,根据按键状态,选择不同的音符输出
case(key_code)
Do:
count_end<
=16'
d11450;
re:
d10204;
mi:
d09090;
fa:
d08571;
so:
d07802;
la:
d06802;
si:
d06060;
default:
count_end<
endcase
always@(posedgeclk_6M)
num<
b0001;
b0010;
b0011;
b0100;
b0101;
b0110;
b0111;
二、曲目1模块
//
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- veriloghdl 电子琴 专业课程 设计
![提示](https://static.bdocx.com/images/bang_tan.gif)