版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数字电子技术课程设计报告基于verilogHDL语言的简易电子琴设计学院:__信息与控制工程学院________专业班级:___电气11级四班______________姓名:___商玉玺________________________学号:___11053421_____________________指导教师:___________________________________
一、实验目的1、学习verilogHDL语言的基本运用,能够利用其进行简单编程;2、学习使用QuartusⅡ7.0的基本操作,能够利用其进行简单的设计;3、结合实践加深对理论知识的理解。二、设计题目用verilogHDl语言设计简易电子琴。三、题目要求(1)单独从左至右按下S1-S7每个按键后能够各自对应发出“哆来咪发唆啦西”的音乐声;(2)按下最右边按键(S8),同时再配合按下S1-S7键后,发高八度的对应音;(3)按键需要进行“消抖”处理;(4)外部输入脉冲信号频率为1mhz;(5)扩展要求:自主设计(增加低8度功能,自动播放一段音乐)。四、设计原理(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)原理框图四、管脚对应表信号名称对应FPGA管脚名说明1MHzL2基准时钟OUF3音频输出S1F8基本功能按键S2A14S3F10S4B16S5F12S6B17S7F15S8B18BT1M1扩展功能按键BT2M2BT3U12BT4U11五、实验过程1、设计按键防抖模块(1)设计程序modulexiaodou(rst,clk_1M,out); inputclk_1M; inputrst; outputout; wirerst; regout; reg[24:0]cnt; reg[2:0]state; parameterstate0=3'b000, state1=3'b001, state2=3'b010, state3=3'b011, state4=3'b100, state5=3'b101; always@(posedgeclk_1M) begin cnt<=24'd0; case(state) state0:if(!rst) begin out=0; state<=state1; end else state<=state0; state1:begin out=0; cnt<=cnt+1; if(cnt==10000) state<=state2; else begin //out=1; state<=state1; end end state2:if(!rst) state<=state3; else state<=state0; state3:if(!rst) begin out=1; cnt<=0; //state<=state3; end else state<=state4; state4:begin cnt<=cnt+1; if(cnt==200000) begin out=1; state<=state5; end else begin out=1; state<=state4; end end state5:if(rst) begin out=0; state<=state0; end else state<=state3; endcase endendmodule(2)原理图及仿真波形2、按键识别模块设计(1)程序设计modulexkey(a,b,c,d,e,f,g,h,l,qout);inputa,b,c,d,e,f,g,h,l;outputqout;reg[8:0]qin;reg[4:0]qout;always@(aorborcordoreorforgorhorl)beginqin[8]=a;qin[7]=b;qin[6]=c;qin[5]=d;qin[4]=e;qin[3]=f;qin[2]=g;qin[1]=h;qin[0]=l;endalways@(qin)begincase(qin)9'b100000000:qout<=5'b00001;9'b010000000:qout<=5'b00010; 9'b001000000:qout<=5'b00011;9'b000100000:qout<=5'b00100;9'b000010000:qout<=5'b00101;9'b000001000:qout<=5'b00110;9'b000000100:qout<=5'b00111;9'b100000010:qout<=5'b01000;9'b010000010:qout<=5'b01001;9'b001000010:qout<=5'b01010;9'b000100010:qout<=5'b01011;9'b000010010:qout<=5'b01100;9'b000001010:qout<=5'b01101;9'b000000110:qout<=5'b01110;9'b100000001:qout<=5'b01111;9'b010000001:qout<=5'b10000;9'b001000001:qout<=5'b10001;9'b000100001:qout<=5'b10010;9'b000010001:qout<=5'b10011;9'b000001001:qout<=5'b10100;9'b000000101:qout<=5'b10101;9'b000000000:qout<=5'b00000;9'b000000010:qout<=5'b00000;9'b000000001:qout<=5'b00000;default:qout<=0;endcaseendendmodule(2)原理图及仿真波形3、分频器模块的设计(1)程序设计modulefenpin(in,clk_1M,out);inputin;inputclk_1M;outputout;wire[4:0]in;regout;reg[11:0]count;reg[4:0]state;initialcount<=12'd0; parameterstate0=5'b00000, state1=5'b00001, state2=5'b00010, state3=5'b00011, state4=5'b00100, state5=5'b00101, state6=5'b00110, state7=5'b00111, state8=5'b01000, state9=5'b01001, state10=5'b01010, state11=5'b01011, state12=5'b01100, state13=5'b01101, state14=5'b01110, state15=5'b01111, state16=5'b10000, state17=5'b10001, state18=5'b10010, state19=5'b10011, state20=5'b10100, state21=5'b10101, state22=5'b10110;always@(posedgeclk_1M)begin case(state)state0: begin //if(allin==5'b10110) //state<=state0; if(in==5'b00001) state<=state1; elseif(in==5'b00010) state<=state2; elseif(in==5'b00011) state<=state3; elseif(in==5'b00100) state<=state4; elseif(in==5'b00101) state<=state5; elseif(in==5'b00110) state<=state6; elseif(in==5'b00111) state<=state7; elseif(in==5'b01000) state<=state8; elseif(in==5'b01001) state<=state9; elseif(in==5'b01010) state<=state10; elseif(in==5'b01011) state<=state11; elseif(in==5'b01100) state<=state12; elseif(in==5'b01101) state<=state13; elseif(in==5'b01110) state<=state14; elseif(in==5'b01111) state<=state15; elseif(in==5'b10000) state<=state16; elseif(in==5'b10001) state<=state17; elseif(in==5'b10010) state<=state18; elseif(in==5'b10011) state<=state19; elseif(in==5'b10100) state<=state20; elseif(in==5'b10101) state<=state21; elseif(in==5'b00000) state<=state22; else state<=state0; end state1: begin if(count<=956) begin begin count=count+12'd1; end if(in==5'b00001) state<=state1; else begin out=0; state<=state0; end end else begin begin out=~out; count=0; end if(in==5'b00001) state<=state1; else begin out=0; state<=state0; end end endstate2:beginif(count<=852)beginbegincount=count+12'd1;endif(in==5'b00010)state<=state2;elsebeginout=0;state<=state0;endend elsebeginbeginout=~out;count=0;endif(in==5'b00010)state<=state2;elsebeginout=0;state<=state0;endendendstate3:beginif(count<=759)beginbegincount=count+12'd1;endif(in==5'b00011)state<=state3;elsebeginout=0;state<=state0;endend elsebeginbeginout=~out;count=0;endif(in==5'b00011)state<=state3;elsebeginout=0;state<=state0;endendendstate4:beginif(count<=716)beginbegincount=count+12'd1;endif(in==5'b00100)state<=state4;elsebeginout=0;state<=state0;endend elsebeginbeginout=~out;count=0;endif(in==5'b00100)state<=state4;elsebeginout=0;state<=state0;endendendstate5:beginif(count<=638)beginbegincount=count+12'd1;endif(in==5'b00101)state<=state5;elsebeginout=0;state<=state0;endend elsebeginbeginout=~out;count=0;endif(in==5'b00101)state<=state5;elsebeginout=0;state<=state0;endendendstate6:beginif(count<=568)beginbegincount=count+12'd1;endif(in==5'b00110)state<=state6;elsebeginout=0;state<=state0;endend elsebeginbeginout=~out;count=0;endif(in==5'b00110)state<=state6;elsebeginout=0;state<=state0;endendendstate7:beginif(count<=501)beginbegincount=count+12'd1;endif(in==5'b00111)state<=state7;elsebeginout=0;state<=state0;endend elsebeginbeginout=~out;count=0;endif(in==5'b00111)state<=state7;elsebeginout=0;state<=state0;endendendstate8:beginif(count<=478)beginbegincount=count+12'd1;endif(in==5'b01000)state<=state8;elsebeginout=0;state<=state0;endend elsebeginbeginout=~out;count=0;endif(in==5'b01000)state<=state8;elsebeginout=0;state<=state0;endendendstate9:beginif(count<=426)beginbegincount=count+12'd1;endif(in==5'b01001)state<=state9;elsebeginout=0;state<=state0;endend elsebeginbeginout=~out;count=0;endif(in==5'b01001)state<=state9;elsebeginout=0;state<=state0;endendendstate10:beginif(count<=380)beginbegincount=count+12'd1;endif(in==5'b01010)state<=state10;elsebeginout=0;state<=state0;endend elsebeginbeginout=~out;count=0;endif(in==5'b01010)state<=state10;elsebeginout=0;state<=state0;endendendstate11:beginif(count<=358)beginbegincount=count+12'd1;endif(in==5'b01011)state<=state11;elsebeginout=0;state<=state0;endend elsebeginbeginout=~out;count=0;endif(in==5'b01011)state<=state11;elsebeginout=0;state<=state0;endendendstate12:beginif(count<=319)beginbegincount=count+12'd1;endif(in==5'b01100)state<=state12;elsebeginout=0;state<=state0;endend elsebeginbeginout=~out;count=0;endif(in==5'b01100)state<=state12;elsebeginout=0;state<=state0;endendendstate13:beginif(count<=284)beginbegincount=count+12'd1;endif(in==5'b01101)state<=state13;elsebeginout=0;state<=state0;endend elsebeginbeginout=~out;count=0;endif(in==5'b01101)state<=state13;elsebeginout=0;state<=state0;endendendstate14:beginif(count<=251)beginbegincount=count+12'd1;endif(in==5'b01110)state<=state14;elsebeginout=0;state<=state0;endend elsebeginbeginout=~out;count=0;endif(in==5'b01110)state<=state14;elsebeginout=0;state<=state0;endendendstate15:beginif(count<=1912)beginbegincount=count+12'd1;endif(in==5'b01111)state<=state15;elsebeginout=0;state<=state0;endend elsebeginbeginout=~out;count=0;endif(in==5'b01111)state<=state15;elsebeginout=0;state<=state0;endendendstate16:beginif(count<=1704)beginbegincount=count+12'd1;endif(in==5'b10000)state<=state16;elsebeginout=0;state<=state0;endend elsebeginbeginout=~out;count=0;endif(in==5'b10000)state<=state16;elsebeginout=0;state<=state0;endendendstate17:beginif(count<=1518)beginbegincount=count+12'd1;endif(in==5'b10001)state<=state17;elsebeginout=0;state<=state0;endend elsebeginbeginout=~out;count=0;endif(in==5'b10001)state<=state17;elsebeginout=0;state<=state0;endendendstate18:beginif(count<=1432)beginbegincount=count+12'd1;endif(in==5'b10010)state<=state18;elsebeginout=0;state<=state0;endend elsebeginbeginout=~out;count=0;endif(in==5'b10010)state<=state18;elsebeginout=0;state<=state0;endendendstate19:beginif(count<=1276)beginbegincount=count+12'd1;endif(in==5'b10011)state<=state19;elsebeginout=0;state<=state0;endend elsebeginbeginout=~out;count=0;endif(in==5'b10011)state<=state19;elsebeginout=0;state<=state0;endendendstate20:beginif(count<=1136)beginbegincount=count+12'd1;endif(in==5'b10100)state<=state20;elsebeginout=0;state<=state0;endend elsebeginbeginout=~out;count=0;endif(in==5'b10100)state<=state20;elsebeginout=0;state<=state0;endendendstate21:beginif(count<=1002)beginbegincount=count+12'd1;endif(in==5'b10101)state<=state21;elsebeginout=0;state<=state0;endend elsebeginbeginout=~out;count=0;endif(in==5'b10101)state<=state21;elsebeginout=0;state<=state0;endendendstate22:beginout=0;state<=state0;endendcaseendendmodule(2)原理图及仿真波形4、自动播放模块(1)程序设计modulehuanlesong(in,clk_1M,o1,o2,o3,o4,o5,o6,o7,o8,o9);inputin,clk_1M;outputo1,o2,o3,o4,o5,o6,o7,o8,o9;rego1,o2,o3,o4,o5,o6,o7,o8,o9;reg[18:0]q;reg[6:0]n;always@(posedgeclk_1M)if(in==0) begin o1=0;o2=0;o3=0;o4=0;o5=0;o6=0;o7=0;o8=0;o9=0; q=q+1;if(q=='d200000)beginq='b0;n=n+1;end case(n) 'd1:o3=1; 'd2:o3=1; 'd3:o4=1; 'd4:o5=1; 'd5:o5=1; 'd6:o4=1; 'd7:o3=1; 'd8:o2=1; 'd9:o1=1; 'd10:o1=1; 'd11:o2=1; 'd12:o3=1; 'd13:o3=1; 'd14:o2=1; 'd15:o2=1; 'd16:begino1=0;o2=0;o3=0;o4=0;o5=0;o6=0;o7=0;o8=0;o9=0;end 'd17:o3=1; 'd18:o3=1; 'd19:o4=1; 'd20:o5=1; 'd21:o5=1; 'd22:o4=1; 'd23:o3=1; 'd24:o2=1; 'd25:o1=1; 'd26:o1=1; 'd27:o2=1; 'd28:o3=1; 'd29:o2=1; 'd30:o1=1; 'd31:o1=1; 'd32:begino1=0;o2=0;o3=0;o4=0;o5=0;o6=0;o7=0;o8=0;o9=0;end 'd33:o2=1; 'd34:o2=1; 'd35:o3=1; 'd36:o1=1; 'd37:o2=1; 'd38:o3=1; 'd39:o3=1; 'd40:o1=1; 'd41:o2=1; 'd42:o3=1; 'd43:o3=1; 'd44:o2=1; 'd45:o1=1; 'd46:o2=1; 'd47:begino9=1;o5=1;end 'd48:o1=1; 'd49:o3=1; 'd50:o3=1; 'd51:o4=1; 'd52:o5=1; 'd53:o5=1; 'd54:o4=1; 'd55:o3=1; 'd56:o2=1; 'd57:o1=1; 'd58:o1=1; 'd59:o2=1; 'd60:o3=1; 'd61:o2=1; 'd62:o1=1; 'd63:o1=1; 'd64:begino1=0;o2=0;o3=0;o4=0;o5=0;o6=0;o7=0;o8=0;o9=0;end 'd65:n=0; endcase endendmodule(2)原理图及仿真波形5、二选一模块设计(1)程序设计modulexza(in,k1,k2,clk_1M,out);inputin,k1,k2,clk_1M;outputout;regout;/*initialbegink1=1;k2=1;out=0;end*/always@(posedgeclk_1M)begin if(in==0) out<=k2; else out<=k1;endendmodule(2)原理图及仿真波形6、电子琴设计原理图六、心得体会虽然只有短短五天的课程设计,但是在解决各种困难的过程中也有所收获。首先,在课程设计之前应该做好预习,最少知道要做什么,怎么做,做到有一个大致的思路,只有知己知彼方能百战百胜;而后在课程设计一开始就应该积极调整心态,端正态度,认真听老师的讲解和要求,积极思考,不能因为在机房就分心;接着在课程设计的时候就应该集中精力,理清思路,认真编写程序,在编写的过程中难免遇到许多错误,不管是verilogHDl语法的问题还是QuartusⅡ7.0软件的使用问题,积极询问老师,达到站在巨人的肩膀上的效果,同时可以积极和周围同学交流一些心得体会,切忌闭门造车,事倍功半。在设计过程中更应该排除杂念,不要抱侥幸心理,要实事求是脚踏实地的一步一步做下去,因为整个工程包含的模块至少有两个,哪一个模块出问题都会导致得不到结果,所以出现问题,结果不理想必须要及时解决,不能向后拖,而且在测试的时候尽量接近真实情况,不能因为仿真花费的时间长,就简单测试这也会为后来的工作埋下隐患,比如我在设计分频器的过程中一味求快,在测试的时候只加了让他输出中音“哆”的音,结果是正确的,但是后来在组合电路后结果无论加什么条件只是输出“哆”的音,只能再改程序,一步一步从头开始;另外设计最好是自己完成,不要照抄照搬别人的,自己的能力的不到提升也是不尊重别人的劳动成果,更是对课程涉及的亵渎。在别人早早就完成设计后,我们应该寻求技术上的帮助而不是寻求结果。设计过程中要平心静气,戒骄戒躁,有时候可能就是没有思路,要学调整自己。课程设计过程中一次又一次的建工程,建verilog文件,bdf原理图文件,和vwf仿真波形图文件,一遍遍地仿真,基本能够熟练掌握Quartus的基本操作,对verilog语言从认识到使用虽然历经坎坷,但是只有这样才会有深刻的记忆,虽然仍旧有许多问题依旧是自己不了解和不能解决的,但会在以后的学习中继续努力;本次课程设计的各个模块中,分频模块和自动谱曲模块依旧不能让人满意,分频模块由于在计数延时分频过程中夹杂着判断,所以不能很好的通过所设的数字达到理想的频率,而自动谱曲模块本来就是参考的别人的程序,在拿来自己使用的时候依旧不能实现长短音,而且在自己用的时候由于计数太小以至于不发不发的频率太快,难以分辨。但总体来说,课程设计还是取得了一定成果。最后谢谢老师的帮助和指导基于C8051F单片机直流电动机反馈控制系统的设计与研究基于单片机的嵌入式Web服务器的研究MOTOROLA单片机MC68HC(8)05PV8/A内嵌EEPROM的工艺和制程方法及对良率的影响研究基于模糊控制的电阻钎焊单片机温度控制系统的研制基于MCS-51系列单片机的通用控制模块的研究基于单片机实现的供暖系统最佳启停自校正(STR)调节器单片机控制的二级倒立摆系统的研究基于增强型51系列单片机的TCP/IP协议栈的实现基于单片机的蓄电池自动监测系统基于32位嵌入式单片机系统的图像采集与处理技术的研究基于单片机的作物营养诊断专家系统的研究基于单片机的交流伺服电机运动控制系统研究与开发基于单片机的泵管内壁硬度测试仪的研制基于单片机的自动找平控制系统研究基于C8051F040单片机的嵌入式系统开发基于单片机的液压动力系统状态监测仪开发模糊Smith智能控制方法的研究及其单片机实现一种基于单片机的轴快流CO〈,2〉激光器的手持控制面板的研制基于双单片机冲床数控系统的研究基于CYGNAL单片机的在线间歇式浊度仪的研制基于单片机的喷油泵试验台控制器的研制基于单片机的软起动器的研究和设计基于单片机控制的高速快走丝电火花线切割机床短循环走丝方式研究基于单片机的机电产品控制系统开发基于PIC单片机的智能手机充电器基于单片机的实时内核设计及其应用研究基于单片机的远程抄表系统的设计与研究基于单片机的烟气二氧化硫浓度检测仪的研制基于微型光谱仪的单片机系统单片机系统软件构件开发的技术研究基于单片机的液体点滴速度自动检测仪的研制基于单片机系统的多功能温度测量仪的研制基于PIC单片机的电能采集终端的设计和应用基于单片机的光纤光栅解调仪的研制气压式线性摩擦焊机单片机控制系统的研制基于单片机的数字磁通门传感器基于单片机的旋转变压器-数字转换器的研究基于单片机的光纤Bragg光栅解调系统的研究单片机控制的便携式多功能乳腺治疗仪的研制基于C8051F020单片机的多生理信号检测仪基于单片机的电机运动控制系统设计Pico专用单片机核的可测性设计研究基于MCS-51单片机的热量计基于双单片机的智能遥测微型气象站MCS-51单片机构建机器人的实践研究基于单片机的轮轨力检测基于单片机的GPS定位仪的研究与实现基于单片机的电液伺服控制系统用于单片机系统的MMC卡文件系统研制基于单片机的时控和计数系统性能优化的研究基于单片机和CPLD的粗光栅位移测量系统研究单片机控制的后备式方波UPS提升高职学生单片机应用能力的探究基于单片机控制的自动低频减载装置研究基于单片机控制的水下焊接电源的研究基于单片机的多通道数据采集系统基于uPSD3234单片机的氚表面污染测量仪的研制基于单片机的红外测油仪的研究96系列单片机仿真器研究与设计基于单片机的单晶金刚石刀具刃磨设备的数控改造基于单片机的温度智能控制系
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度新型材料研发单方保密协议书3篇
- 2024年美陈设计制作与活动策划服务协议3篇
- 2025版酒店客房租赁合同(含押金退还条款)3篇
- 2025年度办公室文员跨部门沟通协调合同6篇
- 2024年环保燃油热水炉购销与市场推广合同3篇
- 2025版影视作品剪辑师雇佣服务协议3篇
- 2025版餐饮场所食品安全保障与清洁服务合同2篇
- 2024年款自动化装卸设备司机雇佣协议3篇
- 2024年海绵城市建设施工承包合同范本3篇
- 2025版高科技研发合资企业成立合同范本3篇
- GB/T 33322-2016橡胶增塑剂芳香基矿物油
- GB/T 15905-1995硫化橡胶湿热老化试验方法
- GB/T 10183-2005桥式和门式起重机制造及轨道安装公差
- 中央空调空调年度维保报价单
- (新平台)国家开放大学《工程数学(本)》形成性考核作业1-5参考答案
- ommaya囊的护理教学课件
- 统计与概率的教材梳理讲稿
- 关节错缝术的技术操作规程
- 幼儿园幼儿心理健康档案
- 《试验设计》课件
- 110kV架空改电缆工程停电施工方案
评论
0/150
提交评论