简易电子琴.docx
- 文档编号:26569005
- 上传时间:2023-06-20
- 格式:DOCX
- 页数:12
- 大小:25.69KB
简易电子琴.docx
《简易电子琴.docx》由会员分享,可在线阅读,更多相关《简易电子琴.docx(12页珍藏版)》请在冰豆网上搜索。
简易电子琴
EDA课程设计报告书
课题名称
简易电子琴
姓名
学号
院、系、部
电气工程系
专业
电子信息工程
指导教师
2010年7月9日
一、设计任务及要求:
1、系统设计要求
(1)设计一个简易的八音符电子琴
(2)能够自动演奏乐曲。
2、设计内容
简易电子琴自动发出1、2、3、4、5、6、7七个音符,连续播放,
每个音符的频率可通过数控分频器实现。
指导教师签名:
2010年月日
二、指导教师评语:
指导教师签名:
2010年月日
三、成绩
指导教师签名:
2010年月日
简易电子琴
一、设计目的
巩固和运用所学课程,理论联系实际,提高分析、解决计算机技术实际问题的独立工作能力,通过对一个简易的八音符电子琴的设计,进一步加深对计算机原理以及数字电路应用技术方面的了解与认识,进一步熟悉数字电路系统设计、制作与调试的方法和步骤。
巩固所学课堂知识,理论联系实际,提高分析、解决计算机技术实际问题的独立工作能力。
为了进一步了解计算机组成原理与系统结构,深入学习EDA技术,用VHDL语言去控制将会使我们对本专业知识可以更好地掌握。
二、设计要求
(1)设计一个简易的八音符电子琴,它可通过按键输入来控制音响。
(2)演奏时可以选择是手动演奏(由键盘输入)还是自动演奏已存入的乐曲。
(3)能够自动演奏多首乐曲,且每首乐曲可重复演奏。
三、电路及连线设计
四、使用说明
(1)乐曲自动演奏模块
乐曲自动演奏模块(AUTO.VHD)的作用是产生8位发声控制输入信号/当进行自动演奏时,由存储在此模块中的8位二进制数作为发声控制输入,从而自动演奏乐曲。
(2)音调发生模块
音调发生模块的作用是产生音阶的分频预置值。
当8位发声控制输入信号中的某一位为高电平时,则对应某一音节的数值将输出,该数值即为该音阶的分频预置值,分频预置值控制数控分频模块进行分频,由此可得到每个音阶对应的频率。
(3)数控分频模块
数控分频模块是对时基脉冲进行分频,得到与1、2、3、4、5、6、7七个音符相对应的频率。
五、程序设计如下:
乐曲自动演奏模块
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYAUTOIS
PORT(CLK:
INSTD_LOGIC;
AUTO:
INSTD_LOGIC;
CLK2:
BUFFERSTD_LOGIC;
INDEX2:
INSTD_LOGIC_VECTOR(7DOWNTO0);
INDEX0:
OUTSTD_LOGIC_VECTOR(7DOWNTO0));
ENDAUTO;
ARCHITECTUREBEHAVIORALOFAUTOIS
SIGNALCOUNT0:
INTEGERRANGE0TO31;
BEGIN
PULSE0:
PROCESS(CLK,AUTO)
VARIABLECOUNT:
INTEGERRANGE0TO8;
BEGIN
IFAUTO='1'THEN
COUNT:
=0;CLK2<='0';
ELSIF(CLK'EVENTANDCLK='1')THEN
COUNT:
=COUNT+1;
IFCOUNT=4THEN
CLK2<='1';
ELSIFCOUNT=8THEN
CLK2<='0';COUNT:
=0;
ENDIF;
ENDIF;
ENDPROCESS;
MUSIC:
PROCESS(CLK2)
BEGIN
IF(CLK2'EVENTANDCLK2='1')THEN
IF(COUNT0=31)THEN
COUNT0<=0;
ELSE
COUNT0<=COUNT0+1;
ENDIF;
ENDIF;
ENDPROCESS;
COM1:
PROCESS(COUNT0,AUTO,INDEX2)
BEGIN
IFAUTO='0'THEN
CASECOUNT0IS
WHEN0=>INDEX0<="00000100";--3
WHEN1=>INDEX0<="00000100";--3
WHEN2=>INDEX0<="00000100";--3
WHEN3=>INDEX0<="00000100";--3
WHEN4=>INDEX0<="00010000";--5
WHEN5=>INDEX0<="00010000";--5
WHEN6=>INDEX0<="00010000";--5
WHEN7=>INDEX0<="00100000";--6
WHEN8=>INDEX0<="10000000";--8
WHEN9=>INDEX0<="10000000";--8
WHEN10=>INDEX0<="10000000";--8
WHEN11=>INDEX0<="00000100";--3
WHEN12=>INDEX0<="00000010";--2
WHEN13=>INDEX0<="00000010";--2
WHEN14=>INDEX0<="00000001";--1
WHEN15=>INDEX0<="00000001";--1
WHEN16=>INDEX0<="00010000";--5
WHEN17=>INDEX0<="00010000";--5
WHEN18=>INDEX0<="00001000";--4
WHEN19=>INDEX0<="00001000";--4
WHEN20=>INDEX0<="00001000";--4
WHEN21=>INDEX0<="00000100";--3
WHEN22=>INDEX0<="00000010";--2
WHEN23=>INDEX0<="00000010";--2
WHEN24=>INDEX0<="00010000";--5
WHEN25=>INDEX0<="00010000";--5
WHEN26=>INDEX0<="00001000";--4
WHEN27=>INDEX0<="00001000";--4
WHEN28=>INDEX0<="00000100";--3
WHEN29=>INDEX0<="00000100";--3
WHEN30=>INDEX0<="00000010";--2
WHEN31=>INDEX0<="00000010";--2
WHENOTHERS=>NULL;
ENDCASE;
ELSEINDEX0<=INDEX2;
ENDIF;
ENDPROCESS;
ENDBEHAVIORAL;
(2)音调发生模块
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYTONEIS
PORT(INDEX:
INSTD_LOGIC_VECTOR(7DOWNTO0);
CODE:
OUTSTD_LOGIC_VECTOR(6DOWNTO0);
HIGH:
OUTSTD_LOGIC;
TONE0:
OUTINTEGERRANGE0TO2047);
ENDTONE;
ARCHITECTUREARTOFTONEIS
BEGIN
SEARCH:
PROCESS(INDEX)
BEGIN
CASEINDEXIS
WHEN"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)数控分频模块
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYFENPINIS
PORT(CLK1:
INSTD_LOGIC;
TONE1:
ININTEGERRANGE0TO2047;
SPKS:
OUTSTD_LOGIC);
ENDENTITYFENPIN;
ARCHITECTUREARTOFFENPINIS
SIGNALPRECLK:
STD_LOGIC;
SIGNALFULLSPKS:
STD_LOGIC;
BEGIN
PROCESS(CLK1)
VARIABLECOUNT:
INTEGERRANGE0TO8;
BEGIN
IF(CLK1'EVENTANDCLK1='1')THEN
COUNT:
=COUNT+1;
IFCOUNT=2THEN
PRECLK<='1';
ELSIFCOUNT=4THEN
PRECLK<='0';COUNT:
=0;
ENDIF;
ENDIF;
ENDPROCESS;
PROCESS(PRECLK,TONE1)
VARIABLECOUNT11:
INTEGERRANGE0TO2047;
BEGIN
IF(PRECLK'EVENTANDPRECLK='1')THEN
IFCOUNT11 COUNT11: =COUNT11+1;FULLSPKS<='1'; ELSE COUNT11: =0;FULLSPKS<='0'; ENDIF; ENDIF; ENDPROCESS; PROCESS(FULLSPKS) VARIABLECOUNT2: STD_LOGIC: ='0'; BEGIN IF(FULLSPKS'EVENTANDFULLSPKS='1')THEN COUNT2: =NOTCOUNT2; IFCOUNT2='1'THEN SPKS<='1'; ELSE SPKS<='0'; ENDIF; ENDIF; ENDPROCESS; ENDART; (4)顶层设计 VHDL源程序(DIANZIQIN.VHD) LIBRARYIEEE; USEIEEE.STD_LOGIC_1164.ALL; USEIEEE.STD_LOGIC_ARITH.ALL; USEIEEE.STD_LOGIC_UNSIGNED.ALL; ENTITYDIANZIQINIS PORT(CLK32MHZ: INSTD_LOGIC; HANDTOAUTO: INSTD_LOGIC; CODE1: OUTSTD_LOGIC_VECTOR(6DOWNTO0);--音符显示信号 INDEX1: INSTD_LOGIC_VECTOR(7DOWNTO0);--键盘输入信号 HIGH1: OUTSTD_LOGIC;--高低音节信号 SPKOUT: OUTSTD_LOGIC);--音频信号 END; ARCHITECTUREARTOFDIANZIQINIS COMPONENTAUTO PORT(CLK: INSTD_LOGIC; AUTO: INSTD_LOGIC; INDEX2: INSTD_LOGIC_VECTOR(7DOWNTO0); INDEX0: OUTSTD_LOGIC_VECTOR(7DOWNTO0)); ENDCOMPONENT; COMPONENTTONE PORT(INDEX: INSTD_LOGIC_VECTOR(7DOWNTO0); CODE: OUTSTD_LOGIC_VECTOR(6DOWNTO0); HIGH: OUTSTD_LOGIC; TONE0: OUTINTEGERRANGE0TO2047); ENDCOMPONENT; COMPONENTFENPIN PORT(CLK1: INSTD_LOGIC; TONE1: ININTEGERRANGE0TO2047; SPKS: OUTSTD_LOGIC); ENDCOMPONENT; SIGNALTONE2: INTEGERRANGE0TO2047; SIGNALINDX: STD_LOGIC_VECTOR(7DOWNTO0); BEGIN U0: AUTOPORTMAP(CLK=>CLK32MHZ,INDEX2=>INDEX1,INDEX0=>INDX,AUTO=>HANDTOAUTO); U1: TONEPORTMAP(INDEX=>INDX,TONE0=>TONE2,CODE=>CODE1,HIGH=>HIGH1); U2: FENPINPORTMAP(CLK1=>CLK32MHZ,TONE1=>TONE2,SPKS=>SPKOUT); ENDART; 五、设计总结: 经过努力,简易电子琴的设计基本上完成了。 在整个设计过程中,包括前期中期和后期,我都有着许多不同的体会: 1)这个设计的基本是接触一门新的语言并加以应用,对于我来说,没有想到的是入手的速度比我的预料快,在以前编程的基础上,从接触到开始动手编程的时间得到了很大的缩短。 知识的接收速度在很大的程度上决定了动手的时间。 2)VHDL的编程与C语言的编程有着本质的不同,然而以往形成的旧编程习惯在VHDL编程中依然起着很大的作用。 一通百通,不是没有道理的。 对于学习新的知识并予以应用的信心,显得更足了。 六、参考文献: 《VHDL与数字电路设计》.卢毅, 赖杰. 科学出版社 《VHDL语言100例详解——北京理工大学ASIC研究所》.北京理工大学ASIC研究所. 清华大学出版社 《VHDL 程序设计》(第二版).曾繁泰等. 清华大学出版社 《VHDL入门与应用》陈雪松, 滕立中 .人民邮电出版社 《VHDL简明教程》.王小军 .清华大学出版社
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 简易 电子琴
![提示](https://static.bdocx.com/images/bang_tan.gif)