再谈锁存器在Verilog中的故事
锁存器
锁存器(Latch)是一种对脉冲电平敏感的存储单元电路。它们可以在特定输入脉冲电平作用下改变状态。锁存就是把信号暂存以维持某种电平状态
锁存器出现的危害:
输出信号被锁死,输入信号的变化不起作用;同时使静态时域分析非常复杂。
我们在数字集成电路的设计中要尽可能地避免出现锁存器。
出现锁存器的情况:
1、敏感列表不完整
对于组合电路,在@引导的敏感列表必须包含完整的敏感列表。对于时序电路,@的敏感事件如果不全会变成异步电路,不过异步电路的设计很多综合器不支持(在公司,设计人员就是无用功)。
如果敏感列表不完整,会造成逻辑错误。甚至有可能出现锁存器。比如:
复制代码
1
2
3always @ (a) //敏感列表没有b c=a~^b;
b的变化不会促使always结构变化,这样就是一个带控制的锁存器。
修改代码如下:
复制代码
1
2
3always @ (a or b) c=a~^b;
2、if和else不成对出现
例如:
复制代码
1
2
3
4
5if (a<b) out=a; else if (a>b) out=b;
这就是一个简单的比较功能。不过if和else没有成对出现,这样如果a=b时,输出会保持不变。但是组合电路中没有存储元件,所有会生成设计之外的锁存器。
修改代码如下:
复制代码
1
2
3
4
5
6
7if (a<b) out=a; else if (a>b) out=b; else out=a||b;
3、case语句中没有default
如果需要锁存器,设计代码如下:
复制代码
1
2
3
4
5
6
7
8
9module latch (clk,d,q); input clk; input d; output q; assign q=clk?d:q; endmodule
原因与i“if和else不成对出现”一样。不再赘述。
总结:
再次对锁存器做一个回顾。
感想:
念念不忘,必有回响!!!
最后
以上就是强健乌龟最近收集整理的关于再谈锁存器在Verilog中的故事再谈锁存器在Verilog中的故事的全部内容,更多相关再谈锁存器在Verilog中内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复