Tri Mode Ethernet MAC ip核使用與例程分析
- 一、 Tri Mode Ethernet MAC ip核功能
- 二、 Tri Mode Ethernet MAC ip核配置
-
-
- 數據傳輸速率
- 主要設置接口
- 幀濾波功能選擇,以及流控選擇
-
- 三、 Tri Mode Ethernet MAC ip核使用
-
- 3.1 ip核接口
- 3.2 ip核接口說明
-
- 3.2.1 tx_ifg_delay
- 3.2.2 tx_statistics_vector
- 3.2.3 rx_statistics_vector
- 四、 Tri Mode Ethernet MAC ip核AXI-Lite接口配置策略
-
- 4.1 配置流程:
- 4.2 關鍵寄存器解析
-
- 4.2.1 Speed configuration(0x410)
- 4.2.2 Receiver Configuration Word 1 (0x404)
- 4.2.3 Transmitter Configuration Word (0x408)
- 4.2.4 Flow Control Configuration Word (0x40C)
- 4.2.5 Unicast Address (Word 0) (0x700)
- 4.2.6 Unicast Address (Word 0) (0x704)
- 4.2.7 Frame Filter Control (0x708)

軟件架構如下圖所示:

一、 Tri Mode Ethernet MAC ip核功能
支持 10M、100M、1000M、2.5G 等多種速度,支持 RGMII、GMII、MII、SGMII、internal 等多種 PHY 接口。下圖展示了 TEMAC 的功能框圖。
其中 Transmit Engine 從 AXI-Stream TX 接口接收數據,并添加前導碼 Preamble、幀起始界定符 SFD、幀校驗序列 FSC 等,并在必要時(長度小于最小 MAC 幀長度)填充數據,因此在使用 TEMAC 時,MAC 幀的這幾個部分就不需要我們自己添加了(不過其他的 MAC 幀部分,如目的MAC地址、源MAC地址、類型/長度、MAC數據段等部分,還是要用戶按字節流給入 TEMAC 的)。
流量控制模塊 Flow Control 可發送和接收可編程的暫停幀。
用戶使用三個 AXI4 接口進行數據收發以及 MAC 控制器/ PHY 芯片配置,其中數據發送和接收使用 AXI4_Stream 接口,而配置接口使用 AXI4-Lite 接口,實現對 MAC 的配置和 MDIO 接口的讀寫。
可選的幀過濾器 Frame Filter 用于過濾與一組可配置過濾器匹配的幀,一般用于過濾掉目的 MAC 地址與本設備不一致的幀,TEMAC 默認開啟幀過濾器。
統計計數器 Statistics Counters 用于記錄 TX 和 RX 的幀數量,達到最大值后回繞,可配置為 32 或 64 位寬。
二、 Tri Mode Ethernet MAC ip核配置
該IP核作為MAC層,對PHY層接收數據進行處理;對于千兆以太網而言,MAC與PHY層之間使用GMII接口連接。
數據傳輸速率
- 1Gb/s 支持高達1Gb/s的以太網速度。支持四種類型的物理接口,即GMII,MII,RGMII和內部接口均可用。(千兆網選這個)
- 2.5 Gb / s 指的是以太網速度設置為2.5Gb/s,只支持內部連接。
主要設置接口
-
PHY Interface:
-
MAC Speed:
internal mode clock source -
user clk2
這是用戶邏輯時鐘,通常由用戶提供,用于MAC IP核內部邏輯和用戶接口的時鐘同步。
在internal mode下,這個時鐘通常來自PCS/PMA IP核或外部時鐘源,頻率一般為125MHz(千兆以太網)或12.5MHz(百兆以太網)。 -
rx user clk2
這是接收用戶時鐘,專門用于MAC接收數據路徑的時鐘。
在internal mode下,這個時鐘通常來自PCS/PMA IP核的接收時鐘輸出,用于同步接收數據流。
managemant type
幀濾波功能選擇,以及流控選擇
1) 幀過濾器選項(Frame Filter Options)
可以使用幀過濾器生成內核,從而阻止接收與此MAC不匹配的幀。這最常用于識別專門針對此MAC的數據包。默認為使用幀過濾器。
2)表條目數(Number of Table Entries)
可以使用查找表來生成幀過濾器,該查找表最多可以包含16個其他有效MAC幀匹配模式。您可以選擇0到16之間的整數來定義表中存在的匹配模式的數量。默認值為使用四個表條目。
3)啟用優先流控制(Enable Priority Flow Control)
選擇此選項可在核心中包括Priority Flow Control支持。如果包括在內,則包括在發送時生成PFC幀并在接收時解釋PFC幀的電路,以及對IEEE 802.3暫停請求的增強XON / XOFF支持。默認設置為禁用。
4)統計計數器(Statistics Counters)
可以使用內置的統計計數器生成內核。可用的計數器數量取決于內核的雙工設置,全雙工需要34個計數器,半雙工需要41個計數器。僅當內核配置有AXI4-Lite管理接口時,才能選擇此選項。默認值為包括統計信息計數器
5)統計寬度(Statistics Width)
統計信息計數器可以是32位或64位寬。這使您可以控制必須輪詢計數器的頻率,以避免由于溢出而導致信息丟失。默認值為使用64位寬的計數器。
6)統計重置(Statistics Reset)
當包括統計計數器時,可以包括邏輯以確保在硬件復位時將計數器清除為零。沒有此邏輯,計數器值將在復位后保持不變,并且僅在設備配置時清除。默認值為包括計數器重置功能
三、 Tri Mode Ethernet MAC ip核使用
3.1 ip核接口
3.2 ip核接口說明
全局時鐘與復位接口
名稱 | 輸入輸出類型 | 說明 |
---|---|---|
gtx_clk | input | 全局 125MHz 時鐘,2.5G 以太網時為 312.5MHz 時鐘; |
glbl_rstn | input | 全局復位信號(低有效),復位整個MAC IP核 |
發射端接口
名稱 | 輸入輸出類型 | 說明 |
---|---|---|
tx_mac_aclk | output | 物理接口數據傳輸的時鐘。該時鐘應用于物理接口發送電路和TX AXI4-Stream發送電路。 312.5MHZ對應2.5Gb/s 125MHZ對應1Gb/s 312.5MHZ對應2.5Gb/s 25MHZ對應100Mb/s 2.5MHZ對應10Mb/s |
tx_reset | output | 發送模塊復位信號,復位接收邏輯 |
tx_axis_mac_tdata[7:0] | input, | 要傳輸的幀數據; |
tx_axis_mac_tvalid | input, | 數據有效信號; |
tx_axis_mac_tready | output, | 握手信號,當數據被正確接收時,該信號被斷言(注意到而非指示 TEMAC TX 空閑,這與一般的 ready 握手信號工作原理不同,因此不能用于判斷是否可以傳遞數據,而是判斷數據是否被正確傳輸了,從而決定是重傳本字節還是繼續傳輸下一字節); |
tx_axis_mac_tlast | input | 幀結束信號; |
tx_axis_mac_tuser | input | 端口控制信號,指示發生一個錯誤;當在傳輸期間斷言該信號時,則 MAC 會插入一個錯誤代碼以損壞當前幀,中止傳輸并回到空閑狀態。 |
tx_ifg_delay[7:0], | input, | IFG = Inter-Frame Gap(幀間間隔),tx_ifg_delay = 發送幀間延遲,控制MAC發送器在連續發送以太網幀之間的時間間隔 10Mbps:最小幀間間隔 = 9.6μs(96位時間) 100Mbps:最小幀間間隔 = 960ns(96位時間) 1000Mbps:最小幀間間隔 = 96ns(96位時間) |
tx_collision, | output, | 指示在發送過程中檢測到沖突(collision),全雙工模式下恒輸出 0(全雙工時,實際生成 IP 時該接口不生成); |
tx_statisitics_vector[31:0], | output, | 發送幀統計向量;提供發送方向的詳細統計信息;通常為32位,包含多個統計字段 |
tx_statistics_valid | output | 統計向量有效標志。 |
接收端接口
名稱 | 輸入輸出類型 | 說明 |
---|---|---|
rx_mac_aclk | output | 物理接口數據傳輸的時鐘。該時鐘應用于物理接口發送電路和TX AXI4-Stream接收電路。 312.5MHZ對應2.5Gb/s 125MHZ對應1Gb/s 312.5MHZ對應2.5Gb/s 25MHZ對應100Mb/s 2.5MHZ對應10Mb/s |
rx_reset | output | 接收模塊復位信號,復位接收邏輯 |
rx_axis_mac_tdata[7:0] | output | 接收到的幀數據; |
rx_axis_mac_tvalid | output | 數據有效信號; |
rx_axis_mac_tlast, | output, | 幀結束信號; |
rx_axis_mac_tuser, | output, | 控制信號,在幀 |