Verilog面試題:請問至少需要深度為多少的FIFO
[導讀]兩個系統(tǒng)(SystemA和SystemB),使用兩個不同的時鐘clkA(100MHz)和clkB(70MHz)。這兩個時鐘彼此之間都是異步的。數(shù)據(jù)必須從SystemA傳遞到SystemB。SystemA能夠在100個時鐘周期內(nèi)寫入70個word的數(shù)據(jù),而SystemB在每個時鐘周...
兩個系統(tǒng)(SystemA和SystemB),使用兩個不同的時鐘clkA(100MHz)和clkB(70MHz)。這兩個時鐘彼此之間都是異步的。數(shù)據(jù)必須從SystemA傳遞到SystemB。
SystemA能夠在100個時鐘周期內(nèi)寫入70個word的數(shù)據(jù),而SystemB在每個時鐘周期都能夠讀取一個word的數(shù)據(jù)。請為上述規(guī)格設計一個具有最小深度的FIFO。
為了避免溢出(即由于FIFO寫快讀滿導致寫入的數(shù)據(jù)被覆蓋),我們需要計算在最壞情況下FIFO所需的深度。?對于SystemA 100個時鐘可以寫入70個word數(shù)據(jù),這意味最快可以在70個時鐘周期內(nèi)完成數(shù)據(jù)傳輸,另外30個時鐘周期處于空閑狀態(tài)。而最壞情況下從第101個時鐘周期開始又連續(xù)傳輸70個word數(shù)據(jù)。
SystemA能夠在100個時鐘周期內(nèi)寫入70個word的數(shù)據(jù),而SystemB在每個時鐘周期都能夠讀取一個word的數(shù)據(jù)。請為上述規(guī)格設計一個具有最小深度的FIFO。
為了避免溢出(即由于FIFO寫快讀滿導致寫入的數(shù)據(jù)被覆蓋),我們需要計算在最壞情況下FIFO所需的深度。?對于SystemA 100個時鐘可以寫入70個word數(shù)據(jù),這意味最快可以在70個時鐘周期內(nèi)完成數(shù)據(jù)傳輸,另外30個時鐘周期處于空閑狀態(tài)。而最壞情況下從第101個時鐘周期開始又連續(xù)傳輸70個word數(shù)據(jù)。
<---30---><---70---><---70---><---30---><--first burst-----><---second burst--->根據(jù)最壞的情況,在兩次共140個數(shù)據(jù)寫入期間可以讀出數(shù)據(jù)為:140*(1/100MHz)*70MHz *1 = 98word所以在140次寫數(shù)據(jù)期間最多只能讀98次。剩下的數(shù)據(jù)呢?它不應該丟失。我們需要把它們保存在FIFO中,所以FIFO的最小深度應該是140-98 = 42 




