一种提高数据传输效率的方法及装置转让专利

申请号 : CN200910142280.9

文献号 : CN101645053B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 彭鼎祥彭少宁

申请人 : 福建星网锐捷网络有限公司

摘要 :

本申请公开了一种提高数据传输效率的方法,应用于内部具有若干端口模块的芯片,任一端口模块向其他端口模块传输数据时,将接收的数据中包含的帧数据和帧信息保存在本地FIFO缓存内;确定保存的帧数据和帧信息符合预设条件时,向仲裁方请求传输数据;在接收到仲裁方允许传输数据的指示时,读取保存的帧数据和帧信息,按照设定数据长度对其进行切割形成若干数据片,并以数据片为单位进行数据传输;其中,每将一个数据片传输完毕,则在再次接收到仲裁方发送的第二信号时,传输下一个数据片。这样,便令芯片内部各模块中的若干端口的数据流量保持基本一致,从而实现多路数据的均衡传输。本申请同时公开了一种芯片。

权利要求 :

1.一种提高数据传输效率的方法,应用于内部具有若干端口模块的芯片,其特征在于,任一端口模块向其他端口模块传输数据时,包括:将接收的数据中包含的帧数据和帧信息统一保存在本地先入先出FIFO缓存内;

确定本地FIFO缓存内保存的帧数据和帧信息符合预设条件时,向仲裁方发送用于请求传输数据的第一信号;

在接收到仲裁方返回的用于指示允许传输数据的第二信号时,读取本地FIFO缓存内保存的帧数据和帧信息,按照设定数据长度对其进行切割形成若干数据片,并以数据片为单位进行数据传输;其中,每将一个数据片传输完毕,则在再次接收到仲裁方发送的第二信号时,传输下一个数据片。

2.如权利要求1所述的方法,其特征在于,包括:所述帧数据和帧信息符合预设条件,包括:所述帧数据和帧信息的数据量水线达到设定阈值;或/和,所述帧信息内包含帧结束信号。

3.如权利要求1所述的方法,其特征在于,所述以数据片为单位进行数据传输,包括:设置重传RC计数器;

读取FIFO缓存内保存的数据并将其传输至接收端,以及通过所述RC计数器对读取次数进行累积;

根据所述RC计数器的累积值获知数据片的传输状态,每确定一数据片传输完毕,将RC计数器清零以开始重新计数。

4.如权利要求3所述的方法,其特征在于,根据所述RC计数器的累积值获知数据片的传输状态,包括:获知所述RC计数器的累积值为1时,确定一数据片开始传输;

获知所述RC计数器的累积值为K时,确定所述数据片结束传输,

其中,K为数据片的数据长度与FIFO缓存数据总线位宽的比值。

5.如权利要求3所述的方法,其特征在于,将所述RC计数器清零后,进一步判断所述FIFO缓存是否已读空,若是,则确认数据传输流程结束,否则,在再次接收到仲裁方发送的第二信号时,继续从所述FIFO缓存内读取数据,以传输下一数据片。

6.如权利要求1-5任一项所述的方法,其特征在于,所述芯片为现场可编程门阵列FPGA芯片、复杂可编程逻辑器件CPLD芯片或专用集成电路ASIC芯片。

7.一种芯片,包含若干用于进行数据传输的端口模块,其特征在于,所述端口模块包括:接收单元,用于接收数据;

先入先出FIFO缓存单元,用于将接收的数据中包含的帧数据和帧信息进行统一保存;

第一处理单元,用于在确定所述FIFO缓存单元内保存的帧数据和帧信息符合预设条件时,向仲裁方发送用于请求传输数据的第一信号;

第二处理单元,用于在接收到仲裁方返回的用于指示允许传输数据的第二信号时,读取本地FIFO缓存单元内保存的帧数据和帧信息,采用设定数据长度对其进行切割形成若干数据片,并以所述数据片为单位进行数据传输;其中,所述第二处理单元每将一个数据片传输完毕,则在再次接收到仲裁方发送的第二信号时,传输下一个数据片;

发送单元,用于将从FIFO缓存单元中读取出的数据发送至接收端。

8.如权利要求7所述的芯片,其特征在于,所述第一处理单元获知所述帧数据和帧信息的数据量水线达到设定阈值,或/和,所述帧信息内包含帧结束信号时,确定所述FIFO缓存内保存的帧数据和帧信息符合预设条件。

9.如权利要求7所述的芯片,其特征在于,所述第二处理单元以数据片为单位进行数据传输时,设置一重传RC计数器,读取FIFO缓存内保存的数据并将其传输至接收端,以及通过所述RC计数器对读取次数进行累积,并根据所述RC计数器的累积值获知数据片的传输状态,每确定一数据片传输完毕,将RC计数器清零以开始重新计数。

10.如权利要求9所述的芯片,其特征在于,所述第二处理单元将所述RC计数器清零后,进一步判断所述FIFO缓存是否已读空,若是,则确认数据传输流程结束,否则,在再次接收到仲裁方发送的第二信号时,继续从所述FIFO缓存内读取数据,以传输下一数据片。

说明书 :

一种提高数据传输效率的方法及装置

技术领域

[0001] 本申请涉及计算机领域,特别涉及一种提高数据传输效率的方法及装置。

背景技术

[0002] 现场可编程门阵列(Field Programmable Gate Array,FPGA)是一种集成度很高的新型高性能可编程芯片,其内部电路功能是可编程的(Programmable),可以通过硬件描述语言(Hardware Description Language,HDL)和专用设计工具,在其内部灵活地实现极其复杂的电路功能,适用于高速、高密度的高端数字逻辑电路设计领域。
[0003] FPGA芯片内部模块之间传输的数据帧,在数据格式上一般包含六个要素:帧操作时钟,帧起始信号、帧结束信号、帧数据信号、帧数据有效信号、数据位使能信号。参阅图1所示,clk是帧操作时钟,信号在其上升沿触发翻转;sop是帧起始信号,表示帧数据开始传输;eop是帧结束信号,表示帧数据传输结束;dval是帧数据有效信号,表示帧数据信号data有效;data为帧数据信号,用于携带传输的数据;mod为数据位使能信号,用于表示帧数据信号data中各个数据位的有效性;实际应用中,如果data的位宽为64位,那么mod的位宽为3位,如表1所示,mod不同取值的具体意义如下:
[0004] 表1
[0005]mod[2:0]取值 data[63:0]含义
000 data[63:0]有效
001 data[7:0]有效
010 data[15:0]有效
011 data[23:0]有效
100 data[31:0]有效
101 data[39:0]有效
110 data[47:0]有效
111 data[55:0]有效
[0006] 数据帧在数据传输过程中的一个重要特点就是:数据帧长的随机性。在以太网帧传输过程中,最短帧为64字节,例如Pause帧;最长帧为9.6K字节,例如Jumbo帧。通常情况下,以太网帧的长度在64字节和1522字节之间随机变化,而这种变化的随机性将给数据帧的多路传输均衡带来困难,如果处理不好,将大大降低数据传输的效率。
[0007] 数据帧的多路传输是数据传输中经常遇到的情况,多路数据帧在同一个接口或者同一个通道里传输。例如:数据帧的集中存储、统计和帧交换等等,都存在多路传输的情况。参阅图2所示,数据帧的多路传输的具体操作步骤如下:
[0008] 1、前级功能模块的数据帧接收端接收上游数据,经过处理后发送给本模块的数据帧发送端;
[0009] 2、前级功能模块的数据帧发送端根据数据帧所属端口,向N-1仲裁模块发起数据帧传输请求;
[0010] 3、通过N-1仲裁,将N个端口中某一个端口的数据帧传输到公共通道;
[0011] 4、通过N-1仲裁,从公共通道中读取数据传输到后级功能模块的数据帧接收端;
[0012] 5、后级功能模块的数据帧接收端接收到数据帧,经过处理后,发送给本模块的数据帧发送端。
[0013] 一般情况下,数据帧是数据传输操作的基本单位,即从一个功能模块的数据帧发送端到公共通道,或者从公共通道到一个功能模块的数据帧接收端口,一次数据传输就是一个数据帧。
[0014] 以端口0和端口1的数据帧为例,作如下假设:
[0015] 前级功能模块的数据帧发送端各个端口的FIFO缓存为2M字节;
[0016] 前级功能模块的数据帧发送端端口0发送64字节帧长数据帧;
[0017] 前级功能模块的数据帧发送端端口1发送1024字节帧长数据帧;
[0018] N-1仲裁模块采用较为合理的水线判定轮转仲裁机制进行端口仲裁。所谓水线判定轮转仲裁机制,即是指FIFO缓存内的数据量处于高水线的端口优先响应,FIFO缓存内的数据量处于同一个水线的端口轮转响应。参阅图3所示,所谓数据水线就是指某个存储体中的数据量的多少,类似于水库的蓄水量。采用水线判定轮转仲裁机制时需执行的操作包括:将各个端口缓存的数据水线进行分档;仲裁优先响应缓存水线处于高档位的端口的数据传输请求;如果出现缓存水线处于相同档位的端口,则轮转响应这些端口的数据传输请求。
[0019] 假设,端口0的数据帧和端口1的数据帧带宽占用相同。
[0020] 由于两个端口的数据帧带宽占用相同,则两个端口接收并保存至本地FIFO缓存内的初始数据量将基本相近,也就是初始水线基本相同。那么在这种情况下,N-1仲裁模块将轮流响应端口0和端口1的数据传输请求。
[0021] 当响应端口0的数据传输请求时,端口0发送一个数据帧,也就是64字节;当响应端口1的数据传输请求时,端口1也发送一个数据帧,也就是1024字节。
[0022] 可见一次轮转操作后,端口0比端口1少读出的字节数为:
[0023] D=1024-64=960字节
[0024] 那么经过T次轮转之后,发送端端口0的FIFO缓存将溢出,T为:
[0025]
[0026] 这样,便可以得出结论:如果端口的数据传输以数据帧为单位,那么,当各个端口的数据帧长不一致时,在进行多路传输的过程中,将导致某些端口的数据累积,从而导致端口的缓存溢出。为了避免FIFO缓存溢出,设计人员往往设计这些端口不再接收帧数据,直到FIFO缓存内的数据量水线下降到低水线,但是,这样做就降低了数据传输效率。
[0027] 有鉴于此,需要提供一种新的数据传输方法,在避免端口缓存溢出的前提下,提高数据传输效率。

发明内容

[0028] 本申请实施例提供一种提高数据传输效率的方法及装置,用以在芯片内部实现多路数据的均衡传输,以及提高数据传输效率。
[0029] 本申请提供的具体技术方案如下:
[0030] 一种提高数据传输效率的方法,应用于内部具有若干端口模块的芯片,任一端口模块向其他端口模块传输数据时,包括:
[0031] 将接收的数据中包含的帧数据和帧信息统一保存在本地先入先出FIFO缓存内;
[0032] 确定本地FIFO缓存内保存的帧数据和帧信息符合预设条件时,向仲裁方发送用于请求传输数据的第一信号;
[0033] 在接收到仲裁方返回的用于指示允许传输数据的第二信号时,读取本地FIFO缓存内保存的帧数据和帧信息,按照设定数据长度对其进行切割形成若干数据片,并以数据片为单位进行数据传输;其中,每将一个数据片传输完毕,则在再次接收到仲裁方发送的第二信号时,传输下一个数据片。
[0034] 一种芯片,包含若干用于进行数据传输的端口模块,所述端口模块包括:
[0035] 接收单元,用于接收数据;
[0036] 先入先出FIFO缓存单元,用于将接收的数据中包含的帧数据和帧信息进行统一保存;
[0037] 第一处理单元,用于在确定所述FIFO缓存单元内保存的帧数据和帧信息符合预设条件时,向仲裁方发送用于请求传输数据的第一信号;
[0038] 第二处理单元,用于在接收到仲裁方返回的用于指示允许传输数据的第二信号时,读取本地FIFO缓存单元内保存的帧数据和帧信息,采用设定数据长度对其进行切割形成若干数据片,并以所述数据片为单位进行数据传输;其中,所述第二处理单元每将一个数据片传输完毕,则在再次接收到仲裁方发送的第二信号时,传输下一个数据片。
[0039] 发送单元,用于将从FIFO缓存单元中读取出的数据发送至接收端。
[0040] 通过上述技术方案可以看出,本申请实施例中,在内部具有若干端口模块的芯片中,任一端口模块向其他端口模块传输数据时,均以固定长度的数据片为操作单位进行数据传输,即在数据传输过程中,将长帧切割、将短帧合并,以形成若干固定长度的数据片,并根据仲裁方的指令对数据片进行传输,其中,每将一个数据片传输完毕,都在再次接收到仲裁方发送的指令时,发送下一个数据片,这样,便形成了以数据流量为衡量标准的数据传输模型,令芯片内部各端口模块的数据流量基本保持一致,从而在多路数据传输中,能够实现各路数据均衡传输,避免出现数据阻塞而降低传输效率。

附图说明

[0041] 图1为现有技术下FPGA芯片内部模块之间传输的数据帧数据格式示意图;
[0042] 图2为现有技术下数据帧多路传输模型示意图;
[0043] 图3为现有技术下水线判定轮转仲裁机制原理示意图;
[0044] 图4为现有技术下端口n接收传送数据示意图;
[0045] 图5为本申请实施例中端口n接收传送数据示意图;
[0046] 图6为本申请实施例中数据片划分方式示意图;
[0047] 图7为本申请实施例中端口n接收上游数据流程图;
[0048] 图8为本申请实施例中端口n进行数据传输流程图;
[0049] 图9为本申请实施例中芯片内端口模块功能结构示意图。

具体实施方式

[0050] 为了在芯片内部实现多路数据的均衡传输,以及提高数据传输效率,本申请实施例中,建立以下数据片传输模型:在具有若干端口模块的芯片内部,任一端口模块向其他端口模块传输数据时,将接收的数据中包含的帧数据和帧信息统一保存在本地先入先出(First-In First-Out,FIFO)缓存内;并在确定本地FIFO缓存内保存的帧数据和帧信息符合预设条件时,向仲裁方发送用于请求传输数据的第一信号;以及在接收到仲裁方返回的用于指示允许传输数据的第二信号时,读取本地FIFO缓存内保存的帧数据和帧信息,按照设定数据长度对其进行切割形成若干数据片,并以数据片为单位进行数据传输;其中,所述端口模块每将一个数据片传输完毕,则在再次接收到仲裁方发送的第二信号时,传输下一个数据片。
[0051] 通过使用这个数据片传输模型,可以节省片内存储资源,解决多路数据传输中的数据均衡问题,提高片外存储设备的带宽利用率,从而提高系统数据传输的效率。
[0052] 下面结合附图对本申请优选的实施方式进行详细说明。
[0053] 本申请实施例中,数据片传输模型在硬件结构上保持了原有数据帧多路传输模型的基本结构特点。例如,现有技术中,原有数据帧多路传输模型的第n个端口的数据接口如图4所示;而本申请实施例中数据片传输模型的第n个端口的数据接口如图5所示,其中,第n个端口中各个接口信号的定义如表2所示。
[0054] 表2
[0055]接口信号名 定义
freq[n] 端口n的数据发送请求
fwmark[n] 端口n的接收FIFO水线向量
fgrant[n] N-1仲裁授权端口n开始发送数据
fbgn 输出数据片开始标识
fend 输出数据片结束标识
fsop 输出数据帧开始标识
feop 输出数据帧结束标识
fdval 输出帧数据有效信号
fdata 输出帧数据信号
fmod 输出帧数据位有效信号
us_sop 上游输入数据帧开始标识
us_eop 上游输入数据帧结束标识
us_dval 上游输入帧数据有效信号
us_data 上游输入帧数据信号
us_mod 上游输入帧数据字节有效信号
[0056] 如表2所示,fbgn和fend是本申请实施例中新增加的信号,用来标记数据片的开始和结束,其作用将在以下实施例中进行详细介绍。
[0057] 基于上述硬件结构,本申请实施例中,在数据片传输模型的软件算法上进行了较大的改进,包括:
[0058] 1、在数据结构上进行改进。
[0059] 参阅图4和图5所示,原有的数据帧多路传输模型中,对帧数据(如,帧数据信号us_data和帧数据有效信号us_dval)和帧信息(如,帧起始信号us_sop,帧结束信号us_eop和数据位使能信号us_mod)分别进行缓存,这样,在读取数据时,需要从不同的存储区域分别获得帧数据和帧信息,再进行合并。而本申请实施例中,数据片传输模型将帧数据和帧信息缓存在一处,这样,在读取数据时,在统一的存储区域便可同时获得帧数据和帧信息,从而提高了数据读取效率;其具体方式如下:
[0060] 参阅图5所示,在端口n FIFO缓存输入端(fifo_din,位宽为72位),写入的数据不仅是帧数据,还包含帧信息。fifo_din处写入的数据采用公式1(仅为举例)来表示:
[0061] fifo_din[63:0]=us_data[63:0]
[0062] fifo_din[64]=us_sop
[0063] fifo_din[65]=us_eop
[0064] fifo_din[68:66]=us_mod
[0065] fifo_din[70:69]=保留
[0066] fifo_din[71]=us_dval 公式1
[0067] 基于上述fifo_din处写入的数据,参阅图5所示,在端口n FIFO缓存输出端(fifo_dout,位宽为72位),读出的数据中便会包含帧开始信号fsop、帧结束信号feop、帧数据有效信号fdval、帧数据信号fdata和帧数据位有效信号fmod。fifo_dout处读出的数据采用公式2(仅为举例)来表示:
[0068] fdata=fifo_dout[63:0]
[0069] fsop=fifo_dout[64]
[0070] feop=fifo_dout[65] 公式2
[0071] fmod=fifo_dout[68:66]
[0072] 2、在传输算法上进行改进。
[0073] 原有的数据帧多路传输模型中,以数据帧为单位进行数据传输;而本申请实施例中,数据片传输模型则以数据片为单位进行数据传输,数据片的长度可根据具体的应用环境进行规定。如,基于上述公式2,在fifo_dout处便可以对输出数据(包括帧数据和帧信息)进行切割操作,形成定长的数据片;以数据片形式对数据进行切割并不损坏原先帧数据和帧信息,从而在接收端很容易恢复原有的帧数据和帧信息。
[0074] 参阅图6所示,一个数据片的fsop和feop信号保留了原来us_sop和us_eop所表示的帧开始和帧结束标识;而fbgn和fend信号则表示了数据片的开始和结束。从图6中可以看出,数据片是定长为L字节的,例如,L=256,那么对于帧长随机的数据流来说,就有可能出现跨数据帧的数据片,即一个数据片包含第n-1帧的部分内容和结束部分,也包含第n帧的部分内容和开始部分。这是数据片的一个重要特点。实际应用中,数据片长度L的设定与数据总线(fdata)位宽有关,例如,fdata的位宽为64比特,也就是8个字节,则L必须是8的整倍数,也就是其对应的二进制地址的低三位为0,这样L才是每一次读取的数据的数据长度的整数倍。同时,较佳地,L的值要大于最小帧长度,以避免形成过于琐碎的数据片,例如,对于以太网帧来说,L要大于64字节。
[0075] 基于上述数据片传输模型,本申请实施例中,首先,各个端口按照公式1将上游帧数据和帧信息合并写入本端口的FIFO缓存中,并统计数据量水线;其次,各端口在指定时刻设置本端口的freq信号为高电平,并通过freq请求信号向端口仲裁模块请求进行数据传输,同时还需要将统计的数据量水线通过fwmark水线信号通知端口仲裁模块,以作为端口仲裁的依据;其中,所谓指定时刻可以为:FIFO缓存内的数据量达到一定水线;或者,FIFO缓存内部保存有带有帧结束标识的数据。
[0076] 再次,端口仲裁模块根据各个端口的freq请求信号和fwmark水线信号,采用水线判定轮转仲裁机制进行端口仲裁,选择最合适的端口,并向选定的端口其发送fgrant授权信号脉冲。
[0077] 最后,若某端口接收到fgrant授权信号,则表示可以向公共通道发送帧数据,这时,该端口根据公式2从本端口的FIFO缓存中读出数据,并按照定长并发送一个数据片。
[0078] 下面以端口n为例进行介绍,本实施例中,端口n在fifo_din处接收上游数据(包含帧数据和帧信息),并按照公式1将接收的上游数据写入端口n的FIFO缓存内;那么,参阅图7所示,本申请实施例中,端口n对接收的上游数据进行处理的详细流程如下:
[0079] 步骤710:将端口n的freq信号初始化为低电平,即置freq[n]=0。
[0080] 步骤720:判断FIFO缓存内保存的帧数据和帧信息是否满足进行数据传输的条件,若是,则进行步骤740;否则,执行步骤730。
[0081] 本申请实施例中,所谓满足进行数据传输的条件是指:满足以下任意一种条件,或者,两种条件同时满足,即:
[0082] 1、FIFO缓存内的帧数据和帧信息的数据量水线达到设定阈值。
[0083] 例如,假设数据片的长度为L字节,而FIFO缓存内的数据量水线大于等于L,则说明此时FIFO缓存内保存有至少L字节的数据,满足一个数据片的长度,那么便可以进行数据传输。
[0084] 或/和
[0085] 2、FIFO缓存内保存有带有帧结束标识的数据,即保存的帧信息中包含帧结束标识。
[0086] 例如,检测到带有us_eop信号的数据,这说明FIFO缓存内部保存有帧尾数据,那么,便可以进行数据传输。
[0087] 步骤730:等待设定时长,返回步骤720。
[0088] 实际应用中,也可以不等待设定时长,而是一直对FIFO缓存空间内保存的帧数据和帧信息的状态进行监测,直到满足传输条件为止,在此不再赘述。
[0089] 步骤740:将端口n的数据传输请求信号freq[n]置为高电平,即使freq[n]=1,以此向端口仲裁模块请求传输数据。
[0090] 在将freq[n]置为高电平的同时,端口n还应该将本端口缓存FIFO内的数据[0091] 量水线的状态通过fwmark[n]信号通知端口仲裁模块。
[0092] 步骤750:判断是否检测到fgrant[n]高电平脉冲,即是否检测到fgrant[n]=1,若是,说明端口仲裁模块允许端口n进行数据传输,则执行步骤770;否则,执行步骤760。
[0093] 步骤760:等待设定时长,返回步骤750。
[0094] 同理,实际应用中,也可以不等待设定时长,而是一直对fgrant[n]的信号状态进行监测,直到满足传输条件为止,在此不再赘述。
[0095] 步骤770:按照公式2从FIFO缓存内读取保存的帧数据和帧信息,并采用设定数据长度对其进行切割,形成若干数据片,以及以数据片为单位在数据公共传输通道上将数据传输至接收端,即触发数据传输流程,接着,返回步骤710。
[0096] 基于上述实施例,参阅图8所示,端口n以数据片为单位,在数据公共传输通道上发送数据的详细流程如下:
[0097] 步骤800:将设置的重传计数器(Retransmission Counter,RC)计数器初始化清零。
[0098] 本申请实施例中,RC计数器用于统计从FIFO缓存中读取数据的次数,每读取一次数据,RC计数器的取值累加1。
[0099] 步骤801:从FIFO缓存内读取出数据(fifo_dout,位宽为72位),并将RC计数器的取值累加1,即执行RC=RC+1。
[0100] 步骤802:判断RC计数器的取值是否为1,若是,则进行步骤803;否则,进行步骤804。
[0101] 步骤803:将数据片开始信号fbgn设置为高电平,即使fbgn=1,并将读取的数据传输至接收端;其中,fbgn=1,表示当前读取的数据是数据片的头数据,意味着一个数据片开始传输,接着,执行步骤805。
[0102] 步骤804:将数据片开始信号fbgn设置为低电平,即使fbgn=0,并将读取的数据传输至接收端,其中,fbgn=0,表示当前传输的数据不是数据片的头数据;接着,执行步骤805。
[0103] 步骤805:判断RC计数器的取值是否为K,K为数据片的数据长度与FIFO缓存数据总线位宽的比值,若是,则执行步骤807;否则,执行步骤806。
[0104] 步骤806:将数据片结束信号fend设置为低电平,即使fend=0,并将读取的数据传输至接收端,其中,fend=0,表示当前读取的数据不是数据片的尾数据,意味着一个数据片正在传输,接着,返回步骤801。
[0105] 步骤807:判断FIFO缓存内的数据是否已被读空,若是,则执行步骤810;否则,执行步骤808。
[0106] 步骤808:将数据片结束信号fend设置为高电平,即使fend=1,并将读取的数据传输至接收端,其中,fend=1,表示当前读取的数据是数据片的尾数据,意味着一个数据片结束传输。
[0107] 步骤809:继续检测fgrant[n]的信号状态,判断是否fgrant[n]=1?若是,则返回步骤800;否则,再次执行步骤809。
[0108] 本申请实施例中,由于各端口是以数据片为单位进行数据传输的,因此,每将一个数据片传输完毕,端口仲裁模块都需要根据各端口当前的数据量水线进行重新仲裁,以确定下一个被授权发送数据片的端口,如,本申请实施例中,端口n每发送完毕一个数据片,都需要再次对fgrant[n]的信号状态进行检测,直到再次检测到fgrant[n]=1时,再向接收端发送下一个数据片。
[0109] 步骤810:将数据片结束信号fend设置为高电平,即使fend=1,并将读取的数据传输至接收端,其中,fend=1,表示当前读取的数据是数据片的尾数据,意味着一个数据片结束传输,接着,将RC计数器清零,并确认数据传输流程结束。
[0110] 基于上述实施例,接收端接收到端口n发送的数据后,按照公式2抽取其中携带的帧信息(如,fsop,feop和fmod);然后根据抽取的帧信息以及帧数据,恢复出原有的帧结构。例如:当发现fsop=1时,就表示当前的数据是帧头数据,是一个数据帧的开始;当发现feop=1时,就表示当前的数据是帧尾数据,是一个数据帧的结束。
[0111] 实际应用中,芯片内部包含若干用于进行数据传输的端口模块(如,端口0~端口n,)参阅图9所示,本申请实施例中,端口模块包括接收单元10、FIFO缓存单元11、第一处理单元12、第二处理单元13和发送单元14,其中
[0112] 接收单元10,用于接收数据;
[0113] FIFO缓存单元11,用于将接收的数据中包含的帧数据和帧信息进行统一保存;
[0114] 第一处理单元12,用于在确定FIFO缓存单元11内保存的帧数据和帧信息符合预设条件时,向仲裁方发送用于请求传输数据的第一信号;
[0115] 第二处理单元13,用于在接收到仲裁方返回的用于指示允许传输数据的第二信号时,读取本地FIFO缓存单元11内保存的帧数据和帧信息,采用设定数据长度对其进行切割形成若干数据片,并以所述数据片为单位进行数据传输;其中,所述第二处理单元13每将一个数据片传输完毕,则在再次接收到仲裁方发送的第二信号时,传输下一个数据片。
[0116] 发送单元14,用于将从FIFO缓存单元11中读取出的数据发送至接收端。
[0117] 综上所述,本申请实施例所描述的数据传输模型,运用于FPGA芯片内部各个端口模块之间的数据传输,任一端口模块向其他端口模块传输数据时,均以固定长度的数据片为操作单位进行数据传输,即在数据传输过程中,将长帧切割、将短帧合并,以形成若干固定长度的数据片,并根据仲裁方的指令对数据片进行传输,其中,每将一个数据片传输完毕,都在再次接收到仲裁方发送的指令时,发送下一个数据片,这样,便形成了以数据流量为衡量标准的数据传输模型,令芯片内部各端口模块的数据流量基本保持一致,从而在多路数据传输中,能够实现各路数据均衡传输,避免出现数据阻塞而降低传输效率。
[0118] 其次,有利于节省FPGA芯片内部为数不多的缓存资源。例如以太网的Jumbo帧大小为9.6K字节,如果以数据帧为基本操作单位进行数据传输,则芯片内至少要设置有19.2K字节的FIFO缓存;而如果以固定长度为L字节的数据片为基本操作单位进行数据传输,则理论上芯片片内只要设置有2L字节的FIFO缓存即可。
[0119] 再次,有利于减小长帧的传输延时。因为各个端口传输长帧时,不需要缓存整个数据帧后再发起数据传输,而只需要缓存一个数据片,就可以发起数据传输,由接收端根据接收到的数据片,以及数据片内携带的帧信息对原始的数据帧进行恢复,因此,有效减小了长帧的传输延时。
[0120] 最后,有利于提高片外存储设备的带宽利用率。如果在系统设计中需要用到片外存储设备(如,DDR SDRam或者DDR2 SDRam等等),那么采用本申请实施例中描述数据片传输模型将有利于提高这些存储设备的带宽利用率,因为存储设备控制器每次发起的是固定长度的数据片读写操作,避免了频繁进行短帧操作而造成的带宽浪费。
[0121] 另一方面,在实际应用中,步骤700-步骤770和步骤800-步骤880记载的数据片传输模型,可以实现在FPGA芯片内部,也可以实现在复杂可编程逻辑器件(Complex Programmable Logic Device,CPLD)芯片内部和专用集成电路(Application Specific Intergrated Circuits,ASIC)芯片内部,用于CPLD芯片和ASIC芯片内部各个功能模块之间的数据传输,也可以达到提高数据传输效率的技术效果,在此不再赘述。
[0122] 显然,本领域的技术人员可以对本申请中的实施例进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请实施例中的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请中的实施例也意图包含这些改动和变型在内。