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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

EDA乐曲硬件演奏电路设计.docx

1、EDA乐曲硬件演奏电路设计EDA乐曲硬件演奏电路设计(总22页)电子系统设计课程课程设计报告题目: 乐曲硬件演奏电路设计 姓 名: 吴清清 院 系: 电力学院 专业: 电子科学与技术 学 号: 9 指导教师: 谭联 完成时间: 2016 年 12 月 21 日1 课程设计题目、内容与要求 设计内容 设计一个乐曲演奏电路,能够自动播放编写好的音乐。要求将音乐通过实验箱上的喇叭播放出来,用发光二级管显示出乐曲的节拍。(1)完成程序的编程工作。(2)将音乐数据制成LMP_ROM文件。(3)将程序在Quartus ii软件中进行编译和仿真。(4)进行引脚锁定,然后下载到实验箱上观察实验结果。 具体要求

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

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

4、/4拍的整数倍)则只需要将该音符连续输出相应的次数即可。计数时钟信号作为输出音符快慢的控制信号,时钟快时输出节拍速度就快,演奏的速度也就快,时钟慢时输出节拍的速度就慢,演奏的速度自然降低,因此计数器的时钟信号应为4Hz。(3) 乐谱的发生本设计将乐谱中的音符数据存储在LPM-ROM中,若某音在逻辑中停留了4个时钟节拍,即1秒的时间,相应地,该音符就要在LPM-ROM中连续的四个地址上都存储。当一个4Hz的时钟来时,相应地就从LPM-ROM中输出一个音符数据。 系统原理总体框图 时钟 该工程由是由上图所示的几个模块构成输入的时钟20MHZ通过锁相环后输出2KHZ和1KHZ的时钟分别输送给分频器F

5、DIV和计数器CNT138;FDIV将1MHZ的时钟分频成4HZ的时钟。计数器CNT138T完成计数功能,138进制,每来个时钟沿加一。乐谱ROM记录了1首歌的乐谱。根据上一模块计数器所计的数读取相应地址里的数据传递给下一模块。译码器F_CODE将选择器所选择的歌曲rom里的地址的数据翻译成可预置计数器SPKER和简谱码显示DECL7S所需的数据。分频驱动器也就是一个数控分频器,完成分频的功能,并驱动蜂鸣器。工作过程当一个4Hz的时钟脉冲来到时,乐谱发生器模块输出一个音符数据给分频系数模块,分频系数模块输出此音符相应的分频系数所需的初始值,将初始值送给数控分频器模块,当1MHz的时钟脉冲来到时

6、,数控分频器就根据分频系数输出相应的频率(即此音符所对应的发生频率)给扬声器,扬声器就可发出对应音符的声音来.连续的4Hz的时钟脉冲就将乐谱发生器里所存储的音符数据一个接一个的送给了分频系数模块,再经过数控分频模块,最后扬声器一个接一个的发出音符数据所对应的声音来。曲子也就流畅的播放出来了。同时led数码管会随着音乐显示相应的乐谱。当乐曲一遍演奏完成后,乐曲发生器能自动从头开始循环演奏。乐曲演奏的原理图3 系统实现.分频器(FDIV)将锁相环的2KHZ的时钟分频4Hz的时钟,供计数器使用。(1)模块程序module FDIV(CLK,PM); input CLK; output PM; reg

7、8:0 Q1; reg FULL; wire RST; always(posedge CLK or posedge RST) begin if(RST) begin Q1=0; FULL=1; end else begin Q1=Q1+1; FULL=0; end end assign RST=(Q1=449); assign PM=FULL; assign DOUT=Q1;endmodule(2)模块图形.计数器CNT138T它是一个8位二进制计数器,内部设置计数最大值为139,作为音符数据ROM的地址发生器。每来一个时钟信号,计数器就计数一次,ROM文件中的地址也随着增加,音符数据ROM中

8、的音符也就一个一个的取出来。计数器CNT138T的设计这个计数器的计数频率即为4Hz。即每一计数值的停留时间为秒,恰为当全音符设为1秒时,四四拍的4分音符持续时间。例如,“梁祝”乐曲的第一个音符为“3”,此音在逻辑中停留了4个时钟节拍,即1秒时间,相应地,所对应的“3”音符分频预置值为11H40C,在SPKER的输入端停留了1秒。随着计数器CNT138T按4Hz的时钟速率作加法计数时,即随地址值递增时,音符数据ROM模块MUSIC中的音符数据将从 ROM中通过q3.0端口输向F_CODE模块,“梁祝”乐曲就开始连续自然地演奏起来了。CNT138T的节拍是139,正好等于ROM中的简谱码数,所以

9、可以确保循环演奏。对于其他乐曲,此计数最大值要根据情况更改。(1)模块程序module CNT138T(CLK,CNT8); input CLK; output 7:0 CNT8; reg7:0 CNT; wire LD; always(posedge CLK or posedge LD) begin if (LD) CNT=8b00000000; else CNT=CNT+1; end assign CNT8=CNT; assign LD=(CNT=138);endmodule (2)模块图形.分频预置数译码器F_CODE模块模块F_CODE的功能首先是为模块SPKER(11位分频器)提供决

10、定所发音符的分频预置数,而此数在SPKER输入口停留的时间即为此音符的节拍周期,模块F_CODE是乐曲简谱码对应的分频预置数查表电路。 F_CODE模块的设计程序中设置了“梁祝”乐曲全部音符所对应的分频预置数,共14个,每一音符的停留时间则由音乐节拍和音调发生查表模块MUSIC中简谱码和工作时钟inclock的频率决定,在此为4Hz。模块F_CODE的14个值的输出由对应于MUSIC模块输出的q3.0及4位输入值INX3.0确定,而INX3.0最多有16种可选值。输向模块F_CODE中INX3.0的值在SPKER中对应的输出频率值与持续的时间由模块MUSIC决定。(1)模块程序module F

11、_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 TO=11H390;CODE=2;H=0;end 3:begin TO=11H40C;CODE=3;H=0;end 4:begin TO=11H45C;CODE=4;H=0;

12、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;end 10:begin TO=11H606;CODE=3;H=1;end 11:begin TO=11H640;CODE=4;H=1;end 12:begin TO=11H656;CODE=5;H=1;end 13:begin TO=11H684;CODE=6;H=1

13、;end 14:begin TO=11H69A;CODE=7;H=1;end 15:begin TO=11H6C0;CODE=1;H=1;end default:begin TO=11H6c0;CODE=1;H=1;end endcase endendmodule(2)模块图形 数字分频器SPKER模块音符的频率由SPKER获得,这是一个数控分频器。数字分频器SPKS模块设计它的CLK端输入一具有较高频率(1MHz)的时钟,由于直接从分频器中出来的输出信号是脉宽极窄的信号,为了有利于驱动扬声器,需另加一个D触发器分频以均衡其占空比,但这时的频率将是原来的1/2。SPKER对CLK输入信号的分频

14、比由输入的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 SPKS; reg10:0 CNT11; always(posedge CLK) begin :CNT11B_LOAD if(CNT11=11h7FF) begin CNT11=TN; SPKS=1b1; end else begin CNT11=CNT11+1; SPKS=1b0; end endendmodule(2)模块图形(2)程序模块2module SPKER(CLK,TN,SPKS); input CLK; input2:0 TN; output SPKS; reg SP

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

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