基于USB3.0协议16比特循环冗余校验的硬件实现方法技术

技术编号:27934800 阅读:24 留言:0更新日期:2021-04-02 14:14
本发明专利技术公开了一种基于USB3.0协议16比特循环冗余校验的硬件实现方法,其特征在于,应用于USB3.0设备,所述USB3.0设备包括主机、集线器和从设备,所述方法包括发送端对头包中CRC‑16计算方法和接收端对头包中CRC‑16计算方法,相比现有技术,本发明专利技术通过将算法按照数据位宽进行展开并消除冗余项,缩短了数据生成时的硬件延时,提升了系统的工作频率。

【技术实现步骤摘要】
基于USB3.0协议16比特循环冗余校验的硬件实现方法
本专利技术涉及USB传输领域,具体涉及基于USB3.0协议16比特循环冗余校验的硬件实现方法。
技术介绍
USB是英文UniversalSerialBus(通用串行总线)的缩写,是一个外部总线标准,用于规范电脑与外部设备的连接和通讯。USB接口支持设备的即插即用和热插拔功能。USB标准于1994年底由英特尔、康柏、IBM、Microsoft等多家公司联合提出,现已经被广泛应用于电脑,手机,数码相机等各种电子设备。USB标准由USB官方组织USB-IF制定和维护,从开始至今依次发布了USB1.0,USB1.1,USB2.0,USB3.0,USB3.1,USB3.2和USB4七个版本,新版本前向兼容旧版本。每个版本支持的最大传输速率分布为:USB1.0:1.5Mbps;USB1.1:12Mbps;USB2.0:480Mbps;USB3.0:5Gbps;USB3.1:10Gbps;USB3.2:20Gbps;USB4:40Gbps。循环冗余校验码(CRC,CyclicRedundancyCheck)是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在数据后面,接收设备用相同的算法对接收到的数据进行计算,并将结果与收到的循环冗余校验码进行比较,以确定数据传输的正确性和完整性。>USB3.0协议中的头包(HeaderPacket)使用了CRC-16对数据内容进行保护。头包(HeaderPacket)共有12个字节(96比特),主要有4种类型,分别是:链路管理包(LinkManagementPacket)传输包(TransactionPacket)数据包(DataPacket)同步时间戳包(IsochronousTimestampPacket)。头包的具体定义如图1。头包(HeaderPacket)共有16个字节,主要包括:类型(Type),路由信息(RouteString),设备地址(DeviceAddress),子类型(SubType),重传(Rty),方向(Direction),端点号(EptNum),数据流号(StreamID),16比特循环冗余校验值(CRC-16),链路控制字(LinkControlWord)等字段。根据USB3.0协议的定义,16比特循环冗余校验值(CRC-16)用于保护头包中12字节控制信息(DWORD0,DWORD1,DWORD2)中的所有字段,USB3.0协议CRC-16的保护范围如图2所示。USB3.0协议提供的CRC-16实现方案是基于单比特运算和按照位宽逐位迭代的,缺点在于每个周期需要迭代次数多,耗时长,冗余校验码生成和结果校验的硬件延时较大,从而限制了硬件系统的工作频率和整体性能。
技术实现思路
为解决现有技术的不足,本专利技术的目的在于提供一种通过将算法按照数据位宽进行展开并消除冗余项,缩短了数据生成时的硬件延时,提升了系统的工作频率的基于USB3.0协议16比特循环冗余校验的硬件实现方法。为了实现上述目标,本专利技术采用如下的技术方案:基于USB3.0协议16比特循环冗余校验的硬件实现方法,其特征在于,应用于USB3.0设备,所述USB3.0设备包括主机、集线器和从设备,所述方法包括发送端对头包中CRC-16计算方法和接收端对头包中CRC-16计算方法。作为本专利技术的进一步优选,所述发送端对头包中CRC-16计算方法,包括以下步骤:S1、第一个有效数据周期CRC-16寄存器的初始值为十六进制FFFF,记为crc16[15:0],从高位到低位依次为crc16[15],crc16[14],crc16[13]……crc16[1],crc16[0];S2、取crc16(n)代表CRC-16寄存器迭代n次后的值,crc16(n+1)为CRC-16寄存器迭代n+1次之后的值,crc16(n)[m]代表CRC-16寄存器迭代n次后第m位的值(m取值从0到15),CRC-16寄存器的初始值为crc16(0)[15:0],当前数据输入位din,基于单步迭代公式;S3、根据数据位宽迭代对应的次数,迭代后进行展开;S4、根据根据a^a^b=b,其中a,b均为2进制变量,消去冗余项,得到当前周期的CRC-16寄存器的值;S5、重复步骤S2-S4直至所有头包控制信息的CRC-16计算完成,将此时CRC-16寄存器的值按位取反,并将0-7位和8-15位从高位到低位按位颠倒次序,再将高8位和低8位颠倒次序,得到最终的CRC-16的计算结果。作为本专利技术的进一步优选,所述接受端对头包中CRC-16计算方法,包括以下步骤:S1、第一个有效数据周期CRC-16寄存器的初始值为十六进制FFFF,记为crc16[15:0],从高位到低位依次为crc16[15],crc16[14],crc16[13]……crc16[1],crc16[0];S2、取crc16(n)代表CRC-16寄存器迭代n次后的值,crc16(n+1)为CRC-16寄存器迭代n+1次之后的值,crc16(n)[m]代表CRC-16寄存器迭代n次后第m位的值,其中m取值从0到15,CRC-16寄存器的初始值为crc16(0)[15:0],当前数据输入位din,代入单步迭代公式;S3、根据数据位宽,迭代对应的次数,之后进行展开;S4、根据根据a^a^b=b,其中a,b均为2进制变量,消去冗余项,得到当前周期的CRC-16寄存器的值;S5、重复S2-S4直至所有头包控制信息的CRC-16计算完成;S6、CRC-16的最终校验计算结果为十六进制F6AA,若不是,则报告CRC-16校验失败。作为本专利技术的进一步优选,所述发送端对头包中CRC-16计算方法步骤S2中单步迭代公式和接收端对头包中CRC-16计算方法步骤S2中单步迭代公式均为:crc16(n+1)[0]=din^crc16(n)[15];crc16(n+1)[1]=din^crc16(n)[15]^crc16(n)[0];crc16(n+1)[2]=crc16(n)[1];crc16(n+1)[3]=din^crc16(n)[15]^crc16(n)[2];crc16(n+1)[4]=crc16(n)[3];crc16(n+1)[5]=crc16(n)[4];crc16(n+1)[6]=crc16(n)[5];crc16(n+1)[7]=crc16(n)[6];crc16(n+1)[8]=crc16(n)[7];crc16(n+1)[9]=crc16(n)[8];crc16(n+1)[10]=crc1本文档来自技高网...

【技术保护点】
1.基于USB3.0协议16比特循环冗余校验的硬件实现方法,其特征在于,应用于USB3.0设备,所述USB3.0设备包括主机、集线器和从设备,所述方法包括发送端对头包中CRC-16计算方法和接收端对头包中CRC-16计算方法。/n

【技术特征摘要】
1.基于USB3.0协议16比特循环冗余校验的硬件实现方法,其特征在于,应用于USB3.0设备,所述USB3.0设备包括主机、集线器和从设备,所述方法包括发送端对头包中CRC-16计算方法和接收端对头包中CRC-16计算方法。


2.根据权利要求1所述的基于USB3.0协议16比特循环冗余校验的硬件实现方法,其特征在于,所述发送端对头包中CRC-16计算方法,包括以下步骤:
S1、第一个有效数据周期CRC-16寄存器的初始值为十六进制FFFF,记为crc16[15:0],从高位到低位依次为crc16[15],crc16[14],crc16[13]……crc16[1],crc16[0];
S2、取crc16(n)代表CRC-16寄存器迭代n次后的值,crc16(n+1)为CRC-16寄存器迭代n+1次之后的值,crc16(n)[m]代表CRC-16寄存器迭代n次后第m位的值(m取值从0到15),CRC-16寄存器的初始值为crc16(0)[15:0],当前数据输入位din,基于单步迭代公式;
S3、根据数据位宽迭代对应的次数,迭代后进行展开;
S4、根据根据a^a^b=b,其中a,b均为2进制变量,消去冗余项,得到当前周期的CRC-16寄存器的值;
S5、重复步骤S2-S4直至所有头包控制信息的CRC-16计算完成,将此时CRC-16寄存器的值按位取反,并将0-7位和8-15位从高位到低位按位颠倒次序,再将高8位和低8位颠倒次序,得到最终的CRC-16的计算结果。


3.根据权利要求2所述的基于USB3.0协议16比特循环冗余校验的硬件实现方法,其特征在于,所述接受端对头包中CRC-16计算方法,包括以下步骤:
S1、第一个有效数据周期CRC-16寄存器的初始值为十六进制FFFF,记为crc16[15:0],从高位到低位依次为crc16[15],crc16[14],crc16[13]……crc16[1],crc16[0];
S2、取crc16(n)代表CRC-16寄存器迭代n次后的值,crc16(n+1)为CRC-16寄存器迭代n+1次之后的值,crc16(n)[m]代表CRC-16寄存器迭代n次后第m位的值,其中m取值从0到15,CRC-16寄存器的初始值为crc16(0)[15:0],当前数据输入位din,代入单步迭代公式;
S3、根据数据位宽,迭代对应的次数,之后进行展开;
S4、根据根据a^a^b=b,其中a,b均为2进制变量,消去冗余项,得到当前周期的CRC-16寄存器的值;
S5、重复S2-S4直至所有头包控制信息的CRC-16计算完成;
S6、CRC-16的最终校验计算结果为十六进制F6AA,若不...

【专利技术属性】
技术研发人员:范凯卢笙陈盈安
申请(专利权)人:芯启源电子科技有限公司
类型:发明
国别省市:浙江;33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1