以太网通信,UDP通信

来源:互联网 发布:贵人 知乎 编辑:程序博客网 时间:2024/05/02 00:42

1、  在IP包包头里的IP类型0x0800代表IP协议网络。在二层mac帧里表示,因为除了IP协议网络外,还有ATM网络,FDDI网络等网络类型。

2、  IP通信协议

IP数据包包头

前导码0x55

0x55

0x55

0x55

0x55

0x55

0x55

0xd5

目的MAC地址

目的MAC地址

目的MAC地址

目的MAC地址

目的MAC地址

目的MAC地址

源MAC地址

源MAC地址

源MAC地址

源MAC地址

源MAC地址

源MAC地址

IP包网络类型0x0800

 

 

[31:28]

[27:24]

[23:20]

[19:16]

[15:12]

[11:8]

[7:4]

[3:0]

IP数据报首部

固定部分

版本

首部长度

区分服务

数据报总长度

标识

标志

片偏移12位

生存时间

协议

首部检验和

源IP地址

目的IP地址

可变部分(UDP)

源端口号

目的端口号

用户数据包长度

检查和

 

数据部分

 

CRC校验

注:标志占三位.

解释:

a、  IP协议(TCP/UDP)通信需要发送(或接收)7*0x55+0xd5的前导码

b、  目的MAC和源MAC各48bit

c、  IP包网络类型,还有其他的网络类型例如ATM或FDDI等,0x0800代表相应IP包类型

d、  IP首部前20字节为固定部分,除了固定部分以外,可变部分根据你用的是UDP或者TCP来决定,但总的首部长度不可超过60字节。

e、  版本,4bit,4代表IPV4

f、  首部长度,4bit,可表示的最大数值是15个单位(一个单位为 4 字节)因此IP 的首部长度的最大值是 60 字节。

g、  区分服务: 占8位,用来获得更好的服务,在旧标准中叫做服务类型,但实际上一直未被使用过.1998 年这个字段改名为区分服务.只有在使用区分服务(DiffServ)时,这个字段才起作用.一般的情况下都不使用这个字段

h、  总长度,占16位,指首部和数据之和的长度,单位为字节,因此数据报的最大长度为65535 字节.总长度必须不超过最大传送单元 MTU

i、  标识:16位,它是一个计数器,用来产生数据报的标识,具有同一个标识的数据包属于同一数据片,有时候为了避免超过MTU,需要对数据进行分片

j、  标志:3bit,占3位,目前只有前两位有意义,标志字段的最低位是 MF (More Fragment),MF=1 表示后面“还有分片”。MF=0 表示最后一个分片,标志字段中间的一位是 DF (Don't Fragment),只有当 DF=0 时才允许分片。

k、  片偏移,占12位,指较长的分组在分片后某片在原分组中的相对位置.片偏移以 8 个字节为偏移单位

l、  生存时间:占8位,记为TTL (Time To Live) 数据报在网络中可通过的路由器数的最大值,TTL 字段是由发送端初始设置一个 8 bit字段.推荐的初始值由分配数字RFC 指定,当前值为 64.发送 ICMP 回显应答时经常把 TTL 设为最大值 255

m、  协议。占8位,指出此数据报携带的数据使用何种协议以便目的主机的IP层将数据部分上交给哪个处理过程, 1表示为 ICMP 协议, 2表示为 IGMP 协议, 6表示为 TCP 协议, 17表示为 UDP 协议

n、  首部检验和,占16位,只检验数据报的首部不检验数据部分.这里不采用 CRC 检验码而采用简单的计算方法

o、  源和目的的IP地址,都各占4 字节,分别记录源地址和目的地址

p、  可变部分根据所用的协议改变。最后发送用户数据和CRC校验码

q、  在千兆的GMII通信模式下, 发送数据时,发送时钟为125Mhz的GTXC信号, 数据为TXD0~TXD7, 数据有效信号为TXEN, TXC信号没有使用; 接收数据时,接收时钟为125Mhz的RXC信号, 数据为RXD0~RXD7, 数据有效信号为RXDV。

r、  在百兆的MII通信模式下, 发送数据时,发送时钟为25Mhz的TXC信号, 此25Mhz的TXC时钟是PHY输入给FPGA的,数据为TXD0~TXD3,数据有效信号为TXEN, GTXC信号没有使用; 接收数据时,接收时钟为25Mhz的RXC信号, 数据为RXD0~RXD3, 数据有效信号为RXDV。

s、  以太网的数据帧的传输有包长的要求, 一般在46~1500字节。所以在发送以太网数据包的时候,数据帧的长度不能太短, 不然会导致PC数据包发送而FPGA收不到数据包的情况。跟冲突监测相应的内容相关。

3、  在进行以外网(ethernet)通信测试的时候,按照要求弄好后,为什么只有第一次连接调试可以成功,而后续不可以?因为网络调试助手在调试一次过后必须手动关闭退出,否则将会占用相应的网络通道,必须将调试助手全部程序退出后才能再次进行连接通信。

4、  在前面的IP通信协议中可以知道,如果FPGA向PC机发送数据时,则目的地址或者目的MAC地址将是PC机的地址和MAC地址,对于在FPGA中写接收模块,则相当于是PC机通过IP协议向FPGA发送数据,那个目的地址或MAC地址将是FPGA本身的地址或MAC地址

5、  什么是SLEW= FAST? Slew——Slew Rate。信号的转换速率,可以理解为信号在某一点的斜率。它不是只针对时钟信号说的;诸如放大器的slew rate就是一个很重要的参数;而在数字电路里,它可能更常用于描述芯片输入信号的变化率. 在Xilinx的设计环境中,可以将输出信号的Slew rate设置成FAST或SLOW。当设置成FAST时,提高了信号变化的斜率,从而提高了信号的转换速率,但同时使脉冲信号的振铃增大。因此,除非万不得已,不要将输出信号的Slew rate设成FAST ,skew选fast,IO转化时快,但电流大,功耗大。skew选slow,IO转化慢,但功耗小。默认设置:IOSTANDARD=LVCMOS25,SLEW=SLOW ,DRIVE=12

0 0
原创粉丝点击