引用:
原帖由 windzjy 于 2007-1-14 17:18 发表
个人觉得,公式应该是这样:
A/(B * w_clk) = X/(Y * r_clk)
fifo_depth = burst_length - burst_length * X/Y * w_clk /r_clk
举例说明:
如果100个写时钟周期可以写入80个数据,10个读时钟可以读出 ...
我以前看到过这个公式,是用来计算同步fifo的。
你所举的那个例子, 如果呼入fifo的数据宽度和呼出相同的话,都设为w bit。那么呼如fifo的带宽就是200wbps,呼出fifo的带宽是100wbps。考虑链路利用率都是80%。那么呼入fifo的有效带宽是160wbps。呼出fifo的带宽是80wbps。现在看到矛盾了,由于输入输出带宽不相等,进来永远比出去多,那么FIFO总是处于不断积累数据的状态。所以lz所举的这个例子并不合适。
应该提高读时钟的速率,使fifo两端的带宽匹配,在这个前提下才能计算出有解的fifo深度。
如果令wclk=rclk (以下内容中的clk表示时钟的频率,不是周期)。可使得读写带宽匹配。那么这个例子的答案是32
原因如下: 考虑背靠背的情况,160个wclk连续都写入了160个数据。而这160个wclk时间内,由于wclk=rclk,那么读出了(16/10 )×8=128个数据。有32个数据会被留在fifo里。那么fifo的最小深度就是32。
如果令wclk=200mhz,改为100个wclk里写入40个,rclk=100mhz,10个rclk里读出8个。那么fifo深度为48
[
本帖最后由 wice3 于 2007-1-15 14:52 编辑 ]