一:
1.1:以太网数据帧(IEEE 802.3标准规定)
1.2:千兆以太网:英文全称 Gigabit Ethernet,简称 GbE 或 1GE,是传输速率为 1 Gbit/s(1000 Mbit/s) 的以太网技术标准。——其他速率可自推
二:
2.1:10Mbit~~~1000Mbit 以太网基本都是通过 FPGA的普通管脚和phy芯片连接+rg45电口实现。
2.2:
rg45是电口,协议一般称呼:1000BASE-T。
SFP:是光口,协议一般称呼:1000base-cx,1000base-lx。——(10000Mbit(10Gbit/s)一般都是通过FPGA的高速口和光模块实现。)
2.3:phy芯片的协议就是利用pcs来4B/5B编码,然后PMA发送出去。只是起一个数模模数转换的透传作用。
2.4:
MII接口——4线单沿,10Mbps——100Mbps
RMII接口——2线双沿,10Mbps——100Mbps
GMII接口——8线单沿, 10Mbps——1000Mbps
RGMII接口——4线双沿,10Mbps——1000Mbps
2.5:举例子计算时钟频率如下:4*125*2=1000Mbps,4bit,双沿传输,125MHZ
2.6:下图是RGMII接口的信号连接示意图
三:以太网的协议(TCP肯定比UDP不容易丢包):
3.0 TCP和UDP区别:(传输层中 TCP 和 UDP都是传输层协议,它们都属于TCP/IP协议族)
3.1:ARP协议一般用来获取目的IP地址主机的MAC地址,ICMP通过回显请求和回显应答来判断以太网链路是否通畅,这两个协议都不是用来传输用户数据的。如果用户需要向PC端传输大量数据,那么就必须使用TCP或者UDP协议了。
3.2:TCP优点是稳定,接收端接收到TCP数据报文后会回复发送端,如果接收的报文有误,发送端会把错误的报文重新发送一遍。而且TCP本来就有握手机制,所以数据的传输会更可靠。正是由于握手机制,导致实现的TCP协议的逻辑比较复杂,传输速度也不会很高,还需要更多存储资源取存储已经发送的数据,直到收到该数据传输无误后才能丢弃。因此FPGA一般不会采用该协议进行大量数据的传输(当然如果通过Verilog HDL实现可靠的TCP协议,那还是很有用的,毕竟这块的代码很贵)。
3.3:UDP优点是协议简单,没有握手机制,传输数据的速度就很快,这对于FPGA传输图像数据之类(可以允许有丢包的场景)的设计比较实用。由于UDP没有握手机制,可靠性相比TCP就会低很多,有得必有失嘛。PL只做到了传输层。PL无法 实现传输层以上的会话层、表示层等等。
使用axi_ethernet_0 ip 时注意一定rgmii_rx_clk_i要接 时钟专用管脚。
3.4
基于米联客源码 FPGA优质开源项目 - UDP RGMII千兆以太网_fpga千兆网口ip核-CSDN博客
参考资源小梅哥UDP 1000M源码(未使用ip)。
以太网udp协议站参考奇哥代码.
3.5:ARP:pc可以自动识别目标mac,ip地址。目前程序不支持自动识别,可以支持电脑手动静态绑定的情况。
四:PL 做 UDP vs PS 做 UDP 对比结论
4.1:
- 追求低时延、微秒级抖动、线速高带宽、不占用 ARM 算力 → 选PL 实现 UDP
- 需求低带宽、开发快、协议栈成熟、无需定制时序 → 选PS 软件 UDP
4.2:
4.3:UDP的协议格式:
4.3.1:如果需要发送用户数据必须要通过,ip,udp层层打包,一般藏再udp的数据报里面.
4.3.2:MAC层(IP层+UDP层都在mac层的数据层增加的)
五:实验步骤
mac以太网帧+ARP帧+有个组包工具软件(小兵以太网测试仪)+wireshark:网络抓包工具来分析pc和fpga通信。+CRC CALCULATOR(CRC32)
六:SMI(Serial Management Interface,串行管理接口),是 IEEE 802.3 以太网标准 规定的两线串行总线。
6.1:
MDIO = Management Data Input/Output,管理数据输入输出配套时钟线 MDC(Management Data Clock),两根线合起来叫 SMI。
6.2:MDIO协议格式(频率一般50K的速度)
前导码:32bit全是1,需要对方检测开始同步通信
Start :开始字段01
Operation:read(10),write(01)
Phy地址:查看原理图硬件配置
Reg 地址:eg:状态寄存器的地址
Turn around(转变ZO)
Read data:数据的写入或者读出。
6.3:SMI的作用本质就是读写 PHY 内部寄存器,实现网口管理。不传输业务数据。
6.3.1. 配置参数:10M/100M/1G 速率、全 / 半双工、自动协商开关、PHY 掉电省电、信号均衡、环回测试;
6.3.2. 读取状态:网线是否插好(Link 状态)、协商结果、收发错误计数、中断标志;
6.3.3. 硬件控制:软件复位 PHY、诊断故障、调节驱动强度。
七:
7.1:
lwip211_v1_3是一个基于开源lwIP库版本2.1.1构建的Vitis库(Vivado2020.2版本)。式Vitis开发指南lwip211_v1_3库为Ethernetlite(axi_ethernetlite)、TEMAC(axi_ethernet)以及千兆以太网控制器和MAC(GigE)内核提供适配器。该库可以在MicroBlaze、ARM Cortex-A9、ARM Cortex-A53和ARM Cortex-R5处理器上运行。Ethernetlite和TEMAC核心适用于MicroBlaze系统。千兆以太网控制器和MAC(GigE)内核适用于ARM Cortex-A9(Zynq-7000处理器设备)、ARM Cortex-A53和ARM Cortex-R5系统(ZynqUltraScale+ MPSoC)。
7.2:
lwip202_v1_2是一个基于开源lwIP库版本2.0.2构建的SDK库(Vivado2018.3版本)。lwip202_v1_2库为Ethernetlite(axi_ethernetlite)、TEMAC(axi_ethernet)以及千兆以太网控制器和MAC(GigE)内核提供适配器。该库可以在MicroBlaze、ARM Cortex-A9、ARM Cortex-A53和ARM Cortex-R5处理器上运行。Ethernetlite和TEMAC核心适用于MicroBlaze系统。千兆以太网控制器和MAC(GigE)内核仅适用于ARM Cortex-A9(Zynq-7000处理器设备)、ARM Cortex-A53和ARM Cortex-R5系统(ZynqUltraScale+MPSoC)。