校验和生成装置及其方法

文档序号:7508337阅读:224来源:国知局
专利名称:校验和生成装置及其方法
技术领域
本发明涉及数据处理,更具体涉及一种用来确定是否无差错地发送和接收数据的校验和生成装置及其方法。
背景技术
校验和计算是以数据的传输单位对比特数进行计数以便判定所接收的数据是否与发送机所发送的数据具有相同的比特数。如果接收机所计算的校验和匹配发送机所发送的校验和,那么判定数据被无差错地接收。校验和计算和判定在互联网协议的传输控制协议(TCP)和用户数据报协议(UDP)中执行。
校验和计算是互联网协议中最重要的数据处理之一。此外,必须高速计算校验和。传统的校验和计算方法由于其加法器以16位为单位来处理数据而导致存在其计算速度太慢的问题。
技术方案本发明提供一种能够通过以32位或更多位为单位来执行加法并将相加的结果转换成16位的校验和、来提高校验和计算速度的校验和生成装置及其方法。
有益效果根据本发明,可以通过不分隔输入数据而增加校验和计算速度。具体来说,当以ASIC器件来实现校验和生成装置时,可以通过使用该ASIC器件的库中的32位或64位加法器来增加校验和生成装置的计算速度。


图1是用于解释生成校验和的方法的视图;图2是图示根据本发明的实施例的校验和生成装置的方框图;图3是图示使用32位加法器的校验和生成装置的详细的方框图;
图4是图示使用64位加法器的校验和生成装置的详细的方框图;图5A是图示TCP段的格式的视图;图5B是图示伪首标格式的视图;和图6是图示根据本发明的实施例的生成校验和的方法的流程图。
实施模式根据本发明的一个方面,提供一种校验和生成装置,包括控制单元,当接收到对应于预定长度的数据量时,其响应于关于该预定长度的信息输出控制信号;加法单元,其接收数据、对所接收的数据执行加法、并且响应于控制信号输出相加的结果;和转换单元,其将所述相加的结果转换成校验和。
加法单元最好以32位以上(整数X16位)的单位接收数据,并对所接收的数据执行加法。
此外,转换单元最好将相加结果分成和以及进位、将所述和划分成16位的段,并且将16位的段与进位相加,从而得到最终的和。
此外,转换单元最好包括部分和加法单元,用于从相加结果中除去进位、将已除去进位的相加结果划分成16位的段、将所述16位的段相加、从而得到部分和;第一加法器,用于将所述进位与所述部分和相加;第二加法器,用于将第一加法器的相加结果和该相加结果中出现的进位相加;和补码计算器,用于输出第二加法器的相加结果的二进制补码值。
根据本发明的另一方面,提供一种生成校验和的方法,该方法包括步骤(a)将输入数据相加直到接收到预定控制信号;(b)当接收到所述控制信号时,输出根据相加结果得到的和以及进位;和(c)将和以及进位相加并将相加结果转换成校验和。
此外,在步骤(a)中,最好以超过32位(整数X16位)的单位接收数据,并对所接收的数据执行加法。
此外,步骤(b)最好包括步骤(b1)以超过32位(整数X16位)的单位将所接收的数据相加;和(b2)将步骤(b1)中产生的进位相加。
此外,步骤(c)最好还包括步骤(c1)从相加结果中除去进位、将已除去进位的相加结果划分成16位的段、将所述16位的段相加、从而得到部分和;(c2)将所述进位与所述部分和相加;和(c3)将步骤(c2)的相加结果和该相加结果中出现的进位相加;和(c4)输出步骤(c3)的相加结果的二进制补码值。
根据本发明的另一方面,提供一种计算机可读存储介质,其中存储由计算机执行的程序,所述程序包括上述的方法。
具体实施例方式
通过参照附图及其解释将充分理解本发明及其操作优点。
现在,将参照附图详细描述本发明的示例性实施例以便详细解释本发明。在附图中,相同的附图标记表示相同的部件。
图1是用于解释生成校验和的方法的视图。
将16位加法器用于生成校验和的方法。首先,将数据(0001 f203 f4f5 f6f7)分成16位的数据段并且对该16位的数据段执行第一加法。就是说,第一加法是0001+f203+f4f5+f6f7。第一相加值Sum 1为2ddf0。由于使用16位加法器,所以第一相加值Sum 1的进位是2。在第二加法中,将第一相加值Sum 1的进位加回到16位加法器以便得到第二相加值Sum 2,即最终的值2+ddf0=ddf2。通过对最终的值ddf2执行二进制补码运算来得到校验和。因此,校验和为220d。在RFC1071文档中详细公开了校验和计算。
图2是图示根据本发明的实施例的校验和生成装置的方框图。
校验和生成装置包括加法单元210、控制单元220和转换单元230。以32位或64位的段为单位的数据被输入到加法单元210。在一些情况下,可以以大于64位的段为单位输入数据。可以用32位或64位加法器来构造加法单元210。而且,可以用80位、96位或128位加法器来构造加法单元210。在本发明中,输入数据没有被分成16位的数据段而是按照原样将其相加。响应于关于预定输入数据长度的信息,控制单元220确定是否收到并累积对应于该输入数据长度的输入数据。当收到对应于该长度的输入数据时,控制单元220输出控制信号至加法单元210。响应于该控制信号,加法单元210输出其相加值至转换单元230。转换单元230将相加值转换成16位的校验和并输出该校验和。
加法单元210将输入数据累积并相加以便得到部分和直到从控制单元220接收到控制信号。单独进行进位加法。考虑到进位的最大值,以10位为单位来存储进位加法的结果,即进位和。当从控制单元220接收到控制信号时,将部分和以及进位和输出至转换单元230。转换单元230将部分和分成16位的段并将所述16位的段相加。将相加的结果加回到进位和以便得到最终的和。转换单元230输出最终的和的二进制补码值。例如,假设加法单元210以32位为单位执行加法并且部分和是32位的值,那么转换单元230通过将32位的部分和的高16位和低16位与进位相加来得到最终的和。此外,假设加法单元210以64位为单位执行加法并且部分和为64位的值,那么转换单元230通过将该64位的部分和的最高有效16位、高16位、低16位和最低有效16位与进位相加来得到最终的和。
图3是图示使用32位加法器的校验和生成装置的详细方框图。
加法单元210包括32位加法器305和进位加法器310。32位加法器305将输入数据相加,而进位加法器310将进位相加。转换单元230包括划分加法器315、第一加法器320、第二加法器325和补码计算器330。划分加法器315将32位的数据划分成高16位数据段和低16位数据段并且将所述16位数据段相加。相加结果被加回到从第一加法器320中的进位加法器输出的进位。第二加法器将第一加法器320的相加结果310与所述进位并输出最终的和相加,所述最终的和具有16位的值。补码计算器330输出最终的和的二进制补码值。
图4是图示使用64位加法器的校验和生成装置的详细方框图。
加法单元210包括64位加法器405和进位加法器410。32位加法器405将输入数据相加,而进位加法器310将进位相加。转换单元230包括划分加法器415、第一加法器420、第二加法器425和补码计算器430。划分加法器415将62位的数据划分成4个16位的数据段并且将所述4个16位的数据段相加。其它部件与32位加法器相同。
以上描述的校验和计算可以被应用于任何协议,例如协议IP、TCP和UDP。现在将参照图5A和图5B详细描述在协议TCP中使用的校验和计算。
图5A是图示TCP的段的格式的视图。
TCP的段具有TCP首标510和TCP净荷520。TCP首标510具有输入校验和的校验和字段。需要伪首标以便在协议TCP中计算校验和。TCP的段中的其它字段对于技术人员是公知的,所以省略对它们的详细描述。
图5B是图示伪首标格式的视图。
伪首标包括源IP地址、目的IP地址、填充符、协议号、TCP分组长度。伪首标没有被实际发送而是用于计算TCP分组的校验和。通过填充操作使数据的末端部分具有值0以便使数据长度是16位的倍数。TCP首标的校验和字段具有值1。以16位为单位执行加法。将相加的结果的二进制补码值输入校验和字段。当接收到TCP的段时,接收机从IP首标得到IP地址、生成TCP伪首标并且计算校验和。
图6是图示根据本发明的实施例的生成校验和的方法的流程图。
输入数据没有被分成16位的数据段而是按照原样将其相加(S610)。相加结果中出现的进位被单独加在一起。考虑到进位的最大值,以10位为单位存储进位的相加结果。判定是否收到并累积对应于输入数据长度的输入数据(S620)。将输入数据相加,直到收到对应于该长度的输入数据。将相加的结果转换成16位的值(S630)。输出该16位的值的二进制补码(S640)。
现在将详细描述在输入数据具有16位的值的情况下的步骤S630。分别用Sum1和Carry1来表示相加结果以其进位。因此,Temp1=(Sum1的16位最高有效位)+(Sum1的16位最低有效位)+Carry1。如果由Carry2表示Temp1的进位,那么Temp2=(Temp1)+(Carry2)。值Temp1成为16位的最终的值。在输入数据具有64位的值的情况下,通过将4个16位的段和进位相加得到值Temp1。通过与上述相同的计算得到值Temp2。
可以利用程序来实现上述生成校验和的方法。本领域的技术人员能够容易地推想出构成该程序的代码和代码段。此外,程序被存储在计算机可读存储介质中。由计算机读取并执行该程序。计算机可读存储介质包括磁性存储介质、光存储介质和载波介质。
权利要求
1.一种校验和生成装置,包括控制单元,当接收到对应于预定长度的数据量时,其响应于关于该预定长度的信息输出控制信号;加法单元,其接收数据、对所接收的数据执行加法、并且响应于控制信号输出相加结果;和转换单元,其将所述相加结果转换成校验和。
2.根据权利要求1所述的校验和生成装置,其中校验和具有16位的值。
3.根据权利要求1所述的校验和生成装置,其中加法单元以32位以上(整数X16位)的单位接收数据,并对所接收的数据执行加法。
4.根据权利要求1所述的校验和生成装置,其中转换单元将相加结果分成和以及进位、将所述和划分成16位的段,并且将16位的段与进位相加,从而得到最终的和。
5.根据权利要求4所述的校验和生成装置,其中当最终的和中出现进位时,转换单元从最终的和中除去进位并且将所述进位与已经除去进位的最终的和相加,从而输出加上进位的最终的和。
6.根据权利要求5所述的校验和生成装置,其中转换单元输出加上进位的最终的和的二进制补码值作为16位的校验和。
7.根据权利要求1所述的校验和生成装置,其中加法单元包括加法器,用于以32位以上(整数X 16位)的单位将所接收的数据相加;和进位加法器,用于将所述加法器中生成的进位相加。
8.根据权利要求1所述的校验和生成装置,其中转换单元包括部分和加法单元,用于从相加结果中除去进位、将已除去进位的相加结果划分成16位的段、将所述16位的段相加,从而得到部分和;第一加法器,用于将所述进位与所述部分和相加;第二加法器,用于将第一加法器的相加结果和该相加结果中出现的进位相加;和补码计算器,用于输出第二加法器的相加结果的二进制补码值。
9.一种生成校验和的方法,该方法包括步骤(a)将输入数据相加直到接收到预定控制信号;(b)当接收到所述控制信号时,输出根据相加结果得到的和以及进位;和(c)将和以及进位相加并将相加结果转换成校验和。
10.根据权利9所述的生成校验和的方法,其中校验和具有16位的值。
11.根据权利9所述的生成校验和的方法,其中当接收到对应于输入数据长度的数据量时输出控制信号。
12.根据权利9所述的生成校验和的方法,其中,在步骤(a)中,以32位以上(整数X 16位)的单位接收数据并且对所接收的数据执行加法。
13.根据权利9所述的生成校验和的方法,其中,在步骤(c)中,将相加结果分成和以及进位、将所述和划分成16位的段并且将16位的段与进位相加,从而得到最终的和。
14.根据权利13所述的生成校验和的方法,其中,在步骤(c)中,当最终的和中出现进位时,从最终的和中除去该进位并且将所述进位与已经除去进位的最终的和相加,从而输出加上进位的最终的和。
15.根据权利14所述的生成校验和的方法,其中,在步骤(c)中,输出加上进位的最终的和的二进制补码值作为16位的校验和。
16.根据权利9所述的生成校验和的方法,其中,步骤(b)还包括步骤(b1)以32位以上(整数X 16位)的单位将所接收的数据相加;和(b2)将步骤(b1)中产生的进位相加。
17.根据权利9所述的生成校验和的方法,其中,步骤(c)还包括步骤(c1)从相加结果中除去进位、将已除去进位的相加结果划分成16位的段、将所述16位的段相加,从而得到部分和;(c2)将所述进位与所述部分和相加;(c3)将步骤(c2)的相加结果和该相加结果中出现的进位相加;和(c4)输出步骤(c3)的相加结果的二进制补码值。
18.一种计算机可读存储介质,其中存储由计算机执行的程序,所述程序包括生成校验和的方法,其中该方法包括步骤(a)将输入数据相加直到接收到预定控制信号;(b)当接收到所述控制信号时,输出根据相加结果得到的和以及进位;和(c)将和以及进位相加并将相加结果转换成校验和。
全文摘要
本发明提供一种校验和生成装置及其方法。校验和生成装置,包括控制单元,当接收到对应于预定长度的数据量时,其响应于关于该预定长度的信息输出控制信号;加法单元,其接收数据、对所接收的数据执行加法、并且响应于控制信号输出相加结果;和转换单元,其将所述相加结果转换成校验和。根据该校验和生成装置,可以增加校验和计算速度。
文档编号H03M13/09GK1894670SQ200480037679
公开日2007年1月10日 申请日期2004年12月10日 优先权日2003年12月16日
发明者崔贤石 申请人:三星电子株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1