VHDL音乐播放器源代码.docx
- 文档编号:30656739
- 上传时间:2023-08-19
- 格式:DOCX
- 页数:24
- 大小:17.93KB
VHDL音乐播放器源代码.docx
《VHDL音乐播放器源代码.docx》由会员分享,可在线阅读,更多相关《VHDL音乐播放器源代码.docx(24页珍藏版)》请在冰豆网上搜索。
VHDL音乐播放器源代码
4m分频
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitydiv4is
port(clk_in:
instd_logic;
clk_out:
outstd_logic);
end;
architectureaofdiv4is
signalcnt:
integerrange0to6;
signalclk_tmp:
std_logic;
begin
process(clk_in)
begin
if(clk_in'eventandclk_in='1')then
ifcnt=6then
cnt<=0;
clk_tmp<=notclk_tmp;
else
cnt<=cnt+1;
endif;
endif;
endprocess;
clk_out<=clk_tmp;
end;
4分频
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitydiv4mis
port(clk_in:
instd_logic;
clk_out:
outstd_logic);
end;
architectureaofdiv4mis
signalcnt:
integerrange0to6249999;
signalclk_tmp:
std_logic;
begin
process(clk_in)
begin
if(clk_in'eventandclk_in='1')then
ifcnt=6249999then
cnt<=0;
clk_tmp<=notclk_tmp;
else
cnt<=cnt+1;
endif;
endif;
endprocess;
clk_out<=clk_tmp;
end;
speaker
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYSpeakerIS
PORT(CK4MHZ:
INSTD_LOGIC;
YINFU:
ININTEGERRANGE0TO21;
SP:
OUTSTD_LOGIC);
ENDSpeaker;
ARCHITECTUREcntOFSpeakerIS
SIGNALcount:
INTEGER:
=0;
SIGNALF,TWO:
STD_LOGIC;
BEGIN
PROCESS(YINFU,CK4MHZ)
BEGIN
IF(CK4MHZ'EVENTANDCK4MHZ='1')THEN
IF(YINFU=0)THENF<='0';
ELSIF(YINFU=1)THENcount<=count+1;
IF(count<7644)THENF<='0';ELSEF<='1';count<=0;
ENDIF;
ELSIF(YINFU=2)THENcount<=count+1;
IF(count<6810)THENF<='0';ELSEF<='1';count<=0;
ENDIF;
ELSIF(YINFU=3)THENcount<=count+1;
IF(count<6068)THENF<='0';ELSEF<='1';count<=0;
ENDIF;
ELSIF(YINFU=4)THENcount<=count+1;
IF(count<5726)THENF<='0';ELSEF<='1';count<=0;
ENDIF;
ELSIF(YINFU=5)THENcount<=count+1;
IF(count<5102)THENF<='0';ELSEF<='1';count<=0;
ENDIF;
ELSIF(YINFU=6)THENcount<=count+1;
IF(count<4546)THENF<='0';ELSEF<='1';count<=0;
ENDIF;
ELSIF(YINFU=7)THENcount<=count+1;
IF(count<4050)THENF<='0';ELSEF<='1';count<=0;
ENDIF;
ELSIF(YINFU=8)THENcount<=count+1;
IF(count<3822)THENF<='0';ELSEF<='1';count<=0;
ENDIF;
ELSIF(YINFU=9)THENcount<=count+1;
IF(count<3406)THENF<='0';ELSEF<='1';count<=0;
ENDIF;
ELSIF(YINFU=10)THENcount<=count+1;
IF(count<3034)THENF<='0';ELSEF<='1';count<=0;
ENDIF;
ELSIF(YINFU=11)THENcount<=count+1;
IF(count<2864)THENF<='0';ELSEF<='1';count<=0;
ENDIF;
ELSIF(YINFU=12)THENcount<=count+1;
IF(count<2552)THENF<='0';ELSEF<='1';count<=0;
ENDIF;
ELSIF(YINFU=13)THENcount<=count+1;
IF(count<2272)THENF<='0';ELSEF<='1';count<=0;
ENDIF;
ELSIF(YINFU=14)THENcount<=count+1;
IF(count<2024)THENF<='0';ELSEF<='1';count<=0;
ENDIF;
ELSIF(YINFU=15)THENcount<=count+1;
IF(count<1912)THENF<='0';ELSEF<='1';count<=0;
ENDIF;
ELSIF(YINFU=16)THENcount<=count+1;
IF(count<1702)THENF<='0';ELSEF<='1';count<=0;
ENDIF;
ELSIF(YINFU=17)THENcount<=count+1;
IF(count<1516)THENF<='0';ELSEF<='1';count<=0;
ENDIF;
ELSIF(YINFU=18)THENcount<=count+1;
IF(count<1432)THENF<='0';ELSEF<='1';count<=0;
ENDIF;
ELSIF(YINFU=19)THENcount<=count+1;
IF(count<1276)THENF<='0';ELSEF<='1';count<=0;
ENDIF;
ELSIF(YINFU=20)THENcount<=count+1;
IF(count<1136)THENF<='0';ELSEF<='1';count<=0;
ENDIF;
ELSIF(YINFU=21)THENcount<=count+1;
IF(count<1012)THENF<='0';ELSEF<='1';count<=0;
ENDIF;
ENDIF;ENDIF;
ENDPROCESS;
PROCESS(F)
BEGIN
IF(F'EVENTANDF='1')THEN---输出之前的二分频
TWO<=NOTTWO;
ENDIF;
SP<=TWO;
ENDPROCESS;
ENDcnt;
Yinfu
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYyinfuIS
PORT(CK4HZ:
INSTD_LOGIC;
YF:
OUTINTEGERRANGE0TO21);
ENDyinfu;
ARCHITECTURENAMEOFyinfuIS
SIGNALCOUNT:
INTEGER:
=0;
BEGIN
PROCESS(ck4HZ)
BEGIN
IF(ck4HZ'EVENTANDck4HZ='1')THEN
IF(COUNT<101)THENCOUNT<=COUNT+1;ELSECOUNT<=0;
ENDIF;ENDIF;
ENDPROCESS;
PROCESS(COUNT)
BEGIN
CASECOUNTIS
WHEN00=>YF<=0;
WHEN01=>YF<=0;
WHEN02=>YF<=13;
WHEN03=>YF<=14;
WHEN04=>YF<=15;
WHEN05=>YF<=15;
WHEN06=>YF<=15;
WHEN07=>YF<=15;
WHEN08=>YF<=15;
WHEN09=>YF<=15;
WHEN10=>YF<=15;
WHEN11=>YF<=14;
WHEN12=>YF<=14;
WHEN13=>YF<=17;
WHEN14=>YF<=17;
WHEN15=>YF<=17;
WHEN16=>YF<=17;
WHEN17=>YF<=20;
WHEN18=>YF<=20;
WHEN19=>YF<=20;
WHEN20=>YF<=20;
WHEN21=>YF<=0;
WHEN22=>YF<=19;
WHEN23=>YF<=19;
WHEN24=>YF<=18;
WHEN25=>YF<=19;
WHEN26=>YF<=15;
WHEN27=>YF<=15;
WHEN28=>YF<=15;
WHEN29=>YF<=18;
WHEN30=>YF<=18;
WHEN31=>YF<=18;
WHEN32=>YF<=17;
WHEN33=>YF<=17;
WHEN34=>YF<=17;
WHEN35=>YF<=17;
WHEN36=>YF<=16;
WHEN37=>YF<=16;
WHEN38=>YF<=16;
WHEN39=>YF<=16;
WHEN40=>YF<=15;
WHEN41=>YF<=14;
WHEN42=>YF<=14;
WHEN43=>YF<=15;
WHEN44=>YF<=15;
WHEN45=>YF<=15;
WHEN46=>YF<=14;
WHEN47=>YF<=14;
WHEN48=>YF<=13;
WHEN49=>YF<=14;
WHEN50=>YF<=15;
WHEN51=>YF<=15;
WHEN52=>YF<=15;
WHEN53=>YF<=15;
WHEN54=>YF<=15;
WHEN55=>YF<=15;
WHEN56=>YF<=15;
WHEN57=>YF<=15;
WHEN58=>YF<=14;
WHEN59=>YF<=14;
WHEN60=>YF<=17;
WHEN61=>YF<=17;
WHEN62=>YF<=17;
WHEN63=>YF<=20;
WHEN64=>YF<=20;
WHEN65=>YF<=20;
WHEN66=>YF<=20;
WHEN67=>YF<=0;
WHEN68=>YF<=19;
WHEN69=>YF<=19;
WHEN70=>YF<=18;
WHEN71=>YF<=19;
WHEN72=>YF<=19;
WHEN73=>YF<=19;
WHEN74=>YF<=15;
WHEN75=>YF<=15;
WHEN76=>YF<=15;
WHEN77=>YF<=15;
WHEN78=>YF<=18;
WHEN79=>YF<=18;
WHEN80=>YF<=18;
WHEN81=>YF<=18;
WHEN82=>YF<=19;
WHEN83=>YF<=19;
WHEN84=>YF<=19;
WHEN85=>YF<=18;
WHEN86=>YF<=17;
WHEN87=>YF<=17;
WHEN88=>YF<=16;
WHEN89=>YF<=16;
WHEN90=>YF<=15;
WHEN91=>YF<=15;
WHEN92=>YF<=14;
WHEN93=>YF<=14;
WHEN94=>YF<=13;
WHEN95=>YF<=13;
WHEN96=>YF<=13;
WHEN97=>YF<=13;
WHEN98=>YF<=0;
WHEN99=>YF<=0;
WHEN100=>YF<=6;
WHEN101=>YF<=6;
WHENOTHERS=>NULL;
ENDCASE;
ENDPROCESS;
ENDNAME;
Yinfu1
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYyinfu1IS
PORT(CK4HZ:
INSTD_LOGIC;
YF:
OUTINTEGERRANGE0TO21);
ENDyinfu1;
ARCHITECTURENAMEOFyinfu1IS
SIGNALCOUNT:
INTEGER:
=0;
BEGIN
PROCESS(ck4HZ)
BEGIN
IF(ck4HZ'EVENTANDck4HZ='1')THEN
IF(COUNT<118)THENCOUNT<=COUNT+1;ELSECOUNT<=0;
ENDIF;ENDIF;
ENDPROCESS;
PROCESS(COUNT)
BEGIN
CASECOUNTIS
WHEN00=>YF<=6;
WHEN01=>YF<=6;
WHEN02=>YF<=6;
WHEN03=>YF<=6;
WHEN04=>YF<=6;
WHEN05=>YF<=6;
WHEN06=>YF<=6;
WHEN07=>YF<=6;
WHEN08=>YF<=8;
WHEN09=>YF<=9;
WHEN10=>YF<=10;
WHEN11=>YF<=12;
WHEN12=>YF<=15;
WHEN13=>YF<=15;
WHEN14=>YF<=15;
WHEN15=>YF<=15;
WHEN16=>YF<=15;
WHEN17=>YF<=15;
WHEN18=>YF<=15;
WHEN19=>YF<=15;
WHEN20=>YF<=15;
WHEN21=>YF<=15;
WHEN22=>YF<=15;
WHEN23=>YF<=15;
WHEN24=>YF<=10;
WHEN25=>YF<=10;
WHEN26=>YF<=12;
WHEN27=>YF<=12;
WHEN28=>YF<=15;
WHEN29=>YF<=16;
WHEN30=>YF<=17;
WHEN31=>YF<=17;
WHEN32=>YF<=17;
WHEN33=>YF<=17;
WHEN34=>YF<=18;
WHEN35=>YF<=18;
WHEN36=>YF<=18;
WHEN37=>YF<=18;
WHEN38=>YF<=18;
WHEN39=>YF<=18;
WHEN40=>YF<=18;
WHEN41=>YF<=18;
WHEN42=>YF<=10;
WHEN43=>YF<=12;
WHEN44=>YF<=15;
WHEN45=>YF<=16;
WHEN46=>YF<=15;
WHEN47=>YF<=15;
WHEN48=>YF<=15;
WHEN49=>YF<=15;
WHEN50=>YF<=14;
WHEN51=>YF<=15;
WHEN52=>YF<=16;
WHEN53=>YF<=18;
WHEN54=>YF<=16;
WHEN55=>YF<=12;
WHEN56=>YF<=13;
WHEN57=>YF<=14;
WHEN58=>YF<=10;
WHEN59=>YF<=11;
WHEN60=>YF<=9;
WHEN61=>YF<=9;
WHEN62=>YF<=10;
WHEN63=>YF<=10;
WHEN64=>YF<=10;
WHEN65=>YF<=10;
WHEN66=>YF<=6;
WHEN67=>YF<=6;
WHEN68=>YF<=6;
WHEN69=>YF<=6;
WHEN70=>YF<=6;
WHEN71=>YF<=6;
WHEN72=>YF<=6;
WHEN73=>YF<=8;
WHEN74=>YF<=9;
WHEN75=>YF<=10;
WHEN76=>YF<=12;
WHEN77=>YF<=15;
WHEN78=>YF<=15;
WHEN79=>YF<=15;
WHEN80=>YF<=15;
WHEN81=>YF<=15;
WHEN82=>YF<=15;
WHEN83=>YF<=15;
WHEN84=>YF<=15;
WHEN85=>YF<=10;
WHEN86=>YF<=12;
WHEN87=>YF<=15;
WHEN88=>YF<=16;
WHEN89=>YF<=15;
WHEN90=>YF<=15;
WHEN91=>YF<=15;
WHEN92=>YF<=15;
WHEN93=>YF<=18;
WHEN94=>YF<=18;
WHEN95=>YF<=18;
WHEN96=>YF<=18;
WHEN97=>YF<=10;
WHEN98=>YF<=12;
WHEN99=>YF<=15;
WHEN100=>YF<=16;
WHEN101=>YF<=15;
WHEN102=>YF<=15;
WHEN103=>YF<=15;
WHEN104=>YF<=15;
WHEN105=>YF<=14;
WHEN106=>YF<=14;
WHEN107=>YF<=14;
WHEN108=>YF<=15;
WHEN109=>YF<=16;
WHEN110=>YF<=17;
WHEN111=>YF<=17;
WHEN112=>YF<=17;
WHEN113=>YF<=8;
WHEN114=>YF<=8;
WHEN115=>YF<=7;
WHEN116=>YF<=7;
WHEN117=>YF<=6;
WHEN118=>YF<=6;
WHENOTHERS=>NULL;
ENDCASE;
ENDPROCESS;
ENDNAME;
Yinfu2
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYyinfu2IS
PORT(CK4HZ:
INSTD_LOGIC;
YF:
OUTINTEGERRANGE0TO21);
ENDyinfu2;
ARCHITECTURENAMEOFyinfu2IS
SIGNALCOUNT:
INTEGER:
=0;
BEGIN
PROCESS(ck4HZ)
BEGIN
IF(ck4HZ'EVENTANDck4HZ='1')THEN
IF(COUNT<30)THENCOUNT<=COUNT+1;ELSECOUNT<=0;
ENDIF;ENDIF;
ENDPROCESS;
PROCESS(COUNT)
BEGIN
CASECOUNTIS
WHEN00=>YF<=13;
WHEN01=>YF<=15;
WHEN02=>YF<=15;
WHEN03=>YF<=15;
WHEN04=>YF<=0;
WHEN05=>YF<=13;
WHEN06=>YF<=15;
WHEN07=>YF<=15;
WHEN08=>YF<=15;
WHEN09=>YF<=15;
WHEN10=>YF<=15;
WHEN11=>YF<=0;
WHEN12=>YF<=0;
WHEN13=>YF<=0;
WHEN14=>YF<=0;
WHEN15=>YF<=15;
WHEN16=>YF<=13;
WHEN17=>YF<=15;
WHEN18=>YF<=15;
WHEN19=>YF<=15;
WHEN20=>YF<=15;
WHEN21=>YF<=15;
WHEN22=>YF<=10;
WHEN23=>YF<=15;
WHE
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VHDL 音乐 播放 源代码