这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » FPGA » FPGA学习-总结fifo设计中深度H的计算

共15条 1/2 1 2 跳转至

FPGA学习-总结fifo设计中深度H的计算

工程师
2022-09-14 22:25:39     打赏

介绍:

对于fifo来说,H的设置至关重要。既要保证功能性,不溢出丢数,也要保证性能流水。深度设置过小会影响功能,过大又浪费资源。因此,总结下fifo设计中深度H的计算。

一、同步sync fifo

1.1 流控反压后不溢出

假设数据一直发,下游一直读,读频率小于写频率时,fc(flow control)流控后,最坏的情况下,下游不读了。此时fifo反压信号拉高,上游写ready拉低,此时路上的数据需要能存入fifo,称之为过冲。过冲需要保证路上的数据被fifo完全吸收不溢出,因此fifo的深度H=过冲+上水位线TA。

1.2 不断流

对于同频同步fifo来说,只要深度大于1,只要保证上游每cycle都有wvalid,fifo读一定不会断流,可以实现流水。

当引入fc后,极端场景下,当达到反压水位线后,马上停止写入,有一拍的读出后,反压撤销。在读空fifo之前,必须有fifo的写入操作,以保证fifo不被读空,从而产生断流气泡。

假设每cycle都读,则在读完反压水位线深度数据时,第一笔写fifo命令产生。此时,

1)data产生到写入fifo路上时延N cycle;

2)fc发生后下一拍产生流控信号,data_gen停止产生data;

3)fc取消后,data_gen下两拍开始产生data;

4)此过程中每cycle都在读数据。

上述场景下,当发生流控时,过冲的数据个数是N+1,当取消流控时,产生数据的时延是N+2,因此fifo的深度H=N+1+N+2=2N+3。fifo深度只有大于这个数据才不会产生气泡断流。

二、异步async fifo

对于fc场景,异步fifo最大的问题是写读指针跨时钟域cdc同步中的时延。如果写指针同步到rclk为M个时延,读指针同步到wclk也为M个时延,则fifo深度H=2N+3+M+M=2N+2M+3。此处只是简单场景,真正计算深度时,还需考虑其它打拍,信号组合逻辑等产生的时延。




院士
2022-09-14 23:16:59     打赏
2楼

看看


高工
2022-09-15 04:48:37     打赏
3楼

感谢楼主的分享,很实用了。


专家
2022-09-15 06:29:58     打赏
4楼

学习一下


专家
2022-09-15 06:41:03     打赏
5楼

谢谢分享


专家
2022-09-15 07:25:15     打赏
6楼

看看


专家
2022-09-15 08:07:49     打赏
7楼

感谢分享


专家
2022-09-15 08:18:02     打赏
8楼

感谢分享


专家
2022-09-15 08:25:03     打赏
9楼

感谢分享


工程师
2022-09-18 23:57:56     打赏
10楼

计算的不错


共15条 1/2 1 2 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]