数字逻辑电路的ASIC设计
第2节 同步电路的不足
更新于2008-08-29 13:24:29

1.2.1锁存器的错误运行——竞争

ASIC的内部锁存器如后所述,基于各种理由,基本上都可以转变成同步锁存器。
使用可编程逻辑器件(PLD:Programmable Logic Device)时,不用考虑诸多问题,比如内部锁存器的逻辑门延时,基于布线的时钟偏差或是多处时间差。因为使用同一时钟驱动,所以可以真正的同步运行。
但是,由逻辑门等配置的ASIC,其内部锁存器数量达到了数百个。所以,如图1.11(a)所示,并不能断言所有的内部锁存器都同步加入相同的时钟。
有多种原因会造成各个锁存器中的时钟错乱分布,这被称为时钟偏差(clock skew)。比如制作脉冲树的时候,由于负荷的不同,或是逻辑门本身延迟时间的不规则分布,造成逻辑门延迟时间的不同。所以,内部锁存器如图1.12所示,表面看来是同步的,实际上只是基本在同一时间陆续运行的同步锁存器组。


图1.11ASIC内部锁存器就是几乎同时动作的锁存器组

续图1.11ASIC内部锁存器就是几乎同时动作的锁存器组

图1.12ASIC中出现的时钟偏差


锁存器陆续运行,其逻辑电路如图1.13所示,容易引起运行误差。换句话说,当A锁存器的脉冲比B锁存器运行快的时候,那么从A运送数据到B的时候就会产生误差。B试图解读A的数据的一瞬间,A的内容发生改变,所以B的运行就产生误差。这称作竞争,或是内禀灾害机制。同理,从B到A也存在问题。


图1.13时钟偏差成为逻辑电路设计的制约


1.2.2锁存器的设置时间和保持时间

上升沿边缘触发锁存器利用时钟的上升沿把数据输入锁存器。这时,为了防止运行误差,在时钟上升沿的周边,必须保证一个数据不会发生变化的领域。这叫做设置时间和保持时间(参见图1.14)。


图1.14锁存器的设置时间与保持时间


设置(setup)时间是指时钟上升沿之前数据不能发生变化的领域。保持(hold)时间是指时钟上升沿之后数据不能发生变化的领域。
反复操作之后,因为同步电路用同一个时钟运行,所以输出也会同时发生变化。如果有时钟偏差,就存在出现偏差之前发生变化和随后发生变化的锁存器,前者的输出会被后者的保持时间吞掉。把由于时钟偏差产生的运行误差叫做竞争。
双锁存器使用两个双稳态锁存器,如图1.15所示,一旦驱动不重叠锁存器,就可以发现会有设置时间和保持时间的问题。究其原因,数据输入的任务是由驱动主锁存器的主时钟完成的,因此设置时间和保持时间也和主时钟有关。


图1.15双锁存器的效果


过了保持时间以后,锁存器的输出就依靠从时钟了。虽然锁存器的输出产生了变化,但因为已经过了其他锁存器的保持时间,所以不会引起运行误差。


1.2.3能有效防止竞争的双锁存器结构

如上所述,即使在LSI的内部也不能保证时钟的同时性,所以使用ASIC时,全部是双锁存器结构,可以防止内禀灾害的发生。
如图1.15所示,双锁存器的构造使用了一种特殊的脉冲,它使主锁存器和从锁存器不能同时起效。主时钟和从时钟形成时钟差,比预想的相差更远。我们把这个称为不重叠时钟。
考虑最糟糕的情况,主时钟和从时钟再加上额外的时钟差。即使如此,两个锁存器之间也确实要传输数据。这样一来,数据的设置时间和保持时间就和主锁存器有关,而实际上输出的变化又在于从锁存器。所以实际上,锁存器的设置时间和保持时间就处在危险地带之外了,可以安全运行。
但是,在实际中,双锁存器构造也并不能解决所有的问题。这点一直让制造者甚为苦恼。大部分ASIC的订购要求,把非同步式TTL电路原样ASIC化。而后,又为ASIC的试验苦恼不已。解决这个矛盾的方法如下:
①使用TTL的设计者容易操作,而且较自由灵活的不完全同步式,但是,设计者也有一定的难度,试验也较难设计。
②用完全同步式,较容易设计试验。
本书以第二种完全同步式为重点叙述设计方法。


1.2.4亚稳状态

锁存器有设置时间和保持时间,要求时钟上升沿的前后数据静止不变。但是,如图1.16所示,在外部的非同步信号介入的情况下,即使是同步电路也不能保证这项条件。


图1.16亚稳态的发生与对策


介于设置时间和保持时间之间有一个危险地带,如图1.17所示,一旦输入数据有所变化,锁存器就发生异常运行,这称为亚稳状态。此时出现被称作矮脉冲的短脉波,锁存器反应异常变慢,严重的时候会发生震动。
这个所谓的亚稳异常状态,自1952年的ENIAC的时代开始已为人所知。甚至出现了这样的书面记录“Lubkin曾放入同步用锁存器,防止误差运行”。
亚稳状态是一种激励状态,所以可用不确定性原理计算出它的存在概率。不论是TTL,PLD,FPGA还是逻辑门配置,都有可能发生亚稳故障。各公司公布了MTBF(Mean Time Before Future)的数据。
所以,就处理外部信号的锁存器来说,有必要把亚稳状态考虑进去,计算等待时间。这也是设计ASIC的定律。但是,有些冒险家经常不计入这个等待时间。他们通常认为亚稳状态正如“飞来横祸”一般少见,一种锁存器执行的延时大约5ns大小。如果那个时候电路的输出方面没有致命错误的话,就可以忽视亚稳状态。结果,输出不再是完全的同步时钟,时常会发生长度的改变。在体会到非正常状态带来的不便后,有时也能确保日常的处理速度。


图1.17亚稳状态产生的异常运作


标准装置的亚稳状态
下面,参照各提供市售IC的公司的数据库介绍标准装置的亚稳状态。
TI公司
在《Advanced CMOS Logic Designers Handbook》一书中,关于亚稳状态是这样叙述的:“一旦形成亚稳状态,短时间内,锁存器和亚稳态对峙一阵。但是,过后静下来一看,就看不见错误了。如果想得到MTBF,就只好牺牲系统的性能,沉默等待了”(参见图1.A)。
这种考虑各个公司都一样,要使MTBF达到10年的概率,现在通用IC中74AC系列是18ns,74ACT系列是21ns,74HC系列是100ns,而在通常自己设计的ASIC中,可能延迟会是这些通用IC的10倍。
Lattice公司
《GAL Data books》中记述了亚稳状态的测定方法和输出线形图。系统脉冲如果是10MHz则可以正常运行,如果是20MHz就比较危险,在此规模之上就几乎不能正常运行。
图1.17所示为由GAL的亚稳状态引起的异常运行波形。


图1.A德克萨斯仪器公司器件的亚稳态特性


XILINX公司
在《The Programmable Logic Data Book》中有Rube Goldberg先生所著的简单明了的设计导言,其中有关于亚稳状态的记述:“要留意亚稳状态,但是也不要太过在意。亚稳状态耗费10ns,这个10ns相当于MTBF的十万年。”
因为表达得简单明了,所以只好以此为依据(参见图1.B)。


图1.BLCA的器件亚稳态特性


QUICK LOGIC公司
作为METASTABILITY REPORT,只记述了结果。所描述的电路要确保MTBF达到10年的指标,因而指定了4.9ns的等待时间。
在这个报告里,并没有如此这般地比较XILINX和ACTEL,只是可以看出QUICK LOGIC的自信。4.9ns对于逻辑门配置来说是个理想的数字。
CYPRESS公司
详细说明了亚稳状态的理论:“所有的装置都会发生亚稳状态,所以如果不适当论述亚稳状态,就是不负责任的”。
如果把MTBF设定为10年,则PALC22V10D7需要10.8ns,CY7335100需要5.2ns的等待时间。

 

网友留言