竞争冒险学习笔记

上一篇 / 下一篇  2018-07-29 08:36:34

一、

竞争: 在组合逻辑电路中,某个输入变量通过两条或两条以上的途径传到输出端,由于每条途径延迟时间不同,到达输出门的时间就有先有后,这种现象称为竞争。把不会产生错误输出的竞争的现象称为非临界竞争。把产生暂时性的或永久性错误输出的竞争现象称为临界竞争。

冒险:是指数字电路中某个瞬间出现了非预期信号的现象。“1”冒险是由一个变量的原变量和反变量同时加到与门输入端造成的。“0”冒险是由一个变量的原变量和反变量同时加到一个或门输入端造成的。

判别方法:

1代数法:逻辑函数表达式中,若某个变量同时以原变量和反变量两种形式出现,就具备了竞争条件。去掉其它变量,留下有竞争能力的变量,如果表达式为:F=A+/A,就会产生“0”冒险;F=A*/A,就会产生“1”冒险。

2卡诺图法: 只要在卡诺图中存在两个相切但不相交的圈(“0”冒险是1构成的圈,“1”冒险是0构成的圈),就会产生冒险。

消除方法:

1修改设计法: 1代数法,在产生冒险现象的逻辑表达式上,加上冗余项或乘上冗余因子;2卡诺图法,将卡诺图中相切的圈用一个多余的圈连接起来。

2选通法: 在电路中加入选通信号,在输出信号稳定后,选通允许输出,从而产生正确输出。

滤出法: 由于冒险脉冲是一个非常窄的脉冲,一二可以在输出端接一个几百微法的电容,,将其滤出掉。

二、

冒险是由变量的竞争引起的。冒险又分为逻辑冒险和功能冒险。

 

逻辑冒险的判断方法有两种:

1. 代数法:在逻辑函数表达式中,若某个变量同时以原变量和反变量两种形式出现,就具备了竞争条件。去掉其余变量(也就是将其余变量取固定值0或1),留下有竞争能力的变量,如果表达式为 F=A+A~(因为上横杠打不出来,故用A~表示A的反变量,下同),就会产生0型冒险(F应该为1而实际却为0);如果表达式为 F=AA~,就会产生1型冒险。

—例—:表达式 F=AB+CB~,当A=C=1时,F=B+B~,在B发生跳变时,可能出现0型冒险。

2. 卡诺图法:将函数填入卡诺图,按照函数表达式的形式圈好卡诺圈。

   A\BC 00 01 11 10

   0 0 0 0 1

   1 0 1 1 1

     F=AC+BC~的卡诺图(将101和111的1圈一起,010和110的1圈一起,这里不好表示,自己画在纸上)

通过观察发现,这两个卡诺圈相切。则函数在相切处两值间跳变时发生逻辑冒险。(前提是这两个卡诺圈没有被其他卡诺圈包围)

 

功能冒险的判断:

功能冒险是当多个输入信号同时变化的瞬间,由于变化快慢不同而引起的冒险。

卡诺图法:依然用上面的卡诺图,按同样函数圈好。F=AC+BC~中,ABC从111变为010时,A和C两个变量同时发生了跳变,若A先变化,则ABC的取值出现了过渡态011,由卡诺图可以知道此时函数输出为0,然而ABC在变化的前后的稳定状态输出值为1,此时就出现了0型冒险。这种由过渡态引起的冒险是由于电路的功能所致,因此成为功能冒险。

 

综合逻辑冒险和功能冒险:

-例- :F=CD+BD~+AC~,自己画及圈卡诺图,可以发现信号ABCD从0100变化到1101可能存在0型功能冒险,不存在逻辑冒险。从0111变化到1110不存在功能冒险,而可能存在逻辑冒险。

 

 

 

三、FPGA器件的竞争与冒险现象及消除方法

要:现场可编程门阵列(FPGA)由于其内部构成,容易引起竞争冒险现象,从而使电路工作的稳定性大受影响,电路也容易产生误动作,以致产生意想不到的后果。本文详细介绍了冒险现象的产生,并结合实例介绍了消除竞争冒险现象的各种方法。这些方法主要通过改变设计,破坏毛刺产生的条件来减少毛刺的发生。他能够使FPGA设计中毛刺的出现几率减到最小,大大减少了逻辑错误,加强了电路工作的稳定性,有效地抑制了干扰,使设计也更加优化、合理。

  在数字电路设计中,经常需要考虑竞争和冒险现象带来的问题。尤其是采用FPGA器件后,这个问题尤为明显,为了改善系统性能,加强系统的稳定性,有效地抑制干扰,使得设计更加优化、合理,本文将对竞争与冒险带来的问题与消除方法加以详细讨论。

1 FPGA中的冒险现象

  在使用分立元件设计数字系统时,由于PCB走线时存在分布电感和电容,所以几纳秒的毛刺将被自然滤除,而在PLD内部无分布电感和电容,所以在PLD/FPGA设计中,竞争和冒险问题将变得尤为突出,电路工作的稳定性也大受影响。

  由于信号在FPGA器件内部通过连线和逻辑单元时都有一定的延时。延时的大小与连线的长短和逻辑单元的数目有关,同时还受器件的制造工艺、工作电压、温度等条件的影响。另外信号高低电平的转换也需要一定的过渡时间。所以多路信号的电平值发生变化时,在信号变化的瞬间,组合逻辑的输出有先后顺序,并不是同时变化,往往会出现一些不正确的尖峰信号,这些尖峰信号称为“毛刺”。如果一个组合逻辑电路中有“毛刺“出现,就说明该电路存在“冒险”。

  由于无法保证所有连线的长度一致,所以即使4个输入信号在输入端同时变化,但经过PLD内部的走线到达或门的时间也是不一样的,必然产生毛刺。概括来说,只要输入信号同时变化,经过内部走线后,组合逻辑必将产生毛刺。如将他们的输出直接连接到时钟输入端、清零或置位端口,就可能会导致严重的后果。所以在设计电路时必须检查设计中所有时钟、清零和置位等对毛刺十分敏感的输入端口,确保输入不会含有任何毛刺。

2 毛刺的消除

  可以通过改变设计,破坏毛刺产生的条件来减少毛刺的发生。毛刺并不是对所有的输入都有危害,对于D触发器的D输入端,只要毛刺不出现在时钟的上升沿并且不满足数据的建立和保持时间,就不会对系统造成危害,因此可认为D触发器的D输入端对毛刺不敏感。根据这个特性,应当在系统中尽可能采用同步电路,因为同步电路信号的变化都发生在时钟沿,只要毛刺不出现在时钟的沿口并且不满足数据的建立和保持时间,就不会对系统造成危害。由于毛刺很短,多为几纳秒,基本上都不可能满足数据的建立和保持时间。

  这种方法可以大大减少毛刺,但他并不能完全消除毛刺,必须手工修改电路来去除毛刺。一般,冒险出现在信号发生电平转换的时刻,即在输出信号的建立时间内会发生冒险,而在输出信号的保持时间内是不会有毛刺信号出现的。如果在输出信号的保持时间内对其进行“采样”,就可以消除毛刺信号的影响。

  “采样”可通过两种方法实现:一种是在输出信号的保持时间内,用一定宽度的高电平脉冲与输出信号做逻辑“与”运算,由此获取输出信号的电平值。

TEST端引出的是一个带有毛刺的信号,由于有采样脉冲SAMPLE的输入,在SAMPLE为高电平前,输出端与门关闭,OUT端没有输出。从前面的分析看出,由于毛刺信号主要存在于输出信号的建立时间内,所以可通过控制SAMPLE信号在TEST信号建立时间后再开放与门的方法来消除毛刺。从图4所示仿真图中可以看出OUT端得到的不带毛刺的信号。

上述方法的一个缺点是必须人为地保证SAMPLE信号必须在合适的时间中产生,否则仍不能得到满意的结果。另一种实现方法是可利用D触发器的D输入端对毛刺信号不敏感的特点,在输出信号的保持时间内,用D触发器读取组合逻辑的输出信号,这种方法类似于将异步电路转化为同步电路。图5给出了应用这种方法的电路实例。

从以上分析看出,通过上述的电路处理可以有效减少毛刺的产生,从而减少逻辑错误,提高芯片工作的稳定性。

3 结语

FPGA在数字电路设计中虽功能强大,修改灵活,但内部易产生冒险而出现工作不稳定情况,采取以上措施,可有效减少毛刺的产生,从而减少逻辑错误,大大提高芯片工作的稳定性。

 

四、

(1)竞争就是同一信号及其非之间的竞争,他们之间的延时导致竞争。

(2)冒险(hazard)就是毛刺。

l 逻辑冒险源于竞争,是指A和非A同时到达与门或门,容易导致由于延时产生的瞬时脉冲。

l 功能冒险多个信号同时变化。

 

改善方法:

(1)冗余:让A和非A还有别的项同时到达与门或门。

(2)选通:稳定后输出

(3)滤除:模电,滤掉窄脉冲。

TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar