基于FPGA的乐曲演奏电路设计_第1页
基于FPGA的乐曲演奏电路设计_第2页
基于FPGA的乐曲演奏电路设计_第3页
基于FPGA的乐曲演奏电路设计_第4页
基于FPGA的乐曲演奏电路设计_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目录1、EDA技术发展及介绍11.1 EDA技术的介绍11.2 EDA技术的发展11.3 EDA技术的发展趋势21.4 乐曲演奏电路简介22、总体方案设计32.1 设计内容32.1 设计方案比较32.3 方案论证42.3 方案选择43、单元模块设计43.1稳压电源电路53.2有源晶振电路53.3蜂鸣器63.4七段数码管显示电路74、特殊器件的介绍84.1 CPLD器件介绍84.2 FPGA器件介绍84.3 MAX|EPM240T100C5器件95、最小系统原理106、软件实现116.1音调的控制116.2音长的控制126.3软件设计127、系统仿真及调试167.1仿真167.2 调试188、总

2、结198.1设计小结198.2设计收获198.3设计改进198.4 致谢199 、参考文献201、EDA技术发展及介绍1.1 EDA技术的介绍EDA是电子设计自动化(Electronic Design Automation)缩写,是90年代初从CAD(计算机辅助设计)、CAM(计算机辅助制造)、CAT(计算机辅助测试)和CAE(计算机辅助工程)的概念发展而来的。EDA技术是以计算机为工具,根据硬件描述语言HDL( Hardware Description language)完成的设计文件,自动地完成逻辑编译、化简、分割、综合及优化、布局布线、仿真以及对于特定目标芯片的适配编译和编程下载等工作。

3、硬件描述语言HDL是相对于一般的计算机软件语言,如:C、PASCAL而言的。HDL语言使用与设计硬件电子系统的计算机语言,它能描述电子系统的逻辑功能、电路结构和连接方式。设计者可利用HDL程序来描述所希望的电路系统,规定器件结构特征和电路的行为方式;然后利用综合器和适配器将此程序编程能控制FPGA和CPLD内部结构,并实现相应逻辑功能的的门级或更底层的结构网表文件或下载文件。目前,就FPGA/CPLD开发来说,比较常用和流行的HDL主要有ABEL-HDL、AHDL和VHDL。 1.2 EDA技术的发展可将EDA技术分为三个阶段。(1)七十年代为CAD阶段,人们开始用计算机辅助进行IC版图编辑、

4、PCB布局布线,取代了手工操作,产生了计算机辅助设计的概念。(2)八十年代为CAE阶段,与CAD相比,除了纯粹的图形绘制功能外,又增加了电路功能设计和结构设计,并且通过电气连接网络表将两者结合在一起,实现了工程设计,这就是计算机辅助工程的概念。CAE的主要功能是:原理图输入,逻辑仿真,电路分析,自动布局布线,PCB后分析。(3)九十年代为ESDA阶段,尽管CAD/CAE技术取得了巨大的成功,但并没有把人从繁重的设计工作中彻底解放出来。在整个设计过程中,自动化和智能化程度还不高,各种EDA软件界面千差万别,学习使用困难,并且互不兼容,直接影响到设计环节间的衔接。基于以上不足,人们开始追求:贯彻整

5、个设计过程的自动化,这就是ESDA即电子系统设计自动化。1.3 EDA技术的发展趋势目前的EDA产业正处在一场大变革的前夕,对更低成本、更低功耗的无止境追求和越来越短的产品上市压力正迫使IC供应商提供采用0.13m或以下的千万门级的系统芯片,而这些系统芯片的高复杂性设计更加依赖于EDA供应商提供全新的设计工具和方法以实现模拟前后端、混合信号和数字电路的完全整合。然而,这些新的需求为当代EDA工具和设计方法带来了不少新的挑战与机会。例如,如何在工艺上防止模拟电路与数字电路之间的干扰;现有的大部份EDA工具最多只能处理百万门级设计规模,随着IC设计向千万门级以上规模发展,现有EDA工具和方法必须进

6、行升级。如何融合各EDA供应商的工具,以便向IC设计界提供更高效能和更方便的RTL-to-GDSII或Conc-ept-to-GDSII整合设计环境;为保证深亚微米(0.13m或以下)和更低内核工作电压(1.8V或以下)时代的信号完整性和设计时序收敛,必须采用新的设计方法。半导体工艺的每一次跃升都促使EDA工具改变自己,以适应工艺的发展;反过来EDA工具的进步又推动设计技术的发展。可以说EDA工具是IC设计产业的背后推手。系统芯片(SOC)正在迅速地进入主流产品的行列。由此引发的“芯片就等于整机”的现象,将对整个电子产业形成重大的冲击。种种迹象表明,整个电子产业正在酝酿着一场深刻的产业重组,这

7、将为许多新兴的企业提供进入这一行业的最佳。1.4 乐曲演奏简介 乐曲演奏广泛用于自动答录装置、手机铃声、集团电话及智能仪器仪表设备。实现方法有许多种,在众多的实现方法中,以纯硬件完成乐曲演奏,随着FPGA集成度的提高,价格下降,EDA设计工具更新换代,功能日益普及与流行,使这种方案的应用越来越多。PFGA预装了很多已构造好的参数化库单元LPM器件,通过引入支持LPM的EDA软件工具,设计者可以设计出结构独立而且硅片的使用效率非常高的产品。2、总体方案设计2.1设计内容用FPGA器件驱动蜂鸣器演奏“友谊地久天长”片段。一首乐曲包含三个要素:乐曲声音频率,发音时间的长短,停顿的时间。按照图1乐谱,

8、设计相应电路控制speaker信号的方波频率,某一频率持续时间长短,各频率间间隔大小,就可以推动蜂鸣器演奏乐曲。 图1 “友谊地久天长”片段乐谱注:N 一拍;N 两拍;N 四拍;N 八拍;N为音谱。2.2设计方案比较方案一:由单片机AT89S52来实现乐曲演奏电路的设计,外围电源采用+5V电源供电,时钟由12MHz的晶振产生,通过按键的状态来检测乐曲演奏状态,中央处理器由AT89S52单片机来完成,乐曲演奏状态由七段数码管来模拟。这种方案结构简单,易掌握,各部分电路实现起来都非常容易,在传统的乐曲演奏设计中也应用得较为广泛,技术成熟。其原理框图如图2-1。电源供电电路数码管显示电路AT89S5

9、2单片机时钟产生电路 按键控制电路扬声器电路 图2-1 基于单片机的乐曲演奏电路框图方案二:基于现场可编程逻辑门阵列FPGA,通过EDA技术,采用VerilogHDL硬件描述语言实现乐曲演奏电路设计。程序设计思想为:1、用分频电路产生不同频率方波;2、利用计数器实现speaker信号频率选择,某一频率持续时间长短,各频率间间隔大小。其框图如图2-2。2分频器反馈预置计数器6MHz扬声器音符显示曲谱产生4Hz数码管 图2-2 乐曲演奏电路原理框图2.3方案论证 通过方案一二的比较,可以看出方案一的设计使用分立元件电路较为多,因此会增加电路调试难度,且电路的不稳定性也会随之增加,而采用FPGA芯片

10、实现的电路,由于在整体性上较好,在信号的处理和整个系统的控制中,FPGA的方案能大大缩减 电路的体积,提高电路的稳定性。此外其先进的开发工具使整个系统的设计调试周期大大缩短,一般来讲,同样的逻辑,基于FPGA要比基于单片机要快很多,因为它们工作的原理是完全不同的。单片机是基于指令工作的,同样的激励到达单片机后,单片机首先要判断,然后读取相应的指令,最后作出相应,这每一步都是需要在单片机的时钟驱动下一步步的进行。而基于FPGA则是把相应的逻辑“暂时”固化为硬件电路了,它对激励作出的响应速度就是电信号从FPGA的一个管脚传播另一个管脚的传播速度,当然这指的是异步逻辑,同时电信号也要在芯片内进行一些

11、栅电容的充放电动作,但这些动作都是非常非常快的。2.4方案选择从目前的EDA技术来看,其特点是使用普及、应用广泛、软件功能强大。在ASIC和PLD器件方面,向超高速、高密度、低功耗、低电压方向发展。当今社会人们对低故障、高实时、高可靠、高稳定的性能更加青睐,结合本设计的要求及综合以上比较的情况,我们选择了基于FPGA的乐曲演奏电路方案。 3、单元模块设计本设计由现场可编程门矩阵(FPGA)作为控制芯片,通过VreilogHDL硬件描述语言设计,运用自顶而下的设计思想,按功能逐层分割实现层次化的设计。总体设计方案为(1)用分频电路产生不同频率方波;(2)利用计数器实现speaker信号频率的选择

12、,某一频率持续时间长短,各频率间间隔大小。下面介绍主要模块的功能及作用。3.1稳压电源电路该稳压电路的作用是当电网电压波动、负载和温度变化时,维持输出直流电压稳定。该电路可为晶振电路以及扬声器提供+3.3V的稳定电压,驱动器件工作。其原理图如图3-1所示。 图3-1 稳压电源电路3.2有源晶振电路采用有源晶振作为时钟信号源,它是一个完整的振荡器,其内部除了石英晶体外还有阻容软件和晶体管,有源晶振信号质量好,比较稳定,而且连接方式比较简单。主要是作为电源滤波,通常使用的为一个电容和电感组成的PI型滤波网络,输出端使用一个小阻值电阻过滤信号。串电阻可减小反射波,避免反射波叠加引起过冲,减少谐波以及

13、阻抗匹配,减小回波干扰及导致的信号过冲。由于本设计所用的为20MHZ的晶振,而20MHz以下的晶体晶振基本上都是基频的器件,稳定度好,20MHz以上的大多是谐波的(如3次谐波、5次谐波等等),稳定度差,因此我们使选用频的器件,毕竟倍频用的PLL电路需要的周边配置主要是电容、电阻、电感,其稳定度和价格方面远远好于晶体晶振器件。其原理图如图3-2所示。 图3-2 有源晶振电路3.3蜂鸣器根据蜂鸣器输入信号频率的不同决定了其发声不同的原理,来设计一个由数控分频器控制BUZZER发声的简单实验。数控分频器的预置值由乐曲的音调的值来决定,从而间接地控制BUZZER得发声频率。其原理图如图3-3所示。 图

14、3-3 蜂鸣器电路3.4七段数码显示电路七段数码管和普通发光二极管的发光原理一样,为了进行直观显示而将普通发光二极管封装在一起,能够进行16进制数字显示;有共阳极和共阴极之分,共阳极就是此实验平台所使用的链接方式,在控制端输入底点平的时候发光,在输入高电平的时候就不发光。其原理电路图如图3-4所示。 图3-4 七段数码显示电路4、特殊器件的介绍4.1 CPLD器件介绍CPLD是Complex Programmable Logic Device的缩写,它是有最早的PLD器件发展形成的高密度可编程逻辑器件,它具有编程灵活、集成度高、设计开发周期短、适用范围宽、开发工具先进、设计制造成本低、对设计者

15、的硬件经验要求低、标准产品无需测试、保密性强、价格大众化等特点。 CPLD是一种用户根据各自需要而自行构造逻辑功能的数字集成电路。其基本设计方法是借助集成开发软件平台,用原理图、硬件描述语言等方法,生成相应的目标文件,通过下载电缆(“在系统”编程)将代码传送到目标芯片中,实现设计的数字系统。许多公司都开发出了CPLD可编程逻辑器件。比较典型的就是Altera、Lattice、Xilinx世界三大权威公司的产品。如 Altera公司的MAXII器件,就是其极具代表性的一类CPLD器件,是有史以来功耗最低、成本最低的CPLD。MAX II CPLD基于突破性的体系结构,在所有CPLD系列中,其单位

16、I/O引脚的功耗和成本都是最低的。 Altera公司的MAX7000A系列器件是高密度、高性能的EPLD,它是基于第二代MAX结构,采用CMOS EPROM工艺制造的。该系列的器件具有一定得典型性,其他结构都与此结构非常的类似。它包括逻辑阵列块、宏单元、扩展乘积项、可编程连线阵列和IO控制部分。由于大多数CPLD是基于乘积项的“与或”结构,故适合设计组合逻辑电路。4.2 FPGA器件介绍FPGA(FieldProgrammable Gate Array)可以达到比PLD更高的集成度,它是在PAL、GAL、EPLD等可编程器件的基础上进一步发展起来的,具有更复杂的布线结构和逻辑实现。PLD器件和

17、FPGA的主要区别在于PLD是通过修改具有固定内连电路得逻辑功能来进行编程,而FPGA是通过修改一根或多根分割宏单元的基本功能块的内连线的布线来进行编程。它一般由可嵌入式阵列块(EAB)、逻辑阵列块(LAB)、快速互联通道(Fast Track)、IO单元(IOE)组成。Altera Cyclone II 采用全铜层、低K值、1.2伏SRAM工艺设计,裸片尺寸被尽可能最小的优化。采用300毫米晶圆,以TSMC成功的90nm工艺技术为基础,Cyclone II 器件提供了4,608到68,416个逻辑单元(LE),并具有一整套最佳的功能,包括嵌入式18比特x18比特乘法器、专用外部存储器接口电路

18、、4kbit嵌入式存储器块、锁相环(PLL)和高速差分I/O能力。Cyclone II 器件扩展了FPGA在成本敏感性、大批量应用领域的影响力,延续了第一代Cyclone器件系列的成功。由于FPGA是基于查找表(LUT)结构的器件,且每个LAB由10个LE组成,一个LE由LUT和寄存器组成,适合于时序逻辑电路的设计。4.3 MAXEPM240T100C5器件MAX II器件系列是一种非易失性、即用性可编程逻辑系列,它采用了一种突破性的新型CPLD架构。这种新型架构的成本是原先MAX 器件的一半,功耗是其十分之一,密度是其四倍,性能却是其两倍。这些超级性能是在提供了所有MAX系列CPLD 先进特

19、性的架构的基础上,根据Altera专家们的意见而重新采用基于查找表的架构而得到的。这种基于查找表的架构在最小的I/O焊盘约束的空间内提供了最多的逻辑容量。因此,MAX II CPLD是所有CPLD系列产品中成本最低、功耗最小和密度最高的器件。基于成本优化的0.18微米6层金属Flash工艺,MAX II器件系列具有CPLD所有的优点,例如非易失性、即用性、易用性和快速传输延时性。以满足通用性,低密度逻辑应用为目标,MAX II器件成为接口桥接、I/O扩展、器件配置和上电顺序等应用最理想的解决方案。除这些典型的CPLD应用之外,MAX II器件还能满足大量从前在FPGA、ASSP和标准逻辑器件中

20、实现的低密度可编程逻辑需求。MAX II器件提供的密度范围从240到2210个逻辑单元(LE),最多达272个用户I/O管脚。其引脚图如图4-3所示 图4-1 EPM240T100C55、最小系统原理6、软件实现通过至顶向下(TOP-DOWN)的设计方法,我们对电路的设计要求作了分析,从电路要实现的功能着手,逐层分析电路设计的步骤,再具体到各个模块的设计实现以及各模块实现方案的选择。从本设计的电路要求,我们分析了需要实现一个输入状态的编码,以及对循环点亮灯的方式的选择,综合这两种状态控制输出信号的状态变化。软件设计流程图:2分频器反馈预置计数器音符显示曲谱产生图6-1软件设计流程图6.1音调的

21、控制频率的高低决定了音调的高低。简谱中从低音1至高音1之间每个音名对应的频率如表6-1所示。表6-1音高频率对照表1234567低音262Hz294Hz330Hz349Hz392Hz440Hz494Hz中音532Hz578Hz659Hz698Hz784Hz880Hz988Hz高音1046Hz1175Hz1318Hz1397Hz1568Hz1760Hz1976Hz 该乐曲各音阶频率及相应的分频比如表6-2所示。为了减小输出的偶次谐波分量,最后输出到扬声器的波形应为对称方波,因此在到达扬声器之前,有一个二分频的分频器。表6-2中的分频比就是从6MHz频率二分频得到的3MHz频率基础上计算得出来的。

22、从表6-2可以看出,最大的分频系数为11468,故采用14位二进制计数器分频可满足需求。对于不同的分频系数,只要加载不同的预置数即可,对于乐曲中的休止符,只要将分频系数设为0,即初始值为16383即可,此时扬声器将不会发声。采用加载预置数实现分频的方法比采用反馈复零法节省资源,实现起来也容易些。表6-2 各音阶频率对应的分频比及预置数音 名分 频 比预 置 数音 名分 频 比预 置 数低音1114684915中音5382712556低音2102156168中音6340912974低音391027281中音7303713346低音485917792高音1286713516低音576538730高

23、音2255413829低音668189565高音3227414109低音7607310310高音4214814235中音1573610647高音5191314470中音2511111272高音6170514678中音3455211831高音7151914864中音4428912094休止符0163836.2音长的控制音符的持续时间根据乐曲的速度及每个音符的节拍数来确定。本次演奏的片段,最短的音符为四分音符,如果将全音符的持续时间设为1s的话,则只需要再提供一个4Hz的时钟频率即可产生四分音符的时长。6.3软件设计设计程序如下/友谊天长地久乐曲演奏电路/信号定义与说明:/clk_4Hz:用于控制

24、音长(节拍)的时钟频率;/clk_6MHz:用于产生各种音阶频率的基准频率;/speaker:用于激励扬声器的输出信号,本例中为方波信号;/high,med,low:分别用于显示高音、中音和低音音符,各驱动一个数码管来显示。module song(clk_6MHz,clk_4Hz,speaker,high,med,low);input clk_6MHz,clk_4Hz;output speaker; output3:0 high,med,low;reg speaker; reg3:0 high,med,low; reg7:0 counter;reg13:0 divider,origin; wi

25、re carry;assign carry=(divider=16383);always (posedge clk_6MHz)begin if(carry) divider=origin;else divider=divider+1;endalways (posedge carry)begin speaker=speaker;end/2分频产生方波信号always (posedge clk_4Hz) begin case(high,med,low) /根据不同的音符,分频比预置b1:origin=7281;b1:origin=8730;b0:origin=9565;b1:origin=1031

26、0;b0:origin=10647;b0:origin=11272;b0:origin=11831;b0:origin=12556;b0:origin=12974;b0:origin=13516;b0:origin=16383;endcase endalways (posedge clk_4Hz) beginif(counter=122) counter=0;/计时,以实现循环演奏else counter=counter+1;case(counter)/记谱0:high,med,low=h000;/低音0,持续2个时钟节拍1:high,med,low=h000;2:high,med,low=h

27、005; /低音5,发4个时钟节拍3:high,med,low=h005; 4:high,med,low=h005;5:high,med,low=h005;6:high,med,low=h010; /中音17:high,med,low=h010;8:high,med,low=h010;9:high,med,low=h010;10:high,med,low=h010;11:high,med,low=h010;/中音112:high,med,low=h010;13:high,med,low=h030; /中音3 14:high,med,low=h030;15:high,med,low=h020;

28、/中音216:high,med,low=h020;/发4个时钟节拍17:high,med,low=h020;18:high,med,low=h020;19:high,med,low=h010;/中音120:high,med,low=h020; /中音221:high,med,low=h020;22:high,med,low=h030; /中音323:high,med,low=h030;24:high,med,low=h010;/中音125:high,med,low=h010;26:high,med,low=h010;27:high,med,low=h010;28:high,med,low=h0

29、10;29:high,med,low=h030; /中音330:high,med,low=h030;31:high,med,low=h050; /中音532:high,med,low=h050;33:high,med,low=h060; /中音634:high,med,low=h060;35:high,med,low=h060;36:high,med,low=h050; /中音537:high,med,low=h050;38:high,med,low=h050;39:high,med,low=h050;40:high,med,low=h030; /中音341:high,med,low=h030

30、;42:high,med,low=h030;43:high,med,low=h010;/中音144:high,med,low=h010;45:high,med,low=h020; /中音246:high,med,low=h020;47:high,med,low=h020;48:high,med,low=h020;49:high,med,low=h010;/中音150:high,med,low=h020;/中音251:high,med,low=h020;52:high,med,low=h030; /中音353:high,med,low=h030;54:high,med,low=h010; /中音

31、155:high,med,low=h010;56:high,med,low=h010;57:high,med,low=h010;58:high,med,low=h006; /低音659:high,med,low=h006;60:high,med,low=h006;61:high,med,low=h005; /低音562:high,med,low=h005;63:high,med,low=h010; /中音1 64:high,med,low=h060; 65:high,med,low=h060;66:high,med,low=h050; 67:high,med,low=h050;68:high,

32、med,low=h030; 69:high,med,low=h030;70:high,med,low=h030; 71:high,med,low=h010;72:high,med,low=h010; 73:high,med,low=h020;74:high,med,low=h020; 75:high,med,low=h020;76:high,med,low=h020; 77:high,med,low=h010;78:high,med,low=h020; 79:high,med,low=h020;80:high,med,low=h060; 81:high,med,low=h060;82:high

33、,med,low=h050; 83:high,med,low=h050;84:high,med,low=h050; 85:high,med,low=h050;86:high,med,low=h030; 87:high,med,low=h030;88:high,med,low=h030; 89:high,med,low=h050;90:high,med,low=h050; 91:high,med,low=h060;92:high,med,low=h100; 93:high,med,low=h100;94:high,med,low=h050; 95:high,med,low=h050;96:hig

34、h,med,low=h050; 97:high,med,low=h050;98:high,med,low=h030; 99:high,med,low=h030; 100:high,med,low=h030; 101:high,med,low=h010; 102:high,med,low=h010; 103:high,med,low=h020; 104:high,med,low=h020; 105:high,med,low=h020; 106:high,med,low=h020; 107:high,med,low=h010; 108:high,med,low=h020; 109:high,med

35、,low=h020; 110:high,med,low=h030; 111:high,med,low=h030; 112:high,med,low=h010; 113:high,med,low=h010; 114:high,med,low=h010; 115:high,med,low=h010; 116:high,med,low=h006; 117:high,med,low=h006; 118:high,med,low=h006; 119:high,med,low=h005; 120:high,med,low=h005; 121:high,med,low=h010; 122:high,med,

36、low=h000; default:high,med,low=h000;endcaseendled7s u1(high,high_7s); /高音音符显示led7s u2(med,med_7s); /中音音符显示led7s u3(low,low_7s); /低音音符显示endmodulemodule led7s(datain,ledout); /7段数码管译码显示模块input3:0 datain; output reg6:0 ledout;always begin case(datain)0:ledout=7b; 1:ledout=7b;2:ledout=7b; 3:ledout=7b;4:

37、ledout=7b; 5:ledout=7b;6:ledout=7b; 7:ledout=7b;8:ledout=7b; 9:ledout=7b;10:ledout=7b; 11:ledout=7b;12:ledout=7b; 13:ledout=7b;14:ledout=7b; 15:ledout=7b;default:ledout=7b;endcaseendendmodule7、系统仿真及调试7.1仿真通过QuartusII软件,我们进行了仿真,其仿真波形如下图:在QuartusII软件中利用硬件描述语言描述电路后,用RTL Viewers生成的对应的电路图如下:7.2 调试在QuartusII软件中,通过对所设计的硬件描述语言代码进行波形仿真后,达到了预期效果,于是,我们在该软件上进行下载配置设置。在Assignments菜单下选中Devices,在Family栏选择ACEX1K,选中EPM240T100C5器件。再在A

温馨提示

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

评论

0/150

提交评论