随着电子信息技术发展,网络通信在日常生活中应用越来越广泛,以太网技术经历了10 Mbit·s-1到10 Gbit·s-1的发展历程。当前电子设备网络化、多媒体技术、数字图像处理技术成为研究的热点,片上多核系统(Multi-processor system-on-chip,MPSoC)在复杂数字系统中成为主要的硬件结构方案。这类系统通常用以太网完成数据通信,以太网接口设计与实现是一个关键部分。
数字系统规模不断增大,随着市场激烈竞争,系统开发周期要求也变得苛刻,目前,片上多核系统基于IP核的设计成为了主流趋势。系统性能的提高,片上集成的处理器数量也不断增多,基于网络结构的片上多核系统相比总线结构的设计优势越来越显著。Xilinx公司和Ahera公司开发的FPGA芯片针对不同型号,都提供了许多不同类型和不同功能的IP核。然而,复杂数字系统,采样FPGA实现,在开发难度和成本上占有明显优势。
1 MPSoC系统架构
MPSo采用NoC(Network-on-Chip,NoC)通讯结构,处理器和IP核通过资源接口与网络通讯。系统结构如图1所示,处理器与IP核采用总线通讯方式形成簇结构,簇、以太网模块和DDR模块通过资源接口与网络进行通讯。图中运算簇集成了两个处理器,完成数据运算,转置簇集成一个ARM控制器承担数据的行与列交换,DDR模块为片外存储芯片的控制器,以太网承担着系统的数据通讯模块,主要实现系统的数据传输。
2 以太网接口设计
以太网模块设计主要完成以太网控制器IP核用户端接口协议与多核系统网路通讯协议的转换。以太网接口硬件结构设计如图2所示,以太网控制器IP核为Xilinx公司ISE软件例化生成的千兆网控制器。接收模块完成系统网络数据输出到以太网控制器IP核用户端数据输入的协议转换,发送模块承担以太网控制器用户端数据输出到网路数据输入的协议匹配。网络接口模块为多核系统通讯资源接口。
2.1 帧格式定义
图3所示为两种协议的数据格式定义。以太网IP核用户接口数据以帧格式定义数据的输出或输入,数据宽度为8位,帧数据长度范围为64~1 518 Byte,在具体硬件设计中一般选择固定数据长度传输,使硬件结构设计简单。具体格式如图3(a)所示,先输入的数据为目的网卡的网络地址,数据长度为6Byte。其次是6 Byte的源片网络地址。接着为帧传输定义的类型或数据传输长度,长度占2 Byte,数据长度通常在数据帧比较短情况指定。如0010,表示后面传输的16个数据是有效的,传输多余长度的数据,以太网控制器IP核默认为无效数据。而采用类型定义来传输帧,在数据传输长度范围内,结束控制信号以前的数据都表示为有效数据。文中选用512的固定数据传输长度和8 000标识的帧类型完成硬件设计。
网路接口数据包格式如图3(b)所示,数据深度定义为变长,数据宽度为34位,为多核系统实时高效的数据传输提供良好的协调作用。第一个数据为系统网络协议的路由包,其后一个数据为配置信息,称为配置包。接着为不定长度有效数据包。有效数据包发送结束后,紧接着发送一个数据结束包。
网路数据包中不同包类型的格式定义,具体描述如图4所示,数据高2位标识不同包格式类型。当高2位为11 B时,标识为路由包,其中第28~17位表示传输的数据长度,第16位到第9位定义数据源传播的网络坐标地址,低8位定义为数据通讯的目的网络地址,剩下数据位定义为保留位。当高2位为10B时,标识为配置包,其他位根据通信需求,设置不同配置信息。当高2位为00B时,标识为数据包,剩余位为传输的有效数据信息。当高2位为01B时,标识为结束包,其它位为保留位。
2.2 接口时序图
以太网控制器IP核接口时序如图5(a)所示。主要有3类信号:时钟信号、控制信号和数据信号。时钟信号为clock。而控制信号有sof_ n、eof_n、scr_rdy_n,其中sof_n表示帧传输开始控制信号,eof_n为帧传输结束控制信号,scr_rdy_n为传输有效控制信号,控制信号均为低电平有效。用户端数据信号为Data。网路接口侧时序图如图5(b)所示。信号包括ip_stb、ip_ack、ip_fail、ip_fwd、ip_cancal、ip_sus pond。它们为多核系统网络通讯的完成握手应答传输机制。控制信号均为高电平有效,ip_data是数据传输信号。
2.3 发送模块设计
发送模块完成数据以太网IP核接口到网路的数据接口协议转换,如图2所示。该模块包括发送读控制器,发送数据缓存模块和发送写控制器。发送读控制器完成目的地址、源地址和数据类型的数据信息截断,把传播的有效数据写入发送数据缓存模块中,设计通过一个有限状态机结合计数器来完成功能的实现。发送数据缓存模块用一个异步FIFO来承担,同时完成数据8~32位的数据宽度扩展,同时完成跨时钟域数据传输任务。由于该模块数据读入是高时钟频率的8位数据,数据读出是系统时钟频率下的32位数据,数据的流动是由慢到快的传递过程,因此选用一个深度为64的FIFO单元来承担。发送写控制模块通过读取缓存模块中的数据,配置发送数据的有效信息,完成网络数据包格式封装,最后传输至多核系统通信网络资源接口。
2.4 接收模块设计
接收模块承担网络数据包协议到以太网IP核接口协议转换,包含接收写控制器、接收数据缓存模块和接收读控制器。接收写控制器模块设计,通过网络控制信号和FIFO标识信号以及当前状态改变状态机的状态跳转。根据不同状态产生控制信号,实现网络包、配置包、结束包和负载信息的截取,把传播的有效数据写入数据缓冲模块。数据缓存模块把32位网络数据转换到8位宽的以太网控制器接口数据,同时实现数据跨时钟域传输任务。该数据流动方向,速度是由快到慢的过程,结合硬件逻辑资源和任务请求的频度,该设计选用一个深度为1 024,宽度为32的异步FIFO单元来承担。接收读控制器模块通过读取缓存FIFO中数据,配置发送数据的源和目的网卡地址及帧类型,完成以太网数据帧的封装,传输至以太网IP核用户端接口。
3 实验结果
该硬件结构在Xilinx M525开发板上验证实现,FPGA芯片型号为Virtex-5 XC6VLX550T,其中芯片逻辑资源为207360,存储资源为11.39 MB,寄存器资源为207 360,系统硬件在FPGA中资源占用如表1所示。
表1是系统设计通过ModelSim功能仿真后,在Xilinx ISE工具上综合后的结果,综合频率高达245.562 MHz。在系统运行中,以太网控制器IP核时钟工作频率在125MHz,系统时钟频率为100MHz。通过仿真和FPGA下载验证后,接口通讯时钟周期统计如表2所示。
通过表2可以看出,以太网接口设计在完成两种协议转换和跨时钟数据传输中,通讯响应时间短,且具有实时和稳定传输,避免了异步时钟在数据传输中的效率问题。
实验测试,把FPGA开发板与PC机通过网线连接,如图6所示。在PC机上编写软件程序,用于发送和接收硬件系统数据,通过修改数据文件,测试不同深度的数据传输。比较发送数据和接收数据文件,判断传输误码率。
实验测试了不同文件大小的数据传输需要时间,统计结果如图7所示。测试结果,发送与接收文件数据,与预期结果一致。通讯时间与数据文件大小近似于线性关系,且传输时间短。以太网接口设计模块为MPSoC承担网络数据通讯,提供了实时和高吞吐率的通讯速度。此外,以太网模块可以用于系统单模块集成调试传输源数据,提高验证效率。以太网接口模块也可以应用于通讯网络,实现系统数据与网络通讯信息的交换。
4 结束语
研究了以太网在MPSoC中的数据通讯,解决了系统在网路通讯中的实时和高吞吐率的数据传输瓶颈。通过该接口与多核系统通讯,可以完成局域网到广域网数据信息传递。