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

相关推荐
风_峰2 天前
Ubuntu Linux SD卡分区操作
嵌入式硬件·ubuntu·fpga开发
FPGA_Linuxer2 天前
FPGA 40 DAC线缆和光模块带光纤实现40G UDP差异
网络协议·fpga开发·udp
风_峰3 天前
Petalinux相关配置——ZYNQ通过eMMC启动
嵌入式硬件·ubuntu·fpga开发
风_峰3 天前
【ZYNQ开发篇】Petalinux和电脑端的静态ip地址配置
网络·嵌入式硬件·tcp/ip·ubuntu·fpga开发
碎碎思3 天前
一块板子,玩转 HDMI、USB、FPGA ——聊聊开源项目 HDMI2USB-Numato-Opsis
fpga开发
ooo-p3 天前
FPGA学习篇——Verilog学习Led灯的实现
学习·fpga开发
嵌入式-老费3 天前
Zynq开发实践(FPGA之选择开发板)
fpga开发
风_峰3 天前
PuTTY软件访问ZYNQ板卡的Linux系统
linux·服务器·嵌入式硬件·fpga开发
电子凉冰4 天前
FPGA入门-状态机
fpga开发
Aczone284 天前
硬件(十)IMX6ULL 中断与时钟配置
arm开发·单片机·嵌入式硬件·fpga开发