您现在的位置是:首页 > 行业发展
锁存器,这一篇就够了
智慧创新站
2025-02-24【行业发展】90人已围观
简介1、什么是锁存器锁存器(latch)是通过电平触发的存储单元。数据存储的动作由输入时钟(或者使能)信号的电平值决定,仅当锁存器处于使能状态时,输出才会随着输入发生变化。2、和触发器的区别触发器是对脉冲边沿敏感的存储单元,它的变化只会在时钟的上升沿或者下降沿到来的瞬间改变。从定义上区分,锁存器是电平触...
1、什么是锁存器
锁存器(latch)是通过电平触发的存储单元。数据存储的动作由输入时钟(或者使能)信号的电平值决定,仅当锁存器处于使能状态时,输出才会随着输入发生变化。
2、和触发器的区别
触发器是对脉冲边沿敏感的存储单元,它的变化只会在时钟的上升沿或者下降沿到来的瞬间改变。
从定义上区分,锁存器是电平触发的,触发器是边沿触发的。对于latch而言,由于其是电平触发的,当使能的时候,输入信号不稳定时,那么输出信号就会出现毛刺。对于触发器来说,其输出是在时钟的边沿,只要不出现亚稳态输出就不会出现毛刺。
3、latch的优劣
缺点:
1)电平触发,容易产生毛刺;
2)电平触发,对芯片设计后端时序收敛不友好。
优点:
1)面积小;
2)速度快。
4、怎样生成latch
在芯片设计中,锁存器和触发器都是工艺库中的最小单元。通过EDA工具将我们的代码映射至工艺库中相应的单元。基于Verilog硬件描述语言的,生成latch的代码事例如下:
modulelatch_exam(inputwirei_clk,inputwirei_en,outputrego_latch);always@(*)beginif(~clk)o_latch=i_en;module
modulelatch_exam(inputwirei_en,inputwirei_data,outputwireo_latch);assigno_latch=~i_en?i_data:o_latch;module
5、如何避免产生latch
在数字电路设计中,只有对面积和速度要求极高的情况下才可能会使用到latch。一般情况下,还是应该使用时序逻辑,避免毛刺及时序的影响。
数字前端设计可以通过以下几种方式,避免latch的产生:
1)掌握良好且正确的代码风格,完整的条件语句(ifelse、case中的default)且最后一个分支(else或default)不是自己赋值给自己
还有一点需要注意:上述第2个代码段,是使用assign语句的3目运算符(条件性语句),且自己赋值给了自己。在Verilog中产生latch的代码是组合逻辑且有一个分支是自己赋值给自己(省略最后一个分支也是保持不变即自己赋值给自己)
2)通过代码检查工具(如nlint、leda、spyglass等)检查代码
3)通过中端工具DesignCompiler等检查代码
4)在后端时序分析时,如果出现时序不过的情况,可以分析是否有latch
在实际工程中,大家最好按照上述顺序执行,尽量将问题在早期发现,早发现早治疗。希望通过这篇文章可以帮助大家理解锁存器。
很赞哦!(101)