资源描述:
《eda电子设计使用verilog语言电子琴实验报告》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、电子设计自动化课程设计报告院系:信息工程学院专业:电子信息工程学号:姓名:指导教师:2013年月日12目录1设计目的………………………………………………………32题目描述与要求………………………………………………33课程设计报告内容……………………………………………33.1设计原理与思路……………………………………………33.2操作过程……………………………………………………43.3设计和调试过程中出现的问题及解决方法………………74设计总结和心得体会…………………………………………812一、课程设计目的使用
2、VerilogHDL语言进行前端设计,并使用Quaruts软件在实验箱上实现仿真,实现硬件电子琴。电子琴要求有8个音阶,使用外部时钟信号32MHz,能同步显示音阶。二、课程设计题目描述和要求题目:简易电子琴的设计主要功能:(1)设计一个八音电子琴。(2)由键盘输入控制音响,同时可自动演奏乐曲。(3)用户可以将自己编制的乐曲存入电子琴,演奏时可选择键盘输入乐曲或者已存入的乐曲。三、课程设计报告内容3.1设计原理与思路系统由数控分频器、乐曲存储模块以及发声模块组成。数控分频器对FPGA的基准频率进行分频,得到与各
3、个音阶对应的频率输出。乐曲存储模块产生节拍控制和音阶选择信号,即在此模块中可存放一个乐曲曲谱真值表,由一个计数器来控制此真值表的输出,而由计数器的计数时钟信号作为乐曲节拍控制信号。由发声模块产生音符对应的频率的信号来使扬声器发音。(1)模块automusic12模块automsic由auto信号来选择发声的方式,auto=0时系统自动播放内置的音乐,auto=1时由键盘来手动演奏音乐。(2)模块TONE模块Tone是音阶发生器,当8位发声控制输入Index中某一位为高电平时,则对应某一音阶的数值将从端口Ton
4、e输出,作为获得该音阶的分频预置值;同时由Code输出对应该音阶简谱的显示数码,如‘5’,并由High输出指示音阶高8度显示。(3)模块Speaker模块Speaker中的主要电路是一个数控分频器,它由一个初值可预置的加法计数器构成,当模块Speaker由端口Tone获得一个2进制数后,将以此值为计数器的预置数,对端口Clk12MHZ输入的频率进行分频,之后由Spkout向扬声器输出发声。3.2操作过程新建工程12添加模块查找对应芯片12调试程序波形仿真生成逻辑图12设置管脚3.3设计和调试过程中出现的问题及
5、解决方法12在初次编写分频模块时候,使用的是比较基本的计数器分频法,编写程序后在modelsim软件中进行了仿真,发现无法观察到分频情况。经过分析,原因是由于分频比过大,因此在波形图中很难观察到。而且由于预分频的占空比很小,更难以观察到高电平。在原因找到后,为了考察程序的性能,我们将输入频率减小。同时适当缩小分频比,这样就得到了模块仿真中的分频波形。四、设计总结和心得体会通过这次课程设计发现,只有理论水平提高了;才能够将课本知识与实践相整合,理论知识服务于教学实践,以增强自己的动手能力。这个实验十分有意义我获
6、得很深刻的经验。通过这次课程设计,我们知道了理论和实际的距离,也知道了理论和实际想结合的重要性,,也从中得知了很多书本上无法得知的知识。学习不但要立足于书本,以解决理论和实际教学中的实际问题为目的,还要以实践相结合,理论问题即实践课题,解决问题即课程研究,学生自己就是一个专家,通过自己的手来解决问题比用脑子解决问题更加深刻。学习就应该采取理论与实践结合的方式,理论的问题,也就是实践性的课题。这种做法既有助于完成理论知识的巩固,又有助于带动实践,解决实际问题,加强我们的动手能力和解决问题的能力。参考文献:(五号
7、,宋体加粗)[1]潘松,《EDA实用教程》,科学出版社,2004年附录:(源程序)moduletop(clk32MHz,handTOauto,code1,index1,high1,spkout);inputclk32MHz,handTOauto;//32MHz系统时钟,键盘输入/自动演奏input[7:0]index1;//键盘输入信号output[6:0]code1;//音符显示信号outputhigh1,spkout;//高低音节信号,音频信号wire[10:0]tone;wire[7:0]indx;au
8、tomusicu0(.clk(clk32MHz),.index2(index1),.index0(indx),.auto(handTOauto));toneu1(.index(indx),.tone0(tone),.code(code1),.high(high1));12speakeru2(.clk1(clk32MHz),.tone1(tone),.spks(spkout));Endmodulemo