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

相关推荐
海涛高软10 小时前
yolov8目标检测训练在rk3588上部署
fpga开发
第二层皮-合肥12 小时前
USB3.0专题-硬件的测试
fpga开发
hexiaoyan82713 小时前
高速数据采集卡设计方案:886-基于RFSOC的8路5G ADC和8路9G的DAC PCIe卡
fpga开发·高速数据采集卡·光纤pcie卡·通用pcie卡·xc7a100t板卡
小许学java18 小时前
MySQL-触发器
java·数据库·mysql·存储过程·触发器
嵌入式软硬件攻城狮19 小时前
2.FPGA板卡通过电脑映射连接上网
fpga开发·电脑
brave and determined20 小时前
可编程逻辑器件学习(day22):“让ARM穿上FPGA的马甲“:赛灵思Zynq的命名哲学与技术革命
arm开发·嵌入式硬件·fpga开发·zynq·fpga设计·嵌入式设计·fpga开发流程
FPGA_小田老师2 天前
FPGA语法基础(二):SystemVerilog 数组清零方法详解
fpga开发·systemverilog·数组清零·systemverilog数组·systemverilog语法
jiushun_suanli2 天前
FPGA(现场可编程门阵列)详解
经验分享·学习·fpga开发
Terasic友晶科技2 天前
1-串行通信基础知识
fpga开发·串口通信·异步通信·串行通信·同步通信·并行通信·单工
FPGA_小田老师2 天前
Xilinx Aurora 8B/10B IP核(2):Shared Logic的选择
fpga开发·aurora 8b/10b·share logic·aurora接口