微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 求教一个关于fifo深度问题

求教一个关于fifo深度问题

时间:10-02 整理:3721RD 点击:
写时钟频率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。

还有极端的情况为什么是2个burst呢,为啥不是3个,4个以及更多的burst呢



    因为背靠背的burst模式写FIFO将在2A个周期写入2A个数据;而不是按2B个周期写入2A个数据;

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top