微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 我这样理解latch对吗?

我这样理解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~你的激励没有说明你的激励时序到底怎么样的,可能是激励给的不对哦

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top