在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2064|回复: 2

[求助] 求教一个关于fifo深度问题

[复制链接]
发表于 2016-4-6 11:24:52 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
写时钟频率w_clk,
读时钟频率r_clk,
写时钟周期里,每B个时钟周期会有A个数据写入FIFO
读时钟周期里,每Y个时钟周期会有X个数据读出FIFO
则,FIFO的最小深度是?


首先,我们可以认为写操作是Burst突发的。

其次,写操作的效率并不是100%的,而是A/B的,因此我们可以认为实际的F_wr = (A/B)*w_clk,同理,实际中F_rd = (X/Y)*r_clk。

另外,和第一个例子不同的是,这个题目里面并没有约束Burst突发的场景,在正常情况下,应该是这样的

空闲---Burst突发---空闲---Burst突发---空闲---Burst突发。但是我们在计算中,需要考虑最极端的情况,即

空闲---Burst突发---Burst突发---空闲---Burst突发---空闲。即传输过程中,可能会出现"背靠背"的情况,那么我们设计的FIFO深度必须能够保正,在"背靠背"的时间段内,如果接收方没法接受所有数据,那么剩余的数据可以被存储在FIFO内部且不会溢出。那么就可以开始计算了。假设"背靠背"时发送的数据 = BL,那么"背靠背"的时间 =  BL / w_clk ,注意,这段时间内 F_wr = w_clk  而不是之前提到的 (A/B)*w_clk。?????在这段时间内,接收方可以接受的数据 = (BL / w_clk)  * (X/Y)*r_clk ,

剩下的数据量 = BL -  ( BL / w_clk ) * (X/Y)*r_clk,那么FIFO的深度至少就要为

" depth =  BL -  ( BL / w_clk ) * (X/Y)*r_clk "这样的深度了
这个例子讲解中
??
请教为什么这段时间内 F_wr = w_clk  而不是之前提到的 (A/B)*w_clk。
 楼主| 发表于 2016-4-6 11:26:09 | 显示全部楼层
还有极端的情况为什么是2个burst呢,为啥不是3个,4个以及更多的burst呢
发表于 2016-4-7 12:20:53 | 显示全部楼层
回复 1# chang75161


    因为背靠背的burst模式写FIFO将在2A个周期写入2A个数据;而不是按2B个周期写入2A个数据;
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-22 03:16 , Processed in 0.030719 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表