1.锁存器(Latch)

1.1.SR锁存器(基本锁存器

由两个或非门或者两个与非门组成,电路结构、图形符号和特性表如下所示。

此时,输出状态(次态)与输入状态、锁存器初态都有关。

1.2.电平触发SR触发器(门控SR锁存器

当CLK=0时(无效),输出状态(次态)保持不变;只有当CLK=1时(有效),输出状态才随输入、初态的不同而改变,且与SR锁存器的特性一样。

门控锁存器的控制信号有效时,锁存器就变成了一个组合电路,若此时输入信号发生多次变化,输出状态也可能发生多次变化,这一现象称为锁存器的空翻。此时,时序逻辑电路的模型就等效为两个各组合电路互为反馈的反馈系统,因此,系统有可能会因为瞬态特性不稳定而产生振荡现象抗干扰能力差

1.3.电平触发D触发器(D型锁存器

在CLK的有效电平期间,输出状态始终随输入状态变化,输出与输入状态保持相同,所以这个电路又叫“透明的D型锁存器”。

​​​​​​​        

2.触发器(flip-floph

2.1.边沿触发D触发器

由两个D型锁存器组成,次态仅取决时钟有效边沿到达时输入的逻辑状态,且值保持不变到下次触发到达时(保持n个时钟周期)。

电路抗干扰能力强,工作可靠性更高。

3.寄存器(Register)

寄存器能够存寄一组二值代码,即由N个触发器组成。

4.基于Verilog的锁存器&触发器的分析

4.1.锁存器(Latch)的特点

(1)对毛刺敏感(使能信号有效电平时,输出状态可能随输入多次变化,产生空翻,对下一级电路很危险),不能异步复位,因此在上电后处于不确定的状态

(2)锁存器会使静态时序分析变得非常复杂,不具备可重用性。(首先,锁存器没有时钟参与信号传递,无法做STA;其次,综合工具会将latch优化掉,造成前后仿真结果不一致

(3)在FPGA中基本的单元是由查找表和触发器组成的,若生成锁存器反而需要更多的资源。根据锁存器的特点可以看出,在电路设计中,要对锁存器特别谨慎,如果设计经过综合后产生出和设计意图不一致的锁存器,则将导致设计错误,包括仿真和综合。因此,在设计中需要避免产生意想不到的锁存器。如果组合逻辑的语句完全不使用 always  语句块,就可以保证综合器不会综合出锁存器。

                (4)但如果锁存器和触发器两者都由与非门搭建的话,锁存器耗用的逻辑资源要比D触发器少(D触发器需要12个MOS管,锁存器只需6个MOS管),锁存器的集成度更高,所以在的ASIC设计中会用到锁存器。但锁存器对毛刺敏感,无异步复位端,不能让芯片在上电时处在确定的状态;另外,锁存器会使静态时序分析变得很复杂,不利于设计的可重用。所以,在ASIC设计中,除了CPU这高速电路,或者RAM这种对面积很敏感的电路,一般不提倡用锁存器

4.2.锁存器(Latch)的出现及解决办法

在基于always的组合逻辑描述语句中容易综合出锁存器的地方:

(1)在赋值表达式右边参与赋值的信号未在always@(敏感电平列表)中列出完整,生成透明锁存器;

(2)if语句的使用中缺少else语句;

(3)case语句没有列举出全部情况且没有default;

(4)输出变量赋值给自己。

参考二、8【FPGA】Verilog中锁存器(Latch)原理、危害及避免。

4.3.举例说明

时序电路中if...else不完整不会生出latch,而组合逻辑就会产生latch:

左上的电路是时序逻辑生成触发器,而触发器是有使能端(enable)的,使能端无效时就可以保存数据,无需锁存器。右上的电路是组合逻辑,在enable为低电平时,输出q要保持不变,而组合逻辑没有存储元件只能生成锁存器来保持数据。所以在时序逻辑中,不完整的 if…else… 结构并不会生成锁存器,而组合逻辑中不完整的 if…else… 结构就会生成锁存器。为了避免我们设计的组合逻辑中出现不想要的锁存器,在使用 if…else… 结构时一定要写完整

module ex1(// input clk,input enable,data,output reg q);always @(*)// always @(posedge clk)                    // 方法1:将锁存器改为带使能的触发器 begin// q = 0;         // 方法2:给输出变量赋初始值if(enable)q = data;// else              // 方法3:补全if...else语句// q = 0;endendmodule

                解决方法

①将锁存器改为带使能的触发器(变为时序电路);

②给输出变量赋初始值;

③补全if...else语句。

        4.4.感悟

①在always模块内被赋值的每一个信号都必须定义成reg型,但不一定就会生成寄存器。

②组合逻辑一般使用assign语句。

③当组合逻辑使用always模块时,@(*)或敏感信号列表需写完整,都属于电平触发。另外,if...else以及case情况(必要时加上default)需写完整,或者输出状态赋初始值。

④时序逻辑中“always @(posedge clk)”属于同步时钟,而“always @(posedge clk,negedge rst)”属于同步时钟,异步复位。

⑤“=”阻塞赋值表示组合逻辑,“<=”非阻塞赋值表示时序逻辑。

另外,可以参考FPGA 中的latch 锁存器。

锁存器、触发器、寄存器相关推荐

  1. 锁存器 触发器 寄存器 区别

    一.锁存器 锁存器(latch)---对脉冲电平敏感,在时钟脉冲的电平作用下改变状态 锁存器是电平触发的存储单元,数据存储的动作取决于输入时钟(或者使能)信号的电平值,仅当锁存器处于使能状态时,输出才 ...

  2. 触发器(寄存器)与锁存器的异同

    触发器(FF)当收到输入时钟脉冲时,便会根据规则改变状态,然后保持这种状态直到收到下一个触发脉冲信号到来. 寄存器(register)的存储电路通常是由触发器构成的,因为一个触发器能存储一位二进制数, ...

  3. FPGA之道(4)锁存器与寄存器

    文章目录 概念 多位 阵列 普通移位寄存器 概念 触发器与这两个称谓之间到底有着什么样的关系呢? 事实上,在我们进行数字电路设计的时候,只需要关注于器件的功能和使用方式即可,而不需要对器件的实现原理和 ...

  4. 触发器、锁存器、寄存器以及它们之间的区别

    一.基本概念 (1)锁存器 1. 锁存器(latch):是电平触发的存储单元,数据存储的动作(状态转换)取决于输入时钟(或者使能)信号的电平值,尽当锁存器处于使能状态时,输出才会随着数据输入发生变化. ...

  5. 锁存器 D触发器 寄存器区别 详细区别解释 Latch D Flipflop register

    1. 锁存器 定义: 对脉冲电平敏感,在时钟脉冲的电平作用下改变状态. 优点: 面积小.锁存器比FF快,所以用在地址锁存是很合适的,不过一定要保证所有的latch信号源的质量,锁存器在CPU设计中很常 ...

  6. Part 1: 3.1 时序逻辑~3.2 flip flop 触发器寄存器

    本次会学习如何将物理时间的时序,带入到计算机的世界中 第一,clock时钟振荡器 它是某种类型的振子,以一定的固定速率上下波动,并且每一个时钟周期,都作为一个数字整数时间单位.于是,这样就打破了物理时 ...

  7. Part 1: 3.2 flip flop 触发器寄存器

    在3.1时序逻辑中,说道需要用一个寄存器,存储当前时间周期内的信号是1还是0,本次将讨论这个寄存器的结构 触发器可以记住上次输入,并在下次单元中输出它,弥补空缺: 逻辑:

  8. 【数字逻辑设计】Logisim构建锁存器/触发器

    继续造轮子,嘿嘿. 1.SR锁存器 情况 S R Q Q' Ⅳ 0 0 Qprev Q'prev Ⅰ 0 1 0 1 Ⅱ 1 0 1 0 Ⅲ 1 1 0 0

  9. 组合逻辑电路和时序逻辑电路区别

    比较项目 组合逻辑电路 时序逻辑电路(状态机)(同步) 输入输出关系 任意时刻的输出仅仅取决于该时刻的输入,与电路原来的状态无关 不仅仅取决于当前的输入信号,而且还取决于电路原来的状态,或者说,还与以 ...

  10. 【数电试题】西电通卓模拟卷三

    -## 一,简答题 1.1.时序逻辑电路与组合逻辑电路有什么区别?试各举一例说明.可以采用什么方式来描述两类电路的功能? (10 分) [My answer]   组合逻辑电路和时序逻辑电路的区别 比 ...

最新文章

  1. 面向对象,面向服务(转)
  2. yum 错误:Invalid configuration value: failovermethod=priority
  3. No space left on device 解决 Cydia 安装应用错误
  4. Java GUI 基础知识
  5. 深入浅出 Java 中的包装类
  6. 【渝粤教育】广东开放大学 商务英语听说 形成性考核 (37)
  7. 基于EasyNetQ的RabbitMQ封装类
  8. 404页面应该怎么做?
  9. Atitit.antlr实现词法分析
  10. nuxt项目dist上传服务器,nuxt.js构建的项目,打包后如何部署到服务器?
  11. 不同的count用法
  12. 曾经大肆其道的电商返利APP,其运营策略你真的清楚吗,一文带你读懂返利APP的竞品分析
  13. 如何在五分钟让你的应用拥有高精度定位功能
  14. cocos2dx图片闪亮_SassDoc 2-闪亮的流章鱼出来了!
  15. css实现3D长方形,可旋转
  16. 四川省全国计算机考试一年可以考几次,四川网络教育统考科目没通过怎么办,一年可以考几次?...
  17. 服务器无限矿物指令,迷你世界刷矿物指令 | 手游网游页游攻略大全
  18. 渗透测试资产指纹识别工具
  19. 用PS将照片修改为358*441并且小于20k的符合社保要求
  20. 一文让你了解RFID标签芯片厂家有哪些?

热门文章

  1. 程序员的职业生涯个人规划(附上学习资料)
  2. 聊一聊Rust的结构体
  3. 若干个进阶SQL 进阶技巧
  4. 特斯拉市值蒸发6000亿!马斯克:冻结招聘,明年裁员,再找个「傻子」接管推特...
  5. 什么是BCD码?BCD码的用处。怎么把BCD码转换成二进制值?
  6. [创业-3]:创业失败的20大原因
  7. Json完整版介绍和工具类解析应用
  8. [ SharePoint ADFS 开发部署系列 (一)]
  9. python音频分析工具_python – 鸟鸣音频分析 – 查找两个剪辑的匹配程度
  10. Excel按颜色求和,计数,均值