一种基于数字电路的FC网络序列发送控制系统及方法与流程

文档序号:15593819发布日期:2018-10-02 19:16阅读:206来源:国知局

本发明涉及一种fc网络序列发送控制系统及方法,特别涉及一种基于数字电路的fc网络序列发送控制系统及方法。



背景技术:

在fc网络通信领域,fc帧的最大数据负载为2112b,当用户数据超过2112b时,需要将用户数据组织成一种称为序列的数据结构进行发送,这种序列由多个fc帧组成,其中每个fc帧的帧头信息中都标记出了自身所属的序列以及在序列中的位置,从而可以使接收端重组出完整的用户数据。因此,在发送序列时,需要根据用户数据的长度将其分解成若干个fc帧后再组织发出,而这一发送控制过程不适于用软件实现,通常采用数字电路的方式完成。目前使用的基于数字电路的序列发送控制方法先将主机内存中的用户数据读入本地缓存中,然后再进行分解和发送,这种方法虽然可以实现序列的发送控制,但是需要大量的本地缓存,而且增加了发送延时。

本专利创新地提出了一种基于数字电路的fc网络序列发送控制方法,仅需设置数个大小为2112b的本地缓存单元,当缓存单元未满时根据主机配置从主机内存获取一个fc帧的负载数据,同时,若缓存单元非空则将负载数据组织成完整的fc帧后发出,并根据主机配置对每个序列的发送时间加以控制,不仅可以降低对缓存的需求,减少发送延时,还能够满足用户对每个序列占用发送通道的时间的限制。



技术实现要素:

本发明的目的是提供一种基于数字电路的fc网络序列发送控制系统及方法,通过采用使从主机内存读入数据的操作和fc帧分解发送的操作同时进行,并且根据主机配置对每个序列的发送时间加以控制的方式,来达到使用较少的本地缓存,减少发送延时并满足用户控制每个序列占用发送通道的时间的目的。

为达到以上目的,本发明是采取如下技术方案予以实现的:

如图1所示,一种基于数字电路的fc网络序列发送控制系统,包括配置寄存器组、本地缓存、数据请求状态机、数据发送状态机和发送超时计数单元五部分;其中,

配置寄存器组包括:

1)、由主机填写数字电路读取的s_id寄存器、d_id寄存器、帧长度寄存器、起始地址寄存器、长度寄存器、超时值寄存器和超时处理方式寄存器;其中,

a、s_id寄存器存储fc帧头中s_id字段的用户设置值;

b、d_id寄存器存储fc帧头中d_id字段的用户设置值;

c、帧长度寄存器存储fc帧数据负载长度的用户设置值;

d、起始地址寄存器存储用户数据在主机内存中的起始地址,对该寄存器的写操作是启动数字电路进行发送的触发条件,必须最后设置;

e、长度寄存器存储用户数据的字节长度;

f、超时值寄存器存储用户数据可以占用发送通道的时间值;

g、超时处理方式寄存器存储用户数据的发送时间超过超时值寄存器设定值后的处理方式,包括超时续传和超时中止两种方式;

2)、由数字电路填写主机读取的发送完成地址寄存器和超时地址寄存器;其中,

a、发送完成地址寄存器存储发送完成的用户数据在内存中的起始地址;

b、超时地址寄存器存储占用发送通道时间超过超时值寄存器设定值的用户数据在内存中的起始地址;

本地缓存包括若干个大小为2112b的缓存单元和一个参数fifo,参数fifo的深度与缓存单元个数相同,缓存单元个数由用户确定;其中,缓存单元由主机接口写入并更新写指针,由数据发送状态机读出并更新读指针;参数fifo由数据请求状态机写入,由数据发送状态机清除;

数据请求状态机根据主机配置和本地缓存的空闲状态请求主机接口将一帧数据负载从内存读入缓存单元中,并将该帧数据的相关信息写入参数fifo;

数据发送状态机根据参数fifo传递过来的相关信息,将本地缓存单元的数据读出并组织成完整的fc帧发出;

发送超时计数单元包括超时计数器、超时计数地址寄存器和超时计数方式寄存器,其中,超时计数器为自减计数器,超时计数地址寄存器用于记录当前超时计数的序列在内存中的起始地址,超时计数方式寄存器用于记录当前超时计数的序列在超时后的处理方式;

配置寄存器组中的s_id寄存器、d_id寄存器、帧长度寄存器、起始地址寄存器、长度寄存器、超时值寄存器和超时处理方式寄存器均输出给数据请求状态机;本地缓存从主机接口和数据请求状态机输入数据,向数据发送状态机和发送超时计数单元输出数据;数据请求状态机写本地缓存中的参数fifo,清除配置寄存器组中s_id寄存器、d_id寄存器、帧长度寄存器、起始地址寄存器、长度寄存器、超时值寄存器和超时处理方式寄存器的当前值;数据发送状态机从本地缓存的参数fifo获取参数,从缓存单元获取数据,向配置寄存器组中的发送完成地址寄存器写入值;发送超时计数单元从本地缓存的参数fifo获取参数,向数据请求状态机和数据发送状态机输出超时指示信号及超时计数地址寄存器和超时计数方式寄存器的值,并向配置寄存器组中的超时地址寄存器和发送完成地址寄存器写入值。

所述的由主机填写数字电路读取的s_id寄存器、d_id寄存器、帧长度寄存器、起始地址寄存器、长度寄存器、超时值寄存器和超时处理方式寄存器,都采用fifo实现,fifo深度由用户确定,它们之间为一一对应关系。

所述的由数字电路填写主机读取的发送完成地址寄存器和超时地址寄存器,都采用fifo实现,fifo深度由用户确定。

数据请求状态机中,该帧数据的相关信息包括起始地址、最末帧指示标志、数据长度、s_id、d_id、ox_id、seq_id和seq_cnt。

一种基于数字电路的fc网络序列发送控制方法,包括以下步骤:

第1步、主机准备好待发送数据;

第2步、主机将配置数据写入配置寄存器组中除起始地址寄存器外的其它寄存器;

第3步、主机将待发送数据在内存中的起始地址写入起始地址寄存器;

第4步、数据请求状态机、数据发送状态机和发送超时计数单元并行工作;其中,

1)、数据请求状态机包括s0、s1、s2、s3和s4五种状态,状态转移关系如图3所示,其特征在于:

a、状态机初始状态为s0状态;

b、当处于s0状态时,若起始地址寄存器非空,则初始化待发送数据长度和相关信息,其中,

a)、待发送数据长度初始化为长度寄存器的值;

b)、起始地址初始化为起始地址寄存器的值;

c)、最末帧指示标志初始化时比较帧长度寄存器和长度寄存器是否相等,若相等则初始化为1,否则初始化为0;

d)、数据长度初始化时判断是否为最后一帧,若是则初始化为发送长度寄存器的值,否则初始化为帧长度寄存器的值;

e)、s_id初始化为s_id寄存器的值;

f)、d_id初始化为d_id寄存器的值;

g)、ox_id的初始化由用户根据交换策略设定;

h)、seq_id的初始化由用户设定;

i)、seq_cnt初始化为0;

跳转到s1状态,否则保持s0状态;

c、当处于s1状态时,

若检测到超时指示信号,则比较起始地址寄存器的值是否与超时计数地址寄存器的输出值相等,若相等则根据超时计数方式寄存器的值选择处理方式,当为超时中止时跳转到s3状态;

否则,若本地缓存未满,则将相关信息写入参数fifo,判断待发送的数据长度是否与帧长度寄存器相等,若相等跳转到s3状态;

否则,跳转到s2状态;

d、当处于s2状态时,更新待发送数据长度和相关信息,其中,

a)、待发送数据长度更新为当前值减去帧长度寄存器的值;

b)、最末帧指示标志更新时判断下次发送是否为最后一帧,若是则更新为1,否则更新为0;

c)、数据长度更新时判断下次发送是否为最后一帧,若是则更新为待发送数据长度当前值减去帧长度寄存器的值,否则仍然为帧长度寄存器的值;

d)、起始地址、s_id、d_id、ox_id和seq_id不更新;

e)、seq_cnt更新为当前值加1;

跳转到s1状态;

e、当处于s3状态时,清除s_id寄存器、d_id寄存器、帧长度寄存器、起始地址寄存器、长度寄存器、超时值寄存器和超时处理方式寄存器的当前值,跳转到s4状态;

f、当处于s4状态时,跳转到s0状态;

2)、数据发送状态机包括s0、s1、s2和s3四种状态,状态转移关系如图4所示,其特征在于:

a、状态机初始状态为s0状态;

b、当处于s0状态时,

若缓存单元为空则保持s0状态;

否则,读取参数fifo的相关信息,若为序列的第一帧或未检测到超时指示信号则跳转到s1状态;

否则,跳转到s2状态;

c、当处于s1状态时,将负载数据读出并组帧发送,待发送完成后判断是否为序列的最后一帧,若是则将参数fifo中的起始地址写入发送完成地址寄存器,跳转到s2状态,若不是则仅跳转到s2状态;

d、当处于s2状态时,更新缓存单元读指针,清除参数fifo的当前值,跳转到s3状态;

e、当处于s3状态时,跳转到s0状态;

3)、发送超时计数单元的工作流程如图5所示,其特征在于:

a、判断数据发送状态机当前处理的是否为第一帧或最后一帧;

b、若是第一帧,则无效超时指示信号,超时计数器从参数fifo加载超时值并开始自减计数,超时计数地址寄存器从参数fifo获取地址信息并保存,超时计数方式寄存器从参数fifo获取超时处理方式并保存;

c、当超时计数器减为0时,产生超时指示信号,将超时计数地址寄存器的值写入超时地址寄存器并输出,输出超时计数方式寄存器的值,并判断超时后处理方式;

d、若超时计数方式寄存器的值表明超时处理方式为超时中止则将超时计数地址寄存器的值写入发送完成寄存器;

e、若是最后一帧,则超时计数器停止计数,无效超时指示信号。

本发明的有益效果是:

1、减少缓存使用。仅需要数个大小为2112b的缓存单元即可。

2、降低发送延时。仅为从内存中获取一帧数据负载的时间。

3、能够针对每一个发送序列设置参数及超时时间,满足用户的各种需求。

附图说明

图1是一种基于数字电路的fc网络序列发送控制系统示意图;

图2是一种基于数字电路的fc网络序列发送控制方法示意图;

图3是本发明中数据请求状态机状态转移示意图;

图4是本发明中数据发送状态机状态转移示意图;

图5是本发明中超时计数单元工作流程示意图;

具体实施方式

下面结合附图及具体实例对本发明做进一步的详细说明。

如图1所示,一种基于数字电路的fc网络序列发送控制系统及方法,包括

1、配置寄存器组

配置寄存器组包括

1)、由主机填写数字电路读取的s_id寄存器、d_id寄存器、帧长度寄存器、起始地址寄存器、长度寄存器、超时值寄存器和超时处理方式寄存器,都采用fifo实现,fifo深度均为32,它们之间为一一对应关系。其中,

a、s_id寄存器存储fc帧头中s_id字段的设置值;

b、d_id寄存器存储fc帧头中d_id字段的设置值;

c、帧长度寄存器存储fc帧数据负载长度的设置值;

d、起始地址寄存器存储待发送数据在主机内存中的起始地址,对该寄存器的写操作是启动数字电路进行发送的触发条件,必须最后设置;

e、长度寄存器存储待发送数据的字节长度;

f、超时值寄存器存储待发送数据可以占用发送通道的时间值;

g、超时处理方式寄存器存储待发送数据的发送时间超过超时值寄存器设定值后的处理方式。

2)、由数字电路填写主机读取的发送完成地址寄存器和超时地址寄存器,都采用fifo实现,fifo深度均为32。其中,

a、发送完成地址寄存器存储发送完成的待发送数据在内存中的起始地址;

b、超时地址寄存器存储占用发送通道时间超过超时值寄存器设定值的待发送数据在内存中的起始地址。

2、本地缓存包括4个大小为2112b的缓存单元和一个参数fifo,参数fifo的深度也为4。其中,缓存单元由主机接口写入并更新写指针,由数据发送状态机读出并更新读指针;参数fifo由数据请求状态机写入,由数据发送状态机读出。

3、数据请求状态机根据主机配置和本地缓存的空闲状态请求主机接口将一帧数据负载从内存读入缓存单元中,并将该帧数据的相关信息(包括起始地址、最末帧指示标志、数据长度、s_id、d_id、ox_id、seq_id和seq_cnt)写入参数fifo,包括s0、s1、s2、s3和s4五种状态,状态间的跳转关系如图3所示,具体为:

1)、状态机初始状态为s0状态;

2)、当处于s0状态时,若起始地址寄存器非空,则初始化待发送数据长度和相关信息,其中,

a、待发送数据长度初始化为长度寄存器的值;

b、起始地址初始化为起始地址寄存器的值;

c、最末帧指示标志初始化时比较帧长度寄存器和长度寄存器是否相等,若相等则初始化为1,否则初始化为0;

d、数据长度初始化时判断是否为最后一帧,若是则初始化为发送长度寄存器的值,否则初始化为帧长度寄存器的值;

e、s_id初始化为s_id寄存器的值;

f、d_id初始化为d_id寄存器的值;

g、ox_id初始化为0;

h、seq_id初始化为当前值加1;

i、seq_cnt初始化为0。

跳转到s1状态,否则保持s0状态;

3)、当处于s1状态时,

若检测到超时指示信号,则比较起始地址寄存器的值是否与超时计数地址寄存器的输出值相等,若相等则根据超时计数方式寄存器的值选择处理方式,当为超时中止时跳转到s3状态;

否则,若本地缓存未满,则将相关信息写入参数fifo,判断待发送的数据长度是否与帧长度寄存器相等,若相等则表明是最后一帧,跳转到s3状态;

否则,跳转到s2状态;

4)、当处于s2状态时,更新待发送数据长度和相关信息,其中,

a、待发送数据长度更新为当前值减去帧长度寄存器的值;

b、最末帧指示标志更新时判断下次发送是否为最后一帧,若是则更新为1,否则更新为0;

c、数据长度更新时判断下次发送是否为最后一帧,若是则更新为待发送数据长度当前值减去帧长度寄存器的值,否则仍然为帧长度寄存器的值;

d、起始地址、s_id、d_id、ox_id和seq_id不更新;

e、seq_cnt更新为当前值加1。

跳转到s1状态;

5)、当处于s3状态时,清除s_id寄存器、d_id寄存器、帧长度寄存器、起始地址寄存器、长度寄存器、超时值寄存器和超时处理方式寄存器的当前值,跳转到s4状态;

6)、当处于s4状态时,跳转到s0状态。

4、数据发送状态机根据参数fifo传递过来的相关信息,将本地缓存单元的数据读出并组织成完整的fc帧发出,包括s0、s1、s2和s3四种状态,状态间的跳转关系如图4所示,具体为:

1)、状态机初始状态为s0状态;

2)、当处于s0状态时,

若缓存单元为空则保持s0状态;

否则,读取参数fifo的相关信息,若为序列的第一帧或未检测到超时指示信号则跳转到s1状态;

否则,跳转到s2状态;

3)、当处于s1状态时,将负载数据读出并组帧发送,待发送完成后判断是否为序列的最后一帧,若是则将参数fifo中的起始地址写入发送完成地址寄存器,跳转到s2状态,若不是则仅跳转到s2状态;

4)、当处于s2状态时,更新缓存单元读指针,清除参数fifo的当前值,跳转到s3状态;

5)、当处于s3状态时,跳转到s0状态。

5、发送超时计数单元包括超时计数器、超时计数地址寄存器和超时计数方式寄存器,其中,超时计数器为自减计数器,超时计数地址寄存器用于记录当前超时计数的序列在内存中的起始地址,超时计数方式寄存器用于记录当前超时计数的序列在超时后的处理方式。工作流程如图5所示,具体为:

1)、当数据发送状态机处理序列的第一帧时,无效超时指示信号,超时计数器从参数fifo加载超时值并开始自减计数,超时计数地址寄存器从参数fifo获取地址信息并保存,超时计数方式寄存器从参数fifo获取超时处理方式并保存;

2)、当超时计数器减为0时,产生超时指示信号,将超时计数地址寄存器的值写入超时地址寄存器并输出,输出超时计数方式寄存器的值,并判断超时后处理方式;

3)、若超时计数方式寄存器的值表明超时处理方式为超时中止则将超时计数地址寄存器的值写入发送完成寄存器;

4)、当数据发送状态机处理序列的最后一帧时超时计数器停止计数,无效超时指示信号。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1