1、怎样用FPGA实现UDP数据收发回环验证
标签:
gmiimiifpga |
怎样用FPGA实现UDP数据收发回环验证
1、首先需要了解网络分层结构,直接看图,分层架构已经很清晰了。
http://s8/mw690/005wyU9kzy6HnffKHxta7&690
http://s16/mw690/005wyU9kzy6Hnfg731t8f&690
了解一下这些名词
UDP(User
IP(Internet
MAC(MediaAccessControl,媒体访问控制,数据链路层)
PHY(Physical
2、需要了解MAC层和PHY的硬件接口,只介绍GMII,和MII,其它类似
网络接口GMII/MII
http://s13/mw690/005wyU9kzy6Hnfj13paac&690
MAC(MediaAccessControl
时钟接口
数据接口
MDIO/MDC
2、MII(Media
时钟接口
数据接口
控制接口
CRS
COL
3、需要了解TCP/IP协议,UDP协议,ICMP协议
以太网帧
http://s4/mw690/005wyU9kzy6HnfqkXRx43&690
前序,以太网帧头,0x55*7,0xd5共8byte.
目的MAC地址,源地址MAC分别为6个byte.
协议类型,比如0x0800,表示IP协议帧,0x0806表示ARP帧。
FCS为4byte校验序列。
网络长度为以太网(Ethernet)数据帧的长度必须在46-1500字节之间,这是由以太网的物理特性决定的.
IP报文如下
http://s15/mw690/005wyU9kzy6Hnfquskm6e&690
1、4位版本,表示IPV4。
2、包头长度4,为4*5=20字节,表示IP帧头有20字节。
3、16位总长度,字段为16进制表示,报文总长度,不含最后帧的FCS校验。
4、8位生存时间,表示数据包在网络上生存多久,每通过一个路由器该值减一,为0时将被路由器丢弃。TTL<64
5、8位协议,16进制表示,常用的协议及其十进制数值包括ICMP(1)、TCP(6)、UDP(17)。
6、16位首部校验和,对IP包头的4*5包头进行校验。为了计算一份数据报的IP检验和,首先把检验和字段置为0。然后,对首部中每个16位进行二进制反码求和。
7、32为源IP,目的IP,十六进制表示。
8、选项和数据表示IP层之上的数据包。
UDP报文
1、16位UDP长度,表示整个UDP包字节数。
2、16为校验和,伪头部(
3、数据字节数最大为1472字节,最小为**字节;最好为最好不要超过512个字节。
TCP报文
http://s2/mw690/005wyU9kzy6HnfvRUjL51&690
ICMP报文
1、类型字段,比如Ping请求,0x08,Ping相应0x00.
2、代码段,网络不可到达(Code=0)、主机不可到达(Code=1)、协议不可到达(Code=2)
3、检验和,对整个ICMP报文进行校验。
4、32bit
4、fpga结构
http://s6/mw690/005wyU9kzy6HnfD39Yh75&690
http://s8/mw690/005wyU9kzy6HnfDeEYva7&690
5、PHY芯片
http://s4/mw690/005wyU9kzy6HnfH4bBh23&690
6、软件工具
Wireshark抓数
http://s2/mw690/005wyU9kzy6HnfVCEsF51&690
http://s2/mw690/005wyU9kzy6HnfTzqVz11&690
网络调试工具

加载中…