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

news2024/12/23 17:18:51

文章目录

        • 1 定义
          • 1.1 锁存器(latch)
          • 1.2 触发器(flip-flop)
          • 1.3 寄存器(register)
        • 2 比较
          • 2.1 锁存器(Latch)危害即产生原因
          • 2.2 寄存器和锁存器的区别
          • 2.3 锁存器和触发器的区别
        • 3 结构
          • 3.1 锁存器基本结构
          • 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/910031.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

dvwa环境搭建

靶场搭建 环境作用apache网站代理,部署网站php一种开源通用脚本语言,用来处理程序mysql数据库,用来存储数据 1.打开sever 2008,远程桌面连接,将文件拷贝到虚拟机,打开微软常用集合运行库,等待…

「Vue|网页开发|前端开发」01 快速入门:用vue-cli快速写一个Vue的HelloWorld项目

本文主要介绍如何用vue开发的标准化工具vue-cli快速搭建一个符合实际业务项目结构的hello world网页项目并理解vue的代码文件结构以及页面渲染流程。 文章目录 一、准备工作:安装node.js二、项目搭建创建项目目录全局安装vue-cli使用Webpack初始化项目启动项目学会…

RedisDesktopManager 连接redis

redis查看是否启动成功 ps -ef | grep redis以上未启动成功 cd /usr/local/bin/ 切换根目录 sudo -i 开启服务端 ./redis-server /usr/local/redis/redis.conf 开启客户端 ./redis-cli

Ganache 本地测试网远程连接

文章目录 前言1. 安装Ganache2. 安装cpolar3. 创建公网地址4. 公网访问连接5. 固定公网地址 前言 Ganache 是DApp的测试网络,提供图形化界面,log日志等;智能合约部署时需要连接测试网络。 Ganache 是一个运行在本地测试的网络,通过结合cpol…

MySQL如何进行表之间的关联更新

在实际编程工作或运维实践中,对MySQL数据库表进行关联更新是一种比较常见的应用场景,比如在电商系统中,订单表里保存了商品名称的信息(冗余字段设计),但如果商品名称发生变化,则需要通过关联商品…

[已解决]SpringBoot 返回日期时间格式不正确

最近开发中不知道为什么,返回给前端的日期时间格式变成了这样子,晚了8小时,在网上找了解决办法: 原返回值: 需要修改的地方: 在application.yml中添加下面的代码,重启springboot项目即可。 sp…

C++信息学奥赛1121:计算矩阵边缘元素之和

题解&#xff1a;i0 or j0 or in-1 or jm-1 or in-1 or jm-1 代码&#xff1a; #include<iostream> // 包含输入输出流库 #include<cmath> // 包含数学函数库 using namespace std; // 使用标准命名空间int main() {int n,m;cin>>n>>m; // 输入…

2023年夏季《移动软件开发》实验报告一

姓名和学号&#xff1f;本实验属于哪门课程&#xff1f;中国海洋大学22夏《移动软件开发》实验名称&#xff1f;实验1&#xff1a;第一个微信小程序博客地址&#xff1f;XXXXXXXGithub仓库地址&#xff1f;https://github.com/enfantsRichesDeprimes/Mobile-Software-Developme…

vue2+element-ui+springboot编写一个简单的CRUD和上传页面

1.0先看效果图 2.0主功能页面展示 3.0新增功能 4.0更新功能 5.0接口错误提示 前端码云链接:https://gitee.com/xiaojianr/management/tree/master/ 前端拷贝完成需要使用:npm install 命令完成package.json依赖的下载 后端码云链接:https://gitee.com/xiaojianr/manage

21款奔驰E300 L升级ACC自适应巡航系统,解放双脚缓解驾驶疲劳

有的时候你是否厌倦了不停的刹车、加油&#xff1f;是不是讨厌急刹车&#xff0c;为掌握不好车距而烦恼&#xff1f;如果是这样&#xff0c;那么就升级奔驰原厂ACC自适应式巡航控制系统&#xff0c;带排队自动辅助和行车距离警报功能&#xff0c;感受现代科技带给你的舒适安全和…

Ubuntu20.04安装SNMP服务

在线安装snmp 1.安装snmp服务 sudo apt-get install updatesudo apt-get install snmp snmpd snmp-mibs-downloader2.重启SNMP服务 sudo /etc/init.d/snmpd restart3.查看snmp配置 sudo grep -Ev ^$|^# /etc/snmp/snmpd.conf 离线安装SNMP &#xff08;重要&#xff09; 我…

量子非凡去广告接口

量子非凡去广告接口&#xff0c;免费发布&#xff0c;请各位正常调用&#xff0c;别恶意攻击 >>>https://videos.centos.chat/weisuan.php/?url

二、2.打印和内联汇编

调用约定&#xff0c; calling conventions&#xff0c;从字面上理解&#xff0c;它是调用函数时的一套约定&#xff0c;是被调用代码的接口&#xff0c;它体现在 参数的传递方式&#xff0c;是放在寄存器中&#xff1f;栈中&#xff1f;还是两者混合&#xff1f; 参数的传递顺…

Docker 的数据管理与镜像

Docker 的数据管理与镜像 一、Docker 的数据管理1.数据卷2.数据卷容器3.端口映射4.容器互联&#xff08;使用centos镜像&#xff09; 二、Docker 镜像的创建1.基于现有镜像创建2.基于本地模板创建3.基于Dockerfile 创建 三、Dockerfile 操作常用的指令&#xff1a;1.FROM 镜像2…

RTSP/Onvif流媒体服务器EasyNVR安防视频平台一直提示网络请求失败的问题解决方案

EasyNVR平台优秀的视频能力在于通过RTSP/ONVIF协议&#xff0c;将前端接入设备的音视频资源进行采集&#xff0c;并转码成适合全平台、全终端分发的视频流格式&#xff0c;包括RTMP、RTSP、FLV、HLS、WebRTC等格式。 有用户反馈&#xff0c;EasyNVR使用过程中&#xff0c;突然提…

飞书小程序开发

1.tt.showModal后跳转页面 跳转路径要为绝对路径&#xff0c;相对路径跳转无响应。 2.手机息屏后将不再进入onload()生命周期&#xff0c;直接进入onshow()生命周期。 onLoad()在页面初始化的时候触发&#xff0c;一个页面只调用一次。 onShow()在切入前台时就会触发&#x…

代码随想录算法训练营day41 | 343. 整数拆分,96. 不同的二叉搜索树

目录 343. 整数拆分 96. 不同的二叉搜索树 343. 整数拆分 类型&#xff1a;动态规划 难度&#xff1a;medium 思路&#xff1a; dp[i]所用的拆分方法至少已经拆分了两次&#xff0c;比如dp[2]1&#xff0c;小于2&#xff0c;在大于2的数中&#xff0c;最后的2是不会拆的。 …

大数据平台需要做等保测评吗?怎么做?

大数据时代的数据获取方式、存储规模、访问特点、关注重点都有了很大不同&#xff0c;所以保证大数据平台数据安全尤其重要。因此不少人在问&#xff0c;大数据平台需要做等保测评吗&#xff1f;怎么做&#xff1f; 大数据平台需要做等保测评吗&#xff1f; 大数据平台是需要做…

sheel

资料来源&#xff1a; 尚硅谷 2-sheel脚本入门 脚本以#!bin/bash 开头 3-变量 3-1自定义变量 在bash中&#xff0c;变量默认类型为字符串类型&#xff0c;无法直接进行数值运算 c12 echo $c 12 使用 export 可把变量提升为全局环境变量 export 变量名 3-2特殊变量 3-2-1 $n …

posstgresql多表连接

posstgresql多表连接 内连接左外连接右外连接总结 交叉连接九九乘法表 自然连接自连接 内连接 内连接用于返回两个表中匹配的数据行&#xff0c;使用关键字INNER JOIN表示&#xff0c;也可以简写成JOIN select -- 内连接 d.department_id ,e.first_name ,d.department_name…