基于EDA的简易电子琴设计第1页,共15页基于EDA的简易电子琴设计鲍亚文(安庆师范大学物理与电气工程学院安徽安庆246011)指导老师:郑江云摘要:本设计是一个简易的七音符电子琴,该电子琴可以通过按键输入来控制音调,也可对预置乐曲的自动演奏,同时由数码管显示即时音符。系统的实现是基于EDA技术,在Quartus软件平台上,借助FPGA目标器件,用硬件描述语言VerilogHDL进行编程并仿真验证。本设计中的电子琴可操作性好,音符显示直观,声音优美。关键词:电子琴,电子设计自动化,VerilogHDL语言引言科技发展的日新月异,催生了一系列新奇实用的电子产品。在这些电子产品中,电子琴早已成为电子乐器行列中的重要一员。电子琴是人类仿制常规乐器的代表之一,其发明问世极大地丰富了人们的听觉感受,推动了音乐的普及和发展。在信息化与电子化交织的今天,电子琴作为社会科技与文明的产物,正扮演着音乐领域中不可或缺的角色。EDA技术的快速发展和成熟,FPGA等数字可编程器件的出现和进步,基于EDA技术的设计也变得愈加简单可行。基于EDA技术的设计不仅系统可靠性较高,而且能实现较为复杂的功能。运用EDA软件可方便地在计算机平台上实现设计与仿真,本设计中的电子琴便是基于EDA技术,运用VerilogHDL语言设计完成的。1EDA概述与音乐知识1.1EDA技术1.1.1EDA的发展EDA(ElectronicDesignAutomation,电子设计自动化)可以认识为在计算机工作平台上,以EDA软件为开发环境,以PLD器件或ASIC专用集成电路为目标器件来设计实现电路系统的一门技术。EDA技术在逐渐进步,其大致经历了3个发展阶段:CAD阶段(20世纪70年代至80年代初)、CAE阶段(20世纪80年代初至90年代初)、EDA阶段(20世纪90年代以后)。[1]EDA技术在进入21世纪后,得到了不小的进步和发展,突出表现在以下几个方面:[2](1)不断推出在仿真验证和设计两方面都支持标准硬件描述语言的EDA软件,功能更加强大且验证更加高效;(2)EDA技术使得电子设计成果以自主知识产权(IP)的方式予以确认,提高了设计成果的可重用性;基于EDA的简易电子琴设计第2页,共15页(3)EDA技术使得电子领域各学科之间的界限更加模糊,互为包容,如模拟和数字、软件和硬件、系统和器件、ASIC和FPGA等;(4)SoPC(可编程芯片系统)进入实用化阶段;(5)高速数字信号处理算法可基于FPGA的DSP技术实现。1.1.2EDA的设计流程一个完整的EDA设计流程既是自顶向下设计方法的具体实施途径,也是EDA工具软件本身的组成结构。自顶向下的设计,即Top-down设计,这种设计方法首先从系统设计入手,在顶层进行功能方框图的划分与结构设计。在功能级仿真纠错,并用硬件描述语言对高层次的系统行为进行描述,然后用综合工具将设计转化为具体门电路网表。由于设计的主要仿真和调试过程是在高层次完成的,这一方面有利于在早期发现结构设计上的错误,避免设计工作的浪费,同时也减少了逻辑功能仿真的工作量,提高了设计的一次成功率。EDA设计流程一般包括:设计输入、综合、布局布线、仿真、编程配置的步骤。[3]图1基于FPGA/CPLD器件的数字系统设计流程(1)设计输入(DesignEntry):主要为原理图(schematic)输入和HDL文本编辑输入2部分。(2)综合(Synthesis):将高级抽象层次的设计描述自动转化为低层次描述。(3)布局布线:将综合生成的电路逻辑网表映射到具体的目标器件,并产生最终的可下载文件。(4)仿真:包括功能仿真和时序仿真,对设计电路的功能的验证。(5)编程配置:把适配后生成的编程文件装入到PLD器件中,CPLD器件的下载称为编程,FPGA器件的下载称为配置。1.1.3QuartusII设计平台和VerilogHDL语言本设计的开发工具是QuartusII,采用VerilogHDL语言编程。QuartusII适合大规模FPGA的开发,是Altera继MAX+plusII后的新一款开发工具。QuartusII提供了更优化的综合和适配功能,改善了对第三方仿真和分析工具的支持。它还包括了DSPBuilder、设计输入原理图HDL文本综合功能仿真FPGA/CPLD适配时序仿真FPGA/CPLD编程下载在线测试基于EDA的简易电子琴设计第3页,共15页SOPCBuilder等开发工具,支持系统级的开发等。QuartusII是一款具有标准的EDA工具接口和完善的可视化设计环境的FPGA/CPLD集成开发软件。设计输入有多种表达方式,最常用的是原理图方式和HDL文本方式。VerilogHDL是一种硬件描述语言(HDL:HardwareDescriptionLanguage),以文本形式来描述数字系统硬件的结构和行为的语言。用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。[4]VerilogHDL和VHDL是世界上流行的2种硬件描述语言,都是在20世纪80年代中期被开发出来的。VerilogHDL由GDA公司开发,它是在C语言的基础上发展而来的,但作为一种硬件描述语言和C语言有着本质的区别,Verilog语言概括起来有着如下的一些特点:(1)适用于可综合的电路设计,也适用于电路和系统的仿真。(2)能在多个层次上对所设计的系统进行描述,对设计的规模也没有任何限制。(3)行为描述和结构描述灵活且支持混合建模。(4)行为描述语句类似于软件高级语言。(5)内置各种逻辑门和开关级元件。(6)UDP(用户定义原语)可灵活创建。1.1.4FPGA器件FPGA(FieldProgrammableGateArray),现场可编程门阵列,是一种在采用单元型结构的新型PLD器件。作为ASIC(专用集成电路)领域中的一种半定制电路,FPGA既弥补了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点,成为当前主流的PLD器件之一。FPGA使用CMOS、SRAM工艺制作,和阵列型PLD结构不同,内部由许多独立的可编程逻辑单元构成,各逻辑单元间可以灵活地相互连接,具有密度高、速度快、编程灵活、可重新配置等优势。1.2电子琴与相关的音乐知识EDA技术的成熟,FPGA器件的发展使得基于EDA技术的电子琴设计成为可能。在计算机上运用EDA软件可以很方便地对所需要实现的电子琴进行设计和仿真。采用传统方法如单片机设计的电子琴,要求设计人员对硬件非常熟悉,且单片机制作的主控板受制版工艺、布局结构和起器件质量等因素的影响导致抗干扰能力差、故障率高、不易扩展等问题。EDA技术对于设计人员来说,修改程序可以实现不同的功能,对于设计周期来说节省了时间。本设计中的电子琴是通过按键控制发音的,系统演奏时能选择手动演奏或是自动演奏一段预置的简短音乐。为完成该设计,需要了解一些基本的音乐知识理论。在音乐领域中,简谱和五线谱是人们用来记谱的两种记谱法,简谱相对简易,其又分为字母简谱和数字简谱。数字简谱以1、2、3、4、5、6、7来表示音阶中的7个基本音级,分别用do,re,mi,fa,sol,la,si来读音。在一段4/4拍数字简谱中,单独的数字表示一个四分音符,数字下面的横线为减时线,表示四分音符长度减半;数字右面的短横线称为增时线,每加一条则延长一个四分音符时间;数字右面的圆点称为附点,用来延长前面音符时值的一半。如4/4拍一个四分音符(5)为1拍,则全音符(5---)为4拍,二分音符(5-)为2拍,八分音符(5)为半拍。在一段数字简谱后面的竖直线为小节,0为休止符。另外为了标记简谱中的重低音,在数字上方的圆点记为重音,在下方的为低音,单独的数字则是中音。基于EDA的简易电子琴设计第4页,共15页2.系统分析与方案设计2.1设计思想与原理框图设计思想为利用EDA技术对FPGA器件进行配置实现电子琴,系统扫描按键输入信号来选择是手动还是自动演奏,采集的信号转化为分频预置数,数控分频器输出不同音符的频率给扬声器,并由数码管显示当前音符。CLK-6MHz分频CLK-4Hz图2系统原理框图2.2原理说明(1)当演奏者按下7个音调键盘后,在系统基准时钟6MHz下,根据键盘的输入信号分频,产生所需的7个不同音调的频率并二分频输出给speaker,同时由数码管HEX4显示音调。(2)当自动演奏信号auto为真时,对系统6MHz基准时钟分频,产生一个频率为4Hz的时钟用于谱曲的分频比预置。6MHz时钟使数控分频器产生曲谱演奏音符的对应频率,再经过一个二分频器输出该频率,最后通过speaker发出该音符的声音,同时由数码管HEX3、HEX2和HEX1分别显示高中低音符。(3)当auto为0演奏者按下stp键后,speaker不发声,输出始终为0Hz的信号,同时音调数码管均显示0。3.QuartusII设计过程3.1自动演奏乐曲要使用电子琴完成一段音乐的演奏,音调和音长是2个最关键的参数。根据音乐知识,音调是由频率控制的,音长为该音符持续时间的长短。在本设计中,乐谱产生电路用来控制音乐的音调和音长。本设计中曲谱的自动演奏需要在C调中选取从低音1到高音7共21个音阶,这些不同信号的频率都可以由一个基准频率分频得到。因为各音阶的频率为非整数,而分频系数不能为小数,所以必须对分频系数进行四舍五入。这样基准频率的选择变得比较重要,基准频率选择较低,分频系数就小,误差大;基准频率选择较高,误差是小了,但是分频系数也大。综合考虑,选取6MHz的基准频率是可行的。数控分频器输出的为脉宽极窄的脉冲式信号,为了减少输出的偶次谐波分量,需要在数控分频器和扬声器之间加一个二分频器以均衡其占空比,保证到达扬声器的是对称方波。二分频器将基准频率二分频,即为3MHz,计算分频系数也就以3MHz为基准频率。分频系数为基准频率和各音阶频率的比值,例如中音1的频率为523Hz,分频系数为5736,高音7的频率为1976Hz,分频系数为1518。由于最大分频系数为11450,故采用14位二进制计数器已经足够。在演奏时,对于不同的分频系数,只需要加载对应的预置数。采用加载预置数的方法比反馈复零法更节省资源,实现起来也更加简单。用反馈预置计数器二分频器扬声器曲谱产生音符显示数码管123按键译码置数分频数码管4音调显示扬声器基于EDA的简易电子琴设计第5页,共15页差值法分频,把初始值214-1=16383和各音阶的分频系数的差值作为预置数即可发出不同频率的音符。对于乐曲中的休止符,只要将分频系数设为0,初始值为16383即可,此时扬声器不发声。[6]表1各音阶频率对应分频系数与预置数(由3Mhz计算得出)低音频率/Hz分频系数初始值中音频率/Hz分频系数初始值高音频率/Hz分频系数初始值1262114504933152357361064711046286813515229410204617925875111112722117525531383033309091729436594552118313131822761410743498596778746984298120854139721471423653927653873057843827125565156819131447064406818956568034091297467601705146787494607310310798830361334771976151814865音符的持续时间由乐曲的速度及每个音符的节拍数确定。通过控制计数器预置数的停留时间,预置数的停留时间长,则音符的停留时间长。以下是生日歌的C调简谱:图3生日歌简谱简谱中,如果将全音符的持续时间设定为1秒,则四分音符为0.25秒,只需要再提供一个4Hz的时钟频率即可产生四分音符的时长。每个音符的演奏时间都是0.25的整数倍,对于节拍较长的音符,如二分音符在记谱时将该音名连续记录2次,全音符连续记录4次即可。在编写乐谱程序时记音符的拍数,由于二分频器的存在,一拍就要记为连续的2个时钟节拍。为了实现乐曲的循环演奏,需要再加一