|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
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。 |
|