1、 1 江西制造职业技术学院 信息工程系 08 级 毕 业 论 文 姓 名: 江 太 平 班 级: 08 通信 电子 设计题目 :基于 FPGA 的 PS/2 键盘鼠标控制电子琴 指导教师: 吴 康 二一 一 年 五 月 2 目录 第一章 FPGA 简介 1.1 FPGA 背景 1.2 FPGA 芯片结构 1.3 FPGA 的基本特点 第二章 FPGA 工作原理 2.1 查找表( Look-Up-Table)的原理与结构 2.2 FPGA 工作原理 第三 章 PS2 键盘通信 3.1 PS2 背景 3.2 PS2 键盘通信 3.3 VGA 原理 第四章 PS2 键盘控制模型电子琴顶层电路的设计
2、4.1 PS2 键盘控制电子琴 程序 结论、参考文献 3 第一章 FPGA简介 1.1 FPGA 背景 FPGA 主要生产厂商 1、 Altera 2、 Xilinx 3、 Actel 4、 Lattice 其中 Altera 作为世界老牌可编程逻辑器件的厂家,是当前世界范围内市场占有率最大的厂家,它和 Xilinx 主要生产一般用途 FPGA,其主要产品采 用 RAM 工艺。 Actel 主要提供非易失性 FPGA,产品主要基于反熔丝工艺和 FLASH 工艺。 目前以硬件描述语言( Verilog 或 VHDL)所完成的电路设计,可以经过简单的综合与布局,快速的烧录至 FPGA 上进行测试,
3、是现代 IC 设计验证的技术主流。这些可编辑元件可以被用来实现一些基本的逻辑门 电路(比如 AND、 OR、 XOR、 NOT)或者更复杂一些的组合功能比如解码器或 数学方程式。在大多数的 FPGA 里面,这些可编辑的元件里也包含记忆元件例如触发器 ( Flip flop)或者其他更加完整的记忆块。 系统设计师 可以根据需要通过可编辑的连接把 FPGA 内部的逻辑块连接起来,就好像一个电路试验板被放在了一个 芯片 里。一个出厂后的成品 FPGA的逻辑块和连接可以按照设计者而改变,所以 FPGA 可以完成所需要的逻辑功能。 FPGA 一般来说比 ASIC(专用 集成芯片 )的速度要慢,无法完成复
4、杂的设计,而且消耗更多的电能。但是他们也有很多的优点比如可以快速成品,可以被修 改来改正程序中的错误和更便宜的造价。厂商也可能会提供便宜的但是编辑能力差的 FPGA。因为这些芯片有比较差的可编辑能力,所以这些设计的开发是在普通的 FPGA 上完成的,然后将设计转移到一个类似于ASIC 的芯片上。另外一种方法是用 CPLD(复杂 可编程逻辑器件 备)。 FPGA 采用了逻辑单元阵列 LCA( Logic Cell Array)这样一个概念,内部包括可配置逻辑模块 CLB( Configurable Logic Block)、输出输入模块 IOB( Input Output Block)和内部连线
5、( Interconnect)三个部分。 1.2 FPGA 芯片结构 4 目前主流的 FPGA 仍是基于查找表技术的,已经远远超出了先前版本的基本性能,并且整合了常用功能(如 RAM、时钟管理和 DSP)的硬核( ASIC型)模块。如图 1-1 所示(注:图 1-1 只是一个示意图,实际上每一个系列的 FPGA 都有其相应的内部结构), FPGA 芯片主 要由 6 部分完成,分别为:可编程输入输出单元、基本可编程逻辑单元 、完整的时钟管理、嵌入块式 RAM、丰富的布线资源、内嵌的底层功能单元和内嵌专用硬件模块。 图 1-1 FPGA 芯片的内部结构 FPGA 芯片的内部结构 每个模块的功能如下
6、 : 1 可编程输入输出单元( IOB) 可编程输入 /输出单元简称 I/O单元,是芯片与外界电路的接口部分,完成不同电气特性下对输入 /输出信号的驱动与匹配要求,其示意结构如图1-2 所示。 FPGA 内的 I/O 按组分类,每组都能够独立地支持不同的 I/O 标准。 通过软件的灵活配置,可适配不同的电气标准与 I/O 物理特性,可以调整驱动电流的大小,可以改变上、下拉电阻。目前, I/O 口的频率也越来越高,一些高端的 FPGA 通过 DDR寄存器技术可以支持高达 2Gbps 的数据速率。 图 1-2 典型的 IOB 内部结构示意图 典型的 IOB 内部结构示意图 外部输入信号可以通过 I
7、OB 模块的存储单元输入到 FPGA 的内部,也可以直接输入 FPGA 内部。当外部输入信号经过 IOB 模块的存储单元输入到 FPGA内部时,其 保持时间( Hold Time)的要求可以降低,通常默认为 0。 为了便于管理和适应多种电器标准, FPGA 的 IOB 被划分为若干个组( bank),每个 bank 的接口标准由其接口电压 VCCO 决定,一个 bank 只能5 有 一种 VCCO,但不同 bank 的 VCCO 可以不同。只有相同电气标准的端口才能连接在一起, VCCO 电压相同是接口标准的基本条件。 2 可配置逻辑块( CLB) CLB 是 FPGA 内的基本逻辑单元。 C
8、LB的实际数量和特性会依器件的不同而不同,但是每个 CLB 都包含一个可配置开关矩阵,此矩阵由 4 或 6个输入、一些 选型电路(多路复用器等)和触发器组成。 开关矩阵是高度灵活的,可以对其进行配置以便处理组合逻辑、移位寄存器或 RAM。在 Xilinx公司的 FPGA 器件中, CLB 由多个(一般为 4 个或 2 个)相同的 Slice 和附加逻辑构成,如图 1-3 所示。每个 CLB 模块不仅可以用于实现组合逻辑、时序逻辑,还可以配置为分布式 RAM 和分布式 ROM。 图 1-3 典型的 CLB 结构示意图 典型的 CLB 结构示意图 Slice 是 Xilinx 公司定义 的基本逻辑
9、单位,其内部结构如图 1-4所示,一个 Slice 由两个 4 输入的函数、进位逻辑、算术逻辑、存储逻辑和函数复用器组成。算术逻辑包括一个异或门( XORG)和一个专用与门( MULTAND),一个异或门可以使一个 Slice 实现 2bit 全加操作,专用与门用于提高乘法器的效率;进位逻辑由专用进位信号和函数复用器( MUXC)组成,用于实现快速的算术加减法操作; 4 输入函数发生 器用于实现 4 输入 LUT、分布式 RAM 或 16比特移位寄存器( Virtex-5系列芯片的 Slice 中的两个输入函数为 6 输入,可以实现 6 输入 LUT 或 64比特移位寄存器);进位逻辑包括两条
10、快速进位链,用于提高 CLB 模块的处理速度。 图 1-4 典型的 4 输入 Slice 结构示意图 6 典型的 4 输入 Slice 结构示意图 3 数字时钟管理模块( DCM) 业内大多数 FPGA 均提供数字时钟管理( Xilinx 的全部 FPGA 均具有这种特性)。 Xilinx 推出最先进的 FPGA 提供数字时钟管理和相位环路锁定。相位环路锁定能够提供精确的时钟综合,且能够降低抖动,并实现过滤功能。 4 嵌入式块 RAM( BRAM) 大多数 FPGA 都具有内嵌的块 RAM,这大大拓展了 FPGA 的应用范围和灵活性。块 RAM 可被配置为单端口 RAM、双端口 RAM、内容地
11、址存储器 ( CAM)以及 FIFO 等常用存储结构。 RAM、 FIFO 是比较普及的概念,在此就不冗述。CAM 存储器在其内部的每个存储单元中都有一个比较逻辑,写入 CAM 中的数据会和内部的每一个数据进行比较,并返回与端口数据相同的所有数据的地址,因而在路由的地址交换器中有广泛的应用。除了块 RAM,还可以将 FPGA 中的 LUT 灵活地配置成 RAM、 ROM 和 FIFO 等结构。在实际应用中,芯片内部块 RAM 的数量也是选择芯片的一个重要因素。 单片块 RAM的容量为 18k 比特,即位宽为 18 比特、深度为 1024,可以根据需要改变其位宽和深度,但要满足两个原则:首先,修
12、改后的容量(位宽 深度)不能大于 18k 比特;其次,位宽最大不能超过 36比特。当然,可以将多片块 RAM级联起来形成更大的 RAM,此时只受限于芯片内块 RAM 的数量,而 不再受上面两条原则约束。 5 丰富的布线资源 布线资源连通 FPGA 内部的所有单元,而连线的长度和工艺决定着信号在连线上的驱动能 力和传输速度。 FPGA 芯片内部有着丰富的布线资源,根据工艺、长度、宽度和分布位置的不同而划分为类不同的类别。第一类是全局布线资源,用于芯片内部全局时钟和全局复位 /置位的布线;第二类是长线资源,用以完成芯片 Bank 间的高速信号和第二全局时钟信号的布线;第三类是短线资源,用于完成基本
13、逻辑单元之间的逻辑互连和布线;第四类是分布式的布线资源,用于专有时钟、复位等控制信号线。 在实际中设计者不需要直接选择布线资源,布局布线器可自动地根据输入逻辑网表的拓扑结构和约束条件选择布线资源来连通各个模块单元。从本质上 讲,布线资源的使用方法和设计的结果有密切、直接的关系。 6 底层内嵌功能单元 内嵌功能模块主要指 DLL( Delay Locked Loop)、 PLL( Phase Locked Loop)、 DSP 和 CPU 等软处理核( SoftCore)。现在越来越丰富的内嵌功能单元,使得单片 FPGA 成为了系统级的设计工具,使其具备了软硬件联合设计的能力,逐步向 SOC 平
14、台过渡。 DLL 和 PLL 具有类似的功能,可以完成时钟高精度、低抖动的倍频和分频,以及占空比调整和移相等功能。 Xilinx 公司生产的芯片上集成了 DLL,7 Altera 公司的芯片集成了 PLL, Lattice 公司的新型芯片上同时集成了 PLL和 DLL。 PLL 和 DLL 可以通过 IP核生成的工具方便地进行管理和配置。 DLL的结构如图 1-5 所示。 图 1-5 典型的 DLL 模块示意图 典型的 DLL 模块示意图 7. 内嵌专用硬核 内嵌专用硬核是相对底层嵌入的软核而言的,指 FPGA 处理能力强大的硬核( Hard Core),等效于 ASIC 电路。为了提高 FP
15、GA 性能,芯片生产商在芯片内部集 成了一些专用的硬核。例如:为了提高 FPGA 的乘法速度,主流的 FPGA 中都集成了专用乘法器;为了适用通信总线与接口标准,很多高端的 FPGA 内部都集成了串并收发器( SERDES),可以达到数十 Gbps 的收发速度。 Xilinx 公司的高端产品不仅集成了 Power PC 系列 CPU,还内嵌了 DSP Core 模块,其相应的系统级设计工具是 EDK 和 Platform Studio,并依此提出了片上系统( System on Chip)的概念。通过 PowerPC、 Miroblaze、Picoblaze 等平台,能够开发标准的 DSP 处
16、理器及其相关应用,达到 SOC 的开发目 的。 1.3 FPGA 的基本特点 FPGA 的基本特点 : 1)采用 FPGA 设计 ASIC 电路 (专用集成电路 ),用户不需要投片生产,就能得到合用的芯片。 2) FPGA 可做其它全定制或半定制 ASIC 电路的中试样片。 3) FPGA 内部有丰富的触发器和 I O 引脚。 4) FPGA 是 ASIC 电路中设计周期最短、开发费 用最低、风险最小的器件之一。 5) FPGA 采用高速 CHMOS 工艺,功耗低,可以与 CMOS、 TTL电平兼容。 8 可以说, FPGA 芯片 是小批量系统提高系统集成度、可靠性的最佳选择之一 。 FPGA
17、 是由存放在片内 RAM 中的程序来设置其工作状态的,因此,工作时需要对片内的 RAM 进行编程。用户可以根据不同的配置模式,采用不同的编程方式。 加电时, FPGA 芯片将 EPROM 中数据读入片内编程 RAM 中,配置完成后,FPGA 进入工作状态 。掉电后, FPGA 恢复成白片,内部逻辑关系消失,因此,FPGA 能够反复使用 。 FPGA 的编程无须专用的 FPGA 编程器 ,只须用通用的EPROM、 PROM 编程器即可。当需要修改 FPGA 功能时,只需换一片 EPROM 即可。这样,同一片 FPGA,不同的编程数据,可以产生不同的电路功能。因此, FPGA 的使用非常灵活。 F
18、PGA 配置模式 FPGA 有多种配置模式:并行主模式为一片 FPGA 加一片 EPROM 的方式;主从模式可以支持一片 PROM 编程多片 FPGA;串行模式可以采用串行 PROM编程 FPGA; 外设 模式可以将 FPGA 作为 微处理器 的外设,由微处理器对其编程。 如何实现快速的时序收敛、降低 功耗 和成本、优化时钟管理并降低 FPGA与 PCB 并行设计的复杂性等问题,一直是采用 FPGA 的系统设计工程师需要考虑的关键问题。如今,随着 FPGA 向更高密度、更大容量、更低功耗和集成更多 IP的方向发展,系统设计工程师在从这些优异性能获益的同时,不得不面对由于 FPGA 前所未有的性
19、能和能力水平而带来的新的设计挑战。 例如,领先 FPGA 厂商 Xilinx 最近推出的 Virtex-5 系列采用 65nm 工艺,可提供高达 33 万个逻辑单元、 1,200 个 I/O 和大量硬 IP块。超大容量和密度使复杂的布线变得更加不可预测,由此带来更严重的时序收敛问题。此外,针对不同应用而集成的更多数量的逻辑功能、 DSP、 嵌入式 处理和接口模块,也让时钟管理和电压分配问题变得更加困难。 幸运地是, FPGA 厂商、 EDA 工具供应商正在通力合作解决 65nm FPGA独特的设计挑战。不久以前, Synplicity 与 Xilinx 宣布成立超大容量时序收敛联合工作小组,旨
20、在最大程度地帮助系统设计工程师以更快、更高效的方式应用 65nm FPGA 器件。设计软件供应商 Magma 推出的综合工具 Blast FPGA 能帮助建立优化的布局,加快时序的收敛。 最近 FPGA 的配置方式已经多元化! 9 第二章 FPGA 工作原理 FPGA 工作原理 FPGA 采用了逻辑单元阵列 LCA( Logic Cell Array)这样一个概念,内部包括可配置逻辑模块 CLB( Configurable Logic Block)、输出输入模块 IOB( Input Output Block)和内部连线( Interconnect)三个部分。 2.1 查找表( Look-Up
21、-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,这样,每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找
22、出地址对应的内容,然后输出即可。 下面是一个 4 输入与门的例子, 实际逻辑电路 LUT 的实现方式 a,b,c,d 输入 逻辑输出 地址 RAM 中存储的内容 0000 0 0000 0 0001 0 0001 0 . 0 . 0 1111 1 1111 1 一 .基于查找表( LUT)的 FPGA 的结构 10 我们看一看 xilinx Spartan-II 的内部结构,如下图: xilinx Spartan-II 芯片内部结构 Slices 结构 Spartan-II 主要包括 CLBs, I/O块, RAM块和可编程连线(未表示出)。在 spartan-II中,一个 CLB 包括 2 个 Slices,每个 slices包括两个 LUT,两个触发器和相关逻辑。 Slices 可以看成是 SpartanII 实现逻辑的最基本结构 (xilinx 其他系列,如 SpartanXL,Virtex 的结构与此稍有不同,具体