基于PC机与FPGA的脉冲雷达通信系统设计 - FPGA/ASIC技术 -
使用WinPcap 自定义通信帧格式,实现一种PC 机与FPGA 之间双向高速数据传输的方法,绕过TCP 协议和IP 协议,只涉及到链路层和物理层,降低了FPGA 端的协议解析复杂度、减少拆包时间和时延,且突发速率达到1Gbit /s。
0 引言
近年来,FPGA( Field Programable GateArray,现场可编辑门阵列) 在通信领域的应用越来越广泛,FPGA 运行速度快,容易实现大规模系统,内部程序并行运行,但进行高精度复杂运算处理是FPGA 的劣势,同时由于计算机具有强大的运算和处理能力,可以将高精度复杂运算由PC 机完成后再交由FPGA完成其他工作。千兆以太网作为一种高速以太网技术,仍采用了与10M 以太网相同的帧格式、帧结构、网络协议、全/半双工工作方式、流控模式以及布线系统。利用千兆以太网,可以方便地构建PC机与FPGA 的高速数据传输系统。
1 总体设计
系统总体设计如图1 所示,数据通过PC 机的网卡发送,利用千兆以太网作为传输媒介,传输至FPGA 端时首先通过SFP 光模块进行电光转换,然后到达FPGA 的Rocket-IO PHY 层,该层是高速的串行收发器,可对数据进行单工或双工的收发。接收完成的数据被送至MAC 层进行地址解析与校验,只有当解析与校验结果正确且FIFO 不满时,数据才能被写入FIFO。写入FIFO 的数据可被后续的用户逻辑进行相关的数据处理。
在PC 端,考虑到所传输数据具有较为固定的格式且传输速率很高,将不采用传统的套接字服务( SOCKET) ,改为在Winpcap 驱动基础上构造并发送或接收自定义的数据包格式。该数据包格式对传统的以太网数据包格式进行大量简化,绕过TCP 和IP 协议,只设计数据链路层与物理层,降低FPGA 端协议解析的复杂度,减少拆包时间与时延。
1.1 Winpcap 简介
WinPcap 是应用于Win32 平台的数据包捕获与网络分析的一种体系结构,为Win32 应用程序提供访问网络底层的能力,其主要思想来源于Unix 系统中BSD 包捕获构架。WinPcap 主要由3 个模块组成:
( 1) NPF 包过滤器,数据包监听设备驱动程序,是架构的核心,它工作在内核级,主要功能是过滤数据包。它直接从数据链路层取得网络数据包,不加修改地传给运行在用户层的应用程序,也允许用户发送原始数据包。
( 2) Packet.dll 是低级的动态链接库,运行在用户级,把应用程序和数据包监听设备驱动隔离开来,使得程序可以不加修改地在不同的Windows 系统上运行。通过Packet. dll 提供的能用来直接访问BPF驱动程序的包驱动API,利用“raw”模式发送和接收包。不同Windows 系统上的Packet. dll 并不相同,但由于它提供了一套相同的调用接口,这样使得高级系统无关库不依赖于特定的Windows 平台。
( 3) Wpcap. dll 是高级系统无关库,也工作在用户级,它和应用程序编译在一起,并使用低级动态连接库Packet. dll 提供的服务,向应用程序提供完善的监听接口。
由于WinPcap 的主要功能在于独立于主机协议( 如TCP /IP) 来发送和接收原始数据包。即WinPcap 不能阻塞、过滤或者控制其他应用程序数据包的发送,它仅仅只是监听共享网络上传送的数据包。利用WinPcap 驱动程序发出的数据包将不含有IP头和TCP 头,只含有MAC 地址和数据,简化了硬件上的数据帧格式解析。
1. 2 自定义数据帧格式
以太网可以工作在10Mb /s,100Mb /s,1Gb /s等,同时它可以工作于多种传输媒体下,但是所有类型的以太网都有一个统一的帧结构。前导码( 7 字节) 、帧起始定界符( 1 字节) 、目的MAC 地址( 6 字节) 、源MAC 地址( 6 字节) 、类型/长度( 2 字节) 、数据( 46 ~ 1500 字节) 、帧校验序列( 4 字节) 。
如PC 机端使用普通的网口编程方法,会带有IP 头和TCP 头等,给FPGA 端拆包、协议解析带来复杂度。为此采用WinPcap 驱动编程,实现FPGA与PC 网口之间的自定义数据帧格式,使FPGA 端接收到得数据帧格式为类似802. 3 协议的以太网数据包格式,但不会含有IP 头和TCP 头等协议开销,具体如表1 所示。
其中,控制标志用于对FPGA 的寄存器进行设置控制; 校验同标准100Base - T 帧的FCS 域,内容为32bit 的CRC 检验值,检验范围包括目的地址、源地址、控制、信息数据4 个字段。
查看评论 回复