20xx《EDA技术基础》【设计】实验总结报告模板及要求

时间:2024.4.13

20xxEDA技术基础设计实验总结报告模板及要求

EDA技术基础

音乐播放器

设计性实验

2008112020346郭斌 电子信息科学与技术 物电学院0803班

20xxEDA技术基础设计实验总结报告模板及要求

湖北师范学院电工电子实验教学省级示范中心电子版实验报告

一、任务解析:

以前用51单片机制作了一个可演奏的电子琴,学习了EDA技术之后,感

觉FPGA与单片机有许多类似的地方。于是,启发我用FPGA做一个可随意演奏的音乐播放器。设计低、中、高21个音,几乎能够实现一般歌曲的演奏。要实现该功能,就必须考虑到一首歌曲的产生应该考虑的两个因素:音符的产生频率和音的节拍(即声音持续的时间)。只要控制输出到扬声器的激励信号频率的高低和持续的时间,就可以使扬声器发声产生优美的歌曲。

二、方案论证: 1、音调的控制:

频率的高低决定了音调的高低。通过查阅资料,得到下面的音符名与频率

的关系表:

20xxEDA技术基础设计实验总结报告模板及要求

分频比预置数的计算:

分频比就是从6Mhz基准频率通过二分频得到的3Mhz频率基础上计算得

到的。对于乐曲中的休止符,只需将其分频系数设为0,将分频预置数设为16383即可。例如:低音3的频率为330hz,分频比为3M/330hz=3000000/330=9091,

第2页,共12页

湖北师范学院电工电子实验教学省级示范中心电子版实验报告

则其分频预置数为:16383-9091=7292。其他的音符对应的分频比和分频比预置数均按此法计算可得到。依次计算出低、中、高3X7=21个音的预置数。 各音阶对应的预置数如下表:

20xxEDA技术基础设计实验总结报告模板及要求

2、音长的控制:

音符的持续时间必须根据乐曲的速度及每个音符的节拍数来确定。本试验

20xxEDA技术基础设计实验总结报告模板及要求

中,设定最短的音符为4分音符,若将全音符的持续时间设为1s的话,则需要提供一个4Hz的时钟频率即可产生4分音符的时间,每1/4个节拍的时间为0.25s,一个完整的节拍为1s。

以上即为音乐播放器的原理框图。控制音调通过设置计数器的预置数来实现,

第3页,共12页

湖北师范学院电工电子实验教学省级示范中心电子版实验报告

预置不同的数可以使计数器产生不同频率的信号,从而产生不同的音调。控制音长则是通过控制计数器预置数的停留时间来实现的,预置数停留的时间越长,则该音符演奏的时间越长。每个音符的演奏时间都是0.25s的整数倍,对于节拍较长的音符,例如2分音符,占了2/4个节拍,在记谱的时候将其连续记录2次即可。

三、实验步骤:

1、分频产生6Mz的基准频率:

module div_clk6mhz(clk24m,clk6m);

input clk24m;

output clk6m;

reg clk6m;

reg cnt;

always @(posedge clk24m)

endmodule

由于此分频电路简单,就不在这里给出仿真波形了。

2、分频产生4hz的节拍控制频率:

module div_clk4hz(clk24m,clk4);

input clk24m;

output clk4;

reg clk4;

reg [21:0]cnt;

第4页,共12页 if(cnt<1)cnt=cnt+1; //(24m/6m=4分频,cnt<[4/2-1=1]即可) else begin cnt=0;clk6m=!clk6m;end

湖北师范学院电工电子实验教学省级示范中心电子版实验报告

always @(posedge clk24m)

endmodule

此分频电路也很简单,就不在这里给出仿真波形了。

3、乐曲产生模块:

核心模块就在这里,这里:(1)首先罗列了低、中、高21个音的分频比if(cnt<2999999)cnt=cnt+1;//(24m/4hz=6000000,cnt<[6000000/2-1=2999999]) else begin cnt=0;clk4=!clk4;end 预置数(还有休止符的预置数16383),通过6Mhz的基准频率,在其上升沿的时候,计数器累加,当计满到16383之后就取反speaker(speaker<=~speaker非阻塞赋值),产生对应音符的频率,这里和单片机的定时计数器溢出中断差不多。

(2)产生了21个音调之后,我们要产生流畅的歌曲,还必须根据歌曲的谱子,调用相应音符并且根据节拍控制其持续的时间,例如:若一个音持续4个1/4节拍,则在clk_4hz的上升沿,连续调用4次它的音符就可以了。用counter来计数,计满了(何时计满取决于歌曲长度)就将counter返回为0,这样就可以实现循环演奏了。代码如下:

module song(clk_6mhz,clk_4hz,speaker);

input clk_6mhz,clk_4hz;

output speaker;

reg [3:0]high,med,low;

reg [13:0]divider,origin;

reg [7:0]counter;

reg speaker;

wire carry;

assign carry=(divider==16383);

always @(posedge clk_6mhz)

begin if(carry)divider<=origin;

第5页,共12页

湖北师范学院电工电子实验教学省级示范中心电子版实验报告

else divider<=divider+1;

end

always @(posedge carry)

begin speaker<=~speaker;end

always @(posedge clk_4hz)

begin

case({high,med,low})

'b000000000001:origin<=4933;

'b000000000010:origin<=6179;

'b000000000011:origin<=7292;

'b000000000100:origin<=7787;

'b000000000101:origin<=8730;

'b000000000110:origin<=9565;

'b000000000111:origin<=10310; 'b000000010000:origin<=10647; 'b000000100000:origin<=11272; 'b000000110000:origin<=11831; 'b000001000000:origin<=12085; 'b000001010000:origin<=12556; 'b000001100000:origin<=12974; 'b000001110000:origin<=13347; 'b000100000000:origin<=13515; 'b001000000000:origin<=13830; 'b001100000000:origin<=14107; 'b010000000000:origin<=14236; 'b010100000000:origin<=14470; 'b011000000000:origin<=14678; 'b011100000000:origin<=14858; 'b000000000000:origin<=16383; endcase

第6页,共12页

湖北师范学院电工电子实验教学省级示范中心电子版实验报告

end

always @(posedge clk_4hz)

begin

if(counter==113)counter<=0;

else counter=counter+1;

case(counter)

0: {high,med,low}<='b000000000101; 1: {high,med,low}<='b000000000101;// 2: {high,med,low}<='b000000000110; 3: {high,med,low}<='b000000000110;// 4: {high,med,low}<='b000000000101; 5: {high,med,low}<='b000000000101;// 6: {high,med,low}<='b000100000000; 7: {high,med,low}<='b000100000000;// 8: {high,med,low}<='b000001110000; 9: {high,med,low}<='b000001110000; 10:{high,med,low}<='b000001110000; 11:{high,med,low}<='b000001110000;// 12:{high,med,low}<='b000001010000; 13:{high,med,low}<='b000001010000;// 14:{high,med,low}<='b000001100000; 15:{high,med,low}<='b000001100000;// 16:{high,med,low}<='b000001010000; 17:{high,med,low}<='b000001010000;// 18:{high,med,low}<='b001000000000; 19:{high,med,low}<='b001000000000;// 20:{high,med,low}<='b000100000000; 21:{high,med,low}<='b000100000000; 22:{high,med,low}<='b000100000000; 23:{high,med,low}<='b000100000000;//

第7页,共12页

湖北师范学院电工电子实验教学省级示范中心电子版实验报告

24:{high,med,low}<='b000001010000; 25:{high,med,low}<='b000001010000;// 26:{high,med,low}<='b010100000000; 27:{high,med,low}<='b010100000000;// 28:{high,med,low}<='b001100000000; 29:{high,med,low}<='b001100000000;// 30:{high,med,low}<='b000100000000; 31:{high,med,low}<='b000100000000;// 32:{high,med,low}<='b000001110000; 33:{high,med,low}<='b000001110000;// 34:{high,med,low}<='b011000000000; 35:{high,med,low}<='b011000000000;// 36:{high,med,low}<='b010000000000; 37:{high,med,low}<='b010000000000;// 38:{high,med,low}<='b001100000000; 39:{high,med,low}<='b001100000000;// 40:{high,med,low}<='b000100000000; 41:{high,med,low}<='b000100000000;// 42:{high,med,low}<='b001000000000; 43:{high,med,low}<='b001000000000;// 44:{high,med,low}<='b000100000000; 45:{high,med,low}<='b000100000000; 46:{high,med,low}<='b000100000000; 47:{high,med,low}<='b000100000000; 48:{high,med,low}<='b000100000000; 49:{high,med,low}<='b000100000000;///////祝你生日快乐,完毕。 50: {high,med,low}<='b000000000011;/////////梁祝,开始 51: {high,med,low}<='b000000000011; 52: {high,med,low}<='b000000000011;

第8页,共12页

湖北师范学院电工电子实验教学省级示范中心电子版实验报告 53: {high,med,low}<='b000000000011;

54: {high,med,low}<='b000000000101;

55: {high,med,low}<='b000000000101;

56: {high,med,low}<='b000000000101;

57: {high,med,low}<='b000000000110;

58: {high,med,low}<='b000000010000;

59: {high,med,low}<='b000000010000;

60:{high,med,low}<='b000000010000;

61:{high,med,low}<='b000000100000;

62:{high,med,low}<='b000000000110;

63:{high,med,low}<='b000000010000;

64:{high,med,low}<='b000000000101;

65:{high,med,low}<='b000000000101;

66:{high,med,low}<='b000001010000;

67:{high,med,low}<='b000001010000;

68:{high,med,low}<='b000001010000;

69:{high,med,low}<='b000100000000;

70:{high,med,low}<='b000001100000;

71:{high,med,low}<='b000001010000;

72:{high,med,low}<='b000000110000;

73:{high,med,low}<='b000001010000;

74:{high,med,low}<='b000000100000;

75:{high,med,low}<='b000000100000;

76:{high,med,low}<='b000000100000;

77:{high,med,low}<='b000000100000;

78:{high,med,low}<='b000000100000;

79:{high,med,low}<='b000000100000;

80:{high,med,low}<='b000000100000;

81:{high,med,low}<='b000000100000;

82:{high,med,low}<='b000000100000;

第9页,共12页

湖北师范学院电工电子实验教学省级示范中心电子版实验报告 83:{high,med,low}<='b000000100000;

84:{high,med,low}<='b000000100000;

85:{high,med,low}<='b000000110000;

86:{high,med,low}<='b000000000111;

87:{high,med,low}<='b000000000111;

88:{high,med,low}<='b000000000110;

89:{high,med,low}<='b000000000110;

90:{high,med,low}<='b000000000101;

91:{high,med,low}<='b000000000101;

92:{high,med,low}<='b000000000101;

93:{high,med,low}<='b000000000110;

94:{high,med,low}<='b000000010000;

95:{high,med,low}<='b000000010000;

96:{high,med,low}<='b000000100000;

97:{high,med,low}<='b000000100000;

98:{high,med,low}<='b000000000011;

99:{high,med,low}<='b000000000011;

100:{high,med,low}<='b000000010000;

101:{high,med,low}<='b000000010000;

102:{high,med,low}<='b000000000110;

103:{high,med,low}<='b000000000101;

104:{high,med,low}<='b000000000110;

105:{high,med,low}<='b000000010000;

106:{high,med,low}<='b000000000101;

107:{high,med,low}<='b000000000101;

108:{high,med,low}<='b000000000101;

109:{high,med,low}<='b000000000101;

110:{high,med,low}<='b000000000101;

111:{high,med,low}<='b000000000101;

112:{high,med,low}<='b000000000101;

第10页,共12页

湖北师范学院电工电子实验教学省级示范中心电子版实验报告

113:{high,med,low}<='b000000000101; endcase end endmodule

4、三个模块都完成之后,生成相应的电路原理图,并连接起来,组成一个完整的音乐播放器电路,如下:

20xxEDA技术基础设计实验总结报告模板及要求

5、完成以上步骤之后,分配引脚到试验箱上的芯片,连接好引脚到扬声器等,并且接好相应的短路帽。然后烧写程序到芯片中去,测试音乐播放器是否可以产生预期已经谱好了曲子的歌曲。经过硬件测试,能够产生《梁祝》和《祝你生日快乐》,在这里我只写了2首简单的歌曲。

四、实验分析

1、所有不同频率的信号都是从同一个基准频率分频得到。由于音阶频率多为分整数,而分频比又不能为小数,故必须将计算得到的分频数四舍五入取整。如果基准频率过低,则如果分频比太小,四舍五入取整后的误差较大。若基准频率过高,虽然误差小,但分频数将会变大。设计时,综合考虑,在尽量减小频率误差的前提下取合适的基准频率。我在这里就选取了6Mhz的时钟频率。

2、由于最大分频预置数为16383(休止符),2的14次方=16384>16383,

第11页,共12页

湖北师范学院电工电子实验教学省级示范中心电子版实验报告

故只需取14bit即可,14位的二进制计数器可满足要求。分频比都是从6Mhz频率二分频得到3Mhz频率基础上计算得到。

3、如何分频得到想要的频率?总结了下,如果想由已知频率得到N分频的频率,计数器count<(N/2-1)为分界线,将要得到的频率在分界线处取反即可。 比如:上面要从24Mhz得到4hz的频率,N=24000000/4=6000000,则cnt<(6000000/2-1)即cnt<2999999即可。

五、实验总结;

其实,音乐播放器用FPGA来实现是很简单的。核心部分就是抓住了乐曲的两个要点:音调的控制和音长的控制。因此,涉及到两个频率,一个用来控制产生相应的音调,一个是用来控制该音调持续的时间(即节拍)。我做的这个简易音乐播放器,硬件电路也很简单。其实,可以做的完善和人性化一点,因为声音不只21个音,还有升半调#和降调b,可以加些按键控制,选中某一首歌曲播放。或者还可以通过按键调整模式,可以有自己弹奏乐曲的模式,和音乐自动播放模式,两种模式进行切换。

第12页,共12页

更多相关推荐:
科研开发计划项目技术总结报告(模板)

附件7科研开发计划项目技术研究总结报告计划编号:项目名称:编制:项目负责人:技术部:批准:xxxxxxx年月司日公一、概况1.项目名称2.项目来源3.主要用途、应用行业4.主要研制目标(目前技术性能水平与国内外…

技术工作总结报告模板

【项目/模块名称】技术工作总结报告【版本号】拟制人_______部门_______审核人_______批准人_______(×年×月×日)技术工作总结报告主要内容包括:一、项目概述项目的简单描述。二、项目的规模…

软件项目工作技术报告模板

合同号文档编号项目类型项目名称技术报告公司20xx年月西藏电力信息规划研究目录1项目背景12项目研究内容121内容一122内容二13技术路线及体系结构131设计原则1311312313314先进性原则1实用性原...

专业技术工作总结范文

专业技术工作总结19xx年7月我顺利完成了学业从合肥工业大学土木工程系城市给水排水专业毕业并于同年分配到原XXXX市XXXX局工作参加工作以来我一直从事XXX与管理工作19xx年8月我取得了助理工程师的资格并于...

总结报告模板-科研

×××有限公司技术报告TECHNICALREPORTOF××××××研制总结报告×××有限公司××××年××月目录1引言.............................................…

技术、总结报告格式

技术总结撰写要求一、论文内容转正论文应由见习员工独立撰写,论文内容应体现其在见习工作中对专业技术理论的理解和专业技术方面应用的情况,分析和解决有关技术问题的能力情况,要有一定的独到见解;论文要理论联系实际,论述…

技术报告-模板

实用软件课程设计报告课程题目作者姓名指导教师吴昊学科专业所在学院提交日期目录目录1引言111动机所有级别的标题都用黑体112要解决的问题22系统框架23数据的获取34采用的语言441静态网页展示语言Html44...

高科通信20xx年年终个人总结报告(模板)1112

20xx年度个人总结报告广州市XXXX限公司20xx年度个人总结报告总结人所属部门商务部岗位商务助理目录一20xx年度我取得的成绩请结合个人KPI尽量采用数据来阐述关键工作1二20xx年度我工作中存在的不足或需...

个人工作总结报告新模版

个人工作总结报告姓名部门报告日期年月日本月或本周工作总结存在问题未解决问题及原因下月或下周工作计划

工作总结报告精华版本格式范文

工作总结格式总结就是把某一时期已经做过的工作进行一次全面系统的总检查总评价进行一次具体的总分析总研究也就是看看取得了哪些成绩存在哪些缺点和不足有什么经验提高一基本情况1总结必须有情况的概述和叙述有的比较简单有的...

出差工作总结报告(模板)

出差工作总结报告单位主管部门主管报告人

生产部工作总结报告模板

生产部工作总结报告模板年在紧忙碌中过去了回首过去的一年内心不禁感慨万千这一年虽没有轰轰烈烈的战果但也算经历了一段不平凡的考验和磨砺在这辞旧迎新之际我们生产部门将深刻地对本部门一年来的工作及得失作出细致的总结...

技术总结报告模板(27篇)