ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:408.90KB ,
资源ID:5691007      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5691007.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(eda电子设计使用verilog语言电子琴实验报告材料.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

eda电子设计使用verilog语言电子琴实验报告材料.docx

1、eda电子设计使用verilog语言电子琴实验报告材料 电子设计自动化课程设计报告院 系: 信息工程学院 专 业: 电子信息工程 学 号: 姓 名: 指导教师: 2013 年 月 日1设计目的32题目描述与要求33课程设计报告容3 3.1设计原理与思路3 3.2操作过程4 3.3设计和调试过程中出现的问题及解决方法74设计总结和心得体会81、课程设计目的使用VerilogHDL语言进行前端设计,并使用Quaruts软件在实验箱上实现仿真,实现硬件电子琴。电子琴要求有8个音阶,使用外部时钟信号32MHz,能同步显示音阶。2、课程设计题目描述和要求题目:简易电子琴的设计主要功能:(1)设计一个八音

2、电子琴。(2)由键盘输入控制音响,同时可自动演奏乐曲。(3)用户可以将自己编制的乐曲存入电子琴,演奏时可选择键盘输入乐曲或者已存入的乐曲。三、课程设计报告容 3.1设计原理与思路 系统由数控分频器、乐曲存储模块以及发声模块组成。数控分频器对FPGA的基准频率进行分频,得到与各个音阶对应的频率输出。乐曲存储模块产生节拍控制和音阶选择信号,即在此模块中可存放一个乐曲曲谱真值表,由一个计数器来控制此真值表的输出,而由计数器的计数时钟信号作为乐曲节拍控制信号。由发声模块产生音符对应的频率的信号来使扬声器发音。(1)模块automusic模块automsic由auto信号来选择发声的方式,auto=0时

3、系统自动播放置的音乐,auto=1时由键盘来手动演奏音乐。(2)模块TONE 模块Tone是音阶发生器,当8位发声控制输入Index中某一位为高电平时,则对应某一音阶的数值将从端口Tone输出,作为获得该音阶的分频预置值;同时由Code输出对应该音阶简谱的显示数码,如5,并由High输出指示音阶高8度显示。(3)模块Speaker模块Speaker中的主要电路是一个数控分频器,它由一个初值可预置的加法计数器构成,当模块Speaker由端口Tone获得一个2进制数后,将以此值为计数器的预置数,对端口Clk12MHZ输入的频率进行分频,之后由Spkout向扬声器输出发声。 3.2操作过程新建工程添

4、加模块查找对应芯片调试程序波形仿真生成逻辑图设置管脚3.3设计和调试过程中出现的问题及解决方法 在初次编写分频模块时候,使用的是比较基本的计数器分频法,编写程序后在modelsim软件中进行了仿真,发现无法观察到分频情况。经过分析,原因是由于分频比过大,因此在波形图中很难观察到。而且由于预分频的占空比很小,更难以观察到高电平。在原因找到后,为了考察程序的性能,我们将输入频率减小。同时适当缩小分频比,这样就得到了模块仿真中的分频波形。4、设计总结和心得体会通过这次课程设计发现,只有理论水平提高了;才能够将课本知识与实践相整合,理论知识服务于教学实践,以增强自己的动手能力。这个实验十分有意义 我获

5、得很深刻的经验。通过这次课程设计,我们知道了理论和实际的距离,也知道了理论和实际想结合的重要性,也从中得知了很多书本上无法得知的知识。学习不但要立足于书本,以解决理论和实际教学中的实际问题为目的,还要以实践相结合,理论问题即实践课题,解决问题即课程研究,学生自己就是一个专家,通过自己的手来解决问题比用脑子解决问题更加深刻。学习就应该采取理论与实践结合的方式,理论的问题,也就是实践性的课题。这种做法既有助于完成理论知识的巩固,又有助于带动实践,解决实际问题,加强我们的动手能力和解决问题的能力。参考文献:(五号,宋体加粗)1 松,EDA实用教程,科学,2004年附录:(源程序)module top

6、(clk32MHz,handTOauto, code1,index1,high1,spkout);input clk32MHz,handTOauto; /32MHz系统时钟,键盘输入/自动演奏input 7:0 index1;/键盘输入信号output 6:0 code1; /音符显示信号output high1,spkout;/高低音节信号,音频信号wire 10:0 tone;wire 7:0 indx;automusic u0(.clk(clk32MHz),.index2(index1),.index0(indx),.auto(handTOauto);tone u1(.index(ind

7、x),.tone0(tone),.code(code1),.high(high1);speaker u2(.clk1(clk32MHz),.tone1(tone),.spks(spkout);Endmodulemodule automusic(clk,auto,index2,index0);/实现自动演奏功能。input clk,auto;/系统时钟;键盘输入/自动演奏input 7:0 index2;/键盘输入信号output 7:0 index0;/音符信号输出reg 7:0 index0;reg 4:0 count0;reg clk2;reg 22:0 count;always (clk

8、,auto) /此过程完成对系统时钟8M的分频,得到4Hz的信号clk2begin if (auto) begin count=23d0; clk2=1b1; end else if (clk) begin count=count+1b1; if (count=23d4000000) clk2=1b1; else if (count=23d8000000) begin clk2=1b0; count=23d0;end endendalways (posedge clk2)/此过程完成自动演奏部分曲的地址累加 begin if (count0=5d31) count0=5d0; else cou

9、nt0=count0+1b1;endalways (count0,auto,index2) begin if (!auto) case(count0) /此case语句:存储自动演奏部分的曲 5d0: index0=8b00000100; /3 5d1: index0=8b00000100; 5d2: index0=8b00000100; 5d3: index0=8b00000100; 5d4: index0=8b00010000;/5 5d5: index0=8b00010000; 5d6: index0=8b00010000; 5d7: index0=8b00100000;/6 5d8:

10、index0=8b10000000;/8 5d9: index0=8b10000000; 5d10: index0=8b10000000; 5d11: index0=8b00000100; 5d12: index0=8b00000010;/2 5d13: index0=8b00000010; 5d14: index0=8b00000001;/1 5d15: index0=8b00000001; 5d16: index0=8b00010000;/5 5d17: index0=8b00010000; 5d18: index0=8b00001000;/4 5d19: index0=8b0000100

11、0; 5d20: index0=8b00001000; 5d21: index0=8b00000100; 5d22: index0=8b00000010; 5d23: index0=8b00000010; 5d24: index0=8b00010000; 5d25: index0=8b00010000; 5d26: index0=8b00001000; 5d27: index0=8b00001000; 5d28: index0=8b00000100; 5d29: index0=8b00000100; 5d30: index0=8b00000010; 5d31: index0=8b0000001

12、0; default: ; endcaseelse index0=index2; /键盘输入音符信号输出 end Endmodulemodule tone(index,code,high,tone0); /音阶发生器程序。input 7:0 index;/音符输入信号output 6:0 code;/音符显示信号output high;/高低音显示信号output 10:0 tone0;/音符的分频系数reg high;reg 6:0 code;reg 10:0 tone0;always (index)/此过程完成音符到音符的分频系数译码,音符的显示,高低音阶begin case(index)

13、 8b00000001: begin tone0=11d773; code=6b1001111;high=1b1;end 8b00000010: begin tone0=11d912; code=6b0010010;high=1b1;end 8b00000100: begin tone0=11d1116;code=6b1001100;high=1b1;end 8b00010000: begin tone0=11d1197;code=6b0100100;high=1b1;end 8b00100000: begin tone0=11d1290;code=6b0100000;high=1b0;end

14、 8b01000000: begin tone0=11d1372;code=6b0001111;high=1b0;end 8b10000000: begin tone0=11d1410;code=6b0000000;high=1b0;end default: begin tone0=11d2047;code=6b0000001;high=1b0;end endcaseendendmodule module speaker(clk1,tone1, spks);/实现数控分频input clk1;/系统时钟input 10:0 tone1;/音符分频系数output spks;/驱动扬声器的音频信

15、号reg 10:0 tone2;reg spks;reg preclk,fullspks,count2;reg 3:0 count;reg 10:0 count11;always (posedge clk1) /此过程对系统时钟进行4分频begin count=count+1b1; if (count=4h2) preclk=1b1; else if (count=4h4) begin preclk=1b0; count=4h0; endendalways (posedge preclk) /此过程按照tone1输入的分频系数对8MHz的脉冲再次分频,得到所需要的音符频率begin if (count11tone1) begin count11=count11+1; fullspks=1b1; end else begin count11=0; fullspks=1b0; endendalways (posedge fullspks) /此进程对fullspks进行2分频begin count2=count2; if (count2) spks=1b1; else spks=1b0;endEndmodule

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1