本文為明德?lián)P原創(chuàng)文章,轉(zhuǎn)載請注明出處!
一、摘要
明德?lián)P(MDY)在某個XILINX項目中,偶然性出現(xiàn)開機后通信出錯的情形,具體表現(xiàn)為反復開機測試400次后,約有1~2次通信異常,數(shù)據(jù)發(fā)不出去。經(jīng)過定位,是某個FIFO出現(xiàn)異常,時鐘正常、復位無效、寫使能有效的情況,空信號empty一直為1,即一直保持為空的問題。
二、項目背景
FIFO是FPGA項目中使用最多的IP核,一個項目使用幾個,甚至是幾十個FIFO都是很正常的。通常情況下,每個FIFO的參數(shù),特別是位寬和深度,是不同的。如果按照通常做法,每種位寬和參數(shù),都要打開FIFO IP核界面、命名(命名不好不好分辨需要的FIFO)、設(shè)置參數(shù)、生成并編譯IP核,工作量可以想象出來是非常多的。
明德?lián)P(MDY)在2021年承擔了多個基于XILINX芯片的研發(fā)項目,包括VPX網(wǎng)絡(luò)透明傳輸項目(芯片為XC7K325T-2FBG900)、某高端測試儀項目(芯片為XCKU060-FFVA1156)、某網(wǎng)閘設(shè)備項目(芯片為XC7Z030-FBG676)等,另外,明德?lián)P自研了基于XC7K325T-2FBG900和基于XC7K410T-2FBG900芯片的核心板,在XILINX研發(fā)領(lǐng)域擁有豐富的經(jīng)驗。
對于我們專門承接項目的團隊,絕不可忍受如此重復、枯燥、容易出錯的工作。經(jīng)過精心研究,終于發(fā)現(xiàn)XILINX的原語:xpm_fifo_async,是可以可參數(shù)化FIFO的位寬和深度的。即在設(shè)計時,不用生成FIFO IP,直接例化xpm_fifo_async,例化時定義好位寬和深度,就可以使用了。關(guān)于具體的使用方法,可以留意我們新出的文章教程。
本問題的出現(xiàn),就是在使用這個xpm_fifo_async時出現(xiàn)的。
三、問題現(xiàn)象
FPGA問題都不好定位,特別是偶然性出錯的問題,即使復現(xiàn)問題都要花大量精力。本問題出現(xiàn)的概率小于1%,即使概率如此之低,也是不得不去定位去做的工作。
在花費了一個月的時間,才定位到某個FIFO出現(xiàn)異常。為更加細致地確認是FIFO哪里出錯,使用ILA抓取FIFO的信號,包括寫使能、復位、空指示信號等。
如上圖所示,在FIFO寫使能有效時,empty信號仍然保持為空狀態(tài),導致數(shù)據(jù)無法傳輸。更奇怪的是,即使復位了這個FIFO,仍然是同樣現(xiàn)象。
四、問題分析
該問題非常之奇怪,從邏輯角度講,時序是正確的,那么IP核就應該正確,是不應該出現(xiàn)此問題的。
懷疑是FIFO使用不正確,如FIFO滿后還在寫,或者FIFO空后仍在讀。特意在ILA觸發(fā)寫使能、寫滿信號同時為1,看兩者是否有同時有效,沒有觸發(fā)到,說明沒有問題。
懷疑是寫時序不正確:為此,我們還反反復復地觀測寫時序,捕捉開機后的第一個寫時序,也是沒問題的。
懷疑處于復位狀態(tài):為此觀測復位信號,發(fā)現(xiàn)沒有處于復位狀態(tài),沒有問題。
在思考了多種辦法后,問題沒有解決。為此,不得不認真查閱xpm_fifo_async的官方資料,查看步驟:
vivodo-PROJECT MANAGER-Language Templates-Verilog-Xilinx Parameterized Macros(XPM)-XPM-XPM_FIFO-Asynchronous FIFO (xpm_ fifo async)。
通過調(diào)閱vivado中有關(guān)FIFO的說明,終于發(fā)現(xiàn)了問題。
如上圖所示,復位信號rst要求同步于WR_CLK時鐘。而我們的復位信號是異步信號,不滿足要求。
五、解決方法
對 FIFO中的復位信號進行異步信號同步化處理,即對復位信號進行延遲兩拍處理,如下圖所示:
上圖中,aclr是異步復位信號,經(jīng)過上圖中的148~153行的代碼,將該信號同步化,同步化后的rst_ff3可以認為同步于寫時鐘。將該信號連接到rst中,如圖中的第142行。
每3分鐘重啟一次,經(jīng)過三天的嚴苛測試,再沒有出現(xiàn)通信異常問題,問題得到解決?。。?/span>
溫馨提示:明德?lián)P2023推出了全新課程——邏輯設(shè)計基本功修煉課,降低學習FPGA門檻的同時,增加了學習的趣味性,并組織了考試贏積分活動
http://www.cqqtmy.cn/ffkc/415.html
(點擊→了解課程詳情?)感興趣請聯(lián)系易老師:13112063618(微信同步)
明德?lián)P除了培訓學習還有項目承接業(yè)務(wù),擅長的項目主要包括的方向有以下幾個方面:
1. MIPI視頻拼接
2. SLVS-EC轉(zhuǎn)MIPI接口(IMX472 IMX492)
3. PCIE采集系統(tǒng)
4. 圖像項目
5. 高速多通道ADDA系統(tǒng)
6. 基于FPGA板卡研發(fā)
7. 多通道高靈敏電荷放大器
8. 射頻前端
需要了解相關(guān)信息可以聯(lián)系:易老師13112063618(微信同號)