Lattice Diamond Reveal SerDes Debug Core简明教程(For ECP5)
本文將以Lattice ECP5為例,簡要地介紹一下如何使用Diamond中的Reveal工具來調(diào)試SerDes/PCS。文中使用的Project在文章最后的附件中,Project是基于Lattice ECP5 Versa板寫的,可以直接使用。
1、插入Reveal SerDes Core
使用Reveal SerDes Debug Core有一個基本前提:在使用Clarity配置SerDes/PCS的時候,必須使能SCI(SerDes Client Interface)端口。用戶在完成RTL設(shè)計,確保設(shè)計可以沒有錯誤(可以通過PAR)后,便可以在Reveal Inserter中插入Reveal SerDes Debug Core。如下圖所示,在點擊Add New Core之后,有兩個選項,Add SerDes Debug便能插入Reveal Debug Core。需要注意的是,在插入Reveal SerDes Debug Core之前,需要先插入一個普通的Logic Analyzer Core。
點擊Add Serdes Debug之后,可以看到:
之后兩個信號需要輸入,其中Sample Clock建議使用與Serdes/PCS無關(guān)的時鐘,這里使用ECP5片內(nèi)的OSC產(chǎn)生的時鐘源。需要注意的是,SerDes Reset是高電平復(fù)位。
注:在SerDes Debug界面時,不要使用Signal Search功能,會導(dǎo)致Diamond閃退(部分版本)。
2、使用Reveal SerDes Core
插入成功之后,重新PAR,并生成bitstream,下載到板卡中,然后使用Reveal Analyzer工具,如下圖所示:
紅色圈出來的,便是與SerDes Debug Core相關(guān)的界面,其中SerDes Debug選項卡界面如下。左邊的三個燈分別表示Tx PLL、Rx信號擺幅和CDR的狀態(tài),綠色表示正常,紅色表示異常。
注:該界面顯示的延時一般較大,對于部分比較窄的脈沖可能不會被顯示出來。所以要確保相關(guān)信號有沒有問題,最好的辦法還是將相關(guān)信號作為Reveal的觸發(fā)條件,進行調(diào)試。
用戶可以通過此界面,修改SerDes/PCS的絕大部分參數(shù),觀察PLL/CDR的狀態(tài),還可以針對特定的模塊進行復(fù)位。另一個選項卡Wishbone Debug的界面如下:
用戶可以通過此界面實現(xiàn)對SerDes/PCS的寄存器的讀寫操作。
注:Tx Output to Rx 的Loopback模式有的時候會存在問題,原因是SerDes/PCS使用了Rx Loss of Signal作為Reset Sequence的輸入,而Loopback設(shè)置為此模式時,Rx Loss of Signal將會持續(xù)為高電平,導(dǎo)致Reset Sequence邏輯無法正常工作,進而導(dǎo)致SerDes/PCS復(fù)位異常。
注:Diamond 3.10以及之前的版本中的Reveal,在部分Win10系統(tǒng)中會有較多的Bug,請使用Win7系統(tǒng)或者更新至Diamond 3.11。
3、關(guān)于TN1261 Table18中的錯誤
Lattice ECP5 and ECP5-5G SerDes/PCS UG(TN1261)中的Table18(SCI Address Map for up to four SerDes/PCS Duals)似乎存在一些錯誤,建議按照下圖中藍色字體的方式設(shè)置SCI地址:
4、關(guān)于ECP5/ECP5-5G SerDes/PCS的調(diào)試建議
使用Diamond 3.10以及Diamond 3.11配置ECP5/ECP5-5G的SerDes/PCS后,自動生成的Reset Sequence邏輯(在*_softlogic.v中)和Diamond 3.9/3.8存在較大差異。Diamond 3.10/3.11產(chǎn)生的Reset Sequence邏輯主要針對了部分5G的應(yīng)用(PCIe Gen2等)做了優(yōu)化,但是對于non-5G應(yīng)用卻起到了負面作用,可能會導(dǎo)致部分配置下的復(fù)位異常,CDR無法正常鎖定等現(xiàn)象。所以,對于non-5G的應(yīng)用,建議使用Diamond3.9配置生成SerDes/PCS。
4.1、用戶首先要保證PLL Loss of Lock為穩(wěn)定的低電平(可以用Reveal工具,設(shè)置該信號為上升沿觸發(fā)),PLL Loss of Lock為高電平則表明Tx PLL失鎖。而導(dǎo)致Tx PLL失鎖最主要的原因便是參考時鐘的問題,如時鐘抖動過大,信號擺幅超出范圍等時鐘信號質(zhì)量問題。參考時鐘的問題也會進一步導(dǎo)致CDR無法正常工作,進而導(dǎo)致CDR失鎖。
4.2、如上圖所示,導(dǎo)致CDR失鎖的另一個重要的原因是輸入信號質(zhì)量,如信號的擺幅超出范圍,信號抖動過大等等。其中當信號擺幅超出范圍時,Rx Loss of Signal也會變高,表明當前輸入信號擺幅不符合要求。用戶可以在SerDes/PCS配置界面或者Reveal SerDes Debug Core中調(diào)整Tx De-Emphasis、Tx阻抗,Rx阻抗,AC/DC耦合,均衡等設(shè)置,來改善輸入信號的質(zhì)量(如果輸入信號到達ECP5之前已經(jīng)很差,這種改善可能意義不大)。用戶還可以重新設(shè)置Loss of Signal Detector的閾值,來觀察該信號的變化。
4.3、需要注意的是,Reset Sequence邏輯主要以Rx Loss of Signal、CDR Loss of Lock、Tx PLL Loss of Lock和用戶輸入復(fù)位信號作為輸入,進而產(chǎn)生復(fù)位輸出信號給到SerDes/PCS的各個具體的模塊。當上述三個信號出現(xiàn)異常,都可能會導(dǎo)致Reset Sequence邏輯重新復(fù)位,甚至復(fù)位異常。關(guān)于Reset Sequence的具體作用,用戶可以參考ECP5 SerDes/PCS UG的相關(guān)章節(jié)。
4.4、用戶如果發(fā)現(xiàn),SerDes信號的P/N設(shè)計反了,可以在配置界面或者Reveal SerDes Debug Core界面使能PN翻轉(zhuǎn)功能。
4.5、rx_disp_err_ch和rx_cv_err_ch信號表明發(fā)生了嚴重的錯誤,而導(dǎo)致錯誤的原因是輸入信號質(zhì)量不符合要求,用戶可以調(diào)整3.2中所述的相關(guān)參數(shù),看看是否能夠改善。
4.6、在確保前述所有信號均正常,用戶可以通過PRBS Check來評估各個通道的誤碼率(可以參考本文附件中的Project設(shè)計)。
4.7、注意SerDes/PCS的Rx和Tx分屬兩個不同的時鐘域,在使用Reveal的時候請注意跨時鐘域問題。包含SerDes/PCS的設(shè)計一般都是高速設(shè)計,請確保插入Reveal之后的整個設(shè)計,仍然能夠通過時序分析。?
本文所用的Project:(密碼為LatticeSemiconductor)ECP5_PCS_Test1.7z
注:需要更新ispClock的文件為:ispClock_Versa_Demos_156p25MHz.7z
注:原文最早發(fā)表于本人的ChinaAET博客(http://blog.chinaaet.com/justlxy/)
總結(jié)
以上是生活随笔為你收集整理的Lattice Diamond Reveal SerDes Debug Core简明教程(For ECP5)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: incc与oracle连接_Oracle
- 下一篇: AddTransient、AddSing