目录
前言
计算题一直是笔试中常见的一类题型,上文我们学会了建立时间和保持时间的计算方法,本文来学习一下FIFO的深度计算问题。
FIFO的深度问题是为了解决数据传输中的读写速率不匹配的问题,如果一个FIFO的写入速率比读出速率快,那么没来得及及时读出的数据就需要存储在FIFO中等待被读出。其实这就是一个比较简单的数学问题,可以联想到小学题目中给游泳池一边灌水一边放水(?)。
基础题
一般通常会见到题干是这样的:“一笔数据的个数N是120个,FIFO的写入时钟频率fw为80MHz,FIFO的读出时钟频率fr为50MHz,求FIFO的最小深度。”
其实这道题就是在问一个游泳池需要多大才能一边灌水一边放水,水还不能溢出游泳池。那么我可以直接用数据总量120,除以写入速率80MHz,可以得到一个灌水时间 T = 120 / 80MHz 。那么在这么长时间中,我们能放多少水呢?就是 n = T * 50MHz = 120 / 80MHz * 50MHz = 75 。所以我们至少需要一个 (120 - 75 = 45)这个大的一个游泳池才能满足要求,即就是我们所需要的FIFO最小深度为 45 。这里可以提炼出公式:最小深度 d = N - N / fw *