法律状态公告日
法律状态信息
法律状态
2018-03-30
授权
授权
2016-06-01
实质审查的生效 IPC(主分类):G06F11/26 申请日:20151207
实质审查的生效
2016-05-04
公开
公开
技术领域
本发明涉及一种FC网络帧头数据错误注入方法,特别涉及一种基于 数字电路的FC网络帧头数据错误注入方法。
背景技术
在计算机通信领域,FC网络因其高速、高可靠性、低延时、抗干扰 能力强而得到广泛应用,而能够正确的处理故障数据是网络健壮性的基 本要求,因此注入故障数据就成为FC网络必不可少的一种检验手段,在 FC网络的测试验证阶段必不可少。现有的FC网络专用测试设备提供此种 功能,不过价格昂贵,而且使用较为繁琐。
发明内容
本发明的目的是提供一种基于数字电路的FC网络帧头数据错误注入 方法,通过在底层对发送数据进行处理,直接发送包含错误FC帧头的数 据,进而达到实现简单,使用灵活,降低成本的目的。
为达到以上目的,本发明是采取如下技术方案予以实现的:
一种基于数字电路的FC网络帧头数据错误注入方法,包括以下步骤
1)主机写配置寄存器组;
2)主机启动错误注入模块,错误注入模块包括错误注入控制状态机、 计算单元、帧头组织单元和多路选择单元;
3)错误注入控制状态机检测发送缓冲是否未满,当发送缓冲未满时, 则启动主机数据传输;
4)错误注入控制状态机启动计算单元和帧头组织单元,并控制多路 选择单元选择帧头输出到发送缓冲中、或选择主机数据输出到发送缓冲 中;
5)计算单元在数据输出完成后更新发送缓冲尾指针;
6)发送模块根据发送缓冲头尾指针的值判断是否有数据需要发送, 若有则将发送缓冲中的数据读出并发送;
7)发送模块在发送完成后更新发送缓冲头指针的值,等待下一次发 送。
上述配置寄存器组包括传输启动寄存器、主机数据长度寄存器、FC 帧头模式选择寄存器、DID注入值寄存器、SID注入值寄存器、TYPE注入 值寄存器、OXID注入值寄存器、RXID注入值寄存器、RCTL注入值寄存器 和FCTL注入值寄存器。
上述传输启动寄存器主机写有效,每写一次表示启动一帧传输;主 机数据长度寄存器主机可读可写,存储主机发送数据的长度值;FC帧头 模式选择寄存器主机可读可写,最低位有效,0表示主机数据中无FC帧 头,1表示主机数据中有FC帧头;DID注入值寄存器主机可读可写,存 储要注入到FC帧头中的DID值;SID注入值寄存器主机可读可写,存储 要注入到FC帧头中的SID值;TYPE注入值寄存器主机可读可写,存储要 注入到FC帧头中的TYPE值;OXID注入值寄存器主机可读可写,存储要 注入到FC帧头中的OXID值;RXID注入值寄存器主机可读可写,存储要 注入到FC帧头中的RXID值;RCTL注入值寄存器主机可读可写,存储要 注入到FC帧头中的RCTL值;FCTL注入值寄存器主机可读可写,存储要 注入到FC帧头中的FCTL值。
上述错误注入控制状态机控制计算单元和多路选择单元的工作时 序,包括5种状态:空状态S0、主机数据传输状态S1、帧头传输状态S2、 帧尾传输状态S3和传输完成状态S4;
错误注入控制状态机最初处于空状态S0,主机启动传输后就转移到 主机数据传输状态S1,主机数据传输完毕后转移到帧头传输状态S2,帧 头传输完毕后转移到帧尾传输状态S3,传输结束后转移到完成状态S4, 最后回到空状态S0。
错误注入控制状态机的启动条件为传输启动寄存器的写操作。
上述计算单元在错误注入控制状态机的控制下计算发送缓冲的写入 地址和产生写信号,同时计算传输的数据长度。
计算单元的工作流程如下:
①当错误注入控制状态机处于S0状态时,初始化主机数据长度计数 器和帧头长度计数器为0;
②当错误注入控制状态机处于S1状态时,每个时钟周期将主机数据 长度计数器的值自增1,并将发送缓冲尾指针的值、加主机数据长度计数 器的值、再加6的结果作为发送缓冲写地址输出,同时产生写信号;
③当主机数据长度计数器的值等于主机长度寄存器的值时,产生主 机数据传输完成信号;
④当错误注入控制状态机处于S2状态时,每个时钟周期将帧头数据 长度计数器的值自增1,并将发送缓冲尾指针加帧头数据长度计数器的值 作为发送缓冲写地址输出,同时产生写信号;
⑤当帧头数据长度计数器的值等于7时,产生帧头数据传输完成信 号;
⑥当错误注入控制状态机处于S3状态时,将发送缓冲尾指针的值、 加主机数据长度寄存器的值、再加7的结果作为发送缓冲写地址输出, 同时产生写信号;
⑦当错误注入控制状态机处于S4状态时,将发送缓冲尾指针的值加 1,跳回步骤①。
帧头组织单元根据配置寄存器组中、各字段注入值寄存器的值组织 帧头,并在错误注入控制状态机转移到S2状态前完成,将组织的帧头保 存在第一寄存器、第二寄存器、第三寄存器、第四寄存器、第五寄存器、 第六寄存器中。
多路选择单元根据错误注入控制状态机所处的状态选择输出相应的 数据,具体如下:
①当错误注入控制状态机处于S0或S4状态时,多路选择单元输出 全为0;
②当错误注入控制状态机处于S1状态时,多路选择单元选择输出主 机数据;
③当错误注入控制状态机处于S2状态且计算单元中帧头长度计数器 的值为1时选择输出主机数据;
④当错误注入控制状态机处于S2状态且计算单元中帧头长度计数器 的值为2时选择输出第一寄存器的值;
⑤当错误注入控制状态机处于S2状态且计算单元中帧头长度计数器 的值为3时选择输出第二寄存器的值;
⑥当错误注入控制状态机处于S2状态且计算单元中帧头长度计数器 的值为4时选择输出第三寄存器的值;
⑦当错误注入控制状态机处于S2状态且计算单元中帧头长度计数器 的值为5时选择输出第四寄存器的值;
⑧当错误注入控制状态机处于S2状态且计算单元中帧头长度计数器 的值为6时选择输出第五寄存器的值;
⑨当错误注入控制状态机处于S2状态且计算单元中帧头长度计数器 的值为7时选择输出第六寄存器的值;
⑩当错误注入控制状态机处于S3状态时选择输出主机数据。
与现有方法相比,本发明的有益效果是:
a)支持FPGA等集成电路的使用,易于实现;
b)简单易行,使用方便;
c)操作灵活,成本较低。
附图说明
图1是本发明的技术方案示意图;
图2是本发明技术方案工作流程图;
图3是错误注入控制状态机状态转移示意图;
图4是错误注入模块计算单元工作流程图;
图5是错误注入模块多路选择单元工作流程图;
图6是发送模块工作流程图。
具体实施方式
本发明提出了一种基于数字电路的FC网络帧头数据错误注入方法, 能够根据主机的配置,控制每一个发送FC帧的帧头字段的填充值,从而 直接产生并发送包含错误FC帧头的数据。与现有方法相比,本发明在实 现相同功能的情况下,具有成本低,使用灵活,易于实现的特点。
如图1所示,本发明包括配置寄存器组、错误注入模块、发送缓冲 和发送模块。其中,配置寄存器组用来储存控制信息和需要注入的帧头 字段的值,由主机进行配置;错误注入模块使用注入值寄存器中的值替 换传输数据中相应字段,并将最终数据填入相应的发送缓冲单元中;发 送缓冲由M个Nbits的缓冲单元构成,采用环形队列方式管理。
下面结合附图及具体实例对本发明做进一步的详细说明。
如图1所示,一种基于数字电路的FC网络帧头数据错误注入方法, 包括
1)配置寄存器组
配置寄存器组的定义和说明如表1所示。
表1配置寄存器组说明
2)错误注入模块
错误注入模块包括错误注入控制状态机、计算单元、帧头组织单元 和多路选择单元四部分,其实现方式分别如下所述。
a)错误注入控制状态机
错误注入控制状态机控制计算单元、多路选择单元的工作时序,确 保两个单元能够协调工作。状态转移关系如图3所示,设计了5种状态: 空状态S0、主机数据传输状态S1、帧头传输状态S2、帧尾传输状态S3 和传输完成状态S4。状态机最初处于空状态,一旦主机启动传输就转移 到主机数据传输状态,主机数据传输完毕后转移到帧头传输状态,帧头 传输完毕后转移到帧尾传输状态,传输结束后转移到完成状态,最后回 到空状态。
错误注入控制状态机启动条件为fc_trans_en_reg的写操作。
b)计算单元
计算单元在错误注入控制状态机的控制下计算发送缓冲的写入地址 和产生写信号,同时计算传输的数据长度,并在传输完成后更新发送缓 冲尾指针。工作流程如图4所示,具体说明如下:
①当错误注入控制状态机处于S0状态时,初始化主机数据长度计数 器和帧头长度计数器为0;
②当错误注入控制状态机处于S1状态时,每个时钟周期将主机数据 长度计数器的值自增1,并将发送缓冲尾指针加主机数据长度计数器加6 的值作为发送缓冲写地址输出,同时产生写信号;
③当主机数据长度计数器的值等于主机长度寄存器的值时,产生主 机数据传输完成信号;
④当错误注入控制状态机处于S2状态时,每个时钟周期将帧头数据 长度计数器的值自增1,并将发送缓冲尾指针加帧头数据长度计数器的值 作为发送缓冲写地址输出,同时产生写信号;
⑤当帧头数据长度计数器的值等于7时,产生帧头数据传输完成信 号;
⑥当错误注入控制状态机处于S3状态时,将发送缓冲尾指针加主机 数据长度寄存器加7的值作为发送缓冲写地址输出,同时产生写信号;
⑦当错误注入控制状态机处于S4状态时,将发送缓冲尾指针的值加 1,跳回步骤①。
c)帧头组织单元
帧头组织单元根据配置寄存器组中各字段注入值寄存器的值组织帧 头,并在错误注入控制状态机转移到S2状态前完成,保存在第一寄存器、 第二寄存器、第三寄存器、第四寄存器、第五寄存器、第六寄存器中。
d)多路选择单元
多路选择单元根据错误注入控制状态机所处的状态选择输出相应的 数据。工作流程如图5所示,具体说明如下:
①当错误注入控制状态机处于S0或S4状态时,多路选择单元输出 全为0;
②当错误注入控制状态机处于S1状态时,多路选择单元选择输出主 机数据;
③当错误注入控制状态机处于S2状态且计算单元中帧头长度计数器 的值为1时选择输出主机数据;
④当错误注入控制状态机处于S2状态且计算单元中帧头长度计数器 的值为2时选择输出第一寄存器的值;
⑤当错误注入控制状态机处于S2状态且计算单元中帧头长度计数器 的值为3时选择输出第二寄存器的值;
⑥当错误注入控制状态机处于S2状态且计算单元中帧头长度计数器 的值为4时选择输出第三寄存器的值;
⑦当错误注入控制状态机处于S2状态且计算单元中帧头长度计数器 的值为5时选择输出第四寄存器的值;
⑧当错误注入控制状态机处于S2状态且计算单元中帧头长度计数器 的值为6时选择输出第五寄存器的值;
⑨当错误注入控制状态机处于S2状态且计算单元中帧头长度计数器 的值为7时选择输出第六寄存器的值;
⑩当错误注入控制状态机处于S3状态时选择输出主机数据。
3)发送缓冲
发送缓冲由9个4KB的缓冲单元构成,采用环形队列的方式进行管 理。
4)发送模块
发送模块负责将发送缓冲中的数据发送出去,工作流程如图6所示, 具体说明如下:
a)检查发送缓冲头尾指针的值,判断是否有数据需要发送;
b)若有数据需要发送,则将其发送到FC接口;
c)发送完成后将发送缓冲头指针的值加1;
d)跳回步骤a)。
机译: 在基于TRILL的网络上承载FCOE帧的方法
机译: 在基于TRILL的网络上承载FCoE帧的方法
机译: 在基于TRILL的网络上承载FCOE帧的方法