如何解决网站图片打开慢,网站如何做跳转,wordpress路由正则,传媒公司签约主播合同转自#xff1a;http://comm.chinaaet.com/adi/blogdetail/37555.html 首先#xff0c;一定要理解清楚FIFO的应用场景#xff0c;这个会直接关系到FIFO深度的计算#xff0c;如果是面试官抛出的问题#xff0c;那么有不清楚的地方#xff0c;就应该进行询问。如果是笔试或…转自http://comm.chinaaet.com/adi/blogdetail/37555.html 首先一定要理解清楚FIFO的应用场景这个会直接关系到FIFO深度的计算如果是面试官抛出的问题那么有不清楚的地方就应该进行询问。如果是笔试或者工程中需要计算FIFO深度的话那么就需要自己考虑清楚。 其次异步FIFO读写时钟不同频那么FIFO主要用于数据缓存我们选择的FIFO深度应该能够保证在最极端的情况下仍然不会溢出。因此考虑的前提一般都是写时钟频率大于读时钟频率但是若写操作是连续的数据流那么再大的FIFO都无法保证数据不溢出。因此可以认为这种情况下写数据的传输是“突发Burst”的即写操作并不连续设计者需要根据满标志控制或者自己来控制写操作的起止。 宏观地从整个时间域上看写数据读数据这个条件必须要满足如果这个大条件不满足的话用FIFO是没有效果的。但是在发送方突发发送数据的时间T内是很有可能写数据读数据的因此FIFO的深度要能够保证在这段时间T内如果接收方未能将发送方发送的数据接收完毕的话剩下的数据都是可以存储在FIFO内部而且不会溢出的那么在发送方停止发送数据的空闲时隙内接收方可以从容地接收剩下来的数据。 红字部分就是个人认为在FIFO深度计算中最重要的部分了。接着来看一个例子这是我看一个网友写时是他当时遇到的一道笔试题。 一个8bit宽的AFIFO输入时钟为100MHz输出时钟为95MHz设一个package为4Kbit且两个package之间的发送间距足够大。问AFIFO的深度。 因为这位网友可能只是简述因此信息并不完整我的个人理解是这样的场景一个异步FIFO读写频率不同读写位宽相同。发送发一次Burst突发的数据量为4Kbit即500Word在两次Burst突发之间有足够的时间因此我们只用考虑在发送方Burst发送数据的时间T内如果接受方没法将数据全部接受其余数据均可存在FIFO内且不溢出那么在发送方停止Burst发送数据的时间段内接收方就可以从容的从FIFO内读取数据。首先发送方Burst发送数据的时间段为 T 500/100MHz发送的数据量为 B_send 500word而在T这段时间内接收方能够接受的数据量为B_rec T*95MHz 500 * 95 / 100 word 475word因此 B_remain B_send - B_rec 500 - 475 25 。那么FIFO的深度至少要大于等于25才行。 再看另外一个例子还是从网上找到的 写时钟频率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 这样的深度了。 将上述公式变换下得到 depth BL - BL * (X/Y) * (r_clk/w_clk) 。这个公式就是网上流传的计算FIFO深度的公式我想应该就是这个推理过程吧。 上述的讨论的一个前提就是FIFO的读写位宽一致如果这个条件不满足的话那么FIFO的深度的计算就更加复杂一些但是我们还是可以把FIFO的读写位宽也折合成一定的因子带入 实际的F_wr (A/B)*w_clk 和 F_rd (X/Y)*r_clk 中去应该是是可以解决的。转载于:https://www.cnblogs.com/yangjun1219/p/5598982.html