usd 发表于 2010-6-26 01:42:18

学fpga什么情况下会生成latch

学fpga什么情况下会生成latch
好象水平到一定程度后,一看代码就能看出来hdl会生成什么东西。怎么看啊?

例如以下

代码a

always @ (enable or ina or inb) begin
if (enable)begin
data_out=ina;
end
else begin
data_out=inb;
end
end

代码b

input data_in;
always @ (data_in)
begin
case (data_in)
0:out1=1'b1;
1,3:out2=1'b1;
2,4,5,6,7: out3=1'b1;
default: out4=1'b1;
endcase
end
谁能详细解释一下思路?怎么一看就知道硬件上会生成什么?

ATA 发表于 2010-6-26 02:38:25

这个需要熟能生巧吧,目前我也看不出来的,漫漫来,经验是积累出来的!!

HDL 发表于 2010-6-26 02:55:50

在赋值不完整的情况下会生成latch

ngtim 发表于 2010-6-26 03:33:39

原帖由 chenhongyi 于 2006-11-25 12:44 发表<br>
在赋值不完整的情况下会生成latch 1楼的两段代码,是曾经的考题,问哪一个回有latch,要求修改。<br>
能否结合那两段代码,给我讲讲啊

interig 发表于 2010-6-26 05:12:34

是不是代码b,会有latch?<br>
修改如下<br>
input data_in;<br>
output out<br>
always @ (data_in)<br>
begin<br>
case (data_in)<br>
&nbsp;&nbsp;0:&nbsp;&nbsp;out=4'b0001;<br>
&nbsp;&nbsp;1,3:&nbsp;&nbsp;out=4'b0010;<br>
&nbsp;&nbsp;2,4,5,6,7: out=4'b0100;<br>
&nbsp;&nbsp;default: out=4'b1000;<br>
endcase<br>
end<br>
这样对吗?

ATA 发表于 2010-6-26 07:06:12

b代码似乎是一个mux,对于组合逻辑,赋值语句不完整,就会产生不必要latch.应当避免.

CCIE 发表于 2010-6-26 07:10:42

组合逻辑中,条件不完整的赋值就会产生latch

HDL 发表于 2010-6-26 08:16:57

2应该会生成latch,是不是这种赋值不变的就会生成呢?还有就是条件判断不完全的会

CHANG 发表于 2010-6-26 09:03:38

原帖由 danphlee 于 2006-11-29 14:15 发表<br>
组合逻辑中,条件不完整的赋值就会产生latch 那么时序电路中呢???

AAT 发表于 2010-6-26 09:22:49

原帖由 vet_1982 于 2006-11-30 15:31 发表<br>
<br>
<br>
那么时序电路中呢??? 时序里,应该不会吧.
页: [1] 2 3
查看完整版本: 学fpga什么情况下会生成latch