EDA2.docx

上传人:b****9 文档编号:25036141 上传时间:2023-06-04 格式:DOCX 页数:11 大小:61.73KB
下载 相关 举报
EDA2.docx_第1页
第1页 / 共11页
EDA2.docx_第2页
第2页 / 共11页
EDA2.docx_第3页
第3页 / 共11页
EDA2.docx_第4页
第4页 / 共11页
EDA2.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

EDA2.docx

《EDA2.docx》由会员分享,可在线阅读,更多相关《EDA2.docx(11页珍藏版)》请在冰豆网上搜索。

EDA2.docx

EDA2

 

EDA设计

(二)

课程设计报告

 

姓名

学号

学院(系)

自动化学院

专业

自动化

标题

音乐播放器设计

 

南京理工大学

2015年月

目录

1引言2

2系统总体设计2

2.1系统功能概述2

2.2系统总体组成结构2

3系统各组成模块详细设计3

3.1地址发生器模块3

3.2分频预置数模块4

3.3分频模块5

4系统调试7

4.1系统仿真调试7

4.2系统实际验证8

4.3调试程序遇到的问题及解决方法8

5总结与体会心得8

6参考文献9

1引言

电子设计自动化技术(ElectronicDesignAutomation,EDA)已经成为现代电子设计技术的核心。

EDA技术就是依赖功能强大的计算机,在EDA工具平台上,对以硬件描述语言(HDL)为系统逻辑描述手段完成的设计文件,自动的完成逻辑编译、化简、分割、综合、布局布线以及逻辑优化和仿真测试,直至下载到可编程逻辑器件CPLD/FPGA或专用集成电路ASIC芯片中。

硬件描述语言(HDL)是EDA技术的重要组成部分,其中VHDL语言应用广泛,是电子设计主流硬件的描述语言之一,它以强大的系统描述能力、规范的程序设计结构、灵活的语句表达风格和多层次的仿真测试手段,受到了业界的普遍认同和广泛接受。

本设计采用SE-5M型EDA实验开发系统,以Altera公司的MAX+PLUSII为开发软件,用VHDL语言采用自顶向下的设计方法,实现了一个音乐播放器,实现播放完整曲目的动能。

2系统总体设计

2.1系统功能概述

本文设计的数字系统是一个音乐播放器,其主要功能如下:

(1)对系统时钟频率进行分频,可以发出高音、中音、低音区任意的音符。

(2)可以播放完整的曲目《怒放的生命》,此外,也可以输入其他乐谱,演奏相应的曲目。

2.2系统总体组成结构

系统由地址发生器模块、分频预置数模块、分频模块3个模块构成。

硬件电路的发生原理是利用程序来控制FPGA某个引脚输出一定频率的矩形波,接上扬声器就能发出相应频率的声音。

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

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

而要准确地演奏出一首乐曲,仅仅让扬声器能够发声是不够的,还必须准确地控制乐曲的节奏,即每个音符的持续时间(即乐曲的节拍)。

由此可见,乐曲中每个音符的发音频率及其持续的时间是乐曲能够连续演奏的两个关键因素。

Ø地址发生器将乐谱转化成代码,存储了乐谱音符code和每个音符持续的拍数cnt;

Ø分频预置数模块将音符code转化为对应的频率所需的分频预置数值(即计数初值tone);

Ø分频模块不仅产生节拍频率(8HZ),而且根据分频系数值产生所需要的音调频率,来驱动蜂鸣器的发声。

音乐播放器的整体功能流程图如下:

3系统各组成模块详细设计

3.1地址发生器模块

地址发生器模块按顺序存储了《怒放的生命》乐谱中的每一个音符和每个音符持续的时间(即乐曲的节拍)。

这首歌是4/4拍,如果将全音符的持续时间设为0.5s的话,那么一拍所应该持续的时间为0.125s,则只需要再提供一个8HZ的时钟频率即可产生四分音符的时长。

在地址发生器中音符是按地址存放的,当系统工作时就按8HZ的频率地址不断加1,依次读取简谱,当系统读到某个音符的简谱时就对应发这个音符的音调,持续时间为0.125秒,如果在曲谱文件中这个音符为4拍音长只要将该音符连续书写4遍,这时系统读乐曲文件的时候就会连续读到4次,也就会发4个0.125秒的音长,这时我们听上去就会持续了四拍的时间,通过这样一个简单的操作就可以控制音乐的音长了。

计数时钟频率越快,输出的节拍持续时间越短,播放速度越快。

怒放的生命的乐谱一共有280个节拍,当节拍数cnt等于280时,赋值cnt<=0;即地址复位了,因此可以循环演奏。

乐谱中一共包含了低音6到高音1这几个音调,各音符编码code和音名之间的关系表如下:

表3-1各音符音名和音符编码之间的关系对应表

音名

code

音名

code

休止符

0000

中音7

0111

低音6

1000

高音1

1001

中音1

0001

高音2

1010

中音2

0010

高音3

1011

中音3

0011

高音4

1100

中音4

0100

高音5

1101

中音5

0101

高音6

1110

中音6

0110

无 

1111

中音部分就是按照BCD编码来的,高音部分就是首位为1。

3.2分频预置数模块

分频预置数模块将音符code转化为对应的频率所需的分频系数值(即计数初值tone)。

在EDA开发板上,选取cp2=262kHZ作为时钟输入频率的基准频率,

为了提高输出信号的驱动能力,以扬声器有足够的功率发声,需要再通过一个分频器将原来的分频器的输出脉冲均衡为对称方波,但这时得到的频率将是原来的1/2,所以本实验的基准频率为131kHZ。

乐谱中一共包含了低音6到高音1这几个音调,选取的最低频率为低音6,频率为495.376HZ,根据131072÷495.376=265,最大分频系数为265,故分频器采用9位二进制计数器即可以满足要求。

预置数即可用公式“模-分频系数=预置数”。

分频器采用9位二进制计数器,2的9次方为512,所以模为512,例如对于休止符,设置频率为131072HZ,分频系数为1,预置数(计数初值)=512-1=511。

各音符和计数初值关系如表3-2所示。

表3-2音符和计数初值关系

音名

频率/Hz

计数初值

音名

频率/Hz

计数初值

休止符

131072

511

中音7

1136.363

396

低音6

495.376

246

高音1

1175.549

400

中音1

588.697

288

高音2

1353.79

414

中音2

638.84

306

高音3

1512.097

424

中音3

742.572

334

高音4

1609.442

430

中音4

796.178

346

高音5

1802.884

438

中音5

882.353

362

高音6

2027.027

446

中音6

989.446

379

无 

— 

具体代码实现如下:

entitytonefreqis

port(code:

instd_logic_vector(3downto0);--音名编码输入

high:

outstd_logic;--高音标志

tone:

outintegerrange0to511--计数初值

);

endtonefreq;

architecturethreeoftonefreqis

begin

three_p1:

process(code)

begin

casecodeis

when"0000"=>tone<=0;high<='0';--休止符

when"0001"=>tone<=288;high<='0';--中音1

when"0010"=>tone<=306;high<='0';--中音2

when"0011"=>tone<=334;high<='0';--中音3

when"0100"=>tone<=346;high<='0';--中音4

when"0101"=>tone<=362;high<='0';--中音5

when"0110"=>tone<=379;high<='0';--中音6

when"0111"=>tone<=396;high<='0';--中音7

when"1000"=>tone<=246;high<='0';--低音3

when"1001"=>tone<=400;high<='1';--高音1

when"1010"=>tone<=414;high<='1';--高音2

when"1011"=>tone<=424;high<='1';--高音3

when"1100"=>tone<=430;high<='1';--高音4

when"1101"=>tone<=438;high<='1';--高音5

when"1110"=>tone<=446;high<='1';--高音6

when"1111"=>tone<=0;high<='0';

whenothers=>null;

endcase;

endprocessthree_p1;

endthree;

3.3分频模块

分频模块主要有两大部分构成,speaker.vhd中产生节拍频率(8HZ),divfreq.vhd中根据分频预置数模块输出的分频预置数tone产生所需要的音调频率,以驱动蜂鸣器的发声。

产生的节拍频率使用时钟频率cp1=512HZ,通过64分频产生8HZ的节拍频率。

具体的代码实现如下:

entitydivfreqis

port(cp1:

instd_logic;--输入频率为512Hz

clk8:

outstd_logic--输出为8Hz

);

enddivfreq;

architectureoneofdivfreqis

signalcnt:

std_logic_vector(8downto0);

begin

one_p1:

process(cp1)

begin

ifcp1'eventandcp1='1'then--当cp1处于上升沿时

cnt<=cnt+1;

endif;

endprocessone_p1;

clk8<=cnt(5);--实现64分频

endone;

speaker.vhd中根据输入音符的计数初值(分频预置数),通过数控分频器产生相应的频率的脉冲(分频器采用9位二进制计数器),由于脉冲的占空过窄,需要对其再进行二分频,变成占空比50%的脉冲,使扬声器有足够的功率发音。

输入时钟CP2选择262kHz。

具体代码如下:

entityspeakeris

port(cp2:

instd_logic;--262kHz的时钟频率CP2

tone:

inintegerrange0to511;--相应音符的计数初值的范围

spk:

outstd_logic--输出的驱动蜂鸣器发声的频率

);

endspeaker;

architecturefourofspeakeris

signalspk1:

std_logic;--数控分频器得到的相应的脉冲

begin

four_p1:

process(cp2,tone)

variablecount1:

integerrange0to511;

begin

iftone=0then

elsifcp2'eventandcp2='1'then--如果cp2处于上升沿

ifcount1=511then--如果是休止符,则spk1始终为1

count1:

=tone;

spk1<='1';

else

count1:

=count1+1;

spk1<='0';

endif;

endif;

endprocessfour_p1;

four_p2:

process(spk1)

variablecount2:

std_logic;

begin

ifspk1'eventandspk1='1'then--由于spk1脉冲占空比过小,需再进行2分频使之变为占

count2:

=notcount2;--空比为50%的脉冲,使扬声器有足够功率发声

ifcount2='1'then--即碰到了休止符

spk<='1';

else

spk<='0';

endif;

endif;

endprocessfour_p2;

endfour;

4系统调试

4.1系统仿真调试

系统的gdf文件如下:

图4-1音乐播放器模块功能图

系统的仿真波形图如下:

spk=1时代表遇到休止符,spk=0是是非休止符。

high=1时,表示是高音,此时所接的引脚为发光二极管发光。

4.2系统实际验证

实际运行时,进行如下的引脚分配:

表4-1引脚分配表

模块引脚

器件引脚编号

cp1

43

cp2

1

high

25

speak

27

将程序下载到下载板上发现程序运行正常。

4.3调试程序遇到的问题及解决方法

1、一开始我们在地址发生器模块没有加休止符,播放出来的音乐听起来很奇怪,后来我们在乐谱中适当的位置添加了休止符,设置休止符的频率为131072HZ,分频系数为1,预置数(计数初值)=512-1=511。

2、在模块化调试过程中,一开始实体名和文件名没有一致导致编译错误,后来把实体名和模块名改成一致的了。

5总结与体会心得

本次实验的时间有点紧,要用从没有接触过的硬件设计语言设计一个系统,虽然在数字逻辑电路中先知道有VHDL语言,但对于它的语法还是不了解。

通过这次的实验,我更加了解了自顶向下和模块化的设计方法,学会了用硬件电路描述语言来设计系统。

VHDL作为电路设计语言的方便性,具有很强的硬件描述能力,很强的移植能力,减少硬件电路设计的工作量,缩短了开发周期,同时也省去了电路连线的工作,方便我们更快的查找错误。

这次的实验锻炼了我的动手能力和团队合作能力。

6参考文献

[1]南京理工大学.EDA设计实验指导书[M].南京:

南京理工大学电子技术中心,2008.

[2]朱正伟.EDA技术及应用[M].北京:

清华大学出版社,2005.

[3]潘松,黄继业.EDA技术与VHDL(第4版)[M].北京:

清华大学出版社,2005.

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

当前位置:首页 > IT计算机 > 电脑基础知识

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

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