1、第 2章 FPGA的硬件结构及运算功能何宾2009.08本章概述本书所有的信号处理的实现都是在 Xilinx公司的FPGA芯片上实现。本章主要介绍 Xilinx的三个最重要的 FPGA产品Virtex-II, Virtex-4和 Virtex-5的内部结构及主要的功能,在此基础上介绍了基于 FPGA算数运算的一些基本理论。了解这些 FPGA的内部结构及功能,为读者深入掌握使用 FPGA实现数字信号处理算法打下良好基础。 Virtex-II的逻辑资源-Virtex-II的 CLB如图所示, Xilinx的 Virtex-II系列的 FPGA内的一个CLB包含四片 slice单元,而 Virtex
2、和 Spartan系列的FPGA每个 CLB 包含两片 slice单元。下面给出 CLB实现的功能:图 2.1 CLB的内部结构1. CLB中的 slice逻辑可实现任何的数字逻辑设计;2. Slice在 CLB中被互连到一起并且通过开关矩阵将CLB连接起来;3 Cin和 Cout信号对实现算术功能非常重要。每个CLB列中存在两个相互独立的 Cin/Cout列;4一片 slice可实现一个 2位全加器,所以一个 CLB可实现两个独立的 4位全加器,作为与其它 CLB 协同工作的高位宽度加法运算的一部分。Virtex-II的逻辑资源-Virtex-II的 CLBVirtex-II的逻辑资源-Vi
3、rtex-II的 CLB一旦设计人使用 VHDL或 Verilog语言完成设计输入,设计将被综合,并得出一个在指定 FPGA上实现的方案。设计者指定目标器件的类型 (比如厂商,系列,规格,封装类型,速率等级 )。综合处理是一个复杂的过程,它将任何可综合的 VHDL/Verilog通过软件工具转转换为 FPGA可以识别的比特流文件。对于 Xilinx的产品,综合工具将决定如何使用可用的slice逻辑来执行设计的数字逻辑操作。由 FPGA制造商提供的工具通过一系列的复杂操作来接收设计文件,其目的是将设计转化成一种比特流,该比特流可被下载并对FPGA 进行配置。Slice是 CLB内的功能单元。衡量
4、 Xilinx FPGA资源规模的主要标准是 slice的数量。图 2.2给出了 Slice的内部结构。在 Slice内实现用户设计的逻辑行为操作。Virtex-II的逻辑资源-Virtex-II的 Slice图 2.2 Slice的内部结构Virtex-II的逻辑资源-Virtex-II的 SliceSlice可以完成的功能主要有:1) 用户设计功能的绝大部分可通过 CLB中的 slice来实现;2) 不同 slice之间存在着多种互连的可行性;3) LUT可实现任何 4输入布尔函数。绝大部分的数字逻辑设计均可使用 4输入 LUT执行逻辑操作来实现;4) LUT可用做移位寄存器 SRL或者
5、RAM;Virtex-II的逻辑资源-Virtex-II的 SliceVirtex-II的逻辑资源-Virtex-II的 Slice寄存器提供了实现同步逻辑的方法;1)当 FPGA工作频率较高时,正确的使用寄存器显得十分重要,不正确的使用寄存器将降低系统的工作性能;2)多路复用器和 CY单元提供了 slice中信号布线的可能性;3)底部还包括了算术逻辑与门单元,使得乘法的实现更为有效。Virtex-II的 FPGA内部使用的是四输入的 LUT。 LUT的功能主要有:1) 一个 4输入布尔函数映射到 FPGA内的 LUT中;加载到 LUT中的比特位包含了用于配置器件的比特流。综合工具将决定用于实现用户设计的 LUT的内容,多数情况下设计人员不需要关注这一点。偶尔情况下,需要设计人员人工指定设计的某些部分,并确定 LUT的内容(例如,该如何将它们连接在一起)。在对时间和芯片面积要求极为苛刻的应用时,为保证 LUT能够满足性能要求,就需要设计人员进行手工优化。这些手工优化类似于用汇编机器代码人工编写部分的软件代码,在人工优化时,不需要编译器做这个工作。Virtex-II的逻辑资源-Virtex-II查找表