空比完成相移、倍频和分频等功能。 DFS 可以按照用户的配置产生任意 M/D 倍频和分频的时钟信号。 DPS 可以对所有的输出时钟信号做相移。在这里我们用到了 DCM 模块,先使用 DCM 模块把 50 mhz 分频为 12mhz 。再经过计算后对 12 mhz 分别进行 16倍分频和 3,000,000 倍分频,得到 750 khz 和 4hz 的时钟频率,以供其他模块使用。在该模块中定义了一个 rese t时钟复位信号,用他来实现暂停的功能。当 rese t 信号为‘0’时,时钟正常输出,所以扬声器中源源不断的输出音乐。当 rese t 信号为‘1’时,所有的时钟信号停止,没有了时钟信号的驱动,乐谱码发生模块就无法把音符数据送出来,因此音乐的输出也就停止了,扬声器中暂时没有音乐输出。对该模块进行仿真,定义输入时钟为的‘1’和‘0’周期均为 10 ns, rese t 信号的‘0’周期为 10000 ms ,‘1’周期为 10 us,得到的仿真波形如图 4-1 和图 4-2 所示。从仿真波形可以看出,的确是得到了 750 khz 和4 hz的时钟频率。图 4-1 时钟分频模块仿真输出的 750 khz 时钟频率图 4-2 时钟分频模块仿真输出的 4hz 时钟频率 4.2 乐谱码发生模块该模块从乐谱码发生模块得到当前音符所对应的乐谱码,然后对乐谱码根据表 2-3 进行查表,找到相应的分频预置数,并送到下一个模块,即数控分频模块。该模块有一个 clk 时钟输入,输入从时钟分频模块分频得到的 4 hz时钟。在该模块中,定义了一个 counter 信号量作为乐谱码计数器。 C ounter 的数值指向对应的乐曲中的第 counter 个音符。利用 4 hz时钟频率的上升沿触发 counter , 每一个时钟上升沿来临的时候, counter 值加 1,即指向了乐谱中的下一个音符。