数电EDA简易电子琴Verilog设计.docx

上传人:b****2 文档编号:2074244 上传时间:2023-05-02 格式:DOCX 页数:11 大小:83.52KB
下载 相关 举报
数电EDA简易电子琴Verilog设计.docx_第1页
第1页 / 共11页
数电EDA简易电子琴Verilog设计.docx_第2页
第2页 / 共11页
数电EDA简易电子琴Verilog设计.docx_第3页
第3页 / 共11页
数电EDA简易电子琴Verilog设计.docx_第4页
第4页 / 共11页
数电EDA简易电子琴Verilog设计.docx_第5页
第5页 / 共11页
数电EDA简易电子琴Verilog设计.docx_第6页
第6页 / 共11页
数电EDA简易电子琴Verilog设计.docx_第7页
第7页 / 共11页
数电EDA简易电子琴Verilog设计.docx_第8页
第8页 / 共11页
数电EDA简易电子琴Verilog设计.docx_第9页
第9页 / 共11页
数电EDA简易电子琴Verilog设计.docx_第10页
第10页 / 共11页
数电EDA简易电子琴Verilog设计.docx_第11页
第11页 / 共11页
亲,该文档总共11页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

数电EDA简易电子琴Verilog设计.docx

《数电EDA简易电子琴Verilog设计.docx》由会员分享,可在线阅读,更多相关《数电EDA简易电子琴Verilog设计.docx(11页珍藏版)》请在冰点文库上搜索。

数电EDA简易电子琴Verilog设计.docx

数电EDA简易电子琴Verilog设计

 

数字电子技术课程设计

--简易电子琴设计

专业班级:

电子

姓名:

学号:

日期:

2015.6.5

一、设计任务

用VerilogHDL语言设计简易电子琴。

(1)单独从左至右按下S1-S7每个按键后能够各自对应发出“哆来咪发唆啦西”的音乐声;

(2)按下最右边按键(S8),同时再配合按下S1-S7键后,发高八度的对应音;

(3)按键需要进行“消抖”处理;

(4)外部输入脉冲信号频率为1mhz;

(5)扩展要求:

自主设计(增加低8度功能)。

二、实验目的

1、学习verilogHDL语言的基本运用,能够利用其进行简单编程;

2、学习使用QuartusⅡ7.0的基本操作,能够利用其进行简单的设计;

3、结合实践加深对理论知识的理解。

三、设计原理

1)喇叭的振动频率不同,导致产生不同的声音;振动频率越低,声音越低沉,振动频率越高,声音越尖锐。

题目中音乐基本音的“哆”对应频率为523Hz、“来”对应频率为587Hz、“咪”对应频率为659Hz、“发”对应频率为698Hz、“唆”对应频率为784Hz、“啦”对应频率为880Hz、“西”对应频率为998Hz。

低8度音:

基本音频率/2,例如低音1的频率为523/2=261.5Hz。

高8度音:

基本音频率×2,例如高音1的频率为523×2=1046Hz.。

不同的频率产生利用给定的时钟脉冲来进行分频实现。

(2)消抖的原理:

按键默认输入逻辑‘1’,当有按键按下时对应的输入为逻辑

‘0’(但会存在抖动),当FPGA开始检测到该引脚从‘1’变为‘0’后开始定时(按键抖动时间大约10ms),定时时间结束后若该引脚仍然为‘0’则表示确实发生按键按下,否则视为抖动而不予以理会;按键松开过程的消抖处理和按下时原理一样。

(3)原理框图

四、程序设计

消抖模块

modulexiaodou(key_in,key_out,clk);

inputkey_in;

inputclk;

outputkey_out;

regkey_out;

reg[2:

0]presta;

integerq;

parameters0=3'b000,

s1=3'b001,

s2=3'b010,

s3=3'b011,

s4=3'b100,

s5=3'b101,

s6=3'b110,

s7=3'b111;

always@(posedgeclk)

begin

case(presta)

s0:

begin

key_out<=0;

q<=0;

if(key_in==1)

presta<=s0;

else

presta<=s1;

end

s1:

begin

key_out<=0;

if(q>9999)

presta<=s2;

else

q<=q+1;

end

s2:

begin

key_out<=0;

q<=0;

if(key_in==1)

presta<=s0;

else

presta<=s3;

end

s3:

begin

key_out<=1;

q<=0;

if(key_in==0)

presta<=s3;

else

presta<=s4;

end

s4:

begin

key_out<=1;

if(q>44444)

presta<=s5;

else

q<=q+1;

end

s5:

begin

q<=0;

if(key_in==1)

presta<=s0;

else

presta<=s3;

end

s6:

begin

presta<=s0;

end

s7:

begin

presta<=s0;

end

endcase

end

endmodule

按键模块

moduleanjian(a,b,c,d,e,f,g,h,i,qout);

inputa,b,c,d,e,f,g,h,i;

output[10:

0]qout;

reg[8:

0]q;

reg[10:

0]qout;

always@(aorborcordoreorforgorhori)

begin

q[0]=i;

q[1]=h;

q[2]=g;

q[3]=f;

q[4]=e;

q[5]=d;

q[6]=c;

q[7]=b;

q[8]=a;

end

always@(q)

begin

case(q)

9'b100000000:

qout<=11'b01110111100;

9'b010000000:

qout<=11'b01101010011;

9'b001000000:

qout<=11'b01011110111;

9'b000100000:

qout<=11'b01011001100;

9'b000010000:

qout<=11'b01001111110;

9'b000001000:

qout<=11'b01000111000;

9'b000000100:

qout<=11'b00111110101;

9'b100000010:

qout<=11'b00111011110;

9'b010000010:

qout<=11'b00110101010;

9'b001000010:

qout<=11'b00101111011;

9'b000100010:

qout<=11'b00101100110;

9'b000010010:

qout<=11'b00100111111;

9'b000001010:

qout<=11'b00100011100;

9'b000000110:

qout<=11'b00011111011;

9'b100000001:

qout<=11'b11101111000;

9'b010000001:

qout<=11'b11010100110;

9'b001000001:

qout<=11'b10111101110;

9'b000100001:

qout<=11'b10110011000;

9'b000010001:

qout<=11'b10011111100;

9'b000001001:

qout<=11'b10001110000;

9'b000000101:

qout<=11'b01111101010;

9'b000000011:

qout<=11'b00000000000;

9'b000000001:

qout<=11'b00000000000;

9'b000000000:

qout<=11'b00000000000;

9'b000000010:

qout<=11'b00000000000;

default:

qout<=qout;

endcase

end

endmodule

分频模块

modulefenpin(clk_1M,yuzhi,pl_out);

inputclk_1M;

input[10:

0]yuzhi;

reg[10:

0]q;

outputpl_out;

regpl_out;

always@(posedgeclk_1M)

begin

if(yuzhi>0)

begin

if(q

begin

q<=q+1;

pl_out<=0;

end

else

begin

q<=11'b00000000000;

pl_out<=1;

end

end

else

begin

q<=11'b00000000000;

pl_out<=1;

end

end

endmodule

五、原理图及仿真波形图

六、心得体会

由于之前对本次设计所需知识了解较少,所以在实验过程中遇到了很多的困难,真的很难,但是同样在解决各种困难的过程中也有所收获。

从书本上获得的知识跟实践之间具有很大的差距,这要求我们要加强锻炼自己的实际操作能力。

首先,在课程设计之前,要先了解我们要完成什么功能,否则做的任何努力都是无用功。

其次,,在编写程序过程中,要有耐心,端正态度,积极思考,认真对待。

另外,

遇到问题首先要自己思考,但是实在无法解决的时候一定要细心地向别人请教或是在网上查找资料。

最后要对自己之前的操作和执行进行纠错和总结经验,提升自己。

在以后的学习中要注意培养自主学习的能力和文献查阅的能力,以及很重要的动手能力。

 

如有侵权请联系告知删除,感谢你们的配合!

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

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2