简介
相信网络上对于FPGA驱动网口的开发板、博客、论坛数不胜数,为何博主需要重新手敲一遍呢,而不是做一个文抄君呢!因为目前博主感觉网络上描述的多为应用层上的开发,非从底层开始说明,本博主的思虑还是按照老规矩,按照硬件、底层、应用等关系,使用三~四篇文章,来详细说明,随着本博主的客户使用情况,本博主再慢慢完善。
网口的应用
当前FPGA主要应用有两种,一种为纯FPGA,以Xilinx公司的SPARTAN6、A7、K7为代表的芯片,即只有逻辑单元,另一种为芯片+ARM,以Xilinx公司的ZYNQ系列,ZYNQ 7000位代表的芯片,即既有逻辑单元又包含ARM单元。若网口连接只和逻辑相连,是一种以Verilog为驱动的通信方法,若网口与ARM专用管脚相连,则是一种以C或C++为驱动的通信方法。区别在于Verilog里面所有的驱动需要客户自行搭建,而以C/C++驱动方式,只能在ARM设备里面应用,但内部包含LWIP这种IP,可以直接调用。而我们需要讨论的也是Verilog驱动方式(连接ARM的方式,与海思等ARM芯片,并没有什么区别)。
硬件说明
原理说明
对于FPGA来说,网口的驱动有两种方式,一种为使用PHY芯片,一种为FPGA自身特定的高速接口来完成数据的传输。以下本文介绍常用的PHY芯片方式,来完成网口的收发模块且最大的速度为1000Mbits。
原理图截图
截图中通过 Realtek RTL8211EG 以太网 P