FIFO深度计算

FIFO深度计算公式:

对于读写同时进行的FIFO,有一个简便计算公式:

FIFO_Depth = Burst_length - Burst_length* (rd_clk/ wr_clk)*(rd_rate)

  • Burst_length:最大突发写长度
  • rd_rate :一个时钟周期内读取数据个数

1.笔试题1

设计同步FIFO,每100个cycle可以写入80个数据,每10个cycle可以读出8个数据,FIFO的深度至少为()
A. 16
B. 32
C. 64
D. 128

  • 写入最频繁的情况下,是连续的200个时钟内,有连续的160个时钟在写,即最大突发写长度Burst_length = 160;
  • 读时钟等于写时钟,rd_clk = wr_clk;
  • 读取速率rd_rate,每10个时钟周期读取8个数据,所以rd_rate = 8/10=0.8;
 FIFO_Depth = Burst_length -Burst_length* (rd_clk/ wr_clk)*(rd_rate)
            = 160160*1*0.8 
            = 32  

2.笔试题2

(字节)设计一个同步fifo,读写时钟相同,其中在写入时每100个时钟周期会写10个,具体哪个时刻写入不确定,在读出侧每10个cycle会读1个,计算最小深度?

  • 最大突发写长度 Burst_length = 20;
  • 读时钟等于写时钟,rd_clk = wr_clk;
  • 读取速率rd_rate,每10个时钟周期读取1个数据,所以rd_rate = 1/10=0.1;
 FIFO_Depth = Burst_length -Burst_length* (rd_clk/ wr_clk)*(rd_rate)
            = 2020*1*0.1
            = 18

3.笔试题3

ModuleA/ModuleB用的是同个Clock, Clock频率80MHz。ModuleA和ModuleB同时启动,ModuleA产生如下周期性的burst数据给ModuleB,一共产生8次burst。 burst rate : 1280Mbit/s,burst持续时间1us。burst内部速率均匀,burst周期5us,余下的4us内没有数据。ModuleB收到启动信号后,需要花10us做初始化,所以先把module A的数据缓存在ModuleB内部的同步FIFO中,同步FIFO位宽32bits,初始化结束后,ModuleB以640 Mbit/s的均匀速度从FIFO中读取数据。在满足功能需求的前提下,为了节省电路面积,要求FIFO size越小越好,以下四个选项的FIFO深度,选项()的FIFO深度符合要求:
在这里插入图片描述
A. 128

B. 64

C. 96

D. 160

  • 考虑最大数据情况,在ModuleB启动的10us内,ModuleA一直在传输数据,一共2us有效数据,需要存储1280Mbit/s * 2us = 2560bit. 在第11us,ModuleA传输数据 1280Mbit/s * 1us =
    1280bit,ModuleB读取 640 Mbit/s * 1us = 640 bit.
  • 共需存储 2560 + 1280 - 640 = 3200 bit,FIFO位宽32bits, FIFO深度:3200 bit / 32bit = 100, 故128符合要求。

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值