文章目录

  • 基本概念
  • 锁存器与触发器区别
  • 锁存器与触发器不同应用场合
  • 锁存器产生条件
  • 锁存器危害
  • 参考文档

基本概念

锁存器(latch):、在电平信号的作用下改变状态,是一种电平触发的存储单元。锁存器的数据存储动作取决于输入使能信号的电平值,仅当锁存器处于使能状态时,输出数据才会随着数据输入发生变化,否则处于锁存状态。

输出端的状态不会随输入端的状态变化而变化,仅在有锁存信号时输入的状态才被保存到输出,直到下一个锁存信号到来时才改变。

以D锁存器为例

当CP = 1 时,输出端的状态随输入端的状态而改变。Q n+1 = D ,存入新的数据;当CP = 0 时,无论 D 如何变化,输出端的状态保持不变。Q n+1 = Q n,存入的数据不变。

触发器(FF):当收到输入时钟脉冲时,便会根据规则改变状态,然后保持这种状态直到收到下一个触发脉冲信号到来,边沿敏感。

以边沿触发D触发器为例

边沿触发器而言,只有当时钟从0跳变到1时,才会引起输出的改变。边沿触发的D型触发器,它由两级R-S触发器按如下方式连接而成,时钟信号在第一级中进行了取反操作。

  1. 非工作状态下,其数据和时钟输入均为0,且Q的输出也为0
  2. 使数据端输入1,则改变了第一级触发器的状态,因为时钟输入取反变为1。但是第二级触发器状态保持不变,因为时钟输入仍然为0。
  3. 把时钟输入变为1,这就引起了第二级触发器输出的改变,使Q输出变为1。
  4. 只有在时钟输入从0变为1的瞬间,Q的输出才发生改变。

寄存器(register):存储电路通常是由触发器构成的,因为一个触发器能存储一位二进制数,所以N个触发器就可以构成N位寄存器,可以将寄存器理解成多个触发器构成的暂存单元。

锁存器与触发器区别

  • 触发器(寄存器)由同步时钟信号控制的,需要时钟信号;而锁存器是由电平使能信号控制的,不需要时钟信号。在FPGA的可用资源中,触发器资源非常常见,但是锁存器则很少,需要由一个逻辑门和触发器来构成,浪费较多资源。
  • latch是电平触发的,锁存器的输出对输入透明的,输入是什么,输出就是什么,这就是锁存器不稳定的原因;而触发器是由两个锁存器构成的一个主从触发器,输出对输入是不透明的,必须在时钟的上升/下降沿才会将输入体现到输出,所以能够消除输入的毛刺信号。

锁存器与触发器不同应用场合

  • 若数据信号有效性滞后于控制信号有效,则选择锁存器;若数据信号提前于控制信号到达并且要求同步操作,则采用触发器(寄存器)。

锁存器产生条件

组合逻辑中case结构缺乏default组合逻辑中if-else结构描述不全组合逻辑always()中敏感列表不全

组合逻辑是否会生成锁存器,其根本原因是该组合逻辑存在保持功能!

锁存器危害

  • 对毛刺敏感,不能异步复位,所以上电以后可能处于不确定的状态;
  • Latch会使静态时序分析变得非常复杂;
  • DFT处理复杂
  • FPGA基本的单元是由查找表和触发器组成的,若生成锁存器反而需要更多的资源。CPU设计有些充分利用锁存器特性,在实际应用中,有些设计不可避免的要使用Latch,特别是总线应用上,例如,地址锁存器,数据锁存器,复位信号锁存器等。

参考文档

【1】触发器(寄存器)与锁存器的异同
【2】寄存器,触发器,锁存器之间的区别与联系
【3】边沿触发-D型触发器
【4】RS锁存器和D锁存器的电路结构及工作原理
【5】实例解析Verilog综合出锁存器的问题
【6】latch和寄存器有什么区别 锁存器的危害分析

锁存器、触发器和寄存器区别对比-基础小知识(十)相关推荐

  1. python解码和编码的区别_python基础小知识,is和==的区别,编码和解码

    1.is和==的区别 1)id() 通过id()我们可以查看到一个变量表示的值在内存中的地址 >>> s1 = "Tanxu" >>> s2 = ...

  2. (14)FPGA触发器与寄存器区别

    (14)FPGA触发器与寄存器区别 1.1 目录 1)目录 2)FPGA简介 3)Verilog HDL简介 4)FPGA触发器与寄存器区别 5)结语 1.2 FPGA简介 FPGA(Field Pr ...

  3. 计算机编程的基础小知识

    一.编程基础小知识 1.内存条中一个元器件称为1Bit(位),大数据处理时可能会用到PB和EB 1Byte = 8 Bit 1KB = 1024Byte = 210Byte 1MB = 1024KB ...

  4. DRAM刷新refresh相关知识归类-基础小知识(三)

    文章目录 一.背景小知识 1.1 DRAM的层次结构 1.2 刷新要求 1.3 DRAM存储芯片的读写时序 1.4 刷新方式分类 参考文献 RAM每一位数据都是通过芯片内的一个 小电容充电(或低电平) ...

  5. 【嵌入式基础小知识】Nand Flash VS Nor Flash

    没有胜利者,我们只是活下来了,从此便是无尽的噩梦. – 塞尔克(萨拉热窝围城战幸存者) 一.概述 在嵌入式领域,我们经常会遇到 Flash 这个存储介质,通常是用来存储程序或者数据的. 但是如果细究起 ...

  6. 小程序执行运行过程原理_PLC的基础小知识!不用把PLC想的太难

    PLC实质上是工业计算机,是计算机技术与传统继电接触器控制器技术相结合的产物,只不过比一般的计算机具有更强的与工业过程相连接的接口和更直接的适用于工业控制要求的编程语言. 一.PLC的结构 从硬件结构 ...

  7. java程序员要知道的500个基础小知识

    目录 问题1:什么是注解(Annotation)?为什么在开发时候用注解? 细聊注解? 问题2:什么是反射? 做什么用的呢? 问题3:什么是泛型? 做什么用的呢? 问题4:为什么封装用包装类型不用基本 ...

  8. 视频图像传输学习笔记-基础小知识(一)

     摄像头DVP与MIPI区别 DVP是并口,需要PCLK.VSYNC.HSYNC.D[0:11]--可以是8/10/12bit数据,看ISP或baseband是否支持:总线PCLK极限大约在96M左右 ...

  9. 访问修饰符作用范围由大到小是_9个java基础小知识

    一.面向对象和面向过程的区别 1. 面向过程 : 面向过程性能比面向对象高.因为类调用时需要实例化,开销比较大,比较消耗资源,所以当性能是最重要的考虑因素时(例如单片机.嵌入式开发.Linux/Uni ...

最新文章

  1. springboot @cacheable不起作用_Springboot学习记录13 使用缓存:整合redis
  2. Linux多线程矩阵,操作系统实验——多线程计算矩阵相乘
  3. 汇编 int 10h
  4. 运行时错误7内存溢出_JVM运行时内存数据区域
  5. Dubbo负载均衡机制
  6. lisp 任意点 曲线距离_数学篇|看完这篇,秒杀所有圆锥曲线小技巧
  7. 关于模板函数/模板类编译成DLL
  8. orchard mysql_Orchard Core创建CMS/Blog站点
  9. poj 1502 MAPMaelstrom 单源最短路dijkstra
  10. 跨域:Response to preflight request doesn t pass access control check: No Access-Control-Allow-Origin
  11. (转)invalidate()和postInvalidate() 的区别及使用
  12. eclipse的editor does not contain a main type错误
  13. Linux Swap交换分区介绍
  14. html不建议翻译,[译] 可用但最不常见的 HTML5 标签
  15. Centos7系统升级
  16. 股票中,什么是净资产收益率,有什么作用?
  17. SQL中常用的字符串LEFT函数和RIGHT函数详解
  18. 计算机辅助绘图中测距在哪,cad测距(cad测量距离快捷键)
  19. 【参赛作品37】openGauss/MogDB数据库函数创建的两种风格
  20. arm rtx教程_【RTX操作系统教程】第4章 RTX操作系统介绍

热门文章

  1. GJB 5000B简介
  2. android设备安装kali,在Android设备上安装Kali Linux基于Android设备的Kali Linux渗透测试教程大学霸...
  3. 百度地图实现活动定位打卡
  4. 前端报错vue.runtime.esm.js2b0e619 [Vue warn] Unknown custom element <github-corner> - did you regist
  5. 《代码整洁之道 clean code》学习笔记
  6. Python语言程序设计(8)——if语句的嵌套
  7. 【VBA画图】excelvba中曲线的绘制
  8. 工具推荐-使用RedisInsight工具对Redis集群CURD操作及数据可视化和性能监控
  9. 信息学奥赛一本通答案dj均值1060
  10. Sublime Text3配置在可交互环境下运行python快捷键