高速接口----使用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

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