基于FPGA的PS2键盘鼠标控制电子琴.docx

上传人:b****6 文档编号:8418774 上传时间:2023-01-31 格式:DOCX 页数:22 大小:204.84KB
下载 相关 举报
基于FPGA的PS2键盘鼠标控制电子琴.docx_第1页
第1页 / 共22页
基于FPGA的PS2键盘鼠标控制电子琴.docx_第2页
第2页 / 共22页
基于FPGA的PS2键盘鼠标控制电子琴.docx_第3页
第3页 / 共22页
基于FPGA的PS2键盘鼠标控制电子琴.docx_第4页
第4页 / 共22页
基于FPGA的PS2键盘鼠标控制电子琴.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

基于FPGA的PS2键盘鼠标控制电子琴.docx

《基于FPGA的PS2键盘鼠标控制电子琴.docx》由会员分享,可在线阅读,更多相关《基于FPGA的PS2键盘鼠标控制电子琴.docx(22页珍藏版)》请在冰豆网上搜索。

基于FPGA的PS2键盘鼠标控制电子琴.docx

基于FPGA的PS2键盘鼠标控制电子琴

基于FPGA的PS2键盘鼠标控制电子琴

毕业论文

姓名:

江太平

班级:

08通信电子

设计题目:

基于FPGA的PS/2键盘鼠标操纵电子琴

指导教师:

吴康

 

二〇一一年五月

 

名目

第一章FPGA简介

1.1FPGA背景

1.2FPGA芯片结构

1.3FPGA的差不多特点

第二章FPGA工作原理

2.1查找表〔Look-Up-Table)的原理与结构

2.2FPGA工作原理

第三章PS2键盘通信

3.1PS2背景

3.2PS2键盘通信

3.3VGA原理

第四章PS2键盘操纵模型电子琴顶层电路的设计

4.1PS2键盘操纵电子琴程序

结论、参考文献

 

第一章FPGA简介

1.1FPGA背景

FPGA要紧生产厂商

  1、Altera

  2、Xilinx

  3、Actel

  4、Lattice

  其中Altera作为世界老牌可编程逻辑器件的厂家,是当前世界范畴内市场占有率最大的厂家,它和Xilinx要紧生产一样用途FPGA,其要紧产品采纳RAM工艺。

Actel要紧提供非易失性FPGA,产品要紧基于反熔丝工艺和FLASH工艺。

目前以硬件描述语言〔Verilog或VHDL〕所完成的电路设计,能够通过简单的综合与布局,快速的烧录至FPGA上进行测试,是现代IC设计验证的技术主流。

这些可编辑元件能够被用来实现一些差不多的逻辑门电路〔比如AND、OR、XOR、NOT〕或者更复杂一些的组合功能比如解码器或数学方程式。

在大多数的FPGA里面,这些可编辑的元件里也包含经历元件例如触发器〔Flip-flop〕或者其他更加完整的经历块。

  系统设计师能够依照需要通过可编辑的连接把FPGA内部的逻辑块连接起来,就看起来一个电路试验板被放在了一个芯片里。

一个出厂后的成品FPGA的逻辑块和连接能够按照设计者而改变,因此FPGA能够完成所需要的逻辑功能。

FPGA一样来说比ASIC〔专用集成芯片〕的速度要慢,无法完成复杂的设计,而且消耗更多的电能。

然而他们也有专门多的优点比如能够快速成品,能够被修改来改正程序中的错误和更廉价的造价。

厂商也可能会提供廉价的然而编辑能力差的FPGA。

因为这些芯片有比较差的可编辑能力,因此这些设计的开发是在一般的FPGA上完成的,然后将设计转移到一个类似于ASIC的芯片上。

另外一种方法是用CPLD〔复杂可编程逻辑器件备〕。

  FPGA采纳了逻辑单元阵列LCA〔LogicCellArray〕如此一个概念,内部包括可配置逻辑模块CLB〔ConfigurableLogicBlock〕、输出输入模块IOB〔InputOutputBlock〕和内部连线〔Interconnect〕三个部分。

1.2FPGA芯片结构

  目前主流的FPGA仍是基于查找表技术的,差不多远远超出了先前版本的差不多性能,同时整合了常用功能〔如RAM、时钟治理和DSP〕的硬核〔ASIC型〕模块。

如图1-1所示〔注:

图1-1只是一个示意图,实际上每一个系列的FPGA都有其相应的内部结构〕,FPGA芯片主要由6部分完成,分别为:

可编程输入输出单元、差不多可编程逻辑单元、完整的时钟治理、嵌入块式RAM、丰富的布线资源、内嵌的底层功能单元和内嵌专用硬件模块。

  图1-1FPGA芯片的内部结构

  

  

FPGA芯片的内部结构

每个模块的功能如下:

  1.可编程输入输出单元〔IOB〕

  可编程输入/输出单元简称I/O单元,是芯片与外界电路的接口部分,完成不同电气特性下对输入/输出信号的驱动与匹配要求,其示意结构如图1-2所示。

FPGA内的I/O按组分类,每组都能够独立地支持不同的I/O标准。

通过软件的灵活配置,可适配不同的电气标准与I/O物理特性,能够调整驱动电流的大小,能够改变上、下拉电阻。

目前,I/O口的频率也越来越高,一些高端的FPGA通过DDR寄存器技术能够支持高达2Gbps的数据速率。

  图1-2典型的IOB内部结构示意图

  

  

典型的IOB内部结构示意图

外部输入信号能够通过IOB模块的储备单元输入到FPGA的内部,也能够直截了当输入FPGA内部。

当外部输入信号通过IOB模块的储备单元输入到FPGA内部时,其保持时刻〔HoldTime〕的要求能够降低,通常默认为0。

  为了便于治理和适应多种电器标准,FPGA的IOB被划分为假设干个组〔bank〕,每个bank的接口标准由其接口电压VCCO决定,一个bank只能有一种VCCO,但不同bank的VCCO能够不同。

只有相同电气标准的端口才能连接在一起,VCCO电压相同是接口标准的差不多条件。

  2.可配置逻辑块〔CLB〕

  CLB是FPGA内的差不多逻辑单元。

CLB的实际数量和特性会依器件的不同而不同,然而每个CLB都包含一个可配置开关矩阵,此矩阵由4或6个输入、一些选型电路〔多路复用器等〕和触发器组成。

开关矩阵是高度灵活的,能够对其进行配置以便处理组合逻辑、移位寄存器或RAM。

在Xilinx公司的FPGA器件中,CLB由多个〔一样为4个或2个〕相同的Slice和附加逻辑构成,如图1-3所示。

每个CLB模块不仅能够用于实现组合逻辑、时序逻辑,还能够配置为分布式RAM和分布式ROM。

  图1-3典型的CLB结构示意图

  

  

典型的CLB结构示意图

Slice是Xilinx公司定义的差不多逻辑单位,其内部结构如图1-4所示,一个Slice由两个4输入的函数、进位逻辑、算术逻辑、储备逻辑和函数复用器组成。

算术逻辑包括一个异或门〔XORG〕和一个专用与门〔MULTAND〕,一个异或门能够使一个Slice实现2bit全加操作,专用与门用于提高乘法器的效率;进位逻辑由专用进位信号和函数复用器〔MUXC〕组成,用于实现快速的算术加减法操作;4输入函数发生器用于实现4输入LUT、分布式RAM或16比特移位寄存器〔Virtex-5系列芯片的Slice中的两个输入函数为6输入,能够实现6输入LUT或64比特移位寄存器〕;进位逻辑包括两条快速进位链,用于提高CLB模块的处理速度。

  图1-4典型的4输入Slice结构示意图

  

  

典型的4输入Slice结构示意图

3.数字时钟治理模块〔DCM〕

  业内大多数FPGA均提供数字时钟治理〔Xilinx的全部FPGA均具有这种特性〕。

Xilinx推出最先进的FPGA提供数字时钟治理和相位环路锁定。

相位环路锁定能够提供精确的时钟综合,且能够降低抖动,并实现过滤功能。

  4.嵌入式块RAM〔BRAM〕

  大多数FPGA都具有内嵌的块RAM,这大大拓展了FPGA的应用范畴和灵活性。

块RAM可被配置为单端口RAM、双端口RAM、内容地址储备器〔CAM〕以及FIFO等常用储备结构。

RAM、FIFO是比较普及的概念,在此就不冗述。

CAM储备器在其内部的每个储备单元中都有一个比较逻辑,写入CAM中的数据会和内部的每一个数据进行比较,并返回与端口数据相同的所有数据的地址,因而在路由的地址交换器中有广泛的应用。

除了块RAM,还能够将FPGA中的LUT灵活地配置成RAM、ROM和FIFO等结构。

在实际应用中,芯片内部块RAM的数量也是选择芯片的一个重要因素。

  单片块RAM的容量为18k比特,即位宽为18比特、深度为1024,能够依照需要改变其位宽和深度,但要满足两个原那么:

第一,修改后的容量〔位宽深度〕不能大于18k比特;其次,位宽最大不能超过36比特。

因此,能够将多片块RAM级联起来形成更大的RAM,现在只受限于芯片内块RAM的数量,而不再受上面两条原那么约束。

  5.丰富的布线资源

  布线资源连通FPGA内部的所有单元,而连线的长度和工艺决定着信号在连线上的驱动能力和传输速度。

FPGA芯片内部有着丰富的布线资源,依照工艺、长度、宽度和分布位置的不同而划分为4类不同的类别。

第一类是全局布线资源,用于芯片内部全局时钟和全局复位/置位的布线;第二类是长线资源,用以完成芯片Bank间的高速信号和第二全局时钟信号的布线;第三类是短线资源,用于完成差不多逻辑单元之间的逻辑互连和布线;第四类是分布式的布线资源,用于专有时钟、复位等操纵信号线。

  在实际中设计者不需要直截了当选择布线资源,布局布线器可自动地依照输入逻辑网表的拓扑结构和约束条件选择布线资源来连通各个模块单元。

从本质上讲,布线资源的使用方法和设计的结果有紧密、直截了当的关系。

  6.底层内嵌功能单元

  内嵌功能模块要紧指DLL〔DelayLockedLoop〕、PLL〔PhaseLockedLoop〕、DSP和CPU等软处理核〔SoftCore〕。

现在越来越丰富的内嵌功能单元,使得单片FPGA成为了系统级的设计工具,使其具备了软硬件联合设计的能力,逐步向SOC平台过渡。

  DLL和PLL具有类似的功能,能够完成时钟高精度、低抖动的倍频和分频,以及占空比调整和移相等功能。

Xilinx公司生产的芯片上集成了DLL,Altera公司的芯片集成了PLL,Lattice公司的新型芯片上同时集成了PLL和DLL。

PLL和DLL能够通过IP核生成的工具方便地进行治理和配置。

DLL的结构如图1-5所示。

  图1-5典型的DLL模块示意图

  

  

典型的DLL模块示意图

7.内嵌专用硬核

内嵌专用硬核是相对底层嵌入的软核而言的,指FPGA处理能力强大的硬核〔HardCore〕,等效于ASIC电路。

为了提高FPGA性能,芯片生产商在芯片内部集成了一些专用的硬核。

例如:

为了提高FPGA的乘法速度,主流的FPGA中都集成了专用乘法器;为了适用通信总线与接口标准,专门多高端的FPGA内部都集成了串并收发器〔SERDES〕,能够达到数十Gbps的收发速度。

Xilinx公司的高端产品不仅集成了PowerPC系列CPU,还内嵌了DSPCore模块,其相应的系统级设计工具是EDK和PlatformStudio,并依此提出了片上系统〔SystemonChip〕的概念。

通过PowerPC、Miroblaze、Picoblaze等平台,能够开发标准的DSP处理器及其相关应用,达到SOC的开发目的。

 

1.3FPGA的差不多特点

FPGA的差不多特点:

  1〕采纳FPGA设计ASIC电路(专用集成电路),用户不需要投片生产,就能得到合用的芯片。

  2〕FPGA可做其它全定制或半定制ASIC电路的中试样片。

  3〕FPGA内部有丰富的触发器和I/O引脚。

  4〕FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。

  5)FPGA采纳高速CHMOS工艺,功耗低,能够与CMOS、TTL电平兼容。

  能够说,FPGA芯片是小批量系统提高系统集成度、可靠性的最正确选择之一。

  FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。

用户能够依照不同的配置模式,采纳不同的编程方式。

加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。

掉电后,FPGA复原成白片,内部逻辑关系消逝,因此,FPGA能够反复使用。

FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。

当需要修改FPGA功能时,只需换一片EPROM即可。

如此,同一片FPGA,不同的编程数据,能够产生不同的电路功能。

因此,FPGA的使用专门灵活。

FPGA配置模式

  FPGA有多种配置模式:

并行主模式为一片FPGA加一片EPROM的方式;主从模式能够支持一片PROM编程多片FPGA;串行模式能够采纳串行PROM编程FPGA;外设模式能够将FPGA作为微处理器的外设,由微处理器对其编程。

  如何实现快速的时序收敛、降低功耗和成本、优化时钟治理并降低FPGA与PCB并行设计的复杂性等问题,一直是采纳FPGA的系统设计工程师需要考虑的关键问题。

现在,随着FPGA向更高密度、更大容量、更低功耗和集成更多IP的方向进展,系统设计工程师在从这些优异性能获益的同时,不得不面对由于FPGA前所未有的性能和能力水平而带来的新的设计挑战。

  例如,领先FPGA厂商Xilinx最近推出的Virtex-5系列采纳65nm工艺,可提供高达33万个逻辑单元、1,200个I/O和大量硬IP块。

超大容量和密度使复杂的布线变得更加不可推测,由此带来更严峻的时序收敛问题。

此外,针对不同应用而集成的更多数量的逻辑功能、DSP、嵌入式处理和接口模块,也让时钟治理和电压分配问题变得更加困难。

  幸运地是,FPGA厂商、EDA工具供应商正在通力合作解决65nmFPGA专门的设计挑战。

不久往常,Synplicity与Xilinx宣布成立超大容量时序收敛联合工作小组,旨在最大程度地关心系统设计工程师以更快、更高效的方式应用65nmFPGA器件。

设计软件供应商Magma推出的综合工具BlastFPGA能关心建立优化的布局,加快时序的收敛。

  最近FPGA的配置方式差不多多元化!

 

第二章FPGA工作原理

FPGA工作原理

FPGA采纳了逻辑单元阵列LCA〔LogicCellArray〕如此一个概念,内部包括可配置逻辑模块CLB〔ConfigurableLogicBlock〕、输出输入模块IOB〔InputOutputBlock〕和内部连线〔Interconnect〕三个部分。

2.1查找表〔Look-Up-Table)的原理与结构

采纳这种结构的PLD芯片我们也能够称之为FPGA:

如altera的ACEX,APEX系列,xilinx的Spartan,Virtex系列等。

查找表〔Look-Up-Table)简称为LUT,LUT本质上确实是一个RAM。

目前FPGA中多使用4输入的LUT,因此每一个LUT能够看成一个有4位地址线的16x1的RAM。

当用户通过原理图或HDL语言描述了一个逻辑电路以后,PLD/FPGA开发软件会自动运算逻辑电路的所有可能的结果,并把结果事先写入RAM,如此,每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出地址对应的内容,然后输出即可。

下面是一个4输入与门的例子,

实际逻辑电路

LUT的实现方式

a,b,c,d输入

逻辑输出

地址

RAM中储备的内容

0000

0

0000

0

0001

0

0001

0

....

0

...

0

1111

1

1111

1

一.基于查找表〔LUT)的FPGA的结构

我们看一看xilinxSpartan-II的内部结构,如以下图:

xilinxSpartan-II芯片内部结构

Slices结构

Spartan-II要紧包括CLBs,I/O块,RAM块和可编程连线〔未表示出〕。

在spartan-II中,一个CLB包括2个Slices,每个slices包括两个LUT,两个触发器和相关逻辑。

Slices能够看成是SpartanII实现逻辑的最差不多结构(xilinx其他系列,如SpartanXL,Virtex的结构与此稍有不同,具体请参阅数据手册〕altera的FLEX/ACEX等芯片的结构如以下图:

 

alteraFLEX/ACEX芯片的内部结构

 

逻辑单元〔LE〕内部结构

FLEX/ACEX的结构要紧包括LAB,I/O块,RAM块〔未表示出〕和可编程行/列连线。

在FLEX/ACEX中,一个LAB包括8个逻辑单元〔LE〕,每个LE包括一个LUT,一个触发器和相关的相关逻辑。

LE是FLEX/ACEX芯片实现逻辑的最差不多结构(altera其他系列,如APEX的结构与此差不多相同,具体请参阅数据手册〕

 

二.查找表结构的FPGA逻辑实现原理

 

我们依旧以那个电路的为例:

A,B,C,D由FPGA芯片的管脚输入后进入可编程连线,然后作为地址线连到到LUT,LUT中差不多事先写入了所有可能的逻辑结果,通过地址查找到相应的数据然后输出,如此组合逻辑就实现了。

该电路中D触发器是直截了当利用LUT后面D触发器来实现。

时钟信号CLK由I/O脚输入后进入芯片内部的时钟专用通道,直截了当连接到触发器的时钟端。

触发器的输出与I/O脚相连,把结果输出到芯片管脚。

如此PLD就完成了图3所示电路的功能。

〔以上这些步骤差不多上由软件自动完成的,不需要人为干预〕

那个电路是一个专门简单的例子,只需要一个LUT加上一个触发器就能够完成。

关于一个LUT无法完成的的电路,就需要通过进位逻辑将多个单元相连,如此FPGA就能够实现复杂的逻辑。

由于LUT要紧适合SRAM工艺生产,因此目前大部分FPGA差不多上基于SRAM工艺的,而SRAM工艺的芯片在掉电后信息就会丢失,一定需要外加一片专用配置芯片,在上电的时候,由那个专用配置芯片把数据加载到FPGA中,然后FPGA就能够正常工作,由于配置时刻专门短,可不能阻碍系统正常工作。

也有少数FPGA采纳反熔丝或Flash工艺,对这种FPGA,就不需要外加专用的配置芯片。

 

第三章PS2键盘通信

3.1PS2背景

PS2背景

PS/2接口是目前最常见的鼠标接口,最初是IBM公司的专利,俗称〝小口〞。

这是一种鼠标和键盘的专用接口,是一种6针的圆型接口。

但鼠标只使用其中的4针传输数据和供电,其余2个为空脚。

PS/2接口的传输速率比COM接口稍快一些,而且是ATX主板的标准接口,是目前应用最为广泛的鼠标接口之一,但仍旧不能使高档鼠标完全发挥其性能,而且不支持热插拔。

在BTX主板规范中,这也是立即被剔除掉的接口。

   需要注意的是,在连接PS/2接口鼠标时不能错误地插入键盘PS/2接口〔因此,也不能把PS/2键盘插入鼠标PS/2接口〕。

一样情形下,符合PC99规范的主板,其鼠标的接口为绿色、键盘的接口为紫色,另外也能够从PS/2接口的相对位置来判定:

靠近主板PCB的是键盘接口,其上方的是鼠标接口。

  

PS2设备有主从之分,主设备采纳Female插座,从设备采纳Male插头,现在广泛有用的PS2键盘鼠标均在从设备方式下工作。

PS2接口的时钟与数据线差不多上集电极开路结构。

主从设备之间数据通信采纳双向同步串行方式传输,时钟信号由从设备产生。

a.从设备到主设备的通信

当从设备向主设备发送数据时,第一检查时钟线,以确认时钟线是否为高电平。

假如是高电平,从设备就能够开始传输数据;反之,从设备要等待获得总线的操纵权,才能开始传输数据。

传输的每一帧由11位组成,发送时序及每一位的含义如图2所示。

每一帧数据中开始位总是为0,数据校验采纳奇校验方式,停止位始终为1。

从设备到主设备通信时,从设备总是在时钟线为高时改变数据线状态,主设备在时钟下降沿读入数据线状态。

如表1所示:

3.2PS2键盘通信

目前,键盘有许多种,PS2键盘是当今PC机最常用的种类,那个地点仅涉及最常用的键盘,也确实是6引脚发送数据的键盘。

键盘通信时需要四根连接线:

电源线、地线、时钟线CLK、数据线DATA。

DATA和CLK是可双向通信的I/O线,也确实是说,通过这两根线,即能够把主机的数据发送到PS2设备,又能够把设备的数据发向主机。

在无键按下时,DATA和CLK一直处于高电平状态。

但有键按下时,键盘先检查CLK,看它是否处于处于高电平,假如是处在低电平,说明主机无闲暇同意数据,这时键盘将会把数据放在自己的缓冲区,直到CLK重新被拉高。

键盘CLK第一产生下降沿,这时已在数据线上产生信号,如:

起始位总是为0,之后每一个时钟周期时钟电平为高时数据线上加将要输出的电平,在时钟的下降沿它将被主机读取。

3.3VGA原理

扫描是从屏幕的左上方开始的,从左到右、从上到下地进行扫描。

每扫描完一行,电子束就会回到屏幕左边下一行的起始位置。

在这期间,CRT对电子束进行消隐。

每行终止时,用行同步信号进行行同步。

扫描完所有行后,用场同步信号进行场同步,并使扫描回到屏幕的左上方,同时进行场消隐,预备下一次的扫描。

 

PS2键盘操纵模型电子琴顶层电路的设计

如下图,该图是电子琴顶层设计电路。

按实现功能电路要紧分成这几个模块:

1)锁相环、用宏模块搭建的22位.23位.24位计数器、用Verilog写的时钟分频模块fdiv:

1 提供25MHz的时钟信号驱动VGA显示

2 与24位计数器结合提供1Hz给数字时钟用以计时

3 与23位计数器结合提供2MHz给CNT138T与rom_qupu以操纵节奏

4 与22位计数器结合提供4MHz给cnt10b以操纵RAM的地址

5 与fdiv结合提供1MHz给SPEAK

2)模块PS2_2:

PS2通信模块,将键盘输出码转换为ASCII码,只处理字母

 

3)二进制编码器CODE3:

依照键盘码的ASCII码,用verilog写高、中、低三个音阶的分别对应的键盘字母代码,与F_CODE模块相对应,以此来扩大音域

4)模块F_CODE:

1 模块F_CODE的功能第一是为模块SPKER提供决定所发音符的分频预置数,而此数在SPKER输入口停留的时刻即为此音符的节拍长度。

2 同时,F_CODE把CODE3中音符的代码转化为音符频率所对应的数值

3 与模块DECL7S结合显示音符

4 H[3..0]显示0,1,2表示高、中、低三个音阶

5)模块DECL7S:

7段译码显示模块,在数码管上显示1,2,3,4,5,6,7音符

6)模块RAM:

与模块cnt10b结合记录弹奏的乐曲

7)模块ROM:

与模块cnt138b结合可自动播放储存的音乐

8)模块shizhong:

可记录弹奏时刻

9)模块VGA:

显示按键的位置,当音乐响时同步显示对应的音的键盘位置

10〕模块SPEAK

输出每一个音符的音调

11〕模块MUX21

选择播放RAM中的音乐或ROM中的储存音乐

 

第四章PS2键盘操纵电子琴〔VHDL〕

4.1PS2键盘操纵电子琴程序

共分为DIV1、DIV2分频模块,PS2键盘操纵模块,music发音模块,tone音符分频模块,spk发声模块。

libraryIEEE;

useIEEE.STD_LOGIC_1164.ALL;

useIEEE.STD_LOGIC_ARITH.ALL;

useIEEE.STD_LOGIC_UNSIGNED.ALL;

----Uncommentthefollowinglibrarydeclarationifinstantiating

----anyXilinxprimitivesinthiscode.

--libraryUNISIM;

--useUNISIM.VComponents.all;

entityDiv1is

  PORT(clk_50mhz:

INSTD_LOGIC;        --输入时钟为50MHZ;

    c0:

OUTSTD_LOGIC;

c1:

OUTSTD_LOGIC);    

ENDDiv1;

architectureartofDiv1is

begin

D1:

PROCESS(clk_50mhz)      --工作进程开始,将50MHZ时钟50分频,=1MHZ;

  VARIAB

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 工学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1