**这是本文档旧的修订版!**
=====简易电子琴设计=====
实验任务
- 任务:基于 STEP-MAX10M08核心板 和 STEP BaseBoard V3.0底板 完成简易电子琴设计并观察调试结果
- 要求:按动矩阵键盘,驱动底板无源蜂鸣器发出产生不同音调,弹奏一首《小星星》。
- 解析:通过FPGA编程驱动矩阵键盘电路,获取矩阵键盘键入的信息,然后通过编码将键盘输出的信息译码成对应的音节数据,最后通过PWM发生模块驱动底板上的无源蜂鸣器发出声音。
实验目的
在基础数字电路实验部分我们已经掌握了FPGA设计PWM信号发生器的原理及方法,上节实验中又学习了矩阵键盘的驱动原理及方法,本实验主要学习无源蜂鸣器的驱动原理,同时熟悉PWM发生模块及矩阵键盘驱动模块的实例化应用。
- 熟悉PWM信号发生驱动模块和矩阵键盘驱动模块的应用
- 了解无源蜂鸣器的驱动原理及方法
- 完成简易电子琴设计实现
设计框图
根据前面的实验解析我们可以得知,该设计总体可以拆分成两个功能模块实现,
- ArrayKeyBoard:通过驱动矩阵键盘工作获取键盘的操作信息数据。 * Beeper:根据键盘按键信息驱动无源蜂鸣器发出不同的音节。 顶层模块ElectricPiano通过实例化两个子模块并将对应的信号连接,最终实现简易电子琴的总体设计。我们知道无源蜂鸣器是通过交流信号驱动的,FPGA可以通过输出不同频率的PWM脉冲信号控制蜂鸣器产生不同的音节输出,所以上面Beeper模块又可以拆分成两个功能模块实现其功能
- tone:通过编码方式将键盘的操作信息译码成对应的PWM周期信息。
- PWM:根据PWM周期信息产生对应的PWM脉冲信号。
实验原理
蜂鸣器介绍
蜂鸣器驱动电路
蜂鸣器驱动设计
系统总体实现
实验步骤
- 双击打开Quartus Prime工具软件;
- 新建工程:File → New Project Wizard(工程命名,工程目录选择,设备型号选择,EDA工具选择);
- 新建文件:File → New → Verilog HDL File,键入设计代码并保存;
- 设计综合:双击Tasks窗口页面下的Analysis & Synthesis对代码进行综合;
- 管脚约束:Assignments → Assignment Editor,根据项目需求分配管脚;
- 设计编译:双击Tasks窗口页面下的Compile Design对设计进行整体编译并生成配置文件;
- 程序烧录:点击Tools → Programmer打开配置工具,Program进行下载;
- 观察设计运行结果。