EDA技术实验报告--硬件乐曲演奏电路设计.docx
实验报告课程-EDA技术实验名称硬件乐曲演奏电路设计第页一、实验目的1、设计数控分频器,学习设计硬件乐曲演奏电路;2、学习使用开发板,将设计好的电路烧写进去,使其实现具体的功能;二、实验内容1、设计一个分频器,实现2OM->1M,20M>4HZ的分频;2、利用ROM写入梁祝的乐谱码;3、利用1中分频分得的4HZ设计一个计数器,使得读完梁祝中139个节拍后得以置零;4、设计一个译码电路,使得梁祝乐谱码可以转换成相应的音符频率;5、设计一个11位的数控分频器,使得梁祝中的每一个音符的音调得以确定:三、实验环境QuartusII软件四、实验步骤1、设计一个分频器,实现20M>1M,20M->4HZ的分频;(1)实验代码:123456789IO11121314151617181920212223242526272829LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD2LOGIC2UNSIGNED.ALL;HENTITYM_20DIVIS-HPORT(INCLKO:INSTD_LOGIC;CLKlMzCLK4:OUTSTD_LOGIC);END;HARCHITECTUREONEOFM_20DIVISSIGNALRl,R2zR3zR4:-STDJLOGIjVECTOR(7DO三TO0)SIGNALCXzCYzCZzCQ:STDlLOGlC一;HBEGINIMDIVISIONaprocess(inclko)BEGINHIFINCLKO,EVENTANDINCLKO='1,THENIFRl=9THENRl<三,00000000r,;CX<=NOTCX;HELSER1<=R1+1;ENDIF;ENDIF;CLK1M<=CX;ENDPROCESS;4HZDIVISIONHPROCESS(CX)BEGINHIFINCLKO,EVENTANDINCLKO=,1,THENIFR2=249THENR2<=,00000000,r;CY<=NOTCY;HELSER2<=R2+1;30313233343536373839404142434445464748495051ENDIF;ENDIF;ENDPROCESS;HPROCESS(CY)BEGINHIFCY,EVENTANDCY='1'THENIFR3=249THENR3<=,00000000,r;CZ<=NOTCZ;HELSER3<=R3+1;ENDIF;ENDIF;CLK4<三CZ;ENDPROCESS;HPROCESS(CZ)BEGINHIFCZ,EVENTANDCZ三,1,THENIFR4=9THENR4<=,00000000r,;CQ<=NOTCQ;ELSER4<=R4+1;ENDIF;ENDIF;CLK4<三CQ;ENDPROCESS;ENDONE;(2)代码说明本模块代码是实现将输入为20MHZ信号分频成IMHZ和4HZ的信号。2、利用RoM写入梁祝的乐谱码用LMP ROU进行定制和调用:Cyclone IIICurrentlyselecteddevicefamily:HMatchProjeCt/defaultFamilysupportsLPM_R0Monlyinbackward-compatibilitymode.AlterarecommendsusingALTSYNCRAMwizard.Howwideshouldthe,q'ou(putbusbe?4v;bitsHowmany4-bitwordsofmemory?256Vwords将梁祝的乐谱码写入到ROM:3;01:3;02:3;03:3;04:5;05:5;06:5;07:6;08:8;09:8;10:8;11:9;12:6;13:8;14:5;15:5;16:12;17:12;18:12;19:15;20:13:21:12;22:10;23:12;24:9;25:9;26:9;27:9;28:9;29:9;30:9;31:0;32:9;53:9;34:9;35:10;36:7;37:7;38:6;39:6;40:5;41:5;42:5;43:6;44:8;45:8;46:9;47:9;48:3;49:3;50: 8;51:8;52:6;53:5;54:6;55:8;56:5;57:5;58:5;59:5;60: 5;61:5;62:5;63:5;64:10;65:10;66:10;67:12;68:7;69:7;78:5;79:5;88:6;89:6;98:8;99:9;73:83:93:6 3 62:2:2:-8 99 5 61117 8 99 3 6 m80:笫75:85:95: 5;5;5;59 8 7:7:7:-8 95;fz,&6 6 67 8 9 5;6 100:12;102:12;103:10:104:9;105:9:106:10;107:9;108:8;109:8;110: 6;111:5;112:3;113:3;114:3;115:3;116:8;117:8:118:8:119:8;120: 6;121:8;122:6;123:5;124:3;125:5;126:6;127:8;128:5;129:5;130: 5;131:5;132:5;133:5;134:5;135:5;136:0;137:0;138:0;1 3、利用1中分频分得的4HZ设计一个计数器,使得读完梁祝中139个节拍后得以置零;(1)实验代码:2 1.IBRARYIEEE;3 USEIEEE.STD_LOGIC_1164.ALL;4 USEIEEE.STD2LOGIC2UNSIGNED.ALL;5 HENTITYcetl38tIS-6 HPORT(elk:INSTD_LOGIC;7 cnt8:OUTSTD_LOGIC_VECTOR(7DO三TO0);8 END;9 HARCHITECTUREoneOFcetl38tIS10 SIGNALCounter:STD_LOGIC_VECTOR(7DOWNTO0);11 HBEGIN12 HPROCESS(clkzCounter)13 BEGIN13HIFCounter=138THENCounter<=,r00000000,r;14 ELSIF(clk,EVENTANDelk=,1,)THENCounter<=Counter+1;ENDIF;15 ENDPROCESS;16 cnt8<=counter;1,7FMTt(2)仿真结果:Valueat0PS320.0ns640.0ns960.0ns1.28i3ps_TLrTn_n_n_n_n_n_n_n_n_n_TTfmtmm-mmmfryn(3)结果说明:此模块仅仅是单纯的计数模块,当计数到138后,重新计数;4、设计一个译码电路,使得梁祝乐谱码可以转换成相应的音符频率;(1)实验代码2345678910111213141516171819202122232425262728291.IBRARYIEEE;USEIEEE.STDLOGIC1164.ALL;HENTITYf_codeISPORT-(Index:INCODE:OUTHI_GH:OUTTone:OUTSTD_LOGIC_VECTORSTD二LoGIUVECTORSTD二LOGlC?STD-LOGIcVECTOR(3DOWNTO0)(3DOWNTO0)(10DOUNTO0);30END;BARCHITECTUREBEGINoneOFfcodeISSearch:BEGINCASEWHENWHENWHENWHENWHENUHENUHENUHENWHENUHENWHENUHENUHENWHENPROCESS(Index)IndexIS,0000r,0001r,0010,r,0011r,0101,f,0110,r,0111,r,1000,r,1001r,1010,rr,1100r,1101,r,llll,rOTHERS=>=>=>=>>ENDCASE;ENDPROCESS;END;(2)仿真结果:译码电路,有表方式,控制音调的预置数Tone<=wOll0101"Tone<=,01110010000wTone<=,r10000001100r,Tone<=,r10010101101MTone<="10100001010r,Tone<=,10IOlOll100r,Tone<=r,10110000010r,Tone<-rrIOlllOO1000nTone<三r,11000000110Tone<-,11001010110wTone<-,11010000100r,one<-r,ooooooor,NULL;CODE<=,OOOOr,;CODE<=w0001,r;;code<=mooiom;CODE<=,Oll,r;CODE<=,0101r,;;C0DE<=,0110m;;CODE<=,0111r,;CDE<=,0001,r;;C0DE<=r,0010,r;;CODE<-,OOHr,;;CODE<-r,0101,r;;CODE<-,OHO,r;;CODE<-,0001f,;HI_GHHIlGHHI二GHHl二GHHl二GHHl二GHHI二GHHllGHHlGHHl二GHHl二GHH工二GHHIGH<=<=<=<=<=<=<=0000000111111;2047;773;912;1036;1197;1290;1372;1410;1480;1542;;1622;1668;1728;实验说明:如仿真图所示,当取相应的输入时,输出将其译码成11位的二进制数、查表方式以及控制音调的预置数(code,high在本实验中没有用到):5、设计一个11位的数控分频器,使得梁祝中的每一个音符的音调得以确定;1 (1)实验代码:2 1.IBRARYIEEE;3 USEIEEE.STD_LOGIC_1164.ALL;4 USEIEEE.STD二LOG工UUNSlGNED.ALL;5 HENTITYSpeakersIS6 HPORT(elk:INSTD_LOGIC;7 Tone:INSTDlLoGlJUECTOR(10DOWNTO0);