规划PWM信号发生器的原理及办法,上节试验中又学习了矩阵键盘的驱动原理及办法,本试验首要学习无源...。
规划PWM信号发生器的原理及办法,上节试验中又学习了矩阵键盘的驱动原理及办法,本试验首要学习无源蜂鸣器的驱动原理,一同了解PWM发生模块及矩阵键盘驱动模块的实例化运用。
ArrayKeyBoard:经过驱动矩阵键盘作业获取键盘的操作信息数据。 * Beeper:依据键盘按键信息驱动无源蜂鸣器宣布不同的音节。 顶层模块ElectricPiano经过实例化两个子模块并将对应的信号衔接,终究完成简易
能够经过输出不同频率的PWM脉冲信号操控蜂鸣器发生不同的音节输出,所以上面Beeper模块又能够拆分红两个功用模块完成其功用
电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振荡膜片及外壳等组成。接通电源后,振荡器发生的音频信号电流经过电磁线圈,使电磁线圈发生磁场,振荡膜片在电磁线圈和磁铁的相互作用下,周期性地振荡发声。
压电式蜂鸣器首要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共识箱、外壳等组成。多谐振荡器由晶体管或集成电路构成,当接通电源后(1.5~15V直流作业电压),多谐振荡器起振,输出1.5~2.5kHZ的音频信号,阻抗匹配器推进压电蜂鸣片发声。
咱们STEP BaseBoard V3.0底板上集成的蜂鸣器为无源电磁式蜂鸣器,接下来和咱们一同学习无源蜂鸣器的驱动
无源蜂鸣器没有集成振荡器,需求外部供给震动鼓励,当震动频率不一同宣布不同的腔调,关于数字体系来说,方波信号发生便利牢靠,成为外部震动鼓励的首选,方波信号输入谐振设备转换为声响信号输出,电磁式蜂鸣器需求的驱动电流较高,一般单片机和FPGA管脚驱动才能有限不能直接驱动,常用三极管添加驱动才能,别的电磁式蜂鸣器内部含有感应线圈,在电路通断瞬间会发生感应电势,为确保电路长时刻安稳的作业,最好添加续流二极管规划,STEP BaseBoard V3.0底板蜂鸣器驱动电路如下:
注:不需求蜂鸣器作业时,操控器BEEP端口输出低电平,管脚装备下拉(pull dowm)形式
蜂鸣器运用NPN三极管(S8050)驱动,三极管当开关用,当基极电压拉高时,蜂鸣器通电,当基极电压拉低时,蜂鸣器断电,FPGA操控GPIO口给三极管的基极输出不同频率的脉冲信号,蜂鸣器就能够宣布不同的音节。
前面咱们不难发现到电磁式无源蜂鸣器需求外部供给震动鼓励才能够宣布声响,且震动频率不同发生的腔调也不同,不同音节与蜂鸣器震动频率的对应联系如下表:
FPGA要驱动蜂鸣器就需求给蜂鸣器模块输出《腔调频率对照表》中不同频率的脉冲信号就能够了,咱们在根底数字电路试验中学习过PWM发生原理,规划过一个PWM信号发生器模块,模块依据两个输入信号(cycle、duty)操控发生周期可控、占空比可控的脉冲信号(pwm_out),可拿来驱动无源蜂鸣器电路。
驱动蜂鸣器的脉冲信号对占空比没有太高的要求,咱们默许发生50%占空比的脉冲信号,所以duty的输入取cycle的一半;cycle的值关乎蜂鸣器的音节,需求和《腔调频率对照表》中对应,例如假如要蜂鸣器宣布低声1的音节,脉冲信号频率操控为261.6Hz,体系时钟选用12MHz,计数器计数终值cycle就等于12M / 261.6 = 45872,即当咱们给PWM模块中cycle信号的值为45872时,得到低声1的音节输出。这样咱们将每个音节对应的cycle值计算出来,当按动不同按键时给PWM模块不同的cycle值就能够了,咱们咱们能够经过规划一个转码模块(tone)将按键信息转换成PWM需求的cycle信号,矩阵键盘共有16个按键,咱们只能够输出16个音节。
现在咱们在Beeper模块中实例化tone和PWM模块,将tone的输出与PWM的cycle输入连线就完成了按键信息发生对应音节的输出了,想一想逻辑有问题吗?
前次试验中咱们学习了矩阵键盘的驱动原理及办法,这儿就不再重复,不一样的是之前咱们用的矩阵键盘模块的脉冲输出(keypulse),本试验中简易电子琴在按键按下状态下一向发声,跟按键时刻长短有关,这样咱们就不能够运用keypulse了,而应该运用keyout信号,别的keyout按键有用输出为低电平,而PWM周期转码模块(tone)是高有用编码,所以在顶层模块(ElectricPiano)中矩阵键盘(ArrayKeyBoard)与蜂鸣器音节驱动模块(Beeper)之间的key_out连线需求做按位取反操作。