CN112272128B - Hinoc组帧方法、系统、介质、计算机设备及应用 - Google Patents
Hinoc组帧方法、系统、介质、计算机设备及应用 Download PDFInfo
- Publication number
- CN112272128B CN112272128B CN202011028386.9A CN202011028386A CN112272128B CN 112272128 B CN112272128 B CN 112272128B CN 202011028386 A CN202011028386 A CN 202011028386A CN 112272128 B CN112272128 B CN 112272128B
- Authority
- CN
- China
- Prior art keywords
- framing
- frame
- fragment
- state
- emac
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/2801—Broadband local area networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0803—Configuration setting
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/26—Special purpose or proprietary protocols or architectures
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明属于网络数据处理技术领域,公开了一种HINOC组帧方法、系统、介质、计算机设备及应用,依靠三个状态机进行碎片信息的提取、判断、更新和帧数据的写入和读出,以及依靠三种组帧逻辑实现数据的组帧。系统包括:碎片信息预处理模块,实现碎片信息提取、判断、更新和BD申请;碎片数据处理模块,实现碎片数据和新EMAC帧数据的拼接、写入;组帧数据处理模块,组帧数据的读出和组帧。在第二级流水状态机从ENCAP_WRAM_IDLE状态跳出时判断此次轮询到乒乓fifo的EMAC帧是否要组帧以及要组帧的类型,然后在EMAC帧从碎片数据ram A口写入的同时从B口读出需要用于组帧的数据输入到对应的组帧逻辑中进行组帧。
Description
技术领域
本发明属于网络数据处理技术领域,尤其涉及一种HINOC组帧方法、系统、介质、计算机设备及应用。
背景技术
目前:同轴电缆的HINOC网络只需在楼道和户内添加相关的HINOC调制解调设备头端与终端,无需对入户电缆线路进行任何改造,就可实现多种高速数据业务的双向传输。以太网络承载的是以太网数据,而在HINOC网络中传输的是HINOC帧,以太网数据要通过HINOC网络到达目的结点,必须封装成适合在HINOC网络中传输的HINOC帧格式进行传输,并且在对等层进行解封装。通过组帧可以将多个以太网帧打包并封装为一个HINOC帧的方式,提高HINOC网络MAC层的传输效率,降低协议开销。同时根据HINOC帧格式以及打包规则,在硬件中实现EMAC帧的组帧和拆帧具有速度快、效率高的特点。
HINOC3.0 MAC层架构相较于HINOC2.0的改动:HINOC2.0是出队组帧,根据出队请求从缓存中搬移相应的EMAC帧数据,组帧后输出。HINOC3.0组帧模块放在入队之前,即缓存中以HINOC帧为单位存储数据。
原来出队组帧时需要查询尾碎片及高中低优先级队列,然后给出组帧sr_tx_fifo指令,查询过程需要占用很长的clk周期,难以达到10G处理线速;缓存以HINOC帧为单位存储,则每来一个组帧指令,可以直接从缓存中出队,出队速度可以达到10G线速;组帧模块放在入队前,可以根据进来以太网帧长度和尾碎片长度计算出需要多少个HINOC帧,申请缓存,经过组帧后由总线直接搬移进入缓存,省去查询队列的时间;多个hiphy同时给出组帧请求时,直接从缓存中取出HINOC帧后分别循环给到不同hiphy,出队时间快。所以经过改动后HINOC3.0可以支持10G速率。
通过上述分析,现有技术存在的问题及缺陷为:出队组帧查询过程需要占用很长的clk周期,难以达到10G处理线速;缓存管理时查询队列的时间较长;出队时间较长;
解决以上问题及缺陷的难度为:首先经过上述分析,现有技术(HINOC 2.0)由于位宽、时钟、和整体的架构的限制难以达到10G速率;所以HINOC 3.0在这几个方面做了上述改动,但位宽和架构的改动就给组帧方面带来了一些难度,首先位宽由32位变成了128位,加上每次子帧个数及组HINOC帧的个数不同这些问题造成了组帧逻辑比较复杂;其次由于HINOC 3.0的架构使得组帧模块对外交互的接口较多,设计难度较大;最后就是组半空帧的需求使得各个状态机的交互变得复杂;该专利就是解决这些问题。
解决以上问题及缺陷的意义为:解决了上述问题使得组织模块支持10G速率
发明内容
针对现有技术存在的问题,本发明提供了一种HINOC组帧方法、系统、介质、计算机设备及应用。
本发明是这样实现的,一种HINOC组帧方法,所述HINOC组帧方法包括:
当完成上一个EMAC帧的组帧处理后,轮询E口或H口的分组处理模块获取新的EMAC帧;新的EMAC帧携带入队端口号、帧长Lemac、优先级信息;
根据入队端口号和优先级查询组帧模块中的碎片信息,HINOC碎片帧还可以容纳的字节数目Lres;
若Lemac≥Lres,则跳转到向缓存管理模块申请缓存,反之将EMAC帧和长度信息分别搬移到碎片数据ram和碎片信息RAM中,更新Lres为Lres-Lemac,结束本次组帧流程;
对碎片数据ram和EMAC帧输入fifo中的EMAC帧按照HINOC3.0帧格式进行组帧,组帧个数为Nbd,其中13bits序号字段置零;组帧后的HINOC帧搬移到HINOC帧fifo中;未组帧的EMAC帧尾分片搬移到碎片数据ram中,结束本次组帧流程。
进一步,所述HINOC组帧方法的第一级流水有两个状态机分别处理正常组帧请求和来自出队总线的组帧请求;正常组帧请求是指新进入HINOC的以太网帧的入队请求,来自出队总线的组帧请求是指出队轮询到的device_id的各个优先级队列中没有HINOC帧数据则需要判断组帧模块的碎片数据ram的对应队列中是否有碎片,有则把这些碎片组成HINOC帧,避免这写碎片长时间阻塞在组帧模块内部的碎片数据ram中,两种请求中正常组帧请求的优先级高于来自出队总线的组帧请求;
处理正常组帧请求的状态机是根据组帧前的总线控制模块输入的设备号和优先级从该模块内部的碎片信息RAM对应地址进行碎片信息提取、判断、更新和BD申请,同时把EMAC帧数据从总线fifo中搬移到该模块内部轮询到的乒乓fifo中;
处理来自出队总线的组帧请求的状态机是根据出队总线模块输入得设备号轮询模块内部碎片信息RAM的各个优先级,在状态机的各个状态中需要监测是否有相同的device_id正在组帧信息。
进一步,所述HINOC组帧方法的第二级状态机流水是根据第一级流水得到的信息把对应的乒乓fifo的数据搬移到对应的碎片数据ram中,如果该EMAC帧达到组帧要求,同时从碎片数据ram的另一个口读出用于组帧的数据拼接后输入到对应的组播、单广播模块进行组帧;在进行组帧的同时,如果下一次轮询到的该内部乒乓fifo的EMAC帧不需要组帧,该状态机就不需要等待,可以继续流水。
进一步,所述HINOC组帧方法的三种组帧逻辑就是根据组播和单广播和半空帧不同的组帧规则和组帧数、碎片个数、碎片长度信息把从碎片数据ram读出的数据组成HINOC帧。
进一步,所述HINOC组帧方法的单播和广播HINOC帧分片,组帧尾碎片需要存储在组帧模块里;组播HINOC帧不分片,最后一个组播帧长度不够需补零;半空帧的数据就是单、广播碎片,长度不够需要补零。
进一步包括:处理正常组帧请求的状态机各个状态的说明:
ENCAP_PRE_INIT:初始化碎片信息RAM,初始化完成后跳转到ENCAP_PRE_IDLE状态;
ENCAP_PRE_IDLE:空闲状态,如果发起的组帧请求是单、广播就跳转到ENCAP_PRE_READ_FRAG_INFO状态,如果发起的组帧请求是组播就跳转到ENCAP_PRE_FRAME_MULTI_BD_REQ状态;
ENCAP_PRE_FRAME_MULTI_BD_REQ:组播发起正常组帧请求,跳转到ENCAP_PRE_FRAME_BD_REQ_ACK状态等待BD申请的应答;
ENCAP_PRE_FRAME_BD_REQ_ACK:等待BD申请的应答,如果申请失败则跳转到ENCAP_PRE_END状态;BD申请成功时如果完全把EMAC帧数据从总线fifo中搬移到该模块内部轮询到的乒乓fifo中跳转到ENCAP_PRE_END状态,反之跳转到ENCAP_PRE_PAUSE状态;
ENCAP_PRE_PAUSE:暂停状态,等待EMAC帧数据从总线fifo中搬移到该模块内部轮询到的乒乓fifo完毕且乒乓fifo至少有一个空闲,跳转到ENCAP_PRE_END状态;
ENCAP_PRE_READ_FRAG_INFO:根据设备号和优先级读取碎片信息RAM的碎片信息;
ENCAP_PRE_READ_FRAG_INFO_REG:根据读取到的碎片信息判断是否达到组帧长度,如果达到组帧长度就跳转ENCAP_PRE_FRAME_UNMULTI_BD_REQ状态,反之就跳转到ENCAP_PRE_PAUSE状态;
ENCAP_PRE_FRAME_UNMULTI_BD_REQ:单、广播发起正常组帧请求,跳转到ENCAP_PRE_FRAME_BD_REQ_ACK状态等待BD申请的应答;
ENCAP_PRE_END:跳转到ENCAP_PRE_IDLE状态;
处理来自出队总线组帧请求的状态机各个状态的说明:
因为两个组帧请求的优先级不同,所以该状态机每个状态都需要监测是否发生相同设备号的正常组帧请求,如果发生就不组半空帧;
DEQUEUE_IDLE:空闲,有来自出队总线的组帧请求时,跳转到DEQUEUE_READ_FRAG_HEAD_H状态;
DEQUEUE_READ_FRAG_HEAD_H:根据设备号读取碎片高优先级队列信息,跳转到DEQUEUE_READ_FRAG_HEAD_H_REG状态;
DEQUEUE_READ_FRAG_HEAD_H_REG:根据读取到的碎片高优先级队列信息判断,如果碎片长度为零就跳转到DEQUEUE_READ_FRAG_HEAD_M状态,反之就跳转到DEQUEUE_WAIT状态;
DEQUEUE_READ_FRAG_HEAD_M:根据设备号读取碎片中优先级队列信息,跳转到DEQUEUE_READ_FRAG_HEAD_M_REG状态;
DEQUEUE_READ_FRAG_HEAD_M_REG:根据读取到的碎片中优先级队列信息判断,如果碎片长度为零就跳转到DEQUEUE_READ_FRAG_HEAD_L状态,反之就跳转到DEQUEUE_WAIT状态;
DEQUEUE_READ_FRAG_HEAD_L:根据设备号读取碎片低优先级队列信息,跳转到DEQUEUE_READ_FRAG_HEAD_L_REG状态;
DEQUEUE_READ_FRAG_HEAD_L_REG:根据读取到的碎片低优先级队列信息判断,如果碎片长度为零就跳转到DEQUEUE_EMPTY状态,反之就跳转到DEQUEUE_WAIT状态;
DEQUEUE_EMPTY:没有碎片数据,或有相同设备号的正常组帧请求,不用组半空帧,跳转到DEQUEUE_END状态;
DEQUEUE_WAIT:监测第二级状态机,看第二级状态机是否正在组单、广播帧,如果是就跳转到DEQUEUE_EMPTY状态;
DEQUEUE_SUCCEED:可以组半空帧,等待组帧结束就跳转到DEQUEUE_END状态;
DEQUEUE_END:结束,跳转到DEQUEUE_IDLE状态;
第二级流水状态机的状态机说明:
ENCAP_WRAM_IDLE:空闲,如果正在组半空帧且轮询到的模块内部的乒乓fifo的EMAC帧是单、广播帧且需要组帧就保持该状态;如果轮询到的模块内部的乒乓fifo数据有效时碎片数据数据RAM的碎片数据尾部不满128bit就跳转到ENCAP_WRAM_READ_TAIL状态,反之就跳转到ENCAP_WRAM_WRITE_DATA状态;
ENCAP_WRAM_READ_TAIL:从碎片数据ramA口读取队列碎片数据尾部用于拼接,跳转到ENCAP_WRAM_WRITE_DATA状态;
ENCAP_WRAM_WRITE_DATA:读取模块内部轮询到的乒乓fifo数据从从碎片数据ramA口写入到对应的碎片队列中。数据读完时如果没有在组帧或组帧结束就跳转到ENCAP_WRAM_END状态,反之就跳转到ENCAP_WRAM_WAIT状态;
ENCAP_WRAM_WAIT:该状态就是为了组帧时实现第三级流水,如果第三级流水正在组帧,且该模块下一次轮询到的乒乓fifo数据有效且不需要组帧只需要从A口写进碎片数据ram时就跳转到ENCAP_WRAM_END;
ENCAP_WRAM_END:因为fifo数据写入到碎片数据ram时因为存在拼接可能导致写的次数比读的次数多一次,出现这种情况就打一拍后在跳转到ENCAP_WRAM_IDLE状态;
三种组帧逻辑实现的第三级流水说明:
在第二级流水状态机从ENCAP_WRAM_IDLE状态跳出时判断此次轮询到乒乓fifo的EMAC帧是否要组帧以及要组帧的类型,然后在EMAC帧从碎片数据ramA口写入的同时从B口读出需要用于组帧的数据输入到对应的组帧逻辑中进行组帧。
本发明的另一目的在于提供一种计算机设备,所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如下步骤:
当完成上一个EMAC帧的组帧处理后,轮询E口或H口的分组处理模块获取新的EMAC帧;新的EMAC帧携带入队端口号、帧长Lemac、优先级信息;
根据入队端口号和优先级查询组帧模块中的碎片信息,HINOC碎片帧还可以容纳的字节数目Lres;
若Lemac≥Lres,则跳转到向缓存管理模块申请缓存,反之将EMAC帧和长度信息分别搬移到碎片数据ram和碎片信息RAM中,更新Lres为Lres-Lemac,结束本次组帧流程;
对碎片数据ram和EMAC帧输入fifo中的EMAC帧按照HINOC3.0帧格式进行组帧,组帧个数为Nbd,其中13bits序号字段置零;组帧后的HINOC帧搬移到HINOC帧fifo中;未组帧的EMAC帧尾分片搬移到碎片数据ram中,结束本次组帧流程。
本发明的另一目的在于提供一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行如下步骤:
当完成上一个EMAC帧的组帧处理后,轮询E口或H口的分组处理模块获取新的EMAC帧;新的EMAC帧携带入队端口号、帧长Lemac、优先级信息;
根据入队端口号和优先级查询组帧模块中的碎片信息,HINOC碎片帧还可以容纳的字节数目Lres;
若Lemac≥Lres,则跳转到向缓存管理模块申请缓存,反之将EMAC帧和长度信息分别搬移到碎片数据ram和碎片信息RAM,更新Lres为Lres-Lemac,结束本次组帧流程;
对碎片数据ram和EMAC帧输入fifo中的EMAC帧按照HINOC3.0帧格式进行组帧,组帧个数为Nbd,其中13bits序号字段置零;组帧后的HINOC帧搬移到HINOC帧fifo中;未组帧的EMAC帧尾分片搬移到碎片数据ram中,结束本次组帧流程。
本发明的另一目的在于提供一种实施所述HINOC组帧方法的HINOC组帧系统,所述HINOC组帧系统包括:
碎片信息预处理模块,用于实现碎片信息提取、判断、更新和BD申请;
碎片数据处理模块,用于实现碎片数据和新EMAC帧数据的拼接、写入;
组帧数据处理模块,用于组帧数据的读出和组帧。
本发明的另一目的在于提供一种同轴电缆的HINOC网络传输系统,所述同轴电缆的HINOC网络传输系统运行所述HINOC组帧方法。
结合上述的所有技术方案,本发明所具备的优点及积极效果为:本发明使组帧的各个步骤相对独立,可以实现流水,使最终效果可以达到10G速率,图5是FPGA上板时testcenter打10G最短以太网帧的结果图,可以看出支持10G速率。图5是10G工程在V13pFPGA板子在上通过testcenter打10G 64B以太网帧数据流的效果图——可以看出组帧支持10G速率。如图6第一级流水状态机功能仿真图,功能:根据设备号,优先级查询,更新碎片信息RAM,BD判断申请,数据搬移到模块内部乒乓fifo。如图7第二级流水状态机功能仿真图,功能:轮询模块内部fifo,实现模块内部fifo数据到碎片数据ram的拼接、搬移,需要组帧数据的读出,由图可以看出组帧数据的读出往往需要很多个时钟,此时若下一次轮询到的fifo中帧数据不需要组帧时,状态机可以继续跳转,不需要等待用于组帧数据的读出。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图做简单的介绍,显而易见地,下面所描述的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的HINOC组帧方法流程图。
图2是本发明实施例提供的HINOC组帧系统的结构示意图;
图2中:1、碎片信息预处理模块;2、碎片数据处理模块;3、组帧数据处理模块。
图3是本发明实施例提供的HINOC3.0协议中定义的HINOC帧格式示意图。
图4是本发明实施例提供的该组帧模块连接图。
图5是本发明实施例提供的10G工程在V13p FPGA板子在上通过testcenter打10G64B以太网帧数据流的效果图。
图6是本发明实施例提供的第一级流水状态机功能仿真图。
图7是本发明实施例提供的第二级流水状态机功能仿真图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
针对现有技术存在的问题,本发明提供了一种HINOC组帧方法、系统、介质、计算机设备及应用,下面结合附图对本发明作详细的描述。
如图1所示,本发明提供的HINOC组帧方法包括以下步骤:
S101:当完成上一个EMAC帧的组帧处理后,轮询E口或H口的分组处理模块获取新的EMAC帧;新的EMAC帧携带入队端口号、帧长Lemac、优先级信息。
S102:根据入队端口号和优先级查询组帧模块中的碎片信息,即HINOC碎片帧还可以容纳的字节数目Lres。
S103:若Lemac≥Lres,则跳转到S104,反之将EMAC帧和长度信息分别搬移到碎片数据ram和碎片信息RAM中,更新Lres为Lres-Lemac,结束本次组帧流程。
S105:对碎片数据ram和EMAC帧输入fifo中的EMAC帧按照HINOC3.0帧格式进行组帧,组帧个数为Nbd,其中13bits序号字段置零;组帧后的HINOC帧搬移到HINOC帧fifo中;未组帧的EMAC帧尾分片搬移到碎片数据ram中,结束本次组帧流程。
本发明提供的HINOC组帧方法业内的普通技术人员还可以采用其他的步骤实施,图1的本发明提供的HINOC组帧方法仅仅是一个具体实施例而已。
如图2所示,本发明提供的HINOC组帧系统包括:
碎片信息预处理模块1,用于实现碎片信息提取、判断、更新和BD申请。
碎片数据处理模块2,用于实现碎片数据和新EMAC帧数据的拼接、写入。
组帧数据处理模块3,用于组帧数据的读出和组帧。
本发明提供的HINOC组帧系统的组帧控制器主要功能的实现是依靠三个状态机进行碎片信息的提取、判断、更新和帧数据的写入和读出,以及依靠三种组帧逻辑实现数据的组帧。
第一级流水有两个状态机分别处理正常组帧请求和来自出队总线的组帧请求。正常组帧请求是指新进入的以太网帧的入队请求,来自出队总线的组帧请求是指出队轮询到的device_id的各个优先级队列中没有HINOC帧数据则需要判断组帧模块的碎片数据ram的对应队列中是否有碎片,有则把这些碎片组成HINOC帧,避免这写碎片长时间阻塞在组帧模块内部的碎片数据ram中。这两种请求中正常组帧请求的优先级高于来自出队总线的组帧请求。
处理正常组帧请求的状态机是根据组帧前的总线控制模块输入的设备号和优先级从该模块内部的碎片信息RAM对应地址进行碎片信息提取、判断、更新和BD申请,同时把EMAC帧数据从总线fifo中搬移到该模块内部轮询到的乒乓fifo中。
处理来自出队总线的组帧请求的状态机是根据出队总线模块输入得设备号轮询模块内部碎片信息RAM的各个优先级,因为来自出队总线的组帧请求的优先级低于正常组帧请求,所以在状态机的各个状态中需要监测是否有相同的device_id正在组帧等信息。
第二级状态机流水是根据第一级流水得到的信息把对应的乒乓fifo的数据搬移到对应的碎片数据ram中,如果该EMAC帧达到组帧要求,就同时从碎片数据ram的另一个口读出用于组帧的数据拼接后输入到对应的组播、单广播模块进行组帧。在进行组帧的同时,如果下一次轮询到的该内部乒乓fifo的EMAC帧不需要组帧,该状态机就不需要等待,可以继续流水。
三种组帧逻辑就是根据组播和单广播和半空帧不同的组帧规则和组帧数、碎片个数、碎片长度等信息把从碎片数据ram读出的数据组成HINOC帧。
下面结合附图对本发明的技术方案作进一步的描述。
如图3所示,本发明实施例提供的HINOC3.0协议中定义的HINOC帧格式示意图。
如图4所示,本发明实施例提供的该组帧模块连接图。
本发明单、广播和组播以及半空帧的组HINOC帧规则不同:单播和广播HINOC帧分片,组帧尾碎片需要存储在组帧模块里;组播HINOC帧不分片,最后一个组播帧长度不够需补零;半空帧的数据就是单、广播碎片,长度不够需要补零。
协议组帧流程:
1、当完成上一个EMAC帧的组帧处理后,轮询E口或H口的分组处理模块获取新的EMAC帧。新的EMAC帧携带入队端口号、帧长Lemac、优先级信息。
2、根据入队端口号和优先级查询组帧模块中的碎片信息,即HINOC碎片帧还可以容纳的字节数目Lres。
3、若Lemac≥Lres,则跳转到4),反之将EMAC帧和长度信息分别搬移到碎片数据ram和碎片信息RAM中,更新Lres为Lres-Lemac,结束本次组帧流程。
5、对碎片数据ram和EMAC帧输入fifo中的EMAC帧按照HINOC3.0帧格式进行组帧,组帧个数为Nbd,其中13bits序号字段置零;组帧后的HINOC帧搬移到HINOC帧fifo中;未组帧的EMAC帧尾分片搬移到碎片数据ram中,结束本次组帧流程。
处理正常组帧请求的状态机各个状态的说明:
ENCAP_PRE_INIT:初始化碎片信息RAM,初始化完成后跳转到ENCAP_PRE_IDLE状态。
ENCAP_PRE_IDLE:空闲状态,如果发起的组帧请求是单、广播就跳转到ENCAP_PRE_READ_FRAG_INFO状态,如果发起的组帧请求是组播就跳转到ENCAP_PRE_FRAME_MULTI_BD_REQ状态。
ENCAP_PRE_FRAME_MULTI_BD_REQ:组播发起正常组帧请求,跳转到ENCAP_PRE_FRAME_BD_REQ_ACK状态等待BD申请的应答。
ENCAP_PRE_FRAME_BD_REQ_ACK:等待BD申请的应答,如果申请失败则跳转到ENCAP_PRE_END状态;BD申请成功时如果完全把EMAC帧数据从总线fifo中搬移到该模块内部轮询到的乒乓fifo中跳转到ENCAP_PRE_END状态,反之跳转到ENCAP_PRE_PAUSE状态。
ENCAP_PRE_PAUSE:暂停状态,等待EMAC帧数据从总线fifo中搬移到该模块内部轮询到的乒乓fifo完毕且乒乓fifo至少有一个空闲,跳转到ENCAP_PRE_END状态。
ENCAP_PRE_READ_FRAG_INFO:根据设备号和优先级读取碎片信息RAM的碎片信息。
ENCAP_PRE_READ_FRAG_INFO_REG:根据读取到的碎片信息判断是否达到组帧长度,如果达到组帧长度就跳转ENCAP_PRE_FRAME_UNMULTI_BD_REQ状态,反之就跳转到ENCAP_PRE_PAUSE状态。
ENCAP_PRE_FRAME_UNMULTI_BD_REQ:单、广播发起正常组帧请求,跳转到ENCAP_PRE_FRAME_BD_REQ_ACK状态等待BD申请的应答。
ENCAP_PRE_END:跳转到ENCAP_PRE_IDLE状态。
处理来自出队总线组帧请求的状态机各个状态的说明:
因为两个组帧请求的优先级不同,所以该状态机每个状态都需要监测是否发生相同设备号的正常组帧请求,如果发生就不组半空帧。
DEQUEUE_IDLE:空闲,有来自出队总线的组帧请求时,跳转到DEQUEUE_READ_FRAG_HEAD_H状态。
DEQUEUE_READ_FRAG_HEAD_H:根据设备号读取碎片高优先级队列信息,跳转到DEQUEUE_READ_FRAG_HEAD_H_REG状态。
DEQUEUE_READ_FRAG_HEAD_H_REG:根据读取到的碎片高优先级队列信息判断,如果碎片长度为零就跳转到DEQUEUE_READ_FRAG_HEAD_M状态,反之就跳转到DEQUEUE_WAIT状态。
DEQUEUE_READ_FRAG_HEAD_M:根据设备号读取碎片中优先级队列信息,跳转到DEQUEUE_READ_FRAG_HEAD_M_REG状态。
DEQUEUE_READ_FRAG_HEAD_M_REG:根据读取到的碎片中优先级队列信息判断,如果碎片长度为零就跳转到DEQUEUE_READ_FRAG_HEAD_L状态,反之就跳转到DEQUEUE_WAIT状态。
DEQUEUE_READ_FRAG_HEAD_L:根据设备号读取碎片低优先级队列信息,跳转到DEQUEUE_READ_FRAG_HEAD_L_REG状态。
DEQUEUE_READ_FRAG_HEAD_L_REG:根据读取到的碎片低优先级队列信息判断,如果碎片长度为零就跳转到DEQUEUE_EMPTY状态,反之就跳转到DEQUEUE_WAIT状态。
DEQUEUE_EMPTY:没有碎片数据,或有相同设备号的正常组帧请求,不用组半空帧,跳转到DEQUEUE_END状态。
DEQUEUE_WAIT:监测第二级状态机,看第二级状态机是否正在组单、广播帧,如果是就跳转到DEQUEUE_EMPTY状态。
DEQUEUE_SUCCEED:可以组半空帧,等待组帧结束就跳转到DEQUEUE_END状态。
DEQUEUE_END:结束,跳转到DEQUEUE_IDLE状态。
第二级流水状态机的状态机说明:
ENCAP_WRAM_IDLE:空闲,如果正在组半空帧且轮询到的模块内部的乒乓fifo的EMAC帧是单、广播帧且需要组帧就保持该状态;如果轮询到的模块内部的乒乓fifo数据有效时碎片数据ram的碎片数据尾部不满128bit就跳转到ENCAP_WRAM_READ_TAIL状态,反之就跳转到ENCAP_WRAM_WRITE_DATA状态。
ENCAP_WRAM_READ_TAIL:从碎片数据ramA口读取队列碎片数据尾部用于拼接,跳转到ENCAP_WRAM_WRITE_DATA状态。
ENCAP_WRAM_WRITE_DATA:读取模块内部轮询到的乒乓fifo数据从碎片数据ramA口写入到对应的碎片队列中。数据读完时如果没有在组帧或组帧结束就跳转到ENCAP_WRAM_END状态,反之就跳转到ENCAP_WRAM_WAIT状态;
ENCAP_WRAM_WAIT:该状态就是为了组帧时实现第三级流水,如果第三级流水正在组帧,且该模块下一次轮询到的乒乓fifo数据有效且不需要组帧只需要从A口写进碎片数据ram时就跳转到ENCAP_WRAM_END。
ENCAP_WRAM_END:因为fifo数据写入到碎片数据ram时因为存在拼接可能导致写的次数比读的次数多一次,出现这种情况就打一拍后在跳转到ENCAP_WRAM_IDLE状态。
三种组帧逻辑实现的第三级流水说明:
在第二级流水状态机从ENCAP_WRAM_IDLE状态跳出时就可以判断此次轮询到乒乓fifo的EMAC帧是否要组帧以及要组帧的类型,然后就可以在EMAC帧从碎片数据ramA口写入的同时从B口读出需要用于组帧的数据输入到对应的组帧逻辑中进行组帧。
应当注意,本发明的实施方式可以通过硬件、软件或者软件和硬件的结合来实现。硬件部分可以利用专用逻辑来实现;软件部分可以存储在存储器中,由适当的指令执行系统,例如微处理器或者专用设计硬件来执行。本领域的普通技术人员可以理解上述的设备和方法可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在诸如磁盘、CD或DVD-ROM的载体介质、诸如只读存储器(固件)的可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这样的代码。本发明的设备及其模块可以由诸如超大规模集成电路或门阵列、诸如逻辑芯片、晶体管等的半导体、或者诸如现场可编程门阵列、可编程逻辑设备等的可编程硬件设备的硬件电路实现,也可以用由各种类型的处理器执行的软件实现,也可以由上述硬件电路和软件的结合例如固件来实现。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,都应涵盖在本发明的保护范围之内。
Claims (10)
1.一种HINOC组帧方法,其特征在于,所述HINOC组帧方法包括:
当完成上一个EMAC帧的组帧处理后,轮询E口或H口的分组处理模块获取新的EMAC帧;新的EMAC帧携带入队端口号、帧长Lemac、优先级信息;
根据入队端口号和优先级查询组帧模块中的碎片信息,HINOC碎片帧还可以容纳的字节数目Lres;
若Lemac≥Lres,则跳转到向缓存管理模块申请缓存,反之将EMAC帧和长度信息搬移到碎片数据ram和碎片信息RAM中,更新Lres为Lres-Lemac,结束本次组帧流程;
对碎片数据ram和EMAC帧输入FIFO中的EMAC帧按照HINOC3.0帧格式进行组帧,组帧个数为Nbd,其中13bits序号字段置零;组帧后的HINOC帧搬移到HINOC帧fifo中;未组帧的EMAC帧尾分片搬移到碎片数据ram中,结束本次组帧流程。
2.如权利要求1所述的HINOC组帧方法,其特征在于,所述HINOC组帧方法的第一级流水有两个状态机分别处理正常组帧请求和来自出队总线的组帧请求;正常组帧请求是指新进入的EAMC帧的入队请求,来自出队总线的组帧请求是指出队轮询到的device_id的各个优先级队列中没有HINOC帧数据则需要判断组帧模块的碎片数据ram的对应队列中是否有碎片,有则把这些碎片组成HINOC帧,避免这些碎片长时间阻塞在组帧模块内部的碎片数据ram中,两种请求中正常组帧请求的优先级高于来自出队总线的组帧请求;
处理正常组帧请求的状态机是根据组帧前的总线控制模块输入的设备号和优先级从该模块内部的碎片信息RAM对应地址进行碎片信息提取、判断、更新和BD申请,同时把EMAC帧数据从总线fifo中搬移到该模块内部轮询到的乒乓fifo中;
处理来自出队总线的组帧请求的状态机是根据出队总线模块输入得设备号轮询模块内部碎片信息RAM的各个优先级,在状态机的各个状态中需要监测是否有相同的device_id正在组帧信息。
3.如权利要求1所述的HINOC组帧方法,其特征在于,所述HINOC组帧方法的第二级状态机流水是根据第一级流水得到的信息把对应的乒乓fifo的数据搬移到对应的碎片数据ram中,如果该EMAC帧达到组帧要求,同时从碎片数据ram的另一个口读出用于组帧的数据拼接后输入到对应的组播、单广播模块进行组帧;在进行组帧的同时,如果下一次轮询到的该乒乓fifo的EMAC帧不需要组帧,该状态机就不需要等待,可以继续流水。
4.如权利要求1所述的HINOC组帧方法,其特征在于,所述HINOC组帧方法的三种组帧逻辑就是根据组播和单广播和半空帧不同的组帧规则和组帧数、碎片个数、碎片长度信息把从碎片数据ram读出的数据组成HINOC帧。
5.如权利要求1所述的HINOC组帧方法,其特征在于,所述HINOC组帧方法的单播和广播HINOC帧分片,组帧尾碎片需要存储在组帧模块里;组播HINOC帧不分片,最后一个组播帧长度不够需补零;半空帧的数据就是单、广播碎片,长度不够需要补零。
6.如权利要求5所述的HINOC组帧方法,其特征在于,进一步包括:处理正常组帧请求的状态机各个状态的说明:
ENCAP_PRE_INIT:初始化碎片信息RAM,初始化完成后跳转到ENCAP_PRE_IDLE状态;
ENCAP_PRE_IDLE:空闲状态,如果发起的组帧请求是单、广播就跳转到ENCAP_PRE_READ_FRAG_INFO状态,如果发起的组帧请求是组播就跳转到ENCAP_PRE_FRAME_MULTI_BD_REQ状态;
ENCAP_PRE_FRAME_MULTI_BD_REQ:组播发起正常组帧请求,跳转到ENCAP_PRE_FRAME_BD_REQ_ACK状态等待BD申请的应答;
ENCAP_PRE_FRAME_BD_REQ_ACK:等待BD申请的应答,如果申请失败则跳转到ENCAP_PRE_END状态;BD申请成功时如果完全把EMAC帧数据从总线fifo中搬移到该模块内部轮询到的乒乓fifo中跳转到ENCAP_PRE_END状态,反之跳转到ENCAP_PRE_PAUSE状态;
ENCAP_PRE_PAUSE:暂停状态,等待EMAC帧数据从总线fifo中搬移到该模块内部轮询到的乒乓fifo完毕且乒乓fifo至少有一个空闲,跳转到ENCAP_PRE_END状态;
ENCAP_PRE_READ_FRAG_INFO:根据设备号和优先级读取碎片信息RAM的碎片信息;
ENCAP_PRE_READ_FRAG_INFO_REG:根据读取到的碎片信息判断是否达到组帧长度,如果达到组帧长度就跳转ENCAP_PRE_FRAME_UNMULTI_BD_REQ状态,反之就跳转到ENCAP_PRE_PAUSE状态;
ENCAP_PRE_FRAME_UNMULTI_BD_REQ:单、广播发起正常组帧请求,跳转到ENCAP_PRE_FRAME_BD_REQ_ACK状态等待BD申请的应答;
ENCAP_PRE_END:跳转到ENCAP_PRE_IDLE状态;
处理来自出队总线组帧请求的状态机各个状态的说明:
因为两个组帧请求的优先级不同,所以该状态机每个状态都需要监测是否发生相同设备号的正常组帧请求,如果发生就不组半空帧;
DEQUEUE_IDLE:空闲,有来自出队总线的组帧请求时,跳转到DEQUEUE_READ_FRAG_HEAD_H状态;
DEQUEUE_READ_FRAG_HEAD_H:根据设备号读取碎片高优先级队列信息,跳转到DEQUEUE_READ_FRAG_HEAD_H_REG状态;
DEQUEUE_READ_FRAG_HEAD_H_REG:根据读取到的碎片高优先级队列信息判断,如果碎片长度为零就跳转到DEQUEUE_READ_FRAG_HEAD_M状态,反之就跳转到DEQUEUE_WAIT状态;
DEQUEUE_READ_FRAG_HEAD_M:根据设备号读取碎片中优先级队列信息,跳转到DEQUEUE_READ_FRAG_HEAD_M_REG状态;
DEQUEUE_READ_FRAG_HEAD_M_REG:根据读取到的碎片中优先级队列信息判断,如果碎片长度为零就跳转到DEQUEUE_READ_FRAG_HEAD_L状态,反之就跳转到DEQUEUE_WAIT状态;
DEQUEUE_READ_FRAG_HEAD_L:根据设备号读取碎片低优先级队列信息,跳转到DEQUEUE_READ_FRAG_HEAD_L_REG状态;
DEQUEUE_READ_FRAG_HEAD_L_REG:根据读取到的碎片低优先级队列信息判断,如果碎片长度为零就跳转到DEQUEUE_EMPTY状态,反之就跳转到DEQUEUE_WAIT状态;
DEQUEUE_EMPTY:没有碎片数据,或有相同设备号的正常组帧请求,不用组半空帧,跳转到DEQUEUE_END状态;
DEQUEUE_WAIT:监测第二级状态机,看第二级状态机是否正在组单、广播帧,如果是就跳转到DEQUEUE_EMPTY状态;
DEQUEUE_SUCCEED:可以组半空帧,等待组帧结束就跳转到DEQUEUE_END状态;
DEQUEUE_END:结束,跳转到DEQUEUE_IDLE状态;
第二级状态机流水的状态机说明:
ENCAP_WRAM_IDLE:空闲,如果正在组半空帧且轮询到的乒乓fifo的EMAC帧是单、广播帧且需要组帧就保持该状态;如果轮询到的乒乓fifo数据有效时碎片数据ram的碎片数据尾部不满128bit就跳转到ENCAP_WRAM_READ_TAIL状态,反之就跳转到ENCAP_WRAM_WRITE_DATA状态;
ENCAP_WRAM_READ_TAIL:从碎片数据ramA口读取队列碎片数据尾部用于拼接,跳转到ENCAP_WRAM_WRITE_DATA状态;
ENCAP_WRAM_WRITE_DATA:读取模块内部轮询到的乒乓fifo数据从从碎片数据ramA口写入到对应的碎片队列中,数据读完时如果没有在组帧或组帧结束就跳转到ENCAP_WRAM_END状态,反之就跳转到ENCAP_WRAM_WAIT状态;
ENCAP_WRAM_WAIT:该状态就是为了组帧时实现第三级流水,如果第三级流水正在组帧,且该模块下一次轮询到的乒乓fifo数据有效且不需要组帧只需要从A口写进碎片数据ram时就跳转到ENCAP_WRAM_END;
ENCAP_WRAM_END:因为fifo数据写入到碎片数据ram时因为存在拼接可能导致写的次数比读的次数多一次,出现这种情况就打一拍后在跳转到ENCAP_WRAM_IDLE状态;
三种组帧逻辑实现的第三级流水说明:
在第二级流水状态机从ENCAP_WRAM_IDLE状态跳出时判断此次轮询到乒乓fifo的EMAC帧是否要组帧以及要组帧的类型,然后在EMAC帧从碎片数据ramA口写入的同时从B口读出需要用于组帧的数据输入到对应的组帧逻辑中进行组帧。
7.一种计算机设备,其特征在于,所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如下步骤:
当完成上一个EMAC帧的组帧处理后,轮询E口或H口的分组处理模块获取新的EMAC帧;新的EMAC帧携带入队端口号、帧长Lemac、优先级信息;
根据入队端口号和优先级查询组帧模块中的碎片信息,HINOC碎片帧还可以容纳的字节数目Lres;
若Lemac≥Lres,则跳转到向缓存管理模块申请缓存,反之将EMAC帧和长度信息分别搬移到碎片数据ram和碎片信息RAM中,更新Lres为Lres-Lemac,结束本次组帧流程;
对碎片数据ram和EMAC帧输入FIFO中的EMAC帧按照HINOC3.0帧格式进行组帧,组帧个数为Nbd,其中13bits序号字段置零;组帧后的HINOC帧搬移到HINOC帧fifo中;未组帧的EMAC帧尾分片搬移到碎片数据ram中,结束本次组帧流程。
8.一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行如下步骤:
当完成上一个EMAC帧的组帧处理后,轮询E口或H口的分组处理模块获取新的EMAC帧;新的EMAC帧携带入队端口号、帧长Lemac、优先级信息;
根据入队端口号和优先级查询组帧模块中的碎片信息,HINOC碎片帧还可以容纳的字节数目Lres;
若Lemac≥Lres,则跳转到向缓存管理模块申请缓存,反之将EMAC帧和长度信息分别搬移到碎片数据ram和碎片信息RAM中,更新Lres为Lres-Lemac,结束本次组帧流程;
对碎片数据ram和EMAC帧输入FIFO中的EMAC帧按照HINOC3.0帧格式进行组帧,组帧个数为Nbd,其中13bits序号字段置零;组帧后的HINOC帧搬移到HINOC帧fifo中;未组帧的EMAC帧尾分片搬移到碎片数据ram中,结束本次组帧流程。
9.一种实施权利要求1~6任意一项所述HINOC组帧方法的HINOC组帧系统,其特征在于,所述HINOC组帧系统包括:
碎片信息预处理模块,用于实现碎片信息提取、判断、更新和BD申请;
碎片数据处理模块,用于实现碎片数据和新EMAC帧数据的拼接、写入;
组帧数据处理模块,用于组帧数据的读出和组帧。
10.一种同轴电缆的HINOC网络传输系统,其特征在于,所述同轴电缆的HINOC网络传输系统运行权利要求1~6任意一项所述HINOC组帧方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011028386.9A CN112272128B (zh) | 2020-09-26 | 2020-09-26 | Hinoc组帧方法、系统、介质、计算机设备及应用 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011028386.9A CN112272128B (zh) | 2020-09-26 | 2020-09-26 | Hinoc组帧方法、系统、介质、计算机设备及应用 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112272128A CN112272128A (zh) | 2021-01-26 |
CN112272128B true CN112272128B (zh) | 2021-09-07 |
Family
ID=74349253
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011028386.9A Active CN112272128B (zh) | 2020-09-26 | 2020-09-26 | Hinoc组帧方法、系统、介质、计算机设备及应用 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112272128B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113032295B (zh) * | 2021-02-25 | 2022-08-16 | 西安电子科技大学 | 一种数据包二级缓存方法、系统及应用 |
CN113037514B (zh) * | 2021-03-12 | 2022-11-04 | 北京瀚诺半导体科技有限公司 | 一种基于hinoc系统的组播业务转发方法及装置 |
CN113037515B (zh) * | 2021-03-12 | 2022-11-04 | 北京瀚诺半导体科技有限公司 | 基于hinoc系统的mac层组播数据帧的帧格式解析方法及装置 |
CN114401072B (zh) * | 2021-12-12 | 2024-02-06 | 西安电子科技大学 | 一种基于hinoc协议的拆帧重排序队列的动态缓存控制方法及系统 |
CN116909978B (zh) * | 2023-09-13 | 2024-02-02 | 苏州浪潮智能科技有限公司 | 数据组帧方法、装置、电子设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101692655A (zh) * | 2009-10-23 | 2010-04-07 | 烽火通信科技股份有限公司 | 一种数据帧存储管理装置 |
CN106130930A (zh) * | 2016-06-24 | 2016-11-16 | 西安电子科技大学 | 一种数据帧预入队处理的装置及方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103067223A (zh) * | 2012-12-28 | 2013-04-24 | 中国船舶重工集团公司第七二二研究所 | 基于HINOC的p2p测试方法 |
CN111010253B (zh) * | 2019-11-06 | 2021-03-02 | 西安电子科技大学 | 一种基于hinoc协议的himac拆帧系统、方法 |
-
2020
- 2020-09-26 CN CN202011028386.9A patent/CN112272128B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101692655A (zh) * | 2009-10-23 | 2010-04-07 | 烽火通信科技股份有限公司 | 一种数据帧存储管理装置 |
CN106130930A (zh) * | 2016-06-24 | 2016-11-16 | 西安电子科技大学 | 一种数据帧预入队处理的装置及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112272128A (zh) | 2021-01-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112272128B (zh) | Hinoc组帧方法、系统、介质、计算机设备及应用 | |
US7870306B2 (en) | Shared memory message switch and cache | |
US7505410B2 (en) | Method and apparatus to support efficient check-point and role-back operations for flow-controlled queues in network devices | |
US9280297B1 (en) | Transactional memory that supports a put with low priority ring command | |
US9678866B1 (en) | Transactional memory that supports put and get ring commands | |
US20200081850A1 (en) | Unified address space for multiple hardware accelerators using dedicated low latency links | |
US8799564B2 (en) | Efficiently implementing a plurality of finite state machines | |
US20120195208A1 (en) | Programmable multifield parser packet | |
CN112084136A (zh) | 队列缓存管理方法、系统、存储介质、计算机设备及应用 | |
US11163566B2 (en) | Handling an input/output store instruction | |
US9584637B2 (en) | Guaranteed in-order packet delivery | |
US9632973B2 (en) | Supporting RMA API over active message | |
AU2020213829A1 (en) | Handling an input/output store instruction | |
US20120311180A1 (en) | Facilitating routing by selectively aggregating contiguous data units | |
EP3918467A1 (en) | Handling an input/output store instruction | |
US7466716B2 (en) | Reducing latency in a channel adapter by accelerated I/O control block processing | |
CN117215989B (zh) | 一种异构加速设备、系统、方法、装置及存储介质 | |
CN112953860B (zh) | 兼容hinoc2.0和3.0协议的拆帧控制方法 | |
US7284074B2 (en) | Pipelined network processing with FIFO queues | |
CN115904259B (zh) | 非易失性存储器标准NVMe指令的处理方法及相关装置 | |
US7764676B1 (en) | Method and system for processing network information | |
CN114928575B (zh) | 基于fpga的多算法核数据包保序方法及装置 | |
CN115291898B (zh) | 一种多fpga从模式快速烧录方法及装置 | |
US20080080511A1 (en) | Buffer cluster structure and arbiter scheme for multi-port upper-layer network processor | |
CN117614906A (zh) | 用于多线程多代表口发包的方法、计算机设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |