请教一个关于数字电路竞争冒险的问题
各位大大,
请教一下,如果一个D触发器的输出端(Q)与其时钟端(CK)做逻辑,会不会容易产生竞争冒险?
例如:
always @ (posedge ck or negedge rstn)
if ( !rstn )
Q <= 1'b0;
else
Q <= D;
assign Y = Q | CK;
因为帖子是在我个人电脑发的,没有任何电路的画图工具,只能写成代码形式发上,请各位大大知道的说下,谢谢。
自己顶个,求解答。
CK总是比Q更快到达或门,那么应该不会产生竞争冒险!
满足clock gating check就不会
谢谢,我也觉得不会有。但是感觉很不靠谱。
谢谢,这个是模拟电路的同事请教的问题,不会经过数字综合的。
推荐一个器件手册, ICS8543, 带时钟同步使能的器件非常多, 许多高速的数字电路都有这个功能,里面就有时钟信号的运算, 实际在FPGA里完全可以自己实现两个不同频率的时钟的无毛刺切换电路,但一般不这样做,并不是不能,而是器件里有现成的,当然,自己做的会带入大的时钟skew, 时序分析会有点麻烦
个人认为不会的,输入同时跳变才会导致冒险竞争,这两个输入显然独立嘛!
嗯,谢谢
我也这么觉得,哈哈
这个电路一般是不会产生竞争冒险的,原因是Q和CK在常规编译后有一个确定的延迟关系,一般非常小,但并不是绝对不会,如果Tco 与 Tckh非常接近时,也可能产生时序冒险。我想小编的问题主要问的是能不能设计出不存在时许竞争冒险的这个时钟控制电路吧
。特意还去baidu了一下啥叫竞争冒险。根据那个定义,当然是不会有。
应该担心的是会不会出glitch,建议flop改成负沿触发。
如果时序电路自己都时序都可能存在竞争冒险,那时序电路就失去了改善时序的作用
这是一个基于上升沿触发,使用或门的Latch-Free的标准门控电路
嗯,谢谢
寄存器上升沿触发,Q|Y不会有问题。下降沿触发,Q&Y不会有问题
个人理解
对于Y=Q|CK,应该关注的是或门的两个输入(Q与CK)是否存在setup/hold的违例可能。没有setup/hold违例即保证没有glitch
assign Y = Q | CK;这句有问题,结果可能全位1或者等于Q
顶
