湖北文理学院
Verilog HDL 乐曲演奏电路设计
专业:自动化 学号:2012118064 姓名:一天虹影
设计目的与要求
1.课程设计目的:
1)加深对EDA技术的理解,掌握乐曲演奏电路的工作原理
2)了解怎样控制音调的高低变化和音长,从而完成乐曲的自动循环演奏。 3)培养自主学习、正确分析和解决问题的能力
2.课程设计要求:
1)使用Verilog HDL设计乐曲演奏电路,系统实现是用硬件描述语言Verilog HDL按分频控制的方式进行设计,然后进行编程、时序仿真、电路功能验证,奏出美妙的乐曲。
2) 通过控制输出到扬声器的激励信号频率的高低和持续的时间,从而使扬声器发出连续的乐曲声,且当乐曲演奏完成时,保证能自动从头开始演奏。
3.该方案可以实现的功能:
1)通过蜂鸣器播放音乐;
2)通过三位动态数码管输出相应的高中低音符; 3)通过一个开关实现两首乐曲的切换; 4)在音乐播放的同时,会有led流水灯的闪烁.
应用工具介绍
作为当今最流行的计算机软件系统,EDA技术是以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品的自动设计。EDA可提供文本输入以及图形编辑的方法将设计者的意图用程序或者图形方式表达出来,而我们经常用到的VHDL语言便是用于编写源程序所需的最常见的硬件描述语言(HDL)之一。
2.1 EDA技术介绍
EDA是电子设计自动化(Electronic Design Automation)的缩写,在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来。EDA技术是在电子CAD技术基础上发展起来的计算机软件系统,是指以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品的自动设计[1]。
EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL完成设
2
计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。典型的EDA工具中必须包含两个特殊的软件包,即综合器和适配器。综合器的功能就是将设计者在EDA平台上完成的针对某个系统项目的HDL、原理图或状态图形描述,针对给定的硬件系统组件,进行编译、优化、转换和综合,最终获得我们欲实现功能的描述文件。综合器在工作前,必须给定所要实现的硬件结构参数,它的功能就是将软件描述与给定的硬件结构用一定的方式联系起来。也就是说,综合器是软件描述与硬件实现的一座桥梁。综合过程就是将电路的高级语言描述转换低级的、可与目标器件FPGA/CPLD相映射的网表文件。
在今天,EDA技术已经成为电子设计的普遍工具,无论设计芯片还是设计系统,没有EDA工具的支持,都是难以完成的。EDA工具已经成为设计师必不可少的武器,起着越来越重要的作用。从目前的EDA技术来看,其发展趋势是政府重视、使用普及、应用广泛、工具多样、软件功能强大。EDA技术发展迅猛,完全可以用日新月异来描述。EDA技术的应用广泛,现在已涉及到各行各业。EDA水平不断提高,设计工具趋于完美的地步。
2.2 Verilog HDL语言介绍
Verilog HDL是一种硬件描述语言,用于从算法级、门级到开关级的多种抽象设计层次的数字系统建模。被建模的数字系统对象的复杂性可以介于简单的门和完整的电子数字系统之间。数字系统能够按层次描述,并可在相同描述中显式地进行时序建模[2]。
作为一种通用化的硬件描述语言,Verilog HDL语言具有下述描述能力:设计的行为特性、设计的数据流特性、设计的结构组成以及包含响应监控和设计验证方面的时延和波形产生机制。所有这些都使用同一种建模语言。此外,Verilog HDL语言提供了编程语言接口,通过该接口可以在模拟、验证期间从设计外部访问设计,包括模拟的具体控制和运行[3]。
Verilog HDL语言不仅定义了语法,而且对每个语法结构都定义了清晰的模拟、仿真语义。因此,用这种语言编写的模型能够使用Verilog仿真器进行验证。语言从C编程语言中继承了多种操作符和结构。Verilog HDL提供了扩展的建模能力,其中许多扩展最初很难理解。但是,Verilog HDL语言的核心子集非常易于学习和使用,这对大多数建模应用来说已经足够。当然,完整的硬件描述语句足以对从最复杂的芯片到完整的电子系统进行描述。
Verilog HDL语言已经成为一种标准的硬件描述语言。它具有以下特点: (1)作为一种多用途的硬件描述语言,它具有很好的易学性和易用性。 (2)Verilog HDL语言允许在同一个模块中进行不同抽象层次的描述。
3
(3)大多数逻辑综合工具都支持Verilog HDL,使得它成为设计人员的一个很好的选择。 (4)所有的制造厂商都提供了Verilog HDL的工艺库,用以支持仿真。
(5)Verilog HDL的程序语言接口拥有强大的功能,允许用户用C语言对内部数据结构进行描述[3]。
正是以上优点,使得Verilog HDL语言广泛流行。 下面是verilog的设计流程
Verilog的设计流程图
基本原理
乐曲演奏的原理是这样的:组成乐曲的每个音符的频率值(音调)及其持续的时间(音长)是乐曲能连续演奏所需的两个基本数据,因此只要控制输出到扬声器的激励信号频率的高低和持续的时间,就可以使扬声器发出连续的乐曲声[4]。
1、音调的控制
频率的高低决定了音调的高低。音乐的十二平均率规定:每两个8度音(如简谱中的中音1与高音1)之间的频率相差一倍。在两个8度音之间,又可分为12个半音,每两个半音
4
的频率比为12√2。 另外,音名A(简谱中的低音6)的频率为440Hz,音名B到C之间、E到F之间为半音,其余为全音[4]。由此可以计算出简谱中从低音1至高音1之间每个音名对应的频率,如表3.11所示:
表3.11 简谱中的音名与频率的关系
音名 低音1 低音2 低音3 低音4 低音5 低音6 低音7 频率/Hz 261.6 293.7 329.6 349.2 392 440 493.9 音名 中音1 中音2 中音3 中音4 中音5 中音6 中音7 频率/Hz 523.3 587.3 659.3 698.5 784 880 987.8 音名 高音1 高音2 高音3 高音4 高音5 高音6 高音7 频率/Hz 1046.5 1174.7 1318.5 1396.9 1568 1760 1975.5 所有不同频率的信号都是从同一个基准频率分频得到的。由于音阶频率多为非整数,而分频系数又不能为小数,故必须将计算得到的分频数四舍五入取整。若基准频率过低,则由于分频比太小,四舍五入取整后的误差较大;若基准频率过高,虽然误差变小,但分频数将变大。实际的设计综合考虑这两方面的因素,在尽量减小频率误差的前提下取合适的基准频率[4]。本例中选取6MHz为基准频率。若无6MHz的基准频率,则可以先分频得到6MHz,或换一个新的基准频率。实际上,只要各个音名间的相对频率关系不变,演奏出的乐曲听起来都不会\走调\。
本例需要演奏的是梁祝乐曲,该乐曲各音阶频率及相应的分频比如表2所示。为了减小输出的偶次谐波分量,最后输出到扬声器的波形应为对称方波,因此在到达扬声器之前,有一个二分频的分频器。表2中的分频比就是从6MHz频率二分频得到的3MHz频率基础上计算得出的。由于最大的分频系数为9102,故采用14位二进制计数器分频可满足需要。在表2中,除给出了分频比以外,还给出了对应于各个音阶频率时计数器不同的预置数。对于不同的分频系数,只要加载不同的预置数即可。采用加载预置数实现分频的方法比采用反馈复零法节省资源,实现起来也容易一些,如表3.12所示:
表3.12 各音阶频率对应的分频比及预置数
音名 分频比 预置数 音名 分频比 预置数 5