FPGA中的“门”

逻辑门
在ASIC的世界里,衡量器件容量的常用标准是等效门。这是因为不同的厂商在单元库里提供了不同的功能模块,而每个功能模块的实现都要求不同数量的晶体管。这样在两个器件之间比较容量和复杂度就很困难。
解决的办法是给 每个功能赋予一个等效门数值,就比如“A功能模块等价于5个等效门,B功能模块等价于3个等效门···”。下一步就是统计每个功能模块,把他们转换成相应的等效门值,把这些值相加,然后就可以自豪的公布:“我的ASIC包括一千万的等效门,这要比你的ASIC大多了!”
但是,事情没那么简单,不同的厂商对等效门实际结构的定义是不同的。通常情况下,一个2输入的NAND功能 表示一个等效门。也有一些厂商定义一个等效门等价于特定数目的晶体管。还有的厂商定义一个ECL等效门为“实现一个单比特全加器所要求最小逻辑的1/11”(这到底是谁想出来的?)。通常,最好的办法是,在投资之前先确定大家在谈论同样的事。
回到 FPGA来 ,FPGA厂商遇到一个问题,他们试图建立一个基础用于比较他们的器件和ASIC。例如,如果某人有一个现成的包含500000个等效门的ASIC设计,他想把这个设计变为用FPGA实现,他应该怎么样描述这个设计需要的FPGA呢?事实上每个4输入LUT都可以表示从1到20多个2输入基本逻辑门所能表示的任何功能,所以这样的比较相当微秒。
系统门
为了解决这个问题,FPGA厂商在20世纪90年代早期开始讨论系统门。有人说这是个代价高昂的想法,在ASIC设计中才会涉及这种专门术语。而另外一些人则说这纯粹是一个市场策略,没有任何人带来好处。
遗憾的是,似乎没有清晰的定义来解释什么是系统门。在FPGA实质上只包含LUT或寄存器形式的通用可编程逻辑资源时,这很令人尴尬。在那时甚至很难界定一个包含x个等效门的专门ASIC设计是否能够用一个包含y个系统门的FPGA来代替。这是因为有的ASIC设计者可能在组合逻辑方面具有优势,而另外一些则可能更偏重使用寄存器。这两种情况得到的结果可能不是一个在FPGA上的最优映射。
当FPGA开始包含嵌入式 RAM块时,问题变得尤为严重,因为有些功能使用RAM实现要比通用逻辑实现效率高。而且,事实上LUT可以当做分布式RAM来使用,例如有的厂商系统门计算值现在包括一个定语,“假设20%~30%的LUT是作为RAM来使用的”。当然,在开始认为FPGA包含嵌入式处理器核和类似功能时,这个问题更加严重了。于是,有的厂商现在说:“系统门数值没有计入这些元件”。
到底有没有简单的规则来把系统门转换成等效门呢?其实有很多。有的人认为如果你感觉乐观,你应当把系统门数值除以3(比如300万FPGA系统门应该等于100万ASIC等效门)。或者如果你感到更多的是悲观的那一面,你可以把系统门除以5(这样300万系统门将会等于60万等效门)。
然而也有人认为,只有在你假定系统门数值包括了所有能使用通用可编程逻辑和块RAM实现的功能时,以上规律才是正确的。这些人会接着说,如果你把RAM从等式中去掉,你就必须把系统门数值除以10(这时,300万系统门就只能等于30万等效门),但是这时你仍然可以使用块RAM。
最后,这个问题陷入这样一个泥潭,以至于连FPGA厂商都不愿意再谈论系统门。对于新出现在人们视野中的FPGA,人们很惬意的想象着等效门,而且方便用LUT、SLICE等考虑设计,然而,大量的FPGA设计者更习惯与用FPGA的名词。由于这个原因,有的人仍然保留了传统的习惯,我更愿意看到的是,我更愿意看到的是,使用以下简单的数目来规定和比较FPGA:
逻辑单元、逻辑元素或其他;
嵌入式块RAM数目;
嵌入式乘法器的数目;
嵌入式加法器的数目;
嵌入式MAC的数目;
其他。
为什么会这么困难?对一个真实世界里的ASIC设计实例进行全面的描述,给出它们的等效门,包括它们的寄存器/锁存器、原语门和其他更复杂的功能等细节,是很有用处的。这些设计实例在FPGA中实现所要求LUT和寄存器/锁存器的数量,还有嵌入式RAM和其他内嵌功能的数目就与此有关。
尽管现在还不理想,因为在FPGA和ASIC中人们的设计毕竟是不一样的,但是总会有一个开始。

版权所有权归卿萃科技 杭州FPGA事业部,转载请注明出处
作者:杭州卿萃科技ALIFPGA
原文地址:杭州卿萃科技FPGA极客空间 微信公众号

扫描二维码关注杭州卿萃科技FPGA极客空间
FPGA中的“门”的更多相关文章
- 【转】关于FPGA中建立时间和保持时间的探讨
时钟是整个电路最重要.最特殊的信号,系统内大部分器件的动作都是在时钟的跳变沿上进行, 这就要求时钟信号时延差要非常小, 否则就可能造成时序逻辑状态出错:因而明确FPGA设计中决定系统时钟的因素,尽 ...
- FPGA中竞争冒险问题的研究
什么是竞争冒险? 1 引言 现场可编程门阵列(FPGA)在结构上由逻辑功能块排列为阵列,并由可编程的内部连线连接这些功能块,来实现一定的逻辑功能. FPGA可以替代其他PLD或者各种中小规模数 ...
- FPGA中的delay与latency
delay和latency都有延迟的意义,在FPGA中二者又有具体的区别. latency出现在时序逻辑电路中,表示数据从输入到输出有效经过的时间,通常以时钟周期为单位. delay出现在组合逻辑电路 ...
- FPGA中的INOUT接口和高阻态
除了输入输出端口,FPGA中还有另一种端口叫做inout端口.如果需要进行全双工通信,是需要两条信道的,也就是说需要使用两个FPGA管脚和外部器件连接.但是,有时候半双工通信就能满足我们的要求,理论上 ...
- FPGA中的时序分析(四)
常用约束语句说明 关于Fmax 上述是实现Fmax的计算公式,clock skew delay的计算如下图, 就是两个时钟的差值.到头来,影响Fmax的值的大小就是组合逻辑,而Fmax是针对 ...
- FPGA中浮点运算实现方法——定标
有些FPGA中是不能直接对浮点数进行操作的,仅仅能採用定点数进行数值运算.对于FPGA而言,參与数学运算的书就是16位的整型数,但假设数学运算中出现小数怎么办呢?要知道,FPGA对小数是无能为力的,一 ...
- FPGA中改善时序性能的方法_advanced FPGA design
本文内容摘自<advanced FPGA design>对应中文版是 <高级FPGA设计,结构,实现,和优化>第一章中的内容 FPGA中改善时序,我相信也是大家最关心的话题之一 ...
- Altera FPGA中的pin进一步说明
最近END china上的大神阿昏豆发表了博文 <FPGA研发之道(25)-管脚>,刚好今天拿到了新书<深入理解Altera FPGA应用设计>第一章开篇就讲pin.这里就两者 ...
- QuartusII 中采用门级原语
QuartusII 中采用门级原语 默认的是前面第一个 为output 后面所有信号为输入 图中的工程实现的是 一个二选一多路选择器
随机推荐
- ASC和字符转化,整形和String转化
public class ASCTest { public static void main(String[] args) { /* 区别这两种 String s = "123"; ...
- scjp考试准备 - 10 - 类型转换
题目为如下代码的执行结果: class Building{} public class Barn extends Building{ public static void main(String[] ...
- git生成和检查秘钥操作
查看本地是否有git config的配置: git config --list 设置用户名和邮箱: $git config --global user.email "tanteng@gmai ...
- python学习笔记(pict+requests+xml)
博主尝试了下更换python版本 之前很多脚本改正运行错误后.还是不能正常运行 忙会了半天还是没有成功 只好还原版本 所以下面的代码还没实际运行成功.先记录下 #!/usr/bin/env pytho ...
- Kinect 2.0 默认姿势的中文意思
RaiseRightHand/RaiseLeftHand 抬起左右手高于肩膀一秒Psi 举起双手高于肩膀一秒Tpose T姿势Stop 右手放下,左手缓慢贴住身侧(腰以下)或者左右调换Wave 挥手 ...
- Prism初研究之使用Prism实现WPF的MVVM模式
转自:http://www.cnblogs.com/qianzi067/p/5804880.html
- serialVersionUID 作用
一个类在序列化时,用来记录当前类的版本号.在反序列化时,首先获取当前类的版本号,不一致则报异常. 若版本号一致,但两个类不一致.写肯定全部写进去.但提取时 类若没有这个字段,则不提取.若提取类多个字段 ...
- OC-存档
Δ一. .plist文件 .plist文件是一个属性字典数组的一个文件: .plist文件可以用来存储:字典.数组.字符串等对象数据,可以混搭存储 [注]iOS开发中,plist文件一般用于app ...
- cocos2dx lua 热加载实现
[Q]原创 2015-08-30 在公司使用cocos2dx+lua 开发游戏有一段时间了,刚好lua的热更新交给我负责.以前热更新的lua脚本大部分都是在下载之后加载.最近策划又有新需求,需要在游戏 ...
- 请求URL中有body怎么使用jmeter进行接口测试
业务场景: 微信内免费领取激活码 1.点击“免费领取”按钮调取的接口 2.URL如下 https://yxyapi2.drcuiyutao.com/yxy-api-gateway/api/json/v ...