关于生成锁存器的问题?
if(a==1)
b<=c;
这样一个语句因为没有else分支,所以被说可能被生成锁存器。但我有个疑问是,锁存器都是对电平敏感的,上面这个语句依然是对clk的边沿敏感的啊,怎么说是锁存器呢?
资料上说锁存器不能消除毛刺,如果上面语句,我觉得依然可以消除毛刺问题?
这个概念有点混乱,希望清楚的可以解释一下!谢谢
综合下,看下RTL级电路就知道了
这个语言描述里 只有当a=1时 b<=c才成立 所以,其他情况下,这个值会被keep,所以会生成锁存器 只是他也是沿触发的 并不矛盾
always @(posedge clk)
b<=c;
这样写就没latch了 体会下吧
锁存器?寄存器?
是的
if(a==1)
b<=c;
else
b<=b
这样的latch
胡说八道。
怎么可能是锁存器呢,这是一个触发器加一个选择器。仔细想一下吧!
就是寄存器。 哪来的锁存器
这是一个 带使能端的 D触发器
嗯!触发器哈!
这能生成锁存器 你的综合工具神了
这完全是一个触发器 真的能综合成LATCH的话,我服了
触发器啊
It's a flip-flop, not a latch
你写的代码一定是个没有reset的EDFF,
就看你的“锁存器”如何定义,
如果是指latch,那么我只能说你看的书在乱写,
如果是广义的锁存器(翻译的问题),可能书上的意思是包括电平触发的latch和边沿触发的DFF。
学习了
15# amormio124
这不就是个EDFF么?
时钟沿触发的么,前面的都把我看糊涂了
liuss兄说的是正解
锁存器也有沿触发的,
当然你如果要把电平放到铭感表里就是dianpin触发的锁存器了
这明显是一个时序逻辑,时序逻辑怎么可能生成锁存器呢,同意楼上说的,是一个带使能端的D触发器
那请问这样的沿触发锁存器对电路会有什么负面影响?
只要功能正确,综合时不会报错生成锁存器,这种时序电路是不会生成锁存器的
被搞乱了,请教各位到底什么是锁存器(latch)?
同感啊,就像很多个人说狮子是老虎时你也开始怀疑了
always @(c or en)
if(en)
b = c; //生成锁存器
always @(posedge clk)
if(en)
b <= c; //生成触发器
这是个带使能的D触发器,信号a为使能信号。若改成
always @(posedge clk)
b>=c;
这就是一个普通的D触发器。
