注:工程代码见Github:多功能电子琴功能源代码
项目描述
1.1 项目简介
本项目基于Digilent公司的Basys2开发板,利用verilog语言实现一个FPGA电子琴。该电子琴能够通过PS2接口外接键盘输入高、中、低3个音阶21个音符,在弹奏音乐时,在7端数码管上会输出相应音符符号,该电子琴还能自动播放存放在内部的音乐,同时还能通过VGA接口在LCD显示音阶和音符名称,此外,此电子琴还具有录音回放功能。
1.2 项目背景
本项目是华中科技大学2013年电子信息工程系《硬件课程设计》项目之一,基于Digilent公司的Basys2开发板,利用Basys2板的板载扩展接口,自行设计硬件模块连接图,通过verilog语言用FPGA来实现各硬件模块功能以及各模块的逻辑连接。
FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
目前以硬件描述语言(Verilog 或 VHDL)所完成的电路设计,可以经过简单的综合和布局,快速地烧录至FPGA 上进行测试,是现代 IC 设计验证的技术主流。这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器(Flip-flop)或者其他更加完整的记忆块。
目前,电子产品在我们的生活中扮演着越来越重要的作用,电子琴作为一个简单的电子产品,利用FPGA来实现一个简单的多功能电子琴,一方面可以让我们在硬件设计方面能力得到提高,也可以让我们看到硬件设计在我们生活中作用。通过这个多功能电子琴的设计,也让我对音乐有更多的了解。
1.3 开发环境
1.3.1 Basys2开发板
该开发板是围绕着一个Xilinx Spartan-3E FPGA芯片和一个Atmel AT90USB USB控制器搭建的,它提供了完整、随时可以使用的硬件平台,并且它适合于从基本逻辑器件到复杂控制器件的各种主机电路。Basys2板上集成了大量的I/O设备和FPGA所需的支持电路,让您能够构建无数的设计而不需要其他器件。
我们项目中基本用到Basys2基本所有的板载I/O资源,拨码开关、按钮、led、7端数码管基本板载I/O设备,利用PS2接口外接键盘,VGA接口外接液晶显示器,Pmod外接双通道功放音响。
1.3.2 ISE Design Suite14.2集成开放环境
ISE是使用XILINX的FPGA的必备的设计工具,它可以完成FPGA开发的全部流程,包括设计输入、仿真、综合、布局布线、生成BIT文件、配置以及在线调试等,功能非常强大。
由于我们没有烧写IP核,只用到ISE Design Suite14.2的基本功能。基本开发流程就是,设计总体模块连接图,定义好模块完成的功能和输入输出,引脚分配,在ISE中编辑verilog源文件,然后综合,布局布线,生成BIT文件,必要时进行仿真验证。
1.3.3 Adept烧写工具
Adept是Digilent公司为Basys2板子开发的开发板下载程序,通过USB下载线将ISE生成的BIT问价烧写到Basys2板上。
完成功能
1. 高、中、低3个音阶21个音符通过PS2键盘输入弹奏音乐
2. 自动播放预存歌曲,预存曲目4首
3. 弹奏时七段数码管显示相应音阶和音符
4. 弹奏时VGA连接LCD显示相应音阶和音符,不弹奏时显示一幅钢琴吐
5. 录音和回放功能,提供时长8秒的录音时间
6. 双声道独立输出,可以边弹奏,边伴奏
7. 自行设计了音频输出电路,在面包板上自行通过元器件设计了一个简单的音响功放
软硬件模块详解
我在项目小组中,主要负责PS2键盘输入模块和自动回放功能的实现,同时负责VGA显示的测试工作,协助整体系统负责人赵子平完成一些整体测试和细节的测试工作。
3.1 PS2模块详解
3.1.1 PS2协议
Ø 物理接口