【摘要】 本文結(jié)合某單板(下文中統(tǒng)一稱M單板)FPGA調(diào)試過程中發(fā)現(xiàn)地彈噪聲造成某重要時鐘信號劣化從而導(dǎo)致單板業(yè)務(wù)丟包的故障,來談下如何最大程度地降低地彈噪聲對單板信號完整性影響。 一、故障現(xiàn)象 M單板在進行業(yè)務(wù)調(diào)試時發(fā)現(xiàn):如果只有上行方向有業(yè)務(wù),上行業(yè)務(wù)正常無丟包;如果只有下行方向有業(yè)務(wù),下行業(yè)務(wù)也正常無丟包;如果雙向都有業(yè)務(wù),下行業(yè)務(wù)丟包嚴重,上行業(yè)務(wù)正常。同時高溫情況下比常溫下丟包更加嚴重。 二、故障分析 通過邏輯內(nèi)部定位發(fā)現(xiàn)丟包地點為下行SSRAM讀寫處,即下行業(yè)務(wù)包寫入SSRAM,再讀出后包內(nèi)容出錯導(dǎo)致報文丟棄。FPGA外掛SSRAM結(jié)構(gòu)框圖見圖1,進入FPGA內(nèi)部的上行業(yè)務(wù)和下行業(yè)務(wù)都需要通過各自的SSRAM進行緩存來實現(xiàn)一些功能。其中上行SSRAM的讀寫使用的是125M的本地晶振時鐘,而下行SSRAM使用的是38M系統(tǒng)時鐘。 圖1 FPGA外掛SSRAM原理框圖 從故障現(xiàn)象來看,不是簡單的時序問題,因為單獨只有上行業(yè)務(wù)或下行業(yè)務(wù)時,業(yè)務(wù)都正常。而上下行同時有業(yè)務(wù)處理時,下行業(yè)務(wù)就會丟包,因此懷疑是上行的業(yè)務(wù)干擾了下行的業(yè)務(wù)。而下行業(yè)務(wù)受到干擾的最大可能就是下行SSRAM的時鐘信號受到了干擾。 為了驗證此猜測,我們做的如下實驗:使用高速示波器測量CLK_38M時鐘,比較只有下行業(yè)務(wù)和上下行業(yè)務(wù)同時都有時的信號波形,看是否有區(qū)別。測試結(jié)果見圖2和圖3。比較可看出,只有下行業(yè)務(wù)時,時鐘信號質(zhì)量很好,而上行業(yè)務(wù)也有時,時鐘的上升沿有一個明顯的回溝,而回溝的位置在2.0V左右,而2.0V是VIH的臨界電平,該回溝會導(dǎo)致FPGA誤判,這樣就會出現(xiàn)采樣點錯誤而導(dǎo)致采樣數(shù)據(jù)出錯。 圖2 只有下行業(yè)務(wù)時CLK_38M波形 圖3 上下行業(yè)務(wù)都有時CLK_38M波形 上行業(yè)務(wù)是怎樣影響到下行時鐘CLK_38M的呢?查看M單板的原理圖,發(fā)現(xiàn)CLK_38M和上行SSRAM的36根數(shù)據(jù)線在同一個I/O bank。那么最大可能便是上行SSRAM的數(shù)據(jù)線對CLK_38M進行了干擾。那么該干擾是FPGA內(nèi)部的地彈噪聲造成的還是FPGA外部PCB走線造成的呢?為了驗證此問題,又做了2個實驗。 實驗1:將圖4中的R141去掉,然后在跟FPGA相連的電阻焊盤上飛一根線直接到SSRAM的時鐘管腳,經(jīng)示波器測量后發(fā)現(xiàn)仍然存在干擾。 實驗2:將圖4中的R141去掉,在FPGA內(nèi)部將系統(tǒng)來的38M時鐘從另外一個bank的空余I/O口(該I/O本身有串阻引出)輸出,同時將引出的38M時鐘通過飛線連接到R141中與SSRAM相連的焊盤。經(jīng)過示波器測試,發(fā)現(xiàn)干擾消失,同時進行業(yè)務(wù)測試時發(fā)現(xiàn)上下行業(yè)務(wù)同時發(fā)包時,下行業(yè)務(wù)正常。 通過上面兩個實驗可以確認此故障確定是在FPGA內(nèi)部上行SSRAM的數(shù)據(jù)線翻轉(zhuǎn)時帶來的地彈噪聲,干擾了下行了CLK_38M時鐘,導(dǎo)致該時鐘質(zhì)量劣化而使得下行SSRAM讀寫出錯,最終導(dǎo)致下行業(yè)務(wù)丟包。 圖4 M單板原理圖截圖 三、原因分析 所謂“地彈”(ground bounce),是指芯片內(nèi)部“地”電平相對于PCB板“地”電平的變化現(xiàn)象。以PCB板“地”為參考,就像是芯片內(nèi)部的“地”電平不斷的跳動,因此形象的稱之為地彈。地彈是同步開關(guān)噪聲(Simultaneous Switching Noise,簡稱SSN)的一種,SSN是指當器件處于開關(guān)狀態(tài),產(chǎn)生瞬間變化的電流,在經(jīng)過回流途徑上存在電感,形成交流壓降,從而引起噪聲。如果是由于封裝電感引起地平面的波動,造成芯片地和系統(tǒng)地不一致便是地彈。 對于任何封裝的芯片,其引腳會存在電感電容等寄生參數(shù)。而地彈正是由于引腳上的電感引起的。 我們可以用圖5來直觀的解釋下。圖中開關(guān)Q的不同位置代表了輸出的“0”和“1”兩種狀態(tài)。假定由于電路狀態(tài)轉(zhuǎn)換,開關(guān)Q接通RL的低電平,負載電容對地放電,隨著負載電容電壓下降,它積累的電荷流向地,在接地回路上形成一個大的電流浪涌。隨著放電電路建立然后衰減,這以電流變化作用于接地引腳的電感,這樣在芯片外的PCB板“地”GNDPCB與芯片內(nèi)的地GNDA之間,會形成一定的電壓差,如圖中的VG。這種由于輸出電平轉(zhuǎn)換導(dǎo)致芯片內(nèi)部參考地點位漂移就是地彈。 SSN噪聲主要是伴隨著器件的同步開關(guān)輸出(SSO,即Simultancous Switch Output)而產(chǎn)生,開關(guān)速度越快,瞬間電流變化越顯著,電流回路上的電感越大,則產(chǎn)生的SSN越嚴重。此外考慮得更廣一點,除了信號本身回流路徑的電感之外,離的很近的信號互連線之間的串擾也是加劇SSN的原因之一。 圖5 地彈噪聲產(chǎn)生原理圖 而此故障確定是在FPGA芯片引腳有寄生電感。內(nèi)部上行SSRAM的數(shù)據(jù)線翻轉(zhuǎn)時帶來了地彈噪聲,干擾了下行了CLK_38M時鐘,導(dǎo)致該時鐘質(zhì)量劣化而使得下行SSRAM讀寫出錯,最終導(dǎo)致下行業(yè)務(wù)丟包。 四、解決與預(yù)防措施 了解了地彈噪聲的原理,就可以針對地彈產(chǎn)生的機制制定相應(yīng)的措施。 1)降低芯片內(nèi)部驅(qū)動器的開關(guān)速率和同時開關(guān)的數(shù)目。 2)為了減輕近距離信號互連線直接串擾,盡量減少被干擾信號周圍信號線的翻轉(zhuǎn)。 3)增大芯片地平面面積。 對于1)和2),考慮到SSRAM的讀寫帶寬有一定要求,讀寫的時鐘速率和數(shù)據(jù)線位寬不能隨意降低或減少。根據(jù)計算,做了如下調(diào)整:保持時鐘速率125M不變,將SSRAM的36根數(shù)據(jù)線減少到29根,減少的9根數(shù)據(jù)線為離CLK_38M最近的幾根。 對于3),將CLK_38M所在的I/O bank中沒有使用的I/O管腳在邏輯內(nèi)部都設(shè)置為輸出接地。 通過改進,CLK_38M時鐘質(zhì)量有所改善,回溝電平位置上升到2.3V左右。在常溫下只配置單路的雙向業(yè)務(wù)時,業(yè)務(wù)正常無丟包。但是當配置4路的雙向業(yè)務(wù)時,下行還是有少量丟包,高溫下丟包更加嚴重。 配置4路業(yè)務(wù)和配置1路業(yè)務(wù)的區(qū)別是,配置4路業(yè)務(wù)時,由于數(shù)據(jù)包的增多,SSRAM的數(shù)據(jù)線翻轉(zhuǎn)更加頻繁,導(dǎo)致地彈噪聲更加嚴重,因此回溝也越深,如圖6所示。 圖6 配置4路雙向業(yè)務(wù)時CLK_38M波形 通過查證,該FPGA芯片的抗噪能力這么差的原因是該芯片公司為了降成本,將芯片的封裝進行了簡化,芯片中原來4層的PCB簡化為2層,去掉了專有的電源層和地層,同時將金線變成了銅線。 因此在現(xiàn)有的芯片和PCB硬件設(shè)計上已經(jīng)沒有辦法再降低地彈噪聲了。正在無助的時候,思維轉(zhuǎn)了個方向。既然沒法降低地彈噪聲,那有沒有辦法降低地彈噪聲對時鐘信號的干擾呢? 如圖6所示,芯片之所以會產(chǎn)生誤判是因為正好在時鐘的上升沿上偶爾會出現(xiàn)回溝,如果回溝的位置不在上升沿,而是在高電平或是低電平的位置,不就可以避免誤判了嗎?而回溝偶爾出現(xiàn)在CLK_38M時鐘的上升沿,原因是上行SSRAM的數(shù)據(jù)線都在CLK_125M時鐘的上升沿翻轉(zhuǎn),而CLK_125M與CLK_38M時鐘不是同源的時鐘,會周期性的出現(xiàn)CLK_125M與CLK_38M同時翻轉(zhuǎn)的情況,也就是上行SSRAM的數(shù)據(jù)線在CLK_38M的上升沿處同時翻轉(zhuǎn)而產(chǎn)生翻轉(zhuǎn)噪聲。 為了將翻轉(zhuǎn)噪聲移到CLK_38M的高電平處,邏輯做了改動。即上行SSRAM不再采用CLK_125M時鐘,而是將下行的38M時鐘進行3倍PLL倍頻后得到116M時鐘,然后將116M時鐘進行移相80°(經(jīng)過示波器測量后得出的移向方案),由于116M時鐘38M是同源時鐘,因此相位關(guān)系是一定的,這樣可以保證116M時鐘和38M時鐘不同時翻轉(zhuǎn)。修改后CLK_38M時鐘波形如圖7所示,回溝移到了高電平處。 圖7 上行SSRAM時鐘改為116M并移相后的CLK_38M波形 同時為了改善CLK_38M時鐘上升沿變緩的問題,在硬件上將時鐘線的33歐姆串阻改為了0歐姆,且在邏輯內(nèi)部將時鐘線進行了上拉。經(jīng)過改進后,時鐘的上升時間明顯變短。 六、總結(jié) 經(jīng)過以上改進后,CLK_38M時鐘質(zhì)量有明顯改善,上升沿光滑,上升時間短。配置4路雙向業(yè)務(wù),48小時長期常溫和高低溫情況下進行測試,業(yè)務(wù)正常,沒有再出現(xiàn)下行丟包的情況。 通過M單板調(diào)試過程中出現(xiàn)的地彈噪聲干擾38M時鐘信號的故障及解決方法??偨Y(jié)出以下幾點: 1)在FPGA硬件設(shè)計中,比較重要的信號,例如時鐘和復(fù)位線等,盡量不要和多根翻轉(zhuǎn)頻繁的信號線放置在同一個I/O bank。 2)在FPGA硬件設(shè)計中,比較重要的信號,例如時鐘和復(fù)位線等,在其臨近的周圍I/O中不要安排翻轉(zhuǎn)比較頻繁的信號線,避免線間干擾。 3)在FPGA邏輯設(shè)計中,沒有使用的I/O空余管腳最好設(shè)置為輸出接地,以增大地平面面積。 4)如果地彈噪聲無法避免,可以通過避免其他大量信號線和重要信號線同時翻轉(zhuǎn)的方式,降低地彈對重要信號線的影響。 5)對于地彈造成的重要信號線上升沿變緩的情況,可以通過加大被干擾信號的驅(qū)動電流,降低干擾信號的驅(qū)動電流的方法。同時將被干擾信號線在邏輯內(nèi)部上拉。這些方法可以大大減小被干擾信號的上升時間,改善信號質(zhì)量。
?
?
評論
查看更多