.顶层模块的设计Р顶层模块由乐曲自动演奏(automusic),音调发生器(tone)和数控分频器(speaker)三个模块组成。Р其中乐曲演奏部分又包括了键盘编码。Р设置一个自动演奏/键盘输入切换auto,即当auto=“0”时,选择自动演奏音乐存储器里面的乐曲,auto=“1”时,选择键盘输入的信号。Р顶层设计原理图Р2.自动演奏模块(automusic)的设计Р音乐存储模块的作用是产生8位发声控制输入index。?当 auto为“0”时,由存储在此模块中的8位二进制数作为发声控制输入,可自动演奏乐曲。?此模块的VHDL程序中包括两个进程,首先是对时基脉冲进行分频得到4Hz的脉冲,作为第二个进程的时钟信号,它用来控制每个音阶之间的停顿时间, 1/4=0.25s;第二个进程是音乐的存储,可根据需要编写不同的乐曲。Р3.音调发生器(tone)模块的设计Р音调发生器的作用是产生获得音阶的分频预置值。?当8位发声控制输入index中的某一位为高电平时,则对应某一音阶的数值将在端口tone输出,该数值即为该音阶的分频预置值,分频预置值控制数控分频器来对4MHz的脉冲进行分频,由此可得到每个音阶对应的频率。?例如输入index=“00000010”,即对应的按键是2,产生的分频系数便是6809;code输出对应该音阶简谱的显示数码;high输出指示音阶高8度,低电平有效。Р4.数控分频模块(speaker)的设计Р数控分频模块对时基脉冲进行分频,得到与1、2、3、4、5、6、7七个音符对应频率。?该模块的VHDL程序中包含了三个进程。?首先对FPGA的32MHz的时基脉冲进行分频得到8MHz的脉冲,?然后按照tone1输入的分频系数对8MHz的脉冲再次分频,得到所需要的音符频率。?第三个进程的作用是在音调输出时再进行二分频,将脉冲展宽,使扬声器有足够发声功率。Р电子琴程序设计与仿真