本(běn)文(wén)設計(jì)思(sī)想(xiǎng)采用(yòng)明(míng)德揚至(zhì)簡設計(jì)法。在(zài)使用(yòng)FPGA設計(jì)系(xì)統时(shí),常需要(yào)利用(yòng)FIFO進(jìn)行數據(jù)緩存保證數據(jù)不(bù)丢失,因(yīn)此(cǐ)計(jì)算FIFO深度(dù)是(shì)至(zhì)關(guān)重(zhòng)要(yào)的(de)。FIFO的(de)深度(dù)主(zhǔ)要(yào)取(qǔ)決于(yú)“最(zuì)惡劣”的(de)情(qíng)況,以(yǐ)下(xià)对(duì)于(yú)两(liǎng)種(zhǒng)最(zuì)常見(jiàn)的(de)场合進(jìn)行分(fēn)析。
一(yī).已知读(dú)写两(liǎng)側带(dài)宽(kuān)及(jí)最(zuì)惡劣情(qíng)況,求FIFO深度(dù)
对(duì)于(yú)异(yì)步FIFO,写时(shí)鐘(zhōng)100MHZ,读(dú)时(shí)鐘(zhōng)80MHZ。读(dú)写位宽(kuān)均为(wèi)16bit。已知每100个(gè)写周期(qī)最(zuì)多(duō)写入(rù)960bit數據(jù),读(dú)側每时(shí)鐘(zhōng)读(dú)取(qǔ)一(yī)个(gè)數據(jù)。問(wèn):FIFO深度(dù)至(zhì)少(shǎo)为(wèi)多(duō)少(shǎo)?
分(fēn)析:典型的(de)“背靠背”情(qíng)況,此(cǐ)时(shí)最(zuì)惡劣的(de)情(qíng)況是(shì)第(dì)一(yī)次(cì)100个(gè)写周期(qī)內(nèi)後(hòu)60个(gè)周期(qī)連(lián)續写入(rù)60个(gè)數據(jù)和(hé)第(dì)二(èr)次(cì)100个(gè)写周期(qī)內(nèi)前(qián)60个(gè)周期(qī)連(lián)續写入(rù)60个(gè)數據(jù)。故上(shàng)述最(zuì)惡劣情(qíng)況下(xià)的(de)連(lián)續写入(rù)120个(gè)數據(jù)後(hòu)FIFO內(nèi)緩存數據(jù)最(zuì)多(duō)。計(jì)算此(cǐ)时(shí)写入(rù)數據(jù)-該階(jiē)段(duàn)读(dú)出(chū)數據(jù)即为(wèi)FIFO的(de)最(zuì)小深度(dù)。
計(jì)算:t = 120*Tw
Nwr = 120
Nrd = t/Trd = 120*Twr/Trd = 120*frd/fwr = 120*80/100 = 96
x = Nwr - Nrd = 120 - 96 = 24.
由(yóu)于(yú)FIFO深度(dù)只(zhī)能(néng)取(qǔ)2的(de)整數次(cì)幂,因(yīn)此(cǐ)最(zuì)小深度(dù)为(wèi)2^5 = 32.
二(èr).为(wèi)保證數據(jù)連(lián)續輸出(chū),求读(dú)取(qǔ)前(qián)FIFO內(nèi)至(zhì)少(shǎo)緩存數據(jù)量(liàng)异(yì)步FIFO,写入(rù)时(shí)鐘(zhōng)80MHZ,读(dú)取(qǔ)时(shí)鐘(zhōng)100MHZ。數據(jù)位宽(kuān)1byte。写側連(lián)續写入(rù)均为(wèi)8192B长度(dù)的(de)數據(jù)包(bāo)。問(wèn):为(wèi)保證輸出(chū)連(lián)續不(bù)間(jiān)斷,存够多(duō)少(shǎo)數據(jù)後(hòu)才能(néng)開(kāi)始發(fà)送?
分(fēn)析:此(cǐ)场景为(wèi)写入(rù)一(yī)定(dìng)數據(jù)後(hòu)開(kāi)始读(dú)取(qǔ)FIFO,那(nà)麼(me)最(zuì)惡劣的(de)时(shí)刻當然是(shì)刚開(kāi)始读(dú)取(qǔ)的(de)时(shí)間(jiān)點(diǎn)。想(xiǎng)要(yào)保證輸出(chū)連(lián)續,則必須滿足:读(dú)取(qǔ)8192B數據(jù)期(qī)間(jiān)写入(rù)的(de)數據(jù)+已緩存數據(jù) ≥8192B
計(jì)算:t = 8192*Trd
Nrd = 8192
Nwr = t/Twr = 8192*Trd/Twr = 8192*fwr/frd = 8192*80/100 = 6553.6B
發(fà)送水(shuǐ)線(xiàn)x滿足 Nwr +x = 8192 --> x = 8192 - Nwr = 1638.4B
FIFO深度(dù)为(wèi)2^11 = 2048.