如(rú)果(guǒ)同(tóng)学们(men)的(de)問(wèn)題(tí)我(wǒ)们(men)帖子里(lǐ)面(miàn)沒(méi)有(yǒu)的(de)請第(dì)一(yī)时(shí)間(jiān)聯系(xì)我(wǒ)微信(xìn)同(tóng)步:18022859964江老(lǎo)师(shī),我(wǒ)们(men)对(duì)新問(wèn)題(tí)進(jìn)行補充!
通(tòng)过(guò)平时(shí)同(tóng)学们(men)反(fǎn)饋学習中(zhōng)經(jīng)常用(yòng)到(dào)的(de)学習點(diǎn),因(yīn)此(cǐ)明(míng)德揚最(zuì)近(jìn)做了(le)抖音(yīn)系(xì)列短(duǎn)視頻,都是(shì)一(yī)些FPGA学習技巧分(fēn)享,
大家(jiā)感(gǎn)興趣可(kě)以(yǐ)關(guān)注明(míng)德揚抖音(yīn)号(hào):87481069842.內(nèi)容不(bù)斷更(gèng)新!記(jì)得關(guān)注點(diǎn)赞学習不(bù)迷路(lù)!
【問(wèn)題(tí)1】FIFO總(zǒng)共(gòng)128个(gè)數據(jù),都读(dú)到(dào)128个(gè)數據(jù)後(hòu),usedw对(duì)應(yìng)還(huán)是(shì)1,而(ér)不(bù)是(shì)預期(qī)的(de)0。
總(zǒng)結:对(duì)于(yú)FIFO出(chū)現(xiàn)了(le)”莫名其妙問(wèn)題(tí)“时(shí),需要(yào)嚴谨檢查和(hé)确認。
建議的(de)方(fāng)法:
a. 直(zhí)接看(kàn)FIFO这(zhè)个(gè)IP核的(de)輸入(rù)輸出(chū)信(xìn)号(hào),例如(rú)读(dú)使能(néng)、写使能(néng)、写數據(jù)、空信(xìn)号(hào)、滿信(xìn)号(hào)等。写一(yī)个(gè),确認;读(dú)一(yī)个(gè),再确認。
b. 注意(yì)FIFO滿时(shí)不(bù)要(yào)再写,FIFO空的(de)时(shí)候不(bù)要(yào)再读(dú),否則会(huì)出(chū)現(xiàn)意(yì)想(xiǎng)不(bù)到(dào)的(de)錯誤。
【問(wèn)題(tí)2】对(duì)于(yú)双(shuāng)时(shí)鐘(zhōng) show ahead 模式,給(gěi)出(chū)第(dì)一(yī)个(gè)读(dú)使能(néng)为(wèi)啥读(dú)出(chū)數據(jù)不(bù)对(duì)呢?

答(dá):首先(xiān),從波(bō)形图(tú)看(kàn)到(dào)的(de)信(xìn)息,數據(jù)为(wèi)“0”,而(ér)不(bù)是(shì)“沒(méi)有(yǒu)數據(jù)”。
其次(cì),假如(rú)第(dì)一(yī)个(gè)數據(jù)不(bù)对(duì),需要(yào)看(kàn)前(qián)面(miàn)的(de)第(dì)一(yī)个(gè)写使能(néng)有(yǒu)效的(de)时(shí)候,写數據(jù)是(shì)多(duō)少(shǎo)。即檢查第(dì)一(yī)个(gè)写數據(jù)和(hé)第(dì)一(yī)个(gè)读(dú)到(dào)的(de)數據(jù)正(zhèng)不(bù)正(zhèng)确。
【問(wèn)題(tí)3】FIFO中(zhōng)的(de)空信(xìn)号(hào)有(yǒu)延遲怎麼(me)辦(bàn)?
答(dá):1.写數據(jù)之後(hòu),过(guò)一(yī)段(duàn)时(shí)間(jiān)empty信(xìn)号(hào)才變(biàn)低,这(zhè)个(gè)延时(shí)是(shì)FIFO的(de)特(tè)性(xìng),是(shì)固有(yǒu)的(de);
2.其次(cì),这(zhè)个(gè)空指示信(xìn)号(hào)的(de)延时(shí)不(bù)会(huì)对(duì)設計(jì)有(yǒu)影響:空信(xìn)号(hào)一(yī)般用(yòng)于(yú)读(dú)側,有(yǒu)數據(jù)就(jiù)读(dú),沒(méi)數據(jù)就(jiù)不(bù)读(dú),是(shì)不(bù)關(guān)心(xīn)延时(shí)的(de)。
3.FIFO里(lǐ)空信(xìn)号(hào)和(hé)滿信(xìn)号(hào)都是(shì)絕对(duì)是(shì)準确的(de),但是(shì)usedw信(xìn)号(hào)的(de)延时(shí)是(shì)不(bù)确定(dìng)的(de),所(suǒ)有(yǒu)要(yào)嚴格要(yào)求时(shí)序对(duì)齊的(de)就(jiù)不(bù)要(yào)用(yòng)usedw这(zhè)个(gè)信(xìn)号(hào)。
【問(wèn)題(tí)4】關(guān)于(yú)用(yòng)寄存器矩阵(zhèn)搭建一(yī)个(gè)8x32的(de)fifo,用(yòng)6位的(de)計(jì)數器指示读(dú)写指針(zhēn)和(hé)表(biǎo)示空滿,但是(shì)跨时(shí)鐘(zhōng)域需要(yào)打(dǎ)拍,那(nà)該如(rú)何準确的(de)判斷空滿信(xìn)号(hào)呢?
答(dá):該問(wèn)題(tí)應(yìng)該是(shì)有(yǒu)一(yī)个(gè)認識誤區(qū),認为(wèi)“準确判斷”指的(de)是(shì)“立刻实时(shí)指示”,也(yě)就(jiù)是(shì)誤以(yǐ)为(wèi),写一(yī)个(gè)數據(jù)進(jìn)去(qù),空信(xìn)号(hào)立刻變(biàn)成(chéng)非(fēi)空狀态。这(zhè)“立刻”其实是(shì)沒(méi)有(yǒu)必要(yào)的(de)。 正(zhèng)确的(de)做法是(shì),写一(yī)个(gè)數據(jù)進(jìn)去(qù),然後(hòu)內(nèi)部(bù)做跨时(shí)鐘(zhōng)域处理,隔幾(jǐ)个(gè)时(shí)鐘(zhōng)後(hòu),空信(xìn)号(hào)才變(biàn)成(chéng)非(fēi)空。虽然有(yǒu)延时(shí),但不(bù)影響狀态的(de)判斷。【問(wèn)題(tí)5】vivado fifo(深度(dù)为(wèi)32),almost_full是(shì)不(bù)是(shì)在(zài)写了(le)31个(gè)後(hòu)为(wèi)1,此(cǐ)时(shí)full为(wèi)0?同(tóng)理almost_empty是(shì)不(bù)是(shì)在(zài)读(dú)剩下(xià)1个(gè)深度(dù)數據(jù)的(de)时(shí)候为(wèi)1,并且此(cǐ)时(shí)emtpy为(wèi)0?
答(dá):almost_full是(shì)指将要(yào)滿,almost_empty是(shì)指将要(yào)空,至(zhì)于(yú)什麼(me)是(shì)“将要(yào)”,一(yī)般可(kě)由(yóu)用(yòng)戶来(lái)定(dìng)義。建議看(kàn)數據(jù)手(shǒu)册。
【問(wèn)題(tí)6】FIFO仿真(zhēn)的(de)时(shí)候,读(dú)數據(jù)和(hé)写數據(jù)个(gè)數对(duì)應(yìng)不(bù)上(shàng),如(rú)写5读(dú),只(zhī)读(dú)出(chū)2个(gè);如(rú)写了(le)5个(gè),读(dú)出(chū)6个(gè)等。
答(dá):經(jīng)常收(shōu)到(dào)学員反(fǎn)映,FIFO仿真(zhēn)的(de)时(shí)候读(dú)写的(de)个(gè)數不(bù)正(zhèng)确。經(jīng)过(guò)遠(yuǎn)程協助过(guò)多(duō)位学員後(hòu),均發(fà)現(xiàn)是(shì)学員自(zì)己沒(méi)有(yǒu)認真(zhēn)看(kàn)波(bō)形而(ér)誤解(jiě)的(de)。
當FIFO與(yǔ)預期(qī)不(bù)正(zhèng)确时(shí),應(yìng)該要(yào)仔细(xì)看(kàn)波(bō)形,具體(tǐ)怎麼(me)做?
1. 只(zhī)看(kàn)FIFO这(zhè)一(yī)模块(kuài)的(de)接口(kǒu)的(de)信(xìn)号(hào),不(bù)要(yào)外(wài)部(bù)的(de)信(xìn)号(hào)。(避免例化(huà)出(chū)錯的(de)情(qíng)況)
2.查看(kàn)写时(shí)鐘(zhōng)、写使能(néng)和(hé)写數據(jù),以(yǐ)写时(shí)鐘(zhōng)上(shàng)升(shēng)沿为(wèi)界,一(yī)个(gè)一(yī)个(gè)时(shí)鐘(zhōng)去(qù)看(kàn)写進(jìn)去(qù)的(de)數據(jù),用(yòng)笔(bǐ)記(jì)下(xià)来(lái)。
3.查看(kàn)读(dú)时(shí)鐘(zhōng)、读(dú)使能(néng)和(hé)读(dú)數據(jù),以(yǐ)读(dú)时(shí)鐘(zhōng)上(shàng)升(shēng)沿为(wèi)界,一(yī)个(gè)一(yī)个(gè)时(shí)鐘(zhōng)去(qù)看(kàn)读(dú)出(chū)来(lái)的(de)數據(jù),與(yǔ)写數據(jù)逐个(gè)核对(duì)。
4. 認真(zhēn)仔细(xì)核对(duì),不(bù)要(yào)马虎。
【問(wèn)題(tí)7】在(zài)仿真(zhēn)Vivado生(shēng)成(chéng)的(de)fifo的(de)时(shí)候,發(fà)現(xiàn)複位之後(hòu),沒(méi)有(yǒu)往fifo里(lǐ)面(miàn)写入(rù)數據(jù),仿真(zhēn)图(tú)如(rú)下(xià)图(tú)所(suǒ)示:写入(rù)的(de)數據(jù)依次(cì)为(wèi)1000、1001、1002一(yī)直(zhí)按順序往後(hòu),
仿真(zhēn)發(fà)現(xiàn)实際写入(rù)的(de)第(dì)一(yī)个(gè)數據(jù)为(wèi)1023,写使能(néng)、写时(shí)鐘(zhōng)、複位都沒(méi)有(yǒu)問(wèn)題(tí),这(zhè)是(shì)什麼(me)原因(yīn)造成(chéng)的(de)?
答(dá):該問(wèn)題(tí)是(shì)由(yóu)于(yú)使用(yòng)了(le)Vivado中(zhōng)FIFO的(de)”异(yì)步複位“導致(zhì)的(de),數據(jù)手(shǒu)册有(yǒu)说(shuō)明(míng),當使用(yòng)异(yì)步複位时(shí),分(fēn)为(wèi)两(liǎng)種(zhǒng)情(qíng)況,當具有(yǒu)安(ān)全(quán)電(diàn)路(lù)时(shí),複位後(hòu)需要(yào)有(yǒu)60个(gè)时(shí)鐘(zhōng)周期(qī)的(de)緩沖时(shí)間(jiān);
沒(méi)有(yǒu)安(ān)全(quán)電(diàn)路(lù)时(shí),複位後(hòu)需要(yào)有(yǒu)30个(gè)时(shí)鐘(zhōng)周期(qī)的(de)緩沖时(shí)間(jiān)。这(zhè)一(yī)操作的(de)目的(de)是(shì)为(wèi)了(le)避免故障和(hé)亞稳态的(de)出(chū)現(xiàn)。时(shí)序图(tú)如(rú)下(xià)图(tú)所(suǒ)示:


若使用(yòng)同(tóng)步複位,則不(bù)会(huì)出(chū)現(xiàn)上(shàng)述的(de)情(qíng)況。
【問(wèn)題(tí)8】 异(yì)步FIFO的(de)空和(hé)滿都不(bù)是(shì)絕对(duì)的(de),有(yǒu)时(shí)候异(yì)步FIFO中(zhōng)已經(jīng)有(yǒu)幾(jǐ)个(gè)數據(jù)了(le),也(yě)不(bù)会(huì)顯示非(fēi)空,同(tóng)樣(yàng),快(kuài)滿的(de)时(shí)候有(yǒu)时(shí)候就(jiù)会(huì)顯示已經(jīng)滿了(le),是(shì)这(zhè)樣(yàng)的(de)麼(me)?
要(yào)是(shì)这(zhè)樣(yàng)子的(de)話(huà),那(nà)麼(me)問(wèn)題(tí)来(lái)了(le),我(wǒ)現(xiàn)在(zài)如(rú)何能(néng)将异(yì)步FIFO读(dú)空呢?
答(dá):請看(kàn)本(běn)贴的(de)【問(wèn)題(tí)4】
【問(wèn)題(tí)9】請問(wèn)VIVADO使用(yòng)教程中(zhōng),FIFO模板在(zài)哪里(lǐ)可(kě)以(yǐ)下(xià)载?
答(dá):
mdyFifoAsyVivado.v
mdyFifoSynVivado.v
FIFO在(zài)FPGA開(kāi)發(fà)中(zhōng)經(jīng)常使用(yòng),圍繞着FIFO,可(kě)以(yǐ)完成(chéng)很多(duō)功能(néng)開(kāi)發(fà),如(rú)想(xiǎng)学習,可(kě)以(yǐ)購買(mǎi)FIFO專題(tí)課。
温(wēn)馨提(tí)示:明(míng)德揚除了(le)培訓学習還(huán)有(yǒu)項目承接業务,擅长的(de)項目主(zhǔ)要(yào)包(bāo)括的(de)方(fāng)向(xiàng)有(yǒu)以(yǐ)下(xià)幾(jǐ)个(gè)方(fāng)面(miàn):
1. MIPI視頻拼接
2. SLVS-EC轉(zhuǎn)MIPI接口(kǒu)(IMX472 IMX492)
3. PCIE采集系(xì)統
4. 图(tú)像項目
5. 高(gāo)速多(duō)通(tòng)道(dào)ADDA系(xì)統
6. 基于(yú)FPGA板卡(kǎ)研發(fà)
7. 前(qián)端模拟采集、射頻、電(diàn)荷靈敏前(qián)置放(fàng)大器
明(míng)德揚科技教育








