




已阅读5页,还剩28页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
毕业论文(设计)题 目: 基于VHDL的电子琴的设计 系部名称: 信息工程系 专业班级: xxxxxx 学生姓名: xxx 学 号: xxxxxxxxx 指导教师: xxxxxxx 教师职称: 讲师 2012年05月26日中原工学院信息商务学院毕业论文(设计)摘 要电子琴又称作电子键盘,属于电子乐器(区别于电声乐器),发音音量可以自由调节。音域较宽,和声丰富,甚至可以演奏出一个管弦乐队的效果,表现力极其丰富。它还可模仿多种音色,甚至可以奏出常规乐器所无法发出的声音(如合唱声,风雨声,雷声等)。另外,电子琴在独奏时,还可随意配上类似打击乐音响的节拍伴奏,适合于演奏节奏性较强的现代音乐。另外,电子琴还安装有效果器,如混响、回声、延音,震音轮和调制轮等多项功能装置,表达各种情绪时可运用自如。基于当前市场上的电子琴价格较昂贵,很难大众化,而且市场上大多电子琴靠硬件实现其功能,这样很难降低其成本,基于EDA技术的发展,我们可以利用软件实现电子琴的功能,从而降低成本,并且可以进行一定的功能扩展。本毕业设计使用Quartus 软件,运用VHDL语言,采用自顶而下的设计方式进行编程设计。将电子琴分为自动(AUTO)、分频(FENPIN)和发声(TONE)三个模块,利用时钟信号的分频处理实现电子琴的音阶变化,实现电子琴的自动播放和手动演奏功能,从而实现电子琴的基本功能设计。关键词:电子琴,Quartus ,VHDLVHDL-based design of the electoneAbstractElectones, also known as electronic keyboards, belongs to electronic instruments (different from acoustic instruments), pronunciation volume can freely adjust. Wider range, rich harmonies and even can play the effect of an orchestra, expression is extremely rich. It also can imitate the variety of tones, can even beyond the conventional instruments chorus of voices (such as chorus, rain, the universe, etc.). In addition, the electone in solo can also optional collocate with the rhythm accompaniment tones similar percussion, suitable for playing the strong rhythmic contemporary music. And the electone is also equipped with effects such as reverb, echo, sustain, tremolo wheel and modulation wheel and many other functional device to express various emotions with ease. Based on the keyboard on the market price is more expensive, difficult to popularization, most of the keyboard on the market rely on hardware to achieve its function, it is difficult to reduce its cost, based on EDA technology development, we can use the software to achieve the functionality of the keyboard, thereby reducing costsand some extensionsThe graduation design using Quartus software , utilizing VHDL language, Adopting top-down approach to designs programming design. The design is divided into automatic (AUTO), frequency (FENPIN) and voice (TONE) three modules, Using the clock signal frequency processing realizes the octave change in electones, in order to achieve the basic functions of the electones design.Keyword: Electones Quartus VHDL目 录1 绪论11.1 课题来源及研究的目的和意义11.2 电子琴国内外现状及水平21.3 课程设计任务22 系统设计32.1 设计目标32.1.1 基本功能32.1.2 提高部分32.2 设计语言32.2.1 Verilog HDL 语言介绍32.3 设计原理112.3.1 乐曲演奏原理112.3.2.振荡器和分频器的实现原理112.4 QUARTUS 9.0简介122.5 总体设计方案133 单元模块设计153.1 电子琴输入控制模块153.1.1 基本原理153.1.2 按键输入153.1.3 数控分频153.2 乐曲存储及自动播放模块163.2.1 音调发生163.2.2 乐曲自动演奏173.3 顶层模块18结 论20致 谢21参考文献22附 录23III1 绪论1.1 课题来源及研究的目的和意义目前市面上存在的电子琴大多是用单个的逻辑器件组合实现。这样虽然比较直观,逻辑器件分工鲜明,思路也比清晰,一目了然,但是由于元器件种类、个数繁多,而过于复杂的硬件电路也容易引起系统的精度不高、体积过大等不利因素。例如八个不同的音符是由八个不同的频率来控制发出的【1】,设计可用不同的分频器来对信号进行不同程度的分频实现。电子琴的结构较为复杂,音源是由晶体管产生的电振动,并通过音色回路而产生各种音色;同时由周期波数调制产生颤音效果,由振幅调制产生各种乐器的音效。电子琴的外形很像普通键盘乐器,只是某些种类多一排脚踏键盘,而且手触键盘也往往分为两层。键盘式电子琴声音丰富、优美,有变音装置,能发出多种不同的音色,可以作为独特的乐器进行演奏,还能代替传统的风琴、钢琴供音乐课教学。传统乐器的声音是通过机械的方法产生的,电子琴的声音是用“电”产生的。分频器键 盘扬声器振荡器放大器分频器键 盘电源图1-1一般电子琴结构原理的方框图电子琴原理框图的振荡器能根据需要产生一定频率的振荡信号,振荡信号通过分频器分解成不同频率的信号输送到放大器,放大器将信号放大,推动扬声器发出声音。键盘实际是一些开关,如果没有键盘,许多种频率的信号一齐进到放大器里,通过扬声器发出的声音就会乱七八糟,不成音乐。按下键盘的一只键,就等于接通一只开关,只允许某一种频率的信号通过并送到放大器里去,扬声器就发出一个音来。这样,按照一定的演奏规律来按键盘,就能奏出美妙的音乐来。电源的任务是给各部分供电。采用VHDL语言编程来实现电子琴的各项功能。只是把整个系统分为了电子琴发声模块、音阶控制模块和按键处理模块若干,而不牵涉到具体的硬件电路。用VHDL语言设计的基本原理图如下:图1-2电子琴VHDL设计结构原理图我们必须看到用超高速硬件描述语言VHDL的优势1,和市面上的电子琴相比较,它不仅具有良好的电路行为描述和系统描述的能力而且通俗易懂,还支持扩展,再者就是利用FPGA设计的电子琴功能更强大。经过对以上单片机和FPGA设计电子琴方案的分析、比较和总结,我们选用VHDL语言来进行电子琴的设计。1.2 电子琴国内外现状及水平电子琴在中国的推广始于20世纪八十年代,至今在音色、音质、演奏的便利性等方面都达到了相当成熟的地步,而且随着集成电路技术的发展,其升级换代可以在保持原有结构不变的情况下,通过简单的芯片更换实现。但是,电子琴也有明显的不足之处:与非电子乐器,如钢琴、管弦乐器等的协奏问题,限制了电子琴在重要音乐场所的使用,这极大的影响了电子琴的应用和推广。协调电子琴与非电子乐器的协奏,是当前音乐界人士和电子琴开发商的当务之急。1.3 课程设计任务本次课题主要针对目前日常生活中常见的演奏乐器电子琴进行基于FPGA的VHDL设计和仿真,采取自顶而下的设计方法,涉及功能主要包括:音阶发生器模块、数控分频模块和能够播放1-2首歌曲的自动演奏模块。2 系统设计2.1 设计目标2.1.1 基本功能设计一电子琴,由键盘输入中音的七个音符发音(DO, RE, MI,FA, SO, LA, SI)来控制蜂鸣器发出对应的音响。2.1.2 提高部分用数码管显示出所发出的音调值,比如说:若发出DO,这个音调则显示1.世纪一歌曲自动演奏器,由用户自己编制曲存入电子琴,电子琴可以完成自动演奏的功能。2.2 设计语言2.2.1 Verilog HDL 语言介绍1.VHDL语言的对象和分类 VHDL中的对象【2】主要有以下三种:信号(signal)、变量(variable)、(constant)。它们的区别有:1) 在电子电路设计中,这三类对象都与一定的物理对象相对应。例如,信号对应硬件设计中的某一条硬件连接线,常数代表数字电路中的电源和地,变量与硬件的对应关系不太直接,通常代表暂存某些值的载体;2) 变量和信号的区别在于:变量的赋值被立即执行,信号的赋值则有可能延时,具体见下面(2)。3) 三种对象的含义和说明场合不同,见表1.1所示。(1)对象说明每个对象都有类型,该类型决定可能取值的类型。 constant,variable,signal三类对象说明的一般形式是:constant 常数名表:数据类型 := 表达式;variable 变量名表:数据类型 := 表达制;signal 信号名表:数据类型 信号类别:= 表达式;表1.1 三种对象的含义和说明场合对象类别含 义说明语句的场合信号说明全局量architecture,package,entity变量说明局部量process,function,procedure常数说明全局量以上均可说明:常数名表、变量名表和信号名表,是由一个标识符或以“,”隔开的多个标识符组成。“:= 表达式”为常数、变量、信号赋初值。通常常数赋值在常数说明时进行,且常数一旦被赋值就不能改变。信号类别只有 bus或 register两种类型,是可选项。对象说明的示例如下: constant Vcc: real:= 500;variable x,y: integer Range 0 to 255:= 10; signal ground :Bit:=0;(2)变量和信号的区别物理意义不同。信号是电子电路内部硬件连接的抽象;变量没有与硬件对应的器件。赋值符号不同。信号赋值用“”符号(如S1S2),变量赋值用“:=”符号(如 temp3:= templ + temp2 ;)。变量赋值不能加延时,且语句一旦被执行,其值立即被赋予变量。信号赋值可以加延时,使赋予信号的值在一段时间后代入。如:S1S2 after l0ns;S2的值经过10ns的延时后才被代入Sl。而有延时的变量赋值是不合法的。如 temp3:= temp1 + temp2 after l0ns,是非法的。信号是全局量,可用于进行进程间的通信,可用于 architecture、 package、 entity的说明部分;变量是局部量,只能用于process、function、procedure 之中【3】。从上面几点不难看出,将变量和信号区别开来的根本出发点是它们对应的物理意义不同。2.数据类型 VHDL提供了多种标准的数据类型4,放在STD库的 Standard包中。下面简单介绍一下常用的数据类型。1) 整数类型和浮点类型VHDL定义的整型和浮点型与我们一般理解的整数和实数相同。在VHDL中已预定义的整数范围是-(231-1)(231-1);预定义的实数范围是-1.0*1038 1.0*1038。VHDL中还可以自定义整数类型和浮点类型,它们分别是以上两个类型的子集自定义整型或浮点型的一般形式是:Type 数据类型 is 原数据类型名 约束范围;其中,“约束范围”用“range边界1 to/downto边界2”表示。例如:定义一个用于数码显示的只能取09的整数:Type digit is integer range 0 to 9;定义一个只能取 -104104的实数:type current is real range -1E4 to 1E4; 2) 复合类型复合类型即其值可分成更小对象的类型。复合类型有两种:数组和记录。(1)数组类型(Array)数组是类型相同的数据集合在一起所形成的新的数据类型,它可以是一维的、二维的或多维的。数组定义的一般形式是:type 数组类型名 is array (下标范围) of 原数据类型名; (2)记录类型记录是将不同类型数据和数据名组织在一起而形成的新类型。定义记录类型的一般形式为:type 数据类型名 is record 元素名:数据类型名;元素名:数据类型名; . . .end record;3.VHDL语言的运算操作符VHDL为构成计算的表达式提供了23个操作符5。这些操作符预定义为4类:算术运算符、逻辑运算符、关系运算符、连接运算符。按优先级由低到高的顺序【4】.如表1.2所示。表1.2 VHDL的运算操作符操作符类型操作符功能逻辑运算符AND逻辑与OR逻辑或NAND逻辑与非NOR逻辑或非XOR逻辑异或关系运算符等号/=不等号小于大于小于等于大于等于算术运算符+、-加、减连接运算符连接算术运算符+、-正、负*乘除MOD求模REM取余*指数逻辑运算符NOT求反算术运算符ABS取绝对值 VHDL的操作符的意义、用法和高级语言基本相同。值得注意的是连接运算符用于位的连接,如signal temp_b: bit_vector(3 downto 0);signal en: bit:= 1; - &将4个en相连为位矢量1111赋入temp_ b: temp_ b:= enenenen;4.VHDL结构体的描述方式研究微电子器件的两个基本问题是它的执行功能和逻辑功能。相应的,VHDL程序对硬件系统的描述分为行为描述和结构描述。行为描述和结构描述的区别6是:1) 与硬件的对应关系不同。行为描述是对系统书写模型的描述,结构描述是对系统的子元件和子元件之间相互关系的描述。在与硬件的对应关系上,结构描述更明显、更具体。2) 语句不同。行为描述的基本语句是进程语句,结构描述的基本语句是元件例示语句。3) 用途不同。行为描述方式用于系统数学模型或系统工作原理的仿真,而结构描述方式用于进行多层次的结构设计,能做到与电原理图的一一对应,可以进行逻辑综合。下面将对VHDL的行为描述语句做一个介绍。至于结构描述语句(包括component语句和元件例示语句),前面已有所表述,这里就不再介绍了。在用VHDL描述系统的行为时,按语句执行顺序可分为顺序描述语句(Sequential Statement)和并发描述语句(Concurrent Statement)。5.顺序描述语句 (Sequential Statement)顺序执行语句【5】只能出现在进程 process或子程序 program中,用于定义进程或子程序的算法。顺序描述语句有以下几种: wait语句、断言(assert)语句、信号赋值语句、变量赋值语句、过程调用、if语句、 Case语句、循环语句(loop)、next语句、 exit语句、 return语句、 null语句。下面逐一介绍这些顺序描述语句:1) wait语句进程在仿真进行中的两个状态-激活、暂停-的变化受 wait语句控制。有四种wait语句以设置不同的条件:wait; 无限等待;wait on 信号名表; 当信号名表中任一信号发生变化时,进程结束暂停状态,被激活;wait until 条件; 只当条件成立时,进程才重新激活; wait for时间表达式; 时间限定,时间到则被激活;在上面RS触发器的行为描述程序中, wait on r,s;表示信号r,s中任一个发生变化都将使进程被激活。2) 信号赋值语句信号赋值语句的一般形式为:目的信号量= 信号量表达式;说明:(1)信号赋值语句用于将右边信号量表达式的值赋予左边的信号量,而且=两边信号量的类型和长度应该一致。如ab;(2)信号量表达式中可以有延时【6】。如RS触发器程序中,q= Last_ state after 2ns;3) 变量赋值语句一般形式为:目的变量:= 表达式; 说明:(1)该语句表明将右边的值赋予左边的目的变量,但左右两边的类型必须相同。(2)右边的表达式,可以是变量、信号或字符常量,如Last_ State:=0。4) if语句其基本意义和用法同高级语言。其一般形式为: if条件 then 顺序处理语句 elsif 条件 then 顺序处理语句 else顺序处理语句 End if;具体例子可以参考RS触发器程序。5) case语句case语句与 if语句功能类似,用于根据指定的条件执行某些语句。但case语句的可读性比 if语句强。 case语句的一般形式是:case 表达式 is when 条件表达式1 = 顺序处理语句 when 条件表达式2 = 顺序处理语句 End case;6) 循环语句(1oop)loop语句有两种表达形式:(1)标号: for 循环变量 in 离散范围 loop 顺序处理语句 end loop 标号;(2)标号: while 条件 loop 顺序语句 end 标号;7) 其它其它顺序执行语句,如过程调用语句和return语句、exit和next语句都和软件编程的高级语言类似,这里就不再一一赘述了。6.并发描述语句(Concurrent Statement)并发语句用于描述硬件系统并发工作的操作9,VHDL规定的并发语句有进程语句(process)、并发过程调用语句、并发信号赋值语句、并发断言语句、元件例示语句、 generate语句、块语句(block)。1) 进程语句进程语句是VHDL中描述硬件系统并发行为的最基本语句。进程语句前面已多次提到。其一般形式为:标号: process (敏感信号表) 进程说明部分begin 顺序处理语句 end process 标号;说明:(1)敏感信号表中只要有一个信号发生变化,进程就将启动。(2)进程说明部分用于对进程中用到的数据类型、子程序加以说明。 2) 块语句(block)块语句可用于描述局部电路,其格式为:标号: block块头 说明语句 begin 并发处理语句 end block 标号说明:(1)块头用于信号的映射或类属参数的定义,通常用 port语句,port map语句, generic语句和generic map语句来实现。(2)说明语句同结构体的说明语句,主要是对块内所要用到的对象加以说明。(3)一个块语句可以与一个局部电路对应。注意:块语句与进程语句的最大区别是:块的语句部分是并发执行语句,进程的语句部分是顺序执行语句。3) 并发信号赋值语句并发信号赋值语句的一般形式,同顺序执行语句的信号赋值语句:目的信号量敏感信号量表达式;信号赋值语句在进程外(但仍在结构体中)使用时,作为并发语句形式存在;在进程内使用时,作为顺序执行语句形式存在【7】。由此可见,并发信号赋值语句与一个具有信号赋值的进程等价。并发信号赋值语句还可以分两种形式:条件信号赋值语句和选择信号赋值语句:第一种,条件信号赋值语句的一般形式是:目的信号量表达式1 when条件 l else 表达式2 when条件2 else 表达式3 when条件3 else 表达式n;表示当 when后指定的条件满足,则将相应表达式的值代入目的信号量;否则判断下一个表达式的条件。由此可见,条件信号赋值语句相当于一个带有if语句的进程。第二种,选择信号赋值语句。如果说条件信号赋值语句与带有if语句的进程等价,那么选择信号赋值语句与带有case语句的进程等价。其形式为:with 表达式 select目的信号量 = 表达式1 when条件1; 表达式2 when条件2; 表达式n when条件n;2.3 设计原理 2.3.1 乐曲演奏原理组成乐曲的每个音符的频率值(音调)及其持续的时间(音长)是乐曲能连续演奏的两个基本数据,因此只要控制输出到扬声器的激励型号频率的高低和持续的时间,就可以使扬声器发出连续的乐曲声。1.乐曲演奏整体设计原理利用所给键盘的1,2,3,4,5,6,7,8个按键,能够发出8个不同的音调,并且要求按下按键发声,松开延时一段时间后停止,中间再按别的就会发出别的音调的声音【8】。具体过程:当系统扫描到键盘上有键被按下,则快速检测出是哪一个键,然后系统的定时器被启动,发出一定频率的脉冲,该频率的脉冲经扬声器驱动电路放大滤波后,就会发出相应的音调。如果在前一个按下的键发声的同时有另一个键被按下,则开始那个按键的发音停止,转到后按的键的发音处理,发出后按的键的音。2.3.2.振荡器和分频器的实现原理 振荡器一般用LC电感三点振荡电路2。如果忽略晶体管、电阻等因素的影响,则它的振荡频率f可由下式决定:振荡频率f公式只要适当选择电感L和电容C的数值,就可以得到所需要的信号频率。分频器是一个双稳态电路,即晶体管BG1导通、BG2截止和BG1截止、BG2导通两种稳定状态。如果在它的输入端输入一个信号脉冲,它就翻转一次,即由一种稳态迅速变成另一种稳态,再输入一个信号脉冲,它又会翻转一次,还原成起始的稳态。这样,在它的输入端输入两个信号脉冲时,在它的输出端就得到一个信号脉冲。就是说,输出信号频率比输入信号频率低一半,好像用2除过一样,所以叫二分频【9】。电子琴使用二分频电路是音阶规律的需要。音乐中的基本音阶的频率是按照一定规律排列的,以C调为例,音阶中各音之间的频率(单位为赫兹)关系是:音阶中各音之间的频率关系说明一个音的频率刚好是比它低八度音的频率的两倍。所以,只要把一个音的频率除以2就得到比它低八度的一个音的频率。实现这一点就需要使用二分频电路。这样,只要振荡器产生一个标准音的频率信号,如高音“1”的信号,通过二分频就产生中音“2”的频率,再一次二分频就产生低音“1”的频率了。如果按照键盘上最高音组的频率制作七个振荡器,并将得到的七个音阶信号分别二分频,便可得到低八度的一组音阶信号;再次二分频,就可得到再低八度的一组音阶信号。依此类推,最后,就能得到键盘上所有的音阶信号了。但是在实际设计中需要制作12个振荡器和更多的分频器,因为一组键盘中还有五支黑键。电子琴各键的音阶频率的计算公式如下(假设音阶1=523,单位Hz):音阶1 = 523,音阶2 = 523,音阶3 = 523,音阶4 = 523,音阶5 = 523,音阶6 = 523 ,音阶 7 = 523,音阶 I = 5232.4 QUARTUS 9.0简介 图2.1 QuartusII图标Quartus II 是Altera公司的综合性PLD开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。 Quartus II可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。具有运行速度快,界面统一,功能集中,易学易用等特点。 Quartus II支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。 此外,Quartus II 通过和DSP Builder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台【10】。 Maxplus II 作为Altera的上一代PLD设计软件,由于其出色的易用性而得到了广泛的应用。目前Altera已经停止了对Maxplus II 的更新支持,Quartus II 与之相比不仅仅是支持器件类型的丰富和图形界面的改变。Altera在Quartus II 中包含了许多诸如SignalTap、Chip Editor和RTL Viewer的设计辅助工具,集成了SOP和HardCopy设计流程,并且继承了Maxplus II 友好的图形界面及简便的使用方法。 Altera的Quartus 可编程逻辑软件属于第四代PLD开发平台。该平台支持一个工作组环境下的设计要求,其中包括支持基于Internet的协作设计。Quartus平台与Cadence、ExemplarLogic、 MentorGraphics、Synopsys和Synplicity等EDA供应商的开发工具相兼容。改进了软件的LogicLock模块设计功能,增添 了FastFit编译选项,推进了网络编辑性能,而且提升了调试能力。支持MAX7000/MAX3000等乘积项器件。通过Altera公司Quartus9.0版本软件的对以上源程序的编译,我们就可以在实验板实现简易电子琴的主要功能。2.5 总体设计方案利用EDA软件中的Verilog HDL 硬件描述语言编程进行控制,然后烧程序至FPGA实验箱实现,系统原理图如图1.5.1所示。 图1.5.1 系统总体设计方框图其中,输入控制模块主要是为用户设计的,起到一个输入控制的作用。通过该模块以通过按键输入音符或乐曲。乐曲存储及循环播放模块主要是储存事先编写好的乐谱,并通过循环播放部分产生不同的频率驱动扬声器输出。顶层模块主要实现调用功能,通过调用输入控制模块和乐曲存储及循环播放模块选择手动播放,或者自动播放曲目1,曲目2,或曲目3.三大模块相互联系实现电子琴基本功能和发挥功能【11】。3 单元模块设计3.1 电子琴输入控制模块3.1.1 基本原理电子输入控制模块是这个电子琴的核心部分。程序控制一个分频模块的分频系数,它内部集成了1个分频器,一个输出端口至外部扩音器。接受,处理外部输入命令(来自使能端,功能控制键,乐曲存入,写出控制键的命令)的部分。其中分频器可以根据分频系数分出七个不同的频率从而发出七个音符的声音,并可通过数码管观察是哪个音符输出。这里定义了一秒为一个节拍【12】。3.1.2 按键输入键盘作为电子琴的外置输入端口,在电子琴的设计中占有非常重要的地位,其作用是将音乐音谱手动输入到电子琴内部的音谱存储单元。当进行手动按键弹奏时作为输入控制信号,当FPGA芯片检测到某一按键被按下时,系统会通过内部处理控制发出相对应的音谱,从而完成音谱的手动输入。3.1.3 数控分频数控分频模块是对时种脉冲进行分频,其设计工作原理是:数控分频器的功能就是在输入端给定不同数据时,对输入的时钟信号按不同的分频比进行分频处理。数控分频器是用可并行预置的加法计数器设计完成的,方法是将计数溢出位与预置数加载输入信号相接。通过分频模块可得到1=523Hz,2=587Hz,3=659Hz,4=698Hz,5=784Hz,6=880Hz,7=988Hz,I=1046Hz共八个音符频率【12】。图3-5为数控分频模块在Quartus9.0环境下生成的仿真波形图,在仿真波形图中CLK1为数控分频模块控制信号输入端;TONE1为分频输入信号,数控分频模块根据其数值的大小经逻辑分析运算后输出对应频率的波形;SPKS作为输出端,与扬声器相连可控制驱动扬声器发出声音。图3-5数控分频模块的仿真图3.2 乐曲存储及自动播放模块 3.2.1 音调发生音调发生模块的作用是产生音阶的分频预置值。当8位发声输入信号中的某一位为高电平时,则与之对应音阶的数值将输出,该数值即为该音阶的分频预置值,分频预置值控制数控分频模块进行分频【13】,由此可以得到这个音阶对应的频率。在Quartus9.0环境下生成的元件符号图如下元件符号图如下:图3-3音调发生模块符号图对音调发生模块进行仿真得到如下结果:图3-4 音调发生模块的系统仿真图其中INDEX表示输入端口,上接自动演奏模块的输出端INDEX0,在模块内部进行逻辑处理后经TONE0端口输出。 3.2.2 乐曲自动演奏乐曲自动演奏模块的作用是产生8位发声控制输入信号。当进行自动演奏时,由存储在此模块中的8位二进制数作为发声控制输入,从而自动演奏乐曲。音阶输出频率的表如下:表3-1字符12345678音符1234567I频率5235876596987848809881046图3-1自动演奏模块符号图图3-2乐曲自动演奏模块的仿真图3.3 顶层模块该模块是电子琴系统设计的核心模块。通过该模块实现对上两节子模块的调用。模块主要包括两个过程:进程一是对50MHz基准脉冲分频产生6MHz;进程二是对曲目方式进行控制选择【14】。对于编辑完成的电路设计文件,通过计算机的编译,在编译过程中,计算机可以发现和指出电路设计中的错误。在完成对图形编译之后,系统并没有为设计文件自动生成元件符号,若要生成元件符号,则要执行:“File” “Create/Update” “Create Symbol File for Current File”命令,为图形设计文件生成元件符号,生成的元件符号就可以作为共享文件被其他数字电路和系统设计调用。然后再建立一个新的原理图文件上步生成的符号进行调用,并对各元件之间进行逻辑连接,可得到电子琴的设计结构原理图如下所示:图3-6电子琴VHDL设计结构原理图在完成顶层文件设计操作之后,对整个系统文件进行编译,在编译的过程中对系统文件中出现的错误进行修改,直至错误数为0【15】。对顶层文件进行仿真,得到如图3-7所示波形:图3-7 简易电子琴整个系统的仿真图CLK为32MHz的时钟信号,HANDTOAUTO是自动演奏与键盘输入的控制信号输入端口,SPKOUT为系统输出信号,可作为发声电路的控制信号。结 论经过一个学期的努力,终于完成了设计。从一开始的一窍不通,到后来慢慢了解,经历了很长的时间。回顾此过程,我感触良多,的确,从审题到编程,在这几个月的日子里,我受益匪浅。不仅巩固了以前所学过的知识,而且学到了很多在书本上所学不到的知识。通过这次毕业设计使我懂得了理论与实践结合的重要性,只有理论知识是远远不够的,只有把所学的理论知识与实践结合起来,从理论中得出结论,才能解决实际中的问题,从而提高提高自己的独立思考能力。这毕竟是的一次做毕业设计,难免会遇到各种各样的问题,同时在设计过程中我也发现了自己的不同之处,对以前所学的知识理解的不够深刻,掌握的不牢固。但通过这次设计之后,进一步加深了对VHDL的了解,让我对它有了更加浓厚的兴趣。将一个复杂的工程分成若干个基本模块进行分析设计和测试,最后将这些模块连接起来是本实验基本的设计思想。虽然在测试时遇到了一些困难但最终都实现的很好。但是感觉还有可以拓展的地方,比如说可以增加电子琴的扩展端口与其它乐器相连接;增加键盘按键个数,实现更复杂的高低音演奏功能;并对每一个音阶记性标准计算,使电子琴演奏时的声音更悦耳;对系统的硬件进行设计,完整电子琴的系统设计。致 谢转眼间,随着毕业设计的完成,大学生活即将结束。在此感谢四年来关心和帮助过我的老师和同学,是他们让我成为了一名合格的大学生。感谢冯飞飞老师对我的谆谆教诲,使我受益匪浅。感谢我的家人对我学业的支持,没有他们的支持我不可能在大学里深造。特别感谢王新强老师对我毕业设计的指导。他不仅给了我专业知识上的指导,也让我对行为处事有了更好的理解。大学四年是我人生当中关键的四年,我要用在这里学到的一切去迎接明天的挑战。参考文献1 汪国强.EDA技术与应用M.第三版.电子工业出版社,20102 阎石.数字电子技术基础M.第四版.北京:高等教育出版社3 潘松,王国栋.VHDL实用教程M.成都:电子科技大学出版社,20004 潘松,黄继业.EDA技术使用教程M.北京:科学出版社,20025 潘松,黄继业.EDA技术与VHDLM.北京:清华大学出版社,20076 王金明,杨继业.数字电路设计与VHDLM.北京:电子工业出版社,20027 赵雅兴.FPGA原理、设计与应用M.天津大学出版社,19998 杨晖,张凤言.大规模可编程逻辑器件与数字系统设计M.北京:北京航空航天大学出版社,19989 赵曙光,郭万有,杨颂华.可编程逻辑器件原理、开发与应用M.成都:电子科技大学出版社,200010 陈光梦.可编程逻辑器件原理与应用M.上海:复旦大学出版社,199811 汪国强. 现代数字逻辑电路M.北京:电子工业出版社,200212 汪国强.SOPC技术与应用M北京:机械工业出版社,200613 S. H. Kim, W. H. Tranter, and S. F. Midkiff. “Middleware for a distributed recongurable simulator,” Simulation Symposium, Annual, vol. 0, p. 0253, 2002.14 S. Lee, K. Fleming, J. Park, K. Ha, A. Cauleld, S. Swanso
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 城管执法专业试题及答案
- 河南省濮阳市华龙区濮阳第一高级中学2025-2026学年高二上学期开学摸底检测英语试卷(含答案)
- 河北省衡水市桃城区2025-2026学年高二上学期暑假开学考试化学试题(含答案)
- 安徽省九师联盟2026届高三9月开学联考英语(含答案)
- 河北省邯郸市第十中学2024-2025学年七年级上学期期末考试数学试卷(含答案)
- 广西钦州市第四中学2025-2026学年高三上学期开学考试数学试卷(含答案)
- 广东省深圳实验学校高中园2025-2026学年高三上学期9月统测(开学)物理试卷(含答案)
- 宁夏建筑消防方案设计资质
- 安徽省江淮名校2024-2025学年高二上学期期中考试化学试卷(含答案)
- 保险业数字化风险管理解决方案与应用技术案例研究
- 2025工勤考试收银审核员(高级技师)考试题(含答案)
- GB/T 27043-2025合格评定能力验证提供者能力的通用要求
- 加工公司实验室设备管理办法
- (2025秋新版)北师大版二年级上册数学全册教案
- 2025年“学宪法讲宪法”知识竞赛题库含答案
- 教室布置方案(模板)
- 2025年上海入团考试试题及答案
- 2025年《土地管理法》考试试题及答案解析
- 2025至2030年中国机织服装市场现状分析及前景预测报告
- 妇幼信息安全课件
- 《测绘基础》课件(共八个任务)
评论
0/150
提交评论