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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

FPGA简易电子琴设计.docx

1、FPGA简易电子琴设计西安邮电大学FPGA课程设计报告题 目: 简易电子琴设计及FPGA功能验证 院 系: 电子工程学院专业班级: 学生姓名:导师姓名: 黄海生 起止时间: 2012-6-18 至 2012-6-29 2012年 6 月 29 日 4.1.3 应用范围.5 4.3.1按键输入控制模块方案设计及源程序.7 4.3.2控制模块方案设计及源程序.8 4.3.3LCD驱动模块方案设计及源程序.111 任务:a、设计一个简单电子琴。(内置24首简单音调曲)b、用FPGA开发板的按键可选择演奏内置曲调,用数码管显示当前演奏的哪个演奏曲目或停止。c、要求电子琴具有自主选择,自动播放所选曲目或

2、停止曲目。2 目的:a、在掌握计算机组成原理理论相关的基础上,了解 EDA技术,掌握 Verilog HDL 硬件描述语言的设计方法和思想,通过学习的 Verilog HDL 语言结合电子电路的设计知识理论联系实际,掌握所学的课程知识;b、深入学习Verilog HDL、FPGA,了解其编程环境;c、学会运用Modelsim和Quartus II等编程仿真软件;d、将硬件语言编程与硬件实物功能演示相结合,加深理解Verilog HDL、FPGA的学习;3 使用环境 (软件/硬件环境,设备等)软硬件环境:软件:Quartus II 7.2, Modelsim6.1;硬件环境:DEII开发板;设备

3、:PC一台,USB下载线,FPGA开发板及电源。 在 EDA 软件平台上,根据硬件描述语言Verilog 完成的设计文件,自动的完成逻辑编译、化简、分割、综合及优化、布局布线、仿真、目标芯片的适配编译、逻辑映射和编程下载等工作。Verilog HDL语言,用Modelsim进行前仿真,以及代码的生成,验证程序验证,也可进行综合。用Quartus II进行后仿真。4 FPGA课程设计详细内容4.1 技术规范4.1.1 原理简易电子琴的设计通过软硬件结合实现,硬件系统包括主控制器芯片、LED、蜂鸣器等,软件资源包括编写Verilog HDL程序的应用软件Modelsim和仿真软件Quartus I

4、I。电子琴有自动播放功能。播放功能中有三首曲子。程序共有六个模块,分别为主模块、数码管显示模块、分频模块、计数器模块、存储器模块、音频输出模块。硬件实现是用一个数码管显示当前播放的曲目,另外四个按键key1、key2用来选择曲目。通过主模块调用各模块实现电子琴的功能。乐曲演奏的原理:乐曲演奏的原理:组成乐曲的每个音符的频率值(音调)以及持续时间(音长)是乐曲能持续演奏所需的两个基本数据,因此只要控制输出到扬声器的激励信号的频率的高低和持续的时间,就可以使扬声器发出持续的乐曲声。 音调的控制频率的高低决定了音调的高低。音乐的十二平均率规定:每两个八度音(如简谱中的中音1与高音1)之间的频率相差一

5、倍。在两个八度音之间,又可分为十二个半音,每半个音的频率比为。另外,音名A(简谱中的低音6)的频率为440HZ,音名B到C之间,E到F之间为半音,其余为全音。由此可以计算出简谱中从低音1至高音1之间的每个音名对应的频率如图所示:音名频率(HZ)音名频率(HZ)音名频率(HZ)低音1261.6中音1523.3高音11046.5低音2293.7中音2587.3高音21174.7低音3329.6中音3659.3高音31318.5低音4349.2中音4698.5高音41396.9低音5392中音5784高音51568低音6440中音6880高音61760低音7493.9中音7987.8高音71975.

6、5所有不同频率均从同一基准频率分频得到。将分频数四舍五入进行取整,并尽量减小误差。在本设计中选取5MHZ作为基准频率。从下表中可以看出最大分频系数为11468,采用14位二进制计数器分频可满足要求。此外还应给出预置数,对应不同的预置数,只需加载不同的预置数即可。采用加载预置数实现分频的方法比采用反馈复零法节省资源,实现起来更加容易。音名分频比预置数音名分频比预置数音名分频比预置数低音195576826中音1477711606高音1238913994低音285127871中音2425712126高音2212814255低音375858798中音3379212591高音3189614487低音47

7、1599224中音4357912804高音4179014593低音5637810005中音5318913194高音5159414789低音6568210701中音6284113524高音6142014963低音7506211321中音7253113852高音7126615117 音长的控制音符的持续时间须根据音乐的速度及每个音符的节拍数来确定。如果设定全音符的持续时间为1S的话,假设产生4分音符,则产生四分频即可实现四分音符的时长,并提供4HZ分频器。如图为乐曲演奏的原理图,其中,乐谱产生电路用来控制音乐的音调和时长。控制音调通过设置计数器的预置数来实现,预置不同的数值会可以使计数器产生不同频

8、率的信号,从而产生不同的音调。控制音长是通过控制计数器预置数的停留时间来实现的,预置数的停留时间越长,则该音符的演奏时间越长,如2分音符,在记谱时将该音符记录两次即可。4.1.2总体方案本次设计课程的目的是让我们在学习verilogHDL的基础上更加深入的了解硬件设计语言的功能、作用及其特征,并且将我们的动手能力与创新能力结合起来。本次试验的总体框图为: 设计框图说明4.1.3引脚描述信号名输入/输出目标/源功能描述CLK InputPin主时钟频率,5MHZ,占空比为1:1DIR InputPin使能端,控制时钟产生,以及读写同步OUT OutputPin输出乐曲信号(方波形式)SCREEN

9、 OutputPin数码管显示信号4.1.4 顶层划分顶层模块说明:1 D触发器:实现信号读取,产生内部使能端,控制分频器;2 分频器: 实现与基准时钟同步操作,读取存储器数据进行分频操作,实现音调与音长的改变与输出;3 节拍发生器: 根据使能端,产生对应的频率产生对应音符时长;4 存储器:实现将预置数传送给分频器,实现曲目的不停音调和音长;5 2分频器:将产生的信号再次进行2分频;注: 音名显示控制 音名显示电路用来显示演奏乐曲时对应的音乐曲曲目名。可以用三个数码管,加以显示,本设计中使用HIGH3:0,MED3;0,LOW3;0等信号加以显示,为了能使其循环显示,需要一时长计数器,等音乐演

10、奏完成后,保证自动从头开始演奏。4.1.5子模块描述 按键接收器 D触发器1、功能描述 运用D触发器和数据锁存器实现数据线输出的使能端。2、管脚描述信号名称输入/输出源目标功能描述DIR输入Pin按键输入信号DR输出Pin使能端3、实现说明: 在按键信号产生后,进行信号的锁存和产生使能信号。 4、验证方案 正常的信号锁存,和信号转换; 是否实现正确使能输出;节拍发生器 分频器 1、功能描述 根据信号的输入,对应产生对应曲目的节拍频率时钟用来读取存储器音调音长数据,产生不同的预置数 2、管脚描述信号名称输入 / 输出源目标功能描述DIR输入PIN按键输入CLK输入PIN基准时钟频率CK输出PIN

11、1位节拍频率时钟 3、实现说明 在CLK的上升沿,将锁存后的DIR信号输入到内部,并根据对应时钟节拍分频,产生对应节拍频率。 4、测试 略; 分频器 1、功能描述 将基准时钟按照预置数的信息进行分频,且与时钟同步,并当使能端低电平时,停止输出,也可实现循环播放。2、管脚描述信号名称输入/输出源目标功能描述DIR输入PIN使能端CK输入PIN基准频率VOICE输入PIN预置数SPEAK输出PIN乐曲输出;3、实现说明 通过计数器、存储器、D触发器,实现分频。当计数从预置数到初始值时Speaker翻转一次,即为分频。4、测试 用modelsim仿真,观察波形是否为所需方波;存储器 1、功能描述 按

12、照使能端的数据,选择对应的预置数据进行读操作,并且于时钟同步。2、管脚描述信号名称输入/输出源目标功能描述DR输入PIN使能端CLK输入PIN基准频率VOICE输出PIN读取的预置数SCREEN输出PIN数码管信号输出;3、实现说明 通过选择,在时钟的上升沿进行数据的读取,并将读出的数据同时传至数码管,与分频器。4、测试 用modelsim仿真,观察预置数的值是否为对应曲目;4.1.6 验证方案: 正常情况下,输入一个DIR的值,查看波形输出是否正常。改变DIR的值,再次查看波形输出是否正常,并且其频率是否满足上述的公式计算出的值。4.1.7 应用范围:简易电子琴可以应用于简单的设计中,亦可应

13、用于娱乐方面。4.2 设计方案4.2.1顶层方案设计顶层主要是对各个子模块进行调用与连接,顶层主要调用以下模块:(1)按键驱动模块 该模块用于选择所要播放曲目。(2)控制模块:该模块用于处理比较所选择的功能。(3)数码管显示模块:该模块用于显示用户是否登陆成功,即LCD驱动。4.2.2顶层模块程序/信号定义与说明/CLK_4HZ: 用于控制音长(节拍)的时钟频率/clk_6MHZ:用于产生各种音阶频率的基准频率/speak:用于激励扬声器的输出信号,本例中为方波信号/high,med,low:分别用于显示高音,中音和低音音符,各驱动一个数码管来显示module music(clk,key1,k

14、ey0,speak,high,low,decodeout); /顶层模块: input clk,key1,key0; output speak,high,low; output 6:0 decodeout; wire 1:0 dir; wire clk,key1,key0; wire clk_5MHZ,clk_4hz; wire speak; wire ck,dr; wire 11:0 voice; wire 6:0 decodeout; wire high,low; assign high=1; assign low=0; assign dir=key1,key0; clock5mhz mh

15、z(.clk(clk),.dir(dir),.clk_5MHZ(clk_5MHZ); clock4hz hz(.clk_5MHZ(clk_5MHZ),.dir(dir),.ck(ck),.clk_4HZ(clk_4HZ); D d1(.dir(dir),.dr(dr); DDR ddr1(.dir(dir),.ck(ck),.voice(voice); main m(.dr(dr),.clk_5MHZ(clk_5MHZ),.clk_4HZ(clk_4HZ),.voice(voice),.speak(speak); decode dec(.dir(dir),.decodeout(decodeou

16、t);endmodule /信号定义与说明 /CLK_4HZ: 用于控制音长(节拍)的时钟频率 /clk_6MHZ:用于产生各种音阶频率的基准频率 /speak:用于激励扬声器的输出信号,本例中为方波信号 /high,med,low:分别用于显示高音,中音和低音音符,各驱动一个数码管来显示 module DDR(dir,ck,voice); input 1:0 dir; input ck; output 11:0 voice; wire 1:0 dir; wire ck; wire 11:0 voice; reg 7:0 counter; reg 3:0 high,med,low; assig

17、n voice=high,med,low; always (posedge ck) if(dir=2b00) counter=0; else if(dir=2b01) /梁祝乐曲演奏电路 begin if(counter=63) counter=0; else counter=counter+1; case(counter) 0: high,med,low=b000000000011; 1: high,med,low=b000000000011; 2: high,med,low=b000000000011; 3: high,med,low=b000000000011; 4: high,med,

18、low=b000000000101; 5: high,med,low=b000000000101; 6: high,med,low=b000000000101; 7: high,med,low=b000000000110; 8: high,med,low=b000000010000; 9: high,med,low=b000000010000; 10: high,med,low=b000000010000; 11: high,med,low=b000000100000; 12: high,med,low=b000000000110; 13: high,med,low=b000000010000

19、; 14: high,med,low=b000000000101; 15: high,med,low=b000000000101; 16: high,med,low=b000001010000; 17: high,med,low=b000001010000; 18: high,med,low=b000001010000; 19: high,med,low=b000100000000; 20: high,med,low=b000001100000; 21: high,med,low=b000001010000; 22: high,med,low=b000000110000; 23: high,m

20、ed,low=b000001010000; 24: high,med,low=b000000100000; 25: high,med,low=b000000100000; 26: high,med,low=b000000100000; 27: high,med,low=b000000100000; 28: high,med,low=b000000100000; 29: high,med,low=b000000100000; 30: high,med,low=b000000100000; 31: high,med,low=b000000100000; 32: high,med,low=b0000

21、00100000; 33: high,med,low=b000000100000; 34: high,med,low=b000000100000; 35: high,med,low=b000000110000; 36: high,med,low=b000000000111; 37: high,med,low=b000000000111; 38: high,med,low=b000000000110; 39: high,med,low=b000000000110; 40: high,med,low=b000000000101; 41: high,med,low=b000000000101; 42

22、: high,med,low=b000000000101; 43: high,med,low=b000000000110; 44: high,med,low=b000000010000; 45: high,med,low=b000000010000; 46: high,med,low=b000000100000; 47: high,med,low=b000000100000; 48: high,med,low=b000000000011; 49: high,med,low=b000000000011; 50: high,med,low=b000000010000; 51: high,med,l

23、ow=b000000010000; 52: high,med,low=b000000000110; 53: high,med,low=b000000000101; 54: high,med,low=b000000000110; 55: high,med,low=b000000010000; 56: high,med,low=b000000000101; 57: high,med,low=b000000000101; 58: high,med,low=b000000000101; 59: high,med,low=b000000000101; 60: high,med,low=b00000000

24、0101; 61: high,med,low=b000000000101; 62: high,med,low=b000000000101; 63: high,med,low=b000000000101; default: high,med,low=b000000000000; endcase end else if(dir=2b10) /天空之城乐曲演奏电路 begin if(counter=195) counter=0; else counter=counter+1; case(counter) 0: high,med,low=b000001100000;/中6 1: high,med,lo

25、w=b000010000000;/中7 2: high,med,low=b000100000000;/高1 3: high,med,low=b000100000000;/高1 4: high,med,low=b000100000000;/高1 5: high,med,low=b000010000000;/中7 6: high,med,low=b000100000000;/高1 7: high,med,low=b000100000000;/高1 8: high,med,low=b001100000000;/高3 9: high,med,low=b001100000000;/高3 10: high

26、,med,low=b000010000000;/中7 11: high,med,low=b000010000000;/中7 12: high,med,low=b000010000000;/中7 13: high,med,low=b000010000000;/中7 14: high,med,low=b000010000000;/中7 15: high,med,low=b000010000000;/中7 16: high,med,low=b000000110000;/中3 17: high,med,low=b000000110000;/中3 18: high,med,low=b0000011000

27、00;/中6 19: high,med,low=b000001100000;/中6 20: high,med,low=b000001100000;/中6 21: high,med,low=b000001010000;/中5 22: high,med,low=b000001100000;/中6 23: high,med,low=b000001100000;/中6 24: high,med,low=b000000000111;/中1 25: high,med,low=b000000000111;/中1 26: high,med,low=b000001010000;/中5 27: high,med,low=b000001010000;/中5 28: high,med,low=b000

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

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