差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
简易电子琴设计 [2018/10/22 13:34] anran [实验原理] |
简易电子琴设计 [2019/05/19 12:04] (当前版本) gongyu |
||
---|---|---|---|
行 1: | 行 1: | ||
- | =====简易电子琴设计===== | + | ###简易电子琴设计 |
----- | ----- | ||
- | ====实验任务==== | + | #### 实验任务 |
* 任务:基于 STEP-MAX10M08核心板 和 STEP BaseBoard V3.0底板 完成简易电子琴设计并观察调试结果 | * 任务:基于 STEP-MAX10M08核心板 和 STEP BaseBoard V3.0底板 完成简易电子琴设计并观察调试结果 | ||
* 要求:按动矩阵键盘,驱动底板无源蜂鸣器发出产生不同音调,弹奏一首《小星星》。 | * 要求:按动矩阵键盘,驱动底板无源蜂鸣器发出产生不同音调,弹奏一首《小星星》。 | ||
行 7: | 行 8: | ||
- | ====实验目的==== | + | #### 实验目的 |
在基础数字电路实验部分我们已经掌握了FPGA设计PWM信号发生器的原理及方法,上节实验中又学习了矩阵键盘的驱动原理及方法,本实验主要学习无源蜂鸣器的驱动原理,同时熟悉PWM发生模块及矩阵键盘驱动模块的实例化应用。 | 在基础数字电路实验部分我们已经掌握了FPGA设计PWM信号发生器的原理及方法,上节实验中又学习了矩阵键盘的驱动原理及方法,本实验主要学习无源蜂鸣器的驱动原理,同时熟悉PWM发生模块及矩阵键盘驱动模块的实例化应用。 | ||
* 熟悉PWM信号发生驱动模块和矩阵键盘驱动模块的应用 | * 熟悉PWM信号发生驱动模块和矩阵键盘驱动模块的应用 | ||
行 13: | 行 14: | ||
* 完成简易电子琴设计实现 | * 完成简易电子琴设计实现 | ||
- | ====设计框图==== | + | #### 设计框图 |
根据前面的实验解析我们可以得知,该设计总体可以拆分成两个功能模块实现, | 根据前面的实验解析我们可以得知,该设计总体可以拆分成两个功能模块实现, | ||
行 22: | 行 23: | ||
* PWM:根据PWM周期信息产生对应的PWM脉冲信号。 | * PWM:根据PWM周期信息产生对应的PWM脉冲信号。 | ||
- | {{:3-Top-Down层次设计.png?500|}}{{:3-模块结构设计.png?500|}} | + | {{:3-Top-Down层次设计.png?500|Top-Down层次设计}}{{:3-模块结构设计.png?500|模块结构设计}} |
- | ====实验原理==== | + | |
- | ===蜂鸣器介绍=== | + | ####实验原理 |
+ | |||
+ | ##### 蜂鸣器介绍 | ||
蜂鸣器的分类: | 蜂鸣器的分类: | ||
行 37: | 行 40: | ||
我们STEP BaseBoard V3.0底板上集成的蜂鸣器为无源电磁式蜂鸣器,接下来和大家一起学习无源蜂鸣器的驱动 | 我们STEP BaseBoard V3.0底板上集成的蜂鸣器为无源电磁式蜂鸣器,接下来和大家一起学习无源蜂鸣器的驱动 | ||
- | ===蜂鸣器驱动电路=== | + | ##### 蜂鸣器驱动电路 |
无源蜂鸣器没有集成振荡器,需要外部提供震荡激励,当震荡频率不同时发出不同的音调,对于数字系统来说,方波信号产生方便可靠,成为外部震荡激励的首选,方波信号输入谐振装置转换为声音信号输出,电磁式蜂鸣器需要的驱动电流较高,一般单片机和FPGA管脚驱动能力有限不能直接驱动,常用三极管增加驱动能力,另外电磁式蜂鸣器内部含有感应线圈,在电路通断瞬间会产生感应电势,为保证电路长期稳定的工作,最好增加续流二极管设计,STEP BaseBoard V3.0底板蜂鸣器驱动电路如下: | 无源蜂鸣器没有集成振荡器,需要外部提供震荡激励,当震荡频率不同时发出不同的音调,对于数字系统来说,方波信号产生方便可靠,成为外部震荡激励的首选,方波信号输入谐振装置转换为声音信号输出,电磁式蜂鸣器需要的驱动电流较高,一般单片机和FPGA管脚驱动能力有限不能直接驱动,常用三极管增加驱动能力,另外电磁式蜂鸣器内部含有感应线圈,在电路通断瞬间会产生感应电势,为保证电路长期稳定的工作,最好增加续流二极管设计,STEP BaseBoard V3.0底板蜂鸣器驱动电路如下: | ||
- | {{:3-蜂鸣器驱动电路.png?600|}} | + | {{:3-蜂鸣器驱动电路.png?600|蜂鸣器驱动电路}} |
注:不需要蜂鸣器工作时,控制器BEEP端口输出低电平,管脚配置下拉(pull dowm)模式 | 注:不需要蜂鸣器工作时,控制器BEEP端口输出低电平,管脚配置下拉(pull dowm)模式 | ||
行 47: | 行 50: | ||
蜂鸣器使用NPN三极管(S8050)驱动,三极管当开关用,当基极电压拉高时,蜂鸣器通电,当基极电压拉低时,蜂鸣器断电,FPGA控制GPIO口给三极管的基极输出不同频率的脉冲信号,蜂鸣器就可以发出不同的音节。 | 蜂鸣器使用NPN三极管(S8050)驱动,三极管当开关用,当基极电压拉高时,蜂鸣器通电,当基极电压拉低时,蜂鸣器断电,FPGA控制GPIO口给三极管的基极输出不同频率的脉冲信号,蜂鸣器就可以发出不同的音节。 | ||
- | ===蜂鸣器驱动设计=== | + | ##### 蜂鸣器驱动设计 |
前面我们了解到电磁式无源蜂鸣器需要外部提供震荡激励才可以发出声音,且震荡频率不同产生的音调也不同,不同音节与蜂鸣器震荡频率的对应关系如下表: | 前面我们了解到电磁式无源蜂鸣器需要外部提供震荡激励才可以发出声音,且震荡频率不同产生的音调也不同,不同音节与蜂鸣器震荡频率的对应关系如下表: | ||
行 115: | 行 118: | ||
应该没错了,到这里我们就完成了蜂鸣器音节驱动部分。 | 应该没错了,到这里我们就完成了蜂鸣器音节驱动部分。 | ||
- | ===系统总体实现=== | + | ##### 系统总体实现 |
前次实验中我们学习了矩阵键盘的驱动原理及方法,这里就不再重复,不一样的是之前我们用的矩阵键盘模块的脉冲输出(key_pulse),本实验中简易电子琴在按键按下状态下一直发声,跟按键时间长短有关,这样我们就不能使用key_pulse了,而应该使用key_out信号,另外key_out按键有效输出为低电平,而PWM周期转码模块(tone)是高有效编码,所以在顶层模块(Electric_Piano)中矩阵键盘(Array_KeyBoard)与蜂鸣器音节驱动模块(Beeper)之间的key_out连线需要做按位取反操作。 | 前次实验中我们学习了矩阵键盘的驱动原理及方法,这里就不再重复,不一样的是之前我们用的矩阵键盘模块的脉冲输出(key_pulse),本实验中简易电子琴在按键按下状态下一直发声,跟按键时间长短有关,这样我们就不能使用key_pulse了,而应该使用key_out信号,另外key_out按键有效输出为低电平,而PWM周期转码模块(tone)是高有效编码,所以在顶层模块(Electric_Piano)中矩阵键盘(Array_KeyBoard)与蜂鸣器音节驱动模块(Beeper)之间的key_out连线需要做按位取反操作。 | ||
行 145: | 行 148: | ||
{{:3-rtl设计框图.png?800|rtl设计框图}} | {{:3-rtl设计框图.png?800|rtl设计框图}} | ||
- | ====实验步骤==== | + | |
+ | #### 实验步骤 | ||
- 双击打开Quartus Prime工具软件; | - 双击打开Quartus Prime工具软件; | ||
- 新建工程:File → New Project Wizard(工程命名,工程目录选择,设备型号选择,EDA工具选择); | - 新建工程:File → New Project Wizard(工程命名,工程目录选择,设备型号选择,EDA工具选择); | ||
行 156: | 行 160: | ||
- | ====实验现象==== | + | #### 实验现象 |
+ | |||
+ | 将简易电子琴设计配置文件烧写到FPGA实验平台,按动矩阵按键听蜂鸣器发出的声音,16个按键对应16个音节,按键K1~K7分别对应音节低音1~7,接下来一首好听的《小星星》送给大家,按照下面的曲谱循环弹奏: | ||
+ | **1 1 5 5 6 6 5 , 4 4 3 3 2 2 1 , 5 5 4 4 3 3 2 , 5 5 4 4 3 3 2** | ||
+ | |||
+ | 按照曲谱弹奏琴电子琴没有什么难度,如果我们设计一个状态机,在状态跳转时能够产生上述的音节信息,再配合我们今天讲的蜂鸣器音节驱动设计,就可以实现一个音乐盒了,有兴趣的同学不妨尝试一下。 |