(1)设计定义:在板卡上通过FPGA产生PWM方波信号驱动无源蜂鸣器,实现最简单音符的发声,S1控制DO、RE、MI、FA、SOL、LA、SI的切换,S2控制音量的大小(分为4级)。
(2)计算DO、RE、MI、FA、SOL、LA、SI所需计数器的最大值,计算音量控制要素:占空比。
(3)第一部分:按键消抖模块,实现10ms的消抖,每完成一次按下操作,就对外输出一个脉冲信号。
(4)第二部分:音调的切换,首先定义音调的计数最大值(频率),然后使用一个变量记录按下S1的次数,并根据这个次数选择音调,最后输出音调的频率信号(如果不需要调节音量
的话,其实到这儿就结束了,把tone_out赋值给buzz)。
(5)第三部分:音量控制,首先是定义了音量的占空比和PWM周期参数,然后通过一个中间变量,记录S2按下的次数,来调节音量,最后输出音量调节后的buzz信号。