CN111030747A - 一种基于FPGA的SpaceFibre节点IP核 - Google Patents
一种基于FPGA的SpaceFibre节点IP核 Download PDFInfo
- Publication number
- CN111030747A CN111030747A CN201911155324.1A CN201911155324A CN111030747A CN 111030747 A CN111030747 A CN 111030747A CN 201911155324 A CN201911155324 A CN 201911155324A CN 111030747 A CN111030747 A CN 111030747A
- Authority
- CN
- China
- Prior art keywords
- data
- frame
- unit
- subunit
- crc
- 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.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04B—TRANSMISSION
- H04B7/00—Radio transmission systems, i.e. using radiation field
- H04B7/14—Relay systems
- H04B7/15—Active relay systems
- H04B7/185—Space-based or airborne stations; Stations for satellite systems
- H04B7/1851—Systems using a satellite or space-based relay
- H04B7/18515—Transmission equipment in satellites or space-based relays
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04B—TRANSMISSION
- H04B7/00—Radio transmission systems, i.e. using radiation field
- H04B7/14—Relay systems
- H04B7/15—Active relay systems
- H04B7/185—Space-based or airborne stations; Stations for satellite systems
- H04B7/1851—Systems using a satellite or space-based relay
- H04B7/18519—Operations control, administration or maintenance
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Astronomy & Astrophysics (AREA)
- Aviation & Aerospace Engineering (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Detection And Prevention Of Errors In Transmission (AREA)
- Communication Control (AREA)
Abstract
本发明公开了一种基于FPGA的SpaceFibre节点IP核,所述IP核包括:管理层、数据链路层、通道层和物理层;所述管理层,用于将上层的命令配置到各层中的命令寄存器,并供上层读取各层状态寄存器的状态;所述数据链路层,用于当节点处于发送方时,实现各类数据的基于QoS的发送调度、流量控制和基于FDIR机制的错误恢复,当节点处于接收方时,实现各类数据的接收和确认;所述通道层,用于实现与其它节点的通道的连接控制,对数据链路层发送的数据进行编码,对发送给数据链路层的数据进行解码;所述物理层,用于利用物理媒介完成串行数据流的发送和接收,通过参数配置实现发送和接收的串并转换,提供接收时的时钟恢复。
Description
技术领域
本发明涉及航天工程领域,具体涉及用于航天空间任务中各类载荷之间的数据传输和网络互联的IP核,特别涉及一种基于FPGA的SpaceFibre节点IP核。
背景技术
随着航天技术的不断发展,航天任务复杂性的提升,航天数据向大规模、多样性和高速的方向发展。传统的互联总线如1553B总线、CAN总线、RS485总线越来越难以满足现在和未来的航天数据处理的需求。SpaceWire是ESA(欧空局)颁布的总线协议,相对传统的总线,速率有明显的提升,最高可以达到400Mbps。但是由于工程应用中数据量的提升,以及SpaceWire自身的机制问题,如对发送的数据没有确认机制,不能提供可靠的高速传输。ESA又发布新一代的SpaceFibre总线协议,是SpaceWire之后的升级版,支持通过路由组网,支持点对点传输时,串行传输速率最高可达6.25Gbps。同时SpaceFibre提供了虚拟通道机制,可以分类传输不同传输需求的数据;提供了QoS(Quality of Service)机制,能为不同类型的数据提供不同优先级的调度服务;提供了FDIR(Fault Detection,Isolation andRecovery)机制,能够及时地进行错误恢复。
目前对SpaceFibre协议尚处于研究阶段,没有产品化。
发明内容
本发明的目的在于克服上述缺陷,设计了一款便于移植的SpaceFibre Codec IP核节点,该IP实现了四个虚拟通道缓存和单通道的功能,底层可以采用FPGA内的GTX IP核资源,便于在FPGA上移植和实现。该IP核提供了管理接口,可以进行参数配置和状态机读取。该IP核能够作为星载设备的接口,将星载数据发送到SpaceFibre的路由网络中进行路由,通过路由网络实现大规模星载设备的互联。
为了实现上述目的,本发明提出了一种基于FPGA的SpaceFibre节点IP核,该IP核能够作为星载设备的接口进行高速数据传输,或者接入SpaceFibre的路由网络中进行路由,通过路由网络实现大规模星载设备的互联;所述IP核包括:管理层、数据链路层、通道层和物理层;
所述管理层,用于将上层的命令配置到各层中的命令寄存器,并供上层读取各层状态寄存器的状态;
所述数据链路层,用于当节点处于发送方时,实现各类数据的基于QoS的发送调度、流量控制和基于FDIR的错误恢复,当节点处于接收方时,实现各类数据的接收和确认;
所述通道层,用于实现与其它节点的通道的连接控制,对数据链路层发送的数据进行编码,对发送给数据链路层的数据进行解码;
所述物理层,用于利用物理媒介完成串行数据流的发送和接收,通过参数配置实现发送和接收的串并转换,提供接收时的时钟恢复。
作为上述系统的一种改进,所述管理层包括:命令配置模块和状态读取模块;
所述命令配置模块,用于在初始化时,把接收到的上层配置命令包解包后,配置到各个命令寄存器,给各个层提供配置参数;
所述状态读取模块,用于在运行时,把各层的各个状态寄存器的变化组成状态包写入状态缓存,以供上层读取各个状态寄存器的最新状态,及时地获取节点最新的运行状态;
作为上述系统的一种改进,所述发送模块,用于实现各类数据的发送调度、流量控制和错误恢复,对于发送的重要数据广播帧、数据帧和FCT控制字实现数据编号和数据备份,当接收方出现接收错误时,按照发送序列号进行重发恢复;
所述接收模块,用于实现各类数据的接收和确认:对各类帧进行解帧接收,对带CRC的各类帧和控制字分别进行CRC校验;维持一个接收序列号单元,对于带序列号的帧和控制字进行接收序列号确认。
所述链路复位控制模块,用于接收复位命令,通过一个复位控制状态机,实现节点各层的复位控制。
作为上述系统的一种改进,所述发送模块包括:广播帧流量控制单元、提供CRC生成的广播帧组帧单元、输出虚拟通道单元、提供QoS功能的MAC单元、提供CRC生成的数据组帧单元、提供CRC生成的FCT生成单元、提供FDIR功能的错误恢复缓存单元、基于优先级抢占式的数据通道复用单元和发送序列号单元;
所述广播帧流量控制单元,用于在接收到上层的广播信息后,通过流量控制判断是否能够发送广播数据,若可以发送,则把广播信息发送到广播帧组帧单元进行组帧;否则等待广播信用积累,直到获得广播发送权;
所述广播帧组帧单元,用于对广播信息进行组帧;在正常状态下,按照广播帧格式进行组帧,获取发送序列号后,按照生成式g(x)=x8+x2+x+1进行8位的CRC生成,并把生成的8位CRC校验码嵌入广播帧的帧尾等待发送;在重发状态下,对来自错误恢复缓存单元的广播帧按照新的发送序列号进行重新组帧发送;
所述输出虚拟通道单元,用于接收上层数据和实现流量控制;输出虚拟通道单元包括多个输出虚拟通道缓存子单元,接收不同数据源的数据;当数据写够64M(M为可配置整数)个数据字或者包含数据包结尾控制字EOP时,向MAC单元提出发送申请;每个输出虚拟通道缓存子单元维护一个数据信用计数,每收到一个FCT确认时,则可以多发送64M个数据字,信用计数加64M;每发送一个数据字,信用计数减1,信用计数为0时不能发送数据;
所述MAC单元,用于维护各个输出虚拟通道子单元的QoS参数,在收到各个输出虚拟通道缓存子单元的数据发送申请后,根据各个输出虚拟通道缓存子单元的优先等级进行调度,选择不同输出虚拟通道缓存子单元的数据发送到数据组帧单元;
所述数据帧组帧单元,用于对数据信息进行组帧;在正常状态下,对来自MAC单元的数据按照数据帧格式进行组帧,获取本帧的发送序列号后,按照生成式g(x)=x16+x12+x2+1进行16位的并行CRC生成,并把生成的16位CRC嵌入到数据帧的帧尾等待发送;在重发状态下,对来自错误恢复缓存单元的数据帧按照新的发送序列号进行重新组帧发送;
所述FCT生成单元,用于生成FCT控制字;在正常状态下,当收到接收模块的FCT申请后进行FCT控制字的组合,获取当前发送序列号后,按照生成式g(x)=x8+x2+x+1进行8位的CRC生成,并把生成的8位CRC校验码嵌入FCT控制字等待发送;在重发状态下,对来自错误恢复缓存单元的FCT控制字按照新的发送序列号进行重新组帧发送;
所述错误恢复缓存单元,用于缓存已发送的广播帧、数据帧和FCT控制字,用于出现错误时进行错误恢复;正常发送数据时,处于正常状态;当收到ACK确认控制字时,进入确认状态;当收到NACK错误确认控制字时,进入错误确认状态;当错误恢复缓存单元内数据满时,生成FULL控制字,用于告知接收方其缓存已满,应尽快发送ACK确认以删除备份的缓存;
所述数据通道复用单元,用于在重发控制字RETRY、广播帧、ACK/NACK控制字、FCT控制字、FULL控制字、数据帧、空闲帧发送时,按照所述从高到底的优先级顺序进行抢占式插入发送,即高优先级的数据可以插入到低优先级的数据发送过程中抢先发送,在没有以上数据发送时,空闲帧子单元会发送空闲帧;
所述发送序列号单元,用于维护一个发送序列号,对重要的数据进行编号备份,以便进行错误恢复时重新发送;每当发送一帧广播帧、数据帧和FCT控制字,发送序列号加1,发送序列号变化范围从0~127;当收到NACK需要进行重发,发送序列号需要被重置为NACK所带的接收方已确认的序列号。
作为上述系统的一种改进,所述MAC单元实现SpaceFibre的QoS调度功能,当MAC单元收到各个输出虚拟通道的发数申请时,查询时间片调度表,忽略本时间片内不支持被调度的发数申请;对于本时间片内被支持调度的且带宽信用高于最低带宽信用限制的输出虚拟通道发数申请,按照各个输出虚拟通道的优先等级进行比较,优先等级最高的获得通道发送权;发送完一帧数据后,对各个VC的带宽信用和优先等级进行更新,并进行到下一轮发送权的仲裁;若没有数据发送,则按照一定的时间间隔对各个输出虚拟通道的带宽信用和优先等级进行更新;
每个输出虚拟通道被分配不同的QoS参数:优先权Priority(i),带宽信用百分比Bandwidth_Percent(i),时间片调度表Time_Slot(i),以及优先等级Precedence(i)。i为各个虚拟通道号,i=0,1,2,3。优先等级Precedence(i)是优先权和带宽信用的综合反映,其中计算关系如下所示:
Precedence(i)=Priority_Precence(i)+Bandwidth_Credit(i)
Priority_Precence(i)=2*B*(Q-1-Prioriry(i))
式中:
Available_Bandwidth(n)为可用带宽是自从上一次带宽信用更新后,从所有虚拟通道发送到链路上的所有的数据和控制字的数目;
Used_Bandwidth(n)为已用带宽是自从上一次带宽信用更新后,从某一输出虚拟通道已经发送出去的数据帧的字数;除了发送数据的输出虚拟通道,其余不发数的输出虚拟通道的已用带宽都为0;
Q为VC所支持的优先权的总级别数;
B为带宽信用限制,是一个常数,当带宽信用小于-0.9B时,不允许发数;
Priority_Precedence(i)为优先权Priority(i)换算的优先等级。
作为上述系统的一种改进,所述错误恢复缓存单元包括:主控逻辑子单元、广播帧恢复缓存子单元、FCT恢复缓存子单元、数据帧恢复缓存子单元和FULL控制字生成子单元;
所述主控逻辑子单元,用于进行错误恢复的主逻辑控制:在没有接收到确认控制字的时候,把发送的广播帧、FCT控制字和数据帧分别备份到广播帧恢复缓存子单元、FCT恢复缓存子单元、数据帧恢复缓存子单元;当接收到ACK后,主控状态机跳转到ACK处理状态,同时把ACK发送到广播帧恢复缓存子单元、FCT恢复缓存子单元和数据帧恢复缓存子单元,以便各个子单元进行已确认备份数据的删除,删除结束后返回到正常接数状态;当接收到NACK后,主控状态机跳转到NACK处理状态,同时把NACK发送到广播帧恢复缓存子单元、FCT恢复缓存子单元和数据帧恢复缓存子单元,逻辑控制先进行广播帧恢复缓存子单元的重发,然后进行FCT恢复缓存子单元的重发,最后进行数据帧恢复缓存子单元的重发,三类数据重发结束后则返回到正常接数状态;
所述广播帧恢复缓存子单元,用于对广播帧进行缓存备份和错误重发;当主控逻辑子单元处于正常发数状态时,进行正常广播帧备份;当主控逻辑子单元接收到ACK后,删除广播帧恢复缓存中小于或者等于ACK中已确认接收的序列号的广播帧;当主控逻辑子单元接收到NACK后,删除广播帧恢复缓存中小于或者等于NACK中已确认接收的序列号的广播帧,并且重发未确认的广播帧,广播帧重发结束后产生一个BC_resend_done信号;
所述FCT恢复缓存子单元,用于对FCT控制字进行缓存备份和错误重发;当主控逻辑子单元处于正常发数状态时,进行正常FCT控制字备份;当主控逻辑子单元接收到ACK后,删除FCT恢复缓存中小于或者等于ACK中已确认接收的序列号的FCT控制字;当主控逻辑子单元接收到NACK后,删除FCT恢复缓存中小于或者等于NACK中已确认接收序列号的FCT,并且当BC_resend_done被置位后,开始重发未确认的FCT控制字,FCT重发结束后产生一个FCT_resend_done信号;
所述数据帧恢复缓存子单元,用于对数据帧进行缓存备份和错误重发;当主控逻辑子单元处于正常发数状态时,把数据帧写入数据恢复缓存;当主控逻辑子单元接收到ACK后,删除数据帧恢复缓存中小于或者等于ACK中已确认接收的序列号的数据帧;当主控逻辑子单元接收到NACK后,删除数据帧恢复缓存中小于或者等于NACK中已确认接收的序列号的数据帧,并且当FCT_resend_done被置位后,开始重发未确认的数据帧,数据帧重发结束后产生一个Data_resend_done信号;
所述FULL控制字生成子单元,用于当广播帧恢复缓存子单元、FCT恢复缓存子单元、数据帧恢复缓存子单元中任意一个的数据恢复缓存为满的时候,向数据通道复用单元提出FULL控制字发送申请,并把发送序列号和FULL字符按照FULL控制字字的格式进行CRC生成,组成FULL控制字后发送,以告知接收方其备份数据已满,应尽快发送确认。
作为上述系统的一种改进,所述数据通道复用单元包括:主控逻辑子单元、空闲帧生成子单元和数据帧加扰子单元;
所述主控逻辑子单元,用于对组好的广播帧、数据帧、FCT控制字按照优先级和申请顺序依次发送到通道层,优先级高的数据可以插入到优先级低的数据发送过程进行抢占式发送;
所述空闲帧生成子单元,用于在发送模块没有有效数据帧或者控制字可以发送时,发送由伪随机序列组成的空闲帧;
空闲帧的帧头后跟随的是并行的32位伪随机序列,伪随机序列采用的生成式为G(x)=x16+x5+x4+x3+1,采用并行的伪随机序列生成方式;每个clk输出一个伪随机数的同时,由此推算出一个由各个移位寄存器初始值构成的伪随机数输出表达式;经过32个clk后,依次推算出32个伪随机数的输出关系表达式;这样在一个clk内,利用32个伪随机序列的输出关系表达式,得到等同于32个clk后依次输出的32位串行的伪随机序列的结果;
所述数据帧加扰子单元,用于对数据帧内的数据进行加扰,采用伪随机序列进行加扰,伪随机序列生成式为G(x)=x16+x5+x4+x3+1。
作为上述系统的一种改进,所述接收模块包括数据解复用单元、数据字区分单元、数据帧解帧单元、虚拟通道解复用单元、输入虚拟通道单元、广播帧解帧单元、广播接收单元、错误恢复控制单元和接收序列号单元;
所述数据解复用单元,用于对来自通道层的数据进行帧流和控制字的区分,对FCT控制字、FULL控制字、ACK控制字、NACK控制字进行CRC校验和序列号确认,同时把各类帧发送到数据字区分单元;若FCT和FULL均接收正确,则向错误恢复控制单元提出ACK申请;否则提出NACK申请;若ACK和NACK均接收正确,则生成控制信号给到错误恢复控制单元以进行控制;否则置位错误状态;
所述数据字区分单元,用于对来自数据解复用单元的帧流进行区分,区分为:广播帧、数据帧和空闲帧;
所述数据帧解帧单元,用于对数据帧进行CRC校验和数据帧的接收序列号确认,CRC和接收序列号均正确的话则数据帧被正确接收,则接收序列号RX_SEQ加1,同时向错误恢复控制单元提出确认申请ACK_req;若接收错误,则向错误恢复控制单元提出错误恢复申请NACK_req,以进行发送方的数据重发;
所述输入虚拟通道单元,用于缓存接收数据帧解帧后的数据和实现流量控制;包括多个输入虚拟通道缓存子单元,分别缓存来自发送方对应的输出虚拟通道缓存子单元的数据;当输入虚拟通道缓存子单元复位后或者输入虚拟通道缓存子单元中的数据被读出64M个数据字时,向发送方的发送模块的FCT生成单元发出FCT控制字请求;本地的发送模块每向发送方发送一个FCT控制字,表示对应的输入虚拟通道缓存单元空出了64M个数据字的空间,此时发送方会根据接收的FCT计算可以发送的数据量;当多个输入虚拟通道缓存子单元的申请出现竞争时,采用基于优先级的轮询仲裁机制对FCT发送申请进行仲裁;
所述虚拟通道解复用单元,用于对接收正确的数据帧内的数据进行虚拟通道的区分,将输出虚拟通道发送来的数据分别缓存到输入虚拟通道单元对应的输入虚拟通道缓存子单元中去;
所述广播帧解帧单元,用于对广播帧进行CRC校验和广播帧的接收序列号确认,若CRC和接收序列号均正确的话则广播帧被正确接收,接收序列号RX_SEQ加1,同时向错误恢复控制单元提出确认申请ACK_req;若接收错误,则向错误恢复控制单元提出错误恢复申请NACK_req,以进行发送方的数据重发;
所述广播接收单元,用于对解帧后的广播信息进行确认,若是本广播通道的信息,则向上层提出广播请求,未响应则等待并对广播信息置位延迟标志;否则就将广播信息广播出去;
所述错误恢复控制单元,用于处理ACK和NACK申请以及实现接收序列号的极性控制。收到来自数据链路层接收模块的数据解复用单元、数据字区分单元、数据帧解帧单元、广播帧解帧单元中的ACK和NACK申请后,把当前接收序列号和ACK/NACK字符按照ACK/NACK控制字的格式生成CRC并组成ACK/NACK控制字,通过本地的发送模块的数据复用单元进行发送;通过接收错误状态机实现接收序列号的正负极性控制。
作为上述系统的一种改进,所述数据解复用单元包括主控逻辑子单元、FCT校验子单元、ACK校验子单元、NACK校验子单元和FULL校验子单元;
所述主控逻辑子单元,用于通过各类帧界定符和控制字字符对数据流中的控制字和帧进行初步区分,并把各个控制字送到各校验子单元;
所述FCT校验子单元,用于对接收到的FCT控制字进行CRC校验和接收序列号确认,若接收正确,则接收序列号RX_SEQ加1,同时向错误恢复控制单元提出确认申请ACK_req;若接收错误,则向错误恢复控制单元提出错误恢复申请NACK_req,以进行错误恢复控制;
所述ACK校验子单元,用于对ACK进行CRC和接收序列号确认,若存在接收错误则置位对应的错误寄存器,并上报管理层的状态读取模块;否则发送到发送方的接收模块的错误恢复缓存单元以进行备份数据重发;
所述NACK校验子单元,用于对NACK进行CRC和接收序列号确认,若存在接收错误则置位对应的错误寄存器,并上报管理层的状态读取模块;否则给到发送方的接收模块的错误恢复缓存单元以进行备份数据重发;
所述FULL校验子单元,用于对FULL进行CRC和接收序列号确认,若存在CRC错误则置位对应的错误寄存器,上报管理层的状态读取模块,并丢弃FULL;若存在序列号接收错误则说明数据乱序,可能出现丢包,则向错误恢复控制模块提出NACK申请,以进行数据重发;若接收正确则向本地的发送模块申请ACK发送,以对发送方的错误恢复缓存单元中的数据进行确认。
作为上述系统的一种改进,所述数据字区分单元包括主控逻辑子单元和空闲帧处理子单元;
所述主控逻辑子单元,用于对来自数据解复用单元的帧流进行区分,将数据帧送到数据帧解帧单元进行解帧和CRC校验,将广播帧送到广播帧解帧单元进行解帧和CRC校验,将空闲帧送到空闲帧处理子单元;
所述空闲帧处理子单元,用于对空闲帧进行解帧和CRC校验;若空闲帧的CRC校验错误,则置位对应的错误寄存器;若空闲帧的序列号接收错误,则说明数据乱序,可能出现丢包,则向错误恢复控制单元提出NACK申请,以进行发送方的数据重发。
作为上述系统的一种改进,所述采用基于优先级的轮询仲裁机制对FCT发送申请进行仲裁,具体包括:
根据发送方各个输出虚拟通道号对应的优先级进行轮询仲裁,按照优先级次序,首先发送优先级高的输入虚拟通道产生的FCT申请,然后判断次优先级的输入虚拟通道产生的FCT申请,直至所有的FCT申请均已发送并得到反馈确认FCT_ack。
作为上述系统的一种改进,所述错误恢复控制单元包括:ACK生成子单元、NACK生成子单元和接收错误状态机子单元;
所述ACK生成子单元,用于当收到ACK申请时,根据接收序列号生成ACK控制字,并通过发送模块的数据复用单元发送出去;
所述NACK生成子单元,用于当收到NACK申请时,根据接收序列号生成NACK控制字,并通过发送模块的数据复用单元发送出去;
所述接收错误状态机子单元,用于接收到ACK/NACK确认后,通过状态机运转对接收序列号的极性进行控制。
作为上述系统的一种改进,所述数据帧、广播帧和各类控制字中均需生成CRC生成和校验;具体包括:
对于数据帧的CRC生成计算包括帧头、数据和帧尾的高16位,因此需要进行基于16位CRC的32位并行数据的计算,以及在帧尾控制字时对于EDF和SEQ_NUM控制字进行基于16位CRC的16位并行数据的计算;在接收时CRC的校验范围包括全帧,对数据帧的数据字进行基于16位CRC的32位并行数据的计算,CRC为0则说明校验接收正确;
对于广播帧的CRC生成计算包括帧头、数据和帧尾的高24位,因此需要进行基于8位CRC的32位并行数据的计算,以及在帧尾控制字时对于EDF和SEQ_NUM控制字进行基于8位CRC的24位并行数据的计算;在接收时CRC的校验范围包括全帧,对数据帧的数据字进行基于8位CRC的32位并行数据的计算,CRC为0则说明校验接收正确;
对于空闲帧头和控制字的CRC生成计算包括数据字的高24位,因此需要进行基于8位CRC的24位并行数据的计算。在接收时CRC的校验范围包括整个控制字,对空闲帧头和控制字进行基于8位CRC的32位并行数据的计算,CRC为0则说明校验接收正确;
故共有四种CRC计算需求:CRC16-Data32、CRC16-Data16、CRC8-Data32、CRC8-Data24;利用超前计算,得到各个需求下的并行CRC计算公式,在一个clk内即可获得所需的并行CRC值;
混合校验机制是指数据帧和广播帧在CRC的生成阶段,由于帧格式中CRC需嵌入帧尾而造成的CRC计算方法不同,具体计算过程如下:
当数据帧组帧时,时钟clk每打一拍,帧头和帧内数据依次进行数据帧CRC生成,采用CRC16-Data32计算,因此使能CRC16-Data32计算逻辑;当帧尾输入时采用CRC16-Data16计算,因此禁用CRC16-Data32计算逻辑,同时使能CRC16-Data16计算逻辑;整个数据帧的每个clk都会生成对应的CRC,计算完帧尾的CRC即为整个数据帧的CRC,即可嵌入帧尾发送;
当广播帧组帧时,时钟clk每打一拍,帧头和帧内数据依次进行CRC生成,采用CRC8-Data32计算,因此使能CRC8-Data32计算逻辑;当帧尾输入时采用CRC8-Data24计算,因此禁用CRC8-Data32计算逻辑,同时使能CRC8-Data24计算逻辑;整个广播帧的每个clk都会生成对应的CRC,计算完帧尾的CRC即为整个广播帧的CRC,即可嵌入帧尾发送。
作为上述系统的一种改进,所述通道层包括通道初始化模块、通道控制字插入模块、通道控制字检测模块以及GTX IP核;
所述通道初始化模块,用于进行收发双方通道的链接控制,通过通道初始化控制字INIT1、INIT2、INIT3的三次握手确认后进入ACTIVE状态,通道有效后,可以进行数据链路层的数据收发;
所述通道控制字插入模块,用于根据初始化状态机控制命令产生控制字:INIT1、INIT2和INIT3等,当没有控制字发送时,发送IDLE控制字;
所述通道控制字检测模块,用于对通道层的控制字进行检测,并给出对应控制字的指示信号以维持初始化状态机的运转;并且对接收的错误数据字进行统计,以及把过滤出来的数据链路层的数据字发送到数据链路层;
所述GTX IP核,用于通过配置相关参数,实现了通道层的8B/10B编解码、字符同步和字同步和速率调整。
本发明的优势在于:
1、本发明根据SpaceFibre协议设计了一款支持四虚拟通道的SpaceFibre节点IP核,可以支持四路数据源发送接收,支持单通道数据传输;
2、本发明采用Xilinx官方GTX IP核进行高速数据收发,可以灵活地移植到支持GTX的FPGA内,实现高速串行收发;
3、本发明提供灵活的管理层接口,能够进行实时地命令配置和状态读取,对IP核实现灵活地管理。
附图说明
图1为本发明的系统的结构图;
图2为虚拟通道的流量控制机制示意图;
图3为QoS调度的流程图;
图4为错误恢复缓存结构示意图;
图5为虚拟通道的错误恢复机制示意图;
图6为错误缓存接收确认处理流程图;
图7为基于优先级的轮询仲裁申请流程图;
图8为CRC16校验原理;
图9为CRC8校验原理;
图10为伪随机序列生成原理图。
具体实施方式
下面结合附图对本发明的技术方案进行详细的说明。
本发明设计了一款便于移植的SpaceFibre Codec IP核节点,该IP实现了四个虚拟通道缓存和单通道的功能,底层可以采用FPGA内的GTX IP核资源,便于在FPGA上移植和实现。该IP核提供了管理接口,可以通过管理接口进行参数配置和状态机读取。该IP核能够作为星载设备的接口,将星载数据发送到SpaceFibre的路由网络中进行路由,通过路由网络实现大规模星载设备的互联。
如图1所示,SpaceFibre协议分为管理层、网络层、数据链路层、多通道层、通道层、物理层五层,本发明是一款单通道的节点,故此涉及了管理层、数据链路层、通道层和物理层。IP的设计主要分为以下几个大的功能模块:管理层、数据链路层、通道层和物理层。
1、管理层
管理层主要包括命令配置模块、状态读取模块,分别进行命令的配置和状态的读取。
命令配置模块,用于在初始化时,把接收到的上层配置命令包解包后,配置到各个命令寄存器,给各个层提供配置参数。
状态读取模块,用于在运行时,把各层的各个状态寄存器的变化组成状态包写入状态缓存,以供上层读取各个状态寄存器的状态,及时地获取节点最新的运行状态;
2、数据链路层
数据链路层为SpaceFibre的核心功能层,包括:发送模块、接收模块和链路复位控制模块。
(1)发送模块
所述发送模块,用于当节点处于发送方时,实现各类数据的发送和控制:对广播通道和输出虚拟通道的数据进行流量控制,实现基于CRC的组帧发送,对输出虚拟通道的数据实现QoS(Quality of Service)的调度。对于发送的重要数据广播帧、数据帧、FCT控制字实现数据编号和数据备份,当接收错误时,可以按照发送序列号进行重发恢复,实现了FDIR(Fault Detection,Isolation and Recovery)的功能。在没有数据发送时,发送空闲帧;
发送模块主要包括:广播帧流量控制单元、提供CRC功能的广播帧组帧单元、提供流量控制的输出虚拟通道单元、提供QoS功能的MAC(Media Access Control)单元、提供CRC功能的数据组帧单元、提供CRC功能的FCT生成单元、提供FDIR功能的错误恢复缓存单元、基于优先级抢占式的数据通道复用单元和发送序列号单元。
广播帧流量控制单元,接收到上层的广播信息后,通过流量控制判断是否可发送广播数据,若可以发送则把广播信息送到广播帧组帧单元进行组帧;否则等待广播信用积累,直到获得广播发送权。
广播帧组帧单元,用于对广播信息进行组帧。在正常状态下,按照广播帧格式进行组帧,获取发送序列号后,按照生成式g(x)=x8+x2+x+1进行8位的CRC生成,并把生成的8位CRC校验码嵌入广播帧的帧尾等待发送;在重发状态下,对来自错误恢复缓存模块的广播帧恢复缓存单元中的广播帧按照新的发送序列号进行重新组帧发送;
输出虚拟通道单元,用于接收上层设备写入的数据和实现流量控制;输出虚拟通道单元包括多个输出虚拟通道缓存子单元,每个输出虚拟通道缓存子单元接收不同数据源的数据;当数据写够64个数据字或者包含数据包结尾控制字EOP时,向MAC单元提出发送申请;当接收模块的FCT控制字接收正确后,会给发送模块的输出虚拟通道缓存子单元一个FCT确认信号;每个输出虚拟通道缓存子单元维护一个数据信用计数,每收到一个FCT确认时,多发送64个数据字,信用计数加64;每发送一个数据字,信用计数减1,信用计数为0时不能发送数据,以此实现了流量控制机制,如图2所示。
MAC单元收到各个输出虚拟通道缓存子单元的数据发送申请后,根据各个输出虚拟通道缓存子单元的优先等级进行调度,依次选择不同的输出虚拟通道缓存子单元的数据发送到数据组帧单元,进行数据帧的组帧。
MAC单元实现了SpaceFibre的基于QoS调度功能,每个VC被分配不同的QoS参数:优先权Priority(i),带宽信用百分比Bandwidth_Percent(i),时间片调度表Time_Slot(i),以及优先等级Precedence(i)。i为各个虚拟通道号,i=0,1,2,3。优先等级Precedence(i)是优先权和带宽信用的综合反映,其中计算关系如下所示:
Precedence(i)=Priority_Precence(i)+Bandwidth_Credit(i)
Priority_Precence(i)=2*B*(Q-1-Prioriry(i))
式中:
Available_Bandwidth(n)为可用带宽是自从上一次带宽信用更新后,从所有虚拟通道发送到链路上的所有的数据和控制字的数目;
Used_Bandwidth(n)为已用带宽是自从上一次带宽信用更新后,从某一虚拟通道VC已经发送出去的数据帧的字数。除了发送数据的VC,其余不发数的VC的已用带宽都为0;
Q为VC所支持的优先权的总级别数;
B为带宽信用限制,是一个常数,当带宽信用小于-0.9B时,不允许发数;
Priority_Precedence(i)为优先权Priority(i)换算的优先等级;
QoS功能实现方式如下:当MAC模块收到各个VC的发数申请时,查询时间片调度表Time_Slot(i),本时间片内不支持被调度的发数申请被忽略。对于本时间片内被支持调度的且带宽信用高于最低带宽信用限制的VC发数申请,按照各个VC的Precedence(i)进行比较,Precedence(i)高的获得通道发送权。发送完一帧数据后,对各个VC的带宽信用Bandwidth_Credit(i)和优先等级Precedence(i)进行更新,并进行到下一轮发送权的仲裁。若没有数据发送,则按照一定的时间间隔对各个VC的带宽信用Bandwidth_Credit(i)和优先等级Precedence(i)进行更新,一般选取为发送一个满帧的时间。MAC调度控制流程如图3所示。
数据帧组帧单元,用于对数据信息进行组帧。在正常状态下,对来经MAC单元调度的数据按照数据帧格式进行组帧,获取本帧的发送序列号后,按照生成式g(x)=x16+x12+x2+1进行16位的并行CRC生成,并把生成的16位CRC嵌入到数据帧的帧尾等待发送;在重发状态下,对来自错误恢复缓存单元的数据帧按照新的发送序列号进行重新组帧发送。
FCT生成单元,用于生成FCT控制字。在正常状态下,收到接收模块的FCT申请后进行FCT控制字的组合,获取当前发送序列号后,按照生成式g(x)=x8+x2+x+1进行8位的CRC生成,并把生成的8位CRC校验码嵌入FCT控制字等待发送;在重发状态下,对来自错误恢复缓存单元的FCT控制字按照新的发送序列号进行重新组帧发送。
错误恢复缓存单元,用于缓存已发送的的广播帧、数据帧和FCT控制字,以便接收错误时进行错误恢复。当接收方接收正确时,会返回一个带已确认接收序列号RX_SEQ的ACK控制字,则发送方把已经确认的数据从错误恢复缓存单元中删除,留出缓存空间以接收备份新的数据;当接收方接收错误时,会返回一个带已确认接收序列号RX_SEQ的NACK控制字,则发送方错误恢复缓存单元发出重发申请并发送RETRY控制字,把已确认序列号的数据进行删除,并把大于RX_SEQ未确认的数据按照新的序列号进行重新发送。根据优先级BC>FCT>Data的优先次序,先重发完未确认的广播帧,再重发未确认的FCT控制字,最后重发未确认的数据帧。当错误恢复缓存单元没有存储空间时,发出满申请以发送FULL控制字,告知接收方尽快返回确认。
错误恢复缓存单元是用来进行已发数据的备份和错误恢复,以实现FDIR机制的错误恢复功能。协议中指出在发送到通道层前,数据段、FCT控制字和广播信息都会临时地存储在错误恢复缓存中,由序列号进行索引。之前的一版协议草案中错误恢复缓存单元设置在输出虚拟通道缓存单元之后,数据组帧单元之前。但是数据在写入输出虚拟通道时产生了一定的延时,再写入错误恢复缓存单元又会产生一定的延时,然后才能从缓存中取数进行组帧操作。
故此,本发明将错误恢复缓存操作与数据组帧操作并行处理,即边组帧边发送,同时边向错误恢复缓存中写入备份,索引由帧内的序列号进行索引。这样可以简化数据从输出虚拟通道缓存单元写入错误恢复缓存单元之后,才能经过MAC单元调度到数据组帧单元的过程。数据可以从输出虚拟通道缓存单元直接经MAC单元调度到数据组帧单元,在组帧的同时,边发向通道层,边备份在错误恢复缓存。在错误恢复缓存单元中,为了便于按照优先级重发恢复,将广播帧、FCT控制字、数据帧分开存放在各自的恢复缓存中,具体方案实现如图4所示。
错误恢复缓存单元包括:主控逻辑子单元、广播帧恢复缓存子单元、FCT恢复缓存子单元、数据帧错误恢复缓存子单元和FULL控制字生成子单元,正常发送数据时,处于正常状态;当收到ACK确认控制字时,进入确认状态;当收到NACK错误确认控制字时,进入错误确认状态。
当接收方接收正确时,发送方会收到ACK确认控制字时,接着要对缓存中已经发送过的数据按照已确认的序列号进行删除,即删除错误恢复缓存中小于或者等于ACK所携带的接收方已确认序列号的数据。其中广播帧、数据帧的恢复缓存下设一个处理FIFO,当恢复缓存中有数时,通过状态机控制自动地把一帧数读入处理FIFO,收到ACK/NACK后判断序列号,直接清除FIFO。由于FCT控制字是一个32位的数据字,采用FWFT模式的FIFO可以直接检测到FCT错误恢复缓存中第一个FCT控制字,所以无需设置处理FIFO,收到控制字后判断序列号,直接读出即相当于删除。删除数据的时候,并不影响组帧单元继续发数和错误恢复缓存单元继续备份。
当接收方接收错误时,发送方会收到携带接收方已确认序列号的NACK控制字,接着进行和收到ACK后一样的数据删除工作,并且把发送方的发送序列号TX_SEQ重新置为NACK中携带的接收方已确认序列号NACK_SEQ。然后进入NACK错误恢复阶段,若此时正在发送数据帧,正常发送完再进入重发处理模式。错误恢复缓存单元首先重发广播帧,广播组帧单元检测到状态变化后,先读出广播帧恢复缓存子单元中的广播帧,然后使用新的发送序列号TX_SEQ产生CRC校验和,重新组帧发送并备份,广播帧重发结束后产生一个BC_resend_done信号,给到FCT恢复缓存子单元进行重发;FCT恢复缓存子单元接收到BC_resend_done指示信号后,依次读出FCT恢复缓存子单元的FCT控制字,使用新的发送序列号生成新的FCT控制字,重发结束后给出一个FCT_resend_done信号,给到数据帧错误恢复缓存子单元;数据帧错误恢复缓存子单元接收到FCT_resend_done指示信号后,依次读出数据帧,使用新的发送序列号重新组帧,重发结束后给出一个Data_resend_done信号。如图5所示。
当错误恢复缓存单元的主控逻辑子单元检测到广播帧恢复缓存子单元、FCT恢复缓存子单元和数据帧错误恢复缓存子单元的BC_resend_done、FCT_resend_done和Data_resend_done指示信号同时有效时,主控状态从错误确认状态进入正常状态。数据帧组帧单元检测到错误恢复缓存单元进入到正常状态后,就可以继续接收来自MAC单元调度的来自输出虚拟通道中的数据。错误恢复缓存单元确认的操作流程如图6所示。
数据通道复用单元主要包括主控逻辑子单元、空闲帧生成子单元和数据帧加扰子单元。主控逻辑子单元对组好的广播帧、数据帧、FCT控制字以及其他控制字按照优先级和申请顺序依次发送到通道层,优先级高的数据可以插入到优先级低的数据发送过程进行抢占式发送。当上层没有有效数据可以发送时,空闲帧生成子单元发送由伪随机序列组成的空闲帧。当管理层的命令配置对数据帧进行加扰时,数据帧加扰子单元对数据帧内的数据进行伪随机序列的加扰,伪随机序列的生成原理同空闲帧。
在数据通道复用单元中,如果没有有效的数据发送则发送空闲帧,空闲帧的生成由空闲帧生成子单元实现。空闲帧的帧头后跟随的是并行的32位伪随机序列,伪随机序列采用的生成式为G(x)=x16+x5+x4+x3+1,伪随机序列采用移位寄存器依次输出,伪随机序列是指移位寄存器输出的值,协议中给出了串行的移位寄存器原理图,原理同图10。但是串行伪随机序列生成速率慢,特别是在生成空闲帧(ILDE)时,每个clk都要输出一个32位的伪随机序列,串行的伪随机序列不能满足工程需求,因此采用并行的伪随机序列生成方式。采用超前运算思想,每个clk输出一个伪随机数的同时,可以推算出一个由各个移位寄存器初始值构成的伪随机数输出表达式。经过32个clk后,依次推算出32个伪随机数的输出关系表达式。这样就可以在一个clk内,利用32个伪随机序列的输出关系表达式,得到等同于32个clk后依次输出的32位串行的伪随机序列的结果。
数据帧加扰子单元用于对数据帧内的数据进行加扰,加扰采用伪随机序列进行加扰,伪随机序列生成式为G(x)=x16+x5+x4+x3+1,加扰序列生成原理同空闲帧。
发送序列号单元用于维护一个发送序列号,对重要的数据进行编号备份,以便进行错误恢复时重新发送。每当发送一帧广播帧、数据帧和FCT控制字,发送序列号加1,发送序列号变化范围从0~127。当收到NACK需要进行重发,发送序列号需要被重置为NACK所带的接收方已确认的序列号。
(2)接收模块
接收模块主要包括数据解复用单元、数据字区分单元、数据帧解帧单元、输入虚拟通道缓存单元、虚拟通道VC解复用单元、广播帧解帧单元、广播接收单元、错误恢复控制单元和接收序列号单元。接收模块,用于在节点处于接收方时,实现各类数据的接收和确认:对各类帧进行解帧接收,对带CRC的各类帧和控制字分别进行CRC校验;维持一个接收序列号单元,对于带序列号的帧和控制字进行接收序列号确认。正确接收的数据帧的数据信息缓存到输入虚拟通道缓存单元,正确接收的广播帧的广播信息广播出去,正确接收的控制字用于控制。若正确接收广播帧、数据帧、FCT控制字和FULL控制字,会向错误恢复控制单元提出ACK申请,发送给发送方的错误恢复缓存单元以进行备份数据删除;若错误接收广播帧、数据帧和FCT控制字或FULL控制字和空闲帧的序列号错误,会向错误恢复控制单元提出NACK申请,发送给发送方的错误恢复缓存单元以进行备份数据的重发;
数据解复用单元包括主控逻辑子单元、FCT校验子单元、ACK校验子单元、NACK校验子单元和FULL校验子单元。主控逻辑子单元主要通过各类帧界定符和控制字字符对数据流中的控制字和帧进行初步区分,并把各个控制字送到各个控制字校验模块。FCT校验子单元对接收到的FCT控制字进行CRC校验和接收序列号确认,若接收正确,则接收序列号RX_SEQ加1,同时向错误恢复控制单元提出确认申请ACK_req;若接收错误,则向错误恢复控制单元提出错误恢复申请NACK_req,以进行错误恢复控制。ACK校验子单元对ACK进行CRC校验和接收序列号确认,若存在接收错误则置位对应的错误寄存器,并上报管理层的状态读取模块;否则给到发送模块的错误恢复缓存单元以进行备份数据接收确认。NACK校验子单元对NACK进行CRC校验和接收序列号确认,若存在接收错误则置位对应的错误寄存器,并上报管理层的状态读取模块;否则给到发送方的错误恢复缓存单元以进行备份数据重发。FULL校验子单元对FULL进行CRC和接收序列号确认,若存在CRC错误则置位对应的错误寄存器,上报管理层的状态读取模块,并丢弃FULL;若存在序列号接收错误则说明数据乱序,可能出现丢包,则向错误恢复控制单元提出NACK申请,以进行数据重发;若接收正确则向发送模块申请ACK发送,以对发送方的错误恢复缓存单元中的数据尽快进行确认。
数据字区分单元包括主控逻辑子单元和空闲帧接收子单元。主控逻辑子单元主要对来自数据解复用单元的帧流进行区分,数据帧送到数据帧解帧单元进行解帧和CRC校验,广播帧送到广播帧解帧单元进行解帧和CRC校验,空闲帧送到空闲帧处理子单元进行解帧和CRC校验。空闲帧接收子单元主要完成对空闲帧的校验,若空闲帧的CRC校验错误,则置位对应的错误寄存器;若空闲帧的序列号接收错误,则说明数据乱序,可能出现丢包,则向错误恢复控制单元提出NACK申请,以进行发送方的数据重发。
数据帧解帧单元主要对数据帧进行CRC校验和数据帧的接收序列号确认,CRC和接收序列号均正确的话则数据帧被正确接收,则接收序列号RX_SEQ加1,同时向错误恢复控制单元提出确认申请ACK_req;若接收错误,则向错误恢复控制单元提出错误恢复申请NACK_req,以进行发送方的数据重发。
虚拟通道解复用单元,对接收正确的数据帧内的数据进行虚拟通道的区分,将输出虚拟通道发送来的数据分别缓存到输入虚拟通道单元对应的输入虚拟通道缓存子单元中去。
输入虚拟通道单元,用于缓存来自虚拟通道解复用单元的数据和实现流量控制。输入虚拟通道单元包括多个输入虚拟通道缓存子单元,分别用来缓存来自发送方对应的输出虚拟通道缓存子单元的数据。当接收模块的输入虚拟通道复位后或者输入虚拟通道中的数据被读出64*M个数据字时(M是可配置的正整数),输入虚拟通道会向发送模块的FCT生成单元发出FCT控制字请求。接收方的发送模块每向发送方发送一个FCT控制字,就代表接收方空出了64M个数据字的空间,此时发送方可以继续进行发数。SpaceFibre以此机制实现了流量控制。在有多个虚拟通道缓存子单元的情况下,在复位后或者多个输入虚拟通道同时有空闲空间时,多个输入虚拟通道缓存子单元会发出FCT发送申请,此时采用基于优先级的轮询仲裁机制对FCT发送申请进行仲裁。根据发送方各个输出虚拟通道缓存子单元对应的优先级进行轮询仲裁,按照优先级次序,首先发送优先级高的输入虚拟通道缓存子单元产生的FCT申请,然后判断次优先级的输入虚拟通道缓存子单元产生的FCT申请,直至所有的FCT申请均已发送并得到反馈确认FCT_ack。假设优先级按照R0、R1、R2…Ri依次递减,依次对应输入虚拟通道VC0、VC1、VC2…VCi,各个输入虚拟通道的申请FCT_req0、FCT_req1、FCT_req2…FCT_reqi,FCT申请向量FCT_req={FCT_req0,FCT_req1,FCT_req2,…,FCT_reqi};具体处理流程如图7所示。
广播帧解帧单元主要对广播帧进行CRC校验和广播帧的接收序列号确认,若CRC和接收序列号均正确的话则广播帧被正确接收,接收序列号RX_SEQ加1,同时向错误恢复控制单元提出确认申请ACK_req;若接收错误,则向错误恢复控制单元提出错误恢复申请NACK_req,以进行发送方的数据重发。
广播接收单元对解帧后的广播信息进行确认,若是本广播通道的信息,则向上层提出广播请求,未响应则等待并对广播信息置位延迟标志;否则就将广播信息广播出去。
错误恢复控制单元用于处理ACK或NACK的申请以及实现接收序列号的极性控制。当收到来自数据链路层接收模块的数据解复用单元、数据字区分单元、数据帧解帧单元、广播帧解帧单元中的ACK或NACK申请后,把当前接收序列号和ACK/NACK字符按照ACK/NACK控制字的格式生成CRC并组成ACK/NACK控制字,通过本地的发送模块的数据复用单元进行发送;通过接收错误状态机实现接收序列号的正负极性控制。
错误恢复控制单元包括:ACK生成子单元、NACK生成子单元和接收错误状态机子单元。当收到ACK申请时,ACK生成子单元根据接收序列号生成ACK控制字,并通过发送模块的数据复用单元发送出去,以便发送方中的错误恢复缓存单元进行已接收数据的确认和删除;当收到NACK申请时,NACK生成子单元根据接收序列号生成NACK控制字,并通过发送模块的数据复用单元发送出去,以便发送方中的错误恢复缓存单元进行已接收数据的确认和删除,同时对未确认数据进行数据重发。接收错误状态机子单元通过接收错误状态机来控制接收序列号的极性。
在SpaceFibre协议中,数据帧、广播帧和各类控制字中均需生成CRC校验和,因此在数据链路层的发送模块的数据帧组帧单元、广播帧组帧单元、FCT生成单元、数据复用单元中的空闲帧生成子单元、错误恢复缓存单元中的FULL控制字生成子单元均对CRC进行校验。
在各类数据接收时,需要对各类数据进行CRC校验,以确定数据传输过程中是否出现错误,因此在数据链路层的接收模块的数据解复用单元、数据帧解帧单元、广播帧解帧单元、数据字区分单元中的空闲帧接收子单元中对CRC进行校验。
协议中给出了CRC校验的原理图,如图8和图9所示,16位的CRC生成多项式为:g(x)=x16+x12+x5+1,8位的CRC生成多项式为:g(x)=x8+x2+x+1。CRC利用异或门内接的移位寄存器来实现,但是串行编码速度慢,不符合实际应用需求。若采用时钟倍频,32位宽的数据倍频32倍,导致频率过高,数据容易出错。故采用并行的CRC校验方式。
因此利用超前运算的思想,每个clk依次输入一位串行数据后,利用移位寄存器的初始值和依次输入的第i位数据推算出一个clk后移位寄存器各位的表达式。i个clk后,i位串行数据依次输入完毕,并得到i个clk后移位寄存器各位的表达式。因此,最后利用i个clk后移位寄存器各位的表达式,可以在一个clk内求解出等同于i个clk后的移位寄存器的值,也就是需要求的并行CRC值。
在SpaceFibre中,需要进行CRC校验的各类帧和控制字结构如下表所示:
表1:数据帧结构
表2:广播帧结构
表3:空闲帧头结构
COMMA | SIF | SEQ_NUM | CRC |
表4:控制字结构
COMMA | TYPE | SEQ_NUM | CRC |
在发送模块中,对于数据帧的CRC生成计算包括帧头、数据和帧尾的高16位,因此需要进行基于16位CRC的32位并行数据的计算,以及在帧尾控制字时对于EDF和SEQ_NUM控制字进行基于16位CRC的16位并行数据的计算。在接收时CRC的校验范围包括全帧,对数据帧的数据字进行基于16位CRC的32位并行数据的计算,CRC为0则说明接收正确。
对于广播帧的CRC生成计算包括帧头、数据和帧尾的高24位,因此需要进行基于8位CRC的32位并行数据的计算,以及在帧尾控制字时对于EDF和SEQ_NUM控制字进行基于8位CRC的24位并行数据的计算。在接收时CRC的校验范围包括全帧,对数据帧的数据字进行基于8位CRC的32位并行数据的计算,CRC为0则说明接收正确。
对于空闲帧头和控制字的CRC生成计算包括数据字的高24位,因此需要进行基于8位CRC的24位并行数据的计算。在接收时CRC的校验范围包括整个控制字,对空闲帧头和控制字进行基于8位CRC的32位并行数据的计算,CRC为0则说明接收正确。
故共有四种CRC计算需求,CRC16-Data32、CRC16-Data16、CRC8-Data32、CRC8-Data24。利用超前计算,可以得到各个需求下的并行CRC计算公式,在一个clk内即可获得所需的并行CRC值。
混合校验机制是指数据帧和广播帧在CRC的生成阶段,由于帧格式中CRC需嵌入帧尾而造成的CRC计算方法不同,具体计算过程如下:
当数据帧组帧时,时钟clk每打一拍,帧头和帧内数据依次输入数据帧CRC生成模块,采用CRC16-Data32计算,因此使能CRC16-Data32计算逻辑;当帧尾输入时采用CRC16-Data16计算,因此禁用CRC16-Data32计算逻辑,同时使能CRC16-Data16计算逻辑。整个数据帧每个clk都会生成对应的CRC,计算完帧尾的CRC即为整个数据帧的CRC,即可嵌入帧尾发送。由于边发送数据,边进行CRC计算,计算过程连续无延迟,数据处理效率高。
当广播帧组帧时,时钟clk每打一拍,帧头和帧内数据依次输入广播帧CRC生成模块,采用CRC8-Data32计算,因此使能CRC8-Data32计算逻辑;当帧尾输入时采用CRC8-Data24计算,因此禁用CRC8-Data32计算逻辑,同时使能CRC8-Data24计算逻辑。整个广播帧每个clk都会生成对应的CRC,计算完帧尾的CRC即为整个广播帧的CRC,即可嵌入帧尾发送。由于边发送数据,边进行CRC计算,计算过程连续无延迟,数据处理效率高。
3、通道层
通道层包含一个初始化状态机,通过发送控制字来控制链路的连接。通过8B/10B编码把数据编码成字符发送,接收方收到字符进行8B/10B解码;
通道层主要包括通道初始化模块、通道控制字插入模块、通道控制字检测模块以及GTX模块的部分功能。
通道初始化模块主要进行收发双方通道的链接控制,主要由通道初始化状态机完成。通过通道初始化控制字INIT1、INIT2、INIT3的三次握手确认后进入ACTIVE状态,通道有效后,可以进行数据链路层的数据收发。
通道控制字插入模块主要根据初始化状态机控制命令产生控制字,如INIT1、INIT2、INIT3等,当没有控制字发送时,发送IDLE控制字。
通道控制字检测模块主要对通道层的控制字进行检测,并给出对应控制字的指示信号以维持初始化状态机的运转。并且对接收的错误数据字进行统计,以及把过滤出来的数据链路层的数据字发送到数据链路层。
GTX IP核可以通过配置参数实现了通道层的8B/10B编解码、字符同步和字同步、速率调整等功能。
4、物理层
物理层主要采用GTX IP核和物理传输媒介(如光纤),实现数据流的串行发送和接收。通过配置GTX IP核线速率、参考时钟等相关参数,完成了串并转换和时钟恢复等功能,实现了串行数据流的发送和接收。
本发明的创新点在于:
1、设计了并行的CRC混合计算机制,能够快速地计算出各类数据的CRC;
2、设计了基于QoS的优先级调度功能;
3、设计了一种边发边备份的错误恢复存储结构,发送低延迟,错误易恢复;
4、设计了空闲帧中并行的伪随机码产生机制;
5、设计了输入虚拟通道的FCT申请的轮询仲裁机制。
最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。
Claims (14)
1.一种基于FPGA的SpaceFibre节点IP核,该IP核能够作为星载设备的接口进行高速数据传输,或者接入SpaceFibre的路由网络中进行路由,通过路由网络实现大规模星载设备的互联;其特征在于,所述IP核包括:管理层、数据链路层、通道层和物理层;
所述管理层,用于将上层的命令配置到各层中的命令寄存器,并供上层读取各层状态寄存器的状态;
所述数据链路层,用于当节点处于发送方时,实现各类数据的基于QoS的发送调度、流量控制和基于FDIR的错误恢复,当节点处于接收方时,实现各类数据的接收和确认;
所述通道层,用于实现与其它节点的通道的连接控制,对数据链路层发送的数据进行编码,对发送给数据链路层的数据进行解码;
所述物理层,用于利用物理媒介完成串行数据流的发送和接收,通过参数配置实现发送和接收的串并转换,提供接收时的时钟恢复。
2.根据权利要求1所述的基于FPGA的SpaceFibre节点IP核,其特征在于,所述管理层包括:命令配置模块和状态读取模块;
所述命令配置模块,用于在初始化时,把接收到的上层配置命令包解包后,配置到各个命令寄存器,给各个层提供配置参数;
所述状态读取模块,用于在运行时,把各层的各个状态寄存器的变化组成状态包写入状态缓存,以供上层读取各个状态寄存器的最新状态,及时地获取节点最新的运行状态。
3.根据权利要求2所述的基于FPGA的SpaceFibre节点IP核,其特征在于,所述数据链路层包括:发送模块、接收模块和链路复位控制模块;
所述发送模块,用于实现各类数据的发送调度、流量控制和错误恢复,对于发送的重要数据广播帧、数据帧和FCT控制字实现数据编号和数据备份,当接收方出现接收错误时,按照发送序列号进行重发恢复;
所述接收模块,用于实现各类数据的接收和确认:对各类帧进行解帧接收,对带CRC的各类帧和控制字分别进行CRC校验;维持一个接收序列号单元,对于带序列号的帧和控制字进行接收序列号确认;
所述链路复位控制模块,用于接收复位命令,通过一个复位控制状态机,实现节点各层的复位控制。
4.根据权利要求3所述的基于FPGA的SpaceFibre节点IP核,其特征在于,所述发送模块包括:广播帧流量控制单元、提供CRC生成的广播帧组帧单元、输出虚拟通道单元、提供QoS功能的MAC单元、提供CRC生成的数据组帧单元、提供CRC生成的FCT生成单元、提供FDIR功能的错误恢复缓存单元、基于优先级抢占式的数据通道复用单元和发送序列号单元;
所述广播帧流量控制单元,用于在接收到上层的广播信息后,通过流量控制判断是否能够发送广播数据,若可以发送,则把广播信息发送到广播帧组帧单元进行组帧;否则等待广播信用积累,直到获得广播发送权;
所述广播帧组帧单元,用于对广播信息进行组帧;在正常状态下,按照广播帧格式进行组帧,获取发送序列号后,按照生成式g(x)=x8+x2+x+1进行8位的CRC生成,并把生成的8位CRC校验码嵌入广播帧的帧尾等待发送;在重发状态下,对来自错误恢复缓存单元的广播帧按照新的发送序列号进行重新组帧发送;
所述输出虚拟通道单元,用于接收上层数据和实现流量控制;输出虚拟通道单元包括多个输出虚拟通道缓存子单元,接收不同数据源的数据;当数据写够64M(M为可配置整数)个数据字或者包含数据包结尾控制字EOP时,向MAC单元提出发送申请;每个输出虚拟通道缓存子单元维护一个数据信用计数,每收到一个FCT确认时,则可以多发送64M个数据字,信用计数加64M;每发送一个数据字,信用计数减1,信用计数为0时不能发送数据;
所述MAC单元,用于维护各个输出虚拟通道子单元的QoS参数,在收到各个输出虚拟通道缓存子单元的数据发送申请后,根据各个输出虚拟通道缓存子单元的优先等级进行调度,选择不同输出虚拟通道缓存子单元的数据发送到数据组帧单元;
所述数据帧组帧单元,用于对数据信息进行组帧;在正常状态下,对来自MAC单元的数据按照数据帧格式进行组帧,获取本帧的发送序列号后,按照生成式g(x)=x16+x12+x2+1进行16位的并行CRC生成,并把生成的16位CRC嵌入到数据帧的帧尾等待发送;在重发状态下,对来自错误恢复缓存单元的数据帧按照新的发送序列号进行重新组帧发送;
所述FCT生成单元,用于生成FCT控制字;在正常状态下,当收到接收模块的FCT申请后进行FCT控制字的组合,获取当前发送序列号后,按照生成式g(x)=x8+x2+x+1进行8位的CRC生成,并把生成的8位CRC校验码嵌入FCT控制字等待发送;在重发状态下,对来自错误恢复缓存单元的FCT控制字按照新的发送序列号进行重新组帧发送;
所述错误恢复缓存单元,用于缓存已发送的广播帧、数据帧和FCT控制字,用于出现错误时进行错误恢复;正常发送数据时,处于正常状态;当收到ACK确认控制字时,进入确认状态;当收到NACK错误确认控制字时,进入错误确认状态;当错误恢复缓存单元内数据满时,生成FULL控制字,用于告知接收方其缓存已满,应尽快发送ACK确认以删除备份的缓存;
所述数据通道复用单元,用于在重发控制字RETRY、广播帧、ACK/NACK控制字、FCT控制字、FULL控制字、数据帧、空闲帧发送时,按照所述从高到底的优先级顺序进行抢占式插入发送,即高优先级的数据可以插入到低优先级的数据发送过程中抢先发送,在没有以上数据发送时,空闲帧子单元会发送空闲帧;
所述发送序列号单元,用于维护一个发送序列号,对重要的数据进行编号备份,以便进行错误恢复时重新发送;每当发送一帧广播帧、数据帧和FCT控制字,发送序列号加1,发送序列号变化范围从0~127;当收到NACK需要进行重发,发送序列号需要被重置为NACK所带的接收方已确认的序列号。
5.根据权利要求4所述的基于FPGA的SpaceFibre节点IP核,其特征在于,所述MAC单元实现SpaceFibre的QoS调度功能,当MAC单元收到各个输出虚拟通道的发数申请时,查询时间片调度表,忽略本时间片内不支持被调度的发数申请;对于本时间片内被支持调度的且带宽信用高于最低带宽信用限制的输出虚拟通道发数申请,按照各个输出虚拟通道的优先等级进行比较,优先等级最高的获得通道发送权;发送完一帧数据后,对各个VC的带宽信用和优先等级进行更新,并进行到下一轮发送权的仲裁;若没有数据发送,则按照一定的时间间隔对各个输出虚拟通道的带宽信用和优先等级进行更新;
每个输出虚拟通道被分配不同的QoS参数:优先权Priority(i),带宽信用百分比Bandwidth_Percent(i),时间片调度表Time_Slot(i),以及优先等级Precedence(i);i为各个虚拟通道号,i=0,1,2,3;优先等级Precedence(i)是优先权和带宽信用的综合反映,其中计算关系如下所示:
Precedence(i)=Priority_Precence(i)+Bandwidth_Credit(i)
Priority_Precence(i)=2*B*(Q-1-Priority(i))
式中:
Available_Bandwidth(n)为可用带宽是自从上一次带宽信用更新后,从所有虚拟通道发送到链路上的所有的数据和控制字的数目;
Used_Bandwidth(n)为已用带宽是自从上一次带宽信用更新后,从某一输出虚拟通道已经发送出去的数据帧的字数;除了发送数据的输出虚拟通道,其余不发数的输出虚拟通道的已用带宽都为0;
Q为VC所支持的优先权的总级别数;
B为带宽信用限制,是一个常数,当带宽信用小于-0.9B时,不允许发数;
Priority_Precedence(i)为优先权Priority(i)换算的优先等级。
6.根据权利要求4所述的基于FPGA的SpaceFibre节点IP核,其特征在于,所述错误恢复缓存单元包括:主控逻辑子单元、广播帧恢复缓存子单元、FCT恢复缓存子单元、数据帧恢复缓存子单元和FULL控制字生成子单元;
所述主控逻辑子单元,用于进行错误恢复的主逻辑控制:在没有接收到确认控制字的时候,把发送的广播帧、FCT控制字和数据帧分别备份到广播帧恢复缓存子单元、FCT恢复缓存子单元、数据帧恢复缓存子单元;当接收到ACK后,主控状态机跳转到ACK处理状态,同时把ACK发送到广播帧恢复缓存子单元、FCT恢复缓存子单元和数据帧恢复缓存子单元,以便各个子单元进行已确认备份数据的删除,删除结束后返回到正常接数状态;当接收到NACK后,主控状态机跳转到NACK处理状态,同时把NACK发送到广播帧恢复缓存子单元、FCT恢复缓存子单元和数据帧恢复缓存子单元,逻辑控制先进行广播帧恢复缓存子单元的重发,然后进行FCT恢复缓存子单元的重发,最后进行数据帧恢复缓存子单元的重发,三类数据重发结束后则返回到正常接数状态;
所述广播帧恢复缓存子单元,用于对广播帧进行缓存备份和错误重发;当主控逻辑子单元处于正常发数状态时,进行正常广播帧备份;当主控逻辑子单元接收到ACK后,删除广播帧恢复缓存中小于或者等于ACK中已确认接收的序列号的广播帧;当主控逻辑子单元接收到NACK后,删除广播帧恢复缓存中小于或者等于NACK中已确认接收的序列号的广播帧,并且重发未确认的广播帧,广播帧重发结束后产生一个BC_resend_done信号;
所述FCT恢复缓存子单元,用于对FCT控制字进行缓存备份和错误重发;当主控逻辑子单元处于正常发数状态时,进行正常FCT控制字备份;当主控逻辑子单元接收到ACK后,删除FCT恢复缓存中小于或者等于ACK中已确认接收的序列号的FCT控制字;当主控逻辑子单元接收到NACK后,删除FCT恢复缓存中小于或者等于NACK中已确认接收序列号的FCT,并且当BC_resend_done被置位后,开始重发未确认的FCT控制字,FCT重发结束后产生一个FCT_resend_done信号;
所述数据帧恢复缓存子单元,用于对数据帧进行缓存备份和错误重发;当主控逻辑子单元处于正常发数状态时,把数据帧写入数据恢复缓存;当主控逻辑子单元接收到ACK后,删除数据帧恢复缓存中小于或者等于ACK中已确认接收的序列号的数据帧;当主控逻辑子单元接收到NACK后,删除数据帧恢复缓存中小于或者等于NACK中已确认接收的序列号的数据帧,并且当FCT_resend_done被置位后,开始重发未确认的数据帧,数据帧重发结束后产生一个Data_resend_done信号;
所述FULL控制字生成子单元,用于当广播帧恢复缓存子单元、FCT恢复缓存子单元、数据帧恢复缓存子单元中任意一个的数据恢复缓存为满的时候,向数据通道复用单元提出FULL控制字发送申请,并把发送序列号和FULL字符按照FULL控制字字的格式进行CRC生成,组成FULL控制字后发送,以告知接收方其备份数据已满,应尽快发送确认。
7.根据权利要求6所述的基于FPGA的SpaceFibre节点IP核,其特征在于,所述数据通道复用单元包括:主控逻辑子单元、空闲帧生成子单元和数据帧加扰子单元;
所述主控逻辑子单元,用于对组好的广播帧、数据帧、FCT控制字按照优先级和申请顺序依次发送到通道层,优先级高的数据可以插入到优先级低的数据发送过程进行抢占式发送;
所述空闲帧生成子单元,用于在发送模块没有有效数据帧或者控制字可以发送时,发送由伪随机序列组成的空闲帧;
空闲帧的帧头后跟随的是并行的32位伪随机序列,伪随机序列采用的生成式为G(x)=x16+x5+x4+x3+1,采用并行的伪随机序列生成方式;每个clk输出一个伪随机数的同时,由此推算出一个由各个移位寄存器初始值构成的伪随机数输出表达式;经过32个clk后,依次推算出32个伪随机数的输出关系表达式;这样在一个clk内,利用32个伪随机序列的输出关系表达式,得到等同于32个clk后依次输出的32位串行的伪随机序列的结果;
所述数据帧加扰子单元,用于对数据帧内的数据进行加扰,采用伪随机序列进行加扰,伪随机序列生成式为G(x)=x16+x5+x4+x3+1。
8.根据权利要求7所述的基于FPGA的SpaceFibre节点IP核,其特征在于,所述接收模块包括数据解复用单元、数据字区分单元、数据帧解帧单元、虚拟通道解复用单元、输入虚拟通道单元、广播帧解帧单元、广播接收单元、错误恢复控制单元和接收序列号单元;
所述数据解复用单元,用于对来自通道层的数据进行帧流和控制字的区分,对FCT控制字、FULL控制字、ACK控制字、NACK控制字进行CRC校验和序列号确认,同时把各类帧发送到数据字区分单元;若FCT和FULL均接收正确,则向错误恢复控制单元提出ACK申请;否则提出NACK申请;若ACK和NACK均接收正确,则生成控制信号给到错误恢复控制单元以进行控制;否则置位错误状态;
所述数据字区分单元,用于对来自数据解复用单元的帧流进行区分,区分为:广播帧、数据帧和空闲帧;
所述数据帧解帧单元,用于对数据帧进行CRC校验和数据帧的接收序列号确认,CRC和接收序列号均正确的话则数据帧被正确接收,则接收序列号RX_SEQ加1,同时向错误恢复控制单元提出确认申请ACK_req;若接收错误,则向错误恢复控制单元提出错误恢复申请NACK_req,以进行发送方的数据重发;
所述输入虚拟通道单元,用于缓存接收数据帧解帧后的数据和实现流量控制;包括多个输入虚拟通道缓存子单元,分别缓存来自发送方对应的输出虚拟通道缓存子单元的数据;当输入虚拟通道缓存子单元复位后或者输入虚拟通道缓存子单元中的数据被读出64M个数据字时,向发送方的发送模块的FCT生成单元发出FCT控制字请求;本地的发送模块每向发送方发送一个FCT控制字,表示对应的输入虚拟通道缓存单元空出了64M个数据字的空间,此时发送方会根据接收的FCT计算可以发送的数据量;当多个输入虚拟通道缓存子单元的申请出现竞争时,采用基于优先级的轮询仲裁机制对FCT发送申请进行仲裁;
所述虚拟通道解复用单元,用于对接收正确的数据帧内的数据进行虚拟通道的区分,将输出虚拟通道发送来的数据分别缓存到输入虚拟通道单元对应的输入虚拟通道缓存子单元中去;
所述广播帧解帧单元,用于对广播帧进行CRC校验和广播帧的接收序列号确认,若CRC和接收序列号均正确的话则广播帧被正确接收,接收序列号RX_SEQ加1,同时向错误恢复控制单元提出确认申请ACK_req;若接收错误,则向错误恢复控制单元提出错误恢复申请NACK_req,以进行发送方的数据重发;
所述广播接收单元,用于对解帧后的广播信息进行确认,若是本广播通道的信息,则向上层提出广播请求,未响应则等待并对广播信息置位延迟标志;否则就将广播信息广播出去;
所述错误恢复控制单元,用于处理ACK和NACK申请以及实现接收序列号的极性控制;收到来自数据链路层接收模块的数据解复用单元、数据字区分单元、数据帧解帧单元、广播帧解帧单元中的ACK和NACK申请后,把当前接收序列号和ACK/NACK字符按照ACK/NACK控制字的格式生成CRC并组成ACK/NACK控制字,通过本地的发送模块的数据复用单元进行发送;通过接收错误状态机实现接收序列号的正负极性控制。
9.根据权利要求8所述的基于FPGA的SpaceFibre节点IP核,其特征在于,所述数据解复用单元包括主控逻辑子单元、FCT校验子单元、ACK校验子单元、NACK校验子单元和FULL校验子单元;
所述主控逻辑子单元,用于通过各类帧界定符和控制字字符对数据流中的控制字和帧进行初步区分,并把各个控制字送到各校验子单元;
所述FCT校验子单元,用于对接收到的FCT控制字进行CRC校验和接收序列号确认,若接收正确,则接收序列号RX_SEQ加1,同时向错误恢复控制单元提出确认申请ACK_req;若接收错误,则向错误恢复控制单元提出错误恢复申请NACK_req,以进行错误恢复控制;
所述ACK校验子单元,用于对ACK进行CRC和接收序列号确认,若存在接收错误则置位对应的错误寄存器,并上报管理层的状态读取模块;否则发送到发送方的接收模块的错误恢复缓存单元以进行备份数据重发;
所述NACK校验子单元,用于对NACK进行CRC和接收序列号确认,若存在接收错误则置位对应的错误寄存器,并上报管理层的状态读取模块;否则给到发送方的接收模块的错误恢复缓存单元以进行备份数据重发;
所述FULL校验子单元,用于对FULL进行CRC和接收序列号确认,若存在CRC错误则置位对应的错误寄存器,上报管理层的状态读取模块,并丢弃FULL;若存在序列号接收错误则说明数据乱序,可能出现丢包,则向错误恢复控制模块提出NACK申请,以进行数据重发;若接收正确则向本地的发送模块申请ACK发送,以对发送方的错误恢复缓存单元中的数据进行确认。
10.根据权利要求8所述的基于FPGA的SpaceFibre节点IP核,其特征在于,所述数据字区分单元包括主控逻辑子单元和空闲帧处理子单元;
所述主控逻辑子单元,用于对来自数据解复用单元的帧流进行区分,将数据帧送到数据帧解帧单元进行解帧和CRC校验,将广播帧送到广播帧解帧单元进行解帧和CRC校验,将空闲帧送到空闲帧处理子单元;
所述空闲帧处理子单元,用于对空闲帧进行解帧和CRC校验;若空闲帧的CRC校验错误,则置位对应的错误寄存器;若空闲帧的序列号接收错误,则说明数据乱序,可能出现丢包,则向错误恢复控制单元提出NACK申请,以进行发送方的数据重发。
11.根据权利要求8所述的基于FPGA的SpaceFibre节点IP核,其特征在于,所述采用基于优先级的轮询仲裁机制对FCT发送申请进行仲裁,具体包括:
根据发送方各个输出虚拟通道号对应的优先级进行轮询仲裁,按照优先级次序,首先发送优先级高的输入虚拟通道产生的FCT申请,然后判断次优先级的输入虚拟通道产生的FCT申请,直至所有的FCT申请均已发送并得到反馈确认FCT_ack。
12.根据权利要求11所述的基于FPGA的SpaceFibre节点IP核,其特征在于,所述错误恢复控制单元包括:ACK生成子单元、NACK生成子单元和接收错误状态机子单元;
所述ACK生成子单元,用于当收到ACK申请时,根据接收序列号生成ACK控制字,并通过发送模块的数据复用单元发送出去;
所述NACK生成子单元,用于当收到NACK申请时,根据接收序列号生成NACK控制字,并通过发送模块的数据复用单元发送出去;
所述接收错误状态机子单元,用于接收到ACK/NACK确认后,通过状态机运转对接收序列号的极性进行控制。
13.根据权利要求12所述的基于FPGA的SpaceFibre节点IP核,其特征在于,所述数据帧、广播帧和各类控制字中均需生成CRC生成和校验;具体包括:
对于数据帧的CRC生成计算包括帧头、数据和帧尾的高16位,因此需要进行基于16位CRC的32位并行数据的计算,以及在帧尾控制字时对于EDF和SEQ_NUM控制字进行基于16位CRC的16位并行数据的计算;在接收时CRC的校验范围包括全帧,对数据帧的数据字进行基于16位CRC的32位并行数据的计算,CRC为0则说明校验接收正确;
对于广播帧的CRC生成计算包括帧头、数据和帧尾的高24位,因此需要进行基于8位CRC的32位并行数据的计算,以及在帧尾控制字时对于EDF和SEQ_NUM控制字进行基于8位CRC的24位并行数据的计算;在接收时CRC的校验范围包括全帧,对数据帧的数据字进行基于8位CRC的32位并行数据的计算,CRC为0则说明校验接收正确;
对于空闲帧头和控制字的CRC生成计算包括数据字的高24位,因此需要进行基于8位CRC的24位并行数据的计算;在接收时CRC的校验范围包括整个控制字,对空闲帧头和控制字进行基于8位CRC的32位并行数据的计算,CRC为0则说明校验接收正确;
故共有四种CRC计算需求:CRC16-Data32、CRC16-Data16、CRC8-Data32、CRC8-Data24;利用超前计算,得到各个需求下的并行CRC计算公式,在一个clk内即可获得所需的并行CRC值;
混合校验机制是指数据帧和广播帧在CRC的生成阶段,由于帧格式中CRC需嵌入帧尾而造成的CRC计算方法不同,具体计算过程如下:
当数据帧组帧时,时钟clk每打一拍,帧头和帧内数据依次进行数据帧CRC生成,采用CRC16-Data32计算,因此使能CRC16-Data32计算逻辑;当帧尾输入时采用CRC16-Data16计算,因此禁用CRC16-Data32计算逻辑,同时使能CRC16-Data16计算逻辑;整个数据帧的每个clk都会生成对应的CRC,计算完帧尾的CRC即为整个数据帧的CRC,即可嵌入帧尾发送;
当广播帧组帧时,时钟clk每打一拍,帧头和帧内数据依次进行CRC生成,采用CRC8-Data32计算,因此使能CRC8-Data32计算逻辑;当帧尾输入时采用CRC8-Data24计算,因此禁用CRC8-Data32计算逻辑,同时使能CRC8-Data24计算逻辑;整个广播帧的每个clk都会生成对应的CRC,计算完帧尾的CRC即为整个广播帧的CRC,即可嵌入帧尾发送。
14.根据权利要求13所述的基于FPGA的SpaceFibre节点IP核,其特征在于,所述通道层包括通道初始化模块、通道控制字插入模块、通道控制字检测模块以及GTX IP核;
所述通道初始化模块,用于进行收发双方通道的链接控制,通过通道初始化控制字INIT1、INIT2、INIT3的三次握手确认后进入ACTIVE状态,通道有效后,可以进行数据链路层的数据收发;
所述通道控制字插入模块,用于根据初始化状态机控制命令产生控制字:INIT1、INIT2和INIT3等,当没有控制字发送时,发送IDLE控制字;
所述通道控制字检测模块,用于对通道层的控制字进行检测,并给出对应控制字的指示信号以维持初始化状态机的运转;并且对接收的错误数据字进行统计,以及把过滤出来的数据链路层的数据字发送到数据链路层;
所述GTX IP核,用于通过配置相关参数,实现了通道层的8B/10B编解码、字符同步和字同步和速率调整。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911155324.1A CN111030747B (zh) | 2019-11-22 | 2019-11-22 | 一种基于FPGA的SpaceFibre节点IP核 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911155324.1A CN111030747B (zh) | 2019-11-22 | 2019-11-22 | 一种基于FPGA的SpaceFibre节点IP核 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111030747A true CN111030747A (zh) | 2020-04-17 |
CN111030747B CN111030747B (zh) | 2021-08-31 |
Family
ID=70202080
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911155324.1A Active CN111030747B (zh) | 2019-11-22 | 2019-11-22 | 一种基于FPGA的SpaceFibre节点IP核 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111030747B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112084137A (zh) * | 2020-08-20 | 2020-12-15 | 南京航空航天大学 | 一种SerDes高鲁棒收发电路 |
CN112134659A (zh) * | 2020-09-16 | 2020-12-25 | 中国科学院国家空间科学中心 | 一种支持fdir功能的错误恢复系统 |
CN112350897A (zh) * | 2020-11-06 | 2021-02-09 | 中国人民解放军国防科技大学 | 基于动态连接端到端可靠传输协议的网络测试装置 |
CN112383474A (zh) * | 2020-10-15 | 2021-02-19 | 中国科学院国家空间科学中心 | 一种多端口的SpaceFibre路由IP |
CN113014465A (zh) * | 2021-03-04 | 2021-06-22 | 西安微电子技术研究所 | 一种基于服务质量特性的总线传输接口系统及设计方法 |
CN114248820A (zh) * | 2021-12-21 | 2022-03-29 | 卡斯柯信号有限公司 | 一种列控中心与轨道电路的通信方法 |
CN114499756A (zh) * | 2022-01-05 | 2022-05-13 | 杭州加速科技有限公司 | 一种点对点Aurora通信系统、发送和接收方法及其应用 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030086515A1 (en) * | 1997-07-31 | 2003-05-08 | Francois Trans | Channel adaptive equalization precoding system and method |
CN1556641A (zh) * | 2004-01-01 | 2004-12-22 | 浙江大学 | 通信协议的构件化实现方法 |
CN102117260A (zh) * | 2009-12-31 | 2011-07-06 | 英特尔公司 | 在cpu和gpu之间共享资源 |
CN106201946A (zh) * | 2016-06-29 | 2016-12-07 | 北京航天自动控制研究所 | 一种基于fpga和dsp的星载电子系统数据接口系统 |
CN108737275A (zh) * | 2018-05-29 | 2018-11-02 | 北京航空航天大学 | 一种基于SpaceFibre即插即用星载网络管理方法 |
CN109194679A (zh) * | 2018-09-25 | 2019-01-11 | 北京航空航天大学 | 一种基于SpaceFibre接口的多协议接口数据采集装置和采集方法 |
CN109408424A (zh) * | 2018-10-19 | 2019-03-01 | 北京航空航天大学 | 一种基于PCIe接口的SpaceFibre总线数据采集方法 |
CN110474670A (zh) * | 2019-07-18 | 2019-11-19 | 中国科学院国家空间科学中心 | 一种基于FPGA的SpaceFibre星载网络服务质量控制系统 |
-
2019
- 2019-11-22 CN CN201911155324.1A patent/CN111030747B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030086515A1 (en) * | 1997-07-31 | 2003-05-08 | Francois Trans | Channel adaptive equalization precoding system and method |
CN1556641A (zh) * | 2004-01-01 | 2004-12-22 | 浙江大学 | 通信协议的构件化实现方法 |
CN102117260A (zh) * | 2009-12-31 | 2011-07-06 | 英特尔公司 | 在cpu和gpu之间共享资源 |
CN106201946A (zh) * | 2016-06-29 | 2016-12-07 | 北京航天自动控制研究所 | 一种基于fpga和dsp的星载电子系统数据接口系统 |
CN108737275A (zh) * | 2018-05-29 | 2018-11-02 | 北京航空航天大学 | 一种基于SpaceFibre即插即用星载网络管理方法 |
CN109194679A (zh) * | 2018-09-25 | 2019-01-11 | 北京航空航天大学 | 一种基于SpaceFibre接口的多协议接口数据采集装置和采集方法 |
CN109408424A (zh) * | 2018-10-19 | 2019-03-01 | 北京航空航天大学 | 一种基于PCIe接口的SpaceFibre总线数据采集方法 |
CN110474670A (zh) * | 2019-07-18 | 2019-11-19 | 中国科学院国家空间科学中心 | 一种基于FPGA的SpaceFibre星载网络服务质量控制系统 |
Non-Patent Citations (3)
Title |
---|
JENS MALMODIN等: "LCA of data transmission and IP core networks", 《2012 ELECTRONICS GOES GREEN 2012》 * |
徐曙清: "SpaceWire与SpaceFibre高速总线发展与研究", 《上海航天》 * |
申景诗: "星载SpaceWire总线网络设计", 《中国优秀硕士学位论文全文数据库-信息科技辑》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112084137A (zh) * | 2020-08-20 | 2020-12-15 | 南京航空航天大学 | 一种SerDes高鲁棒收发电路 |
CN112134659A (zh) * | 2020-09-16 | 2020-12-25 | 中国科学院国家空间科学中心 | 一种支持fdir功能的错误恢复系统 |
CN112134659B (zh) * | 2020-09-16 | 2023-05-30 | 中国科学院国家空间科学中心 | 一种支持fdir功能的错误恢复系统 |
CN112383474A (zh) * | 2020-10-15 | 2021-02-19 | 中国科学院国家空间科学中心 | 一种多端口的SpaceFibre路由IP |
CN112350897A (zh) * | 2020-11-06 | 2021-02-09 | 中国人民解放军国防科技大学 | 基于动态连接端到端可靠传输协议的网络测试装置 |
CN113014465A (zh) * | 2021-03-04 | 2021-06-22 | 西安微电子技术研究所 | 一种基于服务质量特性的总线传输接口系统及设计方法 |
CN114248820A (zh) * | 2021-12-21 | 2022-03-29 | 卡斯柯信号有限公司 | 一种列控中心与轨道电路的通信方法 |
CN114499756A (zh) * | 2022-01-05 | 2022-05-13 | 杭州加速科技有限公司 | 一种点对点Aurora通信系统、发送和接收方法及其应用 |
Also Published As
Publication number | Publication date |
---|---|
CN111030747B (zh) | 2021-08-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111030747B (zh) | 一种基于FPGA的SpaceFibre节点IP核 | |
US5903724A (en) | Method of transferring packet data in a network by transmitting divided data packets | |
EP0525985B1 (en) | High speed duplex data link interface | |
Netravali et al. | Design and implementation of a high-speed transport protocol | |
JP3816531B2 (ja) | 非同期パケット交換 | |
CN111131091B (zh) | 一种面向片上网络的片间互连方法和系统 | |
CN103905300B (zh) | 一种数据报文发送方法、设备及系统 | |
US20090213861A1 (en) | Reliable Link Layer Packet Retry | |
US5524218A (en) | Dedicated point to point fiber optic interface | |
CN103141050B (zh) | 快速通道互联系统中数据包重传方法、节点 | |
CN104866454B (zh) | 面向板级高速总线的写报文前瞻处理方法及装置 | |
CN104484295A (zh) | 并行计算机系统中基于接收方滑动窗口的数据传输方法 | |
CN103188059A (zh) | 快速通道互联系统中数据包重传方法、装置和系统 | |
CN103368703B (zh) | 数据包重传方法、数据包接收方法及装置 | |
CN104038327A (zh) | Fc网络的出错重传方法 | |
JP2778373B2 (ja) | 再送機能付きバッファ装置 | |
US20080107116A1 (en) | Large scale multi-processor system with a link-level interconnect providing in-order packet delivery | |
CN1917519B (zh) | 高级数据链路控制协议串行数据的并行传输方法及其系统 | |
JP7304013B2 (ja) | 共有バッファに基づくharq伝送装置および伝送方法 | |
CN114489718A (zh) | 树状连接系统的固件升级方法、装置、设备及存储介质 | |
KR20200046988A (ko) | 캔 통신과 이더넷 통신을 이용한 가변 데이터 수집 장치 및 그 방법 | |
Franta et al. | HYPERchannel local network interconnection through satellite links | |
WO2024120344A1 (zh) | 一种有线串行总线数据传输方法、系统及相关装置 | |
Singh et al. | Data Link Layer Designing Issues: Error Control-A Roadmap | |
CN118054886A (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 |