异步FIFO的硬件实现

您所在的位置:网站首页 如何linux如何查看串口硬件FIFO大小 异步FIFO的硬件实现

异步FIFO的硬件实现

2024-07-12 03:02:49| 来源: 网络整理| 查看: 265

异步FIFO的硬件实现 FIFO原理

FIFO(First Input First Out)顾名思义,先入先出,在新型大规模集成电路中,为了增加数据传输率,处理大量数据流,解决异步时钟域数据传输的问题,FIFO被广泛应用.FIFO是一个双口缓冲器,即第一个计入的数据第一个被移出;是一种传统的顺序执行方法. 在这里插入图片描述

FIFO简介

FIFO存储器和普通存储器的的区别是,他没有外部读写地址线,使用起来更简单,但是只能顺序写入数据,顺序读出,器数据地址由内部读写指针自动加1完成,不能像普通存储器那样可以由地址线决定读取或写入某个指定地址. 根据FIFO工作的时钟域可以把FIFO分为同步FIFO和异步FIFO.同步FIFO是指读时钟和写时钟为同一个时钟,在时钟沿到来时同时发生读写操作;异步FIFO是指读写时钟域不一样,读写时钟和操作相互独立.

FIFO的宽度(Width) FIFO一次读写操作的数据位;就像MCU(MicroControl Unit,微控制器,单片机)有8位和16位,ARM 32位等等,FIFO的宽度在单片成品IC中是固定的,也有可选择的,如果用FPGA自己实现一个FIFO,其数据位,也就是宽度是可以自己定义的。

FIFO的深度(Deepth) 指的是FIFO可以存储多少个N位(N是FIFO宽度)的数据.如果一个8位的FIFO,深度为8;表示可以存储8个8为的数据,深度为10,则表示可以存10个8位的数据; 在FIFO实际工作中,其数据的满/空标志可以控制数据的继续写入或读出。在一个具体的应用中也不可能由一些参数计算精确的所需FIFO深度为多少,这在写速度大于读速度的理想状态下是可行的,但在实际中用到的FIFO深度往往要大于计算值。一般来说根据电路的具体情况,在兼顾系统性能和FIFO成本的情况下估算一个大概的宽度和深度就可以了。而对于写速度慢于读速度的应用,FIFO的深度要根据读出的数据结构和读出数据的由那些具体的要求来确定。

满标志 FIFO已满或将要满时由FIFO的状态电路送出的一个信号,以阻止FIFO的写操作继续向FIFO中写数据而造成溢出(overflow)。

空标志: FIFO已空或将要空时由FIFO的状态电路送出的一个信号,以阻止FIFO的读操作继续从FIFO中读出数据而造成无效数据的读出(underflow)。

读时钟: 读操作所遵循的时钟,在每个时钟沿来临时读数据。

写时钟: 写操作所遵循的时钟,在每个时钟沿来临时写数据。

读指针: 指向下一个读出地址。读完后自动加1。

写指针: 指向下一个要写入的地址的,写完自动加1。

读写指针其实就是读写的地址,只不过这个地址不能任意选择,而是连续的。

什么情况下用FIFO

FIFO用于不同时钟域之间多bit数据传输,比如FIFO的一端是AD数据采集,另一端是PCI总线.其中AD数据采集的速率为16位100SPS,PCI总线的速度位33MHz,总线宽度为32bit,最大传输速率为1056Mbps,这两个不同时钟域间数据传输可以用FIFO作为数据缓冲.另外对于不同宽度的数据接口也可以用FIFO,例如单片机位8位数据输出,而DSP可能是16位数据输入,在单片机与DSP连接时就可以使用FIFO来达到数据匹配的目的。

亚稳态

在数字系统中,因为触发器的结构,触发器由两个相反控制信号的锁存器数串联而成. 所以在触发器高电平控制的时候,在时钟上升沿,第一个锁存器关闭,后一个锁存器关闭;但是din信号传送到锁存器是需要一定时间,如果在din信号还未传送到第二个锁存器中第一个锁存器就已经关闭,这样会导致din信号无法输出,所以需要在时钟上升沿到来之前保持din信号达到稳定,这就是setup time

据传输过程中在时钟有效沿到来前,输入数据必须保持一段时间(setup time:建立时间),在有效沿到来后数据仍需要保持一段时间(hold time:保持时间)以保证数据被采到。对于复位信号或置零信号,其移除时间(removal time)和恢复时间(recovery time)也类似如此。否则触发器输出端在有效时钟沿之后的一段时间处于不确定的状态

FIFO设计难点

FIFO设计的难点在于怎样判断FIFO的空/满状态。为了保证数据正确的写入或读出,而不发生益处或读空的状态出现,必须保证FIFO在满的情况下,不能进行写操作。在空的状态下不能进行读操作。怎样判断FIFO的满/空就成了FIFO设计的核心问题。

在用到触发器的设计中,不可避免的会遇到亚稳态的问题(关于亚稳态这里不作介绍,可查看相关资料)。在涉及到触发器的电路中,亚稳态无法彻底消除,只能想办法将其发生的概率将到最低。其中的一个方法就是使用格雷码。格雷码在相邻的两个码元之间只由一位变换(二进制码在很多情况下是很多码元在同时变化)。这就会避免计数器与时钟同步的时候发生亚稳态现象。

设计思路

大多数情形下,异步FIFO两端的时钟不是同频的,或者读快写慢,或者读慢写快,这时候进行地址同步的时候,可能会有地址遗漏,以读慢写快为例,进行满标志判断的时候需要将读地址同步到写时钟域,因为读慢写快,所以不会有读地址遗漏,同步后的读地址滞后当前读地址,所以可能满标志会提前产生。进行空标志判断的时候需要将写地址同步到读地址,因为读慢写快,所以当读时钟同步写地址的时候,必然会漏掉一部分写地址(写时钟快,写地址随写时钟翻转,直到满标志出现为止),那到底读时钟会同步到哪个写地址?不必在意是哪一个,我们关注的是漏掉的地址会不会对FIFO的空标志产生影响。比如写地址从0写到10,期间读时钟域只同步到了2,5,7这三个写地址,漏掉了其他地址。同步到7地址时,真实的写地址可能已经写到10地址,相当于“在读时钟域还没来得及觉察的情况下,写时钟域可能偷偷写了数据到FIFO去”,这样在比较读写地址的时候不会产生FIFO“空”读操作。漏掉的地址也没有对FIFO的逻辑操作产生影响。 在这里插入图片描述

如上图中所示,左边是写时钟域中的信号,右边则是读时钟域中的信号,中间存在两个同步时钟逻辑单元,它们的目的是分别为了使得写时钟域中的写时钟同步到读时钟域,从而产生或者消除读空信号,读时钟域中的读时钟同步到写时钟域,从而产生或者消除写满信号。

好的FIFO设计的基本要求是写满而不溢出,读空又不多读。在同步FIFO中,比较容易做到判断写满和读空两种状态,但是在异步FIFO中,因为读写时钟不一致,因此真正的满和空状态是很难判定的,我们一般情况下只能够选择近满和近空状态。 所谓异步是指读写时钟是完全独立并且不一致的或者不同频率或者同频但不同相。读地址和空标志是由读时钟产生的,而写地址和写满标志则由写时钟产生。当要产生FIFO的空、满状态标志时必须进行读写地址的比较时,问题就来临了: 如果直接采样地址比较的话地址线一般有多位,由于每个地址寄存器的物理空间位置的不一致性造成写地址的每一位在写时钟作用下跳变得不一致即产生毛刺,要过一小段时间才能稳定。如果在未稳定期内刚好读时钟进行采样写地址这时就出现误判断逻辑错误。如下图的7读时钟还没稳定的时候出现写时钟的上升沿,便会出现逻辑错误7;如下图所示: 在这里插入图片描述 每次地址变化都会存在中间不稳定态,不稳定态的大小和时长则和变化的位数相关,在二进制数值的递增中,一般存在两位甚至更多位数值的变化,这将导致更大的不稳定态,为了减少这种影响,我们推荐使用格雷码。该码的优点是相邻两值只有一位跳变,其他不变。这样地址变化的时间较短极大提高比较精度。比较不同时钟产生的指针,需要把不同时钟域的指针同步到本时钟域中来,而使用Gray码的目的就是使这个异步同步化的过程发生亚稳态的机率最小。

格雷码和二进制码

格雷码是一种做加一运算时只变化一位的编码,下表即为一个三位格雷码编码格式。 在这里插入图片描述 关于二进制转格雷码,其法则是保留二进制码的最高位作为格雷码的最高位,而次高位格雷码为二进制码的高位与次高位相异或,而格雷码其余各位与次高位的求法相类似。 在这里插入图片描述 用RTL代码表示如下:

module gray( input clk, input rst, input [7:0] din, output reg [7:0] dout ); always@(posedge clk or negedge rst) if (!rst) dout


【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭