Verilog面试题:请问至少需要深度为多少的FIFO
时间:2021-11-15 15:02:44
手机看文章
扫描二维码
随时随地手机看文章
[导读]两个系统(SystemA和SystemB),使用两个不同的时钟clkA(100MHz)和clkB(70MHz)。这两个时钟彼此之间都是异步的。数据必须从SystemA传递到SystemB。SystemA能够在100个时钟周期内写入70个word的数据,而SystemB在每个时钟周...
两个系统(SystemA和SystemB),使用两个不同的时钟clkA(100MHz)和clkB(70MHz)。这两个时钟彼此之间都是异步的。数据必须从SystemA传递到SystemB。
SystemA能够在100个时钟周期内写入70个word的数据,而SystemB在每个时钟周期都能够读取一个word的数据。请为上述规格设计一个具有最小深度的FIFO。
为了避免溢出(即由于FIFO写快读满导致写入的数据被覆盖),我们需要计算在最坏情况下FIFO所需的深度。 对于SystemA 100个时钟可以写入70个word数据,这意味最快可以在70个时钟周期内完成数据传输,另外30个时钟周期处于空闲状态。而最坏情况下从第101个时钟周期开始又连续传输70个word数据。
SystemA能够在100个时钟周期内写入70个word的数据,而SystemB在每个时钟周期都能够读取一个word的数据。请为上述规格设计一个具有最小深度的FIFO。
为了避免溢出(即由于FIFO写快读满导致写入的数据被覆盖),我们需要计算在最坏情况下FIFO所需的深度。 对于SystemA 100个时钟可以写入70个word数据,这意味最快可以在70个时钟周期内完成数据传输,另外30个时钟周期处于空闲状态。而最坏情况下从第101个时钟周期开始又连续传输70个word数据。
<---30---><---70---><---70---><---30---><--first burst-----><---second burst--->根据最坏的情况,在两次共140个数据写入期间可以读出数据为:140*(1/100MHz)*70MHz *1 = 98word所以在140次写数据期间最多只能读98次。剩下的数据呢?它不应该丢失。我们需要把它们保存在FIFO中,所以FIFO的最小深度应该是140-98 = 42 




