一般而言FPGA等效门数的计算方法有两种

一是把FPGA基本单元(如LUT+FF,ESB/BRAM)和实现相同功能的标准门阵列比较,门阵列中包含的门数即为该FPGA基本单元的等效门数,然后乘以基本单元的数目就可以得到FPGA门数估计值

二是分别用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个门,对AlteraFPGA中一个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的等效门数需要做更细致的分析。

下面以EP20K1000E为例详细说明FPGA等效门数的估计方法。

(1)计算逻辑阵列的等效门数
估算EP20K1000E的门数时,把FPGA特定资源和LCA300K标准逻辑阵列的门数(LSILCA300KDataBook)比较,可以对FPGA等效门做出估计。FPGA一个LUT+FF等效门数计算如图2所示

即LUT+FF等效于8~21个门,上限和下限分别由实现简单函数、复杂函数分别界定。

APEX20K的等效门数也可以根据经验数据获得,把超过100个针对4输入LUT的设计用FPGA实现,同时用LCA300Kgatearrays和DesignCompiler实现,比较相同的设计FPGA所用的LE数目和LCA300K所用的门数可知,每个LE相当于12个门。EP20K1000E有38400个LE,于是相当于46万门。

(2)计算ESB的等效门数
RAM中一个bit所需要的门数与RAM的体系结构、工艺、厂商等有关,一般而言,1bit相当于4个门,Altera也采用这个标准,这样可以方便地估计ESB等效门数。

计算ESB等效门数也可以采用和LSILCA300K比较的方法,即通过与实现相同容量RAM在LCA300K所用的门数相比较,从而得到ESB的每一bit相当于多少门,从而计算出ESB的等效门数,参考图3。

4gates/bit是一个比较合适的估计,于是EP20K1000E的ESB等效门数为
160ESBsX2,048bitsperESBX4gatesperbit=1,310,720gates,即约为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万。

PLD厂家往往各自有各自的内部结构,当横向比对时是蛮麻烦的,不过有一个比较简单的小算法,希望能帮到你,也希望高手指正。

为了统一度量衡(感觉像QSH一样),业界一般会归结到BLM(BasicLogicModule)

1BLM=1LUT4(四输入查找表)+DFF(D触发器)

那么,

1BLM=0.5Slice(Xilinx)=1LE(Altera)=2.25Tile(Actel)

这只是逻辑资源的比对,像内部SRAM啊,全局时钟资源啊,内部PLL啊,I/Onumber等等,等等也是我们选择PLD需要考虑的,不过这个比较就比较直观了,可以查看对应公司的选型手册就ok啦!

However,这只是一个一般的参考,我们知道一个PLD的逻辑资源和可用逻辑资源还是有很大不同的哦!

FPGA的LE数与门数的关系(转)的更多相关文章

  1. cpu个数、核数、线程数、Java多线程关系的理解

    cpu个数.核数.线程数.Java多线程关系的理解 2017年12月08日 15:35:37 一 cpu个数.核数.线程数的关系 cpu个数:是指物理上,也及硬件上的核心数: 核数:是逻辑上的,简单理 ...

  2. HDU 1068 Girls and Boys(最大独立集合 = 顶点数 - 最大匹配数)

    HDU 1068 :题目链接 题意:一些男孩和女孩,给出一些人物关系,然后问能找到最多有多少个人都互不认识. 转换一下:就是大家都不认识的人,即最大独立集合 #include <iostream ...

  3. 卡特兰数 Catalan数 ( ACM 数论 组合 )

    卡特兰数 Catalan数 ( ACM 数论 组合 ) Posted on 2010-08-07 21:51 MiYu 阅读(13170) 评论(1)  编辑 收藏 引用 所属分类: ACM ( 数论 ...

  4. HDU 4160 Dolls (最小路径覆盖=顶点数-最大匹配数)

    Dolls Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...

  5. catalan 数——卡特兰数(转)

    Catalan数——卡特兰数 今天阿里淘宝笔试中碰到两道组合数学题,感觉非常亲切,但是笔试中失踪推导不出来后来查了下,原来是Catalan数.悲剧啊,现在整理一下 一.Catalan数的定义令h(1) ...

  6. JS 实现计算一段文字中的字节数,字母数,数字数,行数,汉字数。

    看到了匹配,第一个想到了用正则表达式,哈哈,果然很方便.不过正则表达式高深莫测!我还没有研究明白啊..目前学了点皮毛.代码如下: <!DOCTYPE html PUBLIC "-//W ...

  7. 【Kafka】Kafka-分区数-备份数-如何设置-怎么确定-怎么修改

    Kafka-分区数-备份数-如何设置-怎么确定-怎么修改 kafka partition 数量 更新_百度搜索 kafka重新分配partition - - CSDN博客 如何为Kafka集群选择合适 ...

  8. Guardian of Decency UVALive - 3415 最大独立集=结点数-最大匹配数 老师带大学生旅游

    /** 题目:Guardian of Decency UVALive - 3415 最大独立集=结点数-最大匹配数 老师带大学生旅游 链接:https://vjudge.net/problem/UVA ...

  9. fzu Problem 2198 快来快来数一数 (快速幂+优化)

    题目链接: Problem  2198  快来快来数一数 题目描述: 给出n个六边形排成一排,a[i]代表i个六边形能组成的生成树个数,设定s[i]等于a[1]+a[2]+a[3]+....+a[i- ...

随机推荐

  1. Sumsets(POJ 2229 DP)

    Sumsets Time Limit: 2000MS   Memory Limit: 200000K Total Submissions: 15293   Accepted: 6073 Descrip ...

  2. Hibernate配置属性

    Hibernate配置属性 属性名 用途 hibernate.dialect 一个Hibernate Dialect类名允许Hibernate针对特定的关系数据库生成优化的SQL. 取值 full.c ...

  3. js的eval方法

    eval方法: 检查JScript代码,并且执行. 语法: eval(codeString); 参数: codeString是必选项,参数是包含有效的JScript代码的字符串值,这个字符串值将由JS ...

  4. poj 1036 Gangsters

    http://poj.org/problem?id=1036 题意:N个土匪,伸缩门的范围是K, 时间T, 伸缩门在[0, k]范围内变动,每个单位时间可以不变伸长或者缩短一个单位.给出每个最烦到达的 ...

  5. C# 伪造 referer 提交数据

    private string SendRequest(string account, string cardNumber, string cardPass) { string targetUrl = ...

  6. Lisp之根源

    原文:http://www.paulgraham.com/rootsoflisp.html 约翰麦卡锡于1960年发表了一篇非凡的论文,他在这篇论文中对编程的贡献有如 欧几里德对几何的贡献.1 他向我 ...

  7. Unix/Linux环境C编程入门教程(36) 初识shell

     1.什么是Shell Shell是位为一组,依次代表文件拥有者.同组用户和其他用户的存取权限.通常文件共有3个权限,"r"表示只读:"w"表示可写:&qu ...

  8. hdu1166 树状数组

    不知道为什么用C++输入输出死活不过,换成C的就过了... #include <stdio.h> #include <string.h> //================= ...

  9. android ANR 案例分析

    案例1:关键词:ContentResolver in AsyncTask onPostExecute, high iowait Process:com.android.email Activity:c ...

  10. c语言的lua库编写

    gcc编译 gcc -I/usr/local/include/ -L/usr/local/lib/ -lm -o engine_mlisten_lua ./src/engine_mlisten_lua ...