本工程基於以下條件使用:
板卡:DBF板v3.0 芯片型號:Virtex6 315T ISE版本:14.7 IP核版本: v6_gtxwizard : 1.12
一、IP核配置進行流程
第一頁配置:線速率和編碼
TX、RX的 Line Rate 、Data Path Width 、Reference Clock根據項目的實際情況進行選擇 Reference Clock :表示 外界時鐘輸入給GTX模塊的參考時鐘
注:
紅色框代表必須按照截圖設置。 綠色框代表根據項目需求進行設置。 黃色框代表,可自由選擇項。
第二頁配置:參考時鐘位置選擇
此處必須參考原理圖選擇REFCLK。
第三頁配置:同步和對齊
RXUSRCLK Source 一般選擇 RERECCLK,但是在位寬32bit,且使用GTX格式較多的情況下,建議選擇TXOUTCLK因為這樣可以節省出大量的BUFG資源。 RX Comma Alignment部分,Xilinx 在V6系列處理的不好,設置作用不是很明顯,還是有翻轉情況出現。
第四頁配置:預加重,終端、均衡
Enable DFE : 當外部信號傳輸質量比較差(>100ppm)時,建議選上。 Rx Equalization:此處保持默認即可,當實際工程中,發現誤碼較高時,可以在程序中動態修改此值。 Post Emphasis:當對方接受誤碼較高時,可適當修改此值進行調試。
第五頁配置:失同步狀態機
保持默認不變
第六頁配置:通道綁定
此功能沒有用過,保持默認不變
第七頁配置:時鐘校准
Use Clock Correction :在同源時鐘下可以不選擇 Sequence : 00011100,配置向導中使用了此值即K28.0,實驗室所有的項目也是按照此值配置的。但是個人認為按照我們平時習慣用法,此值應該配置成10111100,K28.5。經簡單測試沒有發現問題,但未在任何大型項目上驗證過。
工程使用說明
基本使用方法
當IP核生成以後將如下文件添加到工程:
ip/[gtx核名].v ip/[gtx核名]_gtx.v ip/[gtx核名]/example_design/所有文件
在[gtx核名]_top 文件中將GTX0_RXENMCOMMAALIGN_IN,GTX0_RXENPCOMMAALIGN_IN括號內的值改為1(如下圖),這裡用到了多少了gtx模塊就要按照序號該幾處。
此時工程已基本可以仿真與簡單測試,在modlesim中切換到如下目錄,並輸入simulate_mti.do即可開始仿真。
..\imp\ip\fiber\simulation\functional
gtx重點信號線說明
在整個GTX工程中只需關注top層如下信號線即可。
TOP層輸入輸出端口
Qx_CLK0_MGTREFCLK_PAD_N_IN :x視實際位置而定,表示GTX參考時鐘 GTXTXRESET_IN\GTXRXRESET_IN:由用戶控制的TX/RX全局復位 RXN_IN :GTX接收引腳 TXP_OUT:GTX發送引腳
重要控制信號線說明
gtx0_loopback_i:gtx自環控制。
3’b000:非自環模式; 3’b001,近端PCS自環; 3’b010,近端PMA自環,一般仿真或單板測試時選擇此模式。 gtx0_rxnotintable_i :接收錯誤指示信號線:當接收到無法通過8b/10b解碼的數據時此信號線拉高,可以簡單的理解為接收到誤碼的標志。
重要數據時鐘信號線說明
接收
gtx0_rxusrclk2_i:當IP核配置第三頁的 RXUSRCLK Source 選擇 RXRECCLK時,每個gtx模塊單獨對應一個此類型時鐘。 gtx0_rxdata_i : 用戶接收到的數據 gtx0_rxcharisk_i: 用戶接收到的K碼,用於指示gtx0_rxdata_i數據類型。
當gtx0_rxcharisk_i某位為1時,表示gtx0_rxdata_i對應的某個8位為K碼。 發送
gtx0_txusrclk2_i:用戶發送時鐘,所有的gtx發送模塊均用此時鐘;當IP核配置第三頁的 RXUSRCLK Source 選擇 TXOUTCLK時,所有的gtx接收模塊也是用此時鐘。 gtx0_txcharisk_i:用戶待發送的K碼 gtx0_txdata_i:用戶待發送的數據
實際開發工程的使用
在實際開發中還需對工程做如下的修改,才更方便使用。
刪除例程測試部分
起點:從注釋Frame Generators處開始 終點:一直到代碼begin:no_chipscope,以上全部刪除。 其他:後面的vio,ila核內容一並刪除,以及一些其他導致報錯的多余代碼。
修改UCF文件
為了保證在以後大工程中使用gtx核時路徑不出問題,需對gtx的兩個ucf文件做如下修改。
xxx_attributes.ucf:在所有約束前加入*/
xxx_top.ucf:和上面類似,在User Clokc Constraints 和 mgt wrapper constraints 約束的前面加入 */