基于EDA技术的电子琴设计终稿孙立凯

上传人:仙*** 文档编号:86748666 上传时间:2022-05-08 格式:DOC 页数:27 大小:439.50KB
收藏 版权申诉 举报 下载
基于EDA技术的电子琴设计终稿孙立凯_第1页
第1页 / 共27页
基于EDA技术的电子琴设计终稿孙立凯_第2页
第2页 / 共27页
基于EDA技术的电子琴设计终稿孙立凯_第3页
第3页 / 共27页
资源描述:

《基于EDA技术的电子琴设计终稿孙立凯》由会员分享,可在线阅读,更多相关《基于EDA技术的电子琴设计终稿孙立凯(27页珍藏版)》请在装配图网上搜索。

1、本科生毕业论文(设计)基于EDA技术的电子琴设计 姓 名: 孙立凯 指导教师: 赵年顺 院 系: 信息工程学院 专 业: 电子信息工程 提交日期: 2012年4月25日 黄山学院本科毕业论文目 录中文摘要2英文摘要3引 言41. EDA设计技术综述51.1 EDA技术51.1.1 EDA技术的介绍与发展51.1.2 EDA技术的设计流程51.1.3设计平台Max+plusII和VHDL介绍61.1.4 FPGA器件的简介71.2 电子琴的应用与设计背景91.2.1 基于EDA技术的电子琴设计介绍91.2.2 基于EDA技术的电子琴设计设计要求91.2.3 与设计相关的音乐知识92. 系统分析与

2、设计方案102.1 设计思想以及设计原理框图102.2 原理说明102.3 系统的实现以及设计指标113. Max+plus设计过程123.1 键盘演奏模块实现123.1.1 时钟产生模块123.1.2 键盘扫描模块143.1.3 键盘译码以及开关电路153.2 音符查表及简谱产生电路163.3 音符发声模块实现183.4 系统的顶层设计213.4.1 层次化设计的概念213.4.2 生成组件符号223.4.3 调用组件符号22结束语24参考文献25致谢26基于EDA技术的电子琴设计孙立凯指导老师:赵年顺 (黄山学院信息工程学院,黄山,安徽 245041)摘 要:电子琴作为科技与音乐的产物,在

3、信息化和电子化的时代,为音乐的大众化做出了不可磨灭的贡献,现代歌曲的制作,很多都需要电子琴才能完成。EDA技术作为现阶段电子技术的主力技术得到了长足的发展,其基本特征是采用高级语言描述,具有系统级仿真和综合能力。VHDL硬件描述语言作为EDA技术中较为主流的硬件描述语言,可以采用类似于C语言的书写形式,并采用自顶向下结构设计方法。以Max+Plus II为软件平台,用VHDL硬件语言描述,并以ALTERA公司生产的FPGA芯片搭建的硬件平台实现了电子琴的相关功能。电子琴以键盘演奏模块、音符查表及简谱产生模块和音符发声模块各子模块例化调用所产生的顶层电路,进行逻辑仿真和时序仿真,完成相应配置所实

4、现的。整个系统稳定、可靠性高,电子琴演奏的音乐音色好,可操作性强。关键词:电子琴; EDA技术;Max+Plus II;VHDL硬件描述语言 中文摘要Design of Electronic Organ Based on EDASun Likai Director:Zhao Nianshun(Information Engineering College, Huangshan University, Huangshan, China, 245041)Abstract:Electronic organ has made an indelible contribution to the popul

5、ar music as a product of technology and music in information and electronic age, many of modern song production are required to complete by the electronic organ. EDA technology has obtained the considerable development as the main force of electronic technology now. Its basic feature is using a high

6、-level language to describe with system level simulation and comprehensive ability. VHDL hardware description language is similar with the C language written form as mainstream hardware description language in EDA, and it adopt top-down design method. Using Max+PlusII as software platform and VHDL h

7、ardware language as description language to realize the electronic organs function. The entire system is stable and has high reliability. Electronic organ creats top circuit by invoking keyboard playing module, table look-up of note module, the generation module of numbered music notation and note v

8、ocalization module .The top circuit execute logic simulation and timing simulation to complete the corresponding configuration. Music played by electronic organ sounds good and has strong operating line.Key words :Electronic organ; EDA; Max+PlusII; VHDL hardware description language英文摘要引 言随着社会的发展、科技

9、的进步,电子琴的发明极大的推动了流行音乐的发展,同时可以演奏出未从拥有的音色从而丰富了人们的感情表现,并且推动了音乐的普及使音乐成为了大众的音乐。电子琴作为科技与音乐的产物,在信息化和电子化的时代,为音乐的大众化做出了不可磨灭的贡献。 现代的电子琴一般使用PCM或PWM采样音源,并非“模仿”乐器的音色,而是使用的真实乐器音色,还加上了老式电子琴的滤波器,振荡器,包络线控制来制造和编辑音色。随着EDA技术的大力发展,FPGA等数字可编程器件的出现和发展,基于EDA技术的电子琴设计也就变得更加简单,而且性能更稳定、能实现较复杂的功能,且运用EDA软件可方便的在计算机上实现设计与仿真。本设计基于VH

10、DL语言是电子设计领域中最具活力和发展前途的一项技术,未来必定会取代部分落伍的数字元器件。1 EDA设计技术综述 1.1 EDA技术1.1.1 EDA技术的介绍与发展EDA(Electronic Design Automation)技术作为现代电子设计技术的核心,它依赖强大的计算机,在EDA工具软件平台上,对以硬件描述语言VHDL(Hardware Description Language)为系统逻辑描述手段完成的设计文件,自动地完成逻辑化简、逻辑分割、逻辑综合、结构综合(布局布线),以及逻辑优化和仿真测试等项功能,直至实现既定性能的电子线路系统功能1。EDA技术使得设计者的工作几乎仅限于利用

11、软件的方式,即利用硬件描述语言HDL和EDA软件来完成对系统硬件功能的实现2。EDA技术在21世纪,得到了长足的发展,突出表现在以下几个方面:(1) 使电子设计成果以自主知识产权(IP)的方式得以明确表达和确认;(2) 在仿真验证和软件两方面都支持标准硬件描述语言的功能强大的EDA软件不断推出;(3) EDA使得电子技术领域各学科的界限更加模糊,更加互为包容,如模拟与数字、软件与硬件、硬件与器件、ASIC与FPGA等;(4) SOC高效低成本设计技术的成熟;(5) 系统级、行为验证级硬件描述语言,如System C、System Verilog等的出现,使复杂电子系统的设计特别是验证趋于高效和

12、简单。1.1.2 EDA技术的设计流程一个完整的EDA设计流程既是自顶向下设计方法的具体实施途径,也是EDA工具软件本身的组成结构。其大致的设计流程包括:设计输入、综合、适配、时序仿真和功能仿真、编程下载、硬件测试的步骤。对于目前流行的EDA工具软件,图1-1的设计流程具有一般性3。图1-1 应用FPGA/CPLD的EDA开发设计流程框图 (1) 设计输入:分为原理图输入和HDL文本编辑输入。(2) 综合:将用行为和功能层次表达的电子系统转换为较低层次的便于实现的模块组合装配的过程。(3) 适配:也称结构综合器,功能是将由综合器产生的网表文件配置于指定的目标器件中,使之产生最终的下载文件。(4

13、) 时序仿真和功能仿真:前者是接近真实器件运行特性的仿真,后者是直接对HDL、原理图描述或其他描述形式的逻辑功能进行测试模拟。(5) 编程下载:把适配后生成的下载或配置文件,通过编程器或编程电缆向FPGA或CPLD下载,以便进行硬件调试和验证。(6) 硬件测试:讲含有载入了设计文件的FPGA或CPLD的硬件系统进行统一测试,以便最终验证设计项目在目标系统上的实际工作情况,以排除错误,改进设计。1.1.3 设计平台Max+plusII和VHDL介绍本设计所使用的硬件描述语言是VHDL,设计平台是Altera公司早期的EDA设计软件Max+plusII。 Max+plus是Altera公司提供的F

14、PGA/CPLD开发集成环境,Altera是世界上最大可编程逻辑器件的供应商之一。Max+plus界面友好,使用便捷,被誉为业界最易用易学的EDA软件。在Max+plus上可以完成设计输入、元件适配、时序仿真和功能仿真、编程下载整个流程,它提供了一种与结构无关的设计环境,是设计者能方便地进行设计输入、快速处理和器件编程4。Max+plus开发系统的特点:(1) 开放的界面:Max+plus支持与Cadence,Exemplarlogic,Mentor Graphics,Synplicty,Viewlogic和其它公司所提供的EDA工具接口。 (2) 与结构无关:Max+plus系统的核心Com

15、plier支持Altera公司的FLEX10K、FLEX8000、FLEX6000、MAX9000、MAX7000、MAX5000和Classic可编程逻辑器件,提供了世界上唯一真正与结构无关的可编程逻辑设计环境。 (3) 完全集成化:Max+plus的设计输入、处理与较验功能全部集成在统一的开发环境下,这样可以加快动态调试、缩短开发周期。 (4) 丰富的设计库:Max+plus提供丰富的库单元供设计者调用,其中包括74系列的全部器件和多种特殊的逻辑功能(Macro-Function)以及新型的参数化的兆功能(Mage-Function)。 (5) 模块化工具:设计人员可以从各种设计输入、处理

16、和较验选项中进行选择从而使设计环境用户化。 (6) 硬件描述语言(HDL):Max+plus软件支持各种HDL设计输入选项,包括VHDL、Verilog HDL和Altera自己的硬件描述语言AHDL。 (7) Opencore特征:Max+plus软件具有开放核的特点,允许设计人员添加自己认为有价值的宏函数。VHDL的英文全名是VHSIC(Very High Speed Integrated Circuit)Hardware Description Language,与1983年由美国国防部(DOD)发起创建的,由IEEE进一步发展并在1987年作为IEEE标准1076发布。VHDL作为一个

17、规范语言和建模语言,随着VHDL的标准化,出现了一些支持该语言的行为仿真器。由于创建VHDL的最初目标是用于标准文档的建立和电路功能模拟,其基本想法是在高层次上描述系统和元件的行为。但到了20世纪90年代初,人们可以利用软件工具将VHDL源码自动地转化为文本方式表达的基本逻辑元件连接图,即网表文件。这种方法显然对于电路自动设计是一个极大地推进,很快,电子设计领域出现了第一个软件设计工具,即VHDL逻辑综合器,它把标准VHDL的部分语句描述转化为具体电路实现的网表文件。VHDL具有与具体硬件电路无关和设计平台无关的特性,并且具有良好的电路行为描述和系统描述的能力5。VHDL的优势如下:(1) 与

18、其他的硬件描述语言相比,VHDL具有更强的行为描述能力,从而决定了他成为系统设计领域最佳的硬件描述语言。强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。 (2) VHDL丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟。 (3) VHDL语句的行为描述能力和程序结构决定了他具有支持大规模设计的分解和已有设计的再利用功能。符合市场需求的大规模系统高效,高速的完成必须有多人甚至多个代发组共同并行工作才能实现。 (4) 对于用VHDL完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动的把V

19、HDL描述设计转变成门级网表。 (5) VHDL对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计。1.1.4 FPGA器件的简介FPGA(FieldProgrammable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个概念,内部包括可配置逻辑模块CLB(Confi

20、gurable Logic Block)、输出输入模块IOB(Input Output Block)和内部连线(Interconnect)三个部分。 现场可编程门阵列(FPGA)是可编程器件。与传统逻辑电路和门阵列(如PAL,GAL及CPLD器件)相比,FPGA具有不同的结构,FPGA利用小型查找表(161RAM)来实现组合逻辑,每个查找表连接到一个D触发器的输入端,触发器再来驱动其他逻辑电路或驱动I/O,由此构成了既可实现组合逻辑功能又可实现时序逻辑功能的基本逻辑单元模块,这些模块间利用金属连线互相连接或连接到I/O模块。FPGA的逻辑是通过向内部静态存储单元加载编程数据来实现的,存储在存储

21、器单元中的值决定了逻辑单元的逻辑功能以及各模块之间或模块与I/O间的联接方式,并最终决定了FPGA所能实现的功能,FPGA允许无限次的编程6。本设计所用到的硬件平台是由Altera公司生产的ACEX1K系列中的EP1K30QC208芯片所搭建而成。EP1K30是ACEX1K系列FPGA器件之一,提供1968个寄存器,24576个存储位,30000个典型门,这些使得EP1K30非常适合于构建复杂逻辑功能和存储功能,在需要高性能处理的通信领域内的数字信号处理、宽通道数据操作、数据转换和微控制器等方面应用广泛。作为典型的FPGA器件,为保持其配置的逻辑功能,需要配置芯片进行掉电保护。EP1K30包含

22、一个嵌入式阵列来完成存储功能一个逻辑阵列来完成通用逻辑功能和众多的引脚从而使其可以作为接口与系统组件有效连接。EP1K30内含1728个宏单元,划分为216个逻辑阵列块。嵌入式阵列由一系列嵌入式阵列块组成,每个嵌入式阵列块提供4096位空间,可用于创建RAM或ROM,还可贡献100到300个门为构建组合逻辑功能所用。 图1-2 核心芯片俯视图 1.2 电子琴的应用与设计背景1.2.1 基于EDA技术的电子琴设计介绍随着社会的发展、科技的进步,电子琴的发明极大的推动了流行音乐的发展,同时可以演奏出未从拥有的音色从而丰富了人们的感情表现,并且推动了音乐的普及使音乐成为了大众的音乐。电子琴作为科技与

23、音乐的产物,在信息化和电子化的时代,为音乐的大众化做出了不可磨灭的贡献。现代的电子琴一般使用PCM或PWM采样音源,并非“模仿”乐器的音色,而是使用的真实乐器音色,还加上了老式电子琴的滤波器,振荡器,包络线控制来制造和编辑音色。采用传统方法设计的简易电子琴,通常需要使用单片机、存储器和数字逻辑电路来进行PCB板级的系统集成。尽管这种方案有单片机软件的支持较为灵活,但是由于受硬件资源的限制,未来对设计的变更和升级,总是难以避免要付出较多的研发经费和较长的投放市场周期的代价。随着EDA技术的大力发展,FPGA等数字可编程器件的出现和发展,基于EDA技术的电子琴设计也就变得更加简单,而且性能更稳定、

24、能实现较复杂的功能,且运用EDA软件可方便的在计算机上实现设计与仿真。本设计基于VHDL语言是电子设计领域中最具活力和发展前途的一项技术,未来必定会取代部分落伍的数字元元件。1.2.2 基于EDA技术的电子琴设计设计要求(1) 设计一个简易的八音符电子琴,它通过按键输入来控制音响;(2) 系统演奏时可以选择是手动演奏(由键盘输入)还是自动演奏已存入的乐曲;(3) 能够自动演奏多首乐曲,且乐曲可重复演奏。1.2.3 与设计相关的音乐知识所谓的简谱,是指一种简易的记谱法。有字母简谱和数字简谱两种。一般所称的科谱,系指数字简谱。数字简谱以可动唱名法为基础,用1、2、3、4、5、6、7代表音阶中的7个

25、基本音级,读音为do、re、mi、fa、sol、la、si,休止以0表示。每一个数字的时值名相当于五线谱的4分音符。休止符:音乐除了有音的高低,长短之外,还有音的休止。表示音乐休止的符号叫做休止符,用0标记。通俗的说就是没有声音,不出声的符号。休止符与音符基本相同,也有六种。但一般直接用0代替增加的横线,每增加一个0,就增加一个四分休止符时的时值。音的高低:任何一首曲子都是高低相间的音组成的,从钢琴上直观的看就是越往左面的键盘音越低,越往右面的键盘音越高。本设计是以G调为基准,能发出部分低音组,整个中音组,和部分高音组。其中包括1,2,3,4,5,6,7七种基本音符和休止符。2 系统分析与设计

26、方案 2.1 设计思想以及设计原理框图本文的指导思想是利用EDA技术,通过VHDL语言对FPGA进行配置来实现电子琴的功能,通过按键输入是自动演奏或者人工键盘的弹奏,将采集到的信号转换成含有音符信号的代码以及产生分频预置数,采用数控分频的方法输出不同音符的频率,最后通过扬声器或者蜂鸣器发出声音,同时用LED显示器显示正在演奏的音符和音符的高低音,用LED_A表示音符,用LED_B表示音阶的高低。 其原理框图如图2-1所示:图2-1 系统原理框图 2.2 原理说明系统工作原理如下:(1) 当演奏者按下K3键后,演奏者便可以开始按键演奏,将全局时钟分频后,产生频率较低的时钟clk_scan,同时驱

27、动键盘扫描电路产生keydrv7-kevdrv0的信号,并且将键盘的输入信号k2和k1的值综合起来并输出,产生含有音符信息的音符代码。(2) 代码音符作为音符查表电路和简谱码产生电路的处理,分别将按键的信息,以及所弹奏的音符的信息送出到译码显示电路和数控分频器。(3) 在时钟频率为5MHz的作用下,基准频率分频器对该时钟分频,产生一个频率为1MHz的时钟,并将时钟送到数控分频器,在根据上级电路输出的对应的分频预置数,数控分频器产生弹奏者所弹音符的对应的频率,在经过一个二分频器输出该频率,最后通过扬声器发出该音符的声音。与此同时,显示译码电路对上级电路输出的音符信息进行处理,实时地对其进行译码,

28、来点亮各个二极管。(4) 当演奏者按再次下K3后,键盘不起作用,输出始终为0Hz的信号,扬声器停止发声。(5) 同时,可以通过K4,K5按键,可以灵活控制二极管的显示与不显示。 2.3 系统的实现以及设计指标实现时,可以分块进行独立设计,最后将各个模块联系到一起,实现协调工作,即顶层描述。采用该方案可以提高设计的效率,并且易于对每一部分功能分析及总体的流程控制,对于已经产生的例化元件可以进行调用,增强了整个程序的可读性,同时通过修改各个模块的程序,十分有利于系统的升级。(1) 简易电子琴具体设计指标:(2) 能够进行正常的演奏;(3) 可演奏的发音音阶为G调的部分低音组,整个中音组,部分高音组

29、;(4) 在实现演奏的同时用简谱的形式同步显示演奏的乐曲;(5) 保证足够音量,使输出信号最好保持50%左右的占空比。3 Max+plus设计过程 3.1 键盘演奏模块实现3.1.1 时钟产生模块FPGA与单片机相比,一个非常明显的优势就在于它的高速性。但是因为很多外围器件的驱动需要低频的时钟(若时钟频率太高,则键盘扫描容易出错,数码管会闪烁和不稳定等),所以需要用到分频电路。时钟产生模块是用来产生扫描时钟的,它的输出提供给键盘扫描模块,其外部接口如图4-2所示,它的输入是全局时钟,在这里认为时钟频率为12MHz,它的输出是周期为10ms的扫描信号。图3-1 时钟产生模块该程序含有一个计数器模

30、块和一个译码器输出模块,该程序是通过计数器实现分频的,要从12MHz的全局时钟得到一个100Hz的时钟(这么大的分频需要仿真时间很久),就必须进行的分频,另外一点是译码器的输出采用了寄存器锁存输出,这样是为了消除毛刺,多输入的组合逻辑电路中,某些输入信号在理想情况下应该同时发生变化,但由于延迟路径不同造成这些输入信号发生变化的时间有微小的差别(门延迟时间量级),这时得到的输出信号就会有毛刺,这些毛刺有可能会给下一级电路带来问题,使得整个系统运行不稳定。因此,为了保证系统的稳健性,一般情况下,都应该给输出信号消去毛刺,使之变得干净,在本程序中,译码器的输入是计数器的输出,计数器的各级输出延迟是不

31、一样的,因此译码器输出CLK_SCAN信号的波形就会有毛刺7。解决毛刺的方法有两种: (1)设法使得组合逻辑电路的输入每一个时刻只有一个发生变化,本模块中就是把计数器从二进制码计数器改为格雷码计数器。格雷码计数器的特点是相邻的计数值只有一位不相同,即每次计数值改变时,只有一位信号发生变化 ,这一点就可以保证没有毛刺产生。(2)把有毛刺的信号通过时钟采样,即通过一个D触发器。本程序中就是使用这样的方法。这样的方法的缺点是信号通过一个D触发器后,就延迟了一个时钟周期,在有些电路中延迟是不允许的,然而在本次设计中这样的延迟是允许的。该模块的主要程序如下所示:process(clk) -计数模块beg

32、inif(clkevent and clk=1)thenif(cnt=cnthigh)thencnt=0;elsecnt=cnthigh/2 thenclk_scan =1;elseclk_scan=0;end if;end if;end process;该电路的仿真结果如图3-2所示: 图3-2 时钟产生模块仿真图由图3-2可知,实现了分频电路的逻辑功能,而且可以观察到该模块的输出产生了几纳秒的延迟,但是在本系统中是允许这样的延迟的,与此同时,输出CLK_SCAN比较“干净”,没有毛刺。(注:由于VHDL与MAX+PLUS II的设计特点以及延迟只与器件有关,所以通过修改程序可以随时更改分频

33、数,同时也为了缩短仿真时间,本文为了方便仿真与观察,将仿真参数的设置稍做了修改,仿真通过后,便可以修改实际的参数下载到芯片中,本文以下仿真类同。)3.1.2 键盘扫描模块图3-3 键盘扫描模块图其主要VHDL程序如下: process(clk_scan) Begin if(clk_scanevent and clk_scan=1)then present_statenext_statenext_statenext_statenext_statenext_statenext_statenext_statenext_statenext_state=s0; -多余态处理 end case; end

34、process; -输出译码 keydrv =present_state;以上程序采用一个状态机来实现扫描电路。该状态机是一个one_hot状态机,并且输出值就是状态机的状态,没有通过一个逻辑电路来做输出译码。这样做的好处是得到输出信号比较“干净”,没有毛刺。该电路的仿真结果如图3-4所示:图3-4 键盘扫描模块仿真图由图3-4可知,每当时钟的一个上升沿来到时,输出keydrv7.0就更新一次状态,并且产生了3.8ns的输出延时,实现了该电路的逻辑功能。3.1.3 键盘译码以及开关电路键盘译码电路是从K1和K2和keydrv7.0信号中译码出的按键值的电路,index3.0是键值,范围是000

35、0-1111,K3是键盘的开关,当K3处于高电平时,电路才能开始工作,如果处于低电平,则产生的频率为0Hz,即不发音,该模块的外部接口如图3-5所示:图3-5 键盘译码以及开关电路图该模块的主要程序如下:tempindexindexindexindexindexindexindexindexindexindexindexindexindexindexindexindexnull; -多余态处理end case;elseindex=conv_std_logic_vector(0,4) endif;end process;该电路的仿真结果如图3-6所示:图3-6 键盘译码以及开关电路仿真图 由图3

36、-6可知,当K3为高电平时,且K2或者K1电平值有变化时,输出INDEX3.0不停的跟着K2和K1变化,并且产生了几纳秒的输出延迟;当K3为低电平时,K2,K1以及KEYDRV7.0输入无效,输出INDEX3.0始终为0。通过对比真值表,证明该电路符合目的逻辑要求。 3.2 音符查表及简谱产生电路音符查表以及简谱产生电路tone_rom完成音符查表和简谱码产生。设计的播放器可以总共发出16个音(包括休止符),因此可以选择表中任意15个音。为了减少发音的误差,数控的基准频率选择1MHZ的等占空比脉冲信号,数控分频器设计为11位的加法计数器,其最大的计数值为16#07方法,外加一个D触发器以均衡其

37、占空比,使发音更为清晰响亮,输出CODE是音符的发音,输出HIGH是发音的高低指示,输出TONE是输出音符的分频预置数,分频预置数公式如下:分频预置数=2048-基准频率/(2音符频率),本文中每个音符频率是已知的,基准频率是1MHz,这样就可以依次算出每个音阶对应的分频预置数,例如高音1的音符频率为1567.40Hz,则可以计算出此时的分频预置数=2048-1000000/(21567.40)=2048-673.999=1792.122,偏差为(1792.122-1792)/1792.122100%=0.0068%,因为小数表示比较麻烦,在此设置中去整数,设计中允许此偏差存在,然后将预置数用

38、二进制表示即可8。这样在电路工作状况下,当有效的Index3.0输入时,便产生3种带有音阶信息的输出,他们的真值表见附录程序。该模块的接口电路如图3-7所示:图3-7 音符查表及简谱产生电路电路图该模块的主要程序如下:begin index1=conv_integer(index); -将index3.0表示的二进制数转化为十进制并赋给index1 tone=conv_std_logic_vector(tone1,11); -将tone1转化为11位的二进制数,并赋给tonecodetone1=2047;code1=0;hightone1=773;code1=1;hightone1=912;c

39、ode1=2;hightone1=1036;code1=3;hightone1=1092;code1=4;hightone1=1197;code1=5;hightone1=1290;code1=6;hightone1=1372;code1=7;hightone1=1729;code1=1;hightone1=1410;code1=1;hightone1=1480;code1=2;hightone1=1542;code1=3;hightone1=1570;code1=4;hightone1=1622;code1=5;hightone1=1699;code1=6;hightone1=1710;co

40、de1=7;highnull; -当输入不变时,保持以前状态 end case;end process;该电路的仿真结果如图3-8所示:图3-8 音符查表及简谱产生电路电路仿真图由图3-8可知,随着输入INDEX3.0的变化,HIGN3.0和CODE3.0也随着变化,并且产生了分频预置数TONE10.0,在仿真图中,为了方便观察,他们的值都是以二进制来表示的。 3.3 音符发声模块实现音符查表及简谱码产生电路tone_rom完成音符查表和简谱码产生。它的输出一部分tone10.0来作为音符发生器的输入,如何设计一个电路,将送过来的不同预分频值进行处理,然后再产生音阶对应频率成为音符发生器设计的

41、关键问题,音符发生器的上一级电路里,已经将分频预置数转化为了11位二进制,于是选择数控分频器,以tone10.0作为数控分频器的输入,这样,就在输入端给定不同的CLK和分频预置数时,便可以得到不同的SPKS值。但是又一个问题产生了,分频出来的信号,占空比会发生很大的变化,这样的信号送至扬声器,有时候扬声器会感应不出来,那么就需要外加一个分频器,所以可以经过一个D触发器进行二分频,即将信号的上升沿取反9,两种情况的对比图入图3-9所示,图3-9 二分频后信号的对比图此外,由于音符发生器是时序电路,所以需要加一个时钟脉冲,由于外部时钟是5MHz了,工程中规定,超过3MHz就已经是高频了,这样高的频

42、率时钟不适合电路工作,所以还要引入时钟分频电路,产生频率合适的时钟信号,由于FPGA对时钟跳变沿的判断的精确性,故这种分频的方法是可取的,本文的基准频率是1MHz,本文需要在这里产生5分频10。最后,通过SPKS输出对应音符的频率去驱动扬声器发出声音。该模块又由分频电路,数控分频器,二分频器和扬声器构成,其4者的连接图如图3-10所示,由于这4者联系十分紧密,故可将4者融为一体来设计,其总的模块电路图如图3-11所示。图3-10 音符发生模块框图图3-11 音符发生模块图该模块的主要程序如下所示: architecture one of speaker is signal preclk:std

43、_logic;signal fullspks:std_logic;signal tone1: integer range 0 to 16#7ff#;begin tone1=conv_integer(tone); divideclk:process(clk) variable count4:integer range 0 to 15; begin preclk=5 then preclk=1; count4:=0;elsif clkevent and clk=1 then count4:=count4+1; end if; end process; genspks:process(preclk,

44、tone1) variable count11: integer range 0 to 16#7ff#; begin if preclkevent and preclk =1 then if count11 =16#7ff# then count11:=tone1; -当count11计数器计满时,输入数据tone1被同步预置给count11 fullspks=1; -同时使溢出标志位fullspks输出为高电平 else count11:=count11+1; -否则继续作加1计数 fullspks=0; -且输出溢出标志信号fullspks为低电平 end if; end if; end

45、process; delayspks:process(fullspks) variable count2:std_logic; begin if fullspksevent and fullspks=1then count2:=not count2; -如果溢出标志位信号fullspks为高电平,D触发器输出取反 if count2=1then spks=1; else spks =1; end if; end if; end process; end if; end process; end one; 该电路的仿真结果如图3-12所示:图3-12 音符发生模块仿真图 由图3-12可知,实现了

46、数控分频,当输入不同的TONE值时,实现了公式:分频预置数=2048-基准频率/(2音符频率),便输出相应的音符频率。 3.4 系统的顶层设计3.4.1 层次化设计的概念层次化设计的示意图如图3-13所示11:图3-13 层次化设计的示意图从图中可以看出,层次化设计的核心思想有两个,一是模块化,二是元件重用。(1) 模块化可以将一个大系统划分为几个子模块,而这些子模块又分别由更小的模块组成,如此往下,直至不可再分。这些是自顶向下的设计方法。图3-13中,顶层文件所描述的实体A由B、C、D三个实体组成,而实体B和实体C又分别由实体E、F和实体F、G构成。每个实体都可以看成上一层实体中的一个模块或

47、组件,系统就像搭积木一样一层一层地构建。(2) 元件重用同一个元件可以被不同的设计实体调用,也可以被同一个实体多次调用。图3-13中,实体F分别被实体B和实体C调用,而实体G则被实体C调用了2次。组件重用不但大大减轻了设计者的工作量,而且使程序更结构化和具有更高的可读性。3.4.2 生成组件符号欲将上述的各个模块作为上一层设计实体中的组件,就必须把他们先生成组件符号。具体做法是:在Max+plus II中为VHDL语言程序分别建立项目;在编译、仿真通过,证实逻辑功能正确后,在File菜单下选择edit symbol项即可(如图3-14)。Max+plusII会自动为此实体生成一个后缀为.sym

48、的组件符号文件,以后就可以在图形编辑器中调用此组件了12。图3-14 生成组件符号示意图 3.4.3 调用组件符号(1) 建立项目新建一个顶层档的项目将上述的各个模块在Max+plus II的图形编辑器中调用已经生成的组件符号(如图3-15)。图3-15 调用已生成组件符号示意图(2) 定义输入/输出端口与联线组件中的输入/输出端口需要添加输入/输出引脚,做法是:在图3-15对话框中的prim里选择Input即可添加输入引脚;选择Output即可添加输出引脚。输入/输出引脚上都有一个名字,左键双击它即可输入用户自定的名字。如果要连接两个组件的端口,左键双击它即可输入用户自定的名字。如果要连接两

49、个组件的端口,就将鼠标移到其中一个端口上,这时鼠标指示符会自动变为“十”形;然后按下鼠标左键并拖动到第2个端口,松开鼠标即画好一条线。以图3-16的关系构成顶层设计,并编译下载到FPGA中,即完成了一个基于FPGA的简易电子琴全部设计。图3-16 系统总模块图结束语经过努力,简易电子琴的设计基本上完成了。在整个设计过程中,我都有着许多不同的体会:(1) 这个设计的基本是接触一门新的语言并加以应用,对于我来说,没有想到的是入手的速度比我的预料快,在以前编程的基础上,从到了很大的缩短。知识的接收速度在很大的程度上决定了动手的时间。(2) VHDL的编程与C语言的编程有着本质的不同,然而以往形成的旧

50、编程习惯在VHDL编程中依然起着很大的作用。一通百通,不是没有道理的。对于学习新的知识并予以应用的信心,显得更足了。(3) VHDL的设计关键是电路逻辑设计,而一个程序的关键是总体设计。对于硬件设计接触不多的我们清楚这一点也许不无好处。(4) 通过这个程序设计让我学会一种新的语言,对数字系统结构也有了更进一步的了解和认识,对我以后的学习有很大的帮助。希望其他人在看再做类似设计时有所借鉴。通过此次的毕业设计,我对EDA技术、VHDL语言、Max+plusII的使用和乐谱简谱等系列知识都有了一定的了解。使用EDA技术开发软件的能力也有了很大提高。参考文献1 张 原.可编程逻辑器件设计及应用M. 北

51、京:机械工业出版社,2005,10-30.2 王振红.VHDL数字电路设计与应用实践教程M. 北京: 科学出版社, 2005, 45-60.3 曾繁泰,陈美金.VHDL程序设计注意事项J. 北京:清华大学学报,2009(20):80-15.4 黄正谨.CPLD系统设计技术入门与应用J. 北京:北京科技大学学报,2008(16):23-13. 5 徐志军,徐光辉.CPLD/FPGA的开发和应用的研究J. 北京:北京理工大学学报,2010(33): 35-28.6 阎 石.基于EDA技术设计方法的概述J.上海:上海交通大学学报,2010(54):32-78.7 王金明,杨吉斌.数字系统设计与VHD

52、L综述J .单片机与嵌入式系统应用期刊,2010(11):21-27.8 候伯亨.基于Max+PlusII的FPGA设计J.电子技术期刊,2009(23):54-96.9 朱正伟.Max+PlusII设计方法详述J.安徽:合肥工业大学学报,2009(52):16-30.10 将景旗,刁岚松.硬件描述语言VHDL设计应用实例J.北京:西安交通大学学报,2008:50-60.11 David R.Coehl.The VHDL handbookJ.Kluwer Academic Pubishers,2006(15):11-50. 12 Jan M.Rabaey.Digital Integrated

53、Circuits A Design PerspectiveJ.Prentice Hall,2008(26):23-15.致谢本论文是在赵年顺老师的精心指导下完成的。在做毕业设计的整个过程中,都得到了赵年顺老师的耐心指导和详细解答,特别是在设计的初始阶段,赵年顺老师在需求分析方面给了我很大的帮助,在老师帮助和指导下,使我能很快地就确定了系统的目的和开发方案,并且在后来的程序实现方面给予了正确的引导,使我少走了很多弯路,并提高了我的效率。这对于我以后的工作和学习都有很大的帮助,在此衷心感谢赵老师的耐心辅导。现在即将挥别我的学校、老师、同学,还有我四年的大学生活,虽然依依不舍,但是对未来的路,我充满了信心。最后,感谢在大学期间认识我和我认识的所有人,有你们伴随,才有我大学生活的丰富多彩,绚丽多姿!26

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!