乐曲硬件演奏电路设计(7)
发布时间:2021-06-11
发布时间:2021-06-11
乐曲演奏广泛用于自动答录装置、手机铃声、集团电话、及智能仪器仪表设备。实现方法有许多种,随着FPGA集成度的提高,价格下降,EDA设计工具更新换代,功能日益普及与流行,使这种方案的应用越来越多。如今的数字逻辑设计者面临日益缩短的上市时间的压力,不得不进行上万门的设计,同时设计者不允许以牺牲硅的效率达到保持结构的独特性。使用现今的EDA软件工具来应付这些问题,并不是一件简单的事情。FPGA预装了很多已构造好的参数
中Index[3..0]的值ToneIndex[3..0]的输出值与持续的时间由模块NOTETABS决定。在NOTETABS中设置了一个8位二进制计数器,作为音符数据ROM的地址发生器。得到乐曲演奏电路的原理框图如图1所示:
图1 电路原理图
3音乐硬件演奏电路的设计实现
音乐硬件演奏电路主要是用VHDL语言来设计,并利用QuartusII软件工具来编译、测试和仿真。根据顶层原理图,共分为地址发生器模块、分频预置数模块、数控分频模块这三个模块。而music模块是存放乐曲中的音符数据,在我们的顶层原理图中并没有显示出来,地址发生器模块作为music模块中所定制的音符数据ROM的地址发生器,分频预置数模块提供分频预置数即给数控分频模块提供计数初值。数控分频模块根据分频预置数输出各个音符所对应的频率。
3.1 地址发生器模块
地址发生器模块设置了一个8位二进制计数器(计数最大值为138),作为音符数据ROM的地址发生器。每来一个时钟脉冲信号(Clk),8位二进制计数器就计数一次,ROM文件中的地址也就随着递增,音符数据ROM中的音符也就一个接一个连续的取出来了。
3.1.1 地址发生器的VHDL设计
这个计数器的计数频率选为4Hz,即每一计数值的停留时间为0.25秒,恰为当全音符设为1秒,四四拍的4分音符持续时间。例如,地址发生器在以下的