财讯中国

深入理解FIFO(包含有FIFO深度的解释)

来源:网络 2022-01-29 22:30:26

FIFO

一、先入先出队列(First Input First Output,FIFO)这是一种传统的按序执行方法,先进入的指令先完成并引退,跟着才执行第二条指令。

1.什么是FIFO?

FIFO是英文First In First Out 的缩写,是一种先进先出的数据缓存器,他与普通存储器的区别是没有外部读写地址线,这样使用起来非常简单,但缺点就是只能顺序写入数据,顺序的读出数据,其数据地址由内部读写指针自动加1完成,不能像普通存储器那样可以由地址线决定读取或写入某个指定的地址。

2.什么情况下用FIFO?

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

3.FIFO的一些重要参数

FIFO的宽度:也就是英文资料里常看到的THE WIDTH,它只的是FIFO一次读写操作的数据位,就像MCU有8位和16位,ARM 32位等等,FIFO的宽度在单片成品IC中是固定的,也有可选择的,如果用FPGA自己实现一个FIFO,其数据位,也就是宽度是可以自己定义的。

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

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

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

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

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

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

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

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

4.FIFO的分类

根均FIFO工作的时钟域,可以将FIFO分为同步FIFO和异步FIFO。同步FIFO是指读时钟和写时钟为同一个时钟。在时钟沿来临时同时发生读写操作。异步FIFO是指读写时钟不一致,读写时钟是互相独立的。

5.FIFO设计的难点

FIFO设计的难点在于怎样判断FIFO的空/满状态。为了保证数据正确的写入或读出,而不发生益处或读空的状态出现,必须保证FIFO在满的情况下,不能进行写操作。在空的状态下不能进行读操作。怎样判断FIFO的满/空就成了FIFO设计的核心问题。由于同步FIFO几乎很少用到,这里只描述异步FIFO的空/满标志产生问题。

在用到触发器的设计中,不可避免的会遇到亚稳态的问题(关于亚稳态这里不作介绍,可查看相关资料)。在涉及到触发器的电路中,亚稳态无法彻底消除,只能想办法将其发生的概率将到最低。其中的一个方法就是使用格雷码。格雷码在相邻的两个码元之间只由一位变换(二进制码在很多情况下是很多码元在同时变化)。这就会避免计数器与时钟同步的时候发生亚稳态现象。但是格雷码有个缺点就是只能定义2^n的深度,而不能像二进制码那样随意的定义FIFO的深度,因为格雷码必须循环一个2^n,否则就不能保证两个相邻码元之间相差一位的条件,因此也就不是真正的各雷码了。第二就是使用冗余的触发器,假设一个触发器发生亚稳态的概率为P,那么两个及联的触发器发生亚稳态的概率就为P的平方。但这回导致延时的增加。亚稳态的发生会使得FIFO出现错误,读/写时钟采样的地址指针会与真实的值之间不同,这就导致写入或读出的地址错误。由于考虑延时的作用,空/满标志的产生并不一定出现在FIFO真的空/满时才出现。可能FIFO还未空/满时就出现了空/满标志。这并没有什么不好,只要保证FIFO不出现overflow or underflow 就OK了。

很多关于FIFO的文章其实讨论的都是空/满标志的不同算法问题。

在Vijay A. Nebhrajani的《异步FIFO结构》一文中,作者提出了两个关于FIFO空/满标志的算法。

第一个算法:构造一个指针宽度为N+1,深度为2^N字节的FIFO(为便方比较将格雷码指针转换为二进制指针)。当指针的二进制码中最高位不一致而其它N位都相等时,FIFO为满(在Clifford E. Cummings的文章中以格雷码表示是前两位均不相同,而后两位LSB相同为满,这与换成二进制表示的MSB不同其他相同为满是一样的)。当指针完全相等时,FIFO为空。这也许不容易看出,举个例子说明一下:一个深度为8字节的FIFO怎样工作(使用已转换为二进制的指针)。FIFO_WIDTH=8,FIFO_DEPTH= 2^N = 8,N = 3,指针宽度为N+1=4。起初rd_ptr_bin和wr_ptr_bin均为“0000”。此时FIFO中写入8个字节的数据。wr_ptr_bin =“1000”,rd_ptr_bin=“0000”。当然,这就是满条件。现在,假设执行了8次的读操作,使得rd_ptr_bin =“1000”,这就是空条件。另外的8次写操作将使wr_ptr_bin 等于“0000”,但rd_ptr_bin 仍然等于“1000”,因此FIFO为满条件。

显然起始指针无需为“0000”。假设它为“0100”,并且FIFO为空,那么8个字节会使wr_ptr_bin =“1100”,, rd_ptr_bin 仍然为“0100”。这又说明FIFO为满。

在Vijay A. Nebhrajani的这篇《异步FIFO结构》文章中说明了怎样运用格雷码来设置空满的条件,但没有说清为什么深度为8的FIFO其读写指针要用3+1位的格雷码来实现,而3+1位的格雷码可以表示16位的深度,而真实的FIFO只有8位,这是怎么回事?而这个问题在Clifford E. Cummings的文章中得以解释。三位格雷码可表示8位的深度,若在加一位最为MSB,则这一位加其他三位组成的格雷码并不代表新的地址,也就是说格雷码的0100表示表示7,而1100仍然表示7,只不过格雷码在经过一个以0位MSB的循环后进入一个以1为MSB的循环,然后又进入一个以0位MSB的循环,其他的三位码仍然是格雷码,但这就带来一个问题,在0100的循环完成后,进入1000,他们之间有两位发生了变换,而不是1位,所以增加一位MSB的做法使得该码在两处:0100~1000,1100~0000有两位码元发生变化,故该码以不是真正的格雷码。增加的MSB是为了实现空满标志的计算。Vijay A. Nebhrajani的文章用格雷码转二进制,再转格雷码的情况下提出空满条件,仅过两次转换,而Clifford E. Cummings的文章中直接在格雷码条件下得出空满条件。其实二者是一样的,只是实现方式不同罢了。

第二种算法:Clifford E. Cummings的文章中提到的STYLE #2。它将FIFO地址分成了4部分,每部分分别用高两位的MSB 00 、01、 11、 10决定FIFO是否为going full 或going empty (即将满或空)。如果写指针的高两位MSB小于读指针的高两位MSB则FIFO为“几乎满”,

若写指针的高两位MSB大于读指针的高两位MSB则FIFO为“几乎空”。

在Vijay A. Nebhrajani的《异步FIFO结构》第三部分的文章中也提到了一种方法,那就是方向标志与门限。设定了FIFO容量的75%作为上限,设定FIFO容量的25%为下限。当方向标志超过门限便输出满/空标志,这与Clifford E. Cummings的文章中提到的STYLE #2可谓是异曲同工。他们都属于保守的空满判断。其实这时输出空满标志FIFO并不一定真的空/满。

说到此,我们已经清楚地看到,FIFO设计最关键的就是产生空/满标志的算法的不同产生了不同的FIFO。但无论是精确的空满还是保守的空满都是为了保证FIFO工作的可靠。

二、先进先出法 (first in,first out ,FIFO)

先进先出法是指根据先入库先发出的原则,对于发出的存货以先入库存货的单价计算发出存货成本的方法.采用这种方法的具体做法是:先按存货的期初余额的单价计算发出的存货的成本,领发完毕后,再按第一批入库的存货的单价计算,依此从前向后类推,计算发出存货和结存货的成本.

先进先出法是存货的计价方法之一。它是根据先购入的商品先领用或发出的假定计价的。用先进先出法计算的期末存货额,比较接近市价。

先进先出法是以先购入的存货先发出这样一种存货实物流转假设为前提,对发出存货进行计价的一种方法。采用这种方法,先购入的存货成本在后购入的存货成本之前转出,据此确定发出存货和期末存货的成本

关键词: FIFO

相关新闻

深入理解FIFO(包含有FIFO深度的解释)
2022-01-29 22:30:26
液体比重天平的使用要点
2022-01-29 22:30:21
【E问E答】SMT贴片加工对胶水的要求是什么?
2022-01-29 22:30:15
华为发布鸿蒙OS手机开发者Beta版 UI与目前基本一致
2022-01-29 22:30:10
简要介绍汽车传动系统的组成及功能
2022-01-29 22:30:05
儿童智能防丢器设计方案
2022-01-29 22:29:59
“卫冕冠军”:苹果连续2年蝉联全球品牌价值500强第一
2022-01-29 21:21:50
未来你可以在Play Store上下载Windows游戏
2022-01-29 21:21:44
微信键盘正式上线:腾讯申请商标却被驳回
2022-01-29 21:21:38
比亚迪海外大受欢迎!全球第70000辆纯电动客车下线
2022-01-29 21:21:31
NV最便宜新卡RTX 3050首发能原价买到了:渠道正疯狂备货
2022-01-29 21:21:25
微信小老虎头像上热搜:手把手教你如何添加
2022-01-29 21:21:18
数字人民币App升级:看、用红包更方便了
2022-01-29 21:21:11
联发科发布迅鲲1380:6nm工艺、8+5核心
2022-01-29 21:21:04
苹果iOS新增表情包含“怀孕的男人”引争议
2022-01-29 21:08:43
Redmi K40立减200:12+256现在只要1849
2022-01-29 21:08:35
【手慢无】到手只需249 罗技K835 84键键盘限时特惠啦
2022-01-29 21:08:27
爱奇艺+京东PLUS:全年会员只148元 卖完截止 手慢无!
2022-01-29 21:08:19
SSD年末首次降价:1Tb跌破500元 数量不多
2022-01-29 21:08:11
【手慢无】会员到手159元 罗技K380键盘优惠只剩两天
2022-01-29 21:08:02
交互式医学远程会诊系统设计方案
2022-01-29 21:00:20
研华隆重推出NXP i.MX8全系列核心模块产品
2022-01-29 21:00:15
信号发生器的应用及作用
2022-01-29 21:00:10
车辆主动安全:车道偏离预警系统技术详解
2022-01-29 21:00:04
微信键盘上线引热议!完整输入法还在做:号称避免用户聊天记录被窃
2022-01-29 19:51:09
曝T3出行1月25日起实行新价格:大范围调整运价
2022-01-29 19:51:02
588元-6888元不等 字节前员工晒红包
2022-01-29 19:38:13
四季度出货量大跌,手机卖不动了?
2022-01-29 19:38:03
51单片机汇编基础
2022-01-29 19:30:30
CAN总线学习系列之三——CAN控制器的选择
2022-01-29 19:30:25
485总线应采用什么样的通讯线?
2022-01-29 19:30:20
简易频率特性测试仪
2022-01-29 19:30:10
M2M的移动通信优化技术
2022-01-29 19:30:05
Picoscope示波器学习笔记一
2022-01-29 19:30:00
支持800V超高速补能 起亚首款纯电动车EV6价格公布
2022-01-29 18:21:37
6倍速刻录128GB光盘 先锋发布新款蓝光刻录机
2022-01-29 18:21:30
红魔7成快充王者:曝13分钟充满 iPhone 13 Pro Max看不见车尾灯
2022-01-29 18:21:23
史上改变最大的10.0资料片要来了?暴雪将公布魔兽新动向
2022-01-29 18:21:17
惠普推出全新Elite Mini迷你机:最高可配12代i9+RTX 3050 Ti
2022-01-29 18:21:09
荣耀X30荣登天猫安卓手机好评榜累积第一
2022-01-29 18:21:02
2022春节假期天气地图:南方多雨雪 北方晴冷
2022-01-29 18:08:35
汇聚零散资源:Dashworks推出企业内部知识搜索引擎服务
2022-01-29 18:08:27
3DCenter:2022年显卡将会更便宜
2022-01-29 18:08:19
带来区域截屏等功能 小新Pad Plus开启OTA3 ZUI 13系统推送
2022-01-29 18:08:13
英国威廉王子抱怨:我三个孩子都有点“沉迷”电子游戏
2022-01-29 18:08:10
269元!魅族PANDAER「白金独角兽」超触感键帽达成众筹
2022-01-29 18:08:04
45W版12代酷睿处理器放开超频?Intel:仅有一款酷睿i9支持
2022-01-29 18:08:02
业界最强大人工智能系统在 GTC 2018 上发布
2022-01-29 18:00:16
如何自制电路板 自制线路板
2022-01-29 18:00:10
数据挖掘、机器学习和深度学习之间有什么区别?
2022-01-29 18:00:05
Wi-Fi 6 是什么?和现在的Wi-Fi有何区别?
2022-01-29 18:00:00
微信推“拜年红包”:随机吉利数字 带不同动态效果
2022-01-29 16:51:38
工信部:2021年新建光缆319万公里,千兆光网具备覆盖3亿户家庭能力
2022-01-29 16:51:31
低端供应商推动印度智能手机出货量增长 2021全年达1.62亿台
2022-01-29 16:51:24
沃达丰英国计划2023年开始停用3G网络
2022-01-29 16:51:17
中天科技预计2021年净利1亿元—1.5亿元
2022-01-29 16:51:10
300多块的双核奔腾被玩出花了:超频冲上5.8GHz
2022-01-29 16:51:02
抽中“365天带薪休假”男子选择折现20万 为山区孩子捐款1万
2022-01-29 16:39:34
索尼Xperia手机摄影大赛报名出尴尬Bug:较早购买手机的用户无法参赛
2022-01-29 16:39:28
老人打响“出租车保卫战” 无辜新能源车遭殃
2022-01-29 16:39:22
北京通州部分下架民宿经审核重新上架 半天内已有房源被预订
2022-01-29 16:39:14
美国会议员致信加密货币挖矿企业 欲立法规范高能耗产业
2022-01-29 16:39:07
虎年见!Redmi K50 宇宙首款产品预热
2022-01-29 16:39:00
Rivian与三星SDI合资电池工厂谈判已结束 未取得进展
2022-01-29 16:39:00
隐士张一鸣
2022-01-29 16:38:53
微信版本更新 “支付”已改为“服务”
2022-01-29 16:38:51
中国广电5G核心网四川节点建设正式启动
2022-01-29 16:38:46
2月28日见!荣耀全球新品发布会来啦
2022-01-29 16:38:43
外媒起底“飞马”间谍软件:网络攻击武器如何崛起
2022-01-29 16:38:38
限购1台!398元买24英寸1080P 75Hz曲面无边框显示器
2022-01-29 16:38:35
12985亿元:蚂蚁非货基金保有规模再创新高
2022-01-29 16:38:30
加速赋能携手共赢 亚马逊云科技APN业务再升级
2022-01-29 16:38:26
京东方今年将向苹果iPhone供应4000万-5000万块OLED屏幕
2022-01-29 16:38:22
2022年显卡还能买吗?仅仅便宜一丢丢
2022-01-29 16:38:16
我国首个百万吨级碳捕集利用与封存项目建成
2022-01-29 16:38:13
AMD Zen 4锐龙7000处理器将极端紧俏
2022-01-29 16:38:04
特斯拉水土不服?1成三年车龄Model S无法通过德国质量检测
2022-01-29 16:38:02
双声道音频功率放大器电路图分析
2022-01-29 16:30:18
EMC测试简介
2022-01-29 16:30:12
一位从厌倦调试NRF24L01无线模块到成功的收发经验分享
2022-01-29 16:30:06
什么是视频分配器设备
2022-01-29 16:30:00
中国电信成立智能网络科技公司,注册资本9亿元
2022-01-29 15:22:36
Tachyum宣布被选中参与IPCEI 开发用于HPC/AI的Prodigy 2
2022-01-29 15:22:28
通用宣布向密歇根州4地投资超过70亿美元
2022-01-29 15:22:22
LG能源解决方案与通用汽车再合作于美国新建21亿美元电池工厂
2022-01-29 15:22:16
微软第二财季营收517亿美元 云相关业务贡献超过三分之一
2022-01-29 15:22:08
快手开通直播招聘功能:一键报名 无需投简历
2022-01-29 15:22:02
兰博基尼将推出四座版电动越野车和电动Urus
2022-01-29 15:21:56
联想于上海成立半导体公司,注册资本3亿元
2022-01-29 15:21:50
腾讯投资归芯科技
2022-01-29 15:21:43
PwnKit漏洞曝光:所有主流Linux发行版本均受影响
2022-01-29 15:21:37
顺丰控股注册资本增加至49.06亿,增幅7.68%
2022-01-29 15:21:30
腾讯投资心域科技,持股52.98%成大股东
2022-01-29 15:21:23
工信部:截至2021年底 我国建成10G PON端口786万个
2022-01-29 15:21:16
2021年我国电信业务收入累计完成1.47万亿元 比上年增长8%
2022-01-29 15:21:09
发售三个月 微软对Win11感到“高兴”:比以前的系统成功
2022-01-29 15:21:01
松下开发镜头成型新技术 高端远红外非球面镜头制造成本有望大降
2022-01-29 15:08:09
西班牙警方突击搜查加密货币矿场 起初因高能耗被怀疑种植大麻
2022-01-29 15:08:01
宝马公司设计 TteSPORTS level 10M拆解
2022-01-29 15:00:21
常见视频接口简介
2022-01-29 15:00:16

热门文章

热点专题