原创 以太网,FPGA就一定能搞定系列之IPRAW模式通信

2014-1-5 19:23 2697 1 1 分类: FPGA/CPLD 文集: SF-CY3 FPGA套件开发指南

以太网,FPGA就一定能搞定系列之IPRAW模式通信

本系列博文节选自特权同学的FPGA开发电子书《SF-CY3 FPGA套件开发指南》。

最新设计文档下载地址:http://pan.baidu.com/s/1em79m

1 概述

本实例的硬件系统和上一个实例一样,只是在CH395芯片的应用上使用了不同的传输模式。本实例要传输的是一个不折不扣的IP包,我们知道IP包也有很多不同的分类协议,而本实例不深入探讨各种IP包协议,而只是简单的使用CH395的IPRAW模式收发一个最简单的IP包,借此大家也可以认识最简单最基本的IP包协议格式。

2 IPRAW模式介绍

如图所示,FPGA向CH395写入若干字节数据流后,CH395将此socket的协议字段封装在IP首部,并将数据流封装在IPRAW数据部分进行发送。

 

5.1.jpg

IPRAW一包允许发送的最大长度为1480字节,如果FPGA写入的数据流长度大于1480字节,CH395会将数据流封装成若干个IP包进行发送且每包成功发送后都会产生SINT_STAT_SEND_OK中断。FPGA每次写入的字节长度不得大于发送缓冲区长度(2KB),且收到SINT_STAT_SENBUF_FREE中断后才可以进行下一次写数据。如果产生SINT_STAT_TIM_OUT中断表示数据发送失败,导致发送数据失败一般有以下两个原因:

① 如果目的IP地址和CH395在同一个子网,则可能目的IP地址的网络设备不在线。

② 如果目的IP地址和CH395不在同一个子网,则可能CH395的网关不在线。

当CH395收到IP数据包后,首先检测协议字段和Socket设置的协议字段是否相同,如果相同则将IPRAW数据包复制到接收缓冲区中并产生SINT_STAT_RECV中断,FPGA收到此中断后,可以发送命令CMD_GET_RECV_LEN_SN来获取接收缓冲区数据的长度,然后发送命令CMD_READ_RECV_SN来读取缓冲区的数据。FPGA可以一次将所有数据读出也可以分多次读取,由于IPRAW模式下CH395无法进行流控,建议FPGA查询到接收数据中断口后应立即将所有数据读出,以免被后续的数据覆盖。

关于协议字段设置的注意事项 :CH395处理IPRAW的优先级高于UDP和TCP,如果IP协议字段设置为17(UDP)或者6(TCP),则可能存在和其他socket冲突的可能性,在使用时应当注意避免,下面列举两种情况进行说明:

① Socket0设置为IPRAW模式,IP协议字段为17,Socket1为UDP模式。在UDP模式下,IP包的协议字段也是17,这样就会导致Socket1通讯的数据会被Socket0拦截,无法接收到数据。

② Socket0设置为IPRAW模式,IP协议字段为6,Socket1为TCP模式。在TCP模式下,IP包的协议字段也是6,这样就会导致Socket1通讯的数据会被Socket0拦截,无法接收到数据。

3 IP协议解析

IP帧的格式如图所示,与ARP或RARP帧不同的是,IP帧的帧类型数据位0x0800,其后是20字节的IP首部,接着是IP数据报。当然了,IP数据报中如果继续做文章,那么诸如TCP和UDP协议就应运而生了,不用急,这在后面会继续深入探讨。

 

5.2.jpg

IP提供一种无连接的传输机制,这就意味着在网络传输的每个数据报都作为独立的单元来对待。IP并不维护服务器和客户端之间的连接细节。

IP不能保证数据传输的可靠性。然而,这些并不意味着分组将被毫无规则的忽略,而是仅在网络出现故障时才会发生数据丢失。

下面我们来介绍一下IP数据报的格式、IP数据报格式,如下所示。

版本

头部长度

服务类型

总长度

标识

分段标志

分段偏移量

生存时间

协议

校验和

源地址

目标地址

选项

填充

数据

●  版本:用于传输数据的IP版本,大小为4位;

●  头部长度:用于规定报头长度;

●  服务类型:用于设置数据传输的优先权或者优先级,其大小为8位;

●  总长度:指出数据报的总长,数据报总长=报头长度+数据长度,大小为16位;

●  标识:用于标识所有的分段,大小为16位;

●  分段标志:确定一个数据报是否可以分段,同时也指出当前分段后面是否还有更多分段,大小为3位;

●  分段偏移量:由目标计算机用于查找分段在整个数据报中的位置,大小位13位;

●  生存时间:设置数据报可以经过的最多路由器数。长度为8位;

●  协议:指定用于创建数据字段中的数据的上层协议,大小为8位,常见的协议如TCP取值6,UDP取值17,ICMP取值1;

●  校验和:检查所传输数据的完整性,大小为16位;

●  源地址:源IP地址,字段长度为32位;

●  目标地址:目标IP地址,字段长度为32位;

●  选项:不上一个必须的字段,字段长度具体取决于所选择的IP选项;

●  数据:包含网络中传输的数据,IP数据报还包括上层协议的报头信息。

4 软件设计

本实例软件流程如图所示。IPRAW模式设置中需要设置目的主机的IP地址,即PC机的IP地址192.168.1.103;并且设置协议字段为0xff。随后在主循环中不断的发送已经准备好的一个IP帧,直到接收到PC端来的一个IP帧,则FPGA打印接收帧数据并且停止运行。由此,我们既可以在PC端观察FPGA发送出来的IP帧,也可以在FPGA上验证接收功能的正确性。

 

5.3.jpg

5 板级调试

下载硬件工程产生的sof文件到目标板中,同时在线运行软件工程。接着我们便可以在EDS的Nios II Console窗口上看到如图所示的打印数据。

 

5.4.jpg

同时我们打开“科来网络分析系统”软件,点击Start进行全面分析。如图所示,在“节点浏览器”下选择“IP”分析项。

 

5.5.jpg

如图所示,查看“数据包”解析,选择源主机IP地址为192.168.1.101发送出来的IP帧,其后便是对该帧IP包的解析,可以比对FPGA中发出来的IP帧,完全一致。

 

5.6.jpg

OK,FPGA往PC端发送IP包已经确认是成功的,那么我接着在PC端发送一个IP包给FPGA。如图所示,选择科来软件菜单栏的“工具”项,单机“数据包生成器”。

 

5.7.jpg

接着如图所示,点击“添加”创建一个IP包。

 

5.8.jpg

接着弹出窗口如图所示,选择“IP数据报”,时间差可以设置为“1”秒,完成后点击“确定”。

 

5.9.jpg

如图所示,可以手动更改IP帧的各个参数,这里我们设置好本地(PC机)的MAC地址和IP地址;目的主机(FPGA端)的MAC地址和IP地址;总长度为84,即20个字节的IP首部加上64个字节的数据;上层协议,即协议字段设置为0xff;在最后可以编辑64个数据,我们设置它们为0x50-0x8f。

 

5.10.jpg

完成IP包的编辑后,我们再“数据报列表”中选择新建的IP包,右键单击弹出菜单,点击“发送选择的数据包”。

 

5.11.jpg

弹出了如图所示的“发送选择数据包”的窗口,确认网卡信息(可以单击“选择”查看),点击“开始”即发送IP包。

 

5.12.jpg

如图所示,此时我们回到EDS中,Niso II Console里打印出了刚刚接收到的PC端发送来的IP包。这里打印了收到的64个数据为0x50-0x8f,和PC端发送的IP包完全一致。

 

5.13.jpg
广告

文章评论 0条评论)

登录后参与讨论
相关推荐阅读
特权ilove314 2016-06-30 21:16
例说FPGA连载6:FPGA开发所需的技能
例说FPGA连载6:FPGA开发所需的技能 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   前面的文字已经做了很多铺垫,相信读...
特权ilove314 2016-06-28 21:09
例说FPGA连载5:FPGA的优势与局限性
例说FPGA连载5:FPGA的优势与局限性 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   若要准确评估FPGA技术能否满足开...
特权ilove314 2016-06-28 21:05
例说FPGA连载5:FPGA的优势与局限性
例说FPGA连载5:FPGA的优势与局限性 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   若要准确评估FPGA技术能否满足开...
特权ilove314 2016-06-26 22:11
例说FPGA连载4:FPGA语言与厂商介绍
例说FPGA连载4:FPGA语言与厂商介绍 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   Verilog与VHDL 说到FP...
特权ilove314 2016-06-23 21:26
例说FPGA连载3:FPGA与其它主流芯片的比较
例说FPGA连载3:FPGA与其它主流芯片的比较 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   FPGA、ASIC和ASSP...
特权ilove314 2016-06-21 20:32
例说FPGA连载2:FPGA是什么
例说FPGA连载2:FPGA是什么 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   2015年伊始,Intel欲出资百亿美金收...
广告
我要评论
0
1
广告
关闭 热点推荐上一条 /3 下一条