我是靠谱客的博主 强健乌龟,这篇文章主要介绍再谈锁存器在Verilog中的故事再谈锁存器在Verilog中的故事,现在分享给大家,希望可以做个参考。

再谈锁存器在Verilog中的故事

锁存器

锁存器(Latch)是一种对脉冲电平敏感的存储单元电路。它们可以在特定输入脉冲电平作用下改变状态。锁存就是把信号暂存以维持某种电平状态

锁存器出现的危害:

输出信号被锁死,输入信号的变化不起作用;同时使静态时域分析非常复杂。
我们在数字集成电路的设计中要尽可能地避免出现锁存器。

出现锁存器的情况:

1、敏感列表不完整

对于组合电路,在@引导的敏感列表必须包含完整的敏感列表。对于时序电路,@的敏感事件如果不全会变成异步电路,不过异步电路的设计很多综合器不支持(在公司,设计人员就是无用功)。
如果敏感列表不完整,会造成逻辑错误。甚至有可能出现锁存器。比如:

复制代码
1
2
3
always @ (a) //敏感列表没有b c=a~^b;

b的变化不会促使always结构变化,这样就是一个带控制的锁存器。
修改代码如下:

复制代码
1
2
3
always @ (a or b) c=a~^b;

2、if和else不成对出现

例如:

复制代码
1
2
3
4
5
if (a<b) out=a; else if (a>b) out=b;

这就是一个简单的比较功能。不过if和else没有成对出现,这样如果a=b时,输出会保持不变。但是组合电路中没有存储元件,所有会生成设计之外的锁存器。
修改代码如下:

复制代码
1
2
3
4
5
6
7
if (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
9
module latch (clk,d,q); input clk; input d; output q; assign q=clk?d:q; endmodule

原因与i“if和else不成对出现”一样。不再赘述。

总结:

再次对锁存器做一个回顾。

感想:

念念不忘,必有回响!!!

最后

以上就是强健乌龟最近收集整理的关于再谈锁存器在Verilog中的故事再谈锁存器在Verilog中的故事的全部内容,更多相关再谈锁存器在Verilog中内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(105)

评论列表共有 0 条评论

立即
投稿
返回
顶部