原创 异步FIFO的深度计算....

2009-10-29 18:54 7081 4 5 分类: FPGA/CPLD

在郁闷了将近半个月,每次笔试每次头疼的异步FIFO的题目,总算有点头绪了。仔细整理下:


分类:


1、USBHUB中的Elasticity Buffer。具体如下,输入时钟transmit clock由bus提供,而输出时钟receive clock由系统内部提供,时钟允许的抖动jitter为500ppm。如果向最坏的方向来看,输入时钟和输出时钟相差1000ppm,如下图:


       


     发送一笔最大的length为9644bit,也就是说,在时钟的控制下,每次发送9644bit数据到E-Buffer中,每个时钟上升沿都要错开1000ppm,那么9644个bit传完,时钟沿错开的为9644*1000*10(-6)=9.644个bit,即,一笔传完,发送端发过来的数据比输出端输出的数据要多9.644个bit(从另一个角度说,就是发送端比输出端多9.664个上升沿。),因此E-Buffer中的一半容量为9.644个bit,为了裕度取12个bit。


2、via面试时出的题目


      一个8bit宽的AFIFO,输入时钟为100MHz,输出时钟为95MHz,设一个package为4Kbit,且两个package之间的发送间距足够大。问AFIFO的深度。


      此题目中,每次输入时钟上升沿来时,输入一个8bit,因此4Kbit需要(4000/8=500)个上升沿来发送,两个时钟,100MHz和95MHz,每个上升沿之间的产生的差为(1/95-1/100)*10(-6)=Xs,即两个时钟的周期之差。输入每个package时,需要500个上升沿,因此两路信号在500个上升沿后,会产生500*[X]=(5/19)*10(-6)s,那么就需要知道这Ys是多少个上升沿,Hz的意思是每秒的变化次数,因此1s有100MHz个上升沿,因此Ys有[Y*100(106)]=Z(26--27)个上升沿。这就是FIFO的深度,再绕一点,差出Z个上升沿,而每个上升沿传8个bit,因此就能输入Z*8bit的数据,AFIFO的宽度为8bit,因此深度为Z=27。


 

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户377235 2013-3-19 22:36

请问楼主,你最后的公式当中既有Y又有Z,你是怎么计算出深度的啊。求解释,还有你这个怎么和计算深度的经典公式fifo_depth = burst_length - burst_length * (X/Y) * (r_clk/w_clk)对应起来啊。求解释

相关推荐阅读
用户204616 2009-10-28 10:34
亚稳态metastability
1、亚稳态定义:      亚稳态:是指触发器无法在某个规定时间段内达到一个可确认的状态。当一个触发器进入亚稳态时,既无法预测该单元的输出电平,也无法预测何时输出才能稳定在某个正确的电平上。在这个稳定...
EE直播间
更多
我要评论
1
4
关闭 站长推荐上一条 /3 下一条