EDA课设设计简单音乐播放器Word格式.docx

上传人:b****3 文档编号:16845245 上传时间:2022-11-26 格式:DOCX 页数:28 大小:187.10KB
下载 相关 举报
EDA课设设计简单音乐播放器Word格式.docx_第1页
第1页 / 共28页
EDA课设设计简单音乐播放器Word格式.docx_第2页
第2页 / 共28页
EDA课设设计简单音乐播放器Word格式.docx_第3页
第3页 / 共28页
EDA课设设计简单音乐播放器Word格式.docx_第4页
第4页 / 共28页
EDA课设设计简单音乐播放器Word格式.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

EDA课设设计简单音乐播放器Word格式.docx

《EDA课设设计简单音乐播放器Word格式.docx》由会员分享,可在线阅读,更多相关《EDA课设设计简单音乐播放器Word格式.docx(28页珍藏版)》请在冰豆网上搜索。

EDA课设设计简单音乐播放器Word格式.docx

早期的硬件描述语言,如ABEL、HDL、AHDL,由不同的EDA厂商开发,互不兼容,而且不支持多层次设计,层次间翻译工作要由人工完成。

为了克服以上不足,1985年美国国防部正式推出了高速集成电路硬件描述语言VHDL,1987年IEEE采纳VHDL为硬件描述语言标准(IEEE-STD-1076)。

VHDL是一种全方位的硬件描述语言,包括系统行为级。

寄存器传输级和逻辑门多个设计层次,支持结构、数据流和行为三种描述形式的混合描述,因此VHDL几乎覆盖了以往各种硬件俄语言的功能,整个自顶向下或由下向上的电路设计过程都可以用VHDL来完成。

VHDL还具有以下优点:

(1)VHDL的宽范围描述能力使它成为高层进设计的核心,将设计人员的工作重心提高到了系统功能的实现与调试,而花较少的精力于物理实现。

(2)VHDL可以用简洁明确的代码描述来进行复杂控制逻辑设计,灵活且方

便,而且也便于设计结果的交流、保存和重用

(3)VHDL的设计不依赖于特定的器件,方便了工艺的转换。

(4)VHDL是一个标准语言,为众多的EDA厂商支持,因此移植性好。

美国于1981年提出了一种新的、标准化的HDL,称之为VHSIC(VeryHighSpeedIntegratedCircuit)HardwareDescriptionLanguage,简称VHDL。

这是一种用形式化方法来描述数字电路和设计数字逻辑系统的语言。

设计者可以

利用这种语言来描述自己的设计思想,然后利用电子设计自动化工具进行仿真,再自动综合到门电路,最后用PLD实现其功能。

2.3软件介绍

QuartusII是Altera公司的综合性PLD开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(AlteraHardwareDescriptionLanguage)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。

QuartusII可以在XP、Linux以及Unix上使用,除了可以使用Tel脚本完成设计流程外,提供了完善的用户图形界面设计方式。

具有运行速度快,界面统一,功能集中,易学易用等特点。

QuartusII支持Altera的IP核,包含了LPM/MegaFunction宏功能模块

库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。

对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。

此外,QuartusII通过和DSPBuilder工具与Matlab/Simulink相结合,

可以方便地实现各种DSP应用系统;

支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。

MaxplusII作为Altera的上一代PLD设计软件,由于其出色的易用性而得到了广泛的应用。

Altera在QuartusII中包含了许多诸如SignalTapII、ChipEditor和RTLViewer的设计辅助工具,集成了SOPC和HardCopy设计流程,并且继承了MaxplusII友好的图形界面及简便的使用方法。

AlteraQuartusII作为一种可编程逻辑的设计环境,由于其强大的设计能力和直观易用的接口,越来越受到数字系统设计者的欢迎。

3简易乐曲演奏器设计及仿真

3.1原理描述

3.1.1音名与频率的关系

乐谱中从低音1到高音1之间每个音名的频率如表3-1所示:

表3-1简谱中的音名与频率的关系

音名

频率(Hz)

频率(Hz)

低音1

261

中音1

523

咼音1

1046

低音2

294

中音2

578

咼音2

1175

低音3

330

中音3

659

咼音3

1318

低音4

349

中音4

698

咼音4

1397

低音5

392

中音5

784

咼音5

1568

低音6

440

中音6

880

咼音6

1760

低音7

中音7

988

咼音7

1976

3.1.2可变分频器

1.基准频率的选取

各音名所对应的频率可由一频率较高的基准频率进行整数分频得到,所以实际产生各音名频率为近似的整数值。

这是由于音阶频率多为非整数,而分频系数又不能为小数,故必须将得到的分频系数四舍五入取整,若基准频率过低,则

由于分频系数过小,四舍五入取整后的误差较大,若基准频率过高,虽然误码差较小,但分频结构将变大,实际的设计应综合考虑两方面的因素,在尽量减小频

率差的前提下取舍合适的基准频率。

本次设计选择12MHz作为基准频率。

2.分频系数A、公用二进制的计数容量N及初始值的选取D

(1)分频系数的选取

首先将12MHz的基准频率进行12分频,得到1MHz的基准频率,分频

系数A=1MHz/音名频率,此分频系数可由计数器实现

为得到对称方波,可将分频系数A分解为:

分频系数A=分频系数nX2。

即先进行分频系数n的分频,得到不对称方波,然后再2分频得到对称方波。

(2)公用二进制的计数容量N的选取

n分频可由n进制计数器实现。

n进制计数器可用复位法或置位法实现,由于加载初始值d的置位法可有效地减少设计所占用的可编程逻辑器件资源,因此,此次设计采用置位法。

低音1的分频数n为最大,其值为1275,应取公用二进制计数器的计数容量N大与“最大分频系数n”,故本次设计的公用二进制计数器应该设计为十一位二进制加法计数器,其计数最大容量为2048,计数的最大值N为2047,可满足本次设计中所有音名对音频系数的要求。

(3)初始值的选取D

初始值D=计数最大值N-分频系数n

此次设计中应用的各音名对应的分频系数值及初始值如表所示:

表3-2各音名对应的分频系数值及初始值

音符

初始值

对应音谱

区别冋屮低白

2047

1

1091

2

1196

3

1289

4

1331

5

1409

6

1479

7

1541

8

1569

9

1621

10

1668

11

1689

12

1728

13

1763

14

1794

3.《小星星》的音符谱为:

1;

1;

5;

5;

6;

6;

4;

4;

3;

2;

2;

3;

5;

1

3.1.3节拍发生器原理

该演奏电路的最小节拍为1拍,将一拍的时长定为0.25s,则只需要再提供一个4Hz的时钟频率即可产生一拍的时长。

为了能达到演奏时能循环进行,则需设置一个时长计数器,当乐曲演奏完时,保证能自动从头开始演奏。

3.2乐曲演奏电路各模块设计

本次设计乐曲演奏电路结构方框图如图3-1所示:

I

图3-1乐曲演奏电路结构方框图

3.3乐曲演奏电路的子结构

顶层结构所包含的模块分别有音调发生器(ydfsq)模块、音调编码器(ydbmq)模块、分频器模块(dd)、手动自动选择(bmux)模块及数控分频器(skfpq)模块。

3.3.1音调发生器模块

1.音调发生器模块

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

音调发生器模块VHDL源程序如下:

libraryieee;

useieee.std」ogic_1164.all;

entityydfsqis

port(clk:

instd_logic;

toneindex:

outintegerrange0to15);

end;

architecturebhvofydfsqissignalcounter:

integerrange0to99;

begin

process(clk,counter)

ifcounter=100then

counter<

=0;

elsifclk'

eventandclk='

1'

then

=counter+1;

endif;

endprocess;

process(counter)

casecounteris

when0to3=>

toneindex<

=1;

when4to7=>

=5;

when8to11=>

=6;

when12to15=>

when16to19=>

=4;

when20to23=>

=3;

when24to27=>

=2;

when28to31=>

when32to35=>

when36to39=>

when40to43=>

when44to51=>

when52to55=>

when56to59=>

when60to63=>

when64to67=>

when68to71=>

when72to75=>

when76to79=>

when80to83=>

when84to87=>

when88to91=>

when92to95=>

when96to99=>

whenothers=>

NULL;

endcase;

end;

2.音调发生器模块的仿真图

dtrfc-nir

ii

io

•谓

IQ

Id

■..tin

IL

TTrTWTTrTT^R"

^

WTTJIATTZ

1K5)fi5l

<

13I!

[护曰严呼軸怦雀“艸胎因严中皿

Me

b

图3-2音调发生器模块的仿真波形图

通过仿真图可以清楚的看到,时钟elk由0开始计数,每计一次数输出

toneindex的值随之发生一定的变化,只不过根据乐谱的不同,输出的变化也不尽相同。

例如在本次设计中,自第1个时钟上升沿来临到第4个时钟上升沿,

输出toneindex“1”。

于是根据乐谱的不同就输出不同的音符,作为音调编码器的输入。

然后把输出toneindex输入到音调编码器模块,进行下一步编码工作。

于是,由仿真图可以知道本模块输出的即为演奏音乐的音符谱,说明该程序

正确,可以生成逻辑器件。

3.音调发生器模块生成的逻辑器件

ydfsq

clk

toneindex[3..O]

inst

图3-3音调发生器电路模块生成器件

3.3.2音调编码器电路模块

1-音调编码器模块

该编码模块的作用为将输入的音符数据翻译为音乐产生模块的所需要的分

频系数,并且显示音符的数字码型和高音阶,通过对照表3-2各音名对应的分频

系数值及初始值,根据输入得到初始值,从而得到分频系数以便进行分频,得到

所需的频率。

音调编码器模块的VHDL源程序:

entityydbmqis

port(index:

inintegerrange0to15;

code:

outintegerrange0to15;

code1:

tone:

outintegerrange0to2047);

architecturebhvofydbmqis

process©

ndex)

caseindexis

when0=>

tone<

=2047;

code<

code1<

when1=>

=1091;

when2=>

=1196;

when3=>

=1289;

when4=>

=1331;

when5=>

=1409;

when6=>

=1479;

when7=>

=1541;

=7;

when8=>

=1569;

when9=>

tone<

=1621;

when10=>

=1668;

when11=>

=1689;

when12=>

=1728;

when13=>

=1763;

when14=>

=1794;

whenothers=>

end;

2.音调编码器模块的仿真图

BX13

【庐El.恤制庄锁1卫OlOisIfl.Cu

li1i1

MS

J

3泌

11IK】1<

rvj6Li

j>

-i

I\

*血

TD

n;

]I:

[「15—:

t;

:

(O1:

.|

tut

二[血|酣1醴)的i则]幣l閲;

15HI感*

图3-4音调发生器模块的仿真波形图

在此程序中index为音乐节拍产生模块输出的音符数据,经过翻译后将tone输出到数控分频模块为其提供分频系数的初始值,code为数码管显示的字符数,应用模式5,所以直接输出音符的二进制值,codel为高音阶指示信号,当codel为1是说明输出为高音阶的音符。

通过仿真图可以清楚地看到结果。

3.音调编码器模块生成的逻辑器件

图3-5音调发生器电路模块生成器件

3.3.3分频器电路模块

1.分频器模块

该编码模块的作用为将12MHZ的时钟信号分频出4HZ的时钟信号,从而实现只用一个时钟信号控制电路。

分频器模块的VHDL源程序:

entityddis

instd」ogic;

d:

bufferstd」ogic);

architecturebhvofddis

process(clk)

variablecount4:

integerrange0to1500000;

ifclk'

eventandclk='

then

count4:

=count4+1;

ifcount4=1500000then

d<

=notd;

count4:

2.分频器模块的仿真图

邛啣“叫MLIUlitIX«

廻42恥

in

STJi

>

dk

BQ

.ramHTWjnrjuojo二JVWTW二jot

J:

EDI

iiii

图3-6分频器模块的仿真波形图

在此程序中elk为输入的12MHZ时钟信号,经过3M分频得到4HZ的时钟信号。

3.分频器模块生成的逻辑器件

dd

d

图3-7分频器电路模块生成器件

3.3.4手动自动选择模块

1.手动自动选择模块

根据设计的要求,该简易乐曲演奏器能实现手动或自动演奏乐曲的功能。

是,可通过一个按键es来进行自动与手动的选择,当es按下时,乐曲自动演奏,其他情况下均为手动演奏乐曲,即可以通过按下其他的按键(与es相连的按键除外)来控制不同的音符。

与此同时,还需要一个复位信号rst来控制该演奏器

是否工作,当rst为1时,停止演奏,为0时,可以演奏。

以上提到的手动与自动的选择只能在rst为0时有效。

手动自动选择模块的VHDL源程序:

entitybmuxis

port(d1,d2:

cs,rst:

instd」ogic;

q:

architecturebhvofbmuxis

process(cs,rst)

ifrst='

q<

=0;

else

casecsis

when'

0'

=>

=d1;

qv=d2;

qv=d1;

2.手动自动选择模块的仿真图

UhA

W>

h祖D苒眄[单Lffl-ELils]J£

x囲算

17is

C5

11

li

亍)i:

「门:

.;

耳鼻f|」:

匚1;

讳r*E;

=—rryeGR.口心口丽匚

)1

1_1

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

当前位置:首页 > 工程科技 > 能源化工

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

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