一种基于SOC隔离Memory的10Gbps以太网实时数据采集方法

文档序号:10578042阅读:1172来源:国知局
一种基于SOC隔离Memory的10Gbps以太网实时数据采集方法
【专利摘要】一种基于SOC隔离Memory的10Gbps以太网实时数据采集方法,所述方法包括步骤:接收来自SFP+的10Gbps以太网报文数据,或接收来自PHY的1Gbps以太网报文,将得到的数据传输至SOC的PL部分进行相关处理,并于基于Linux操作系统的PS部分进行数据交互。将得到的以太网报文存入操作系统memory,最终通过Wireshark等软件进行以太网报文协议分析。
【专利说明】
-种基于SOC隔离Memory的10化PS从太网实时数据采集方法
技术领域
[0001 ] 本发明适用于Xilinx巧nq系列S0C,属于数据通信领域,具体设及10加 psW太网 实时数据采集方法,W及实现同样功能的忍片、肥、仪器等。
【背景技术】
[0002] 1.巧 nq 系列 SOC
[0003] 巧叫可扩展处理平台是采用赛灵思新一代FPGA(Artix-7与KINTEX-7FPGA)所采用 的同一 28nm可编程技术的最新产品系列。可编程逻辑可由用户配置,并通过"互连"模块连 接在一起,运样可W提供用户自定义的任意逻辑功能,从而扩展处理系统的性能及功能。 Zynq嵌入式处理平台系列的每款产品均采用带有NEON及双精度浮点引擎的双核ARM Codex-A9MPCore处理系统,该系统通过硬连线完成了包括L1,L2缓存、存储器控制器W及 常用外设在内的全面集成。该处理系统不仅能在开机时启动并运行各种独立于可编程逻辑 的操作系统(OS),而且还可根据需要配置可编程逻辑。利用运种方法,软件编程模式与全功 能的标准ARM处理SoC毫无二致。
[0004] 应用开发人员利用可编程逻辑强大的并行处理能力,不仅可W解决多种不同信号 处理应用中的大量数据处理问题,而且还能通过实施更多外设来扩展处理系统的特性。系 统和可编程逻辑之间的高带宽AMBA货-AXI互联能W极低的功耗支持千兆位级数据传输, 从而解决了控制、数据、I/O和存储器之间的常见性能瓶颈问题。
[0005] 2. W太网
[0006] W太网是在20世纪70年代研制开发的一种基带局域网技术,使用同轴电缆作为网 络媒体,采用载波多路访问和冲突检测(CSMA/CD)机制。但是如今W太网更多的被用来指各 种采用CSMA/CD技术的局域网。W太网的帖格式与IP是一致的,特别适合于传输IP数据。W 太网由于具有简单方便、价格低、速度高等。
[0007] W太网化thernet)是由Xerox公司创建并由Xerox、Intel和DEC公司联合开发的基 带局域网规范,是当今现有局域网采用的最通用的通信协议标准。后来它被作为802.3标准 为电气与电子工程师协会(IEffi)所采纳。
[000引 W太网W包交换为基础,包长可定义,其包格式如图2所示。
[0009] 3.Pcap
[0010] pcap文件是wire shark配置脚本文件。可W用Wire shark软件打开。Pcap的报文格 式如图3所示。其中:
[0011 ] magic为文件识别头,pcap固定为:0xAlB2C3D4。(4个字节)
[001^ major为主版本号(2个字节)
[0013] minor为次要版本号(2个字节)
[0014] time zone为当地的标准时间(4个字节)
[001引Si奸lags为时间戳的精度(4个字节)
[0016] snaplen为最大的存储长度(4个字节)
[0017] Ii址type为链路类型(4个字节)
[0018] 其中packet header又包含
[0019 ] ts为抓包时间,8字节,4字节表示秒数,4字节表示微秒数。
[0020] caplen为保存下来的包长度,4字节。
[0021] Ien为数据包的真实长度,4字节。
[0022] 4,现有方案介绍
[0023] 高速W太网实时数据采集由于有速率的限制,要求最大的带宽为10加 PS,因此目 前大部分方案为在FPGA下实现DDR控制,通过FPGA读、写DDR。当操作系统请求数据时,FPGA 读取DDR数据,再通过慢速总线转发至操作系统。运一方面原因在于现有系统FPGA与处理器 之间的接口带宽无法达到持续10加 PS带宽,即使达到也需要较高成本。另一方面原因在于 处理运种高带宽读写通常需要直接对物理地址操作或者利用CPU DMA技术,Linux操作系统 为虚拟地址存储,因此无法直接通过读写物理地址的方式存储,否则会导致操作系统崩溃, 而通过CPU DMA技术由于会频繁中断,大大增加系统开销,运也是目前嵌入式处理器甚至PC 机都无法实现10化PS数据流实时采集的原因。

【发明内容】

[0024] 本发明的目的是低成本解决10加 psW太网实时数据采集问题,提供一种基于SOC 隔离Memoir的10化PS W太网实时数据采集方法。
[0025] 本发明通过幻nq SOC在逻辑侧实现AXI-Burst总线操作,既能减小CPU的系统开 销,同时最大数据传输带宽接近10.5化PS,满足10化psW太网报文实时采集所需的带宽。与 此同时,由于本发明实现与Linux操作系统共享memory,降低了系统成本。两种方案的对比 如图4,图5所示,其中图4为现有方案,图5为本发明方案。
[0026] 本发明提供的适用于巧nq系列SOC的基于SOC隔离Memo巧的10化psW太网实时数 据采集方法,包含W下步骤:
[0027] 第1、经过线路侧SFP+或PHY处理后将线路侧的电信号转换为逻辑侧的并行数字序 列一一即W太网报文,并传输至SOC的化中(可编程逻辑阵列FPGA),在化中(可编程逻辑阵 列FPGA)将得到的并行数字序列一一W太网报文进行预处理。
[0028] 第2,将预处理后的W太网报文存入化里的缓冲FIFO中,并依据FIFO水位启动状态 机向PS侧HP 口发送AXI-Burst接口形式的数据报文;
[0029] 第3,修改操作系统设备树文件,使高位地址空间对操作系统不可见,但是运部分 地址空间在U-boot文件中已定义,操作系统视该地址空间为外设,待数据报文抓取完毕后 操作系统通过mmapO函数映射该部分地址,从而可W访问或修改该地址空间数据;
[0030] 第4,操作系统用户空间通过程序将数据写入根文件系统,最终在PC机或其他嵌入 式设备通过Wireshark等相关软件对数据进行协议分析。
[0031] 第1步中所述的将W太网报文进行预处理是指进行如下处理:
[0032] 第1.1,将W太网报文加 W太网长度信息,同时记录每个W太网报文的到达时间, 并将该时间Wpcap的格式封装到W太网报文中,得到pcap报文。
[0033] 第1.2,将得到的pcap报文进行数据流化处理。由于本发明中AXI-Burst接口位宽 为8字节(64bits),而W太网数据包长是随机的,有可能在最后一个时钟周期不满足8字节。 本步骤的操作是如果上一包最后一个周期不满足8字节,则保留,待下一包到来时凑成8字 节再发送。示意图如图6所示。运样每次数据采集操作只有最后一个周期不是8的整数倍,中 间的数据是连续的。降低了后端AXI-Burst总线的实现难度。
[0034] 第2步所述的将W太网报文存入缓冲FIFO中的具体操作是,当FIFO水位达到128字 节,即满足一次burst操作所需要的深度后,化启动数据发送状态机,通过AXI-Burst总线向 PS侧HP 口写入报文数据。
[0035] 本发明的优点和有益效果:
[0036] 本发明可实现10化psW太网的实时数据采集,也可W实现其他高速实时数据传输 业务。当多个HP口联合使用时,总的通信带宽可W达到30化PS。同时与Linux操作系统共享 在同一块存储空间的不同位置中,降低Linux系统开销,节约设备开发成本。
【附图说明】:
[0037] 图1为基于SOC系统实时数据采集框架示意图;
[003引图2为W太网帖格式示意图;
[0039] 图3为pcap报文格式示意图;
[0040] 图4为常规W太网数据采集示意图;
[0041 ]图5为基于SOC隔离孤R方式数据采集示意图;
[0042] 图6为W太网数据流拼接示意图;
[0043] 图7为预处理阶段的流程图;
[0044] 图8为写状态机跃迁图;
[0045] 图9为读操作状态跃迁图;
[0046] 图10为系统地址空间分布图;
[0047] 图11为Vivado软件下地址编辑界面;
[004引图12为读操作实际波形示意图;
[0049] 图13为数据文件示意图;
[0050] 图14为写操作仿真示意图;
[0051] 图15为写操作实际波形示意图;
[0052] 图16为软件修改示意图。
【具体实施方式】
[0053] 下面结合附图和实例,详细描述本发明的技术方案。本发明的所有内容均已在 Xilinx巧nq系列SOC中实现。为了在有限的资源中实现本发明的所有细节,对本发明的算 法在不影响性能的前提下,进行有适当的简化。本发明软件编译环境为vivado2014.4和 petalinux2014.4.本发明的Block Design框图如图7所示。本发明预处理阶段的流程图如 图8所示。本发明预处理阶段状态机跃迁图如图9所示。下面简述硬件。L部分)和软件。S部 分)的实现方式。
[0054] 第1、经过线路侧SFP+或PHY处理后将线路侧的电信号转换为逻辑侧的并行数字序 列一一即W太网报文,并传输至SOC的化中(可编程逻辑阵列FPGA),在化中(可编程逻辑阵 列FPGA)将得到的并行数字序列一一W太网报文进行如下预处理:
[0055] 第1.1,将W太网报文加 W太网长度信息,同时记录每个W太网报文的到达时间, 并将该时间Wpcap的格式封装到W太网报文中,得到pcap报文。
[0056] 第1.2,将W太网报文进行数据流化处理,多字节对齐传输。数据经过pcap封装后 进入Streamizer模块,该模块的主要功能为将各个W太网报文拼接成连续的8字节序列,W 方便后续模块的处理。运样整个数据采集过程中只有最后一个时隙会有不满足8字节整数 倍的情况,整个DDR存储空间不会出现空桐。工程中的W太网数据总线宽度为64bit,运样如 果W太网的包长不是8字节的整数倍时,最后一个周期会出现有的字节为无效字节的情况, 为优化带宽,方便流处理,如果出现运种情况,S化eamizer将下一包的包头进行移位,与上 一包的包尾进行拼接操作,凑成8字节的整数倍,并进行存储至FIFO中等待传输。
[0057] 第2,将预处理后的W太网报文存入化里的缓冲FIFO中,并依据FIFO水位启动状态 机向PS侧HP 口发送AXI -Bur S t接口形式的数据报文。具体操作如下:
[0化引通过对FIFO水位进行监测,当FIFO水位达到128字节,即满足一次burSt操作所需 要的深度后,启动相应的AXI-burst传输。本例中,总线带宽为8字节。依据AMBA总线标准,一 次Burst操作最多可W传输16beats,运样每次Burst操作最多可W传输128字节。在化侧例 化逻辑FIFO为8字节宽度,当FIFO水位超过16时,状态机启动即LL_TRANSF邸,即W最大长度 进行AXI-Burst操作;当FIFO水位不满16时,且FIFO已长时间没有继续收到数据报文,则状 态机PART-TRANSF邸操作,即W当前FIFO水位为准,将FIFO中剩下的数据一次性传输至PS侧 的 HP 口。
[0059] AXI-Burst总线控制模块依据FIFO的水位判断如何发送FIFO中的W太网数据,同 时也可W读取Memory中的内容,实现交互操作。其中图9为写操作状态跃迁图,图10为读操 作状态跃迁图。
[0060] 第2.1,读操作:实现axi burst slave接口,接收从axi interconnect传输过来的 DDR数据。
[006。 由状态机方式实现,逻辑发起读操作,通过外部接口配置,当I_axi_rten检测为 高,启动读状态机。在I_axi_;rd_en为高的同时,义样mem_rd_sta;rt_ad化和mem_;rd_length 信号,该信号由操作系统通过AXI-Lite总线配置,分别表示读的起始地址和读操作 化ansfer的个数,即总共需要burst的次数,一次burst传送128字节。因此传输IM数据需要 burst 2048次,W此推类。
[0062] 当检测到arready信号为1,则状态机进入ARADDR状态,否则在ARREADY状态等待。 如果进入ARADDR状态,则配置地址位和地址有效位,与AXI Master进行地址交互。因为AXI 协议中没有地址response,所WARADDR状态持续一拍后直接进入数据传输状态,没有等待 确认操作。同时地址位和地址有效位归0。
[0063] 期间增加超时检查,即在一定时间内没有数据到来,判定读错误,设置err为1。
[0064] 在DATA状态中,设置计数器,读来一个beat (8字节),计数器加1,检测运个burSt是 否完成了 16个beats,如果完成,设置读操作完成标志。同时检测response信号是否为成功 标志,如果传输成功,则设置相关标志位,表示一次burst读操作传输完成。同时运里也要设 置超时检查,如果一个burst读操作只传了一半或者没有收到response标志,则设置错误标 V巳、O
[00化]完成一次burst读操作后,在进行下一次burst读操作之前,需要:
[0066] I,地址计数器加32'b100 0_0000,128字节,从第一个burst之后的地址继续读取。
[0067] 2,Burst次数计数器加1,同时与软件配置的值相比较,如果读次数计数器与软件 配置的值相等,表明已经读取了要求的字节数,所W设置读完成标志,表明整个读操作完 成,进入IDLE状态。如果没有读取到要求的字节数,则系统进入下一次burst操作,状态机转 到ARADDR中,如此往复。如果其中检测到错误标志,则系统进入邸R状态,退出读状态,同时 向软件报错。图13为实际抓取的读操作数据,图14为保存到文件中的读取数据。可见操作系 统与化中的字节序是相反的。
[0068] 第2.2,写操作:实现axi slave侧接口,与axi connect互联。通用接口设计,由于 前面已经将报文进行数据流处理,因此可W不考虑WStrb情形,默认Sbyte传输,64bit, WStrb置为全1,初始状态为idle态,逻辑测流入的数据流缓存至64X1024FIF0中,FIFO输出 信号,表示fifo将要满,运是外部应停止继续向FIFO写数,否则将造成数据丢失。 该FIFO为异步FIFO。
[0069] 当FIFO内的数据满16深度时,即满足一次完整的burst传输时,状态机跳转至(:_ FU1X_TRANSFER状态。如果f ifO内的数据不能达到一次完整的16x8传输,则进 TRANSFm?状态。判定条件为此时fifo内的深度小于16,且一定时间内没有数据流入FIFO。如 果长时间没有数据进入,开始读取FIFO内残余数据,目前该等待时间为2048个时钟周期。
[0070] 当awval id信号有效则进孤R状态。地址初始态,经历了 一次C_WLL_TRANSFER后,在下一次操作之前将地址加128,经历了一次C_PART_TRANSFER 后,在下一次操作之前将地址加{S_axi_burst_count_set, 4 'bO}。I_reset_transf er信号 用于将地址寄存器归C_BASE_WR_ADDR,由软件设置。
[0071] 当wready信号有效时进入(:_04了4状态,开始传输数据。如果是从C_RJLL_TRANS阳R 状态跃迁过来,则一次写入128字节,如果是从C_PART_TRANSFER状态跃迁过来,一次写入 kount, 4 ' bO}字节,其中count为FIFO中的剩余字节数。
[0072] C_TRANSFER_D0肥状态主要用于检测axi response信号,如果长时间没有收到 response信号,同样进入IDLE状态,但超时计数器置位,上报错误。
[007引设置地址保护,目前的基准地址为0x38000000,DDR的地址范围为OxO~ 0x40000000,因此预留的是高128MB地址空间作为共享空间。地址空间示意图如图11所示, Vivado软件中的地址编辑界面如图12所示。考虑W太网包长度应该小于16000,因此设置 0x3fffafff为保留地址口限,当目前的写入地址大于该口限,同时输入的valid为低时,停 止写入fifo。该操作的目的是保存一个完整的包而不会导致截断。需要预留空间的计算方 式为16384+1024*8 = 0x6000,计算方式为最大包长加上fifo中的剩余数据,fifo为1024x8 字节。图15为通过modelsim仿真得到发送时序图,图16为实际抓取波形得到的写操作时序 图。如图所示,系统写操作最大吞吐量在时钟频率200MHz时为200x64x16/20 = 10.24Gbps。 如想继续提高吞吐量,则需要提高时钟频率。
[0074] 第3,修改操作系统设备树文件,使高位地址空间对操作系统不可见,但是运部分 地址空间在U-boot文件中已定义,操作系统视该地址空间为外设,待数据报文抓取完毕后 操作系统通过mmapO函数映射该部分地址,从而可W访问或修改该地址空间数据。
[0075] 修改操作系统设备树文件,依据系统需求使高地址Memory空间从操作系统Memory 中隔离出来,W保证操作系统不会访问该存储空间,否则会导致操作系统崩溃。本例中将 Memo巧的高128M B^es从系统Memo巧隔离出来,运样该空间物理基地址为0x38000000 ,来 自化侧的AXI-BurstW该地址为基地址进行数据传输。修改方式如图16所示,注意需要将地 址改为0x38000000。同时,为了不使最后一个W太网报文被截断,系统中设置地址上限保 护。本系统中,系统上限地址为0x40000000,预留出一个W太网最长包的长度。当AXI-Burst 地址超过该上限时,停止数据采集,否则有报文截断的风险。当报文保存完毕后,操作系统 可W像访问外设一样通过mmapO函数访问该高地址Memory空间。之后可W将该数据进行 pcap封装,W文件的形式保存在根文件系统中。
[0076] 第4,操作系统用户空间通过程序将数据写入根文件系统,最终在PC机或其他嵌入 式设备通过Wireshark等相关软件对数据进行协议分析。
[0077] 待数据传输完毕或化侧向操作系统通过AXI-Lite总线上报写满时,由Linux用户 空间将该空间地址通过mmapO函数映射进操作系统中,再通过fwriteO等函数将数据写入 指定区域,并最终W文件的形式保存在根文件系统中。
[0078] 当转包文件已经保存完毕后,用户可W在Linux环境下直接通过Wireshark等软件 直接对抓包文件进行协议分析,也可W将抓包文件保存在SD卡中,将文件拷贝到PC机中通 过PC机集中对数据文件进行协议分析。
【主权项】
1. 一种基于SOC隔离Memory的lOGbps以太网实时数据采集方法,其特征在于所述方法 包括如下步骤: 第1,经过线路侧SFP+或PHY处理后将线路侧的电信号转换为逻辑侧的并行数字序列即 以太网报文,并传输至S0C的PL中,在PL中将以太网报文进行预处理; 第2,将预处理后的以太网报文存入PL里的缓冲FIFO中,并依据FIFO水位启动状态机向 PS侧HP 口发送AXI-Burst接口形式的数据报文; 第3,修改操作系统设备树文件,使高位地址空间对操作系统不可见,但是这部分地址 空间在U-b〇〇t文件中已定义,操作系统视该地址空间为外设,待数据报文抓取完毕后操作 系统通过mmap()函数映射该部分地址,从而可以访问或修改该地址空间数据; 第4,操作系统用户空间通过程序将数据写入根文件系统,最终在PC机或其他嵌入式设 备通过Wireshark软件对数据进行协议分析。2. 根据权利要求1所述的方法,其特征在于第1步中所述的将以太网报文进行预处理是 指进行如下处理: 第1.1,将以太网报文加以太网长度信息,同时记录每个以太网报文的到达时间,并将 该时间以pcap格式封装到以太网报文中,得到pcap报文; 第1.2,将以太网报文进行数据流化处理,多字节对齐传输。3. 根据权利要求1所述的方法,其特征在于第2步所述的将以太网报文存入缓冲FIFO中 的具体操作是,当FIFO水位达到128字节,即满足一次burst操作所需要的深度后,PL启动数 据发送状态机,通过AXI-Burst总线向PS侧HP 口写入报文数据。4. 根据权利要求1所述的方法,其特征在于第3步所述的操作系统用户空间在报文采集 完毕后通过_ap〇函数得到该存储空间的指针信息,将报文头部统一添加至数据采集文件 中,并保存为pcap文件;该文件可以通过Linux系统下的相关软件直接读取分析,也可以将 其保存至SD卡中,在PC机上进行协议分析。
【文档编号】H04L12/863GK105939238SQ201610232256
【公开日】2016年9月14日
【申请日】2016年4月14日
【发明人】孟南
【申请人】天津市德力电子仪器有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1