CN112799873A - Usb3.1协议五比特循环冗余校验的硬件实现方法 - Google Patents
Usb3.1协议五比特循环冗余校验的硬件实现方法 Download PDFInfo
- Publication number
- CN112799873A CN112799873A CN202110196533.1A CN202110196533A CN112799873A CN 112799873 A CN112799873 A CN 112799873A CN 202110196533 A CN202110196533 A CN 202110196533A CN 112799873 A CN112799873 A CN 112799873A
- Authority
- CN
- China
- Prior art keywords
- crc5
- crc
- din
- bit
- link
- 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.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Error Detection And Correction (AREA)
- Detection And Prevention Of Errors In Transmission (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
本发明公开了一种USB3.1协议五比特循环冗余校验的硬件实现方法,其特征在于,应用于USB3.1设备,所述USB3.0设备包括主机、集线器和从设备,所述方法包括发送端对链路控制字和链路命令字的CRC‑5计算方法和接收端对链路控制字和链路命令字的CRC‑5计算方法,相比现有技术,本发明通过数据位宽展开并消除冗余项,有效的减少了硬件延时,使系统可以工作在更高的频率。
Description
技术领域
本发明涉及USB传输领域,具体涉及基于数据位宽展开和冗余项消除的USB3.1协议五比特循环冗余校验的硬件实现方法。
背景技术
USB是英文Universal Serial Bus(通用串行总线)的缩写,是一个外部总线标准,用于规范电脑与外部设备的连接和通讯。USB接口支持设备的即插即用和热插拔功能。USB标准于1994年底由英特尔、康柏、IBM、Microsoft等多家公司联合提出,现已经被广泛应用于电脑,手机,数码相机等各种电子设备。
USB标准由USB官方组织USB-IF制定和维护,从开始至今依次发布了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。
USB3.1标准协议支持的最大传输速率为10Gbps, 主要有Gen2 (10Gbps)和Gen1(5Gbps)两种工作模式。在编码方式上,USB3.1在Gen2模式中采用了128B/132B的编码方式,相比于USB3.0协议中使用的8B/10B编码方式,有效的提供了带宽的利用率。
USB3.1的系统架构如图3所示,包含SuperSpeedPlus(Gen2)和SuperSpeed(Gen1)两部分,每部分都包括设备层(Device/Host),协议层(ProtocolLayer),链路层(LinkLayer)和物理层(PhysicalLayer)。
循环冗余校验码(CRC,Cyclic Redundancy Check)是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在数据后面,接收设备用相同的算法对接收到的数据进行计算,并将结果与收到的循环冗余校验码进行比较,以确定数据传输的正确性和完整性。
USB3.1协议中的链路控制字(LinkControlWord)和链路命令字(LinkCommandWord)中都使用了CRC-5对数据内容进行保护。
链路控制字(LinkControlWord)共有2个字节(16比特),内容包括:
包头序列号(HeaderSequenceNumber);
集线器深度(HubDepth);
延时指示位(Delayed);
五比特循环冗余校验值(CRC-5)。
链路命令字(Link Command Word)有2个字节(16比特),内容包括链路命令信息(Link command Information)和五比特循环冗余校验值(CRC-5)。
发明内容
为解决现有技术的不足,本发明的目的在于提供一种通过将算法按照数据位宽进行展开并消除冗余项,缩短了数据生成时的硬件延时,提升了系统的工作频率的基于数据位宽展开和冗余项消除的USB3.1协议五比特循环冗余校验的硬件实现方法。
为了实现上述目标,本发明采用如下的技术方案:
基于数据位宽展开和冗余项消除的USB3.1协议五比特循环冗余校验的硬件实现方法,其特征在于,应用于USB3.1设备,所述USB3.1设备包括主机、集线器和从设备,所述方法包括发送端对链路控制字和链路命令字的CRC-5计算方法和接收端对链路控制字和链路命令字的CRC-5计算方法。
作为本发明的进一步优选,所述发送端对链路控制字和链路命令字的CRC-5计算方法,包括以下步骤:
一、CRC-5寄存器的初始值为11111,记为crc5[4:0],从高位到低位依次为crc5[4],crc5[3],crc5[2],crc5[1],crc5[0];
二、取crc5(n)代表CRC-5寄存器迭代n次后的值,crc5(n+1)为CRC-5寄存器迭代n+1次之后的值,crc5(n)[m]代表CRC-5寄存器迭代n次后第m位的值(m取值从0到4),CRC-5寄存器的初始值为crc5(0)[4:0],当前数据输入位din,基于单步迭代公式;
三、在迭代11次之后,进行展开,得到展开结果;
四、展开后的表达式中,根据a^a^b=b(a,b为2进制变量)消去冗余项;
五、再将crc5(0)的初值11111带入后,根据a^1^1=a (a为2进制变量),进行简化,得到crc5(11)的值;
六、将步骤五中迭代11次并化简得到的crc5(11)按位取反并从高位到低位颠倒次序,得到最终的CRC-5计算结果;
七、步骤六中的CRC-5计算结果,将最高位(MSB)放到链路控制字或链路命令字的第11位,次高位放到第12位,最低位(LSB)放到第15位,按照从低位到高位的顺序将完整的16比特链路控制字或链路命令字进行发送。
作为本发明的进一步优选,所述接收端对链路控制字和链路命令字的CRC-5计算方法,包括以下步骤:
一、CRC-5寄存器的初始值为11111,记为crc5[4:0],从高位到低位依次为crc5[4],crc5[3],crc5[2],crc5[1],crc5[0];
二、取crc5(n)代表CRC-5寄存器迭代n次后的值,crc5(n+1)为CRC-5寄存器迭代n+1次之后的值,crc5(n)[m]代表CRC-5寄存器迭代n次后第m位的值(m取值从0到4),CRC-5寄存器的初始值为crc5(0)[4:0],当前数据输入位din,基于单步迭代公式:
三、在迭代16次之后,进行展开,得到展开结果;
四、展开后的表达式中,根据a^a^b=b(a,b为2进制变量)消去冗余项;
五、再将crc5(0)的初值11111带入后,根据a^1^1=a (a为2进制变量),进行简化,得到crc5(16)的值;
六、接收到的链路控制字或链路命令字的CRC-5的校验计算结果应为01100,否则报告CRC-5校验失败。
作为本发明的进一步优选,所述发送端对链路控制字和链路命令字的CRC-5计算方法的步骤二中的单步迭代公式和接收端对链路控制字和链路命令字的CRC-5计算方法的步骤二中的单步迭代公式均为以下公式:
crc5(n+1)[0] = din ^ crc(n) [4];
crc5(n+1) [1] = crc(n) [0];
crc5(n+1) [2] = din ^ crc(n) [4] ^ crc(n) [1];
crc5(n+1) [3] = crc(n) [2];
crc5(n+1) [4] = crc(n) [3]。
作为本发明的进一步优选,在发送端对链路控制字和链路命令字的CRC-5计算方法的步骤二中,所述数据输入位din,从链路控制字或链路命令字的第0位开始计算,直到第10位。
作为本发明的进一步优选,在接收端对链路控制字和链路命令字的CRC-5计算方法的步骤二中,所述数据输入位din,从链路控制字或链路命令字的第0位开始计算,直到第15位。
基于数据位宽展开和冗余项消除的USB3.1协议五比特循环冗余校验的硬件,其特征在于,应用于USB3.1设备,所述USB3.1设备包括主机、集线器和从设备,所述硬件包括CRC-5的计算逻辑单元以及相关的寄存器,所述CRC-5的计算逻辑单元及相关的寄存器包括发送模块和接收模块,所述发送模块用于在发送端对链路控制字和链路命令字的原始内容进行CRC-5计算,并将计算结果与原始内容整合形成完整的链路控制字或链路命令字后发出,所述接收模块用于接收发送模块发出的链路控制字或链路命令字,在接收端对链路控制字和链路命令字进行CRC-5计算并校验,判断CRC-5计算结果是否为01100,若否,则表示数据在传输过程中出错,报告CRC-5校验失败。
本发明的有益之处在于:本发明通过数据位宽展开并消除冗余项,有效的减少了硬件延时,使系统可以工作在更高的频率。
附图说明
图1是本发明的发送方流程示意图;
图2是本发明的接收方流程示意图;
图3是USB3.1系统架构图;
图4是链条命令信息的定义;
图5是USB3.1协议链路控制字的定义示意图;
图6是USB3.1协议链路命令字的定义示意图;
图7是USB3.1协议中CRC-5的硬件实现示意图;
图8是本发明的硬件模块示意图。
具体实施方式
以下结合附图和具体实施例对本发明作具体的介绍。
结合附图7,现有技术中,USB3.1协议中提供的CRC-5硬件实现方案如下:
发送方的具体步骤:
1.CRC-5 的多项式值为00101;
2.CRC-5寄存器的初始值为11111,记为crc5[4:0],从高位到低位依次为crc5[4],crc5[3],crc5[2],crc5[1],crc5[0];
3.将当前CRC-5寄存器的最低位的值crc5[0]存入次低位crc5[1];
4.将当前CRC-5寄存器的次低位的值crc5[1]与当前数据输入位din以及当前CRC-5寄存器的最高位crc5[4]进行异或,并将结果存入crc5[2];
5.将当前CRC-5寄存器第二位的值crc5[2]存入第三位crc5[3];
6.将当前CRC-5寄存器第三位的值crc5[3]存入第四位,即最高位crc5[4];
7.将当前CRC-5寄存器的最高位crc5[4]与当前数据输入位din进行异或,将生成的结果存入CRC-5寄存器的最低位crc5[0];
8.重复步骤3到7,从链路控制字或链路命令字的第0位开始计算,直到第10位,依次将所有输入逐位进行运算,得到最终的CRC-5寄存器的值;
9.将CRC-5寄存器的值按位取反并从高位到低位颠倒次序,得到最终的CRC-5计算结果,将最高位(MSB)放到链路控制字或链路命令字的第11位,次高位放到第12位,最低位(LSB)放到第15位;
10.按照从低位到高位的顺序将完整的16比特链路控制字或链路命令字进行发送。
接收方的具体步骤:
1.CRC-5 的多项式值为00101;
2.CRC-5寄存器的初始值为11111,记为crc5[4:0],从高位到低位依次为crc5[4],crc5[3],crc5[2],crc5[1],crc5[0];
3.将当前CRC-5寄存器的最低位的值crc5[0]存入次低位crc5[1];
4.将当前CRC-5寄存器的次低位的值crc5[1]与当前数据输入位din以及当CRC-5寄存器的最高位crc5[4]进行异或,并将结果存入crc5[2];
5.将当前CRC-5寄存器第二位的值crc5[2]存入第三位crc5[3];
6.将当前CRC-5寄存器第三位的值crc5[3]存入第四位,即最高位crc5[4];
7.将当前CRC-5寄存器的最高位crc5[4]与当前数据输入位din进行异或,将生成的结果存入CRC-5寄存器的最低位crc5[0];
8.重复步骤3到7,从链路控制字或链路命令字的第0位开始计算,直到第15位,依次将所有输入逐位进行运算,得到最终的CRC-5寄存器的值;
9.接收到的链路控制字或链路命令字的CRC-5的校验计算结果应为01100,否则报告CRC-5校验失败。
取crc5(n)代表CRC-5寄存器迭代n次后的值,crc5(n+1)为CRC-5寄存器迭代n+1次之后的值,crc5(n)[m]代表CRC-5寄存器迭代n次后第m位的值(m取值从0到4),当前数据输入位din,对应的迭代公式如下:
crc5(n+1)[0] = din ^ crc(n)[4];
crc5(n+1)[1] = crc(n)[0];
crc5(n+1)[2] = din ^ crc(n)[4] ^ crc(n)[1];
crc5(n+1)[3] = crc(n)[2];
crc5(n+1)[4] = crc(n)[3]。
现有的USB3.1协议提供的CRC-5实现方案是基于单比特运算和逐位迭代的,缺点在于每个周期需要迭代次数多,耗时长,冗余校验码生成和结果校验的硬件延时较大,从而限制了硬件系统的工作频率和整体性能。
结合附图1,本发明在遵守USB3.1协议的前提下,提出了一种基于数据位宽展开的CRC-5硬件实现方案,通过展开后消去冗余项,缩短了CRC-5冗余校验码生成和结果校验的硬件延时,使系统可以工作在更高的频率,该方法应用于USB3.1设备,方法包括发送端对链路控制字和链路命令字的CRC-5计算方法和接收端对链路控制字和链路命令字的CRC-5计算方法。
具体方案过程如下:
发送方的具体步骤:
1、CRC-5寄存器的初始值为11111,记为crc5[4:0],从高位到低位依次为crc5[4],crc5[3],crc5[2],crc5[1],crc5[0];
2、取crc5(n)代表CRC-5寄存器迭代n次后的值,crc5(n+1)为CRC-5寄存器迭代n+1次之后的值,crc5(n)[m]代表CRC-5寄存器迭代n次后第m位的值(m取值从0到4),CRC-5寄存器的初始值为crc5(0)[4:0],当前数据输入位din,基于单步迭代公式:
crc5(n+1)[0] = din ^ crc(n) [4];
crc5(n+1) [1] = crc(n) [0];
crc5(n+1) [2] = din ^ crc(n) [4] ^ crc(n) [1];
crc5(n+1) [3] = crc(n) [2];
crc5(n+1) [4] = crc(n) [3];
进行展开,迭代11次之后的结果如下:
crc5(11)[0] = din[10] ^ din[7] ^ din[4] ^ din[1] ^ crc5(0)[3] ^ crc5(0)[0] ^ din[2] ^ crc5(0)[2] ^ din[5] ^ din[2] ^ crc5(0)[2] ^ din[0] ^ crc5(0)[4];
crc5(11)[1] = din[9] ^ din[6] ^ din[3] ^ din[0] ^ crc5(0)[4] ^ crc5(0)[1] ^ din[1] ^ crc5(0)[3] ^ din[4] ^ din[1] ^ crc5(0)[3] ^ crc5(0)[0];
crc5(11)[2] = din[10] ^ din[7] ^ din[4] ^ din[1] ^ crc5(0)[3] ^ crc5(0)[0] ^ din[2] ^ crc5(0)[2] ^ din[5] ^ din[2] ^ crc5(0)[2] ^ din[0] ^ crc5(0)[4] ^ din[8] ^ din[5] ^ din[2] ^ crc5(0)[2] ^ din[0] ^ crc5(0)[4] ^ din[3]^ din[0] ^ crc5(0)[4] ^ crc5(0)[1];
crc5(11)[3] = din[9] ^ din[6] ^ din[3] ^ din[0] ^ crc5(0)[4] ^ crc5(0)[1] ^ din[1] ^ crc5(0)[3] ^ din[4] ^ din[1] ^ crc5(0)[3] ^ crc5(0)[0] ^din[7] ^ din[4] ^ din[1] ^ crc5(0)[3] ^ crc5(0)[0] ^ din[2] ^ crc5(0)[2];
crc5(11)[4] = din[8] ^ din[5] ^ din[2] ^ crc5(0)[2] ^ din[0] ^ crc5(0)[4] ^ din[3] ^ din[0] ^ crc5(0)[4] ^ crc5(0)[1] ^ din[6] ^ din[3] ^ din[0]^ crc5(0)[4] ^ crc5(0)[1] ^ din[1] ^ crc5(0)[3];
以crc5(11)[0]为例,展开后的表达式中din[2]出现了两次,crc5(0)[2]出现了两次,根据a^a^b=b(a,b为2进制变量)消去冗余项,再将crc5(0)的初值11111带入后,根据a^1^1=a (a为2进制变量) 消去冗余项,可简化为:crc5(11)[0] = din[0] ^ din[7] ^ din[10] ^ 1 ^ din[1] ^ din[4] ^ din[5];
最终迭代11次之后的结果可化简为:
crc5(11)[0] = din[0] ^ din[7] ^ din[10] ^ 1 ^ din[1] ^ din[4] ^ din[5];
crc5(11)[1] = din[3] ^ din[0] ^ 1^ din[4] ^ din[6] ^ din[9];
crc5(11)[2] = din[3] ^ din[0] ^ din[7] ^ 1^ din[10] ^ din[2] ^ din[8]^ din[1] ^ din[4];
crc5(11)[3] = din[3] ^ din[7] ^ din[0] ^ din[2] ^ din[1] ^ din[6] ^din[9];
crc5(11)[4] = din[0] ^ 1^ din[2] ^ din[1] ^ din[8] ^ din[6] ^ din[5];
3、将步骤2中得到的迭代11次并化简得到的crc5(11)按位取反并从高位到低位颠倒次序,得到最终的CRC-5计算结果,将最高位(MSB)放到链路控制字或链路命令字的第11位,次高位放到第12位,最低位(LSB)放到第15位;按照从低位到高位的顺序将完整的16比特链路控制字或链路命令字进行发送。
结合附图2,接收方的具体步骤:
1、CRC-5寄存器的初始值为11111,记为crc5[4:0],从高位到低位依次为crc5[4],crc5[3],crc5[2],crc5[1],crc5[0];
2、取crc5(n)代表CRC-5寄存器迭代n次后的值,crc5(n+1)为CRC-5寄存器迭代n+1次之后的值,crc5(n)[m]代表CRC-5寄存器迭代n次后第m位的值(m取值从0到4),CRC-5寄存器的初始值为crc5(0)[4:0],当前数据输入位din,基于单步迭代公式:
crc5(n+1)[0] = din ^ crc(n) [4];
crc5(n+1) [1] = crc(n) [0];
crc5(n+1) [2] = din ^ crc(n) [4] ^ crc(n) [1];
crc5(n+1) [3] = crc(n) [2];
crc5(n+1) [4] = crc(n) [3];
进行展开,迭代16次后的结果如下:
crc5(16)[0] = din[15] ^ din[12] ^ din[9] ^ din[6] ^ din[3] ^ din[0] ^crc5(0)[4] ^ crc5(0)[1] ^ din[1] ^ crc5(0)[3] ^ din[4] ^ din[1] ^ crc5(0)[3]^ crc5(0)[0] ^ din[7] ^ din[4] ^ din[1] ^ crc5(0)[3] ^ crc5(0)[0] ^ din[2] ^crc5(0)[2] ^ din[10] ^ din[7] ^ din[4] ^ din[1] ^ crc5(0)[3] ^ crc5(0)[0] ^din[2] ^ crc5(0)[2] ^ din[5] ^ din[2] ^ crc5(0)[2] ^ din[0] ^ crc5(0)[4];
crc5(16)[1] = din[14] ^ din[11] ^ din[8] ^ din[5] ^ din[2] ^ crc5(0)[2] ^ din[0] ^ crc5(0)[4] ^ din[3] ^ din[0] ^ crc5(0)[4] ^ crc5(0)[1] ^ din[6] ^ din[3] ^ din[0] ^ crc5(0)[4] ^ crc5(0)[1] ^ din[1] ^ crc5(0)[3] ^ din[9] ^ din[6] ^ din[3] ^ din[0] ^ crc5(0)[4] ^ crc5(0)[1] ^ din[1] ^ crc5(0)[3] ^ din[4] ^ din[1] ^ crc5(0)[3] ^ crc5(0)[0];
crc5(16)[2] = din[15] ^ din[12] ^ din[9] ^ din[6] ^ din[3] ^ din[0] ^crc5(0)[4] ^ crc5(0)[1] ^ din[1] ^ crc5(0)[3] ^ din[4] ^ din[1] ^ crc5(0)[3]^ crc5(0)[0] ^ din[7] ^ din[4] ^ din[1] ^ crc5(0)[3] ^ crc5(0)[0] ^ din[2] ^crc5(0)[2] ^ din[10] ^ din[7] ^ din[4] ^ din[1] ^ crc5(0)[3] ^ crc5(0)[0] ^din[2] ^ crc5(0)[2] ^ din[5] ^ din[2] ^ crc5(0)[2] ^ din[0] ^ crc5(0)[4] ^din[13] ^ din[10] ^ din[7] ^ din[4] ^ din[1] ^ crc5(0)[3] ^ crc5(0)[0] ^ din[2] ^ crc5(0)[2] ^ din[5] ^ din[2] ^ crc5(0)[2] ^ din[0] ^ crc5(0)[4] ^ din[8] ^ din[5] ^ din[2] ^ crc5(0)[2] ^ din[0] ^ crc5(0)[4] ^ din[3] ^ din[0] ^crc5(0)[4] ^ crc5(0)[1];
crc5(16)[3] = din[14] ^ din[11] ^ din[8] ^ din[5] ^ din[2] ^ crc5(0)[2] ^ din[0] ^ crc5(0)[4] ^ din[3] ^ din[0] ^ crc5(0)[4] ^ crc5(0)[1] ^ din[6] ^ din[3] ^ din[0] ^ crc5(0)[4] ^ crc5(0)[1] ^ din[1] ^ crc5(0)[3] ^ din[9] ^ din[6] ^ din[3] ^ din[0] ^ crc5(0)[4] ^ crc5(0)[1] ^ din[1] ^ crc5(0)[3] ^ din[4] ^ din[1] ^ crc5(0)[3] ^ crc5(0)[0] ^ din[12] ^ din[9] ^ din[6] ^din[3] ^ din[0] ^ crc5(0)[4] ^ crc5(0)[1] ^ din[1] ^ crc5(0)[3] ^ din[4] ^din[1] ^ crc5(0)[3] ^ crc5(0)[0] ^ din[7] ^ din[4] ^ din[1] ^ crc5(0)[3] ^crc5(0)[0] ^ din[2] ^ crc5(0)[2];
crc5(16)[4] = din[13] ^ din[10] ^ din[7] ^ din[4] ^ din[1] ^ crc5(0)[3] ^ crc5(0)[0] ^ din[2] ^ crc5(0)[2] ^ din[5] ^ din[2] ^ crc5(0)[2] ^ din[0] ^ crc5(0)[4] ^ din[8] ^ din[5] ^ din[2] ^ crc5(0)[2] ^ din[0] ^ crc5(0)[4] ^ din[3] ^ din[0] ^ crc5(0)[4] ^ crc5(0)[1] ^ din[11] ^ din[8] ^ din[5] ^din[2] ^ crc5(0)[2] ^ din[0] ^ crc5(0)[4] ^ din[3] ^ din[0] ^ crc5(0)[4] ^crc5(0)[1] ^ din[6] ^ din[3] ^ din[0] ^ crc5(0)[4] ^ crc5(0)[1] ^ din[1] ^crc5(0)[3];
根据a^a^b=b(a,b为2进制变量)消去冗余项,再将crc5(0)的初值11111带入后,根据a^1^1=a (a为2进制变量) 消去冗余项,结果可化简为:
crc5(16)[0] = din[3] ^ din[12] ^ din[10] ^ din[15] ^ din[2] ^ 1^ din[4] ^ din[5] ^ din[9] ^ din[6];
crc5(16)[1] = din[3] ^ din[2] ^ din[11] ^ din[14] ^ din[1] ^ din[8] ^din[4] ^ din[9] ^ din[5];
crc5(16)[2] = din[7] ^ din[0] ^ din[12] ^ din[15] ^ din[8] ^ din[1] ^din[13] ^ din[5] ^ din[6] ^ din[9];
crc5(16)[3] = din[7] ^ din[0] ^ din[12] ^ din[11] ^ din[14] ^ din[8]^ din[4] ^ din[6] ^ din[5];
crc5(16)[4] = din[3] ^ din[7] ^ din[10] ^ din[11] ^ din[4] ^ din[13]^ din[6] ^ din[5];
3、接收到的链路控制字或链路命令字的CRC-5的校验计算结果应为01100,否则报告CRC-5校验失败。
记1个“单比特数据异或” 所需的硬件延时为T,对于USB3.1协议提供的单比特迭代的CRC-5硬件实现方案,单次迭代中延时最大的是生成CRC-5寄存器的第3位,即crc5(n)[2],数据的最高位(bit 32),需要做两次“单比特异或”,对应的延时为2*T,在发送方,生成CRC-15需要迭代11次,因此所需的总延时为22 *T,在接收校验方,计算CRC-15需要迭代16次,因此所需的总延时为32 *T。
对于本发明中提出的基于数据位宽展开和冗余项消除的CRC-5硬件实现方案,在发送方,根据展开和冗余项消除后的计算公式,延时最长的路径为:
crc5(11)[2] = din[3] ^ din[0] ^ din[7] ^ din[10] ^ din[2] ^ din[8] ^din[1] ^ din[4];
需要8个“单比特数据异或”,因此生成CRC-15需要的总延时为8*T。
在接收校验方,延时最长的路径为:
crc5(16)[2] = din[7] ^ din[0] ^ din[12] ^ din[15] ^ din[8] ^ din[1] ^din[13] ^ din[5] ^ din[6] ^ din[9];
需要9个“单比特数据异或”,因此生成CRC-15需要的总延时为9*T。
表1中将USB3.1协议提供的单比特迭代和本发明技术方案中基于位宽展开和冗余项消除的CRC-5硬件实现方案完成单周期数据运算所需的硬件延时进行了比较。
表1
注:表格中所有延时数据的单位均为“单比特数据异或” 所需的硬件延时。
结合附图1、2和8,本实施例提供一种基于数据位宽展开和冗余项消除的USB3.1协议五比特循环冗余校验的硬件,其特征在于,应用于USB3.1设备,所述USB3.1设备包括主机、集线器和从设备,所述硬件包括CRC-5的计算逻辑单元以及相关的寄存器,所述CRC-5的计算逻辑单元及相关的寄存器包括发送模块和接收模块,所述发送模块用于在发送端对链路控制字和链路命令字的原始内容进行CRC-5计算,并将计算结果与原始内容整合形成完整的链路控制字或链路命令字后发出,所述接收模块用于接收发送模块发出的链路控制字或链路命令字,在接收端对链路控制字和链路命令字进行CRC-5计算并校验,判断CRC-5计算结果是否为01100,若否,则表示数据在传输过程中出错,报告CRC-5校验失败。
本发明的有益之处在于:本发明通过数据位宽展开并消除冗余项,有效的减少了硬件延时,使系统可以工作在更高的频率。
以上显示和描述了本发明的基本原理、主要特征和优点。本行业的技术人员应该了解,上述实施例不以任何形式限制本发明,凡采用等同替换或等效变换的方式所获得的技术方案,均落在本发明的保护范围内。
Claims (7)
1.USB3.1协议五比特循环冗余校验的硬件实现方法,其特征在于,应用于USB3.1设备,所述USB3.1设备包括主机、集线器和从设备,所述方法包括发送端对链路控制字和链路命令字的CRC-5计算方法和接收端对链路控制字和链路命令字的CRC-5计算方法。
2.USB3.1协议五比特循环冗余校验的硬件实现方法,其特征在于,所述发送端对链路控制字和链路命令字的CRC-5计算方法,包括以下步骤:
一、CRC-5寄存器的初始值为11111,记为crc5[4:0],从高位到低位依次为crc5[4],crc5[3],crc5[2],crc5[1],crc5[0];
二、取crc5(n)代表CRC-5寄存器迭代n次后的值,crc5(n+1)为CRC-5寄存器迭代n+1次之后的值,crc5(n)[m]代表CRC-5寄存器迭代n次后第m位的值,其中,m取值从0到4,CRC-5寄存器的初始值为crc5(0)[4:0],当前数据输入位din,基于单步迭代公式;
三、在迭代11次之后,进行展开,得到展开结果;
四、展开后的表达式中,根据a^a^b=b,其中,a,b为2进制变量消去冗余项;
五、再将crc5(0)的初值11111带入后,根据a^1^1=a,其中,a为2进制变量,进行简化,得到crc5(11)的值;
六、将步骤五中迭代11次并化简得到的crc5(11)按位取反并从高位到低位颠倒次序,得到最终的CRC-5计算结果;
七、步骤六中的CRC-5计算结果,将最高位MSB放到链路控制字或链路命令字的第11位,次高位放到第12位,最低位LSB放到第15位,按照从低位到高位的顺序将完整的16比特链路控制字或链路命令字进行发送。
3.USB3.1协议五比特循环冗余校验的硬件实现方法,其特征在于,所述接收端对链路控制字和链路命令字的CRC-5计算方法,包括以下步骤:
一、CRC-5寄存器的初始值为11111,记为crc5[4:0],从高位到低位依次为crc5[4],crc5[3],crc5[2],crc5[1],crc5[0];
二、取crc5(n)代表CRC-5寄存器迭代n次后的值,crc5(n+1)为CRC-5寄存器迭代n+1次之后的值,crc5(n)[m]代表CRC-5寄存器迭代n次后第m位的值,其中,m取值从0到4,CRC-5寄存器的初始值为crc5(0)[4:0],当前数据输入位din,基于单步迭代公式:
三、在迭代16次之后,进行展开,得到展开结果;
四、展开后的表达式中,根据a^a^b=b,其中,a,b为2进制变量消去冗余项;
五、再将crc5(0)的初值11111带入后,根据a^1^1=a ,其中,a为2进制变量,进行简化,得到crc5(16)的值;
六、接收到的链路控制字或链路命令字的CRC-5的校验计算结果应为01100,否则报告CRC-5校验失败。
4.USB3.1协议五比特循环冗余校验的硬件实现方法,其特征在于,所述发送端对链路控制字和链路命令字的CRC-5计算方法的步骤二中的单步迭代公式和接收端对链路控制字和链路命令字的CRC-5计算方法的步骤二中的单步迭代公式均为以下公式:
crc5(n+1)[0] = din ^ crc(n) [4];
crc5(n+1) [1] = crc(n) [0];
crc5(n+1) [2] = din ^ crc(n) [4] ^ crc(n) [1];
crc5(n+1) [3] = crc(n) [2];
crc5(n+1) [4] = crc(n) [3]。
5.USB3.1协议五比特循环冗余校验的硬件实现方法,其特征在于,在发送端对链路控制字和链路命令字的CRC-5计算方法的步骤二中,所述数据输入位din,从链路控制字或链路命令字的第0位开始计算,直到第10位。
6.USB3.1协议五比特循环冗余校验的硬件实现方法,其特征在于,在接收端对链路控制字和链路命令字的CRC-5计算方法的步骤二中,所述数据输入位din,从链路控制字或链路命令字的第0位开始计算,直到第15位。
7.USB3.1协议五比特循环冗余校验的硬件,其特征在于,应用于USB3.1设备,所述USB3.1设备包括主机、集线器和从设备,所述硬件包括CRC-5的计算逻辑单元以及相关的寄存器,所述CRC-5的计算逻辑单元及相关的寄存器包括发送模块和接收模块,所述发送模块用于在发送端对链路控制字和链路命令字的原始内容进行CRC-5计算,并将计算结果与原始内容整合形成完整的链路控制字或链路命令字后发出,所述接收模块用于接收发送模块发出的链路控制字或链路命令字,在接收端对链路控制字和链路命令字进行CRC-5计算并校验,判断CRC-5计算结果是否为01100,若否,则表示数据在传输过程中出错,报告CRC-5校验失败。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110196533.1A CN112799873A (zh) | 2021-02-22 | 2021-02-22 | Usb3.1协议五比特循环冗余校验的硬件实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110196533.1A CN112799873A (zh) | 2021-02-22 | 2021-02-22 | Usb3.1协议五比特循环冗余校验的硬件实现方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112799873A true CN112799873A (zh) | 2021-05-14 |
Family
ID=75815269
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110196533.1A Withdrawn CN112799873A (zh) | 2021-02-22 | 2021-02-22 | Usb3.1协议五比特循环冗余校验的硬件实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112799873A (zh) |
-
2021
- 2021-02-22 CN CN202110196533.1A patent/CN112799873A/zh not_active Withdrawn
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112214349B (zh) | 一种数据循环冗余校验装置和方法 | |
WO2010115371A1 (zh) | 一种循环冗余校验crc码的实现方法和装置 | |
EP1735795A2 (en) | Method and apparatus for protecting parts of a packet in a wireless network | |
JPH07273742A (ja) | 並列データ伝送装置 | |
TWI518500B (zh) | 資料傳輸檢測裝置、資料傳輸檢測方法及其電子裝置 | |
CN111698271A (zh) | 一种hdlc协议ip核 | |
US7577895B2 (en) | Initialization seed to allow data padding for cyclic redundancy code calculation | |
CN112612638A (zh) | 基于usb3.2协议16比特循环冗余校验的硬件实现方法 | |
CN112799873A (zh) | Usb3.1协议五比特循环冗余校验的硬件实现方法 | |
CN112799998A (zh) | Usb3.0协议五比特循环冗余校验的硬件实现方法 | |
CN108574490B (zh) | 计算循环冗余校验crc编码的方法及装置 | |
US20220286145A1 (en) | Pipelined forward error correction for vector signaling code channel | |
CN112596943A (zh) | 基于usb3.1协议16比特循环冗余校验的硬件实现方法 | |
US11748295B2 (en) | Scramble and descramble hardware implementation method based on data bit width expansion | |
CN112596944A (zh) | 基于usb3.0协议16比特循环冗余校验的硬件实现方法 | |
CN115129509A (zh) | 一种数据传输方法、装置、介质 | |
JP3059305B2 (ja) | 伝送誤り検出方法及びこれを用いた伝送システム | |
Tolentino et al. | FPGA-based redundancy bits reduction algorithm using the enhanced error detection correction code | |
CN108540258B (zh) | 一种循环冗余码校验方法及装置 | |
US7106820B2 (en) | System and method for establishing word synchronization | |
JP3579039B2 (ja) | 巡回符号を用いた誤り訂正回路 | |
JP3269415B2 (ja) | Crc演算回路 | |
US10846085B2 (en) | Multi-lane data processing circuit and system | |
CN114726482B (zh) | 一种spi数据传输方法 | |
Juan et al. | Utilization of DSP algorithms for Cyclic Redundancy Checking (CRC) in Controller Area Network (CAN) controller |
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 | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20220113 Address after: Room a669-18, building 2, No. 351, GuoShouJing Road, China (Shanghai) pilot Free Trade Zone, Pudong New Area, Shanghai 200120 Applicant after: XINQIYUAN (SHANGHAI) SEMICONDUCTOR TECHNOLOGY Co.,Ltd. Address before: 2 / F, administrative approval center, 1568 Hongfeng Road, Huzhou City, Zhejiang Province, 313000 Applicant before: CORIGINE ELECTRONIC TECHNOLOGY CO.,LTD. |
|
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20210514 |