在谈到多扇出问题之前,先了解几个相关的信息,也可以当成是名词解释。

扇入、扇出系数

扇入系数是指门电路允许的输入端数目。一般门电路的扇入系数为1—5,最多不超过8。扇出系数是指一个门的输出端所驱动同类型门的个数,或称负载能力。一般门电路的扇出系数为8,驱动器的扇出系数可达25。扇出系数体现了门电路的负载能力。

灌电流、拉电流

当逻辑门输出端是低电平时,灌入逻辑门的电流称为灌电流,灌电流越大,输出端的低电平就越高。当逻辑门输出端是高电平时,逻辑门输出端的电流是从逻辑门中流出,这个电流称为拉电流。简单的理解就是逻辑门的输入(灌电流)和输出电流(拉电流)。

上、下拉电阻

上拉电阻就是将不确定的信号通过一个电阻嵌位在高电平(即拉电流),来增加高电平输出时的驱动能力,以解决总线驱动能力不足时提供电流;下拉电阻就是将不确定的信号通过一个电阻嵌位在低电平,是用来吸收电流的,也就是灌电流。

负载效应

当输出负载大于它的扇出能力的时候,就会有如下的效应:
  1、输出低态时,输出电压VOL可能高于VOLmax。
  2、输出高态时,输出电压VOH可能高于VOLmin。
  3、输出的传播延迟可能大于规格说明的延迟值。
  4、输出的上升和下降时间可能大于规格说明的延迟值。
  5、器件工作温度可能升高,从而降低其可靠性,最终引起器件失效。

前面已经介绍了什么是扇出和扇出系数。多扇出问题,通常是指用一个节点驱动多个下级逻辑器件,此问题会严重影响FPGA布线的稳定性,设计的时候要多加注意,此时采用的是复制寄存器策略。
  举个例子: CLK为系统时钟,M为1MHz方波信号,由于M信号驱动的模块较多,所以M的扇出较多,为了减少扇出,用系统时钟采样,将M信号驱动7个D触发器,然后将7个D触发器的输出端分给7个模块,这样每个复制点(DUP0~DUP6)平均扇出变为原来的1/7,M的信号扇出变为7,这样就减少了每个信号的扇出,优化了逻辑,也提高了设计的整体性能。简而言之,就是将一路信号用D触发器和CLK将其分成两路信号,或者是更多路的信号,再让这些信号来驱动下面的各个模块。

如何判断是系统的问题是由于多扇出而导致的呢。我是这样判断的,因为我的模块是一个一个写,一块一块的调试的,所以在分开调试的时候没有出任何问题,当所有的综合在一起的时候,就出现了有一个模块的信号总是不正常,单独调试该模块的时候又正常,然而这两个模块之间又没有什么交互信号,所以,就把问题定位在这个共用信号的驱动能力上了,最终曾加了D触发器,解决了这个问题。
  另外经高手指点,还有一种方法是将这个频率信号放在CLK的管脚上,因为时钟管脚的驱动能力比一般的IO口要大一些,所以也就能够带动更多的逻辑门。
##门控时钟的问题
  最后添加一点关于门控时钟的问题。在编译的时候,系统会报警告,Found X node(s) in clock paths which may be acting as ripple and/or gated cloxks。这种情况是由于使用了门电路来产生时钟,一般处理这个警告的方式都会说:“如果是这样设计的,就不管这个警告了。”不过看了下面的一段文字也就能够理解为什么会有这样的警告了。如果想设计出更完美的产品,还是要考虑这个问题的。
  门控时钟指的是不用FPGA内部的全局时钟资源BUFG来控制触发器的时钟沿输入端而是采用组合逻辑和其它时序逻辑(如分频器)产生的信号作为触发器的时钟沿输入端。门控时钟容易带来时钟漂移、毛刺等,使得触发器误动作,通常,对于驱动的触发器数量较少的门控时钟,编译器可以自动将分布时钟缓冲器将其布线优化,但是对于驱动触发器较多的门控时钟,将会使布线不稳定,重者造成设计混乱。门控时中较多,也会使得整个设计的最大工作速度下降,降低产品的性能。
  对于门控时钟问题,通常的解决办法是将分频器做成与系统时钟宽度一个周期宽度的脉冲信号,所谓系统时钟就是用全局时钟资源BUFG驱动的高扇出、零漂移、零畸变的时钟资源,在FPGA内部的布线结构是树形结构。
将分频器的输出送入触发器的ce端,当系统时钟到来时,检测ce信号的有效性,当ce信号有效时,将触发器的输出改变,和分频器的作用完全一样,而且这样处理也使得布线更加优化。
  参考:http://blog.tianya.cn/blogger/post_read.asp?BlogID=4224308&PostID=41813272

在模块化设计中

模块的扇出是指模块的直属下层模块的个数,如图7.8所示。图7.8中,平均的扇出是2。一般认为,设计得好的系统平均扇出是3或4。
  
               图7.8模块的扇出

一个模块的扇出数过大或过小都不理想,过大比过小更严重。一般认为扇出的上限不超过7。扇出过大意味着管理模块过于复杂,需要控制和协调过多的下级。解决的办法是适当增加中间层次。

一个模块的扇入是指有多少个上级模块调用它。扇人越大,表示该模块被更多的上级模块共享。这当然是我们所希望的。但是不能为了获得高扇人而不惜代价,例如把彼此无关的功能凑在一起构成一个模块,虽然扇人数高了,但这样的模块内聚程度必然低。这是我们应避免的。

设计得好的系统,上层模块有较高的扇出,下层模块有较高的扇人。其结构图像清真寺的塔,上面尖,中间宽,下面小。

###1.门电路的扇入扇出

扇入系数,是指门电路允许的输入端数目。
  一般TTL电路的扇入系数 Nr为1~5,最多不超过8。若芯片输入端数多于实际要求的数目,可将芯片多余输入端接高电平(+5V)或接低电平(GND)。
  扇出系数,是指一个门的输出端所驱动同类型门的个数,或称负载能力。
  NO=IOLMAX/IILMAX,这是一个通俗的定义一般用在TTL电路的定义中。其中IOLMAX为最大允许灌电流,IILMAX是一个负载门灌入本级的电流。
  TTL电路的扇出系数Nc为8~10。
  CMOS电路的扇出系数Nc可达20~25。
  当然LVTTL和LVCMOS都可进一步验算获得。
  Nc表征了门电路的负载能力。
####1.TTL電路
TTL的验算是比较好弄的,TTL与TTL之间如下图所示:

由于本身晶体管的转换速度有限,因此对于TTL来说,扇入扇出系数无所谓低频和高频而言。
####2.CMOS
扇出系数实质上是根据频率有关的。

因此,扇出系数是根据输出波形识别的时序而定的,随着频率的增加,扇出系数越来越小。
  这是因为理论上来说Rdson和Ci都是确定的,根据充放电过程
  注意Rdson的能力计算可参考前面的博文

  通过计算时间常数,我们可测算
  1.10%=>90%的时间,并确认高电平的时间。
  2.90%=>10%的时间,并确认低电平的时间。
  如果这两个都符合,则可接受。
  当然MOS管的输出电容和PCB板的寄生电感和电容,这些因素都会影响实际的效果。

FPGA Fanout-Fanin(扇入扇出)相关推荐

  1. 关于 FPGA 内部信号扇入扇出

    转自https://www.cnblogs.com/dxs959229640/p/3870189.html 关于 FPGA 内部信号扇入扇出 扇入.扇出系数 扇入系数是指门电路允许的输入端数目.一般门 ...

  2. 【转】关于 FPGA 内部信号扇入扇出

    扇入.扇出系数 扇入系数是指门电路允许的输入端数目.一般门电路的扇入系数为1-5,最多不超过8.扇出系数是指一个门的输出端所驱动同类型门的个数,或称负载能力.一般门电路的扇出系数为8,驱动器的扇出系数 ...

  3. FPGA入门(三)扇入扇出,逻辑延迟和线延迟,设计主频

    目录 扇入扇出 逻辑延迟,线延迟,逻辑层级 FPGA的内部结构 FPGA最大可以跑到的频率 扇入扇出 http://xilinx.eetrend.com/d6-xilinx/article/2017- ...

  4. c语言中的扇入与扇出题目,功能单元的最大扇入扇出工具分析.doc

    功能单元的最大扇入扇出工具分析 文档名称:功能单元最大扇入扇出工具分析 作 者: 日 期: 1. 概念 由于度量的目标是C源代码,所以"功能单元的最大扇入扇出"的含义如下: 功能单 ...

  5. c语言中的扇入与扇出题目,功能单元最大扇入扇出工具分析.doc

    : printf() 7.输出结果 2.4 核心代码抽取 通过此工具的源代码,可以获取匹配函数定义语句的功能,函数调用关系的功能,从来实现fan-in,fan-out度量. 3 C and C++ C ...

  6. 软件工程考试选择题:模块的扇入扇出 深度宽度

    ABCD A常作为总体设计工具的是HIPO图 B 顶层扇出大,中间扇出小,扇出指一个模块调用的模块数. C组合是一种特殊形式的聚合关系 D状态图 扇入扇出 启发规则 一.改进软件结构提高模块独立性   ...

  7. 【无标题】如何解决多芯光纤的扇入扇出

    多芯光纤是一根光纤有多个纤芯,是和"单芯光纤"相对应的一个概念. 常用的单芯光纤,有多模和单模. 而多芯光纤可以有xnn个纤芯,但它是一根光纤,传输的信号则可以为独立为xn个通道, ...

  8. 扇入Fan-in和扇出Fan-out

    什么是扇入和扇出? 在软件设计中,扇入和扇出的概念是指应用程序模块之间的层次调用情况. 按照结构化设计方法,一个应用程序是由多个功能相对独立的模块所组成. 扇入:是指直接调用该模块的上级模块的个数.扇 ...

  9. 软件设计-扇入(fan-in)/扇出(fan-out)

    模块的扇出 在模块化设计中模块的扇出是指模块的直属下层模块的个数, 一个模块的扇出数过大或过小都不理想,过大比过小更严重.一般认为扇出的上限不超过7.扇出过大意味着管理模块过于复杂,需要控制和协调过多 ...

最新文章

  1. matlab出现无限循环警告,[求助] 关于matlab无限循环的问题
  2. 如何才能避免聚会尬聊
  3. 自己移植Asterisk1.8到OpenWRT下
  4. 计算机暑期实践相关内容,计算机暑假社会实践报告5000范文
  5. redis 转义字符_一份完整的阿里云 Redis 开发规范,值得收藏!
  6. UDP与TCP对比,TCP保证可靠性传输的详细说明
  7. 通过prompt方法增强开放领域问答模型
  8. kafka逻辑示意图以及命令
  9. 路由器启用SNMP服务
  10. AI速查表:神经网络、机器学习、深度学习与数据科学一览
  11. zookeeper中ExpiryQueue详解
  12. 转 Kafka入门经典教程
  13. Maven系列第三讲 详解Maven解决依赖问题
  14. 鸿蒙 background_element设置渐变色
  15. maya如何查看资源大纲_怎样才算入门了Maya
  16. TI-C2000-捕获模块ECAP应用-以欧姆龙E6B2-CWZ6C测速编码器为例
  17. Python标准库collections库:超好用的counter计数器,不接受反驳!
  18. js 获取所有被选中复选框的值
  19. intval()和int()
  20. 二层基本知识点(二)

热门文章

  1. 网站优化的九大技巧,助力您的SEO策略
  2. matlab画服装版,设计师必备款式图干货|如何绘制一张完美的款式图?看完这些你就懂了...
  3. python结构体排序
  4. P7448 [Ynoi2007] rdiq
  5. Java 实现 Redis集群操作
  6. 基于Android的课堂评分系统
  7. 熟悉linux操作系统的使用实验报告,Linux系统的熟悉与使用操作系统实验报告
  8. safari调试iPhone app web页面
  9. 使用SQL2008建立数据库,并在网页上实现对数据库的访问
  10. 永擎ITX主板使用openbmc