ADI生產的ADC會有很多測驗模式,并且有比較簡單的快速配置暫存器,
一般上手的時候,只需要按照快速配置暫存器設定回應的L/M/K/F/S,然后注意一下是否打開擾碼scrambling 模式,就可以正常使用了,
然后通過配置遞增碼判斷輸出的資料順序,即可完成ADC的資料獲取,
但是筆者在除錯AD9234的時候,由于原理圖繪制失誤,導致ADC輸出的SERDOUT3的P/N反向連接值FPGA GTP Bank,下面是遇到的問題,以及解決方法
1 問題發現——鏈路正常link,但GT3通道遞增碼有誤
如fig1所示

fig1 遞增碼-GT_rxdata數字量顯示結果
從上圖可以看出其它3個gt_rxdata均以正常的數字遞增,但是gt3就很詭異,十分例外,但是此時,鏈路依然是正常link,fig2是模擬量的顯示結果

fig2 遞增碼-模擬量輸出結果
另外我還測驗了其它測驗模式,JESD的鏈路測驗等等,結果居然發現,不管發中間碼、正滿量程、負滿量程、棋盤碼以及K碼,GT3的輸出跟其他三個通道結果一致,
我還利用AD9234 lane的映射關系,進行測驗,將lane0/1和lane2/3交換,結論是:lane3的硬體有問題,
這個時候我還沒有懷疑我的原理圖有問題,我懷疑是不是ADC內部這個通道有問題,或者FPGA的GTP有問題,后者我通過其他子板進行了驗證,FPGA端是沒有問題的,于是我就更加懷疑是不是ADC的問題,所以就上了ADI的論壇進行提問,
老外回復的很快,基本上一天就回復(有時差,一般晚上十點左右收到回復),老外看完我的描述之后,直接就讓我換一下GT3的P/N的順序,見Fig3,一眼就看出問題來了,真的很厲害,這是我才去檢查我的硬體電路,發現確實有問題,,,就是開頭所說,P/N畫反了,,

Fig3 ADI論壇老外的回復
找到問題之后,剩下的就好辦了,下一步就是如何在FPGA內交換P/N順序,老外其實高速了手冊中的位置,
2 如何在FPGA內交換GTP輸入管腳的順序
由于GTP是硬core,直接修改管腳約束檔案是不行的,不要做無謂的嘗試了,
參考老外的手冊,UG576 的table 4-22.如Fig4所示

Fig4 UG576 的table 4-22
這里告訴你,需要把這個地方改成1‘b1就可以了,UG482的157頁也一樣有介紹,
然后在邏輯中找到相應的位置,如Fig5所示

Fig5 JESD PHY中對應的RX_Polarity
接下來就是如何修改了,這個事實上就是“如何修改IP核的原始碼”,網上搜一下有很多做法,我是按照以下步驟進行的:
1.首先在邏輯中查看Fg56 中jesd phy檔案的路徑,FiG5中的正上方其實有寫,直接右鍵copy就行,
2.修改相應路徑下中的jesd phy 的polarity為1(在362行)如Fig6,然后洗掉dcp檔案,如Fig7
3.再次回到邏輯工程中,右鍵bd,點擊generat outputs,如Fig8
4.然后重新綜合
5.查看綜合后網表,見Fig9,發現polarity上拉成功!!!!
至此,bug已經修復,嘗試用遞增碼再次測驗,結果如Fig10所示

Fig6 修改邏輯介面為1

Fig7 洗掉該路徑下的.dcp檔案

Fig8.1 generate output products

Fig8.2 生成后的彈窗

Fig9 綜合后生成的Schmatic中對應的信號線

Fig10 遞增碼結果(資料解碼后)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/249862.html
標籤:其他
上一篇:C++每日一題
