FPGA 等效门数的计算方法有两种:
1. 把FPGA 基本单元(如LUT+FF,ESB/BRAM)和实现相同功能的标准门阵列比较,门阵列中包含的门数即为该FPGA 基本单元的等效门数,然后乘以基本单元的数目就可以得到FPGA 门数估计值;
2. 分别用FPGA 和标准门阵列实现相同的功能,从中统计出FPGA 的等效门数,这种方法比较多的依赖于经验数据。
对于第一种方法,FPGA 包括LUT/FF/RAM 等资源,分析各种资源等效门数时,总原则是等效原则,就是实现相同的功能,在标准门阵列中需要的门数就是FPGA 该资源等效门数,例如实现一个带寄存器输出的4 输入XOR,在FPGA 中需要用一个LUT 和1 个FF 实现,在标准门阵列中一般要用21 个与非门实现,于是1 个LUT+1 个FF 等效于21 个门。对ESB(BRAM),由于用标准门阵列实现1bit 的RAM 时一般需要4 个门,因此ESB/BARM 做RAM 使用时,1bit 等效4 个门,对Altera FPGA 中一个2048bit 的ESB,等效门数为8K。光靠这些数据还不能比较准确地计算出FPGA 的等效门数。因为这只是一种简单情况,实际情况要复杂很多。例如,如果实现的是带寄存器输出地2 输入XOR,FPGA 也要用1 个LUT+FF,而标准门阵列只需要8 个NAND,于是1 个LUT+1 个FF 只等效于8 个门。同时特定功能的实现,在不同的标准门阵列系列中需要的门数也不一样,因此等效门的计算只能是个大概的数值。也就是说对于某一具体型号FPGA 的门数估计,与FPGA 资源的用途有密切关系。LUT 用于实现2 输入XOR和4 输入XOR 等效门数不一样(分别为1 和13);FF 不带异步清零、复位、时钟使能和带这些端口的等效门数不同(分别为8 和13);ESB(BRAM)做RAM 使用时,1bit 等效4 个门,1 个2048bit 的BRAM 等效8K 门,但是做查找表使用时可能只相当于不到200 门。因此估计FPGA 的等效门数需要做更细致的分析。
图1 显示了EP20K 系列的等效门数等参数
Feature EP20K1000E
Typical Gates 1,000,000
Maximum System Gate 1,770,000
Logic Elements 38,400
Embedded System Blocks 160
Maximum RAM Bits 327,680
Maximum Macrocells 2,560
Maximum I/O Pins 716
图1 EP20K 系列的等效门数
下面以EP20K1000E 为例详细说明FPGA 等效门数的估计方法。
1.计算逻辑阵列的等效门数
估算EP20K1000E 的门数时,把FPGA 特定资源和LCA300K 标准逻辑阵列的门数(LSILCA300K Data Book)比较,可以对FPGA 等效门做出估计。FPGA 一个LUT+FF 等效门数
计算如图2 所示
Implementations APEX 20K LUT LSI Gates APEX 20K Register LSI Gates Total
Simple LCA300K function Two input AND gate 1 D-Type Flipflop 7 8
Complex LCA300K function Four XOR gate 13 D-Type Flipflop with 8 21
clear, present and clock
enable signal
图2 一个LUT+FF 等效门数
即LUT+FF 等效于8~21 个门,上限和下限分别由实现简单函数、复杂函数分别界定。APEX20K 的等效门数也可以根据经验数据获得,把超过100 个针对4 输入LUT 的设计用FPGA 实现,同时用LCA300K gate arrays 和Design Compiler 实现,比较相同的设计FPGA 所用的LE 数目和LCA300K 所用的门数可知,每个LE 相当于12 个门。EP20K1000E 有38400个LE,于是相当于46 万门。
2.计算ESB 的等效门数
RAM 中一个bit 所需要的门数与RAM 的体系结构、工艺、厂商等有关,一般而言,1bit相当于4 个门,Altera 也采用这个标准,这样可以方便地估计ESB 等效门数。计算ESB 等效门数也可以采用和LSI LCA300K 比较的方法,即通过与实现相同容量RAM 在LCA300K 所用的门数相比较,从而得到ESB 的每一bit 相当于多少门,从而计算出ESB 的等效门数,
参考图3。
Memory Function Gates Gates per Bit
128×8 single-port SRAM 4,620 4.5
128×16 single-port SRAM 7,980 3.9
128×32 single-port SRAM 14,700 3.6
128×16 dual-port SRAM 8,300 4.1
128×32 dual-port SRAM 14,910 63.6
图3 ESB 的等效门数
从上表可见,4gates/bit 是一个比较合适的估计,于是EP20K1000E 的ESB 等效门数为160 ESBs X 2,048 bits per ESB X 4 gates per bit = 1,310,720 gates,即约为130 万门。
总而言之,对EP20K1000E,LUT+FF 等效门数约为46 万(经验数值),ESB 全用作RAM 时等效门数约为130 万,所以最大系统门数为170 万。
结论:
FPGA 等效门数估计方法可以是把FPGA 资源基本单元(如LUT+FF,ESB)和实现相同功能的标准门阵列相比得到FPGA 基本单元等效的门数,然后乘以单元的个数得到整个FPGA等效门数。也可以是实现很多设计,和用标准门阵列相比,从中统计出等效门数。
FPGA 的等效门数估计一般分为LUT+FF 和ESB(BRAM)两部分,LUT+FF 等效于8~21 个门,典型值为12;ESB 做RAM 使用时,一般相当于4 门/bit,此时估计出的门数最多,如果ESB 做乘积项/LUT 则等效门数大大减小,例如对EP20K1000E,前者为130 万,后者为2 万。