|
发表于 2014-11-27 08:16:34
|
显示全部楼层
回复 10# qqiummo
第一个问题:异步FIFO如果始终读比写慢的话,那么FIFO一定会溢出。所以总体来说,写入FIFO的数据,一定能够在一定时间内读完,所以肯定读要快,哪怕是快一点点也是快,对不对。这里“总体”我写的含糊,没啥具体含义的。
第二:你研究的挺仔细的,我倒是没注意到这一点,我们平常算法不会这么抠这个(不够学术化),简单来说,在写burst_length这么多数据的时间内,能读出去多少,这两个值一减,就得到FIFO的深度,做工程的时候,一般会再留点裕量,确保不会出问题。这个裕量就靠估计了,芯片资源紧张的,少估一点,资源宽松的,多放一点。另外,异步FIFO的深度,因为要格雷码,所以要是4,8,16,32,以此类推,所以,我们一般算的深度不大可能正好就是这个深度,所以一般都会放大到2的幂次方深度。。。
总之,异步FIFO深度计算这种题目,水很深的
我举个例子给你,我曾经出过一个笔试题目,设计一个弹性FIFO(Elastic FIFO),已知网络数据包最大长度1兆字节,包与包之间有足够间隔,包间隔不需要push进FIFO,写时钟和读时钟是125M,但是其之间有100个PPM的误差,请问这个读写之间的异步FIFO设计要多深(多少字节)。
这里考察的点大概有:
1. PPM是啥意思。
2. 简单异步FIFO设计的深度计算,
3. 异步FIFO 格雷码要是2的幂次方。
4. 弹性FIFO的特点。
一般的会答出全部答案的学校学生,我觉得挺厉害的了。很多人都看不到这里考察的几个点。能看到1,2就算不错。 |
|