梁祝乐曲乐曲硬件演奏电路的VHDL设计eda课程设计Word格式文档下载.docx

上传人:b****6 文档编号:20682271 上传时间:2023-01-25 格式:DOCX 页数:13 大小:18.52KB
下载 相关 举报
梁祝乐曲乐曲硬件演奏电路的VHDL设计eda课程设计Word格式文档下载.docx_第1页
第1页 / 共13页
梁祝乐曲乐曲硬件演奏电路的VHDL设计eda课程设计Word格式文档下载.docx_第2页
第2页 / 共13页
梁祝乐曲乐曲硬件演奏电路的VHDL设计eda课程设计Word格式文档下载.docx_第3页
第3页 / 共13页
梁祝乐曲乐曲硬件演奏电路的VHDL设计eda课程设计Word格式文档下载.docx_第4页
第4页 / 共13页
梁祝乐曲乐曲硬件演奏电路的VHDL设计eda课程设计Word格式文档下载.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

梁祝乐曲乐曲硬件演奏电路的VHDL设计eda课程设计Word格式文档下载.docx

《梁祝乐曲乐曲硬件演奏电路的VHDL设计eda课程设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《梁祝乐曲乐曲硬件演奏电路的VHDL设计eda课程设计Word格式文档下载.docx(13页珍藏版)》请在冰豆网上搜索。

梁祝乐曲乐曲硬件演奏电路的VHDL设计eda课程设计Word格式文档下载.docx

Sperkera模块仿真图:

5.《梁祝》(音乐数据):

将数据保存为.mif格式然后制作成LMP_ROM文件。

六、实验结果:

(程序下载验证是否通过)

试验成功!

将设计出的演奏电路的程序经过编译(Compiler)后,选择FLEX10K系列中EPF10K10LC84-4作为目标器件(Assign/Device),并进行管脚锁定(FloorplanEditor)。

器件编程(Programmer),将编译生成的*.sof文件下载到目标芯片。

观察到数码管5显示出演奏时的音乐简谱,发光二极管D5指示音调高低,同时实验箱自带蜂鸣器(Speaker)奏出“梁祝”那凄美动人的旋律,实验成功。

七、总结:

本次乐曲硬件演奏电路的VHDL设计主要采用数控分频原理来实现,在本次EDA课程设计中,我与其他同学相互交流,相互学习,提高了用VHDL语言编程的技能及进一步加强了MAX+plusⅡ对这种EDA流行软件的应用,通过这次设计,我们温故了已学的理论知识和实践操作技能,同时也学习了更多的新的知识和技能,为以后进一步的学习和工作打下了坚实的基础。

本设计得到的电路可以作为一个乐曲演奏模块,如果要演奏出另外一首曲子,只需将该曲子出现的简谱分频预置数写入,再将该曲子的节拍表制作成ROM文件输入到中,编译后,编程下载即可。

具体代码:

libraryieee;

usesongeris

port(clk4MHz:

instd_logic;

clk4Hz:

clk:

sel:

outstd_logic_vector(2downto0);

sm:

outstd_logic_vector(6downto0);

spk:

outstd_logic);

end;

architectureoneofsongeris

componentnotetabs

port(clk:

toneindex:

outintegerrange0to15);

endcomponent;

componenttonetaba

port(index:

inintegerrange0to15;

low:

outstd_logic_vector(3downto0);

mid:

high:

tone:

outintegerrange0to16#1FFF#);

componentspeakera

inintegerrange0to16#1FFF#;

spks:

signaltone:

integerrange0to16#1FFF#;

signaltoneindex:

integerrange0to15;

signalq_s:

std_logic_vector(3downto0);

signaltmp:

integerrange0to2;

signallow1,mid1,high1:

begin

u1:

notetabsportmap(clk=>

clk4Hz,toneindex=>

toneindex);

u2:

tonetabaportmap(index=>

toneindex,tone=>

tone,low=>

low1,mid=>

mid1,high=>

high1);

u3:

speakeraportmap(clk=>

clk4MHz,tone=>

tone,spks=>

spk);

process(clk)

begin

if(clk'

eventandclk='

1'

)then

tmp<

=tmp+1;

endif;

endprocess;

process(tmp)

iftmp=0thenq_s<

=low1;

sel<

="

001"

;

elsiftmp=1thenq_s<

=mid1;

010"

elsiftmp=2thenq_s<

=high1;

100"

endprocess;

process(q_s)

caseq_sis

when"

0000"

=>

sm<

1111110"

0001"

0110000"

0010"

1101101"

0011"

1111001"

0100"

0110011"

0101"

1011011"

0110"

1011111"

0111"

1110000"

1000"

1111111"

1001"

1111011"

whenothers=>

0000000"

endcase;

音乐节拍和音调发生器()

LIBRARYIEEE;

USENoteTabsIS

PORT(clk:

INSTD_LOGIC;

ToneIndex:

OUTintegerrange0to15);

END;

ARCHITECTUREoneOFNoteTabsIS

SIGNALCounter:

integerrange0to138;

BEGIN

CNT8:

PROCESS(clk)

IFCounter=138THENCounter<

=0;

ELSIFclk'

EVENTANDclk='

THEN

Counter<

=Counter+1;

ENDIF;

ENDPROCESS;

SEARCH:

PROCESS(COUNTER)

casecounteris

when00=>

toneindex<

=3;

when01=>

when02=>

when03=>

when04=>

=5;

when05=>

when06=>

when07=>

=6;

when08=>

=8;

when09=>

when10=>

when11=>

=9;

when12=>

when13=>

when14=>

when15=>

when16=>

=12;

when17=>

when18=>

when19=>

=15;

when20=>

=13;

when21=>

when22=>

=10;

when23=>

when24=>

when25=>

when26=>

when27=>

when28=>

when29=>

when30=>

when31=>

=0;

when32=>

when33=>

when34=>

when35=>

when36=>

=7;

when37=>

when38=>

when39=>

when40=>

when41=>

when42=>

when43=>

when44=>

when45=>

when46=>

when47=>

when48=>

when49=>

when50=>

when51=>

when52=>

when53=>

when54=>

when55=>

when56=>

when57=>

when58=>

when59=>

when60=>

when61=>

when62=>

when63=>

when64=>

when65=>

when66=>

when67=>

when68=>

when69=>

when70=>

when71=>

when72=>

when73=>

when74=>

when75=>

when76=>

when77=>

when78=>

when79=>

when80=>

when81=>

when82=>

when83=>

when84=>

when85=>

when86=>

when87=>

when88=>

when89=>

when90=>

when91=>

when92=>

when93=>

when94=>

when95=>

when96=>

when97=>

when98=>

when99=>

when100=>

when101=>

when102=>

when103=>

when104=>

when105=>

when106=>

when107=>

when108=>

when109=>

when110=>

when111=>

when112=>

when113=>

when114=>

when115=>

when116=>

when117=>

when118=>

when119=>

when120=>

when121=>

when122=>

when123=>

when124=>

when125=>

when126=>

when127=>

when128=>

when129=>

when130=>

when131=>

when132=>

when133=>

when134=>

when135=>

when136=>

when137=>

when138=>

whenothers=>

null;

endcase;

简谱码对应的分频预置数查表电路()

usetonetabais

port(index:

architectureoneoftonetabais

search:

process(index)

caseindexis

when0=>

tone<

=8191;

low<

mid<

high<

when3=>

=2124;

when5=>

=3089;

when6=>

=3646;

when7=>

=4141;

when8=>

=4369;

when9=>

=4786;

=5157;

=5640;

=5918;

=6280;

数控分频与演奏发生器()

usespeakerais

PORT(clk:

INSTD_LOGIC;

Tone:

INintegerrange0to16#1FFF#;

SpkS:

OUTSTD_LOGIC);

ARCHITECTUREoneOFSpeakeraIS

SIGNALPreCLK,FullSpkS:

STD_LOGIC;

DivideCLK:

PROCESS(clk)

VARIABLECount4:

integerrange0to15;

BEGIN

PreCLK<

='

0'

IFCount4>

13THEN

Count4:

=Count4+1;

GenSpkS:

PROCESS(PreCLK,Tone)

VARIABLECount13:

integerrange0to16#1FFF#;

IFPreCLK'

EVENTANDPreCLK='

THEN

IFCount13=16#1FFF#THEN

Count13:

=Tone;

FullSpkS<

ELSECount13:

=Count13+1;

ENDIF;

DelaySpkS:

PROCESS(FullSpkS)

VARIABLECount2:

IFFullSpkS'

EVENTANDFullSpkS='

Count2:

=NOTCount2;

IFCount2='

THENSpkS<

ELSESpkS<

ENDPROCESS;

设置引脚

Clk2

Clk4hz1

Clk4MHZ43

Sel05

Sel16

Sel27

Sm024

Sm123

Sm222

Sm321

Sm419

Sm518

Sm617

Spk3

波形图:

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

当前位置:首页 > 求职职场 > 面试

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

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