版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、郑州航空工业管理学院eda技术及应用课程设计报告 13 届 通信工程 专业 班级 题目: 乐曲自动演奏机 姓名: 学号: 同组人: 指导老师: 2015年7月9日乐曲自动演奏机一、设计要求:()可以在电路上自动演奏至少两首乐曲,在这里我们选用的是茉莉花、欢乐颂和小苹果。()有相应的led灯指示高低音。二、其他要求:(在eda实验箱上完成)1晶振为48 mhz。2. 采用fpga器件为altera 的ep1c6q240c8。 3采用数码管显示。一、设计方案规划 1、整体规划 输入一个:clk(系统时钟48mhz) 输出四个:beep(蜂鸣器输出端)、led(led指示灯)、dig(数码管选择输出
2、引脚)、seg(数码管段输出引脚) 2、功能模块与模块划分 总共分为三部分,蜂鸣器发声部分,led灯显示部分,数码管显示部分。 3、各功能或各模块的功能细分 蜂鸣器自动演奏乐曲,led灯显示高低音,数码管显示音调。二、各模块的实现方法、技术、要点 1、乐曲演奏的原理是:由于组成乐曲的每个音符的频率值(音调)及其持续(时间音长)是乐曲演奏的2个基本数据,因此需控制输出到扬声器的激励信号的频率高低和该频率信号持续的时间。频率的高低决定了音调的高低,而乐曲的简谱与各音名的频率对应关系在后面将给出。所有不同频率的信号都是从一基准频率分频而得来的,由于音阶频率多为非整数,而分频系数有不能为小数,故必须将
3、计算得到的分频数进行四舍五入取整,基准频率和分频系数应综合考虑加以选择,从而保证音乐不会走调。如在48mhz时钟下,中音1(对应的频率值是523.3hz)的分频系数应该为:48000000/(2*523.3)=45863,这样只需对系统时钟进行45863次分频可得到所要的中音m1(分频系数计算公式为d=f/2k,由于f/2k之后,会使分频系数d变小,所以功能模块中语句:beep_r=!beep_r,使得输出取反,k=f/2count_end,消除了前面除以2k的影响)。至于其他音符,同样可有一式求出对应的分频系数。在程序中设置一个状态机,每250ms改变一个状态(即一个节拍),组成乐曲的每个音
4、符的频率值(音调)相对应于状态机的每一个状态。只要让状态机的状态按顺序转换,就可以自动演奏播放音乐了。(注:n一拍;n两拍;n四拍;n八拍;n为音谱)。 2、led灯接低电平显示灯亮,用always模块定义前两个灯亮表示低音,中间四个灯亮表示中音,最后两个灯亮表示高音。 3、数码管选用共阴极,只要公共端为低电平“0”,某个段输出高电平“1”,则相应的段就亮。三、设计电路图四、设计步骤(1) 在quartus中建立一个工程项目文件song.qpf,并在该项目下新建veriloghdl源程序文件song.v输入程序代码保存。(2) 然后在该工程选择一目标器件并对相应的引脚进行锁定,在这里所选择器件
5、为alter公司的cyclone系列的ep1c6q240c8芯片,引脚锁定方式如下所示。引脚锁定方法信号引脚信号引脚1c61c12eda1c61c12edadig0160160160seg5166166166dig1159159159seg6163163163dig2162162162seg7164164164dig3161161161led0505050dig4204204204led1535353dig5199199199led2545454dig6198198198led3555555dig7205205205led4176176176seg0169169169led5474747seg
6、1170170170led6484848seg2167167167led7494949seg3168168168clk282828seg4165165165beep175175175(3) 对该工程文件进行全程编译处理,若在编译中发现错误,则找出错误并更正,知道编译成功为止。(4) 最后编译并下载在试验箱上,此时可以看到乐曲自动演奏以及led灯指示其高低音和数码管显示乐曲音调。五、乐曲简谱简谱中的音名与频率的关系音名频率/hz音名频率/hz音名频率/hz低音261.6中音523.3高音1045.5低音293.7中音587.3高音1174.7低音329.6中音659.3高音1318.5低音349
7、.2中音698.5高音1396.9低音392中音784高音1568低音440中音880高音1760低音493.9中音987.8高音1975.5六、模块的编写程序清单 song.vmodulesong(clk,beep,led,dig,seg; /模块名称songinputclk; /系统时钟48mhzoutputbeep; /蜂鸣器输出端output7:0 dig; /数码管选择输出引脚output 7:0 seg; /数码管段输出引脚output 7:0 led; reg7:0 led_r; reg7:0 seg_r; /输出数码管译码结果 reg7:0 dig_r; /输出数码管选择reg
8、3:0 disp_dat; /定义显示数据寄存器regbeep_r; /寄存器reg7:0 state; /乐谱状态机reg15:0count,count_end;reg23:0count1;wire 31:0d;/乐谱参数:d=f/2k (d:参数,f:时钟频率,k:音高频率)parameter l_5 = 16d61224, /低音5l_6 = 16d54545, /低音6 l_7 = 16d48593, /低音7m_1 = 16d45863, /中音1m_2 = 16d40865, /中音2m_3 = 16d36402, /中音3 m_4 = 16d34359, /中音4m_5 = 16
9、d30612, /中音5m_6 = 16d27273, /中音6h_1 = 16d22956, /高音1 h_2 = 16d20431, /高音2h_3 = 16d18203; /高音3 parametertime = 12000000; /控制每一个音的长短(250ms)assign beep = beep_r; /输出音乐always(posedge clk) begincount = count + 1b1; /计数器加1if(count = count_end) begincount = 16h0; /计数器清零beep_r = !beep_r; /输出取反 end endalways
10、 (posedge clk)beginif(count1 time) /一个节拍250mscount1 = count1 + 1b1;elsebegincount1 = 24d0;if(state = 8d228)state = 8d0;elsestate = state + 1b1;case(state)8d0:count_end = m_3;8d1:count_end = m_2;8d2:count_end = m_3;8d3:count_end = m_5;8d4:count_end = m_6;8d5:count_end = m_5;8d6:count_end = h_1;8d7:co
11、unt_end = m_6;8d8:count_end = m_5;8d9:count_end = m_3;8d10:count_end = m_5;8d11:count_end = m_6;8d12:count_end = h_1;8d13:count_end = h_2;8d14:count_end = h_3;8d15:count_end = h_2;8d16:count_end = h_1;8d17:count_end = m_6;8d18:count_end = h_1;8d19:count_end = m_5;8d20:count_end = m_5;8d21:count_end
12、= m_3;8d22:count_end = m_5;8d23:count_end = m_6;8d24:count_end = h_1;8d25:count_end = h_2;8d26:count_end = h_3;8d27:count_end = h_1;8d28:count_end = m_6;8d29:count_end = m_5;8d30:count_end = m_5;8d31:count_end = m_2;8d32:count_end = m_3;8d33:count_end = m_5;8d34:count_end = m_3;8d35:count_end = m_2;
13、8d36:count_end = m_1;8d37:count_end = m_6;8d38:count_end = m_1;8d39:count_end = m_1;8d40:count_end = m_3;8d41:count_end = m_2;8d42:count_end = m_1;8d43:count_end = m_2;8d44:count_end = m_2;8d45:count_end = m_3;8d46:count_end = m_5;8d47:count_end = m_6;8d48:count_end = m_2;8d49:count_end = m_6;8d50:c
14、ount_end = m_5;8d51:count_end = m_5;8d52:count_end = m_3;8d53:count_end = m_2;8d54:count_end = m_3;8d55:count_end = m_5;8d56:count_end = m_3;8d57:count_end = m_2;8d58:count_end = m_1;8d59:count_end = m_2;8d60:count_end = l_6;8d61:count_end = m_1;8d62:count_end = m_2;8d63:count_end = m_2;8d64:count_e
15、nd = m_3;8d65:count_end = m_1;8d66:count_end = m_2;8d67:count_end = m_1;8d68:count_end = m_6;8d69:count_end = m_1;8d70:count_end = m_6;8d71:count_end = m_5;8d72:count_end = m_5;8d74:count_end = m_3;8d75:count_end = m_3;8d76:count_end = m_4;8d77:count_end = m_5;8d78:count_end = m_5;8d79:count_end = m
16、_4;8d80:count_end = m_3;8d81:count_end = m_2;8d82,8d83:count_end = m_1;8d84:count_end = m_2;8d85:count_end = m_3;8d86,8d87:count_end = m_3;8d88,8d89:count_end = m_2;8d90,8d91:count_end = m_3;8d92:count_end = m_4;8d93:count_end = m_5;8d94:count_end = m_5;8d95:count_end = m_4;8d96:count_end = m_3;8d97
17、:count_end = m_2;8d98,8d99:count_end = m_1;8d100:count_end = m_2;8d101:count_end = m_3;8d102,8d103:count_end = m_2;8d104,8d105:count_end = m_1;8d106,8d107:count_end = m_2;8d108:count_end = m_3;8d109:count_end = m_1;8d110:count_end = m_2;8d111:count_end = m_3;8d112:count_end = m_4;8d113:count_end = m
18、_3;8d114:count_end = m_1;8d115:count_end = m_2;8d116:count_end = m_3;8d117:count_end = m_4;8d118:count_end = m_3;8d119:count_end = m_2;8d120:count_end = m_1;8d121:count_end = m_2;8d122:count_end = m_5;8d123,8d124,8d125:count_end = m_3;8d126:count_end = m_4;8d127:count_end = m_5;8d128:count_end = m_5
19、;8d129:count_end = m_4;8d130:count_end = m_3;8d131:count_end = m_4;8d132:count_end = m_2;8d133,8d134:count_end = m_1;8d135:count_end = m_2;8d136:count_end = m_3;8d137,8d138:count_end = m_2;8d139,8d140:count_end = m_1;8d142:count_end = m_3;8d143:count_end = m_1;8d144:count_end = m_2;8d145:count_end =
20、 l_6;8d146:count_end = m_3;8d147:count_end = m_2;8d148:count_end = m_1;8d149:count_end = m_2;8d150:count_end = l_6;8d151:count_end = l_6;8d152:count_end = m_3;8d153:count_end = m_1;8d154:count_end = m_2;8d155:count_end = m_2;8d156:count_end = m_5;8d157:count_end = m_3;8d158:count_end = l_7;8d159:cou
21、nt_end = m_1;8d160:count_end = m_1;8d161:count_end = l_7;8d162:count_end = l_6;8d163:count_end = l_7;8d164:count_end = m_1;8d165:count_end = m_2;8d166:count_end = l_5;8d167:count_end = m_6;8d168:count_end = m_5;8d169:count_end = m_3;8d170:count_end = m_3;8d171:count_end = m_3;8d172:count_end = m_2;8
22、d173:count_end = m_1;8d174:count_end = m_2;8d175:count_end = m_3;8d176:count_end = m_2;8d177:count_end = m_3;8d178:count_end = m_2;8d179:count_end = m_5;8d180,8d181:count_end =m_5;8d182,8d183,8d184:count_end =m_5;8d185:count_end = m_3;8d186:count_end = m_1;8d187:count_end = m_2;8d188:count_end = m_6
23、;8d189:count_end = m_3;8d190:count_end = m_2;8d191:count_end = m_1;8d192:count_end = m_2;8d193:count_end = l_6;8d194:count_end = l_6;8d195:count_end = m_3;8d196:count_end = m_1;8d197,8d198,8d199:count_end = m_2;8d200:count_end = m_5;8d201:count_end = m_3;8d202:count_end = l_7;8d203:count_end = m_1;8
24、d204:count_end = m_1;8d205:count_end = l_7;8d206:count_end = l_6;8d207:count_end = l_7;8d208:count_end = m_1;8d209:count_end = m_2;8d210:count_end = l_5;8d211:count_end = m_6;8d212:count_end = m_5;8d213,8d214,8d215:count_end = m_3;8d216:count_end = m_2;8d217:count_end = m_1;8d218:count_end = m_2;8d2
25、19:count_end = m_3;8d220:count_end = m_2;8d221:count_end = m_5;8d222,8d223:count_end = l_6;8d224:count_end = m_1;8d225,8d226:count_end = l_6; default:count_end = 16h0;endcaseendendassign led = led_r;always (count_end) begin case(count_end) l_5: led_r = 8b11111100; l_6: led_r = 8b11111100; l_7: led_r
26、 = 8b11111100; m_1: led_r = 8b11000011; m_2: led_r = 8b11000011; m_3: led_r = 8b11000011; m_4: led_r = 8b11000011; m_5: led_r = 8b11000011; m_6: led_r = 8b11000011; h_1: led_r = 8b00111111; h_2: led_r = 8b00111111; h_3: led_r = 8b00111111; default: led_r=8b11111111; endcase end assign dig = dig_r; a
27、ssign seg = seg_r; always(posedge clk) begin case(count_end) /选择扫描显示数据 3d0:disp_dat = d31:28; /第一个数码管 endcase case(count_end) /选择数码管显示位 3d0:dig_r = 8b01111111; /选择第一个数码管显示 endcaseendalways (disp_dat) begin case(count_end) m_1,h_1: seg_r = 8hf9; /显示1 m_2,h_2: seg_r = 8ha4; /显示2 m_3,h_3: seg_r = 8hb0;
28、 /显示3 m_4: seg_r = 8h99; /显示4 l_5,m_5: seg_r = 8h92; /显示5 l_6,m_6: seg_r = 8h82; /显示6 l_7: seg_r = 8hf8; /显示7 endcase endendmodule7、 仿真及调试(rtl图)八、优化与改进在能够在实验箱上自动演奏音乐茉莉花欢乐颂小苹果的基础上;led的前两个灯亮表示低音,中间四个灯亮表示中音,最后两个灯亮表示高音;数码管的数字表示乐曲音调。九、任务完成情况说明编号功能完成状况1能在实验箱上自动演奏乐曲茉莉花欢乐颂小苹果完成2有相应的led灯指示高低音完成3数码管上的数字显示音调完成十、课程设计体会与总结这次的eda课程设计,持续了一个多星期的时间,还记得刚刚拿到课题的时候,以为没什么难度,就和
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度农业科技成果转化合同范本8篇
- 2025版明光幼儿园食堂改造与绿色校园建设合同4篇
- 二零二五年度平房产权继承与赠与合同范本4篇
- 二零二五年度企业员工停薪留职员工培训补贴合同
- 产前检查讲解
- 二零二五年度员工劳动合同转移至新公司员工晋升服务合同2篇
- 二零二五年度体育场馆租赁及赛事组织合同3篇
- 二零二五版美容院美容产品安全检测与认证合同3篇
- 二零二五年度影视特效制作合同标准范本
- 2025版奶牛养殖场安全生产与应急预案合同3篇
- 垃圾处理厂工程施工组织设计
- 天疱疮患者护理
- 机电一体化系统设计-第5章-特性分析
- 2025年高考物理复习压轴题:电磁感应综合问题(原卷版)
- 2025年蛇年新年金蛇贺岁金蛇狂舞春添彩玉树临风福满门模板
- 《建筑制图及阴影透视(第2版)》课件 4-直线的投影
- 2024-2030年中国IVD(体外诊断)测试行业市场发展趋势与前景展望战略分析报告
- 碎纸机设计说明书
- 湖南省长沙市青竹湖湘一外国语学校2021-2022学年八年级下学期期中语文试题
- 2024年股权代持协议经典版(3篇)
- 四川省成都市青羊区石室联中学2024年八年级下册物理期末学业水平测试试题含解析
评论
0/150
提交评论