fpga课程设计报告--简易电子琴的设计[1].doc

上传人:小** 文档编号:55644664 上传时间:2018-10-03 格式:DOC 页数:28 大小:658KB
返回 下载 相关 举报
fpga课程设计报告--简易电子琴的设计[1].doc_第1页
第1页 / 共28页
fpga课程设计报告--简易电子琴的设计[1].doc_第2页
第2页 / 共28页
fpga课程设计报告--简易电子琴的设计[1].doc_第3页
第3页 / 共28页
fpga课程设计报告--简易电子琴的设计[1].doc_第4页
第4页 / 共28页
fpga课程设计报告--简易电子琴的设计[1].doc_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《fpga课程设计报告--简易电子琴的设计[1].doc》由会员分享,可在线阅读,更多相关《fpga课程设计报告--简易电子琴的设计[1].doc(28页珍藏版)》请在金锄头文库上搜索。

1、西安邮电大学西安邮电大学FPGA 课程设计报告课程设计报告题 目:简易电子琴设计及 FPGA 功能验证院 系: 专业班级: 学生姓名: XX 导师姓名: XX 起止时间: 2012、6、18 至 2012、6、29 一、课程设计任务:一、课程设计任务:本设计一个简易电子琴,具体功能如下: 1、具有手动弹奏和自动播放功能; 2、以按键或开关作为电子琴的琴键,输出 7 个音节的音阶; 3、可以自动播放曲目至少两首。二、课程设计目的:二、课程设计目的: 1、培养综合运用知识和独立开展实践创新的能力; 2、深入学习 Verilog HDL,了解其编程环境; 3、学会运用 Modelsim 和 Quar

2、tus II 等编程仿真软件; 4、将硬件语言编程与硬件实物功能演示相结合,加深理解 Verilog HDL 的学习;三、使用环境:三、使用环境:1、软件:Modelsim 和 Quartus II 等编程仿真软件; 2、硬件:FPGA 开发板。四、课程设计详细方案及功能验证:四、课程设计详细方案及功能验证:1、总体实现方案:、总体实现方案: 1、简易电子琴的设计通过软硬件结合实现,硬件系统包括主控器芯片、9 个按键、LED、蜂鸣器等,软件资源包括编写 Verilog HDL 程序的应用软件 Modelsim 和仿真软件 Quartus II。电子琴有按键代替琴键的弹奏功能和自动播 放功能。2

3、、整个程序总共分 5 个模块:主模块,按键模块,曲目 1 模块,曲目 2 模 块,曲目 3 模块。 整个方案总共用了 9 个按键(key1key9) ,按键 key1key7 作为琴键,通过 这七个按键键入不同的音阶。主模块中 key8、key9 两个按键用于选择是自动播 放还是弹奏曲目,令 mm=(key8、key9) ,用 mm 值的不同选择调用不同模块。 如果 mm=00,则程序调用按键模块;如果 mm=01,则调用曲目 1 模块,播放 曲目 1;如果 mm=10,则调用曲目 2 模块,播放曲目 2;如果 mm11,则调用 曲目 3 模块,播放曲目 3。本次设计的框图:主模块 9 个按键

4、 (key1key9) 控制播放曲目 以及手动弹奏 手动弹奏 (key1key7) 播放曲目 (key8、key9 )按键模块 即琴键键入音阶, Key1key7mm=00mm=11曲目 3曲目 1 曲目 2mm=01mm=102、输入输出信号描述:、输入输出信号描述: 具体功能描述: 信号源 输入/输出 功能描述inclk Input时钟频率 50Mkey(19) Input键入以及选择曲目num Output数码管显示out_r Output根据 r 选择不同模块3、顶层划分:、顶层划分:主模块主模块 (key1.key2.key3.key4.key5.key6.key7.key8.key

5、9) outclk beep_r电 子 琴 Key(19 )Inclk7:0numOut_r(beep)4、主要模块:、主要模块: 主模块: 功能描述:是四个子模块的核心,通过主模块分别调用四个不同的子模块。 管脚描述: 信号名称输入 / 输出源功能描述inclkInputPin系统时钟 50MHzKey(19)InputPin按键选择,键入作用outclkOutputPin模块选择输出按键模块: 功能描述:通过按键 key1key7 键入不同的 7 个音阶,频率不同则蜂鸣器发音 就不同;通过 mm=(key8、key9)的值选择调用不同曲目模块。 管脚描述: 信号名称输入 / 输出源功能描述

6、inclkInputPin系统时钟 50MHzKey(17)InputPin按键键入 7 个不同音阶inclk 50MHZ分 频clk_6Mmmnum7:0Key (89 )分 频clk_6MKey (17 )beep4分 频clk_6Mclk_4HZcountstatebeep1分 频clk_6Mclk_4HZcountstateclk_4HZ beep2分 频clk_6Mclk_4HZcountclk_4HZ stateclk_4HZ beep3Beep4OutputPin输出 7 个不同音阶 曲目模块:功能描述:不同的曲目模块输出不同的曲调,根据高低音对应的频率不同输 出不同曲调的曲目。

7、在 50MHZ 的情况下对主时钟分频得到 6MHZ 的频率,得 到在 6MHZ 下对应的音阶及其对应频率,以及分频数,通过计数分频数,来对 不同频率的声音进行输出,实验箱原始时钟为 50MHz,分频后变成不同的频率 输出,通过蜂鸣器输出不同频率的声音。音乐的节拍通过分频变为 4Hz,作为 1/4 拍,即每个单位时长 0.25s。管脚描述: 信号名称输入 / 输出源功能描述inclkInputPin系统时钟 50MHzKey(89)InputPin选择曲目Beep3OutputPin输出曲目5、功能仿真:、功能仿真: 1、综合:2、总体电路图:3、所有输入输出信号:4、管脚分配:输入信号:一个时

8、钟信号,9 个按键; 输出信号:一个数码管输出,一个蜂鸣器输出音调。5、时序仿真:仿真结果;设置输入信号 key1key7 为高电平,此时设置 key8key9=01,即 mm=01,在数码管应该显示 1,在仿真结束后,如图示数码管为 11111001,即 为 1,outclk 为蜂鸣器的输出,如图示也正确,所以本设计经过仿真证明正确可 行。6、 硬件测试结果:在时序验证后下载,通过硬件测试,实验达到预期效果,当mm(key8key9)=00时,通过key1key7这7个按键的键入蜂鸣器可以发出doxi的七个音阶的音,即表示了电子琴的弹奏功能;当mm=01时,播放了第一首歌;mm=10时,播放

9、了第二首歌;mm=11时,播放第三首歌。通过硬件的测试,所有的设计目标均实现。7、 对结果和结论的问题讨论:实验过程中,蜂鸣器发音时好时坏,有时比较低沉,有时却比较尖锐,这可能是对主系统分频不精确导致的结果,当对主系统时钟不同分频时,结果都不同,最终在多次试验下,得到在6M时钟频率下效果最为理想。8、 音阶及其对应频率(时钟频率为50MHz分为6MHz)五、心得体会:五、心得体会:在这次课程设计之前,其实做过了单片机关于蜂鸣器方面的实验,上手起来还是很快的,开始时,先按照老师的要求,写规范,确定实现方案,然后在逐一细化,一步一步按照要求去完成整个设计。本次设计要用 quartusII 软件,由

10、于之前对此软件不是太熟悉所以导致了一些错误和问题的发生,所以这次课程设计中认真学习了 quartusII 软件的具体使用步骤和操作流程,对所有可能出现的问题进行逐一攻破。通过这次实验,我不但熟悉了 quartusII 软件,也了解了开发的最基本流程和方法,也进一步加深了对 Verilog 编程语言的理解,最重要的是锻炼了我独立思考和分析的逻辑能力,通过从顶向下的设计方法,一步步实现,然后将整个设计串套起来,是我对设计的流程以及编程有了很大的提高。通过此次硬件课程设计,使我越来越认识到一点,编程对项目实现有着至关重要的作用,我们在硬件开发的过程中必须重视编程,将编程看作是完善开发的不可缺少的一部

11、分。在一次次的反复设计、论证和测试中,不仅提高了逻辑分析能力、全面分析问题的能力,还提升了发现问题、解决问题的能力。虽然设计过程比较繁琐,大大小小也出现了许多问题,但这却磨练了我的意志。通过各方面的学习,使我的知识面进一步拓宽了。同时,通过本次课程设计,使我也发现了自己的不足,例如:逻辑分析能力不突出,编程能力不足,解决音阶音阶频率频率/Hz/Hz周期周期/us/us半周期半周期/us/us分频数分频数1 15235231912191295695611472114722 25785781684168484284210380103803 36596591518151875975991049104

12、4 469869814321432716716859585955 578478412761276638638765376536 68808801136113656856868186818中音中音7 79889881012101250650660736073H1H11046104695695647847857365736高音高音H2H21175117585285242642651065106问题的能力不足,使我认识到在以后的学习中在这些方面要多努力,加以改进,提升自我能力。我相信通过这次课程设计的学习,对我以后有着十分重要的影响和作用。附代码:module dianziqin(inclk,out

13、clk,key1,key2,key3,key4,key5,key6,key7,key8,key9,num);input inclk;input key1,key2,key3,key4,key5,key6,key7,key8,key9;output outclk;output7:0num;reg 7:0 num;reg outclk,clk_6M;reg 3:0c;wire out1,out2,out3,out4;wire8:0 key;reg 1:0mm;assign key = key1,key2,key3,key4,key5,key6,key7,key8,key9; /由按键拼键为变量 k

14、ey /调用子调块digital_piano m1(.inclk(inclk),.key1(key1),.key2(key2),.key3(key3),.key4(key4),.key5(key5),.key6(key6),.key7(key7),.beep4(out4);bell m2(.inclk(inclk),.beep1(out1);bell2 m3(.inclk(inclk),.beep2(out2);bell3 m4(.inclk(inclk),.beep3(out3);always(posedge inclk) begin if(cbeginif(state =63) state

15、 = 0;/计时,以实现循环演奏elsestate = state + 1;case(state)0,1: high,med,low=12b000000010000;/mid12,3:high,med,low=12b000000100000;/mid24,5:high,med,low=12b000000110000;/mid36,7:high,med,low=12b000000010000;/mid18,9: high,med,low=12b000000010000;/mid110,11:high,med,low=12b000000100000;/mid212,13:high,med,low=12b000000110000;/mid314,15:high,med,low=12b000000010000;/mid116,17:high,med,low=12b000000110000;/mid318,19: high,med,low=12b000001000000;/mid420,21,22,23: high,med,low=12b000001010000;/mid524,25:high,med,low=12b000000110000;/mid326,27: high,med,low=12b000001000000;/m

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 管理学资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号