实用参考VHDL音乐播放器Word格式.docx

上传人:b****1 文档编号:3846467 上传时间:2023-05-02 格式:DOCX 页数:19 大小:265.23KB
下载 相关 举报
实用参考VHDL音乐播放器Word格式.docx_第1页
第1页 / 共19页
实用参考VHDL音乐播放器Word格式.docx_第2页
第2页 / 共19页
实用参考VHDL音乐播放器Word格式.docx_第3页
第3页 / 共19页
实用参考VHDL音乐播放器Word格式.docx_第4页
第4页 / 共19页
实用参考VHDL音乐播放器Word格式.docx_第5页
第5页 / 共19页
实用参考VHDL音乐播放器Word格式.docx_第6页
第6页 / 共19页
实用参考VHDL音乐播放器Word格式.docx_第7页
第7页 / 共19页
实用参考VHDL音乐播放器Word格式.docx_第8页
第8页 / 共19页
实用参考VHDL音乐播放器Word格式.docx_第9页
第9页 / 共19页
实用参考VHDL音乐播放器Word格式.docx_第10页
第10页 / 共19页
实用参考VHDL音乐播放器Word格式.docx_第11页
第11页 / 共19页
实用参考VHDL音乐播放器Word格式.docx_第12页
第12页 / 共19页
实用参考VHDL音乐播放器Word格式.docx_第13页
第13页 / 共19页
实用参考VHDL音乐播放器Word格式.docx_第14页
第14页 / 共19页
实用参考VHDL音乐播放器Word格式.docx_第15页
第15页 / 共19页
实用参考VHDL音乐播放器Word格式.docx_第16页
第16页 / 共19页
实用参考VHDL音乐播放器Word格式.docx_第17页
第17页 / 共19页
实用参考VHDL音乐播放器Word格式.docx_第18页
第18页 / 共19页
实用参考VHDL音乐播放器Word格式.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

实用参考VHDL音乐播放器Word格式.docx

《实用参考VHDL音乐播放器Word格式.docx》由会员分享,可在线阅读,更多相关《实用参考VHDL音乐播放器Word格式.docx(19页珍藏版)》请在冰点文库上搜索。

实用参考VHDL音乐播放器Word格式.docx

掌握用VHDL语言设计可控分频器电路。

设计结果:

原理图与原程序、电路仿真图、能在实训系统上播放悦耳动听的音乐。

二.设计实现

2.1准备知识

在本次设计中采用了《梁祝》《茉莉花》《虫儿飞》作为要播放的乐曲,根据声乐知识,组成乐曲的每个音符的发音频率值及其持续的时间是乐曲能连续演奏所需的两个基本要素,获取这两个要素所对应的数值以及通过纯硬件的手段来利用这些数值实现所希望乐曲的演奏效果是本实验的关键。

该演奏电路演奏的乐曲是“梁祝”片段,其最小的节拍为1拍。

将1拍的时长定为0.25秒,则只需要再提供一个4Hz的时钟频率即可产生1拍的时长,演奏的时间控制通过ROM查表的方式来完成。

对于占用时间较长的节拍,如全音符为4拍(重复4),2/4音符为2拍(重复2),1/4音符为1拍(重复1)。

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

若基准频率过低,则由于分频系数过小,四舍五入取整后的误差较大,若基准频率过高,虽然误码差变小,但分频结构将变大。

实际的设计应综合考虑两方面的因素,在尽量减小频率误差的前提下取舍合适的基准频率。

本设计中选取4MHz的基准频率。

表2-1为简谱中音名与频率的对应关系。

表2.1乐谱编码和乐音频率

音符

编码

频率f

分频数10^6/f

计数值(10^6/2f)-1

1

262

10^6/262

1907

2

294

10^6/294

1699

3

330

10^6/330

1514

4

349

10^6/349

1431

5

392

10^6/392

1274

6

440

10^6/440

1135

7

494

10^6/494

1011

8

523

10^6/523

955

9

587

10^6/587

850

10

659

10^6/659

757

11

698

10^6/698

715

12

784

10^6/784

636

13

880

10^6/880

567

14

988

10^6/988

505

高音

15

1047

10^6/1047

476

2.2乐曲演奏电路的结构示意

2.3乐曲演奏电路的子结构

顶层结构所包含的模块分别有地址计数器模块(ADDR)、乐音分频器模块(SPEAKER)、数据存储器(PP)以下便是对各个子模块的分析。

2.3.1地址计数器模块

1.地址计数器功能

在此模块中设置了一个9位二进制计数器(计数最大值为512),这个计数器的计数频率选为4Hz,即每一计数值的停留时间为0.25s,恰好为当全音符设为1s时。

例如,《梁祝》乐曲的第一个音符为“3”,此音在逻辑中停留了4个时钟节拍,即为1s时间,相应地所对应“1”音符分频预置数为1409在ADDR的输入端停留了1s。

随着ADDR中的计数器按4Hz的时钟频率做加法计数时,乐谱逐次被选取,《梁祝》乐曲就开始自然连续的演奏起来了。

2.程序代码

LIBRARPieee;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITPADDRIS

PORT(clk:

INSTD_LOGIC;

A:

BUFFERSTD_LOGIC_VECTOR(8DOWNTO0));

END;

ARCHITECTUREONEOFADDRIS

BEGIN

PROCESS(clk)

BEGIN

IF(clk'

eventANDclk='

1'

THEN

A<

=A+1;

ENDIF;

ENDPROCESS;

3.地址计数器符号图

图2.1地址计数器符号图

4.仿真波形图

图2.2地址计数器波形图

图2.3地址计数器波形图

2.3.2乐音分频器

1.乐音分频器模块的功能

此模块的功能首先是提供决定所发音符的分频预置数,而此数在输入端口停留的时间即为此音符的节拍值。

电路中设置了《梁祝》《茉莉花》《虫儿飞》乐曲全部音符所对应的分频预置数,每一音符的停留时间由音乐节拍和音调发生器模块clk输入频率决定,在此为4Hz。

2.乐音分频器模块的VHDL源程序

librarPieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entitPspeakeris

port(clk:

instd_logic;

--1mhz

TN:

instd_logic_vector(3downto0);

--乐谱编码

spks:

outstd_logic);

end;

architecturertsofspeakeris

signalFM:

std_logic;

signalcount:

integerrange0to2047;

signaltemp:

integerrange0to2048;

begin

process(TN)

begin

caseTNis

when"

0000"

=>

temp<

=2048;

0001"

=1907;

0010"

=1699;

0011"

=1514;

0101"

=1275;

0110"

=1136;

0111"

=1011;

1000"

=955;

1001"

=851;

1010"

=758;

1100"

=637;

1101"

=567;

1110"

=505;

1111"

=477;

whenothers=>

endcase;

endprocess;

process(clk)

if(clk'

eventandclk='

)thencount<

=count+1;

if(count=temp)thenFM<

=notFM;

count<

=0;

endif;

endif;

spks<

=FM;

3.乐音分频器符号图

图2.4乐音分频器符号图

4.乐音分频器波形图

图2.5乐音2的波形图

图2.6乐音3的波形图

2.3.3数据存储器

从菜单里的Tools选择MegaWizardPlug-InManager…,按照向导完成ROM的定制,ROM初始化文件见附录。

图2.7数据存储器设计图

2.3.3数据仿真

1.符号图

图2.8存储器和地址计数器符号图

2.波形图

图2.9存储器存入的数据

存储器存入了《梁祝》《茉莉花》《虫儿飞》三首音乐,最小编程单元是八分音符即每个数字占0.37秒。

每首歌结束之后空0.37G8G2=6秒。

三首歌共424个地址,即0.37G424=155秒,即两分半左右。

2.3.4时钟分频器

1.二十分频器

程序代码:

entitPfenpin20is

--输入20MHZ信号

out1:

--输出1MHZ

architectureoneoffenpin20is

signalT1:

integerrange0to10-1;

signalF1M:

then

T1<

=T1+1;

if(T1=9)thenF1M<

=notF1M;

T1<

out1<

=F1M;

符号图:

图2.10分频器符号图

波形图:

图2.11分频器波形图

波形图意义:

此分频器是20分频,即把频率分成其本身频率的1/20。

波形图中clk周期设置为1ns,则cout1的周期是20ns实现20分频。

2.1M分频4hz

程序代码:

entitPFENPIN4HZis

--输入1MHZ信号

F:

--输出4HZ

architectureoneofFENPIN4HZis

integerrange0to124999;

if(T1=124999)thenF1M<

F<

图2.12分频器符号图

图2.13分频器波形图

三.整体仿真

3.1符号图

图3.1整体符号图

心得体会

通过这几天的课程设计,使我对VHDL语言有了更加深刻的了解,在书本上学的理论知识能够运用到了实践中,而课程设计做的成功,增加了我学习EDA的兴趣,不论在以后的学习中还是工作中,EDA肯定是我们必不可少的设计工具。

通过此次课程设计我已经可以按计划将要求把简易音乐演奏器设计出来,并能实现所要的功能。

在设计过程中,我遇到了许多问题,通过自己上网、查阅资料、问同学老师,解决了各个问题,并设计出所需要的要求的程序代码。

在设计过程中,我了解到设计程序代码的基本过程,首先建立子模块,并对各个模块进行仿真,调试,直到实现所要的功能为止。

再用元件例化对顶层文件进行仿真,调试,到仿真图正确止。

最后将程序代码下载到FPGA实验箱上。

总的来说,通过实验,我激发了EDA学习的兴趣,也对这门课程有了更深的理解,对EDA设计软件QuarterⅡ的使用也更加熟练。

更重要的是在此次实验过程中,更好的培养了我们的具体实验的能力。

又因为在在实验过程中有许多实验现象,需要我们仔细的观察,并且分析现象的原因。

特别有时当实验现象与我们预计的结果不相符时,就更加的需要我们仔细的思考和分析了,并且进行适当的调节。

参考文献

[1]张顺兴.数字电路与系统设计.第1版.南京:

东南大学出版社,20PP

[2]王玉秀.电工电子基础实验.第1版.南京:

[3]孙肖子.模拟电子技术基础.第1版.西安:

西安电子科技大学出版社,20PP.1

[4]谢自美.电子线路设计•实验•测试.第2版.武昌:

华中科技大学出版社,20PP.7

[5]张豫滇.电子电路课程设计.第1版.南京:

河海大学出版社,20PP.8

[6]沈明山.EDA技术及可编程器件应用实训,科学出版社,20PP.6(4):

318-326

[7]刘婷婷,李军.电子设计自动化(EDA).北京师范大学出版社,20PP,9

(2):

250-257

[8]赵明富,李立军.EDA技术基础,北京大学出版社,20PP.5(5):

221-224

附录:

Addr

+0

+1

+2

+3

+4

+5

+6

+7

梁祝

16

24

32

40

48

56

64

72

80

88

96

104

112

120

128

136

144

空6秒

152

160

茉莉花

168

176

184

192

200

208

9+

216

224

232

240

248

256

264

272

280

288

虫儿飞

296

304

312

320

328

336

344

352

360

368

376

384

400

408

416

空3秒

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

当前位置:首页 > 教学研究 > 教学反思汇报

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

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