想问大家一个延时的问题
时间:10-02
整理:3721RD
点击:
关于assign的,举个例子 assign a=(b)?c:1'bz;我将c和a信号加入signaltap对比,发现a比c延后了一个周期,当然signaltap是边沿抓取有可能不准,然后我就将时钟频率调整到3倍和4倍,发现延迟也上升到3倍和4倍,所以说,a确实比c延后了一个周期,我的时钟是133mhz。
还有一个问题,我写了assign a=(b)?{c,e}:{d,e}:结果综合出来,直接把我的那个e给优化掉了,为何会优化掉呢?我的e信号在后面是被使用的,在a中,e信号也是被使用的,也是有变化的,综合器为何会把它优化掉。
还有一个问题,我写了assign a=(b)?{c,e}:{d,e}:结果综合出来,直接把我的那个e给优化掉了,为何会优化掉呢?我的e信号在后面是被使用的,在a中,e信号也是被使用的,也是有变化的,综合器为何会把它优化掉。
1. 如果要精确周期延迟,最好用时钟锁存
2. a也是个组合逻辑,e不受b影响,看来是直接穿过a作用于后面的逻辑了
1. 不清楚
2. assign a=(b)?{c,e}:{d,e} 被优化为 assign temp = b ? c : d; a = {temp, e}
要知道选择器的位宽会影响timing,既然e永远是a的低位,没有必要过选择器。
其实写代码的时候是需要考虑这些问题的。
assign a=(b)?c:1'bz;中b的时序是如何控制的?延时是不是跟b有关?
