EDA乐曲硬件演奏电路设计培训资料.doc

上传人:豆**** 文档编号:33591172 上传时间:2022-08-11 格式:DOC 页数:17 大小:93KB
返回 下载 相关 举报
EDA乐曲硬件演奏电路设计培训资料.doc_第1页
第1页 / 共17页
EDA乐曲硬件演奏电路设计培训资料.doc_第2页
第2页 / 共17页
点击查看更多>>
资源描述

《EDA乐曲硬件演奏电路设计培训资料.doc》由会员分享,可在线阅读,更多相关《EDA乐曲硬件演奏电路设计培训资料.doc(17页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、如有侵权,请联系网站删除,仅供学习与交流EDA乐曲硬件演奏电路设计【精品文档】第 15 页电子系统设计课程课程设计报告题目:姓 名: 吴清清 院 系: 电力学院 专业: 电子科学与技术 学 号: 201312309 指导教师: 谭联 完成时间: 2016 年 12 月 21 日目录1 课程设计题目、内容与要求1.1 设计内容 设计一个乐曲演奏电路,能够自动播放编写好的音乐。要求将音乐通过实验箱上的喇叭播放出来,用发光二级管显示出乐曲的节拍。(1)完成程序的编程工作。(2)将音乐数据制成LMP_ROM文件。(3)将程序在Quartus ii软件中进行编译和仿真。(4)进行引脚锁定,然后下载到实验

2、箱上观察实验结果。1.2 具体要求(1)定制音符数据ROM MUSIC,检测音符数据已经进入ROM中;(2)所有模块,分别仿真测试;(3)完成系统仿真调试和硬件验证;(4)能够将两首音乐随时切换。2 系统设计2.1 设计思路乐曲中的每一音符对应着一个确定的频率,要想FPGA发出不同音符的音调,实际上只要控制它输出相应音符的频率即可。乐曲都是由一连串的音符组成,因此按照乐曲的乐谱依次输出这些音符所对应的频,就可以在扬声器上连续地发出各个音符的音调。而要准确地演奏出一首乐曲,仅仅让扬声器能够发生是不够的,还必须准确地控制乐曲的节奏,即乐曲中每个音符的发生频率及其持续时间是乐曲能够连续演奏的两个关键

3、因素。本次设计主要包括三个部分:(1) 音符频率的获得;音符频率的获得多个不同频率的信号可通过对某个基准频率进行分频器获得。由于各个音符的频率多为非整数,而分频系数又不能为小数,故必须将计算机得到的分频系数四舍五入取整。若基准频率过低,则分频系数过小,四舍五入取整后的误差较大。若基准频率过高,虽然可以减少频率的相对误差,但分频结构将变大。实际上应该综合考虑这两个方面的因素,在尽量减少误差的前提下,选取合适的基准频率。本设计中选取1MHz的基准频率,数控分频器采用11位二进制计数器。(3) 乐曲节奏的控制 一般乐曲最小的节拍为1/4拍,若将1拍的时间定为1秒,则只需要输出4Hz的1/4拍的时长(

4、0.25秒),对于其它占用时间较长的节拍(必为1/4拍的整数倍)则只需要将该音符连续输出相应的次数即可。计数时钟信号作为输出音符快慢的控制信号,时钟快时输出节拍速度就快,演奏的速度也就快,时钟慢时输出节拍的速度就慢,演奏的速度自然降低,因此计数器的时钟信号应为4Hz。(3) 乐谱的发生本设计将乐谱中的音符数据存储在LPM-ROM中,若某音在逻辑中停留了4个时钟节拍,即1秒的时间,相应地,该音符就要在LPM-ROM中连续的四个地址上都存储。当一个4Hz的时钟来时,相应地就从LPM-ROM中输出一个音符数据。2.2 系统原理2.2.1总体框图数控分频器SPKER分频器FDIV分频驱动蜂鸣器 时钟锁

5、相环PLL简谱码显示DECL7S译码器F_CODE乐谱ROM计数器CNT138T该工程由是由上图所示的几个模块构成输入的时钟20MHZ通过锁相环后输出2KHZ和1KHZ的时钟分别输送给分频器FDIV和计数器CNT138;FDIV将1MHZ的时钟分频成4HZ的时钟。计数器CNT138T完成计数功能,138进制,每来个时钟沿加一。乐谱ROM记录了1首歌的乐谱。根据上一模块计数器所计的数读取相应地址里的数据传递给下一模块。译码器F_CODE将选择器所选择的歌曲rom里的地址的数据翻译成可预置计数器SPKER和简谱码显示DECL7S所需的数据。分频驱动器也就是一个数控分频器,完成分频的功能,并驱动蜂鸣

6、器。2.2.2工作过程当一个4Hz的时钟脉冲来到时,乐谱发生器模块输出一个音符数据给分频系数模块,分频系数模块输出此音符相应的分频系数所需的初始值,将初始值送给数控分频器模块,当1MHz的时钟脉冲来到时,数控分频器就根据分频系数输出相应的频率(即此音符所对应的发生频率)给扬声器,扬声器就可发出对应音符的声音来.连续的4Hz的时钟脉冲就将乐谱发生器里所存储的音符数据一个接一个的送给了分频系数模块,再经过数控分频模块,最后扬声器一个接一个的发出音符数据所对应的声音来。曲子也就流畅的播放出来了。同时led数码管会随着音乐显示相应的乐谱。当乐曲一遍演奏完成后,乐曲发生器能自动从头开始循环演奏。2.2.

7、3乐曲演奏的原理图3 系统实现3.1.分频器(FDIV)将锁相环的2KHZ的时钟分频4Hz的时钟,供计数器使用。(1)模块程序module FDIV(CLK,PM);input CLK;output PM;reg8:0 Q1;reg FULL;wire RST;always(posedge CLK or posedge RST)beginif(RST)beginQ1=0;FULL=1;endelse beginQ1=Q1+1;FULL=0;endendassign RST=(Q1=449);assign PM=FULL;assign DOUT=Q1;endmodule(2)模块图形3.2.计数

8、器CNT138T它是一个8位二进制计数器,内部设置计数最大值为139,作为音符数据ROM的地址发生器。每来一个时钟信号,计数器就计数一次,ROM文件中的地址也随着增加,音符数据ROM中的音符也就一个一个的取出来。3.2.1计数器CNT138T的设计这个计数器的计数频率即为4Hz。即每一计数值的停留时间为0.25秒,恰为当全音符设为1秒时,四四拍的4分音符持续时间。例如,“梁祝”乐曲的第一个音符为“3”,此音在逻辑中停留了4个时钟节拍,即1秒时间,相应地,所对应的“3”音符分频预置值为11H40C,在SPKER的输入端停留了1秒。随着计数器CNT138T按4Hz的时钟速率作加法计数时,即随地址值

9、递增时,音符数据ROM模块MUSIC中的音符数据将从 ROM中通过q3.0端口输向F_CODE模块,“梁祝”乐曲就开始连续自然地演奏起来了。CNT138T的节拍是139,正好等于ROM中的简谱码数,所以可以确保循环演奏。对于其他乐曲,此计数最大值要根据情况更改。(1)模块程序module CNT138T(CLK,CNT8);input CLK;output 7:0 CNT8;reg7:0 CNT;wire LD;always(posedge CLK or posedge LD)beginif (LD)CNT=8b00000000;elseCNT=CNT+1;endassign CNT8=CNT

10、;assign LD=(CNT=138);endmodule (2)模块图形3.3.分频预置数译码器F_CODE模块模块F_CODE的功能首先是为模块SPKER(11位分频器)提供决定所发音符的分频预置数,而此数在SPKER输入口停留的时间即为此音符的节拍周期,模块F_CODE是乐曲简谱码对应的分频预置数查表电路。3.3.1 F_CODE模块的设计程序中设置了“梁祝”乐曲全部音符所对应的分频预置数,共14个,每一音符的停留时间则由音乐节拍和音调发生查表模块MUSIC中简谱码和工作时钟inclock的频率决定,在此为4Hz。模块F_CODE的14个值的输出由对应于MUSIC模块输出的q3.0及4

11、位输入值INX3.0确定,而INX3.0最多有16种可选值。输向模块F_CODE中INX3.0的值在SPKER中对应的输出频率值与持续的时间由模块MUSIC决定。(1)模块程序module F_CODE(INX,CODE,H,TO);input3:0 INX;output 3:0 CODE;output H;output 10:0 TO;reg10:0 TO;reg3:0 CODE;reg H;always(INX)begin case(INX) 0:begin TO=11H7FF;CODE=0;H=0;end 1:begin TO=11H305;CODE=1;H=0;end 2:begin

12、TO=11H390;CODE=2;H=0;end 3:begin TO=11H40C;CODE=3;H=0;end 4:begin TO=11H45C;CODE=4;H=0;end 5:begin TO=11H4AD;CODE=5;H=0;end 6:begin TO=11H50A;CODE=6;H=0;end 7:begin TO=11H55C;CODE=7;H=0;end 8:begin TO=11H582;CODE=1;H=1;end 9:begin TO=11H5C8;CODE=2;H=1;end10:begin TO=11H606;CODE=3;H=1;end11:begin TO=

13、11H640;CODE=4;H=1;end12:begin TO=11H656;CODE=5;H=1;end 13:begin TO=11H684;CODE=6;H=1;end14:begin TO=11H69A;CODE=7;H=1;end15:begin TO=11H6C0;CODE=1;H=1;end default:begin TO=11H6c0;CODE=1;H=1;endendcaseendendmodule(2)模块图形3.4 数字分频器SPKER模块音符的频率由SPKER获得,这是一个数控分频器。3.4.1数字分频器SPKS模块设计它的CLK端输入一具有较高频率(1MHz)的时

14、钟,由于直接从分频器中出来的输出信号是脉宽极窄的信号,为了有利于驱动扬声器,需另加一个D触发器分频以均衡其占空比,但这时的频率将是原来的1/2。SPKER对CLK输入信号的分频比由输入的11位预置数TN10.0决定。扬声器的输出频率将决定每一音符的音调;这样,分频计数器的预置值TN10.0 与输出频率就有了对应关系,而输出的频率又与音乐音符的发声有对应关系,例如在F_CODE模块中若TN10.0=11H40C,将由扬声器发出音符为“3”音的信号频率。(1)程序模块1module SPKER(CLK,TN,SPKS);input CLK;input10:0 TN;output SPKS;reg

15、SPKS;reg10:0 CNT11;always(posedge CLK)begin :CNT11B_LOADif(CNT11=11h7FF)beginCNT11=TN;SPKS=1b1;endelsebeginCNT11=CNT11+1;SPKS=1b0;endendendmodule(2)模块图形(2)程序模块2module SPKER(CLK,TN,SPKS);input CLK;input2:0 TN;output SPKS;reg SPKS;reg2:0 CNT3;always(posedge CLK)begin if(CNT3=3h7)beginCNT3=TN;SPKS=1b1;

16、endelsebeginCNT3=CNT3+1;SPKS=1b0;endendendmodule3.5选择器choice选择器完成选择歌曲的功能:当a的信号为1时将Q1的信号输出当a的信号为0时将Q2的信号输出(1)模块程序module choice (a,b,Q1,Q2,INX);input a;output b;input3:0 Q1;input3:0 Q2;output3:0INX;reg b;reg3:0 INX;always(a)begincase(a)01:begin b=0;INX=Q1;end 10:begin b=1;INX=Q2;end default:begin b=10

17、;INX=Q2;end endcase endendmodule(2)模块图形3.6.乐谱文件ROMLpm rom0模块里面放置的是“梁祝”的乐谱,它是利用LPM-ROM来实现的,将乐谱中相应的音符放在一个连续的地址上。他首先是编写音符数据文件,将乐谱中相应的音符放在一个连续的地址上。因为1拍的时间定为1s,提供的是4HZ的时钟频率(1/4拍的整数倍),则需将这个音符存储在相应次数的连续的地址上。然后对音符数据进行ROM定制,最后对定制好的ROM文件进行测试和仿真。3.6.1乐谱文件(1)“梁祝”音乐WIDTH = 4 ; DEPTH = 256 ;ADDRESS_RADIX = DEC ;D

18、ATA_RADIX = DEC ; CONTENT BEGIN 00: 3 ; 01: 3 ; 02: 3 ; 03: 3; 04: 5; 05: 5; 06: 5; 07: 6; 08: 8; 09: 8;10: 8 ; 11: 9 ; 12: 6 ; 13: 8; 14: 5; 15: 5; 16:12; 17: 12;18: 12;19:15;20:13 ; 21:12 ; 22:10 ; 23:12; 24: 9; 25: 9; 26: 9; 27: 9; 28: 9; 29: 9;30: 9 ; 31: 0 ; 32: 9 ; 33: 9; 34: 9; 35:10; 36: 7;

19、37: 7; 38: 6; 39: 6;40: 5 ; 41: 5 ; 42: 5 ; 43: 6; 44: 8; 45: 8; 46: 9; 47: 9; 48: 3; 49: 3;50: 8 ; 51: 8 ; 52: 6 ; 53: 5; 54: 6; 55: 8; 56: 5; 57: 5; 58: 5; 59: 5;60: 5 ; 61: 5 ; 62: 5 ; 63: 5; 64:10; 65:10; 66:10; 67:12; 68: 7; 69: 7;70: 9 ; 71: 9 ; 72: 6 ; 73: 8; 74: 5; 75: 5; 76: 5; 77: 5; 78: 5

20、; 79: 5;80: 3 ; 81: 5 ; 82: 3 ; 83: 3; 84: 5; 85: 6; 86: 7; 87: 9; 88: 6; 89: 6;90: 6 ; 91: 6 ; 92: 6 ; 93: 6; 94: 5; 95: 6; 96: 8; 97: 8; 98: 8; 99: 9;100:12;101:12 ;102:12 ;103:10;104: 9; 105: 9;106:10;107: 9;108: 8;109: 8;110: 6;111: 5 ;112: 3 ;113: 3;114: 3; 115: 3;116: 8;117: 8;118: 8;119: 8;12

21、0: 6;121: 8 ;122: 6 ;123: 5;124: 3; 125: 5;126: 6;127: 8;128: 5;129: 5;130: 5;131: 5 ;132: 5 ;133: 5;134: 5; 135: 5;136: 0;137: 0;138: 0;END ;(2)“隐形的翅膀”乐谱3.6.2 LMP-ROM模块4 系统仿真4.1计数器CNT138T的仿真 由波形可看出,CLK为输入时钟信号,八位输出二进制信号在每个时钟上升沿加一,当计数至137时,从0开始重新计数。经分析,该模块功能完全正确。4.2.分频器FDIV由波形可看出CLK为输入2KHz的时钟信号,PM输出为

22、8Hz的时钟信号,由于纸张有限没有打印出其全部波形。经分析该模块功能完全正确。4.3分频预置数F_CODE从波形上可以看到,当输入信号INX=1000时,code显示的是1,H为1,预置值为582,查询程序,发现功能正确。4.4分频器SPKER此波形仿真分析比较复杂,如果由于输入信号为1MHz,其中的分频系数比较大,如果直接用该模块程序进行仿真可能导致仿真时间过长而失败,因此更改程序,减小其分频系数,同样能说明问题,在此,我将11位的预置初值改为3位,得到如上的仿真波形图,可发现在TN给出不同的预置初值时的分频效果,仔细细数一下,发现数控分频功能完全正确。通过对仿真后的时序波形的观察,当TN=

23、6时,系统有最小的分频N=4,随着TN的减小,系统的分频数逐渐增大。4.5乐曲ROM的数据读取5硬件验证5.1引脚锁定5.2硬件连接(1)CLK接试验台上的G21引脚;(2)HIGH接试验台上的JP5端口的W10引脚,W10引脚与发光显示模块的D1引脚相连接,二极管是否发光意味着音调的高低;(3)LED接试验台上的JP7模块,用来显示简谱;(4)SPK_KX接试验台上的SPKK引脚,即扬声器的引脚;(4)a接的实验台上的W13引脚,W13与高低电平输出控制开关模块的L8引脚相连,用来选择播放的音乐。5.2实验现象程序下载后,高低电平开关L8处于高电位状态,首先播放的是“梁祝”音乐,数码管显示简

24、谱,发光二极管D1随着音调的高低忽亮忽灭,此时将L8拨至低电平状态,音乐就变换为“隐形的翅膀”的音乐。6总结通过两周的课程设计,我应用所学的EDA技术实用教程这本书顺利的完成了乐曲硬件演奏电路的设计。期间,我查阅了许多相关的资料,更进一步的学习了verilog语言和quartus ii软件,不仅巩固了课堂知识,而且有效的和实际结合在了一起,扩展了所学的知识和见识。在设计中遇到不少的问题,如变成出现错误,仿真出现错误等一系列的问题。总体的感觉就是,学的不够。同时,也感觉到书本知识与实际问题之间有很大的差距,需要我们不断的去解决问题,并不是学了书本知识就能很好的解决实际问题,要通过不断的锻炼和学习才能更好的掌握好知识。7参考书目1潘松,黄继业。DEA技术实用教程(第四本)。北京:科学出版社

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁