电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

简易电子琴设计VIP免费

简易电子琴设计_第1页
1/5
简易电子琴设计_第2页
2/5
简易电子琴设计_第3页
3/5
简易电子琴—1人(一)课程设计要求:(1)、设计一个简易的八音符电子琴,它可通过按键输入来控制音响。(2)、演奏时可以选择是手动演奏(由键盘输入)还是自动演奏已存入的乐曲(3)、能够自动演奏多首乐曲,且每首乐曲可重复演奏。它由乐曲自动演奏模块、音调发生模块和数控分频模块三部分组成。(二)1.自动演奏LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYautoISPORT(CLK:INSTD_LOGIC;--系统时钟信号AUTO:INSTD_LOGIC;--键盘输入/自动演奏CLK2:BUFFERSTD_LOGIC;INDEX2:INSTD_LOGIC_VECTOR(7DOWNTO0);--键盘输入信号INDEX0:OUTSTD_LOGIC_VECTOR(7DOWNTO0));--音符信号输出ENDauto;ARCHITECTUREwyf19OFautoISSIGNALCOUNT0:INTEGERRANGE0TO31;--定义中间信号count0BEGINPULSE0:PROCESS(CLK,AUTO)VARIABLECOUNT:INTEGERRANGE0TO8;--定义变量countBEGINIFAUTO='1'THENCOUNT:=0;CLK2<='0';--无键盘信号,不演奏ELSIF(CLK'EVENTANDCLK='1')THEN--开始自动演奏COUNT:=COUNT+1;IFCOUNT=4THENCLK2<='1';ELSIFCOUNT=8THENCLK2<='0';COUNT:=0;ENDIF;ENDIF;ENDPROCESS;MUSIC:PROCESS(CLK2)BEGINIF(CLK2'EVENTANDCLK2='1')THEN--缓冲IF(COUNT0=31)THENCOUNT0<=0;--31一循环ELSECOUNT0<=COUNT0+1;ENDIF;ENDIF;ENDPROCESS;COM1:PROCESS(COUNT0,AUTO,INDEX2)BEGINIFAUTO='0'THEN--有键盘输入,开始演奏CASECOUNT0ISWHEN0=>INDEX0<="00000100";--3WHEN1=>INDEX0<="00000100";--3WHEN2=>INDEX0<="00000100";--3WHEN3=>INDEX0<="00000100";--3WHEN4=>INDEX0<="00010000";--5WHEN5=>INDEX0<="00010000";--5WHEN6=>INDEX0<="00010000";--5WHEN7=>INDEX0<="00100000";--6WHEN8=>INDEX0<="10000000";--8WHEN9=>INDEX0<="10000000";--8WHEN10=>INDEX0<="10000000";--8WHEN11=>INDEX0<="00000100";--3WHEN12=>INDEX0<="00000010";--2WHEN13=>INDEX0<="00000010";--2WHEN14=>INDEX0<="00000001";--1WHEN15=>INDEX0<="00000001";--1WHEN16=>INDEX0<="00010000";--5WHEN17=>INDEX0<="00010000";--5WHEN18=>INDEX0<="00001000";--4WHEN19=>INDEX0<="00001000";--4WHEN20=>INDEX0<="00001000";--4WHEN21=>INDEX0<="00000100";--3WHEN22=>INDEX0<="00000010";--2WHEN23=>INDEX0<="00000010";--2WHEN24=>INDEX0<="00010000";--5WHEN25=>INDEX0<="00010000";--5WHEN26=>INDEX0<="00001000";--4WHEN27=>INDEX0<="00001000";--4WHEN28=>INDEX0<="00000100";--3WHEN29=>INDEX0<="00000100";--3WHEN30=>INDEX0<="00000010";--2WHEN31=>INDEX0<="00000010";--2WHENOTHERS=>NULL;ENDCASE;ELSEINDEX0<=INDEX2;--由键盘控制音符信号输出ENDIF;ENDPROCESS;--结束进程ENDARCHITECTUREwyf19;2.音调发生模块的VHDL源程序(TONE.VHD)LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYTONEISPORT(INDEX:INSTD_LOGIC_VECTOR(7DOWNTO0);--音符输入信号CODE:OUTSTD_LOGIC_VECTOR(6DOWNTO0);--音符显示信号HIGH:OUTSTD_LOGIC;--高低音显示信号TONE0:OUTINTEGERRANGE0TO2047);--音符的分频系数ENDTONE;ARCHITECTUREARTOFTONEISBEGINSEARCH:PROCESS(INDEX)BEGINCASEINDEXISWHEN”00000001”=>TONE0<=773;CODE<=”1001111”;HIGH<=’1’;WHEN”00000010”=>TONE0<=912;CODE<=”0010010”;HIGH<=’1’;WHEN”00000100”=>TONE0<=1036;CODE<=”0000110”;HIGH<=’1’;WHEN”00001000”=>TONE0<=1116;CODE<=”1001100”;HIGH<=’1’;WHEN”00010000”=>TONE0<=1197;CODE<=”0100100”;HIGH<=’1’;WHEN”00100000”=>TONE0<=1290;CODE<=”0100000”;HIGH<=’0’;WHEN”01000000”=>TONE0<=1372;CODE<=”0001111”;HIGH<=’0’;WHEN”10000000”=>TONE0<=1410;CODE<=”0000000”;HIGH<=’0’;WHENOTHERS=>TONE0<=2047;CODE<=”0000001”;HIGH<=’0’;ENDCASE;ENDPROCESS;ENDART;3.数控分频模块的VHDL源程序(FENPIN.VHD)LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYFENPINISPORT(CLK1:INSTD_LOGIC;--系统时钟信号TONE1:ININTEGERRANGE0TO2047;--音符分频系数SPKS:OUTSTD_LOGIC);--驱动扬声器的音频信号ENDENTITYFENPIN;ARCHITECTUREARTOFFENPINISSIGNALPRECLK:STD_LOGIC;SIGNALFULLSPKS:STD_LOGIC;BEGINPROCESS(CLK1)VARIABLECOUNT:INTEGERRANGE0TO8;BEGINIF(CLK1’EVENTANDCLK1=’1’)THENCOUNT:=COUNT+1;IFCOUNT=2THENPRECLK<=’1’;ELSIFCOUNT=4THENPRECLK<=’0’;COUNT:=0;ENDIF;ENDIF;ENDPROCESS;PROCESS(PRECLK,TONE1)VARIABLECOUNT11:INTEGERRANGE0TO2047;BEGINIF(PRECLK’EVENTANDPRECLK=’1’)THENIFCOUNT11

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

简易电子琴设计

您可能关注的文档

确认删除?
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群