FIFO深度计算

参考:数字IC笔试题(12)——FIFO深度计算【异步FIFO】【同步FIFO】1. 假设两个异步时钟clk_a和clk_b,clk_a=148.5M,clk_b=140M。如图所示,https://mp.weixin.qq.com/s/GUuWp_N5B8yiVMUr-GLwFg

 

一、异步FIFO

1. 假设两个异步时钟clk_a和clk_b,clk_a=148.5M,clk_b=140M。如图所示,clk_a时钟域中连续1920个16bit的数据通过data_valid标记,有效数据之后,紧接着720个无效数据时钟周期。请问,该数据通过异步fifo同步到clk_b时钟域,异步fifo的最小深度是多少?请写出计算过程。

 理解:FIFO不溢出,必须满足输出带宽小于或者等于输入带宽。考虑最恶劣情况(第一个数据周期的1920CLK在周期的后面,第二个数据周期的1920CLK在周期的前面,俗称“背靠背”),即数据全部集中在3840CLK之内(1920+1920)。由于输入带宽148.5MHz*16bit大于出入带宽140MHz*16bit,要想数据不丢失,需要添加FIFO缓存数据。使得单位单位时钟(3840CLK)内输入=输出+FIFO;

在CLK_A时钟域下,时间T1=3840*(1/clk_a)ns;

在CLK_B时钟域下,T1时间一共存在CNT_CLKB=T1/(1/clk_b)=570240/140 ≈ 3620;

在T1时间段内,写入3840个CLK,读出3620个CLK 。所以最少需要缓存3840-3620=220个16bit数据。

二、同步FIFO

同步FIFO,读写时钟相同,每100CLK写入10个数据,每10个CLK读出1个数据,计算FIFO最小深度?

考虑写数据的连续200个CLK周期,前一个100CLK记作TimeA,后一个记作TimeB,写数据的恰好在TimeA的最后和TimeBd 最前,即20个CLK周期发生连续的20次读写,而对应的20个时钟周期读出2个数据,所以这里需要最小的深度20-2=18。

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值