关于 FPGA 内部信号扇入扇出

扇入、扇出系数

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

灌电流、拉电流

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

上、下拉电阻

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

负载效应

当输出负载大于它的扇出能力的时候,就会有如下的效应:

1、输出低态时,输出电压VOL可能高于VOLmax

2、输出高态时,输出电压VOH可能高于VOLmin

3、输出的传播延迟可能大于规格说明的延迟值。

4、输出的上升和下降时间可能大于规格说明的延迟值。

5、器件工作温度可能升高,从而降低其可靠性,最终引起器件失效。

1.原意:  
The number of circuits that can be fed input signals from an output device.  
扇出,输出可从输出设备输入信号的电路的数量 。

扇出(fan-out)是定义单个逻辑门能够驱动的数字信号输入最大量的术语。大多数TTL逻辑门能够为10个其他数字门或驱动器提供信号。因而,一个典型的TTL逻辑门有10个扇出信号。 
  在一些数字系统中,必须有一个单一的TTL逻辑门来驱动10个以上的其他门或驱动器。这种情况下,被称为缓冲器的驱动器可以用在TTL逻辑门与它必须驱动的多重驱动器之间。这种类型的缓冲器有25至30个扇出信号。逻辑反向器(也被称为非门)在大多数数字电路中能够辅助这一功能。

2.在模块化设计中

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

图7.8模块的扇出

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

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

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

    

多扇出问题,通常是指用一个节点驱动多个下级逻辑器件,此问题会严重影响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信号有效时,将触发器的输出改变,和分频器的作用完全一样,而且这样处理也使得布线更加优化。

  

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 内部信号扇入扇出,布布扣,bubuko.com

时间: 2024-10-22 00:45:03

关于 FPGA 内部信号扇入扇出的相关文章

FPGA优化之高扇出

Fanout,即扇出,模块直接调用的下级模块的个数,如果这个数值过大的话,在FPGA直接表现为net delay较大,不利于时序收敛.因此,在写代码时应尽量避免高扇出的情况.但是,在某些特殊情况下,受到整体结构设计的需要或者无法修改代码的限制,则需要通过其它优化手段解决高扇出带来的问题.以下就介绍三个这样的方法: 首先来看下面这个实例,如图1所示为转置型FIR滤波器中的关键路径时序报告,在DSP in FPGA的FIR专题中有介绍转置型结构FIR滤波器输入数据的扇出较大,在图1中所示为11,因此

FPGA中信号的跨时钟域处理模板(一)

在做项目的时,我们经常会使用到多个时钟.每一个时钟在FPGA内部都会形成一个时钟域,如果一个时钟域中要用到另外一个时钟域的信号,也就形成了跨时钟域的操作,这时候要格外小心. 一.实际使用背景       假设在项目中需要在clk_b时钟域中用到用到来自clk_a中的信号.那么此信号就需要从clk_a时钟域跨越到clk_b中因此我们要建立一个同步计数器,该设计器从clk_a 中获取信号,然后再clk_b中创建一个新的信号.并从作为输出.模型如下: 在此设计中.我们假设输入的信号与clk_a和clk

【转】FPGA内部小数计算

FPGA内部计算小数 [转载] 谓定点小数,就是小数点的位置是固定的.我们是要用整数来表示定点小数,由于小数点的位置是固定的,所以就没有必要储存它(如果储存了小数点的位置,那就是浮点数了).既然没有储存小数点的位置,那么计算机当然就不知道小数点的位置,所以这个小数点的位置是我们写程序的人自己需要牢记的. 先以10进制为例.如果我们能够计算12+34=46的话,当然也就能够计算1.2+3.4 或者 0.12+0.34了.所以定点小数的加减法和整数的相同,并且和小数点的位置无关.乘法就不同了. 12

FPGA内部动态可重置PLL讲解(二)

对于全局时钟的管理,涉及到关于亚稳态的知识,大家可以上网搜索相关资料,这里不再赘述.亚稳态最简单的理解形式是无法判断是处于高电平状态还是处于低电平状态,这样会导致整个系统不稳定,会出现逻辑上的错误. 任何对时钟的管理形式,都是最大限度避免亚稳态情况的出现,从而提高MTBF(平均无故障时间). 对于常用的异步复位形式(之前博客有提及到),如下: always @(posedge clk or negedge rst_n) if(!rst_n) begin ...... ...... end els

FPGA中信号的跨时钟域处理模板(三)

一.背景  如果clk_a时钟域中的某个任务需要在clk_b时钟域中来完成.则可以采用以下设计:通过框图可知人任务的跨时钟域的处理相当于两个买冲刺你好的跨时钟域的处理.在两个标志信号跨时钟域完成后,在此期间相关任务的跨时钟域. 这只是其中的一种方法. 二.模板 模块 TaskAck_CrossDomain( 输入 clkA, 输入 TaskStart_clkA, 输出 TaskBusy_clkA,TaskDone_clkA, 输入 clkB, 输出 TaskStart_clkB,TaskBusy

柯西恒等式 FPGA中信号的跨时钟域处理模板(四)

要将数据总线(2位或更多位宽度)从一个时钟域移到另一个时钟域,我们有几种处理方法.一下有几种方法可以采取. 1.格雷码:如果数据总线是单调计数器(即仅递增或递减),我们可以将其转换为格雷码,该格雷码具有跨时钟域的能力(在某些定时条件下)   2.数据冻结:如果数据总线是非单调的,则使用标志向其他域发出信号以捕获值(在源时钟域中冻结该值). 3.数据突发:如果数据总线具有许多需要跨越时钟域的连续值,请使用异步FIFO,在其中您从源时钟域中推送值,并从另一个域中读取值. 一.第3种方法为例    

FPGA内部RAM的初始化

Altera的RAM初始化文件格式是mif和hex. QuartusII自带的RAM初始化工具很方便产生初始化文件. Xilinx的RAM初始化文件格式是coe, 在vivado中软件会将coe文件变成mif 文件.Xilinx和Altera的mif文件格式并不相同.Xilinx的mif文件才是最终有效的初始化文件.可以用Memory Editor编辑工具产生coe文件,具体位置在Tools > Memory Editor.也可以在 $XILINX/coregen/data目录下发现参考文件.

09A-独立按键消抖实验01——小梅哥FPGA设计思想与验证方法视频教程配套文档

芯航线--普利斯队长精心奉献 ? 实验目的: 1.复习状态机的设计思想并以此为基础实现按键消抖 2.单bit异步信号同步化以及边沿检测 3.在激励文件中学会使用随机数发生函数$random 4.仿真模型的概念 实验平台:芯航线FPGA核心板 实验原理: ????按键在电子设计中使用的最多,从复位到控制设置均可以看到其身影.现在按键的功能也种类也越来越多,例如多向按键.自锁按键.薄膜按键等.普通按键其硬件示意图如图9-1所示. 图9-1 按键示意图 芯航线开发板所载的为两脚贴片按键,分别位于开发板

基于ARM的SoC设计入门[转]

原文:基于ARM的SoC设计入门 我们跳过所有对ARM介绍性的描述,直接进入工程师们最关心的问题.要设计一个基于ARM的SoC,我们首先要了解一个基于ARM的SoC的结构.图1是一个典型的SoC的结构: 图1从图1我们可以了解这个的SoC的基本构成: ARM core:ARM966E AMBA 总线:AHB+APB 外设IP(Peripheral IPs):VIC(Vector Interrupt Controller), DMA, UART, RTC, SSP, WDT…… Memory bl