加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

1、怎样用FPGA实现UDP数据收发回环验证

(2014-03-07 17:36:46)
标签:

gmii

mii

fpga

怎样用FPGA实现UDP数据收发回环验证

 

1、首先需要了解网络分层结构,直接看图,分层架构已经很清晰了。

http://s8/mw690/005wyU9kzy6HnffKHxta7&690

http://s16/mw690/005wyU9kzy6Hnfg731t8f&690

 

了解一下这些名词

 

UDP(User Datagram Protocol)用户数据包协议

 

 

IP(Internet Protocol(网络之间互连的协议))

 

MAC(MediaAccessControl,媒体访问控制,数据链路层)

PHY(Physical Layer Device物理层 

 

2、需要了解MAC层和PHY的硬件接口,只介绍GMII,MII,其它类似

 

网络接口GMII/MII 

http://s13/mw690/005wyU9kzy6Hnfj13paac&690

MAC(MediaAccessControl )层和PHY层链接接口GMII (Gigabit Medium Independent Interface)

 

时钟接口

   GTX_CLK  125M

    RX_CLK    125M

数据接口

  TXD[7:0] RXD[7:0]

  TX_EN, 发送数据使能

  TX_ER,发送数据错误 

   RX_DV,  接收数据有效

  RX_ER 接收出错指示

 

MDIO/MDC 控制接口

   MDC为控制时钟

   MDIO控制数据

 

2、MIIMedia Independent Interface)接口

 http://s3/mw690/005wyU9kzy6Hnfoho9s02&690

时钟接口

   TX_CLK RX_CLK 25M(100M)

数据接口

   TXD[3:0]

   TX_EN

   TX_ER

   RXD[3:0]

   RX_DV

   RX_ER

    

控制接口  MDC/MDIO

CRS  载波侦测

COL 冲突检测

 

3、需要了解TCP/IP协议,UDP协议,ICMP协议

 http://s7/mw690/005wyU9kzy6HnfqgRLMe6&690

以太网帧


http://s4/mw690/005wyU9kzy6HnfqkXRx43&690

前序,以太网帧头,0x55*7,0xd58byte.

目的MAC地址,源地址MAC分别为6byte.

协议类型,比如0x0800,表示IP协议帧,0x0806表示ARP帧。

FCS4byte校验序列。

网络长度为以太网(Ethernet)数据帧的长度必须在46-1500字节之间,这是由以太网的物理特性决定的. 

IP报文如下

 


http://s15/mw690/005wyU9kzy6Hnfquskm6e&690

 

 

 

14位版本,表示IPV4

2、包头长度4,为4*5=20字节,表示IP帧头有20字节。

3、16位总长度,字段为16进制表示,报文总长度,不含最后帧的FCS校验。

4、8位生存时间,表示数据包在网络上生存多久,每通过一个路由器该值减一,为0时将被路由器丢弃。TTL<64 128< TTL<256表示LINUX操作系统,64表示WINDOWS系统

5、8位协议,16进制表示,常用的协议及其十进制数值包括ICMP(1)TCP(6)UDP(17)

6、16位首部校验和,对IP包头的4*5包头进行校验。为了计算一份数据报的IP检验和,首先把检验和字段置为0。然后,对首部中每个16位进行二进制反码求和

7、32为源IP,目的IP,十六进制表示。

8、选项和数据表示IP层之上的数据包。

UDP报文

 

 http://s11/mw690/005wyU9kzy6HnfvFISeda&690

116UDP长度,表示整个UDP包字节数。

216为校验和,伪头部( 4byteIP地址 4byte目的IP地址 0x00 1byte协议 UDP长度(2byte)4byteIP地址 4byte目的IP地址 0x00 1byte协议(0x11UDP长度(2byte))和整个报文的校验。UDP数据报的长度可以为奇数字节,所以在计算校验和时需要在最后增加填充字节0(填充字节只是为了计算校验和,可以不被传送)计算方法,将校验和先置0,然后对整个字段反码求和。当然UDP报文检验字段也可以为0UDP传输协议中,校验和是可选的,当校验和字段为0时,表明该UDP报文未使用校验和,接收方就不需要校验和检查了,tcp详解,卷1书上有一句话:如果校验和的计算结果为0,则存入的值为全1(65535),这在二进制反码计算中是等效的

3、数据字节数最大为1472字节,最小为**字节;最好为最好不要超过512个字节

TCP报文


http://s2/mw690/005wyU9kzy6HnfvRUjL51&690

ICMP报文

 http://s5/mw690/005wyU9kzy6HnfzFp0Ed4&690

1、类型字段,比如Ping请求,0x08,Ping相应0x00.

2、代码段,网络不可到达(Code=0)、主机不可到达(Code=1)、协议不可到达(Code=2)

3、检验和,对整个ICMP报文进行校验。

4、32bit BE,LE identifiersequence numberIMCP包头为8字节;

 

4、fpga结构

http://s6/mw690/005wyU9kzy6HnfD39Yh75&690

http://s8/mw690/005wyU9kzy6HnfDeEYva7&690

5、PHY芯片

  

   PHY  88E1111      GMII

          88E1116R   RGMII

          RTL8201    MII

          LAT971A    MII

   MDIO/MDC时序



http://s4/mw690/005wyU9kzy6HnfH4bBh23&690



 

6、软件工具

 

   设置PC

 

 http://s3/mw690/005wyU9kzy6HnfOOf2ab2&690

Wireshark抓数

http://s2/mw690/005wyU9kzy6HnfVCEsF51&690

http://s2/mw690/005wyU9kzy6HnfTzqVz11&690

网络调试工具

http://s7/mw690/005wyU9kzy6HnfX8uEu16&690

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有