广西工学院课程设计用纸第页共页EDA技术课程设计设计题目:简易电子琴设计专业:应用物理学学生姓名:赵骉学号:20081326031日期:2011/8/31摘要随着基于CPLD的EDA技术的发展和应用领域的扩大与深入,EDA技术在电子信息、通信、广西工学院课程设计用纸第页共页自动控制用计算机等领域的重要性日益突出。作为一个学电子信息专业的学生,我们必须不断地了解更多的新产品信息,这就更加要求我们对EDA有个全面的认识。本程序设计的是简易电子琴的设计。采用EDA作为开发工具,VHDL语言为软件描述语言,QuartusII6.1作为程序运行平台,所开发的程序通过调试运行、波形仿真验证,初步实现了设计目标。本程序使用的硬件描述语言VHDL,可以大大降低了硬件数字系统设计的入门级别,让人感觉就是C语言的近亲。通过老师的指导和自己的学习完成了预想的功能。1课程设计的目的及任务1.1课程设计的目的巩固和运用所学课程,理论联系实际,提高分析、解决计算机技术实际问题的独立工作能力,通过对一个简易的八音符电子琴的设计,进一步加深对计算机原理以及数字电路应用技术方面的了解与认识,进一步熟悉数字电路系统设计、制作与调试的方法和步骤。巩固所学课堂知识,理论联系实际,提高分析、解决计算机技术实际问题的独立工作能力。为了进一步了解计算机组成原理与系统结构,深入学习EDA技术,用VHDL语言去控制将会使我们对本专业知识可以更好地掌握。1.2课程设计的内容设计一个简易电子琴,利用试验箱的脉冲电源产生1,2,3,4,5,6,7共7个音阶信号,当按下一个键时,有相应的乐音发出,同时用指示灯显示乐音,用数码管显示音符。2原理描述2.1音名与频率的关系根据声乐知识,产生音乐的两个因素是音乐频率的持续时间,音乐的十二平均率规定,每两个八音度之间的频率相差一倍,在两个八音度之间,又可分为12个半音。每两个半音的频率比为4。另外,音名A(乐谱中的低音6)的频率为440HZ,音名B到C之间,E到F之间为半音,其余为全音。由此可以计算出乐谱中从低音1到高音1之间每个音名的频率如表2-1所示:音名频率(Hz)音名频率(Hz)音名频率(Hz)低音1261.63中音1523.25高音11046.50低音2293.67中音2587.33高音21174.66低音3329.63中音3659.25高音31381.51低音4349.23中音4698.46高音41396.92低音5391.99中音5783.99高音51567.98低音6440中音6880高音61760低音7439.88中音7987.76高音71975.52表2-1简谱中的音名与频率的关系2.3电路各模块设计广西工学院课程设计用纸第页共页图2-2电路结构方框图2.3设计规划根据系统设计要求,系统设计采用自顶向下的设计方法,它由乐曲自动演奏模块、音调发生模块和数控分频模块三部分组成。3个人负责模块部分我在这次设计中主要做音调发生模块,以下是这个部分的分析:音调发生模块的作用是产生音阶的分频预置值。当7位发声控制输入信号中的某一位为高电平时,则对应某一音节的数值将输出(通过对照图4-1各音名对应的分频系数值及初始值)该数值即为该音阶的分频初始值,分频预置值控制数控分频模块进行分频,由此可得到每个音阶对应的频率。3.1可变分频器(1)基准频率的选取各音名所对应的频率可由一频率较高的基准频率进行整数分频得到,所以实际产生各音名频率为近似的整数值。这是由于音阶频率多为非整数,而分频系数又不能为小数,故必须将得到的分频系数四舍五入取整,若基准频率过低,则由于分频系数过小,四舍五入取整后的误差较大,若基准频率过高,虽然误码差较小,但分频结构将变大,实际的设计应综合考虑两方面的因素,在尽量减小频率差的前提下取舍合适的基准频率。本次设计选择12MHz作为基准频率。(2)分频系数A、公用二进制的计数容量N及初始值的选取D1、分频系数的选取首先将12MHz的基准频率进行12分频,得到1MHz的基准频率,分频系数A=1MHz/音名频率,此分频系数可由计数器实现。但若不加处理语句,其分频后的信号将不是对称方波。而占空比很小的方波很难使扬声器有效地发出声响。为得到对称方波,可将分频系数A分解为:分频系数A=分频系数n×2。即先进行分频系数n的分频,得到不对称方波,然后再2分频得到对称方波。2、公用二进制的计数容量N的选取广西工学院课程设计用纸第页共页n分频可由n进制计数器实现。n进制计数器可用复位法或置位法实现,由于加载初始值d的置位法可有效地减少设计所占用的可编程逻辑器件资源,因此,此次设计采用置位法。低音1的分频数n为最大,其值为1275,应取公用二进制计数器的计数容量N大与“最大分频系数n”,故本次设计的公用二进制计数器应该设计为十一位二进制加法计数器,其计数最大容量为2048,计数的最大值N为2047,可满足本次设计中所有音名对音频系数的要求。3、初始值的选取D初始值D=计数最大值N-分频系数n此次设计中应用的各音名对应的分频系数值及初始值如表所示:音符初始值对应音谱区别高中低音02047001773102912203103630411164051197506129060713727081410119148021101542311216225115172812表4-1各音名对应的分频系数值及初始值3.2音调发生模块程序libraryieee;useieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entitytone1isport(index:instd_logic_vector(6downto0);code:outstd_logic_vector(3downto0);tone0:outintegerrange0to2047);end;architecturetwooftone1is广西工学院课程设计用纸第页共页beginsearch:process(index)begincaseindexiswhen0000001=tone0=773;code=0001;when0000010=tone0=912;code=0010;when0000100=tone0=1036;code=0011;when0001000=tone0=1116;code=0100;when0010000=tone0=1197;code=0101;when0100000=tone0=1290;code=0110;when1000000=tone0=1372;code=0111;whenothers=tone0=2047;code=0000;endcase;endprocess;endtwo;3.3音调发生模块的波形仿真图在此程序中index为自动模块输出的音符数据,经过翻译后将tone0输出到数控分频模块为其提供分频系数的初始值,code为数码管显示的字符数,应用模式5,所以直接输出音符的二进制值。通过仿真图可以清楚地看到结果。3.4音调发生模块生成的逻辑器件广西工学院课程设计用纸第页共页4顶层原理图及仿真4.1顶层原理图利用EDA工具提供的原理图的方式进行输入,原理图输入方法比较容易掌握,而且直观方便,根据前几次设计的模块及生成的逻辑器件可以很方便地把各个子模块所生成的逻辑器件组合起来,即将各个子模块之间的输入输出端、子模块与整体电路之间的输入输出端进行正确的硬件连接,进行编译、下载,从而实现整体功能。它将手动选择(bmux)模块音.调发生模块(tone1)及数控分频器(skfpqq)模块连接起来。4-1顶层原理图4.2顶层原理仿真图广西工学院课程设计用纸第页共页图4-2顶层文件仿真波形图通过仿真波形图可以看到,输入端rst1为复位端,当其值为1时,输出端均为0,输入端indx1为音调按键端,当按一个音调按键时,数码管上即code1的输出显示出音符数,输出端spks则代表将输入clk先经过12次分频,再经过(预置数终值2048-tone)次分频,最终再进行二分频处理,而这个信号的频率就是我们需要演奏的音谱的频率,根据频率的不同,从而能通过喇叭听到不同的声音,实现音乐的播放。5.硬件下载及实现输入程序并且编译无误,并且仿真无误后,便进行引脚锁定及程序下载,在进行引脚锁定时必须对照引脚锁定图进行锁定,采用模式5其引脚锁定图如图5-1所示:广西工学院课程设计用纸第页共页图5-1模式5实验电路结构图根据模式5上所对应的引脚号查表可以得出需要锁定的引脚号码锁定完后如图5-2所示:图5-2引脚锁定图Clk12mhz锁定clock9的12mhz;rst1键8为复位键;index1锁定键1到键7;code1锁定译码管8;spkout锁定扬声器。结果:当一次按下1,2,3,4,5,6,7,键时,扬声器发出do,re,mi,fa,sol,la,si七个音,同时数码管显示相应的音符数:1,2,3,4,5,6,7.6心得体会经过努力,简易电子琴的设计基本上完成了。在整个设计过程中,包括前期中期和后期,我都有着许多不同的体会:1)这个设计的基本是接触一门新的语言并加以应用,对于我来说,没有想到的是入手的速度比我的预料快,在以前编程的基础上,从接触到开始动手编程的时间得到了很大的缩短。知识的接收速度在很大的程度上决定了动手的时间。2)VHDL的编程与C语言的编程有着本质的不同,然而以往形成的旧编程习惯在VHDL编程中依然起着很大的作用。一通百通,不是没有道理的。对于学习新的知识并予以应用的信心,显得更足了。3)VHDL的设计关键是电路逻辑设计,而一个程序的关键是总体设计。对于硬件设计接触不多的我们清楚这一点也许不无好处。4)通过这个程序设计让我学会一种新的语言,对数字系统结构也有了更进一步的了解和认识,对我以后的学习有很大的帮助。希望其他人在看再做类似设计时有所借鉴。通过几天的课程设计,我对数据库软件EDA技术、VHDL、等系列知识都有了一定的了解。使用EDA技术开发页面的能力也有了很大提高。在整个设计过程中,有很多人对任务的完成给予了重要的支持和帮助。感谢老师给了我本次设计的机会并提供指导;感谢许多同学在我此课程设计遇到问题时给我的帮助使我能够广西工学院课程设计用纸第页共页顺利地进行设计的工作;论坛中有很多认识不认识的朋友也都为我的设计提出了很宝贵的建议,同样在这里感谢他们7参考文献[1].潘松,黄继业.《EDA技术实用教程》(第二版).科学出版社,2005.2[2].刘江海.《EDA技术课程设计》.华中科技大学出版社,2009.5[3].焦素敏.《EDA应用技术》.清华大学出版社,2002.4