基于FPGA的高速串行总线数据发送方法技术

技术编号:16156225 阅读:55 留言:0更新日期:2017-09-06 20:34
本发明专利技术公开了一种基于FPGA的高速串行总线数据发送方法,包含用户数据处理步骤,包含以下步骤:步骤1、从FPGA的FIFO中提取数据包包头,通过数据包包头判断待发送数据是否大于256字节,若大于256字节执行步骤2,若小于256字节执行步骤3;步骤2、将FIFO中前256字节的数据发送给SRIO的IP核并清空该256字节的数据,再判断FIFO中的剩余数据是否大于256字节,若大于256字节则重复执行步骤2,直至剩余数据小于256字节,执行步骤3;步骤3、将FIFO中的数据发送给SRIO的IP核。当采用本发明专利技术进行FPGA上的SRIO数据发送时,具有延时较低,数据处理效率较高的特点。

【技术实现步骤摘要】
基于FPGA的高速串行总线数据发送方法
:本专利技术涉及一种降低系统中高速串行总线(串行RapidIO,以下简称SRIO)发送数据延迟的方法,尤其涉及降低现场可编程逻辑阵列(以下简称FPGA)上使用SRIO的IP核发送数据延迟的设计方法。
技术介绍
:RapidIO最早是由美国MercuryComputersystems公司为它的计算密集型信号处理系统自行开发的总线技术。RapidIO是一种分组包交换交换结构,在网络处理器、中央处理器和数字信号处理器之间的通信具有高速、低延迟、稳定可靠的互连性。其主要特性是具有极低的延迟性和高带宽,适合用于芯片与芯片、板与板、系统与系统之间的高速数据传输。可提供10Gbps以上的带宽(RapidIO2.0规范可提供100Gbps带宽),其所有的协议都是由硬件实现的,与软件是无关的。RapidIO精简了端点定义,可以装在FPGA中,只占芯片面积的一小部分。现今主流的FPGA厂商均各自设计了相应的IP核。在当前系统或产品中常用的通信及图像处理等功能中,往往对数据传输的延迟有着极高的要求。RapidIO总线虽然通信协议本身延迟极低,但集成于FPGA中后,数据从用户端口输入到端点输出需要经过SRIO的IP核的各种处理过程,包括数据组包、拆包、分发、流量控制和错误管理等,导致固有延迟上升。同时,SRIO协议规定每包数据最大256字节。如图1所示,用户在发送数据时,通常会在FPGA中建立一个串行输入输出内存(一下简称FIFO)作为发送缓存。若要发送的数据量超过256字节时,就等到FIFO中的数据达到256字节后,再将数据输入IP核的输入端进行发送操作。若要发送的数据量小于256字节时,则等一段时间无后续数据进入FIFO后再输入IP核的输入端进行发送操作。以这种方式操作FPGA上的SRIO发送数据会造成数据发送延迟较大,从程序中发出数据到物理层输出的延迟约为100us,具有如下弊端:(1)数据处理效率低。源端和对端在等待数据量足够或等待数据达到时,会浪费FPGA或处理器的资源进行数据量的计算及检测,降低数据处理效率。(2)导致实时性高的应用无法实现。某些通信、数据处理和图像处理等功能的实时性要求较高,若数据从发送到接收延时过高,可能会导致这些功能故障或无法实现。
技术实现思路
:本专利技术的专利技术目的是提供一种基于FPGA的高速串行总线数据发送方法,当采用该方法进行FPGA上的SRIO数据发送时,延时较低,数据处理效率较高。本专利技术的专利技术目的通过以下技术方案实现:一种基于FPGA的高速串行总线数据发送方法,包含用户数据处理步骤,所述用户数据处理步骤包含以下步骤:步骤1.1、从FPGA的FIFO中提取数据包包头,通过数据包包头判断待发送数据是否大于256字节,若大于256字节执行步骤1.2,若小于256字节执行步骤1.3;步骤1.2、将FIFO中前256字节的数据发送给SRIO的IP核并清空该256字节的数据,再判断FIFO中的剩余数据是否大于256字节,若大于256字节则重复执行步骤1.2,直至剩余数据小于256字节,执行步骤1.3;步骤1.3、将FIFO中的数据发送给SRIO的IP核。依据上述特征,还包含用户输入发送数据步骤,所述用户输入发送数据步骤包含以下步骤:步骤2.1、判断FPGA上的FIFO是否有数据;步骤2.2、若有数据则等待至FIFO中的数据发送完毕;若无数据则将待发送的数据组成数据包,并写入FIFO中,其中,所述数据包包含数据包包头,所述数据包包头中包含数据包长度。附图说明:图1是传统使用SRIO的IP核发送数据流程。图2是实施例中所述的数据包包头的结构图。图3是程序总体框图。图4是实施例中基于FPGA的高速串行总线数据发送方法的流程图。图5是实施例中所使用的实验系统的结构示意图。具体实施方式:下面结合实施例和附图对本专利技术作进一步的详细说明。图5为本实施例所使用的一个实验系统的组成框图。整个实验系统主要包括两块分别有一片XC5VFX70T的FPGA和光模块的FPGA开发板以及收发共两根光纤线。用两根光纤线将两块板的光模块的收发端口分别互连,每个FPGA中都加载xilinx的SRIO的IP核及发送数据程序。用其中一块开发板上的FPGA向另一块开发板上的FPGA发送数据,可通过Xilinx的ChipScope软件来监控FPGA的所有端口来测量延时。图3为数据发送方法的整体框图,其中FIFO作为发送数据的缓存,用于暂存要发送的用户数据,其大小可根据所选用FPGA的内存大小进行衡量,注意每次要发送的数据大小不可大于该FIFO的容量,否则数据会丢失。同时因为给SRIP的IP核的数据每包不能大于256字节,而用户要发送的数据可能大于256字节,所以需要数据控制模块负责解析数据包包头,提取数据包包头中的目标地址配置给SRIO的IP核,根据包头中标明的该包数据的数据量来对数据进行分包工作。数据包包头结构如图2所示,64位数据中0~15位表明发送数据目标节点的地址,16~31位表明要发送数据的长度,剩下32~63位可以放置数据。如图4所示,数据发送的具体实现步骤如下:第一步,SRIO初始化及链路建立。1)FPGA上电后判断port_initialized信号是否拉高,拉高表明端口初始化完成;2)判断link_initialized信号是否拉高,拉高表明链路初始化完成。第二步,用户输入发送数据:1)判断FIFO的empty引脚是否拉高,拉高表示FIFO为空,可以写入数据;拉低则表示FIFO中有数据,继续等待;2)拉高FIFO的写使能引脚,将待发送的数据组成数据包写入FIFO,数据写入完毕后,拉低FIFO的写使能引脚。第三步,处理用户数据1)取出FIFO内的第一个数据即包头,通过数据包包头判断待发送数据是否大于256字节,若大于256字节执行4),若小于256字节执行5);2)将FIFO中前256字节的数据发送给SRIO的IP核并清空该256字节的数据,再判断FIFO中的剩余数据是否大于256字节,若大于256字节则重复执行步骤4,直至剩余数据小于256字节,执行5);3)将FIFO中的数据发送给SRIO的IP核,FIFO的empty引脚此时会拉高。第四步,检验通过ChipScope软件来判断数据从写入FIFO到SRIO端口发出间的时间延迟约为3.5us。以上所述,仅为本专利技术的一个具体实例,所涉及到芯片不仅局限于这1款,任何FPGA芯片都可应用于本专利技术中,所以本专利技术的保护范围并不局限于此,任何熟悉本
的技术人员在本专利技术所述的技术范围内,所做的变化或替换,都应涵盖在本专利技术的保护范围内。因此,本专利技术的保护范围应以权力要求书的保护范围为准。本文档来自技高网
...
基于FPGA的高速串行总线数据发送方法

【技术保护点】
一种基于FPGA的高速串行总线数据发送方法,包含用户数据处理步骤,所述用户数据处理步骤包含以下步骤:步骤1.1、从FPGA的FIFO中提取数据包包头,通过数据包包头判断待发送数据是否大于256字节,若大于256字节执行步骤1.2,若小于256字节执行步骤1.3;,其中,所述数据包包头中包含数据包长度;步骤1.2、将FIFO中前256字节的数据发送给SRIO的IP核并清空该256字节的数据,再判断FIFO中的剩余数据是否大于256字节,若大于256字节则重复执行步骤1.2,直至剩余数据小于256字节,执行步骤1.3;步骤1.3、将FIFO中的数据发送给SRIO的IP核。

【技术特征摘要】
1.一种基于FPGA的高速串行总线数据发送方法,包含用户数据处理步骤,所述用户数据处理步骤包含以下步骤:步骤1.1、从FPGA的FIFO中提取数据包包头,通过数据包包头判断待发送数据是否大于256字节,若大于256字节执行步骤1.2,若小于256字节执行步骤1.3;,其中,所述数据包包头中包含数据包长度;步骤1.2、将FIFO中前256字节的数据发送给SRIO的IP核并清空该256字节的数据,再判断FIFO中的剩余数据是否大于2...

【专利技术属性】
技术研发人员:沈聪李裕羿昌宇张海辉吴敏武龙
申请(专利权)人:中国航空无线电电子研究所
类型:发明
国别省市:上海,31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1