公开/公告号CN107733568A
专利类型发明专利
公开/公告日2018-02-23
原文格式PDF
申请/专利权人 烽火通信科技股份有限公司;
申请/专利号CN201710864655.7
发明设计人 韩震;
申请日2017-09-22
分类号
代理机构北京捷诚信通专利事务所(普通合伙);
代理人王卫东
地址 430000 湖北省武汉市东湖高新技术开发区高新四路6号
入库时间 2023-06-19 04:41:24
法律状态公告日
法律状态信息
法律状态
2020-05-12
授权
授权
2018-03-20
实质审查的生效 IPC(主分类):H04L1/00 申请日:20170922
实质审查的生效
2018-02-23
公开
公开
技术领域
本发明涉及以太网技术领域,具体涉及一种基于FPGA实现CRC并行计算的方法及装置。
背景技术
循环冗余校验(Cyclic Redundancy Check,CRC)是一种根据数据产生简短固定位数校验码的散列函数,主要用来检测或检验数据传输或者保存后可能出现的错误。CRC校验广泛应用于以太网技术领域中,用于接收端对传输的以太网报文内容的正确性进行检测。
CRC算法的核心是生成多项式,包括CRC8、CRC16和CRC32等多种生成多项式,可适用于以太网、视频和USB等多种接口协议,CRC校验的实现分为串行方式和并行方式,对于并行CRC校验可以根据生成多项式生成直算式,对于相同的生成多项式,有效数据位宽不同则生成的直算式也不相同。
在以太网技术领域的逻辑实现中,需要基于内部MAC层接口格式对以太网报文进行CRC校验。以太网报文长度的最小单位是字节,1Gbps速率及以下的以太网MAC层接口的数据位宽为4位或8位,即接口的有效数据位宽不变;而10Gbps速率及以上的以太网MAC层接口的数据位宽为大于32位,即接口的有效数据位宽可能实时发生变化。
有鉴于此,急需一种可以支持有效数据位宽实时变化的CRC并行计算实现方法。
发明内容
本发明所要解决的技术问题是提供一种可以支持有效数据位宽实时变化的CRC并行计算实现方法。
为了解决上述技术问题,本发明所采用的技术方案是提供一种基于FPGA实现CRC并行计算的方法,包括以下步骤:
在接口发送端,根据输入的有效数据位宽将待计算报文输入相应的CRC生成多项式,根据CRC生成多项式与不同的并行输入有效数据位宽得到不同的直算式并进行CRC计算,对待计算报文和计算出的CRC码进行对齐处理并整合成待发送报文发送至接口接收端;
在接口接收端,根据接收到的有效数据位宽将待发送报文输入相应的CRC生成多项式,根据CRC生成多项式与不同的并行输入有效数据位宽得到不同的直算式并进行CRC计算,将计算出的CRC码与待发送报文中携带的CRC码进行对比,得到CRC校验结果。
在上述技术方案中,在接口发送端或接口接收端进行CRC计算,具体包括以下步骤:
当接收到报文头指示信号时,进行初始化配置并对报文头进行CRC计算,初始化配置支持全0或者全1;
当接收到有效数据且报文头指示信号和报文尾指示信号无效时,对有效数据进行CRC计算;
当接收到报文尾指示信号时,对报文尾进行CRC计算并对计算出的CRC码进行锁存作为CRC计算结果。
在上述技术方案中,报文头指示信号和报文尾指示信号采用背靠背的输入方式。
在上述技术方案中,当接收到无效数据时,不进行CRC计算。
在上述技术方案中,当接口接收端计算出的CRC码与待发送报文中携带的CRC码相同时,则CRC校验正确,反之则CRC校验错误。
本发明还提供了一种基于FPGA实现CRC并行计算的装置,包括:
设置于接口发送端的CRC生成器和设置于接口接收端的CRC校验器,所述CRC生成器包括第一CRC计算器、数据延迟模块和数据汇聚模块;所述CRC校验器包括第二CRC计算器和魔数检测模块;
接口发送端根据输入的有效数据位宽将待计算报文输入相应的CRC生成多项式,并发送至所述第一CRC计算器;所述第一CRC计算器根据CRC生成多项式与不同的并行输入有效数据位宽得到不同的直算式并进行CRC计算,锁存计算出的CRC码并发送至所述数据延迟模块;所述数据延迟模块对待计算报文和所述第一CRC计算器计算出的CRC码进行对齐处理;所述数据汇聚模块将所述数据延迟模块对齐处理后的待计算报文和CRC码整合成待发送报文发送至接口接收端;
接口接收端根据接收到的有效数据位宽将待发送报文输入相应的CRC生成多项式,并发送至所述第二CRC计算器;所述第二CRC计算器根据CRC生成多项式与不同的并行输入有效数据位宽得到不同的直算式并进行CRC计算,锁存计算出的CRC码并发送至所述魔数检测模块;所述魔数检测模块将所述第二CRC计算器计算出的CRC码与待发送报文中携带的CRC码进行对比,得到CRC校验结果。
在上述技术方案中,所述第一CRC计算器或第二CRC计算器根据接收到的报文头指示信号进行初始化配置,并对报文头进行CRC计算,初始化配置支持全0或者全1;根据接收到的有效数据以及无效的报文头指示信号和报文尾指示信号,对有效数据进行CRC计算;根据接收到的报文尾指示信号,对报文尾进行CRC计算并对计算出的CRC码进行锁存作为CRC计算结果。
在上述技术方案中,所述第一CRC计算器和第二CRC计算器接收到的报文头指示信号和报文尾指示信号采用背靠背的输入方式。
本发明根据输入的有效数据位宽将报文输入相应的CRC生成多项式,根据CRC生成多项式与不同的并行输入有效数据位宽得到不同的直算式并进行CRC计算,支持有效数据位宽的实时变化,兼容性较好,可兼容有效数据位宽不变的1Gbps速率及以下的接口,以及有效数据位宽可变的10Gbps速率及以上的接口。
附图说明
图1为本发明实施例提供的一种基于FPGA实现CRC并行计算的方法流程图;
图2为本发明实施例提供的一种基于FPGA实现CRC并行计算的装置结构示意图;
图3为本发明实施例提供的输入输出接口时序图。
具体实施方式
下面结合说明书附图和具体实施方式对本发明做出详细的说明。
本发明实施例提供了一种基于FPGA实现CRC并行计算的方法,如图1所示,包括以下步骤:
S1、在以太网接口发送端,根据输入的有效数据位宽将待计算报文输入相应的CRC生成多项式,根据CRC生成多项式与不同的并行输入有效数据位宽得到不同的直算式并进行CRC计算。
待计算报文包括报文头指示信号、报文尾指示信号、报文有效数据指示信号、报文有效数据位宽指示信号以及报文有效数据。
S2、对待计算报文和计算出的CRC码进行对齐处理并整合成待发送报文,选择相应的数据路径将整合后的待发送报文发送至以太网接口接收端。
S3、在以太网接口接收端,根据接收到的有效数据位宽将待发送报文输入至相应的CRC生成多项式,根据CRC生成多项式与不同的并行输入有效数据位宽得到不同的直算式并进行CRC计算。
S4、将计算出的CRC码与待发送报文中携带的CRC码进行对比,若相同则CRC校验正确,反之则CRC校验错误。
本发明实施例还提供了一种基于FPGA实现CRC并行计算的装置,如图2所示,包括:
设置于以太网接口发送端的CRC生成器和设置于以太网接口接收端的CRC校验器,该CRC生成器包括第一CRC计算器10、数据延迟模块11和数据汇聚模块12;该CRC校验器包括第二CRC计算器20和魔数检测模块21;
以太网接口发送端根据输入的有效数据位宽将待计算报文输入相应的CRC生成多项式,并发送至第一CRC计算器10;第一CRC计算器10根据CRC生成多项式与不同的并行输入有效数据位宽得到不同的直算式并进行CRC计算,锁存计算出的CRC码并发送至数据延迟模块11;数据延迟模块11对待计算报文和第一CRC计算器10计算出的CRC码进行对齐处理;数据汇聚模块12将数据延迟模块11对齐处理后的待计算报文和CRC码整合成完整的待发送报文,选择相应的数据路径将待发送报文发送至以太网接口接收端;
以太网接口接收端根据接收到的有效数据位宽将待发送报文输入相应的CRC生成多项式,并发送至第二CRC计算器20;第二CRC计算器20根据CRC生成多项式与不同的并行输入有效数据位宽得到不同的直算式并进行CRC计算,锁存计算出的CRC码并发送至魔数检测模块21;魔数检测模块21将第二CRC计算器20计算出的CRC码与待发送报文中携带的CRC码进行对比,若相同则CRC校验正确,反之则CRC校验错误。
魔数检测模块21实现了无需将整合后的待发送报文分离出CRC码后再送入第二CRC计算器20,大大提高了处理效率。
下面结合图3的输入输出接口时序图,对本实施例中第一CRC计算器10或第二CRC计算器20的实现原理作进一步详细说明:
当第一CRC计算器10或第二CRC计算器20接收到报文头指示信号时,进行初始化配置并对报文头进行CRC计算,初始化配置支持全0或者全1;当接收到有效数据且报文头指示信号和报文尾指示信号无效时,对有效数据进行正常的CRC计算;当接收到报文尾指示信号时,对报文尾进行CRC计算并对计算出的CRC码进行锁存作为本次报文的CRC计算结果。当接收到无效数据时,不进行CRC计算。
本实施例中第一CRC计算器10和第二CRC计算器20基于流水线架构,性能较好,支持报文的报文头指示信号和报文尾指示信号的背靠背输入,传输延迟较小且恒定,不耗费缓存资源。而且本实施例还支持报文的“缺口传输”,即只有在报文数据有效指示时进行CRC计算,否则保持。
本实施例支持报文的有效数据位宽实时可变,由于以太网最小的传输单位为字节,所以采用较少的直算式就可实现大位宽并行输入的位宽实时可调。因此兼容性较好,可兼容有效数据位宽不变的1Gbps速率及以下的以太网MAC层接口,以及有效数据位宽可变的10Gbps速率及以上的以太网MAC层接口。
本实施例不局限应用于以太网接口,通过对直算式、输入初值、输出异或和线序的灵活配置,可以应用于各种使用CRC校验的接口协议,应用场景广泛。
本实施例应用在IPRAN和PTN设备上,其配置灵活且性能优,能够适用于各种需要CRC计算的应用场景。
本发明不局限于上述最佳实施方式,任何人在本发明的启示下作出的结构变化,凡是与本发明具有相同或相近的技术方案,均落入本发明的保护范围之内。
机译: 基于块的FBLMS算法的基于浮动点的FPGA实现装置和方法
机译: 基于FPGA实现状态更新的方法和装置
机译: 基于FPGA的隐私块链实现方法和装置