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網格位置中最低通道的最低有效位
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的約束,不懂~