ups
发表于 2010-6-26 19:40:37
19楼的和我想的一样,顶一个。有个问题想问一下:<br>
对于:if (sel==1'b0)<br>
out=in;<br>
要避免产生latch的话要怎么写呢?可以这样写吗:<br>
if (sel==1'b0)<br>
out=in;<br>
else out=x;<br>
x可以为1,为0.
usb
发表于 2010-6-26 20:39:08
楼上的,out=x硬件怎么实现啊?
interig
发表于 2010-6-26 20:58:28
if语句产生latch的情况<br>
1. 条件表达式不完备<br>
2.条件赋值的变量在进入if语句前没有赋值<br>
3.if语句不再时钟为敏感变量的always块中<br>
如:<br>
always@(enable or data)<br>
if(enable)<br>
q=data;<br>
在时钟为敏感变量的always块之外,在if语句的各种条件下都对变量赋值<br>
<br>
推荐用 ? :<br>
case 产生latch情况<br>
1。case语句不是full case<br>
2. 变量没有在case语句的所有分支中赋值,并且在进入case语句前没有赋值<br>
<br>
赫赫,就这样了
UFO
发表于 2010-6-26 21:44:46
我的意思是,要避免latch可以这样写吗?<br>
always @ (sel or in) <br>
if (sel==1'b0)<br>
out=in;<br>
else out=1;<br>
或者<br>
always @ (sel or in) <br>
if (sel==1'b0)<br>
out=in;<br>
else out=0;<br>
肯定要考虑当sel!=0时,对out赋值才能避免latch呀。
CHANG
发表于 2010-6-26 22:30:40
原帖由 123zxc123 于 2006-12-12 19:38 发表<br>
我的意思是,要避免latch可以这样写吗?<br>
always @ (sel or in) <br>
if (sel==1'b0)<br>
out=in;<br>
else out=1;<br>
或者<br>
always @ (sel or in) <br>
if (sel==1'b0)<br>
out=in;<br>
else out=0; ... 你这是组合逻辑,没有latch的问题.<br>
请高手赐教
longtime
发表于 2010-6-26 23:58:31
我还是有点不明白
UFP
发表于 2010-6-27 01:48:39
感觉21楼的可以改为:<br>
<br>
output out;<br>
if (sel==1'b0)<br>
out=in;<br>
else out=4'bz;
ANG
发表于 2010-6-27 02:15:24
多看看综合后的RTL视图,时间长了就知道了
tim
发表于 2010-6-27 03:27:28
不完全译码又可能产生LATCH
Sunlife
发表于 2015-6-25 10:46:33
在赋值不完整的情况下会生成latch 1楼的两段代码,是曾经的考题,问哪一个回有latch,要求修改。<br>
能否结合那两段代码,给我讲讲啊