FPGA中锁存器(latch)、触发器(flip-flop)以及寄存器(register)详解

文章目录

        • [1 定义](#1 定义)
          • [1.1 锁存器(latch)](#1.1 锁存器(latch))
          • [1.2 触发器(flip-flop)](#1.2 触发器(flip-flop))
          • [1.3 寄存器(register)](#1.3 寄存器(register))
        • [2 比较](#2 比较)
          • [2.1 锁存器(Latch)危害即产生原因](#2.1 锁存器(Latch)危害即产生原因)
          • [2.2 寄存器和锁存器的区别](#2.2 寄存器和锁存器的区别)
          • [2.3 锁存器和触发器的区别](#2.3 锁存器和触发器的区别)
        • [3 结构](#3 结构)
          • [3.1 锁存器基本结构](#3.1 锁存器基本结构)
          • [3.2 触发器基本结构](#3.2 触发器基本结构)
        • 参考

1 定义

1.1 锁存器(latch)

锁存器是一种由电平触发的存储单元,为异步电路,数据存储的动作取决于输入信号的电平值,只要输入发生变化,输出即随之发生变化。

1.2 触发器(flip-flop)

触发器是边沿敏感的存储单元,数据存储的动作由某一信号的上升或者下降沿进行同步的,即输出数据只在信号的上升沿或者下降沿到来时被改变。

1.3 寄存器(register)

1、寄存器用来存放数据的一些小型存储区域,用来暂时存放参与运算的数据和运算结果,是一种常用的时序逻辑电路,但这种逻辑电路只包含存储电路。

2、寄存器的存储电路是由锁存器或触发器构成的,因为一个锁存器或触发器能存储1位二进制数,所以由N个锁存器或触发器可以构成N位寄存器。

2 比较

2.1 锁存器(Latch)危害即产生原因

1、危害:

  1. 锁存器容易产生毛刺;
  2. 锁存器的出现使得静态时序分析变得更加复杂;
  3. 锁存器在ASIC设计中应该说比ff要简单,但是在FPGA的资源中,大部分器件没有锁存器这个东西,所以需要用一个逻辑门和ff来组成锁存器,这样就浪费了资源;

2、产生原因:

  1. 不完整的if或者case语句;
  2. 不完整的敏感信号列表;
  3. 输入信号没有对应的输出;

3,综合来看,锁存器的产生总是与电路的不完整有关系,因此在编写verilog代码时,最好对于if语句和case语句一定要做到完全描述,最常用的方法就是总是加上else和default。

2.2 寄存器和锁存器的区别
  1. 寄存器受同步时钟信号控制,而锁存器受输入信号控制,前者是边缘敏感型电路,后者则是电平敏感型电路。
  2. 寄存器的输出端平时不随输入端的变化而变化,只有在时钟有效时才将输入端的数据送输出端(打入寄存器),而锁存器的输出端平时总随输入端变化而变化,只有当锁存器信号到达时,才将输出端的状态锁存起来,使其不再随输入端的变化而变化。
2.3 锁存器和触发器的区别
  1. 锁存器同所有的输入信号相关,当输入信号变化时锁存器就变化,没有时钟端;触发器受时钟控制,只有在时钟触发时才采样当前的输入,产生输出。
  2. 锁存器是电平触发,非同步控制。在使能信号有效时锁存器相当于通路,在使能信号无效时锁存器保持输出状态。触发器由时钟沿触发,同步控制。
  3. 锁存器对输入电平敏感(输出随输入的变化而变化),受布线延迟影响较大,很难保证输出没有毛刺产生;触发器则不易产生毛刺。

3 结构

3.1 锁存器基本结构

1、锁存器分为普通锁存器和门控锁存器,普通锁存器无控制信号,输出状态始终直接由输入决定。而在实际的数字系统中,为了协调各部分的工作,往往需要有一个特定的控制信号去控制锁存器状态转换的时间,在控制信号无效时,输出保持不变,不随输入变换;当控制信号有效时,输出由输入决定,跟随输入变化。

3.2 触发器基本结构

触发器为边缘敏感型,因此其分为上升沿触发和下降沿触发。

参考

https://blog.csdn.net/h_kingone/article/details/56671517

https://blog.csdn.net/Times_poem/article/details/85986055

相关推荐
li星野1 小时前
ZYNQ:点亮LED灯
fpga开发·zynq·7010
9527华安1 小时前
FPGA实现PCIE视频采集转HDMI输出,基于XDMA中断架构,提供3套工程源码和技术支持
fpga开发·音视频·pcie·xdma·ov5640·hdmi
乌恩大侠2 小时前
【Xcode Command Line Tools】安装指南
macos·fpga开发·c
apple_ttt3 小时前
从零开始讲PCIe(9)——PCIe总线体系结构
fpga开发·fpga·pcie
Little Tian6 小时前
信号用wire类型还是reg类型定义
fpga开发
apple_ttt1 天前
从零开始讲PCIe(6)——PCI-X概述
fpga开发·fpga·pcie
水饺编程1 天前
【英特尔IA-32架构软件开发者开发手册第3卷:系统编程指南】2001年版翻译,1-2
linux·嵌入式硬件·fpga开发
apple_ttt1 天前
从零开始讲PCIe(5)——66MHZ的PCI总线与其限制
fpga开发·fpga·pcie
最好有梦想~1 天前
FPGA时序分析和约束学习笔记(2、FPGA时序传输模型)
fpga开发
IM_DALLA1 天前
【Verilog学习日常】—牛客网刷题—Verilog企业真题—VL76
学习·fpga开发