集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
123
返回列表 发新帖
楼主: usd

学fpga什么情况下会生成latch

[复制链接]
ups 发表于 2010-6-26 19:40:37 | 显示全部楼层
19楼的和我想的一样,顶一个。有个问题想问一下:<br>
对于:if (sel==1'b0)<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;out=in;<br>
要避免产生latch的话要怎么写呢?可以这样写吗:<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;if (sel==1'b0)<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;out=in;<br>
&nbsp; &nbsp;&nbsp; &nbsp; 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>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;if(enable)<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; q=data;<br>
在时钟为敏感变量的always块之外,在if语句的各种条件下都对变量赋值<br>
<br>
推荐用&nbsp; &nbsp;? :<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)&nbsp; &nbsp;&nbsp;&nbsp;<br>
if (sel==1'b0)<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;out=in;<br>
else&nbsp;&nbsp;out=1;<br>
或者<br>
always @ (sel or in)&nbsp; &nbsp;&nbsp;&nbsp;<br>
if (sel==1'b0)<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; out=in;<br>
else&nbsp;&nbsp;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)&nbsp; &nbsp;&nbsp;&nbsp;<br>
if (sel==1'b0)<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;out=in;<br>
else&nbsp;&nbsp;out=1;<br>
或者<br>
always @ (sel or in)&nbsp; &nbsp;&nbsp;&nbsp;<br>
if (sel==1'b0)<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; out=in;<br>
else&nbsp;&nbsp;out=0; ... 你这是组合逻辑,没有latch的问题.<br>
请高手赐教
longtime 发表于 2010-6-26 23:58:31 | 显示全部楼层
我还是有点不明白
UFP 发表于 2010-6-27 01:48:39 | 显示全部楼层
感觉21楼的可以改为:<br>
<br>
output [3;0] out;<br>
if (sel==1'b0)<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;out=in;<br>
&nbsp; &nbsp;&nbsp; &nbsp; 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>
能否结合那两段代码,给我讲讲啊
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2025-6-21 07:24 , Processed in 0.072927 second(s), 17 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表