EDA乐曲硬件演奏电路设计《电子系统设计》课程课程设计报告Word文件下载.docx

上传人:聆听****声音 文档编号:3741135 上传时间:2023-05-02 格式:DOCX 页数:23 大小:372.71KB
下载 相关 举报
EDA乐曲硬件演奏电路设计《电子系统设计》课程课程设计报告Word文件下载.docx_第1页
第1页 / 共23页
EDA乐曲硬件演奏电路设计《电子系统设计》课程课程设计报告Word文件下载.docx_第2页
第2页 / 共23页
EDA乐曲硬件演奏电路设计《电子系统设计》课程课程设计报告Word文件下载.docx_第3页
第3页 / 共23页
EDA乐曲硬件演奏电路设计《电子系统设计》课程课程设计报告Word文件下载.docx_第4页
第4页 / 共23页
EDA乐曲硬件演奏电路设计《电子系统设计》课程课程设计报告Word文件下载.docx_第5页
第5页 / 共23页
EDA乐曲硬件演奏电路设计《电子系统设计》课程课程设计报告Word文件下载.docx_第6页
第6页 / 共23页
EDA乐曲硬件演奏电路设计《电子系统设计》课程课程设计报告Word文件下载.docx_第7页
第7页 / 共23页
EDA乐曲硬件演奏电路设计《电子系统设计》课程课程设计报告Word文件下载.docx_第8页
第8页 / 共23页
EDA乐曲硬件演奏电路设计《电子系统设计》课程课程设计报告Word文件下载.docx_第9页
第9页 / 共23页
EDA乐曲硬件演奏电路设计《电子系统设计》课程课程设计报告Word文件下载.docx_第10页
第10页 / 共23页
EDA乐曲硬件演奏电路设计《电子系统设计》课程课程设计报告Word文件下载.docx_第11页
第11页 / 共23页
EDA乐曲硬件演奏电路设计《电子系统设计》课程课程设计报告Word文件下载.docx_第12页
第12页 / 共23页
EDA乐曲硬件演奏电路设计《电子系统设计》课程课程设计报告Word文件下载.docx_第13页
第13页 / 共23页
EDA乐曲硬件演奏电路设计《电子系统设计》课程课程设计报告Word文件下载.docx_第14页
第14页 / 共23页
EDA乐曲硬件演奏电路设计《电子系统设计》课程课程设计报告Word文件下载.docx_第15页
第15页 / 共23页
EDA乐曲硬件演奏电路设计《电子系统设计》课程课程设计报告Word文件下载.docx_第16页
第16页 / 共23页
EDA乐曲硬件演奏电路设计《电子系统设计》课程课程设计报告Word文件下载.docx_第17页
第17页 / 共23页
EDA乐曲硬件演奏电路设计《电子系统设计》课程课程设计报告Word文件下载.docx_第18页
第18页 / 共23页
EDA乐曲硬件演奏电路设计《电子系统设计》课程课程设计报告Word文件下载.docx_第19页
第19页 / 共23页
EDA乐曲硬件演奏电路设计《电子系统设计》课程课程设计报告Word文件下载.docx_第20页
第20页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

EDA乐曲硬件演奏电路设计《电子系统设计》课程课程设计报告Word文件下载.docx

《EDA乐曲硬件演奏电路设计《电子系统设计》课程课程设计报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《EDA乐曲硬件演奏电路设计《电子系统设计》课程课程设计报告Word文件下载.docx(23页珍藏版)》请在冰点文库上搜索。

EDA乐曲硬件演奏电路设计《电子系统设计》课程课程设计报告Word文件下载.docx

要求将音乐通过实验箱上的喇叭播放出来,用发光二级管显示出乐曲的节拍。

(1)完成程序的编程工作。

(2)将音乐数据制成LMP_ROM文件。

(3)将程序在Quartusii软件中进行编译和仿真。

(4)进行引脚锁定,然后下载到实验箱上观察实验结果。

1.2具体要求

(1)定制音符数据ROMMUSIC,检测音符数据已经进入ROM中;

(2)所有模块,分别仿真测试;

(3)完成系统仿真调试和硬件验证;

(4)能够将两首音乐随时切换。

2系统设计

2.1设计思路

乐曲中的每一音符对应着一个确定的频率,要想FPGA发出不同音符的音调,实际上只要控制它输出相应音符的频率即可。

乐曲都是由一连串的音符组成,因此按照乐曲的乐谱依次输出这些音符所对应的频,就可以在扬声器上连续地发出各个音符的音调。

而要准确地演奏出一首乐曲,仅仅让扬声器能够发生是不够的,还必须准

20

确地控制乐曲的节奏,即乐曲中每个音符的发生频率及其持续时间是乐曲能够连续演奏的两个关键因素。

本次设计主要包括三个部分:

(1)音符频率的获得;

音符频率的获得多个不同频率的信号可通过对某个基准频率进行分频器获得。

由于各个音符的频率多为非整数,而分频系数又不能为小数,故必须将计算机得到的分频系数四舍五入取整。

若基准频率过低,则分频系数过小,四舍五入取整后的误差较大。

若基准频率过高,虽然可以减少频率的相对误差,但分频结构将变大。

实际上应该综合考虑这两个方面的因素,在尽量减少误差的前提下,选取合适的基准频率。

本设计中选取1MHz的基准频率,数控分频器采用11位二进制计数器。

(3)乐曲节奏的控制

一般乐曲最小的节拍为1/4拍,若将1拍的时间定为1秒,则只需要输出4Hz的1/4拍的时长(0.25秒),对于其它占用时间较长的节拍(必为1/4拍的整数倍)则只需要将该音符连续输出相应的次数即可。

计数时钟信号作为输出音符快慢的控制信号,时钟快时输出节拍速度就快,演奏的速度也就快,时钟慢时输出节拍的速度就慢,演奏的速度自然降低,因此计数器的时钟信号应为4Hz。

(3)乐谱的发生

本设计将乐谱中的音符数据存储在LPM-ROM中,若某音在逻辑中停留了4个时钟节拍,即1秒的时间,相应地,该音符就要在

LPM-ROM中连续的四个地址上都存储。

当一个4Hz的时钟来时,相应地就从LPM-ROM中输出一个音符数据。

2.2系统原理

2.2.1总体框图

分频器FDIV

锁相环

PLL

分频驱动蜂鸣器

数控分频器SPKER

时钟

计数器

CNT138T

乐谱

ROM

译码器

F_CODE

简谱码显示

DECL7S

该工程由是由上图所示的几个模块构成

①输入的时钟20MHZ通过锁相环后输出2KHZ和1KHZ的时钟分别输送给分频器FDIV和计数器CNT138;

FDIV将1MHZ的时钟分频成

4HZ的时钟。

②计数器CNT138T完成计数功能,138进制,每来个时钟沿加一。

③乐谱ROM记录了1首歌的乐谱。

根据上一模块计数器所计的数读取相应地址里的数据传递给下一模块。

④译码器F_CODE将选择器所选择的歌曲rom里的地址的数据翻译成可预置计数器SPKER和简谱码显示DECL7S所需的数据。

⑤分频驱动器也就是一个数控分频器,完成分频的功能,并驱动蜂鸣器。

2.2.2工作过程

当一个4Hz的时钟脉冲来到时,乐谱发生器模块输出一个音符数据给分频系数模块,分频系数模块输出此音符相应的分频系数所需的初始值,将初始值送给数控分频器模块,当1MHz的时钟脉冲来到时,数控分频器就根据分频系数输出相应的频率(即此音符所对应的发生频率)给扬声器,扬声器就可发出对应音符的声音来.连续的

4Hz的时钟脉冲就将乐谱发生器里所存储的音符数据一个接一个的送给了分频系数模块,再经过数控分频模块,最后扬声器一个接一个的发出音符数据所对应的声音来。

曲子也就流畅的播放出来了。

同时led数码管会随着音乐显示相应的乐谱。

当乐曲一遍演奏完成后,乐曲发生器能自动从头开始循环演奏。

2.2.3乐曲演奏的原理图

3系统实现

3.1.分频器(FDIV)

将锁相环的2KHZ的时钟分频4Hz的时钟,供计数器使用。

(1)模块程序

moduleFDIV(CLK,PM);

inputCLK;

outputPM;

reg[8:

0]Q1;

regFULL;

wireRST;

always@(posedgeCLKorposedgeRST)begin

if(RST)

begin

Q1<

=0;

FULL<

=1;

endelse

=Q1+1;

end

assignRST=(Q1==449);

assignPM=FULL;

assignDOUT=Q1;

endmodule

(2)模块图形

3.2.计数器CNT138T

它是一个8位二进制计数器,内部设置计数最大值为139,作为音符数据ROM的地址发生器。

每来一个时钟信号,计数器就计数一次,ROM文件中的地址也随着增加,音符数据ROM中的音符也就一个一个的取出来。

3.2.1计数器CNT138T的设计

这个计数器的计数频率即为4Hz。

即每一计数值的停留时间为

0.25秒,恰为当全音符设为1秒时,四四拍的4分音符持续时间。

例如,“梁祝”乐曲的第一个音符为“3”,此音在逻辑中停留了4个时钟节拍,即1秒时间,相应地,所对应的“3”音符分频预置值为11'

H40C,在SPKER的输入端停留了1秒。

随着计数器CNT138T按

4Hz的时钟速率作加法计数时,即随地址值递增时,音符数据ROM模块MUSIC中的音符数据将从ROM中通过q[3..0]端口输向F_CODE模块,“梁祝”乐曲就开始连续自然地演奏起来了。

CNT138T的节拍是139,正好等于ROM中的简谱码数,所以可以确保循环演奏。

对于其他乐曲,此计数最大值要根据情况更改。

moduleCNT138T(CLK,CNT8);

output[7:

0]CNT8;

reg[7:

0]CNT;

wireLD;

always@(posedgeCLKorposedgeLD)begin

if(LD)

CNT<

=8'

b00000000;

else

=CNT+1;

assignCNT8=CNT;

assignLD=(CNT==138);

3.3.分频预置数译码器F_CODE模块

模块F_CODE的功能首先是为模块SPKER(11位分频器)提供决

定所发音符的分频预置数,而此数在SPKER输入口停留的时间即为此音符的节拍周期,模块F_CODE是乐曲简谱码对应的分频预置数查表电路。

3.3.1F_CODE模块的设计

程序中设置了“梁祝”乐曲全部音符所对应的分频预置数,共

14个,每一音符的停留时间则由音乐节拍和音调发生查表模块

MUSIC中简谱码和工作时钟inclock的频率决定,在此为4Hz。

模块

F_CODE的14个值的输出由对应于MUSIC模块输出的q[3..0]及4位输入值INX[3..0]确定,而INX[3..0]最多有16种可选值。

输向模块F_CODE中INX[3..0]的值在SPKER中对应的输出频率值与持续的时间由模块MUSIC决定。

(1)模块程序

moduleF_CODE(INX,CODE,H,TO);

input[3:

0]INX;

output[3:

0]CODE;

outputH;

output[10:

0]TO;

reg[10:

reg[3:

regH;

always@(INX)

case(INX)

0:

beginTO<

=11'

H7FF;

CODE<

H<

1:

H305;

2:

H390;

=2;

3:

H40C;

=3;

4:

H45C;

=4;

5:

H4AD;

=5;

6:

H50A;

=6;

7:

H55C;

=7;

8:

H582;

9:

H5C8;

10:

H606;

11:

H640;

12:

H656;

13:

H684;

14:

H69A;

15:

H6C0;

default:

H6c0;

endendcase

endendmodule

(2)模块图形

3.4数字分频器SPKER模块

音符的频率由SPKER获得,这是一个数控分频器。

3.4.1数字分频器SPKS模块设计

它的CLK端输入一具有较高频率(1MHz)的时钟,由于直接从分频器中出来的输出信号是脉宽极窄的信号,为了有利于驱动扬声器,需另加一个D触发器分频以均衡其占空比,但这时的频率将是原来的1/2。

SPKER对CLK输入信号的分频比由输入的11位预置数TN[10..0]决定。

扬声器的输出频率将决定每一音符的音调;

这样,分频计数器的预置值TN[10..0]与输出频率就有了对应关系,而输出的频率又与音乐音符的发声有对应关系,例如在F_CODE模块中若TN[10..0]=11'

H40C,将由扬声器发出音符为“3”音的信号频率。

(1)程序模块1

moduleSPKER(CLK,TN,SPKS);

input[10:

0]TN;

outputSPKS;

regSPKS;

reg[10:

0]CNT11;

always@(posedgeCLK)begin:

CNT11B_LOAD

if(CNT11==11'

h7FF)

CNT11=TN;

SPKS<

=1'

b1;

CNT11=CNT11+1;

SPKS<

b0;

(2)程序模块2

input[2:

reg[2:

0]CNT3;

always@(posedgeCLK)begin

if(CNT3==3'

h7)

CNT3=TN;

CNT3=CNT3+1;

3.5选择器choice

选择器完成选择歌曲的功能:

当a的信号为1时将Q1的信号输出

当a的信号为0时将Q2的信号输出

modulechoice(a,b,Q1,Q2,INX);

inputa;

outputb;

input[3:

0]Q2;

output[3:

0]INX;

reg b;

always@(a)begin

case(a)

01:

beginb<

INX<

=Q1;

end10:

=Q2;

enddefault:

=10;

3.6.乐谱文件ROM

Lpmrom0模块里面放置的是“梁祝”的乐谱,它是利用LPM-

ROM来实现的,将乐谱中相应的音符放在一个连续的地址上。

他首先是编写音符数据文件,将乐谱中相应的音符放在一个连续的地址上。

因为1拍的时间定为1s,提供的是4HZ的时钟频率(1/4拍的整数倍),则需将这个音符存储在相应次数的连续的地址上。

然后对音符数据进行ROM定制,最后对定制好的ROM文件进行测试和仿真。

3.6.1乐谱文件

(1)“梁祝”音乐

WIDTH=4;

DEPTH=256;

ADDRESS_RADIX=DEC;

DATA_RADIX=DEC;

CONTENT BEGIN

00:

3;

01:

02:

03:

3;

04:

5;

05:

06:

07:

6;

08:

8;

09:

8;

11:

9;

12:

6;

13:

14:

15:

16:

12;

17:

12;

18:

19:

15;

20:

13;

21:

12;

22:

10;

23:

24:

9;

25:

26:

27:

28:

29:

30:

31:

0;

32:

33:

34:

35:

10;

36:

7;

37:

38:

39:

40:

5;

41:

42:

43:

44:

45:

46:

47:

48:

49:

50:

51:

52:

53:

54:

55:

56:

57:

58:

59:

60:

61:

62:

63:

64:

65:

66:

67:

68:

69:

70:

71:

72:

73:

74:

75:

76:

77:

78:

79:

80:

81:

82:

83:

84:

85:

86:

87:

88:

89:

90:

91:

92:

93:

94:

95:

96:

97:

98:

99:

100:

101:

102:

103:

104:

105:

106:

107:

108:

109:

110:

111:

112:

113:

114:

115:

116:

117:

118:

119:

120:

121:

122:

123:

124:

125:

126:

127:

128:

129:

130:

131:

132:

133:

134:

135:

136:

0;

137:

138:

END;

(2)“隐形的翅膀”乐谱

3.6.2LMP-ROM模块

4系统仿真

4.1计数器CNT138T的仿真

由波形可看出,CLK为输入时钟信号,八位输出二进制信号在每个时钟上升沿加一,当计数至137时,从0开始重新计数。

经分析,该模块功能完全正确。

4.2.分频器FDIV

由波形可看出CLK为输入2KHz的时钟信号,PM输出为8Hz的时钟信号,由于纸张有限没有打印出其全部波形。

经分析该模块功能完全正确。

4.3分频预置数F_CODE

从波形上可以看到,当输入信号INX=1000时,code显示的是

1,H为1,预置值为582,查询程序,发现功能正确。

4.4分频器SPKER

此波形仿真分析比较复杂,如果由于输入信号为1MHz,其中的分频系数比较大,如果直接用该模块程序进行仿真可能导致仿真时间过长而失败,因此更改程序,减小其分频系数,同样能说明问题,在此,我将11位的预置初值改为3位,得到如上的仿真波形图,可发现在TN给出不同的预置初值时的分频效果,仔细细数一下,发现数控分频功能完全正确。

通过对仿真后的时序波形的观察,当TN=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处于高电位状态,首先播放的是“梁祝”音乐,数码管显示简谱,发光二极管D1随着音调的高低忽亮忽灭,此时将L8拨至低电平状态,音乐就变换为“隐形的翅膀”的音乐。

6总结

通过两周的课程设计,我应用所学的EDA技术实用教程这本书顺利的完成了乐曲硬件演奏电路的设计。

期间,我查阅了许多相关的资料,更进一步的学习了verilog语言和quartusii软件,不仅巩固了课堂知识,而且有效的和实际结合在了一起,扩展了所学的知识和见识。

在设计中遇到不少的问题,如变成出现错误,仿真出现错误等一系列的问题。

总体的感觉就是,学的不够。

同时,也感觉到书本知识与实际问题之间有很大的差距,需要我们不断的去解决问题,并不是学了书本知识就能很好的解决实际问题,要通过不断的锻炼和学习才能更好的掌握好知识。

7参考书目

[1]潘松,黄继业。

DEA技术实用教程(第四本)。

北京:

科学出版社

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 工学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2