【异步FIFO的一些小事·3】异步FIFO中指针走线延时的一些思考

简介: 【异步FIFO的一些小事·3】异步FIFO中指针走线延时的一些思考

前言

【异步FIFO的一些小事·2】异步FIFO中异步走线延时约束的一些思考

上一篇博客中主要讨论的是不需要进行跨异步的数据总线路径延时的约束,这一篇继续探讨下一个问题:走线延时太大会影响性能,要用多深的fifo才能避免由异步fifo本身引起的数据反压断流呢,尤其在慢时钟跨异步到快时钟的场景下?

FIFO深度计算

想象一下,数据由慢时钟跨异步到快时钟,写入后wr_ptr在本端打了一拍,跨异步打了三拍到了读侧,对面识别到后读取数据,读指针在本端打了一拍,跨异步打了三拍到写侧,这样写侧才知道了有一个数据被读走了,这经历的时间是:

(Twr + Twr_sync + 3Trd) + (Trd + Trd_sync + Twr)

如果这个时间已经很长了,那么这过程中噌噌噌的来了很多写侧的数据,fifo深度必然就不够了,fifo被打满反压写侧,造成了慢打快竟然出现了fifo反压上游的奇怪场景,因此我们可以计算出此时fifo最小的深度,就是假设这段时间拍拍来写数据的极端场景:


相关文章
|
3月前
|
API iOS开发
彻底搞懂同步与异步,阻塞/非阻塞
彻底搞懂同步与异步,阻塞/非阻塞
970 0
|
3月前
|
C#
C#同步异步详解
C#同步异步详解
25 0
|
3月前
|
存储 消息中间件 算法
精华推荐 |【算法数据结构专题】「延时队列算法」史上非常详细分析和介绍如何通过时间轮(TimingWheel)实现延时队列的原理指南
精华推荐 |【算法数据结构专题】「延时队列算法」史上非常详细分析和介绍如何通过时间轮(TimingWheel)实现延时队列的原理指南
107 1
|
10月前
|
存储 前端开发 芯片
【芯片前端】保持代码手感——异步FIFO全解析
【芯片前端】保持代码手感——异步FIFO全解析
|
数据库
每日一博 - 使用环形队列实现高效的延时消息
每日一博 - 使用环形队列实现高效的延时消息
68 0
|
前端开发
【异步FIFO的一些小事·2】异步FIFO中异步走线延时约束的一些思考
【异步FIFO的一些小事·2】异步FIFO中异步走线延时约束的一些思考
172 0
【异步FIFO的一些小事·2】异步FIFO中异步走线延时约束的一些思考
【异步FIFO的一些小事·0】异步FIFO同步化设计
【异步FIFO的一些小事·0】异步FIFO同步化设计
134 0
【异步FIFO的一些小事·0】异步FIFO同步化设计
|
存储 Java 索引
不可上位!数据结构队列,老实排队,Java实现数组模拟队列及可复用环形队列
不可上位!数据结构队列,老实排队,Java实现数组模拟队列及可复用环形队列
134 0
不可上位!数据结构队列,老实排队,Java实现数组模拟队列及可复用环形队列
|
数据处理
万能的FIFO篇
万能的FIFO篇
|
Linux
Linux网络编程之阻塞与非阻塞
Linux网络编程之阻塞与非阻塞
186 0