FPGA以太网通信实验

一、以太网的分类

1.标准以太网:10Mbit/S
2.快速以太网:100Mbit/S
3.千兆以太网:1000Mbit/S
常用的芯片RTL8201,这个芯片通讯速率支持10M/100Mbit两种速度。以太网的接口类型有RJ45接口(电脑的网口),RJ11接口(电话线接口),SC光纤接口等。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
以太网传输数据时按照上面的顺序从头到尾依次被发送和接收。

  • 前导码:为了实现底层数据的正确阐述,物理层使用7个字节同步码(0和1)交替(55-55-55-55-55-55-55)实现数据的同步。
  • 帧起始界定符SFD:使用1个字节的SDFD(固定值为0xd5)来表示一帧数据的开始,及后面紧接着传输的时以太网的帧头。
  • 目的MAC地址:即接收端物理MAC地址,占用6个字节。MAC地址从应用上分为单播地址、组播地址和广播地址。单播地址:第一个字节的最低位为0,比如00-00-00-11-11-11,一般用于标志唯一的设备;组播地址:第一个字节的最低位为1,比如01-00-00-11-11-11,一般用于标志同属一组的多个设备;广播地址:所有48bit全为1,即ff-ff-ff-ff-ff-ff,它用于标志统一网段的所有设备。
  • 源MAC地址:即发送端物理地址,占用字节6个。
  • 长度/类型:上图钟的长度/类型具有两个意义,当这两个字节的值小于1536(十六进制为0x0600)时,代表该以太网中数据段的长度;如果这两个字节的值大于1536,则代表该以太网中的数据属于哪个上层协议,例如0x0800代表IP协议(网际协议)、0x0806代表ARP协议(地址解析协议)等。
  • 数据:以太网中的数据长度最小46个字节,最大1500个字节。最大值1500称为以太网的最大传输单元(MTU),之所以限制最大传输单元是因为在多个计算机的数据帧排队等待传送时,如果需要某个数据帧太大的话,那么其他数据帧等待的时间就会加长
  • 帧检验序列FCS:为了确保数据的正确传送,在数据的尾部加入4个字节的循环冗余校验码(CRC校验)来检测数据是否传送错误
    需要注意的是:网络设备和组件在接收一帧数据之后需要一段短暂的时间来恢复,为接收下一帧做好准备,这个时间段就叫做帧间隙,这个值通常被认为96bit time,也就是发送96为数据所需要的时间。对于10Mbit/s的通讯速率的话最小时间应该为:96100ns=9600ns;对于100Mbit/s的通讯速率的话最小时间应该为:9610ns=960ns:对于1000Mbit/s的通讯速率的话最小时间应该为:96*1ns=96ns。

二、IP协议

ip协议(互联网协议/国际协议):ip协议规定了数据传输时的基本单元和格式。IP协议位于以太网MAC帧格式的数据段,IP协议内容由IP首部和数据字段组成。所有的TCP、UDP和ICMP数据都以IP数据报格式传输的。
在这里插入图片描述
IP首部校验和计算方法

  • 将16位校验和字段置为0,然后将ip首部按照16位分成多个单元;
  • 对各个单元采用反码加法运算(即高位溢出位会加到低位,通常的补码运算是直接丢掉溢出的高位);
  • 此时仍然可能出现进位的情况,将得到的和再次分成高16位和低16位进行累加;
  • 最后将得到的和的反码填入校验和字段
    在这里插入图片描述

UDP协议

在这里插入图片描述

  • 源端口号:16位发送端口号,用于区分不同服务的端口,端口号的范围从0到65535;
  • 目的端口号:16位接收端端口号;
  • UDP长度:16位UDP长度,包含UDP首部长度+数据长度,单位是字节(byte)。
  • UDP校验和:16位UDP校验和。UDP计算校验和的方法和计算IP数据报首部校验和的方法相似,但不同的是IP数据报的校验和只检验IP数据报的首部,而UDP校验和包含三个部分:UDP伪首部,UDP首部和UDP的数据部分
    在这里插入图片描述
    用户数据打包再UDP协议中,UDP协议又是基于IP协议之上的,IP协议又是走MAC层发送的,即从包含关系来说:MAC帧中的数据段为IP数据报,IP报文中的数据段为UDP报文,UDP报文中的数据段为用户希望传输的数据内容。

三、以太网实验

本次实验是上位机通过网口调试助手发送数据给FPGA,FPGA开发板通过以太网口接收数据并讲接收到的数据发送给上位机,完成以太网的环回。以太网是通过包的格式传输数据,串口是通过字节的方式传输数据。下图是系统框图。数据的发送时钟和接收时钟(RXC和TXC)全部由以太网芯片PHY提供,无需外部晶振请添加图片描述
在这里插入图片描述
在这里插入图片描述

netsh i i show in //查看网卡的ID号
arp -a				//查看本地连接的IP地址
netsh -c i i add neighbors 12 192.168.1.123 00-11-22-33-44-55 //将开发板的IP地址邦到电脑的网卡


执行netsh -c i i add neighbors 12 192.168.1.123 00-11-22-33-44-55网络调试助手发送不了数据道FPGA的原因:
第一就是因为ip地址没有绑定对,192.168.1.123是开发板的IP地址,
第二就是绑定了多个ip,需要解除不需要绑定的IP。解绑的方法【连接

		---晓凡 20227月于桂林书
  • 6
    点赞
  • 63
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
FPGA以太网数据传输是通过以太网协议进行的。在该过程中,上位机通过网口调试助手发送数据给FPGAFPGA开发板通过以太网口接收数据并将接收到的数据发送给上位机,实现了以太网的环回。以太网通过包的格式传输数据,而串口是通过字节的方式传输数据。数据的发送时钟和接收时钟由以太网芯片PHY提供,无需外部晶振。这个过程可以通过一些命令来实现,比如使用"netsh i i show in"命令来查看网卡的ID号,使用"arp -a"命令来查看本地连接的IP地址,使用"netsh -c i i add neighbors"命令将开发板的IP地址绑定到电脑的网卡。在实际应用中,FPGA和PC之间的通信协议一般采用Ethernet UDP通信协议,通过RGMII总线和开发板上的Gigabit PHY芯片进行通信。硬件上还需要实现ARP、UDP和PING功能,并实现100/1000M自适应。当数据传输成功时,网络数据接收窗口会显示FPGA发给PC的以太网数据包。这一过程中,目标主机的IP地址需要与FPGA程序中的IP地址一致,目标端口号也需要与FPGA程序中的一致。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [FPGA以太网通信实验](https://blog.csdn.net/xzs520xzs/article/details/125779500)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [FPGA 以太网](https://blog.csdn.net/weixin_60612482/article/details/124116468)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值