aurora 64B/66B ip核設置與例程代碼詳解

版權聲明:本文爲博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。

1.概述

                  本文是總結aurora 64B/66B ip的學習成果。主要是從ip核的設置與ip的例程代碼兩方面來介紹aurora的使用情況。

2.參考文檔

               《pg074-aurora-64b66b》

               《ug476_7Series_GTX_GTH_Transceivers》

3.Aurora 64B/66B ip設置

                本例程使用環境:

                編譯環境:vivado 2017.4

                選用FPGA:xc7k325t-2ffg900i

4.IP設置界面簡介

               下面是IP設置情況,重點部分我會打框提醒。

 

       4.1 IP第1頁情況

              本頁主要是設置aurora的速率參數。

               1)line rate:線速率,即aurora的速率,(注意:不同的FPGA型號支持的最大速率不同,可參考ug476);

               2)GT refclk:gtx的參考時鐘,這個時鐘根據線速率設定,

                     gt_refclk=line_rate÷20。也可在ug476中查表;

               3)Init clk:初始化時鐘頻率,對7系列FPGA默認爲50MHZ;

               4) GT DRP clk :GT的DRP時鐘,只有7系列FPGA有,默認爲100MHZ;

               5)Dataflow mode :數據流模式,根據需要選擇;

               6)本頁其他設置默認即可,若想了解可參考《pg074》。

                                                                                     圖 1 IP第一頁

 

        4.2  IP第2頁情況

                 本頁主要是設置aurora的GT使用情況。

                  1)Lanes:使用的GT線數;

                  2)Lane assignment:GT線的分佈情況;

                                                                                                             圖 2 IP 第2頁

          4.3 IP第3頁情況

                 本頁主要是共享邏輯的設置,包含在ip核中,還是包含在外部例程中。這個根據需要自行設置即可,不影響aurora的性能。

                                                                                                圖 3 IP第3頁

 

5. Aurora的例程情況

         5.1  例程代碼的生成

                在生成的ip核上,鼠標右鍵選擇open example design 即可打開例程。

                                                                                              圖 4 例程生成位置

        5.2  例程代碼的情況

        5.2.1  整體情況

                  從整體上看一個例程裏面的頂層下面有6個模塊。我們可以分爲兩組情況:

                  通常不需要修改的模塊:

                  1)aurora_64b66b_0_support;

                  2)aurora_64b66b_0_rst_sync_exdes;

                  3)aurora_64b66b_0_EXAMPLE_AXI_TO_LL;

                  4)aurora_64b66b_0_EXAMPLE_LL_TO_AXI;

                  通常需要修改的模塊:

                  1)aurora_64b66b_0_FRAME_CHECK;

                  2)aurora_64b66b_0_FRAME_GEN;

                                                                     圖 5  例程代碼整體情況

                其層次結構如下圖所示:

                                                               圖 6 aurora例程子程序層次框

          5.2.2  aurora_64b66b_0_support 模塊

                     support模塊是aurora的主要支撐模塊,若不特殊需要,這個模塊可以全部引用。他主要是包含以下4個部分內容:

                     1)gt_common_support:gt的公共支撐部分,主要是各種時鐘的處理,本質上是一個PLL,可以不變,原班引用;

                      2)aurora_64b66b_0_CLOCK_MODULE:這個時鐘模塊,主要是將aurora的參考時鐘通過分頻,生成user用戶端使用的時鐘。本質上是一個PLL,可以不變,原班引用;

                      3)aurora_64b66b_0_SUPPORT_RESET_LOGIC:aurora的復位邏輯,可以不變,原班引用;

                      4)aurora_64b66b_0:這個即生成的aurora的IP核,是必不可少的一部分。

                                                 圖 7  aurora_64b66b_0_support模塊的情況

           5.2.3  aurora_64b66b_0_rst_sync_exdes模塊

                     aurora_64b66b_0_rst_sync_exdes模塊是aurora的同步復位模塊,不用修改,直接引用即可。              

            5.2.4  aurora_64b66b_0_EXAMPLE_AXI_TO_LL模塊

                       aurora_64b66b_0_EXAMPLE_AXI_TO_LL模塊是將AXI接口接收到的數據,轉換爲用戶可識別的數據,輸出給LocalLink interface。不用修改,可以直接引用。

             5.2.5  aurora_64b66b_0_FRAME_CHECK模塊

                        aurora_64b66b_0_FRAME_CHECK模塊是aurora的幀格式檢查模塊,主要是將輸入信號通過判斷對比最初的信號,來判斷是否有輸入錯誤。最後返回一個錯誤計數DATA_ERR_COUNT。當然在實際用於時,這個模塊需要做改變,即這就是我們需要修改的aurora的RX模塊。輸入信號不變,數據處理過程根據需要改變。

CHECK模塊的信號爲:

 

 

                                                                                             圖 8   接收模塊的信號接口

            5.2.6   aurora_64b66b_0_EXAMPLE_LL_TO_AXI模塊

                        aurora_64b66b_0_EXAMPLE_LL_TO_AXI模塊是將用戶輸入的數據(即輸出數據)調整到AXI接口的數據。是數據格式的調整,不用修改,直接引用即可。

 

              5.2.7  aurora_64b66b_0_FRAME_GEN模塊

                         aurora_64b66b_0_FRAME_GEN模塊是aurora的幀生成模塊,換句話說,這個模塊是數據生成模塊。它主要是產生隨機數,然後拼成aurora協議格式的數據,然後輸出來給aurora_64b66b_0_EXAMPLE_LL_TO_AXI模塊,送入AXI接口。

本模塊在實際運用中需要根據自己需求情況,更改輸出的數據。這也是FPGA的數據發送模塊及TX模塊。

                                                                                   圖9   發送模塊的信號接口

6.  Aurora收發時序

           6.1  數據發送時序

                  發送時序主要信息如下:

                  1)只有在tvalid與tready同時有效時,發送的數據纔有效;

                  2)Tkeep信號在tlast信號時纔有效;

                  3)在一組數據發送過程中可以設置暫停位。

                                                                                           圖10   數據發送時序

              6.2  數據接收時序

                     接收時序主要信息如下:

                     1)只有在tvalid有效時,接收的的數據纔有效;

                     2)Tkeep信號在tlast信號時纔有效;

                     3)在一組數據接收過程中可能有暫停位。

                                                                                                  圖 11    數據接收時序

              6.3  Aurora傳輸格式

                     Aurora的數據傳輸格式是地位在前,高位在後,如下所示:

                                                                                                   圖12    AXI4 的數據格式
 

發佈了20 篇原創文章 · 獲贊 135 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章