梁祝乐曲乐曲硬件演奏电路的VHDL设计eda课程设计Word格式文档下载.docx
- 文档编号:20682271
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:13
- 大小:18.52KB
梁祝乐曲乐曲硬件演奏电路的VHDL设计eda课程设计Word格式文档下载.docx
《梁祝乐曲乐曲硬件演奏电路的VHDL设计eda课程设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《梁祝乐曲乐曲硬件演奏电路的VHDL设计eda课程设计Word格式文档下载.docx(13页珍藏版)》请在冰豆网上搜索。
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
波形图:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 梁祝 乐曲 硬件 演奏 电路 VHDL 设计 eda 课程设计