FIFO(二):FIFO工作原理
FIFO工作原理
根据FIFO工作的时钟域分为同步/异步FIFO。同步FIFO是指读时钟和写时钟为同一个时钟在时钟沿来临时同时发生读写。异步FIFO读写时钟不一致,读写相互独立。
1.读写指针的工作原理
读指针:总是指向下一个将要读取的单元,复位时指向第一个单元(编号为0);
写指针:总是指向当前要被读出的数据,复位时,指向第一个单元(编号为0);
2. FIFO的“空/满”检测
FIFO设计的关键:产生可靠的FIFO读写指针和生成FIFO“空/满”状态标识。
很明显,当FIFO写满时,就不能再写新数据了,否则就导致数据的溢出;而在空状态即之前写入的数据已经读完,就不能再读取了,否则读出的数据就是无效数据。
2.1读空信号(rd_empty)
一般情况当读写指针相等时,表明FIFO为空,这种情况发生在 复位操作时 或者当读指针读出FIFO中最后一个字 后,追赶上写指针时,此时读空信号有效。
发生如下图所示:
2.2写满信号(wr_full)
当读写指针再次相等时,表明FIFO为满,这种情况发生在,当写指针转了一圈折回来(wrapped around)又追上了读指针,如下图:
以上FIFO的读写状态是基于读写指针的比较,而问题是两者的判断条件都是读写指针相等,区别在于写满状态是在写指针写满一圈后重新追上读指针,这该如何取表示呢???
如何区分到底是满状态还是空状态呢??
2.3 FIFO读写状态的判断方法
可以采用以下两种方法:
(1)extra bit
一般情况下深度为N=2^n的FIFO其地址的位宽为n,其读写地址的位宽也为n。共有N个存储单元,若数据位宽为W则该FIFO的容量即为N*W bit。
现在在指针中添加额外的位(extra bit,即地址的MSB)变为n+1bit,该extra bit用于指示写指针是否递增并越过最后一个FIFO地址,若越过则将该MSB加1,其它位清零。对读指针也进行同样的操作。如对于深度为8的FIFO,需要采用3+1bit是计数器:0000-1000、1001-1111,MSB作为折回标志,而低3位作为地址指针。
那么判断机制为:
*如果两个指针的MSB不同,就说明写指针比读指针多折回一次:如r_addr=0000,且w_addr=1000,为满;
*如果两个指针的MSB相同,就说明两个指针折回次数相等。再者其余位相等(则说明FIFO为空。
(2)设置数据计数器
设置一个data_counter, 当写使能有效时每写入一个data计数器同时加1;读操作时,每读出一个data时该计数器减1。如此,当data_counter为0时FIFO空,当data_counter计数至FIFO深度deep时,表示FIFO写满。
由于计数器会占用额外的资源,当FIFO较大时,可能会降低FIFO的读写速度。
3 读写指针的表示
读写指针的编码有多种,上述提到的指针采用二进制码形式表示。
3.1二进制FIFO指针
将一个二进制的计数值从一个时钟域同步到另一个时钟域的时候很容易出现问题,因为采用二进制计数器时所有位都可能同时变化,在同一个时钟沿同步多个信号的变化会产生亚稳态问题。而使用格雷码只有一位变化,因此在两个时钟域间同步多个位不会产生问题。所以需要一个 二进制到gray码的转换电路 ,将地址值转换为相应的gray码,然后将该gray码同步到另一个时钟域进行对比,作为空满状态的检测。
3.2 gray码表示指针
使用gray码解决了一个问题,同时也带来另一个问题,即格雷码如何判断空与满?
空的判断
依然依据二者完全相等(包括MSB);
满的判断
如下图,由于gray码除了MSB外具有镜像对称的特点,当读指针指向7,写指针指向8时,除了MSB其余位都相同,不能说它为满。因此不能单纯地检测最高位了,在gray码上判断为满必须同时满足以下3条:
wptr 和同步过来的rptr的MSB不相等,因为wptr必须比rptr多折回一次;
wptr与rptr的次高位不相等;如上图位置7和和位置15,转化为2进制:0111和1111. 。MSB不同说明多折回一次,111相同代表同一个位置。
FIFO(二):FIFO工作原理相关推荐
- 带你深入了解机器人视觉系统工作原理及其应用
https://www.toutiao.com/a6666219746205106691/ 人类想要实现一系列的基本活动,如生活.工作.学习就必须依靠自身的器官,除脑以外,最重要的就是我们的眼睛了,( ...
- C语言机器人视觉系统原理,机器人视觉系统工作原理
机器视觉系统包括了照明系统.镜头.摄像系统和图像处理系统.对于每一个应用,都需要考虑系统的运行速度和图像的处理速度.使用彩色还是黑白摄像机.检测目标的尺寸还是检测目标有无缺陷.视场需要多大.分辨率需要 ...
- 【计算机网络】ARP协议工作原理
地址解析协议ARP 一 发送数据的过程 在学习ARP协议的工作原理之前,我们需要先知道为什么需要ARP协议,它在数据传输过程中有怎样的作用. 以下是计算机网络中发送数据的一个大致过程. 首先要知道,源 ...
- Shiro(一)之shiro简介与工作原理
一.shiro简介 这里我先来介绍一下什么是shiro,Apache Shiro 是 Java 的一个安全框架.目前,使用 Apache Shiro 的人越来越多,因为它相当简单,对比 Spring ...
- Spring的简介和工作原理
一.简介 Spring 是个java企业级应用的开源开发框架.Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用.Spring 框架目标是简化Java企业级应 ...
- 数据库连接池使用场景,工作原理和实现步骤
一.使用场景: 大型高并发应用里 使用连接池的好处:就是可以限制应用的连接数,另外,不用再额外地去创建每个连接,MySQL创建连接的开销也是较大的,因为创建一个新连接相当于MySQL创 ...
- grant 1.0 mysql 权限系统工作原理
文章目录 一.权限系统作用 二.工作原理 授权表 刷新和查看权限表 一.权限系统作用 MySQL 权限系统的主要功能是证实连接到一台给定主机的用户,并且赋予该用户在数据库上的 SELECT.INSER ...
- 波轮普通洗衣机的构成和基本工作原理
一.波轮普通洗衣机的构成波轮普通洗衣机由洗涤桶.波轮.箱体.脱水桶及操纵盘等组成. 二.工作原理波轮普通洗衣机的工作原理包括洗涤原理.漂洗原理.脱水(甩干)原理和过滤原理. 1.洗涤原理如图3-2所示 ...
- 旋转变压器简介、工作原理及分类
文章整理于网络: 一.简介 旋转变压器(resolver)是一种电磁式传感器,又称同步分解器.它是一种测量角度用的小型交流电动机,用来测量旋转物体的转轴角位移和角速度,由定子和转子组成.其中定子绕组作 ...
- 计算机网络CDMA工作原理分析与例证说明
一,引言 CDMA(Code Division Multiple Access)即码分多址,是一种信道复用技术,它允许每个用户在同一时刻同一信道上使用同一频带进行通信.CDMA 技术的出现源自于人类对 ...
最新文章
- Redis问题——Error: 磁盘在使用中,或被另一个进程锁定。
- anaconda学习python,anaconda快速搭建python学习环境-windows
- java实现责任链模式_我的Java设计模式-责任链模式
- 电脑技巧:分享七个解决烦人的弹窗广告的小技巧
- ant-design-vue 快速入手及常用标签
- Mac下matplotlib中文显示
- 走在网页游戏开发的路上
- rk3399_android7.1平台调试sensor流程记录
- 浙江大学PAT上机题解析之1050. String Subtraction (20)
- 管理之道(七) - 不可奖励员工错误的行为
- ListView学习思维导图
- 数学趣话,你知道常见的数学符号都是谁发明的吗?
- android远程连接windows,用微软的安卓远程桌面连接电脑没有声音
- 2022年高压电工操作证考试题库及在线模拟考试
- 计算机桌面通过网络在拼接屏上显示,一种多个拼接屏实时同步显示方法与流程...
- 数学符号“s.t.”的意义
- celery基础知识
- 拉里·埃里森和历史上最牛的演讲
- SwiftUI iOS 完整项目之基于CoreData构建购物计划App(教程含源码App Store上线app)
- 用生物知识解读“新冠病毒”,生物竞赛、高考考点,先马后看!
热门文章
- 掌握14种UML图,清晰图示
- 如何把极坐标化为直角坐标_如何将极坐标转化为直角坐标
- 求2~n之间所有的质数及其个数
- 面试高频,一条sql语句查询成绩,显示'优秀' ,'及格' ,'不及格'
- 华北科技学院转专业计算机,2021年华北科技学院大一新生转专业及入学考试相关规定...
- ubuntu18.04手动调节风扇转速
- 用户和用户组管理-用户和用户配置文件-影子文件
- SWAN之ikev2协议lookip配置测试
- win10计算机未连接到网络适配器,win10未检测到正确的适配器怎么办_win10检测不到正确的适配器解决方法...
- 用计算机弹无羁的数字,《明日之后》无羁怎么弹 无羁钢琴简谱