我这样理解latch对吗?
时间:10-02
整理:3721RD
点击:
always@(*)
begin
if(en==1)
a = b;
end
这个锁存器到底是当en = 1的时候a锁存b的值,还是en = 1的时候b赋值给a,然后en = 0的时候a再锁存啊?
我写了个这样的锁存器,mcu中按以下顺序发送信号
en = 1;
b = 0;
en = 0;
b = 1;
发现a并没有锁存b的值,a还是等于最后的1;
而如果按以下顺序发送的话就可以锁存
en = 0;
b = 0;
en = 1;
b = 1;
发现a并不是等于最后的1,而是等于0,说明锁存有效了。
我觉得赋值顺序出现了问题 应该先赋值b,再来领en=1,之后再变化b
而且代码有点问题 没有else分支
没有分支默认相当于
else
a= a;
这样就是锁存器了。
你的这种写法,可以理解成,只有在en有效时,a的值才发生变化,被赋予b的值,当en无效时,a的值就不再变化,上一次是赋的什么值,就保持什么值。
敏感信号列表那么写是什么意思 *
就是这个always块里所有的驱动信号都包含在敏感列表里了
LZ说的不是触发器。锁存器不是边沿触发,是电平触发,所以先将en=1没有错。
没有else,正好构成锁存
en = 1的时候,a=b,即透明传输;
en由1变0的时候,a将b的值锁下,即锁存
试试先数据,后使能
电平敏感,同时综合会去掉某些逻辑
有点晕了
没有else分支,故使能信号为 低电平时,latch~你的激励没有说明你的激励时序到底怎么样的,可能是激励给的不对哦
