两只老虎EDA课程设计详细Word格式文档下载.docx

上传人:b****5 文档编号:19065175 上传时间:2023-01-03 格式:DOCX 页数:13 大小:175.87KB
下载 相关 举报
两只老虎EDA课程设计详细Word格式文档下载.docx_第1页
第1页 / 共13页
两只老虎EDA课程设计详细Word格式文档下载.docx_第2页
第2页 / 共13页
两只老虎EDA课程设计详细Word格式文档下载.docx_第3页
第3页 / 共13页
两只老虎EDA课程设计详细Word格式文档下载.docx_第4页
第4页 / 共13页
两只老虎EDA课程设计详细Word格式文档下载.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

两只老虎EDA课程设计详细Word格式文档下载.docx

《两只老虎EDA课程设计详细Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《两只老虎EDA课程设计详细Word格式文档下载.docx(13页珍藏版)》请在冰豆网上搜索。

两只老虎EDA课程设计详细Word格式文档下载.docx

频率/Hz

]

低音1

中音1

高音1

低音2

中音2

高音2

低音3

中音3

高音3

低音4

中音4

高音4

低音5

中音5

高音5

低音6

440

中音6

880

高音6

1760

低音7

中音7

高音7

 

表2各音阶频率对应的分频值

分频

系数

初始

7644

547

3822

4369

1911

6280

6810

1381

3405

4786

1270

6921

6067

2124

3034

5157

1517

6674

5727

2464

2864

5327

1432

6759

5102

3089

2551

5640

1256

6935

4545

3646

2273

5918

1137

7054

4050

4141

2025

6166

1013

7178

(3)乐曲节奏的控制

一般乐曲最小的节拍为1/4拍,若将1拍的时间定为1秒,则只需要输出

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

计数时钟信号作为输出音符快幔的控制信号,时钟快时输出节拍速度就快,演奏的速度也就快,时钟慢时输出节拍的速度就慢,演奏的速度自然降低,由于最后的蜂鸣器前需加一个二分频的程序,因此计数器的时钟信号应为4Hz的2倍,即

8Hzo

(4)乐谱的发生

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

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

(5)选择模块

选择模块将用一个4位数的控制信号控制乐谱模块数据的选择性,用vhdl语言描述。

两只老虎

1231

345

346

龜待快

胞铸快

151弓

1515

1515

1616

法E艮歌

2设计原理及总体框图

SPEAKERA

J—

CL.K

■SPKS

TONECIO.

・O]

(1)音符的发音频率设定及实现

音符的频率可由一个数控分频器SPEAKERA获得,由其CLK端输入一个有较高频率的信号,通过SPEAKERA分频后由SPROUT输出。

由于直接从数控分频器中出来的输出信号是脉宽极窄的,为了有利于驱动扬声器,需另加一个D触发器以均衡其占空比,但这时的频率将是原来的1/对elk输入信号的分频比由11位预置数Tone[10..0]决定。

SPROUT的辙出频率就有了对应关系。

例如,在TONETABA模块中若取Tone[10..0]=1036,将对应法音符为"

3”音的信号频率。

TONETapa:

CODE[3..©

IMDEX[3.・OJHIGH:

TOMEI:

JL0・•0丁

(2)音符的持续时间XO1

音符的持续时间需根据乐曲的速度及每个一怒的节拍数来确定,图中模块TONETAB/V的功能首先是为SPEAKERA提供决定所发音符的分频预置数,而此数在SPEAKER输入口停留的时间即为次音符的节拍值。

模块TONETABA是乐曲简谱码对应的分频预置数查表电路,其中设置“两只老虎”乐曲全部音符所对应的分频预置数,共M个,每一音符的停留时间由音乐节拍和音调发生器模块NOTETABS的elk输入频率决定,这11个值的输出由对应于TONETABA中Index[3..0]的值ToneIndex[3..0]的输出值与持续时间由模块NOTETABS决定。

在NOTETABS中设置了一个8位二进制计数器(计数最大值为138),这个计数器的技术频率选为4Hz,即每一个计数值停留时间为,恰为当全音符设为Is时,四四拍的4分音符持续时间。

例如,NOTETABS在以下的VHDL逻辑描述中,“两只老虎”乐曲的第一个音符为“5”,此音在逻辑中停留了1个时钟节拍,即时间,相应地,所对应的“”音符分频预置值为在SPEAKERA的输入端开始连续自然地演奏起来了。

设计的总体框图如下:

3程序设计

VHDL程序如下:

(1)是设计电路的顶层设计

LIBRARYIEEE;

USESongerIS

•••

PORT(CLK12MHZ:

INSTDLOGIC;

CLK8HZ:

INSTD_LOGIC;

CODEI:

OUTINTEGERRANGE0TO15;

HIGH1:

OUTSTD_LOGIC;

SPKOUT:

()UTSTDLOGIC):

END;

ARCHITECTUREoneOFSongerIS

COMPONENTNoteTabs

PORT(elk:

ToneIndex:

OUTINTEGERRANGE0TO15);

ENDCOMPONENT;

COMPONENTToneTaba

COMPONENTSpeakera

INSTD_LOGIC;

Tone:

ININTEGERRANGE0TO16#7FF#;

SpkS:

OUTSTDLOGIC):

SIGNALTone:

INTEGERRANGE0TO16#7FF#;

SIGNALToneindex:

INTEGERRANGE0TO15;

BEGIN

ul:

NoteTabsPORTMAP(elk二〉clk8HZ,Toneindex二〉Toneindex);

PORT

u2:

ToneTaba

MAP(Index=>

ToneIndex,Tone=>

Tone,CODE=>

C()DE1,HIGH=>

HIGH1);

u3:

SpeakeraPORTMAP(c1k=>

CLK12MHZ,Tone=>

Tone,SpkS=>

SPKOUT);

END;

(2)是乐曲简谱码对应的分频预置数查表电路。

USEToneTabaIS

PORT(Index:

ININTEGERRANGE0TO15;

CODE:

HIGH:

OUTSTD_LOGIC;

OUTINTEGERRANGE0TO16#7FF#);

ARCHITECTUREoneOFToneTabaIS

Search:

PROCESS(Index)

CASEIndexIS

WHEN0=>

Tone<

=2047;

CODE<

=O:

HIGH<

=101;

WHEN1=>

=773;

C0DE<

=l;

=,0,:

WHEN2=>

=912:

=2:

='

01;

WHEN3=>

=1036;

=3;

=,0,;

WHEN4=>

=l110;

=4;

=,0r:

WHEN5=>

=l197;

=5;

=r0r:

WHEN6=>

=1290;

=6;

WHEN7=>

=1372;

=,11:

WHEN8=>

=1410;

=2;

=r11:

WHEN9=>

=1480;

=3;

WHEN10=>

=1542;

=rI1;

WHENOTHERS二〉NULL;

ENDCASE;

ENDPROCESS;

(3)是设计电路的数控分频器:

USESpeakeraIS

ININTEGERRANGE0TO16#7FF#;

OUTSTD_LOGIC);

ARCHITECTUREoneOFSpeakeraIS

SIGNALPreCLK:

STD_LOGIC;

SIGNALFullSpkS:

STDLOGIC;

DivideCLK:

PROCESS(elk)

VARIABLECount4:

PreCLK<

0'

IFCount4>

11THENPreCLK<

=r11;

Count4:

=0;

ELSIFelk1EVENTANDelk二iTHENCount4:

=Count4+l;

ENDIF;

GENSpkS:

PROCESS(PreCLK,Tone)

VARIABLECount11:

INTEGERRANGE0TO16#7FF#;

IFPreCLK*EVENTANDPreCLK二T'

THEN

IFCount11=16#7FF#THEN

Countll:

=Tone;

FullSpkS<

=,r;

ELSECount11:

=Count11+1;

FullSpkSU'

O'

De1aySpkS:

PROCESS(FullSpkS)

VARIABLECount2:

IFFullSpkS1EVENTANDFullSPKS二T'

THEN

Count2:

=NOTCount2;

IFCount2二TTHENSpkSO'

l'

ELSESpkS<

=,0,;

(4)NOTETABS模块决定音乐的输出值与持续时间:

c

USENoteTabsIS

INSTD丄OGIC;

Toneindex:

ARCHITECTUREoneOFNoteTabsIS

SIGNALCounter:

INTEGERRANGE0TO35;

CNT8:

IFCounter=35THENCounter<

ELSIF(elk1EVENTANDelk二'

)THEN

Counter<

=Counter+l;

PROCESS(Counter)

CASECounterIS

WHEN00=>

ToneIndex<

=l;

WHEN01=>

WHEN02=>

WHEN03=>

WHEN04=>

WHEN05=>

WHEN06=>

WHEN07=>

WHEN08=>

WHEN09=>

=5;

WHEN11=>

WHEN12=>

WHEN13=>

WHEN14=>

WHEN15=>

WHEN16=>

WHEN17=>

=6;

WHEN18=>

WHEN19=>

=4

WHEN20=>

WHEN

21

=>

22

23

24

25

Tonelndex〈=4;

26

27

28

29

30

Tonelndex〈=l;

31

32

33

34

35

4编译及仿真

在这次EDA课程设计过程中,用的是MAX+plusII,它是一种集成的开发环境,提供了一种与结构无关的设计环境,设计者无需精通器件的内部结构,而只需要用自己熟悉的设计输入方式去表达设计内容,MAX+plusII便会自动把这些设计转换成最终结构,所需的格式。

并且MAX+plusII使用方便,具有强大的编程,设计,仿真功能。

顶层设计仿真波形图如下:

-mwpuiirt?

tunutwwuuramijhuiiix%upuur*miuMnap

Rtf.|149笳|亟Tire阴收Irttfrt伽

5硬件调试与结果分析

本实验器件选用EP1K30TC144-1,利用GW48-CK实验开发系统,并使用其中结构图•引脚排列如下:

Clk8hz>

chip=zuhe;

inputpin=54

Clkl2mhz>

inputpin=126

CodelO>

outputpin=33

outputpin=32

outputpin=31

outputpin二30

Highl>

outputpin=81

SPKOUT>

outputpin=99

引脚锁定后再通过编译器对文件重新编译以便将引脚信息编入下载文件中。

然后再将文件下载到实验箱当中,观察实验结果,试验箱开始循环播放“两只老虎”乐曲O

心得体会

通过两周的课程设计,我对EDA的设计有了进一步的认识,对MAXPLUSII的设计步骤也有了更进一步的了解。

这种基于FPGA的音乐硬件演奏电路的设计与实现,不仅通过VHDL层次化和模块化设计方法,同时釆用数控分频和定制LPM-ROM的设计思想,更好的优化了乐曲演奏数字电路的设计,在此基础上不必变化顶层文件架构可随意变更乐曲,有效缩短了产品开发周期、减少了设计芯片的数量、降低了功耗、提高了设计的灵活性、可靠性和可扩展性通过课程设计,感觉还是学到了不少的实践动手能力。

本次课程设计使我对EDA设计的能力和兴趣有很大提髙,受益良多,对自己以后的发展也会起到一定的作用。

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

当前位置:首页 > 求职职场 > 简历

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

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