1. 程式人生 > >aurora 64B/66B ip核設置與例程代碼詳解

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

有效 log 作者 tla 提醒 module assign 過程 設定

轉自:https://blog.csdn.net/u014586651/article/details/84349328

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 的數據格式
---------------------
作者:風中月隱
來源:CSDN
原文:https://blog.csdn.net/u014586651/article/details/84349328
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!

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