1. 程式人生 > >GTHE3開發記錄1

GTHE3開發記錄1

最近有個專案用到Xilinx公司KU系列的板子開發SATA3.0介面與SSD進行高速資料傳輸。鑑於工程有點複雜,藉此部落格做些記錄,也供大家共同進步。
Xilinx公司有提供了GTP、GTH、GTX、GTZ、GTY多種高速串並轉換口,在建立Vivado工程選擇晶片具體型號時就可以看到各個晶片所具有的資源數量。我使用的是xcku060-ffva1156-2-e型號具有28個GTHE3可呼叫高速串並轉換收發器。
萬事開頭難,首先在Xilinx官網上找到了pg182與ug576支援文件,又在AD巨頭提供的資源中找到了一個用在AD9371例程中呼叫GTHE3的開源IP Core,文末會給出資源連結。
之前使用過GTP,所以深知此類IP Core的Example Design的重要性。果然在pg182中就花費了大片篇幅講解Example Design中提供的模組使用方法。廢話不多說,分析如下:

1. Reset Controller Helper Block

該模組主要用於簡化復位與初始化串並收發器的工作。該模組包含三個狀態機:傳送復位,接收復位與全復位。傳送與接收是相互獨立的,既可以由外部訊號觸發控制也可以由全復位狀態機觸發控制。
傳送復位與接收復位都可以選擇1、復位相關的PLL與相關資料鏈路2、只復位相關的資料鏈路。在復位成功後各自有一個User Indicator訊號應該置高。

2. Transmitter User Clocking Network Helper Block

該模組用於管理單個或多個收發器中傳送通道的TXUSRCLK與TXUSRCLK2時鐘。內部會例化BUFG_GT原語(帶分頻功能的全域性時鐘Buffer)。

3. Receiver User Clocking Network Helper Block

該模組用於管理單個或多個收發器中接收通道的RXUSRCLK與RXUSRCLK2時鐘,內部也會例化BUFG_GT原語。

4. User Data Width Sizing Helper Block

該模組用於簡化使用者介面與收發器資料介面之間的對接過程。每個收發通道的TXDATA與RXDATA都為128bits,未配置使用的位則被tied off或懸空。該模組分為傳送與接收兩部分,模組實現都是用wire型訊號assign實現,未使用組合邏輯或時序邏輯

4.1 Transmitter Module

該模組中的 gtwiz_userdata_tx_in訊號寬度等於使用者資料寬度*使能通道數,經過轉換,該訊號的最低有效位對應在XY網格位置中最低通道的最低有效位

。在使用者資料寬度為20、40、80、160bits時,還負責驅動每個收發器的TXCTRL0與TXCTRL1埠中的某些位,並處理解纏繞情況。但在其他位寬的情況中則不由該模組進行驅動上述埠。

4.2 Receiver Module

同傳送模組

5. Transmitter Buffer Bypass Controller Helper Block

在傳送通道的buffer未啟用的情況下,該模組用於自動處理buffer bypass,處理完成後會提供一個done訊號與一個error訊號。

6. Receiver Buffer Bypass Controller Helper Block

同傳送模組

7. Transceiver Common Primitive

用於例化Transceiver Common原語模組,可以放在IP CORE之內或之外,可以使用一個Transceiver Common模組配置多個Transceiver Channel模組(共享模式),但該使用方法對新手不友好,若想使用,可以參照AR#65228

8.Design Flow Steps

IP Core引數設定介面分為Basic、Physical Resource、Optional Features、
Structure Options,此處不再詳細分析,後續再行細說。

9. Constraining the Core

在Hierarchy介面可以看到一個在IP Core之外的xdc約束檔案,其中有對GTHE3啟用的參考時鐘進行週期約束和位置約束,對free run clock進行週期約束,還將需要使用者約束的訊號以註釋的方式提前給出,
在IP Core內部還可以看到一個*_0.xdc檔案,其中對啟用的GTHE3通道的位置做了約束,其他是一些set_false_path的約束,不懂~