如何计算异步FIFO深度

如题所述

第1个回答  2015-08-25
异步FIFO最小深度计算原理

      如果数据流连续不断则FIFO深度无论多少,只要读写时钟不同源同频则都会丢数;
FIFO用于缓冲块数据流,一般用在写快读慢时,遵循的规则如下:

{FIFO深度 /(写入速率 - 读出速率)} = {FIFO被填满时间}  >  {数据包传送时间}= {写入数据量 / 写入速率}

即:确保对FIFO写数据时不存在overflow,从FIFO读出数据时不存在underflow.

     例:A/D采样率50MHz,dsp读A/D读的速率40MHz,要不丢失地将10万个采样数据送入DSP,在A/D在和DSP之间至少加多大容量(深度)的FIFO才行?
100,000 / 50MHz = 1/500 s = 2ms
(50MHz - 40MHz) * 1/500 = 20k既是FIFO深度。

一种错误的算法(我也犯了同样的错误):
100,000 / 40MHZ= 1/400s = 2.50ms
(50M - 400M)*1/400 =25K.那么这样进去的数据就不是100K了,而是100K+50M*(0.0025-0.002)=125,000bit,错误在时间的计算。本回答被提问者和网友采纳

如何计算异步FIFO深度
异步FIFO最小深度计算原理       如果数据流连续不断则FIFO深度无论多少,只要读写时钟不同源同频则都会丢数;FIFO用于缓冲块数据流,一般用在写快读慢时,遵循的规则如下:{FIFO深度 \/(写入速率 - 读出速率)} = {FIFO被填满时间}  >  {数据包传送时间}...

异步FIFO的实现(从verilog代码到波形)下
RAM_DEPTH参数定义RAM深度,与地址宽度紧密相关,具体为RAM_DEPTH等于2的ADDR_WIDTH次方。RAM设计中,通过循环控制写入与读取过程,确保数据的正确存储与检索。写入时,根据写使能与地址,将数据写入相应位置;读取时,直接读取对应地址的数据至读数据端。其次,异步FIFO的Testbench搭建遵循同步FIFO模式。构建Te...

详解Altera 异步 FIFO IP 配置及注意事项
在配置 DCFIFO 时,首当其冲的是类型、深度与数据位宽的设定。如图 1 所示,选择 DCFIFO(异步FIFO)进行配置,并确保输入与输出数据位宽满足2n的倍数关系,以兼容不同频率的输入输出。若输入数据位宽与输出数据位宽不同,应勾选“Use a different output width”,填写输出数据位宽,确保二者满足上述要求。

【FIFO漫谈】异步FIFO·二进制与格雷码转换的技巧
对于深度为5的FIFO,当低位计满后,跳转至高位为1的点,即从4('b0110)跳至8('b1000),偏移量为3。通过这种方式,高位为1的计数值实际上是减去偏移量后的正常指针位置。为实现此设计,深度为DEPTH的FIFO,需要调整地址位宽ADDR_W,以确保低位计满时的跳转符合格雷码连续性原则。计算公式为:[公...

异步fifo写时钟 快读时钟慢会使格雷码失效么
异步FIFO最小深度计算原理 如果数据流连续不断则FIFO深度无论多少,只要读写时钟不同源同频则都会丢数; FIFO用于缓冲块数据流,一般用在写快读慢时,遵循的规则如下: {FIFO深度 \/(写入速率 - 读出速率)} = {FIFO...

什么是FIFO缓存队列
FIFO的深度:THE DEEPTH,它指的是FIFO可以存储多少个N位的数据(如果宽度为N)。如一个8位的FIFO,若深度为8,它可以存储8个8位的数据,深度为12 ,就可以存储12个8位的数据,FIFO的深度可大可小,个人认为FIFO深度的计算并无一个固定的公式。在FIFO实际工作中,其数据的满\/空标志可以控制数据的...

笔试题-2023-思特威-FPGA【附答案及解析】
在2023年的思特威FPGA笔试题中,涉及了FPGA设计中的几个关键概念。第一题测试了异步FIFO的深度计算。给定32位宽的FIFO,写入时钟频率200MHz,读取时钟频率100MHz,数据包大小为8KB,当包间隔足够大时,最小的FIFO深度为1550个存储单元。答案为D,解析详细解释了深度计算过程。第二题涉及二进制运算和逻辑...

请教关于异步FIFO设计的问题
也就是判断为空的时候,其实有可能写入了数据,也就是不一定是空的。如果直接用rptr==wptr判断空满,因为是异步时钟,可能判断的过程中出现了读或者写的操作,这样可能会出错。用延迟后的读写指针比较,这样虽然可能空满判断不准确,这就是浪费了一些fifo空间,但是不至于出现错误。

异步FIFO设计(1)
在设计异步 FIFO 时,首先需要考虑的是如何在复位状态下产生读空和写满信号。具体来说,当读指针与写指针相等时,读空信号生效;而当写指针比读指针多一圈时,即写满信号生效。这看起来似乎与两者相等的条件重叠,但实际上通过将指针位宽增加一位,可以实现区分读空与写满:相同位数时为读空,不同...

同步FIFO和异步FIFO总结
在设计FIFO时,关键在于空满状态的检测,这涉及到读写指针的管理以及可能的额外位(如MSB)处理。同步FIFO通过data_count和指针对比判断空满,异步FIFO则通过gray码同步后的比较。最小深度的计算则需要考虑数据突发速率和突发长度等因素。在使用FIFO IP核时,要注意接口形式(Native或AXI)、硬件资源选择(...

相似回答