一种实现可变长crc运算的电路的制作方法

文档序号:7518565阅读:347来源:国知局
专利名称:一种实现可变长crc运算的电路的制作方法
技术领域
本发明涉及USB及SATA等高速通信接口中CRC应用领域,尤其涉及一种实现可变长CRC运算的电路。
背景技术
随着微电子技术的发展,大容量、高速的数据传输应用需求越来越多,对带宽的要求也越来越高,作为重要的高速通信接口,USB和SATA已经大量应用于日常生活的电子产
P
ΡΠ OCRC(Cyclic Redundancy Check,循环冗余校验)的技术特点是检错能力极强,开销小,易于用编码器及检测电路实现。从其检错能力来看,它所不能发现的错误的几率为 0. 0047%以下。从性能上和开销上考虑,均远优于奇偶校验及算术和校验等方式,因而在数据存储和数据通讯领域,CRC技术得到了广泛的应用。如何将可变长CRC运算应用于USB, SATA等高速通信接口技术领域中是本发明要解决的技术问题。

发明内容
本发明目的提供一种实现可变长CRC运算的电路,通过把传输数据包截为不大于 32比特长度的子数据包,并根据子数据包的有效数据长度采取不同的CRC运算方法来计算对应的CRC值。一种实现可变长CRC运算的电路,由二选一选择器、CRC运算??楹褪涑鲅≡衲?楣钩?。二选一选择器,用于根据各自的选择条件对输入数据进行选择输出;CRC运算???,根据不同的初始值,对输入数据进行CRC运算;输出选择???,根据电路输入数据,选择输出CRC运算结果;本发明中二选一选择器为两个,分别为选择器MUXl和选择器MUX2。选择器MUXl 的输入端有两个一个是常数,设为32’ hff_ff,另外一个输入端连接到输出选择??榈氖涑龆薱rc_ValUe;其控制端为电路的输入信号first_byte,输出端分别连接到四个CRC运算??榈氖淙攵薱rcjnitialjalue ;控制端输入信号first_byte位宽为1比特,表示当前输入的四字节数据是否包含传输数据包数据的第一字节。当first_byte为1’ bl时,表示当前输入的四字节数据包含传输数据包数据的第一字节,将常数32’hff_ff输出到crc_ initial_value数据线上;否则将crc_value输出到crc_initial_value数据线上。选择器MUX2有四个输入端,分别连接于四个CRC运算??榈氖涑龆?,其控制端为电路的输入信号 data—length。CRC运算??槲母?,分别为电路输入数据din有效位宽为32位的CRC_32、电路输入数据din有效位宽为M位的CRC_24、电路输入数据din有效位宽为16位的CRC_16和电路输入数据din有效位宽为8位的CRC_8。四个CRC运算??榈氖淙攵硕嘉缏肥淙胧載in和MUXl的输出crc_initial_value。电路输入信号data_length位宽为2比特,当data_length为2,bll时,当前进行CRC运算的输入数据din的有效位宽为32比特,则选择器MUX2选择输出CRC_32b??榈脑怂憬峁鹀rc32_dout到crc_dout上。当data_length 为2’bl0时,当前进行CRC运算的输入数据din的有效位宽为M比特,则选择器MUX2选择输出 CRC_24b ??榈脑怂憬峁?crc24_dout 到 crc_dout 上。当 data_length 为 2,b01 时, 当前进行CRC运算的输入数据din的有效位宽为16比特,则选择器MUX2选择输出CRC_16b ??榈脑怂憬峁鹀rcl6_dout到crc_dout上。当data_length为2,b00时,当前进行CRC 运算的输入数据din的有效位宽为8比特,则选择器MUX2选择输出CRC_8b??榈脑怂憬峁?crc8_dout 至Ij crc_dout 上。输出选择??榈氖淙攵宋拥缏肥淙胄藕舕ast_byte和二选一选择器MUX2的输出CrC_doUt。laSt_byte位宽为1比特,表示当前输入的四字节数据是否包含传输数据包数据的最后一字节。当last_byte为l’bl时,表示当前输入的四字节数据包含传输数据包数据的最后一字节,把crc_dout的值输出到dout数据线上;否则把crc_dout的值输出至Ij crc_value数据线上。本发明根据子数据包的有效数据长度采取不同的CRC运算方法来计算对应的CRC 值,从而解决了传统实现方式中因数据包长度不定长所带来的数据CRC运算问题。


附图1本发明提供的实现可变长CRC运算的电路结构图具体实施方案以下结合本发明所提供的附图1对发明内容进行详细的描述。实现可变长CRC运算的电路中包含两个二选一选择器MUXl和MUX2,四个CRC运算??镃RC_32b,CRC_24b, CRC_16b和CRC_8b,一个输出选择???。在三根信号f irst_byte, last_byte,data_length的控制下,完成对din的CRC运算操作。USB数据传输中数据包的长度会大于等于一字节,假如一包数据长度为72比特, 则该包数据需要分成三次CRC运算,第一次和第二次参与CRC运算的数据的有效长度都是 32比特,第三次参与CRC运算的数据的有效长度为8比特。当数据din被送入到CRC电路后,首先会同时进入到四个CRC运算???。同时二选一选择器MUXl通过f irst_byte信号来判断当前这32比特数据中,是否包含该包数据的第一字节的数据。如果包含,则把32’hff_ ff当做初始值,通过crcjnitialjalue输送到四个CRC运算???;否则把crcjalue通过crcjnitialvalue输送到四个CRC运算???。运算完成后,四个CRC运算??榈脑怂憬峁直鹜ü?crc32_dout、crc24_dout、crcl6_dout 和 crc8_dout 送往二选一选择器 MUX2 ???。二选一选择器MUX2通过电路输入数据data_length来判断当前进行CRC运算的输入数据din的有效位是多少,从而判断出哪个CRC运算??榈脑怂憬峁行?。当datajength 为2’bll时,当前进行CRC运算的输入数据din的有效位宽为32比特,则选择器MUX2选择输出 CRC_32b ??榈脑怂憬峁?crc32_dout 到 crc_dout 上。当 data_length 为 2,blO 时, 当前进行CRC运算的输入数据din的有效位宽为M比特,则选择器MUX2选择输出CRC_Mb ??榈脑怂憬峁鹀rc24_dout到crc_dout上。当data_length为2,b01时,当前进行CRC 运算的输入数据din的有效位宽为16比特,则选择器MUX2选择输出CRC_16b??榈脑怂憬峁鹀rcl6_dout到crc_dout上。当data_length为2,b00时,当前进行CRC运算的输入数据din的有效位宽为8比特,则选择器MUX2选择输出CRC_8b??榈脑怂憬峁鹀rc8_d0ut 到crc_doUt上。然后在输出选择??橹?,通过判断last_byte来确定当前的结果是否应该作为电路的运算结果输出。当last_byte为l’bl,则表示当前已进行CRC运算的输入数据 din中包含最后一字节数据,此时CRC运算结束,crc_dout作为最终结果输出;否则表明该数据包中还有数据尚未进行CRC运算,则把crc_doUt通过crcjalue输送到二选一选择器 MUXl中,进行新一轮迭代运算,直至该包数据中所有的数据都完成CRC运算操作。
权利要求
1.一种实现可变长CRC运算的电路,其特征在于所述电路由二选一选择器、CRC运算??楹褪涑鲅≡衲?楣钩?。
2.如权利要求1所述的一种实现可变长CRC运算的电路,其特征在于所述二选一选择器为2个,分别根据各自的选择条件对输入数据进行选择输出。
3.如权利要求1所述的一种实现可变长CRC运算的电路,其特征在于所述CRC运算??槲?个电路输入数据有效位宽为32位的CRC运算???,电路输入数据有效位宽为M位的CRC运算???,电路输入数据有效位宽为16位的CRC运算??楹偷缏肥淙胧萦行豢砦?位的CRC运算???。
4.如权利要求1或2所述的一种实现可变长CRC运算的电路,其特征在于所述2个二选一选择器为MUXl和MUX2,MUX1的一输入端为常数,另一输入端连接到输出选择??榈氖涑龆?,控制端为电路的输入信号first_byte ;MUX2有四个输入端,分别连接于四个CRC运算??榈氖涑龆?,控制端为电路的输入信号datajength。
5.如权利要求1或3所述的一种实现可变长CRC运算的电路,其特征在于所述4个CRC 运算??榈氖淙攵宋缏肥淙胧載in和MUXl的输出数据;4个CRC运算??榈氖涑鲋凳欠裼行в傻缏肥淙胄藕興atajength的值确定。
6.如权利要求1所述的一种实现可变长CRC运算的电路,其特征在于所述输出选择??榈氖淙攵宋拥缏肥淙胄藕舕ast_byte和二选一选择器MUX2的输出crc_d0ut,根据输入信号laSt_byte的值确定crc_d0ut的值输出到dout数据线或crcjalue数据线上。
全文摘要
本发明涉及一种实现可变长CRC运算的电路,由二选一选择器、CRC运算??楹褪涑鲅≡衲?楣钩?。二选一选择器根据选择条件对输入数据进行选择输出;CRC运算??楦莶煌某跏贾笛≡穸允淙胧萁胁煌珻RC运算;输出选择??楦莸缏肥淙胧?,选择输出CRC运算结果。本发明通过把传输数据包截为不大于32比特长度的子数据包,并根据子数据包的有效数据长度采取不同的CRC运算方法来计算对应的CRC值,从而解决传统实现方式中因数据包长度不定长所带来的数据CRC运算问题。
文档编号H03M13/09GK102487282SQ20101057315
公开日2012年6月6日 申请日期2010年12月3日 优先权日2010年12月3日
发明者左耀华 申请人:上?;缂傻缏酚邢拊鹑喂?br>
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1
imtoken助记词怎么填-imtoken钱包没有收益-imtoken矿工费太贵了-im钱包官网:token.im