高速接口----使用sfp完成以太網傳輸

最近在做以太網相關的東西,最近參考xapp1082完成了一個通過光口以太網完成數據傳輸的簡單的例子。xapp1082的鏈接地址如下:xapp1082(很有價值)
  xapp1082所對應的工程需要在xilinx的官網註冊賬號後進行下載。裏面包含了ZYNQ中各種以太網的使用情況。xapp1082中介紹了4中以太網的應用。如下表:

名稱    作用
pl_eth_1000basex    使用AXI Ethernet 完成通過sfp完成以太網的使用 協議爲1000BaseX
pl_eth_sgmii    使用AXI Ethernet完成通過sfp完成以太網的使用,接口協議爲sgmii
ps_emio_1000basex    使用EMIO將GEM引出到PL端完成以太網的使用,協議爲1000BaseX
ps_emio_sgmii    使用EMIO將GEM引出到PL端完成以太網的使用,協議爲sgmii
  我在實現的時候,參照pl_eth_1000BaseX完成了使用sfp來完成以太網使用,在SDK下可以運行一個lwip,在linux下也可以正常地使用光口以太網。

創建工程
  參照xapp1082裏面建立一個工程,其中AXI Ethernet 這個IP需要選擇模式爲1000BaseX,其他地選項保持默認即可。然會對這個AXI 1G/2.5G Ethernet Subsystem進行自動連線,系統會自動地添加一個AXI DMA IP,然後剩下的自動連線就可以差不多可以完成這個工程的創建,具體可以參照xapp1082裏面的內容。

最終的連線結果如下圖所示:


創建SDK工程
  在SDK中創建一個簡單的帶寬測試程序就可以來驗證sfp的功能的正確性。在main函數當中需要進行簡單的修改,由於這個xapp1082裏面官方使用開發板是ZC706,ZC706上有有一個可編程的晶振,這個晶振會提供給系統一個125MHz的參考時鐘,也就是高速收發器的參考時鐘。在示例的lwip的模板當中,上電的時候,程序會對外部晶振進行配置。在自己實現的時候,只需要將其中的這兩個函數註釋掉進行了。


實驗結果
  需要使用一個光電轉換模塊來連接以太網,連接完成後,運行iperf這個軟件就能來測試帶寬了。

  在SDK中啓動應用程序,並將bit文件下載到FPGA內部之後,就可以看到串口打印如下信息。

  這時候使用串口提示的信息,就可以來進行帶寬的測試。在命令行中,跳轉到包含iperf軟件的目錄下,然後運行串口終端提示的命令。

  從測試結果來看,運行一個TCP 的協議棧以太網的速度能夠達到560Mbit。

petalinux
  在petalinux中完成這個實驗就很簡單,按照xilinx wiki上的東西就可以了,Wiki的地址在這裏:xapp1082 Wiki
  根據Wiki上面的指示,在內核中需要更改如下內容:
簡單來說就是使能Xilinx的PHY,取消Xilinx AXI DMA Engine。

  在設備樹當中,只需要添加簡單的設備就行了

  然後編譯就可以生成完成petalinux的創建,再將生成好的image拷貝到SD中啓動就可以了。

參考:

xapp1082
xapp1082 wiki
————————————————
版權聲明:本文爲CSDN博主「black_pigeon」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_41332806/article/details/107981400

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章