首页 / 专利库 / 软件 / 电子设计自动化 / 计算机辅助设计 / 一种基于HINOC协议的HIMAC拆帧系统、方法

一种基于HINOC协议的HIMAC拆系统、方法

阅读:132发布:2020-05-11

专利汇可以提供一种基于HINOC协议的HIMAC拆系统、方法专利检索,专利查询,专利分析的服务。并且本 发明 属于同轴宽带接入技术领域,公开了一种基于HINOC协议的HIMAC拆 帧 系统、方法,采用两个状态机从HIMAC帧中恢复提取以太网帧;提取到的EIF信息存放到EIF信息RAM中;在HB接收到前后来自两个不同HM的HIMAC帧时,保存之前HIMAC帧的头碎片信息;再次接收到来自同一个HM的HIMAC帧时再次读取之前的头碎片信息进行更新或者拼接。本发明通过组帧可以将多个以太网帧打包并封装为一个HIMAC帧的方式,提高HINOC网络MAC层的传输效率,降低协议开销。同时根据HIMAC帧格式以及打包规则,在 硬件 中实现HIMAC帧的组帧和拆帧具有速度快、效率高的特点。,下面是一种基于HINOC协议的HIMAC拆系统、方法专利的具体信息内容。

1.一种基于HINOC协议的HIMAC拆方法,其特征在于,所述基于HINOC协议的HIMAC拆帧方法包括以下步骤:
第一步,采用两个状态机从HIMAC帧中恢复提取以太网帧;
第二步,提取到的EIF信息存放到EIF信息RAM中;
第三步,在HB接收到前后来自两个不同HM的HIMAC帧时,保存之前HIMAC帧的头碎片信息;再次接收到来自同一个HM的HIMAC帧时再次读取之前的头碎片信息进行更新或者拼接。
2.如权利要求1所述的基于HINOC协议的HIMAC拆帧方法,其特征在于,所述第一步中一个主状态机按照子帧的顺序进行设计;另一个辅助状态机将碎片拼接。
3.如权利要求2所述的基于HINOC协议的HIMAC拆帧方法,其特征在于,所述主状态机的状态包括:
IDLE状态:空闲状态;
READ_INFO状态:从IDLE状态在MAC核ready及两乒乓RAM中有数据帧的状态下跳转到的首个状态,获取帧的信息,包括HM_ID号及帧长信息;HM_ID号用于生成头碎片RAM高6bit地址,帧长让拆帧模块了解HIMAC帧类型,信息是从interface模块一级级传递下来的32bit信息,在乒乓RAM中存储的地址依然是11’h03f;
HEAD状态:处理HIMAC帧的帧头,用于提取子帧个数,碎片类型,目的HM_ID号,子帧长度及是否有EIF子帧;判断该HIAMC帧中是否有EIF帧,若是,则在读完HIMAC的帧头和子帧长度集合时跳转到EIF帧处理状态,否则跳转到FIRST_FRM状态;
EIF_FRM状态:用于提取带EIF帧的关键信息;提取到的EIF信息存放到EIF信息RAM中;
每次提取到的EIF信息共有3个16比特的信息,分别对应三个优先级的队列信息,存放到EIF信息RAM中的两个32比特的存储块中;而存储的地址也是由地址11’h03f解析出来的HM_ID号生产的;EIF_FRM帧提取完毕后若仅有一个子帧,则拆帧结束,若子帧个数大于1,则跳转到SECOND_FRM模块;
FIRST_FRM状态:在没有EIF帧的情况下的第一个子帧;若仅有一个子帧,则在读完该子帧后即结束拆帧;若仅有一个完整的子帧,拆帧后跳转到WAIT状态;若该帧是碎片,跳转到PAUSE状态,等待碎片合并;第一个子帧是碎片的状态只可能是FIRST_FRM或者SECOND_FRM;
SECOND_FRM状态:是完整以太网帧,也可能是碎片;若是碎片,跳转到PAUSE状态,若是完整以太网帧且还有未处理子帧,则跳转到WAIT状态;
THIRD_FRM、FORTH_FRM、FIVE_FRM状态:这三个状态的处理基本相同,都是需要判断子帧是否已经处理完,若处理完,则拆帧结束;若子帧处理结束,且碎片处理标记也拉低,就跳转到WAIT状态;
PAUSE状态:该状态是碎片拼接时的等待整理状态;当主状态机跳转到该状态时,辅助状态机进行碎片拼接;若子帧处理计数等于总子帧数且辅助状态机跳回CIDLE状态,则拆帧结束;若子帧处理计数等于总子帧数且辅助状态机未跳回CIDLE状态,则跳转到WAIT_COMB状态继续等待;若拼接结束且尚有未处理子帧,则跳转到WAIT状态;若遇到拼接错误comb_error或碎片类型不一致style_error时,跳转到snum状态,snum是根据子帧计数得到的跳转到对应状态的计数;
WAIT状态:避免拆帧过快而为了增加前后两个以太网帧的间隔满足千兆以太网帧之间基本间隔的要求而增加的一个延时状态;在该状态下通过一个计数器来判断是否达到固定的时间间隔,且等到MAC核的接收ready拉高的情况下才能跳转到下一个状态;
EMPTY_FRM:当已经处理的子帧计数等于所有子帧计数后,但处理的帧字节计数仍未达到整个HIMAC帧长度,此时跳转到该状态直至计数值等于HIMAC帧长为止;
WAIT_COMB状态:是从碎片拼接等待状态PAUSE跳转过来的一个继续等待状态,对于处理较长帧时仅有PAUSE状态还是无法等待到最终的处理结束,因此又添加的一个状态;
FINISH状态:标志拆帧结束,清空标志寄存器的数据。
4.如权利要求2所述的基于HINOC协议的HIMAC拆帧方法,其特征在于,所述辅助状态机的状态:
CIDLE状态:只有当头碎片信息寄存器和尾碎片信息寄存器的标志位同时有效时,才进入拼接状态,判断头碎片的长度是否小于四个字节,若小于四个字节,则进入字节拼接状态CCOMB,否则进入读头碎片状态CHEAD;
CHEAD状态:读取头碎片RAM中之前存储的头碎片数据,直到读取尾碎片的信号才判断是否进入下一个状态;若头碎片的长度不是4字节的整数倍即存储头碎片长度的寄存器的最后两比特不为0,则跳转到CCOMB状态;若头碎片的长度是4字节的整数倍,且头碎片的长度大于四个字节,则跳转到CTAIL状态;若头碎片的长度是4字节的整数倍,且头碎片的长度刚好等于四个字节,则跳转到CREAD_ONE状态;
CCOMB状态:用于拼接头碎片不是四字节对齐,需要跟尾碎片的第一个32比特进行拼接的状态,持续一个时钟周期;在该状态下,若尾碎片长度小于四字节,则字节结束拼接;否则,跳转到CTAIL状态;
CTAIL状态:处理尾碎片的状态;若尾碎片计数值等于尾碎片长度的字节数且该长度大于四字节,则跳转到CEOP状态;若尾碎片长度小于等于四字节,则跳转到CFINISH状态;若头碎片长度小于四字节,则跳转到CREAD1_HEAD状态;
CREAD1_HEAD状态:用于处理头碎片长度不到四个字节时的情况;在该状态下进行拼接计数,直至将头尾碎片全部合并位置,再跳转到CEOP状态;
CREAD_ONE状态:用于处理头碎片长度刚好等于四个字节的情况;计数直至合并到最后一个32比特数据时跳转到CEOP状态;
CEOP状态:持续一个时钟周期,用于产生以太网帧的eop信号,字节跳转到CFINISH状态;
CFINISH状态:标志拼接结束。
5.如权利要求1所述的基于HINOC协议的HIMAC拆帧方法,其特征在于,所述第二步还包括碎片存储RAM;
将碎片类型为10或者00的头碎片和中间碎片都放置到头碎片ram中,RAM为64个2Kbyte大小,该RAM的对应HM_ID的0地址存储碎片累计长度信息,每次进行新的头碎片处理前,先从该RAM相应地址读出之前已经累计的长度值,再将对应的中间碎片跟之前最后写入的数据进行拼接后继续写入相应地址;
若有尾碎片,先将碎片写入对应的尾碎片RAM,大小与头碎片RAM不同,仅有2Kbyte,且为双口RAM,为了写入的同时读出进行拼接;
所述第二步还包括每次提取到的EIF信息共有3个16比特的信息,分别对应三个优先级的队列信息,存放到EIF信息RAM中的两个32比特的存储块中;存储的地址由特定地址解析出来的HM_ID号生产;RAM是双口RAM,可同时供CPU读取信息。
6.如权利要求1所述的基于HINOC协议的HIMAC拆帧方法,其特征在于,所述第三步包括信息传递状态机,用于处理来自不同HM时的碎片信息的读取与更新;
信息传递状态机的状态:
INFO_IDLE状态:该状态下当处理的有效数据帧为中间碎片时,跳转到读取之前头碎片信息状态INFO_READ_INFO;其余情况均为处理的碎片类型为头碎片时要跳转到写帧头信息状态INFO_WRITE_INFO;
INFO_READ_INFO状态:该状态共四个时钟周期,在最后一个时钟周期跳转到INFO_READ_LAST_DATA状态;前三个时钟周期用于读取帧头RAM的首地址和最后一个地址,用于获取头碎片信息;
INFO_READ_LAST_DATA状态:该状态用于获取头碎片的最后一个32比特数据内容;当该帧为最后一个子帧且不为头碎片或者是中间碎片,则跳转回INFO_IDLE状态;当该帧碎片为最后一个子帧且碎片类型为头碎片时,跳转到INFO_WRITE_INFO状态;当该帧碎片为最后一个子帧且碎片类型为中间碎片时,跳转到INFO_WRITE_ADD_INFO状态;
INFO_WRITE_INFO状态:该状态只有一个时钟周期,用于处理当最后一个子帧的类型为头碎片(10)时的状态更新;
INFO_WRITE_ADD_INFO状态:该状态只有一个时钟周期,用于处理当最后一个子帧的类型为中间碎片(00)时的状态更新。
7.一种实施权利要求1~6任意一项所述基于HINOC协议的HIMAC拆帧方法的基于HINOC协议的HIMAC拆帧系统,其特征在于,所述基于HINOC协议的HIMAC拆帧系统包括:
碎片合并模块,用于两个状态机实现从HIMAC帧中恢复提取以太网帧;
EIF信息提取模块,用于将提取到的EIF信息存放到EIF信息RAM中;
生成以太网帧模块,用于在HB接收到前后来自两个不同HM的HIMAC帧时,保存之前HIMAC帧的头碎片信息;再次接收到来自同一个HM的HIMAC帧时再次读取之前的头碎片信息进行更新或者拼接;
所述碎片合并模块包括:
子帧顺序设计单元,用于按照子帧的顺序进行设计;
碎片拼接单元,用于将碎片进行拼接;
生成以太网帧模块包括:信息传递状态机,信息传递状态机用于处理来自不同HM时的碎片信息的读取与更新。
8.一种搭载权利要求7所述基于HINOC协议的HIMAC拆帧系统的基于HINOC协议的HIMAC拆帧控制器,其特征在于,所述基于HINOC协议的HIMAC拆帧控制器包括三个状态机:
主状态机,按照HIAMC帧的帧格式顺序进行设计;
拼接状态机,是辅助状态机,根据头碎片和尾碎片的长度将碎片进行拼接;
信息传递状态机,用于处理来自不同HM时的碎片信息的读取与更新;在HB接收到前后来自两个不同HM的HIMAC帧时,保存之前HIMAC帧的头碎片信息,再次接收到来自同一个HM的HIMAC帧时再次读取之前的头碎片信息进行更新或者拼接。
9.一种实现权利要求1~6任意一项所述基于HINOC协议的HIMAC拆帧方法的信息数据处理终端。
10.一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行如权利要求1-6任意一项所述的基于HINOC协议的HIMAC拆帧方法。

说明书全文

一种基于HINOC协议的HIMAC拆系统、方法

技术领域

[0001] 本发明属于同轴宽带接入技术领域,尤其涉及一种基于HINOC协议的HIMAC拆帧系统、方法。

背景技术

[0002] 有线同轴网是国家信息基础设施的重要组成部分,实现自主HINOC同轴宽带接入技术的芯片化、产业化以及规模部署对我国网络安全和信息化具有至关重要的作用。传统的软件实现HINOC系统中HIMAC组帧及拆帧功能的方法存在效率低下、CPU负荷过重等缺点,为此采用FPGA或芯片的硬件实现方法能从根本上解决软件实现拆帧和组帧效率低下的问题。同时,对于同轴电缆长距离传输带来的信道衰减导致的HIMAC帧出错,进而引起传输性能低下甚至通信中断的问题,采用本方案可以很好的解决上述问题。
[0003] 综上所述,现有技术存在的问题是:
[0004] (1)采用同轴接入技术代替光纤的HINOC网络中的HINOC帧在信道衰减后可能出现非正常误码,比如CRC校验真确,但实际却时出错的如子帧个数大于5,子帧长度为0,帧长不满足要求,碎片类型不匹配等。
[0005] (2)当拆帧模由于异常而停止拆帧时,用于缓存等待拆帧的HIMAC帧的乒乓RAM可能会被充满,进而导致整个系统的阻塞。
[0006] (3)恢复出来的EMCA帧可能还存在错误。
[0007] (4)整个拆帧模块的输入和输出分别是HIMAC帧和EMAC帧,所以拆帧模块需要匹配这两种帧的速率和位宽。
[0008] 解决上述技术问题的难度:解决上述问题需要充分了解HINOC协议的分片机制和HIMAC帧的帧格式,需要充分考虑如何设计拆帧模块使得以太网帧在进入到HINOC系统中被组帧加速后如何拆帧恢复原速率,同时如何解决在信道质量较差情况下出现的CRC校验位失效情况下错帧的判别。
[0009] 解决上述技术问题的意义:
[0010] (1)增加的帧头检测和碎片类型匹配等非正常无码检测,可以及时发现并丢弃CRC正确却是错误HIMAC,提高了拆帧的效率;
[0011] (2)增加的自动复位机制,可以在拆帧模块由于异常而停止进而导致系统阻塞时恢复初始状态,使整个系统变得更加健壮;
[0012] (3)增加的恢复后EMAC帧的CRC校验同样提高了系统的效率;
[0013] (4)增加的双缓冲机制使得拆帧模块可以匹配HIMAC帧和EMAC帧的速率。

发明内容

[0014] 针对现有技术存在的问题,本发明提供了一种基于HINOC协议的HIMAC拆帧系统、方法。
[0015] 本发明是这样实现的,一种基于HINOC协议的HIMAC拆帧方法,所述基于HINOC协议的HIMAC拆帧方法包括以下步骤:
[0016] 第一步,采用两个状态机从HIMAC帧中恢复提取以太网帧;
[0017] 第二步,提取到的EIF信息存放到EIF信息RAM中;
[0018] 第三步,在HB接收到前后来自两个不同HM的HIMAC帧时,保存之前HIMAC帧的头碎片信息;再次接收到来自同一个HM的HIMAC帧时再次读取之前的头碎片信息进行更新或者拼接。
[0019] 进一步,所述第一步中一个主状态机按照子帧的顺序进行设计;另一个辅助状态机将碎片拼接。
[0020] 进一步,所述主状态机的状态包括:
[0021] IDLE状态:空闲状态;
[0022] READ_INFO状态:从IDLE状态在MAC核ready及两块乒乓RAM中有数据帧的状态下跳转到的首个状态,获取帧的信息,包括HM_ID号及帧长信息;HM_ID号用于生成头碎片RAM高6bit地址,帧长让拆帧模块了解HIMAC帧类型,信息是从interface模块一级级传递下来的
32bit信息,在乒乓RAM中存储的地址依然是11’h03f;
[0023] HEAD状态:处理HIMAC帧的帧头,用于提取子帧个数,碎片类型,目的HM_ID号,子帧长度及是否有EIF子帧;判断该HIAMC帧中是否有EIF帧,若是,则在读完HIMAC的帧头和子帧长度集合时跳转到EIF帧处理状态,否则跳转到FIRST_FRM状态;
[0024] EIF_FRM状态:用于提取带EIF帧的关键信息;提取到的EIF信息存放到EIF信息RAM中;每次提取到的EIF信息共有3个16比特的信息,分别对应三个优先级的队列信息,存放到EIF信息RAM中的两个32比特的存储块中;而存储的地址也是由地址11’h03f解析出来的HM_ID号生产的;EIF_FRM帧提取完毕后若仅有一个子帧,则拆帧结束,若子帧个数大于1,则跳转到SECOND_FRM模块;
[0025] FIRST_FRM状态:在没有EIF帧的情况下的第一个子帧;若仅有一个子帧,则在读完该子帧后即结束拆帧;若仅有一个完整的子帧,拆帧后跳转到WAIT状态;若该帧是碎片,跳转到PAUSE状态,等待碎片合并;第一个子帧是碎片的状态只可能是FIRST_FRM或者SECOND_FRM;
[0026] SECOND_FRM状态:是完整以太网帧,也可能是碎片;若是碎片,跳转到PAUSE状态,若是完整以太网帧且还有未处理子帧,则跳转到WAIT状态;
[0027] THIRD_FRM、FORTH_FRM、FIVE_FRM状态:这三个状态的处理基本相同,都是需要判断子帧是否已经处理完,若处理完,则拆帧结束;若子帧处理结束,且碎片处理标记也拉低,就跳转到WAIT状态;
[0028] PAUSE状态:该状态是碎片拼接时的等待整理状态;当主状态机跳转到该状态时,辅助状态机进行碎片拼接;若子帧处理计数等于总子帧数且辅助状态机跳回CIDLE状态,则拆帧结束;若子帧处理计数等于总子帧数且辅助状态机未跳回CIDLE状态,则跳转到WAIT_COMB状态继续等待;若拼接结束且尚有未处理子帧,则跳转到WAIT状态;若遇到拼接错误comb_error或碎片类型不一致style_error时,跳转到snum状态,snum是根据子帧计数得到的跳转到对应状态的计数;
[0029] WAIT状态:避免拆帧过快而为了增加前后两个以太网帧的间隔满足千兆以太网帧之间基本间隔的要求而增加的一个延时状态;在该状态下通过一个计数器来判断是否达到固定的时间间隔,且等到MAC核的接收ready拉高的情况下才能跳转到下一个状态;
[0030] EMPTY_FRM:当已经处理的子帧计数等于所有子帧计数后,但处理的帧字节计数仍未达到整个HIMAC帧长度,此时跳转到该状态直至计数值等于HIMAC帧长为止;
[0031] WAIT_COMB状态:是从碎片拼接等待状态PAUSE跳转过来的一个继续等待状态,对于处理较长帧时仅有PAUSE状态还是无法等待到最终的处理结束,因此又添加的一个状态;
[0032] FINISH状态:标志拆帧结束,清空标志寄存器的数据。
[0033] 进一步,所述辅助状态机的状态:
[0034] CIDLE状态:只有当头碎片信息寄存器和尾碎片信息寄存器的标志位同时有效时,才进入拼接状态,判断头碎片的长度是否小于四个字节,若小于四个字节,则进入字节拼接状态CCOMB,否则进入读头碎片状态CHEAD;
[0035] CHEAD状态:读取头碎片RAM中之前存储的头碎片数据,直到读取尾碎片的信号才判断是否进入下一个状态;若头碎片的长度不是4字节的整数倍即存储头碎片长度的寄存器的最后两比特不为0,则跳转到CCOMB状态;若头碎片的长度是4字节的整数倍,且头碎片的长度大于四个字节,则跳转到CTAIL状态;若头碎片的长度是4字节的整数倍,且头碎片的长度刚好等于四个字节,则跳转到CREAD_ONE状态;
[0036] CCOMB状态:用于拼接头碎片不是四字节对齐,需要跟尾碎片的第一个32比特进行拼接的状态,持续一个时钟周期;在该状态下,若尾碎片长度小于四字节,则字节结束拼接;否则,跳转到CTAIL状态;
[0037] CTAIL状态:处理尾碎片的状态;若尾碎片计数值等于尾碎片长度的字节数且该长度大于四字节,则跳转到CEOP状态;若尾碎片长度小于等于四字节,则跳转到CFINISH状态;若头碎片长度小于四字节,则跳转到CREAD1_HEAD状态;
[0038] CREAD1_HEAD状态:用于处理头碎片长度不到四个字节时的情况;在该状态下进行拼接计数,直至将头尾碎片全部合并位置,再跳转到CEOP状态;
[0039] CREAD_ONE状态:用于处理头碎片长度刚好等于四个字节的情况。计数直至合并到最后一个32比特数据时跳转到CEOP状态;
[0040] CEOP状态:持续一个时钟周期,用于产生以太网帧的eop信号,字节跳转到CFINISH状态;
[0041] CFINISH状态:标志拼接结束。
[0042] 进一步,所述第二步还包括碎片存储RAM;
[0043] 将碎片类型为10或者00的头碎片和中间碎片都放置到头碎片ram中,RAM为64个2Kbyte大小,该RAM的对应HM_ID的0地址存储碎片累计长度信息,每次进行新的头碎片处理前,先从该RAM相应地址读出之前已经累计的长度值,再将对应的中间碎片跟之前最后写入的数据进行拼接后继续写入相应地址;
[0044] 若有尾碎片,先将碎片写入对应的尾碎片RAM,大小与头碎片RAM不同,仅有2Kbyte,且为双口RAM,为了写入的同时读出进行拼接;
[0045] 所述第二步还包括每次提取到的EIF信息共有3个16比特的信息,分别对应三个优先级的队列信息,存放到EIF信息RAM中的两个32比特的存储块中;存储的地址由特定地址解析出来的HM_ID号生产;RAM是双口RAM,可同时供CPU读取信息。
[0046] 进一步,所述第三步包括信息传递状态机,用于处理来自不同HM时的碎片信息的读取与更新;
[0047] 信息传递状态机的状态:
[0048] INFO_IDLE状态:该状态下当处理的有效数据帧为中间碎片时,跳转到读取之前头碎片信息状态INFO_READ_INFO;其余情况均为处理的碎片类型为头碎片时要跳转到写帧头信息状态INFO_WRITE_INFO;
[0049] INFO_READ_INFO状态:该状态共四个时钟周期,在最后一个时钟周期跳转到INFO_READ_LAST_DATA状态。前三个时钟周期用于读取帧头RAM的首地址和最后一个地址,用于获取头碎片信息;
[0050] INFO_READ_LAST_DATA状态:该状态用于获取头碎片的最后一个32比特数据内容;当该帧为最后一个子帧且不为头碎片或者是中间碎片,则跳转回INFO_IDLE状态;当该帧碎片为最后一个子帧且碎片类型为头碎片时,跳转到INFO_WRITE_INFO状态;当该帧碎片为最后一个子帧且碎片类型为中间碎片时,跳转到INFO_WRITE_ADD_INFO状态;
[0051] INFO_WRITE_INFO状态:该状态只有一个时钟周期,用于处理当最后一个子帧的类型为头碎片(10)时的状态更新;
[0052] INFO_WRITE_ADD_INFO状态:该状态只有一个时钟周期,用于处理当最后一个子帧的类型为中间碎片(00)时的状态更新。
[0053] 本发明的另一目的在于提供一种实施所述基于HINOC协议的HIMAC拆帧方法的基于HINOC协议的HIMAC拆帧系统,所述基于HINOC协议的HIMAC拆帧系统包括:
[0054] 碎片合并模块,用于两个状态机实现从HIMAC帧中恢复提取以太网帧;
[0055] EIF信息提取模块,用于将提取到的EIF信息存放到EIF信息RAM中;
[0056] 生成以太网帧模块,用于在HB接收到前后来自两个不同HM的HIMAC帧时,保存之前HIMAC帧的头碎片信息;再次接收到来自同一个HM的HIMAC帧时再次读取之前的头碎片信息进行更新或者拼接;
[0057] 所述碎片合并模块包括:
[0058] 子帧顺序设计单元,用于按照子帧的顺序进行设计;
[0059] 碎片拼接单元,用于将碎片进行拼接;
[0060] 生成以太网帧模块包括:信息传递状态机,信息传递状态机用于处理来自不同HM时的碎片信息的读取与更新。
[0061] 本发明的另一目的在于提供一种搭载所述基于HINOC协议的HIMAC拆帧系统的基于HINOC协议的HIMAC拆帧控制器,所述基于HINOC协议的HIMAC拆帧控制器包括三个状态机:
[0062] 主状态机,按照HIAMC帧的帧格式顺序进行设计;
[0063] 拼接状态机,是辅助状态机,根据头碎片和尾碎片的长度将碎片进行拼接;
[0064] 信息传递状态机,用于处理来自不同HM时的碎片信息的读取与更新。在HB接收到前后来自两个不同HM的HIMAC帧时,保存之前HIMAC帧的头碎片信息,再次接收到来自同一个HM的HIMAC帧时再次读取之前的头碎片信息进行更新或者拼接。
[0065] 本发明的另一目的在于提供一种实现所述基于HINOC协议的HIMAC拆帧方法的信息数据处理终端。
[0066] 本发明的另一目的在于提供一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行所述的基于HINOC协议的HIMAC拆帧方法。
[0067] 综上所述,本发明的优点及积极效果为:以太网络承载的是以太网数据,而在HINOC网络中传输的是HIMAC帧,以太网数据要通过HINOC网络到达目的结点,必须封装成适合在HINOC网络中传输的HIMAC帧格式进行传输,并且在对等层进行解封装。通过组帧可以将多个以太网帧打包并封装为一个HIMAC帧的方式,提高HINOC网络MAC层的传输效率,降低协议开销。同时根据HIMAC帧格式以及打包规则,在硬件中实现EMAC帧的组帧和拆帧具有速度快、效率高的特点,实测数据表明,硬件实现的组帧和拆帧的性能是软件实现的组帧拆帧性能的20倍左右。附图说明
[0068] 图1是本发明实施例提供的基于HINOC协议的HIMAC拆帧系统的结构示意图;
[0069] 图中:1、碎片合并模块;2、EIF信息提取模块;3、生成以太网帧模块。
[0070] 图2是本发明实施例提供的基于HINOC协议的HIMAC拆帧方法流程图
[0071] 图3是本发明实施例提供的HIMAC的帧格式示意图。
[0072] 图4是本发明实施例提供的基于HINOC协议的HIMAC拆帧系统对外的信号线示意图。

具体实施方式

[0073] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0074] 针对现有技术存在的问题,本发明提供了一种基于HINOC协议的HIMAC拆帧系统、方法,下面结合附图对本发明作详细的描述。
[0075] 如图1所示,本发明实施例提供的基于HINOC协议的HIMAC拆帧系统包括:碎片合并模块1、EIF信息提取模块2、生成以太网帧模块3。
[0076] 碎片合并模块1,用于两个状态机实现从HIMAC帧中恢复提取以太网帧;
[0077] EIF信息提取模块2,用于将提取到的EIF信息存放到EIF信息RAM中。
[0078] 生成以太网帧模块3,用于在HB接收到前后来自两个不同HM的HIMAC帧时,保存之前HIMAC帧的头碎片信息;再次接收到来自同一个HM的HIMAC帧时再次读取之前的头碎片信息进行更新或者拼接。
[0079] 碎片合并模块1包括:
[0080] 子帧顺序设计单元,用于按照子帧的顺序进行设计。
[0081] 碎片拼接单元,用于将碎片进行拼接。
[0082] 生成以太网帧模块3包括:信息传递状态机,信息传递状态机用于处理来自不同HM时的碎片信息的读取与更新。
[0083] 如图2所示,本发明实施例提供的基于HINOC协议的HIMAC拆帧方法包括以下步骤:
[0084] S201:采用两个状态机从HIMAC帧中恢复提取以太网帧;
[0085] S202:提取到的EIF信息存放到EIF信息RAM中;
[0086] S203:在HB接收到前后来自两个不同HM的HIMAC帧时,需要保存之前HIMAC帧的头碎片信息,以便再次接收到来自同一个HM的HIMAC帧时再次读取之前的头碎片信息进行更新或者拼接。
[0087] 在本发明的优选实施例中,步骤S201中一个主状态机按照子帧的顺序进行设计,另一个辅助状态机将碎片进行拼接。
[0088] 在本发明的优选实施例中,步骤S202中每次提取到的EIF信息共有3个16比特的信息,分别对应三个优先级的队列信息,存放到EIF信息RAM中的两个32比特的存储块中。而存储的地址也是由特定地址解析出来的HM_ID号生产的。另外,该RAM是双口RAM,可同时供CPU读取信息。
[0089] 本发明实施例提供的基于HINOC协议的HIMAC拆帧控制器包括三个状态机:
[0090] 主状态机,按照HIAMC帧的帧格式顺序进行设计;
[0091] 拼接状态机,是辅助状态机,根据头碎片和尾碎片的长度将碎片进行拼接;
[0092] 信息传递状态机,用于处理来自不同HM时的碎片信息的读取与更新。在HB接收到前后来自两个不同HM的HIMAC帧时,需要保存之前HIMAC帧的头碎片信息,以便再次接收到来自同一个HM的HIMAC帧时再次读取之前的头碎片信息进行更新或者拼接。
[0093] 下面结合附图对本发明的技术方案作进一步的描述。
[0094] 本发明实施例的主状态机各个状态的说明:
[0095] IDLE状态:空闲状态;
[0096] READ_INFO状态:该状态是从IDLE状态在MAC核ready及两块乒乓RAM中有数据帧的状态下跳转到的首个状态,主要功能是获取帧的信息,包括HM_ID号及帧长信息。HM_ID号用于生成头碎片RAM高6bit地址,而帧长可以让拆帧模块了解HIMAC帧类型。该信息是从interface模块一级级传递下来的32bit信息,在乒乓RAM中存储的地址依然是11’h03f;
[0097] HEAD状态:该状态主要是处理HIMAC帧的帧头,用于提取子帧个数,碎片类型,目的HM_ID号,子帧长度及是否有EIF子帧等信息。正常的功能是判断该HIAMC帧中是否有EIF帧,若是,则在读完HIMAC的帧头和子帧长度集合时跳转到EIF帧处理状态,否则跳转到FIRST_FRM状态;
[0098] EIF_FRM状态:该状态用于提取带EIF帧的关键信息。提取到的EIF信息存放到EIF信息RAM中。每次提取到的EIF信息共有3个16比特的信息,分别对应三个优先级的队列信息,存放到EIF信息RAM中的两个32比特的存储块中。而存储的地址也是由地址11’h03f解析出来的HM_ID号生产的。另外,该RAM是双口RAM,可同时供CPU读取信息。EIF_FRM帧提取完毕后若仅有一个子帧,则拆帧结束,若子帧个数大于1,则跳转到SECOND_FRM模块;
[0099] FIRST_FRM状态:该状态是在没有EIF帧的情况下的第一个子帧。该状态下,若仅有一个子帧,则在读完该子帧后即结束拆帧;若仅有一个完整的子帧,拆帧后跳转到WAIT状态;若该帧是碎片,这需要跳转到PAUSE状态,等待碎片合并。第一个子帧是碎片的状态只可能是FIRST_FRM(无EIF情况下)或者SECOND_FRM(有EIF情况下);
[0100] SECOND_FRM状态:该状态可以是完整以太网帧,也可能是碎片。所以处理流程与FIRST_FRM一样。若是碎片,跳转到PAUSE状态,若是完整以太网帧且还有未处理子帧,则跳转到WAIT状态;
[0101] THIRD_FRM、FORTH_FRM、FIVE_FRM状态:这三个状态的处理基本相同,都是需要判断子帧是否已经处理完,若处理完,则拆帧结束;若子帧处理结束,且碎片处理标记也拉低,就跳转到WAIT状态;
[0102] PAUSE状态:该状态是碎片拼接时的等待整理状态。当主状态机跳转到该状态时,辅助状态机就进行碎片拼接。若子帧处理计数等于总子帧数且辅助状态机跳回CIDLE状态,则拆帧结束;若子帧处理计数等于总子帧数且辅助状态机未跳回CIDLE状态,则跳转到WAIT_COMB状态继续等待;若拼接结束且尚有未处理子帧,则跳转到WAIT状态;若遇到拼接错误comb_error或碎片类型不一致style_error时,跳转到snum状态(snum是根据子帧计数得到的跳转到对应状态的计数);
[0103] WAIT状态:该状态是避免拆帧过快而为了增加前后两个以太网帧的间隔满足千兆以太网帧之间基本间隔的要求而增加的一个延时状态。在该状态下通过一个计数器来判断是否达到固定的时间间隔,且等到MAC核的接收ready拉高的情况下才能跳转到下一个状态;
[0104] EMPTY_FRM:当已经处理的子帧计数等于所有子帧计数后,但处理的帧字节计数仍未达到整个HIMAC帧长度,此时可以跳转到该状态直至计数值等于HIMAC帧长为止。此举专针对半空帧进行的处理,为了使得拆帧时每次都能从乒乓RAM中读取完,也使得拆帧时间处理与正常帧一致;
[0105] WAIT_COMB状态:是从碎片拼接等待状态PAUSE跳转过来的一个继续等待状态,对于处理较长帧时仅有PAUSE状态还是无法等待到最终的处理结束,因此又添加的一个状态;
[0106] FINISH状态:标志拆帧结束,在这个状态下清空一些标志寄存器的数据。
[0107] 本发明实施例的碎片存储RAM。
[0108] 在设计中,将碎片类型为10或者00的头碎片和中间碎片都放置到头碎片ram中,该RAM为64个2Kbyte大小,该RAM的对应HM_ID的0地址存储碎片累计长度信息,每次进行新的头碎片处理前,都要先从该RAM相应地址读出之前已经累计的长度值,再将对应的中间碎片跟之前最后写入的数据进行拼接后继续写入相应地址;
[0109] 在设计中,若有尾碎片,也是先将该碎片写入对应的尾碎片RAM,大小与头碎片RAM不同,仅有2Kbyte,且为双口RAM,为了写入的同时可以读出进行拼接。
[0110] 本发明实施例的辅助状态机各个状态的说明。
[0111] CIDLE状态:在该状态下,只有当头碎片信息寄存器和尾碎片信息寄存器的标志位同时有效时,才进入拼接状态,此时要判断头碎片的长度是否小于四个字节,若小于四个字节,则进入字节拼接状态CCOMB,否则进入读头碎片状态CHEAD;
[0112] CHEAD状态:在该状态下,读取头碎片RAM中之前存储的头碎片数据,直到读取尾碎片的信号才判断是否进入下一个状态。若头碎片的长度不是4字节的整数倍即存储头碎片长度的寄存器的最后两比特不为0,则跳转到CCOMB状态;若头碎片的长度是4字节的整数倍,且头碎片的长度大于四个字节,则跳转到CTAIL状态;若头碎片的长度是4字节的整数倍,且头碎片的长度刚好等于四个字节,则跳转到CREAD_ONE状态;
[0113] CCOMB状态:主要用于拼接头碎片不是四字节对齐,需要跟尾碎片的第一个32比特进行拼接的状态,持续一个时钟周期。在该状态下,若尾碎片长度小于四字节,则字节结束拼接;否则,跳转到CTAIL状态;
[0114] CTAIL状态:该状态是处理尾碎片的状态。若尾碎片计数值等于尾碎片长度的字节数且该长度大于四字节,则跳转到CEOP状态;若尾碎片长度小于等于四字节,则跳转到CFINISH状态;若头碎片长度小于四字节,则跳转到CREAD1_HEAD状态;
[0115] CREAD1_HEAD状态:该状态是用于处理头碎片长度不到四个字节时的情况。在该状态下进行拼接计数,直至将头尾碎片全部合并位置,再跳转到CEOP状态;
[0116] CREAD_ONE状态:该状态时用于处理头碎片长度刚好等于四个字节的情况。计数直至合并到最后一个32比特数据时跳转到CEOP状态;
[0117] CEOP状态:该状态持续一个时钟周期,用于产生以太网帧的eop信号,字节跳转到CFINISH状态;
[0118] CFINISH状态:标志拼接结束。
[0119] 信息传递状态机各个状态的说明:
[0120] INFO_IDLE状态:该状态下当处理的有效数据帧(分带不带EIF两种情况)为中间碎片时,跳转到读取之前头碎片信息状态INFO_READ_INFO;其余情况均为处理的碎片类型为头碎片时要跳转到写帧头信息状态INFO_WRITE_INFO;
[0121] INFO_READ_INFO状态:该状态共四个时钟周期,在最后一个时钟周期跳转到INFO_READ_LAST_DATA状态。前面的几个时钟周期用于读取帧头RAM的首地址和最后一个地址,用于获取头碎片信息;
[0122] INFO_READ_LAST_DATA状态:该状态用于获取头碎片的最后一个32比特数据内容。当该帧为最后一个子帧且不为头碎片或者是中间碎片,则跳转回INFO_IDLE状态;当该帧碎片为最后一个子帧且碎片类型为头碎片时,跳转到INFO_WRITE_INFO状态;当该帧碎片为最后一个子帧且碎片类型为中间碎片时,跳转到INFO_WRITE_ADD_INFO状态;
[0123] INFO_WRITE_INFO状态:该状态只有一个时钟周期,用于处理当最后一个子帧的类型为头碎片(10)时的状态更新;
[0124] INFO_WRITE_ADD_INFO状态:该状态只有一个时钟周期,用于处理当最后一个子帧的类型为中间碎片(00)时的状态更新。
[0125] 本发明已经实现了流片和商用,充分说明了方案的可行性。
[0126] 应当注意,本发明的实施方式可以通过硬件、软件或者软件和硬件的结合来实现。硬件部分可以利用专用逻辑来实现;软件部分可以存储在存储器中,由适当的指令执行系统,例如微处理器或者专用设计硬件来执行。本领域的普通技术人员可以理解上述的设备和方法可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在诸如磁盘、CD或DVD-ROM的载体介质、诸如只读存储器(固件)的可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这样的代码。本发明的设备及其模块可以由诸如超大规模集成电路或门阵列、诸如逻辑芯片、晶体管等的半导体、或者诸如现场可编程门阵列、可编程逻辑设备等的可编程硬件设备的硬件电路实现,也可以用由各种类型的处理器执行的软件实现,也可以由上述硬件电路和软件的结合例如固件来实现。
[0127] 以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈