ImageVerifierCode 换一换
格式:DOCX , 页数:30 ,大小:152.99KB ,
资源ID:10926489      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-10926489.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于FPGA的电子琴设计FPGA实训.docx)为本站会员(b****3)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

基于FPGA的电子琴设计FPGA实训.docx

1、基于FPGA的电子琴设计FPGA实训第一章 绪论1.1引言随着电子技术的飞速发展,微电子技术的进步主要表现在大规模集成电路加工技术即半导体工艺技术的发展上,使得表征半导体的工艺水平的线宽已经达到了60nm,并在不断地缩小,面在硅片单位面积上,集成了更多的晶体管。集成电路设计正在不断地向超大规模,极低功耗和超高速的方向发展,电子产品的功能越来越强大,体积越来越小,功耗越来越低。同时,利用可编程逻辑器件和EDA 技术使设计方法发生了质的变化。把以前“电路设计+硬件搭试+调试焊接”转化为“功能设计+软件模拟+仿真下载”。利用EDA 开发平台,采用可编程逻辑器件CPLDFPGA 使硬件的功能可通过编程

2、来实现,这种新的基于芯片的设计方法能够使设计者有更多机会充分发挥创造性思维,实现多种复杂数字逻辑系统的功能,将原来由电路板设计完成的工作放到芯片的设计中进行,减少了连线和体积,提高了集成度,降低了干扰,大大减轻了电路设计和PCB设计的工作量和难度,增强了设计的灵活性,有效地提高了工作效率,增加了系统的可靠性和稳定性,提高了技术指标。这些技术使得各种电子产品迅速的进入了我们的生活,我们处在一个被电子产品深度包围的时代,在一个普通老百姓的家里,衣食住行,每一个产品的诞生都离不开EDA技术,从彩色电视机,到智能冰箱,到全自动洗衣机,电饭煲,到微波炉,电磁炉,电子琴,再到个人随身用的手机,MP3音乐播

3、放器都需要EDA技术提供支持。本文应用VHDL硬件描述语言,设计一个乐曲硬件演奏电路,它能将一首预先设置存储好的乐曲自动播放出来,除此之外,也能够通过按键的方式输入音符,使其具备简易电子琴的功能。通过此项研究,能够深切的体会利用EDA工具开发的优越性,在此基础上,对乐曲硬件演奏电路功能进行丰富,具体一定的社会实用性。下面对乐曲演奏电路的设计与实现中涉及的EDA技术,以及EDA技术中常用的开发器件CPLDFPGA可编程逻辑器件,开发语言VHDL以及开发软件Quartus作简单介绍。1.2 EDA简介EDA是电子设计自动化(ElectrONic Design AUTOMATION)的缩写,在20世

4、纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。EDA技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。1.3 FPGA简介FPGA是英文Field Programmable Gate Array的缩写,即现场可编程门阵列,它是在PAL、GAL、EPLD等可编程器件的

5、基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个新概念,内部包括可配置逻辑模块CLB(Configurable Logic Block)、输出输入模块IOB(Input Output Block)和内部连线(Interconnect)三个部分。FPGA的基本特点主要有1)采用FPGA设计ASIC电路,用户不需要投片生产,就能得到合用的芯片。2)FPGA可做其它全定制或半定制ASIC电路的中试样片。3)FPGA内部有

6、丰富的触发器和IO引脚。4)FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。5)FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。目前FPGA的品种很多,有XILINX的XC系列、TI公司的TPC系列、ALTERA公司的FIEX系列等。FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。用户可以根据不同的配置模式,采用不同的编程方式。加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。掉电后,F

7、PGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。当需要修改FPGA功能时,只需换一片EPROM即可。这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。因此,FPGA的使用非常灵活。FPGA有多种配置模式:并行主模式为一片FPGA加一片EPROM的方式;主从模式可以支持一片PROM编程多片FPGA;串行模式可以采用串行PROM编程FPGA;外设模式可以将FPGA作为微处理器的外设,由微处理器对其编程。1.4 VHDL语言简介VHDL 的英文全名是VHSIC Hardware Descr

8、iption Language(VHSIC硬件描述语言)。VHSIC是Very High Speed Integrated Circuit的缩写,是20世纪80年代在美国国防部的资助下始创的,并最终导致了VHDL语言的出现。1987 年底,VHDL被 IEEE 和美国国防部确认为标准硬件描述语言。VHDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称不可视部

9、分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点1.5 Quartus II简介Quartus II可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。具有运行速度快,界面统一,功能集中,易学易用等特点。Quartus II支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。对第三方EDA工具的良好支持

10、也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。此外,Quartus II 通过和DSP Builder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。QuartusII图标Maxplus II 作为Altera的上一代PLD设计软件,由于其出色的易用性而得到了广泛的应用。目前Altera已经停止了对Maxplus II 的更新支持,Quartus II 与之相比不仅仅是支持器件类型的丰富和图形界面的改变。Altera在Quar

11、tus II 中包含了许多诸如SignalTap II、Chip Editor和RTL Viewer的设计辅助工具,集成了SOPC和HardCopy设计流程,并且继承了Maxplus II 友好的图形界面及简便的使用方法。 Altera Quartus II 作为一种可编程逻辑的设计环境, 由于其强大的设计能力和直观易用的接口,越来越受到数字系统设计者的欢迎。第二章 总体设计2.1方案设计与比较2.1.1设计内容用FPGA器件驱动蜂鸣器演奏“送别”片段,一首乐曲包含三个要素:乐曲声音的频率,发音时间的长短,停顿的时间。按照图1乐谱,设计相应电路控制speaker信号的方波频率,某一频率持续时间

12、长短,各频率间间隔大小,就可以推动蜂鸣器演奏乐曲。2.1.2 设计方案比较方案一: 由单片机AT89S52来设计实现乐曲演奏电路。外围电源使用+5V电源供电,时钟由12MHz的晶振产生,通过按键的状态来检测乐曲演奏的状态,中央处理器由AT89S52单片机来完成,乐曲演奏状态由七段数码管来模拟。这种方案结构简单,比较易掌握,各部分电路实现起来野非常容易,在传统的乐曲演奏设计中应用也较为广泛。其原理框图如图2。图1 单片机乐曲演奏原理图方案二:基于现场可编程逻辑门阵列FPGA,通过EDA技术,采用VerilogHDL硬件描述语言实现乐曲演奏电路设计。程序设计思想为:1、用频电路产生不同频率方波;2

13、、利用计数器实现speaker信号频率选择,某一频率持续时间长短,各频率间间隔大小。其框图如图2。 图2 乐曲演奏电路原理框图2.1.3方案论证与选择 通过方案一、二的比较,可以看出方案一的设计使用的分立元件电路较多,因此会使电路调试困难度增加,且电路的不稳定性也会随之增加;而采用FPGA芯片实现该电路,在整体性上较方案一好,在信号的处理和整个系统的控制中,方案二也能大大缩减电路的体积,提高电路的稳定性并且系统的调试周期也能大大缩短。由于它们完全不同的工作原理,一般来讲,同样的逻辑,基于FPGA设计比基于单片机设计快很多。单片机是基于指令工作的,单片机的时钟驱动着程序一步步的执行。而基于FPG

14、A则是把相应的逻辑“暂时”固化为硬件电路,而后的不响应速度就是电信号从一个管脚到另一个管脚的传播速度,同时电信号也要在芯片内进行一些栅电容的充放电动作,但这些动作都是非常非常快的。从目前的EDA技术来看,其特点是应用广泛、使用普及、软件功能强大。在ASIC和PLD器件方面,向高密度、超高速、低电压、低功耗方向发展。当今社会人们对低故障、高实时、高可靠、高稳定性能更加青睐,综合本设计的要求以及以上比较的情况,我们选择基于FPGA的乐曲演奏电路的设计方案。2.2 硬件设计2.2.1稳压电源电路该稳压电路的作用是当电网电压波动、负载和温度变化时,维持输出直流电压稳定。该电路可为晶振电路以及扬声器提供

15、+3.3V的稳定电压,驱动器件工作。其原理图如图3所示。图3 系统的稳压电源电路2.2.2有源晶振电路采用有源晶振作为时钟信号源,它是一个完整的振荡器,其内部除了石英晶体外还有阻容软件和晶体管,有源晶振信号质量好,比较稳定,而且连接方式比较简单。主要是作为电源滤波,通常使用的为一个电容和电感组成的PI型滤波网络,输出端使用一个小阻值电阻过滤信号。串电阻可减小反射波,避免反射波叠加引起过冲,减少谐波以及阻抗匹配,减小回波干扰及导致的信号过冲。其原理图如图4所示。图4 有源晶振电路2.2.3蜂鸣器电路 根据蜂鸣器输入信号频率的不同决定了其发声不同的原理,来设计一个由数控分频器控制BUZZER发声的

16、简单实验。数控分频器的预置值由乐曲的音调的值来决定,从而间接地控制BUZZER得发声频率。其原理图如图5所示。图5 蜂鸣器电路2.3.4七段数码显示电路七段数码管和普通发光二极管的发光原理一样,为了进行直观显示而将普通发光二极管封装在一起,能够进行16进制数字显示;有共阳极和共阴极之分,该设计采用共阴极的连接方式,在控制端输入高点平的时候发光,在输入低电平的时候就不发光。其原理电路图如图6所示。 图6 七段数码管显示电路2.3 软件设计通过至顶向下(TOP-DOWN)的设计方法,我们对电路的设计要求作了分析,从电路要实现的功能着手,逐层分析电路设计的步骤,再具体到各个模块的设计实现以及各模块实

17、现方案的选择。2.3.1音乐节拍和音调发生器模块图7 音乐节拍和音调发生器模块(1) 音乐节拍和音调发生器模块RTL电路图图8 音乐节拍和音调发生器模块RTL电路图 (2) 地址发生器模块地址发生器模块设置了一个8位二进制计数器(计数最大值为256),作为音符数据ROM的地址发生器。每来一个时钟脉冲信号(Clk),8位二进制计数器就计数一次,ROM文件中的地址也就随着递增,音符数据ROM中的音符也就一个接一个连续的取出来了。在地址发生器的VHDL设计中,这个计数器的计数频率选为4Hz,即每一计数值的停留时间为0.25秒,恰为当全音符设为1秒,四四拍的4分音符持续时间。例如,地址发生器在以下的V

18、HDL逻辑描述中,“梁祝”乐曲的第一个音符为“3”,此音在逻辑中停留了4个时钟节拍,即1秒时间。那么相应随着程序4中的计数器按4Hz的时钟频率作加法计数时,即随地址递增时,将从音符数据ROM中将连续取出4个音符“3”通过toneindex3.0端口输向分频预置数模块。这样梁祝乐曲中的音符就一个接一个的通过toneindex3.0端口输向分频预置数模块。2.3.2音乐谱对应分频预置数查表电路模块(1) 音乐谱分频预置数模块图9音乐谱分频预置数模块 (2) 音乐谱对应分频预制数查表电路VHDL程序设计音乐谱分频预置数模块是乐曲简谱码对应的分频预置数查表电路。它提供了每个音符所对应的分频预置数,即给

19、数控分频模块提供计数初值,这里以“梁祝”乐曲为例,列出了在这个乐曲中所用到的13个音符的分频预置数。在这个模块的VHDL逻辑描述中设置了四四拍乐曲中全部音符所对应的分频预置数,共13个,每一音符的停留时间由音乐节拍和地址发生器模块的时钟(Clk)的输入频率决定,在此为4Hz。这13个值的输出由程序3的4位输入值index3.0确定。输向程序4中index3.0的值又由地址发生器模块的输出toneindex3.0的输出值和持续时间决定。模块的功能是输出各个音符所对应的分频预置数,即当index是“0000”,tone输出为2047,即休止符的分频预置数;当index是“0101”时, tone输

20、出为1197即低音5的分频预置数;当index是“1111”时, tone输出为1728即高音1的分频预置数等等其它状态时,tone分别输出相应音符的分频预置数。2.3.3音乐谱对应分频预置数查表电路模块 (1) 音乐符数控11分频电路模块图10音乐符数控11分频电路模块(2) 音乐符数控11分频电路模块RTL电路图图11音乐符数控11分频电路模块RTL电路图 (3) 音乐符数控11分频模块电路VHDL程序设计音符的频率由数控分频模块获得,这是一个数控分频电路。它是由一个初值可变的加法计数器构成。该计数器的模为2047,当计数器记满时,计数器产生一个溢出信号FULL,此溢出信号就是用作发音的频

21、率信号。在计数器的输入端给定不同的初值,而此预置数就是表1中的计数初值,就可得到不同音符的发音频率信号。它计满时所需要的计数初值可由下式来表示。计数初值(Tone)=2047-分频系数而分频系数又可有下式来求:分频系数=基准频率/音符的发生频率低音时Tone值小,分频系数大,溢出信号周期长,扬声器发出的声音低,Tone随音乐的乐谱变化大,自动控制分频比,实现了数控分频,发生信号的频率与音调Tone成正比。这就是利用数控分频器自动演奏音乐的原理。时钟(Clk)端输入的是在十六进制模块里对12MHz的信号进行16分频得到的750KHz,750KHz的信号根据分频预置数模块中所提供的计数初值,分别得

22、出相应音符频率的两倍值。此时从数控分频器中出来的输出信号是脉宽极窄的脉冲式信号,为了有利于驱动扬声器,需另加一个D触发器以均衡其占空比,这时的频率就变为原来的1/2,刚好就是相应音符的频率。数控分频模块中对Clk输入信号的分频比由11位预置数tone10.0决定。Fout的输出频率将决定每一个音符的音调,这样,分频计数器的预置值tone10.0与Fout的输出频率就有了对应关系。例如在分频预置数模块中若取tone10.0=1036,将发出音符为“3”音的信号频率。2.3.4乐曲演奏音符数据文件WIDTH = 4 ;-乐曲演奏数据DEPTH = 256 ;Address_radix = dec;

23、Data_radix = dec;CONTENT BEGIN3 3 3 3 5 5 5 6 8 8 8 9 6 8 5 5 12 12 12 15 13 12 10 12 9 9 9 9 9 9 9 0 9 9 9 10 7 7 6 6 5 5 5 6 8 8 9 9 3 3 8 8 6 5 6 8 5 5 5 5 5 5 5 5 10 10 10 12 7 7 9 9 6 8 5 5 5 5 5 5 3 5 03 3 5 6 7 9 6 6 6 6 6 6 5 6 8 8 8 9 12 12 12 10 9 9 10 9 8 8 6 5 3 3 3 3 8 8 8 8 6 8 6 5 3 5

24、 6 8 5 5 5 5 5 5 5 5 0 0 0 0 0 0 0 0 0 5 1 3 5 1 7 3 5 0 5 0 6 7 1 6 6 5 5 0 0 3 2 1 1 1 3 2 1 1 1 2 3 2 1 1 6 2 3 2 1 6 2 3 2 0 0 0 5 2 6 7 1 2 1 0 0 3 5 3 2 1 5 7 0 0 6 7 1 1 1 2 3 2 0 0 0 5 1 3 5 1 7 3 5 5 6 7 1 6 6 5 5 0 3 2 1 1 1 3 2 1 1 1 2 3 0 2 6 7 1 2 其中WIDTH=4,表示数据输出为宽为4;DEPTH=256,表示共有256个

25、4位数据点;ADDRESS-RADIX=DEC,表示地址信号用十进制;DATA-RADIX=DEC,表示输出数据是十进制数。形成ROM中的配置数据(初始化数据)文件的方法如下:在QUARTUS|中编辑.mif文件。首先在File菜单下的New菜单上选择Text Editor File命令,进入文本编辑器,然后输入以上格式的数据文件。文件中的关键词WIDTH设置ROM的数据宽度;DEPTH设置ROM数据的深度,即4位数据的数量,文件中设置的256等效于8位地址线宽度;ADDRESS-RADIX=DEC和DATA-RADIX=DEC表示设置地址和数据的表达式格式都是十进制;地址/数据表以CONTE

26、NT BEGIN开始,以END结束;其中的地址/数据表达方式是冒号左边写ROM地址值,冒号右边写对应此地址放置的十进制数据,如46:9,表示46为地址,9为该地址中的数据。这样每读到一个地址,即可输出其相应的数据。文件编辑好后,保存时取文件名为“singer.mif”,存盘的路径为“g:music singer”。2.2.5定制音符数据的ROM文件1.定制的基本步骤如下:(1)进入QUARTUS|,选菜单 TOOL-megawizard plug-in manager,选择“creat a new”,然后按“next”键,选择LPM-ROM;最后在browse下的栏中键入路径与输出文件名,注意

27、后缀vhd小写。(2)单击“next”键,选择ROM数据位宽度为4,地址线宽为256,即设置此ROM能存储4位二进制数据共256个。(3)通过“browse” 钮,找到ROM中的加载文件路径和文件名:注意ROM元件的inclock是地址锁存时钟。(4)打开已定制的ROM文件,将它设置为工程,并确定目标器件,进行测试仿真波形,按照定制步骤对音符数据文件进行ROM定制。第三章 系统软硬件调试3.1 NoteTabs音乐节拍和音调发生器模块的仿真将所编写的音乐节拍和音调模块NoteTabs的程序设为工程,选用Altera公司的Cyclone系列中的EPIC12Q240C8为目标芯片进行仿真。仿真结果

28、如下图:图12音乐节拍和音调模块NoteTabs波形仿真3.2 ToneTaba分频预置数查表模块的仿真3.2.1 波形仿真将所编写的分频预置数查表模块ToneTaba的程序设为工程,选用Altera公司的Cyclone系列中的EPIC12Q240C8为目标芯片进行仿真。仿真结果如下图:图13分频预置数查表模块ToneTaba波形仿真3.2.2 模块功能分析与调试ToneTaba分频预置数模块的功能是输出各个音符所对应的分频预置数,由上面的仿真波形图可看到若当index是“0000”,tone输出为2047,即休止符的分频预置数;当index是“0101”时,tone输出为1197即低音5的分

29、频预置数;当index是“1111”时, tone输出为1728即高音1的分频预置数等等其它状态时,tone分别输出相应音符的分频预置数,仿真波形图证明了程序实现了模块的功能。3.3 Speakera音乐符数控分频模块的仿真3.3.1波形仿真将所编写的音乐符数控分频模块Speakera的程序设为工程,选用Altera公司的Cyclone系列中的EPIC12Q240C8为目标芯片进行仿真。仿真结果如下图:图14 Speakera音乐符数控分频模块波形仿真3.3.2 模块功能分析与调试Speakera 音乐符数控分频此模块的功能是根据初始值Tone的值,对输入时钟信号Clk的频率进行分频,得到想要

30、的音符的发声频率其时钟(Clk)端输入的是在十六进制模块里对12MHz的信号进行16分频得到的750KHz,750KHz的信号根据分频预置数模块中所提供的计数初值,分别得出相应音符频率的两倍值。此时从数控分频器中出来的输出信号是脉宽极窄的脉冲式信号,为了有利于驱动扬声器,需另加一个D触发器以均衡其占空比,这时的频率就变为原来的1/2,刚好就是相应音符的频率。在clk端输入一具有较高频率的信号(这里是12MHz)的信号,通过分频后由cout输出。这里是对12MHz的信号进行16分频得到750KHz的信号。750KHz的时钟脉冲信号是给数控分频模块提供时钟信号。数控分频模块中对Clk输入信号的分频

31、比由11位预置数tone10.0决定。spkout的输出频率将决定每一个音符的音调,这样,分频计数器的预置tone10.0与Fout的输出频率就有了对应关系。若在分频预置数模块中若取 tone10.0=1036,将发出音符为“3”音的信号频率。在这个仿真波形图中,Tone的值可设为6c0(即高音1的分频预置数1728),Clk的频率为750KHz,spkout输出的脉冲信号的周期为849.9291us(即1176.568Hz),接近高音1的发声频率。由表中可知高音1的分频系数为319,即对输入时钟Clk进行319次分频就可得高音1的发声频率,因此这个程序实现了模块的功能。3.4 扩大此音乐硬件

32、演奏电路的通用性前面所设计的电路只能演奏“梁祝”曲子,但是在实际应用中,若能将电路实用于各种曲子的演奏,它的实用性和应用范围就会扩大许多。这里主要通过修改分频预置数模块的程序,使其实用于各种曲子的演奏。另外要使更改乐曲方便,主要通过重新设置音符数据文件,再对其进行LPM-ROM定制。在前面的VHDL设计中,我们只能通过程序输出“梁祝”曲子中的13个音符的分频预置数(即计数初值),但是在其它的乐曲中可能会用到另外的那些音符,因此对程序进行修改完善它的功能,使其能输出另外那些音符的分频预置数。把修改的程序代替原来此模块的程序连入顶层文件后,要使所设计的音乐硬件演奏电路可随意更改曲子,只要修改音符数据文件,

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2