1.2 FPGA软件结构分析
FPGA可以从不同角度对结构进行分析,本节分别从设计结构和芯片结构两方面进行介绍。
1.2.1 FPGA的设计结构
传统的设计手段是采用原理图输入的方式进行的,通过调用FPGA/CPLD厂商所提供的相应物理元件库,在电路原理图中绘制所设计的系统,然后通过网表转换产生某一特定FPGA/CPLD厂商布局布线器所需网表,通过布局布线,完成设计。原理图绘制完成后可采用门级仿真器进行功能验证。
然而,工程师的最初设计思想不是一开始就考虑采用某一FPGA厂商的某一特定型号器件,而是从功能描述开始的。设计工程师首先要考虑规划出能完成某一具体功能、满足自己产品系统设计要求的某一功能模块,利用某种方式(如HDL硬件描述语言)把功能描述出来,通过功能仿真以验证设计思路的正确性。当所设计功能满足需要时,再考虑以何种方式(即逻辑综合过程)完成所需要的设计,并能直接使用功能定义的描述。实际上,这就是自顶而下(TopDown)的设计方法。
与传统电原理图输入设计方法相比,Top-Down设计方法具有以下优点。
(1)完全符合设计人员的设计思路
从功能描述开始,到物理实现的完成,完全符合设计人员的设计思路。
(2)功能设计可完全独立于物理实现
在采用传统的电学原理输入方法时,FPGA/CPLD器件的采用受到器件库的制约。由于不同厂商FPGA/CPLD的结构完全不同,甚至同一厂商不同系列的产品也存在结构上的差别,因此,在设计一开始,工程师的设计思路就受到最终所采用器件的约束,大大限制了设计师的思路和器件选择的灵活性。而采用Top-Down设计方法,功能输入采用国际标准的HDL输入方法,HDL不含有任何器件的物理信息,工程师可以有更多的空间去集中精力进行功能描述,设计师可以在设计过程的最后阶段任意选择或更改物理器件。
(3)设计可再利用
设计结果完全可以以一种知识产权(Intellectual Property,IP)的方式作为设计师或设计单位的设计成果,应用于不同的产品设计中,做到成果的再利用。
(4)易于设计的更改
设计师可在极短的时间内修改设计,对各种FPGA/EPLD结构进行设计结果规模(门消耗)和速度(时序)的比较,选择最优方案。
(5)设计、处理大规模、复杂电路
目前的FPGA/CPLD器件正向高集成度、深亚微米工艺发展,为设计系统的小型化、低功耗、高可靠性等提供了集成的手段。设计低于一万门左右的电路, Top-Down设计方法具有很大的帮助;而设计更大规模的电路,Top-Down设计方法则是必不可少的手段。
(6)提高生产率
目前设计周期缩短,生产率大大提高,产品上市时间提前,性能明显提高,产品竞争力加强。据统计,采用Top-Down设计方法的生产率可达到传统设计方法的2~4倍。
Top-Down设计,其核心是采用HDL语言进行功能描述,由逻辑综合(Logic Synthesis)把行为(功能)描述转换成某一特定FPGA/CPLD的工艺网表,送到厂商的布局布线器完成物理实现。在设计过程的每一个环节,仿真器的功能验证和门级仿真技术保证设计功能和时序的正确性。
采用Top-Down设计方法进行FPGA/CPLD设计,其设计结果的优劣与否取决于3个重要的因素:描述手段(即HDL语言)、设计方法(Style)和设计工具。描述手段是基础,设计方法需要工程经验,而设计工具则是Top-Down设计的关键。一套完整、强大、性能卓越的设计工具,可帮助设计师最大限度地发挥其设计能力。
1.2.2 FPGA芯片的内部结构
FPGA芯片内部结构包括:可编程输入/输出单元(IOB)、数字时钟管理模块、嵌入式块RAM(BRAM)、丰富的布线资源、底层内嵌功能单元和内嵌专用硬核。
1.可编程输入/输出单元(IOB)
可编程输入/输出单元简称I/O单元,是芯片与外界电路的接口部分,完成不同电气特性下对输入/输出信号的驱动与匹配要求,其示意结构如图1-68所示。FPGA内的I/O按组分类,每组都能够独立地支持不同的I/O标准。通过软件的灵活配置,可适配不同的电气标准与I/O物理特性,可以调整驱动电流的大小,可以改变上、下拉电阻。I/O口的频率也越来越高,一些高端的FPGA通过DDR寄存器技术可以支持高达2Gbit/s的数据速率。
图1-68 典型的IOB内部结构示意图
外部输入信号可以通过IOB模块的存储单元输入到FPGA的内部,也可以直接输入FPGA内部。当外部输入信号经过IOB模块的存储单元输入到FPGA内部时,其保持时间(Hold Time)的要求可以降低,通常默认为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-69所示。每个CLB模块不仅可以用于实现组合逻辑、时序逻辑,还可以配置为分布式RAM和分布式ROM。
图1-69 典型的CLB结构示意图
Slice是Xilinx公司定义的基本逻辑单位,其内部结构如图1-70所示,一个Slice由两个4输入的函数、进位逻辑、算术逻辑、存储逻辑和函数复用器组成。算术逻辑包括一个异或门(XORG)和一个专用与门(MULTAND),一个异或门可以使一个Slice实现2bit全加操作,专用与门用于提高乘法器的效率;进位逻辑由专用进位信号和函数复用器(MUXC)组成,用于实现快速的算术加减法操作;4输入函数发生器用于实现4输入LUT、分布式RAM或16bit移位寄存器(Virtex-5系列芯片的Slice中的两个输入函数为6输入,可以实现6输入LUT或64bit移位寄存器);进位逻辑包括两条快速进位链,用于提高CLB模块的处理速度。
图1-70 典型的4输入Slice结构示意图
3.数字时钟管理模块(DCM)
业内大多数FPGA均提供数字时钟管理(Xilinx的全部FPGA产品均具有这种特性)。Xilinx推出的最先进的FPGA提供了数字时钟管理和相位环路锁定。相位环路锁定能够提供精确的时钟综合,且能够降低抖动,并实现过滤功能。
4.嵌入式块RAM(BRAM)
大多数FPGA都具有内嵌的块RAM,这大大拓展了FPGA的应用范围和灵活性。块RAM可被配置为单端口RAM、双端口RAM、内容地址存储器(CAM)以及FIFO等常用存储结构。CAM存储器在其内部的每个存储单元中都有一个比较逻辑,写入CAM中的数据会和内部的每一个数据进行比较,并返回与端口数据相同的所有数据的地址,因而在路由的地址交换器中有广泛的应用。除了块RAM,还可以将FPGA中的LUT灵活地配置成RAM、ROM和FIFO等结构。在实际应用中,芯片内部块RAM的数量也是选择芯片的一个重要因素。
单片块RAM的容量为18Kbit,即位宽为18bit、深度为1024,可以根据需要改变其位宽和深度,但要满足两个原则:首先,修改后的容量(位宽)不能大于18Kbit;其次,位宽最大不能超过36bit。当然,可以将多片块RAM级联起来形成更大的RAM,此时只受限于芯片内块RAM的数量,而不再受上面两条原则的约束。
5.丰富的布线资源
布线资源连通FPGA内部的所有单元,而连线的长度和工艺决定着信号在连线上的驱动能力和传输速度。FPGA芯片内部有着丰富的布线资源,根据工艺、长度、宽度和分布位置的不同划分为4类不同的类别:第一类是全局布线资源,用于芯片内部全局时钟和全局复位/置位的布线;第二类是长线资源,用于完成芯片Bank间的高速信号和第二全局时钟信号的布线;第三类是短线资源,用于完成基本逻辑单元之间的逻辑互联和布线;第四类是分布式的布线资源,用于专有时钟、复位等控制信号线。在实际中设计者不需要直接选择布线资源,布局布线器可自动根据输入逻辑网表的拓扑结构和约束条件选择布线资源来连通各个模块单元。从本质上说,布线资源的使用方法和设计的结果有密切、直接的关系。
6.底层内嵌功能单元
内嵌功能模块主要是指延迟锁相环(DLL,Delay Locked Loop)、锁相环(PLL, Phase Locked Loop)、DSP和CPU等软处理核(SoftCore)。越来越丰富的内嵌功能单元,使得单片FPGA成为了系统级的设计工具,使其具备了软硬件联合设计的能力,逐步向SOC平台过渡。
DLL和PLL具有类似的功能,可以完成时钟高精度、低抖动的倍频和分频,以及占空比调整和移相等功能。Xilinx公司生产的芯片上集成了DLL,Altera公司的芯片集成了PLL,PLL和DLL可以通过IP核生成的工具方便地进行管理和配置。DLL的结构如图1-71所示。
图1-71 典型的DLL模块示意图
7.内嵌专用硬核
内嵌专用硬核是相对底层嵌入的软核而言的,是指FPGA处理能力强大的硬核(Hard Core),等效于ASIC电路。为了提高FPGA的性能,芯片生产商在芯片内部集成了一些专用的硬核。例如,为了提高FPGA的乘法速度,主流的FPGA中都集成了专用乘法器;为了适用通信总线与接口标准,很多高端的FPGA内部都集成了串并收发器(SERDES),可以达到数十Gbit/s的收发速度。Xilinx公司的高端产品不仅集成了Power PC系列CPU,还内嵌了DSP Core模块,其相应的系统级设计工具是EDK和Platform Studio,并依此提出了片上系统(System on Chip)的概念。通过PowerPC、Microblaze、Picoblaze等平台,能够开发标准的DSP处理器及其相关应用,达到SOC的开发目的。基本特点为:
① 采用FPGA设计ASIC电路(专用集成电路),用户不需要投片生产,就能得到合用的芯片;
② FPGA可做其他全定制或半定制ASIC电路样片;
③ FPGA内部有丰富的触发器和I/O引脚;
④ FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一;
⑤ FPGA采用高速CMOS工艺,功耗低,可以与CMOS、TTL电平兼容。可以说,FPGA芯片是小批量系统提高系统集成度和可靠性的最佳选择之一。
FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。用户可以根据不同的配置模式,采用不同的编程方式。加电时,FPGA芯片将EPROM中的数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。FPGA的编程无需专用的FPGA编程器,只需用通用的EPROM、PROM编程器即可。当需要修改FPGA功能时,只需换一片EPROM即可。这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。因此,FPGA的使用非常灵活。