请教程序 verilog
时间:10-02
整理:3721RD
点击:
第一中写法:
always@(posedge clk or negedge rst_n) begin
if(!rst_n)
a<= 32'b0;
else if(counter==2)
a <= result;
else
a<= a;
end
第二种写法:
always@(posedge clk or negedge rst_n) begin
if(!rst_n)
a<= 32'b0;
else if(counter==2)
a <= result;
end
这两种写法 ,1 第二种是不是latch ,第一种是d触发器?(条件不足,就成了latch,小弟是这样理解的。)
2 这两种写法我觉得完成的功能是一样的,但是想问问那种跟好?
3 这两种写法,综合后会是什么电路,请大家分析一下啊。?
always@(posedge clk or negedge rst_n) begin
if(!rst_n)
a<= 32'b0;
else if(counter==2)
a <= result;
else
a<= a;
end
第二种写法:
always@(posedge clk or negedge rst_n) begin
if(!rst_n)
a<= 32'b0;
else if(counter==2)
a <= result;
end
这两种写法 ,1 第二种是不是latch ,第一种是d触发器?(条件不足,就成了latch,小弟是这样理解的。)
2 这两种写法我觉得完成的功能是一样的,但是想问问那种跟好?
3 这两种写法,综合后会是什么电路,请大家分析一下啊。?
latch是否只存在于组合电路?
两种都是d触发器,效果是一样的。第一种里 a<=a 是多余的。
组合逻辑在条件不全的时候会生成latch
这是时序逻辑,不是组合逻辑,不存在latch产生的毛刺,
一样的啊……
确实是一样的
你可以查看RTL图
应该是一样的
只有组合逻辑才产生latch吗
在第二种情况下,a的数据还是会继续保存下去,即与第一种情况是相同的额。生成的RTL图也是一样的。
时序逻辑不会有latch
对,这两种是一样的,我验证过了、
没错,感觉第2种写法更好,简洁。
恩。时序逻辑不会infer latch。
一样的,你说的这种情况存在于电平敏感的组合电路中,这两种写法都是时序电路,不加else综合器默认成时序电路了
组合逻辑在条件不全的时候会生成latch
如果用代码检查工具检查,第一种会报warning
