CN116781214A - 一种解码模块生成方法、设备以及可读存储介质 - Google Patents
一种解码模块生成方法、设备以及可读存储介质 Download PDFInfo
- Publication number
- CN116781214A CN116781214A CN202311056528.6A CN202311056528A CN116781214A CN 116781214 A CN116781214 A CN 116781214A CN 202311056528 A CN202311056528 A CN 202311056528A CN 116781214 A CN116781214 A CN 116781214A
- Authority
- CN
- China
- Prior art keywords
- module
- error
- polynomial
- value
- location
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 41
- 208000024891 symptom Diseases 0.000 claims abstract description 18
- 238000004364 calculation method Methods 0.000 claims description 40
- 238000012937 correction Methods 0.000 claims description 14
- 238000004590 computer program Methods 0.000 claims description 7
- 238000005336 cracking Methods 0.000 claims description 7
- 239000000758 substrate Substances 0.000 claims 2
- 238000012545 processing Methods 0.000 description 19
- 238000007792 addition Methods 0.000 description 10
- 238000013461 design Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 3
- 238000006467 substitution reaction Methods 0.000 description 3
- 238000011156 evaluation Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 208000011580 syndromic disease Diseases 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Landscapes
- Error Detection And Correction (AREA)
Abstract
本申请提供了一种解码模块生成方法、设备以及可读存储介质。所述方法包括:获取用户输入的配置参数,其中,所述配置参数包括:解码模块的并行度、是否支持截短码中的一种或者多种;所述配置参数还包括:使用的伽罗华域、伽罗华域中使用的本原多项式、伽罗华域中使用的生成多项式中的一种或者多种,所述并行度为单位时钟周期内同时处理的符号数量;根据所述配置参数生成对应的解码模块,其中,所述解码模块包括征候值模块、关键方程求解模块,错误位置模块以及错误值模块。
Description
技术领域
本发明涉及通信领域,尤其涉及一种解码模块生成方法、设备以及可读存储介质。
背景技术
在数据实际的传输过程中,时常会因为各种环境因素的干扰造成传输的数据发生错误,并最终导致接收方收到的数据与发送方发送的数据不完全一致。如果每次都对出错的数据进行重传,则会产生过大的带宽开销。此时,数据前向纠错(Forward ErrorCorrection,FEC)技术应运而生。发送方通过编码模块在数据后面附加上若干位的编码计算出的校验码,接收方就可以通过解码模块对数据进行解码纠错,从而大大减少了链路上的开销。
但是,不同的环境中所需要的解码模块是不相同的,一个解码模块很难适应不同环境的不同要求。
发明内容
本发明实施例提供了一种解码模块生成方法、设备以及可读存储介质,能够根据不同配置参数生成不同的解码模块。
第一方面,提供了一种解码模块生成方法,包括如下步骤:
获取用户输入的配置参数,其中,所述配置参数包括:解码模块的并行度、是否支持截短码中的一种或者多种;所述配置参数还包括:使用的伽罗华域、伽罗华域中使用的本原多项式、伽罗华域中使用的生成多项式中的一种或者多种,所述并行度为单位时钟周期内同时处理的符号数量;
根据所述配置参数生成对应的解码模块,其中,所述解码模块包括征候值模块、关键方程求解模块,错误位置模块以及错误值模块,所述征候值模块用于将所述生成多项式的所有根代入根据接收到的数据生成的接收多项式得到征候值;所述关键方程求解模块用于对错误位置多项式的系数进行求解,得到系数结果,所述错误位置多项式的根为所述接收到的数据的错误位置,所述错误位置多项式的系数和所述征候值相关;所述错误位置模块用于根据所述系数结果计算出接收到的数据的错误位置;所述错误值模块用于根据所述系数结果和所述征候值计算出接收到的数据的错误值。
在一些可能的设计中,所述解码模块还包括修正模块,所述修正模块用于根据所述错误位置以及所述错误值对接收到的数据进行修正。
在一些可能的设计中,在所述配置参数被设置为支持截短码的情况下,生成的解码模块中的所述错误位置模块和所述错误值模块是并联的;
在所述配置参数被设置为不支持截短码的情况下,生成的解码模块中的所述错误位置模块和所述错误值模块是串联的。
在一些可能的设计中,在所述配置参数被设置为解码模块的并行度为m时,其中,m为大于1的整数,生成的解码模块中的征候值模块中的接收多项式表示为:
其中,为所述接收多项式,/>为所述接收多项式的系数,为所述接收的数据,n为接收的数据的符号数量,/>分别为所述生成多项式的根的一次幂至m次幂。
在一些可能的设计中,所述征候值模块的电路包括:m个乘法器、加法器以及寄存器;
将第一符号输入所述加法器进行相加;
将第二符号以及所述生成多项式的根的一次幂输入第一乘法器进行相乘,得到第一相乘结果,并将所述第一相乘结果输入所述加法器进行相加;
将第三符号以及所述生成多项式的根的二次幂输入第二乘法器进行相乘,得到第二相乘结果,并将所述第二相乘结果输入所述加法器进行相加;
…;
将第m符号以及所述生成多项式的根的m-1次幂输入第m-1乘法器进行相乘,得到第m-1相乘结果,并将所述第m-1相乘结果输入所述加法器进行相加;
将所述寄存器上一个时刻的值以及所述生成多项式的根的m次幂输入第m乘法器进行相乘,得到第m相乘结果,并将所述第m相乘结果输入所述加法器进行相加;
将所述加法器计算得到的和作为当前的值输入到所述寄存器进行存储。
在一些可能的设计中,所述错误位置模块对应的错误位置多项式为:
其中,为所述错误位置多项式的计算结果,/>为所述系数结果,/>为所述解码模块最大的能纠正的错误符号的数量,/>为所述错误位置多项式的根的一次幂至2t-1次幂。
在一些可能的设计中,所述错误位置模块包括多个位置计算模块,所述多个位置计算模块用于通过暴力破解所述错误位置多项式从而确定所述接收的数据的错误位置,所述多个位置计算模块中的每个位置计算模块分别对所述接收的数据每个位置进行计算。
在一些可能的设计中,所述错误值模块包括多个值计算模块,所述多个值计算模块用于通过暴力破解所述错误位置多项式和错误定位多项式从而确定所述接收的数据的错误值,所述多个值计算模块中的每个值计算模块分别对所述接收的数据的每个位置的错误值进行计算,同一个位置的不同值计算模块负责对不同的错误值进行计算。
第二方面,提供了一种计算机设备,所述计算机设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现根据第一方面任一项所述的方法。
第三方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,当所述计算机指令在计算机设备上运行时使得所述计算机设备执行根据第一方面任一项所述的方法。
附图说明
为了更清楚地说明本发明实施例或背景技术中的技术方案,下面将对本发明实施例或背景技术中所需要使用的附图进行说明。
图1是本申请提供的一种解码模块的结构示意图;
图2是本申请提供的一种解码模块生成方法的流程示意图;
图3至图5是本申请提供的一种解码模块中的征候值模块包括的一些可能的电路的示意图;
图6是本申请提供的一种解码模块中的错误位置模块包括的电路的示意图;
图7是本申请提供的一种支持截短码的解码模块的结构示意图;
图8是本申请提供的一种不支持截短码的解码模块的结构示意图;
图9是本申请提供的一种解码模块中的错误值模块的内部处理流程示意图;
图10是本申请实施例提供的一种计算设备的结构示意图。
具体实施方式
下面结合本发明实施例中的附图对本发明实施例进行描述。本发明的实施方式部分使用的术语仅用于对本发明的具体实施例进行解释,而非旨在限定本发明。
参见图1,图1是本申请提供的一种解码模块的结构示意图。如图1所示,本申请的解码模块包括:修正模块110、征候值模块120、关键方程求解模块130,错误位置模块140以及错误值模块150。
修正模块110用于对接收到的数据进行缓存。因此,修正模块110可以设置先进先出(First Input First Output,FIFO)队列对数据进行存储。
征候值模块120用于将生成多项式的所有根代入根据接收到的数据生成的接收多项式得到征候值。可以理解,将输入的数据看为接收多项式中各项的系数构造接收多项式,如果传输过程中没有发生错误,则生成多项式的根一定也是接收到的数据构造的接收多项式的根。将生成多项式的所有根代入接收多项式,如果结果均为0,则说明传输过程中没有发生错误;否则,则说明传输过程中发生了错误,将生成多项式的根待入后算得的结果数组称为这个数据的征候值。
关键方程求解模块用于对错误位置多项式的系数进行求解,得到系数结果。具体地,将错误位置作为根定义一个错误位置多项式,其展开后的系数仅与征候值有关。关键方程求解模块可以采用berlekamp-messey算法对错误位置多项式的系数进行求解,得到系数结果。并分别将系数结果发送给错误位置模块140以及错误值模块150。
错误位置模块140用于根据系数结果计算出接收到的数据的错误位置。其中,系数结果计算出来后就可以得到错误位置多项式,对错误位置多项式进行暴力破解就可以找出接收到的数据的错误位置。
错误值模块150用于根据系数结果和征候值计算出接收到的数据的错误值。
修正模块110用于根据错误位置以及错误值对接收到的数据进行修正,从而得到正确的数据。具体地,修正模块110根据查找到的错误位置定位到接收的数据中的错误数据,并将错误数据与计算出的错误值相加得到纠正后的正确的数据。
但是,不同场景下的解码模块差异较大,不能做到通用,而且,手动对解码模块修改的工作量较大,修改完成后得到的解码模块适用的场景也有限,灵活度不足。每次需要新的解码模块,都需要重新修改代码,例如,寄存器传输水平(Register Transfer Level,RTL)代码,才能生成新的解码模块。
为了解决上述问题,本申请提供了一种解码模块生成方法、设备以及可读存储介质,能够根据不同配置参数生成不同的解码模块。
参见图2,图2是本申请提供的一种解码模块生成方法的流程示意图。如图2所示,本申请的解码模块生成方法,包括:
S101:获取用户输入的配置参数。
在一些可能的实施例中,配置参数包括:解码模块的并行度、是否支持截短码中的一种或者多种。此外,配置参数还可以包括:使用的伽罗华域、伽罗华域中使用的本原多项式、伽罗华域中使用的生成多项式中的一种或者多种。
使用的伽罗华域主要影响解码模块的数据粒度。解码模块的编解码均以符号为数据的最小粒度。以千兆无源光网络(Gigabit-Capable passive optical network,GPON)系统下的解码模块为例,其使用的伽罗华域为GF(256),为2的8次方,因此,符号的位宽为8比特(bit),解码模块输入的数据位宽也必须是8比特的整数倍。此外,伽罗华域也会影响本原多项式的选取,因为本原多项式本身长度应为符号位宽+1,举例说明,GF(256)下的本原多项式共有9项。简单来说,使用的伽罗华域对修正模块、征候值模块、关键方程求解模块,错误位置模块以及错误值模块均会产生影响。
伽罗华域中使用的本原多项式主要影响解码模块的基本四则运算。伽罗华域为有限域,其特性要求在两个数的乘积超出伽罗华域的范围时,应从最高位开始对本原多项式进行按位异或,直到亦或后的结果全部位于伽罗华域内。因此,本原多项式的选取会影响伽罗华域下乘法的结果。简单来说,伽罗华域中使用的本原多项式对修正模块、征候值模块、关键方程求解模块,错误位置模块以及错误值模块均会产生影响。
伽罗华域中使用的生成多项式主要影响校验码的长度。假设生成多项式是2t+1项的,t为零或者正整数,那么由编码原理易知接收的数据除以生成多项式后的余数应该是2t项的,而2t项最大可以支持解码模块纠正t个符号的错误。需要注意的是,接收方的解码模块所使用的生成多项式必须与发送方的编码模块所使用的生成多项式保持一致才能保证可以正确地进行纠错。简单来说,伽罗华域中使用的本原多项式对修正模块、征候值模块、关键方程求解模块,错误位置模块以及错误值模块均会产生影响。
解码模块的并行度为单位时钟周期内同时处理的符号数量。解码模块的并行度。解码模块的并行度主要影响编解码模块的输入位宽。编解码模块的输入位宽必须是符号的整数倍,输入位宽应为symbol乘以n比特,其中,symbol代表一个符号的位宽,n为并行度。解码模块的并行度主要影响征候值模块,错误位置模块以及错误值模块。
是否支持截短码主要影响解码模块的具体架构。截短码指待解码的数据长度不定的情况。此种情况下解码模块每次收到的可能是一个完整的数据,也可能是一个数据长度小于标准长度,但校验码长度不变的数据。举个例子说明,如果数据的标准长度是239字节的数据+16字节的校验码,那么截短码的长度可以是1字节的数据+16字节的校验码~239字节的数据+16字节的校验码中的任意一个。
S102:根据配置参数生成对应的解码模块。
在一些可能的实施例中,根据配置参数生成对应的解码模块,也就是说,当采用不同的配置参数时,将会生成不同的解码模块。用户只需要根据需要输入配置参数即可生成想要的解码模块。
下面将详细介绍如何实现解码模块的不同并行度。其中,征候值模块、错误位置模块以及错误值模块实现并行度的方式如下:
(1)如何实现征候值模块的不同并行度。
征候值模块是通过霍纳法则的形式对接收的数据生成的接收多项式进行代入生成多项式的根求值。为了实现多种不同的并行度,必须对接收多项式进行处理;
其中,为接收多项式,/>为接收多项式的系数,为接收的数据,n为接收的数据的符号数量,/>分别为生成多项式的根的一次幂至n次幂。
当每个时钟周期支持输入1个符号作为接收多项式的系数时,可以将接收多项式进行变形,得到:
其中,为接收多项式,/>为接收多项式的系数,为接收的数据,n为接收的数据的符号数量,/>为生成多项式的根的一次幂。
由上式可知,上述变形后的接收多项式可以支持每次进行一次加法和乘法运算,因此,此时的电路设计如图3所示,将第一符号输入加法器,将寄存器上一个时刻的值以及生成多项式的根输入乘法器进行相乘,得到相乘结果,并将相乘结果输入加法器进行相加,将加法器计算得到的和作为当前的值输入到寄存器进行存储;
当每个时钟周期支持输入2个符号作为接收多项式的系数时,可以将接收多项式进行变形,得到:
其中,为接收多项式,/>为接收多项式的系数,为接收的数据,n为接收的数据的符号数量,/>分别为生成多项式的根的一次幂以及二次幂。
由上式可知,上述变形后的接收多项式可以支持每次进行两次加法和两次乘法运算,因此,此时的电路设计如图4所示,将第一符号输入加法器,将第二符号以及生成多项式的根的一次幂输入第一乘法器进行相乘,得到第一相乘结果,并将第一相乘结果输入加法器进行相加,将寄存器上一个时刻的值以及生成多项式的根的二次幂输入第二乘法器进行相乘,得到第二相乘结果,并将第二相乘结果输入加法器进行相加,将加法器计算得到的和作为当前的值输入到寄存器进行存储;
以此类推;
当每个时钟周期支持输入m个符号作为接收多项式的系数时,可以将接收多项式进行变形,得到:
其中,为接收多项式,/>为接收多项式的系数,为接收的数据,n为接收的数据的符号数量,/>分别为生成多项式的根的一次幂至m次幂。
由上式可知,上述变形后的接收多项式可以支持每次只进行m次加法和m次乘法运算,因此,此时的电路设计如图5所示,将第一符号输入加法器进行相加,将第二符号以及生成多项式的根的一次幂输入第一乘法器进行相乘,得到第一相乘结果,并将第一相乘结果输入加法器进行相加,将第三符号以及生成多项式的根的二次幂输入第二乘法器进行相乘,得到第二相乘结果,并将第二相乘结果输入加法器进行相加,……,将第m符号以及生成多项式的根的m-1次幂输入第m-1乘法器进行相乘,得到第m-1相乘结果,并将第m-1相乘结果输入加法器进行相加,将寄存器上一个时刻的值以及生成多项式的根的m次幂输入第m乘法器进行相乘,得到第m相乘结果,并将第m相乘结果输入加法器进行相加,将加法器计算得到的和作为当前的值输入到寄存器进行存储。
可以理解,当推导出每个时钟周期支持输入m个符号的公式以及电路之后,就能够实现征候值模块任意的并行度,即,当m设置为不同的数值时,就可以实现不同征候值模块的并行度。
(2)如何实现错误位置模块的不同并行度。
错误位置模块实际上是将所有可能的根带入错误位置多项式进行求值,错误位置多项式是2t项的,t是解码模块能够纠正的最大符号数。如下是一个错误位置多项式的示例:
其中,为所述错误位置多项式的计算结果,/>为所述系数结果,/>为所述解码模块最大的能纠正的错误符号的数量,/>为所述错误位置多项式的根的一次幂至2t-1次幂。其中,错误位置多项式的系数/>已经在前级的关键方程求解模块求得,将可能的根代入/>,并计算代入后求得的值是否为0。
当支持每个时钟周期能够进行一次求值计算时,错误位置模块只需要包括一个位置计算模块,该位置计算模块通过k个时钟周期对错误位置多项式进行暴力破解,从而确定接收的数据的错误位置,k等于可能出现错误位置的个数。在进行计算时可以根据有限域的特性提前将的初始值准备好。通常情况下,/>的初始值为由/>表起始的/>,由此可依次查表依次得出各项的值直到最高项的/>;同时由于上一次代入的/>值与本次代入的/>值有2倍的关系,因此在每次计算完成后将代入值的各项直接乘以各自的固定系数即可得到下次需要代入的值。为了实现并行,在一个时钟周期进行对多个位置进行计算,此时,错误位置模块需要包括多个位置计算模块,多个位置计算模块用于通过暴力破解所述错误位置多项式从而确定所述接收的数据的错误位置,多个位置计算模块中的每个位置计算模块分别对接收的数据其中一个位置进行计算,不同的位置计算模块负责对不同的位置进行计算。假设接收的数据包括第一符号至第八符号,错误位置模块包括第一位置计算模块至第四位置计算模块,那么,在第一个时钟周期,第一位置计算模块负责对第一符号所在的位置进行计算,第二位置计算模块负责对第二符号所在的位置进行计算,第三位置计算模块负责对第三符号所在的位置进行计算,第四位置计算模块负责对第四符号所在的位置进行计算。在第二个时钟周期,第一位置计算模块负责对第五符号所在的位置进行计算,第二位置计算模块负责对第六符号所在的位置进行计算,第三位置计算模块负责对第七符号所在的位置进行计算,第四位置计算模块负责对第八符号所在的位置进行计算。由于在并行计算时需要每次进行多个/>的代入求值,这些/>的初始值都可以提前在参数中保存好。对应地,由于一次进行待入求值的/>个数变多了,进行下次求值所需要乘的固定系数也需要发生变化。由于多个位置计算模块均是相类似的,所以,仅以第n位置计算模块为例进行详细的说明。如图6所示,第n位置计算模块包括,第一多路选择器至第2t多路选择器,第一寄存器至第2t寄存器,第一乘法器至第2t+1乘法器以及加法器。
第一多路选择器用于在第一时钟周期选择(/>的n次幂的0次幂)进行输入,在第二时钟周期之后选择/>(/>的n次幂)与第一寄存器在上一个时刻的值通过第一乘法器进行相乘之后得到的值,输入到第一寄存器进行存储。然后,再将第一寄存器输出的值输入第2t+1乘法器中和/>(/>的0次幂)相乘,并将相乘的结果输入到加法器进行相加;
以此类推;
第2t多路选择器用于在第一时钟周期选择(/>的n次幂的(2t-1)次幂)进行输入,在第二时钟周期之后选择/>(/>的n次幂)与第2t寄存器在上一个时刻的值通过第2t乘法器进行相乘之后得到的值,输入到第2t寄存器进行存储。然后,再将第2t寄存器输出的值输入第2t+2t乘法器中和/>(/>的(2t-1)次幂)相乘,并将相乘的结果输入到加法器进行相加。
(3)如何实现错误值模块的不同并行度。
错误值模块的原理和错误位置模块的原理是相似的。错误值模块包括多个值计算模块,多个值计算模块用于通过暴力破解所述错误位置多项式和错误定位多项式从而确定接收的数据的错误值,多个值计算模块中的每个值计算模块分别对接收的数据的每个位置的错误值进行计算,同一个位置的不同值计算模块负责对不同的错误值进行计算。具体地,错误值模块包括如下步骤:
1.将所有可能的值代入错误位置多项式和错误定位多项式求值,这两个多项式的系数均在前级的关键方程求解模块已经给出。
2.错误位置多项式求值后查除法表获得值的倒数。
3.取得的倒数与错误定位多项式求得的值相乘,最后再乘以获得最终的错误值。
由原理可知,其处理过程与错误位置模块是相近的,在进行并行化时需要进行的架构调整与错误位置模块是类似的,即依据并行度的不同选择每次进行待入求值的个数,在计算每个的当前值时需要相乘的固定系数也不同,在这里就不再赘述了。
下面将详细介绍如何实现解码模块是否支持截短码。
(1)支持截短码的时候。
由于无法预测数据的具体长度,因此错误位置模块和错误值模块在搜索错误位置及错误值时不能从初始位置开始搜索,需在征候值模块计算好数据长度后再将长度信息传输到错误位置模块和错误值模块,错误位置模块和错误值模块根据数据的长度查表选取合适的初始值进行搜索。由于关键方程求解模块的处理时长为固定的2t+2个时钟周期(t为最大支持纠正的符号数量),征候值模块的处理时长为m/n个时钟周期(m为数据中包含的符号数量,n为并行度),因此也需考虑极端情况下,例如,截短码为1字节的数据+16字节的校验码,关键方程求解模块的处理时长大于征候值模块处理时长的情况,此时应在征候值模块和关键方程求解模块之间加入FIFO作为缓冲。同样地,由于错误位置模块的处理时长为m/n个时钟周期(m为数据中包含的符号数量,n为并行度),当采用串联的架构时,错误值模块的处理时长为v+d个时钟周期(v为当前搜索到的错误符号个数,d为错误值模块内部的流水线延迟),且v+d的值通常超过20,因此在支持截短码的情况下,如果将错误位置模块和错误值模块采用串联的架构,可能会导致最坏情况下错误值模块无法跟上错误位置模块的处理速度而出现溢出的情况,这个时候需要使得错误位置模块和错误值模块需要采用并联的架构,尽管会导致一些资源上的浪费,但是,可以有效避免出现溢出的情况,带来不可估计的后果。最终具体的架构如图7所示。
(2)不支持截短码的时候。
由于解码模块接收到的每个数据的长度都应是标准长度,征候值模块不再需要去计算数据的长度,错误位置模块和错误值模块可以每次都按固定的初始值进行搜索。由于每个数据解码的时间是固定的,根据流水线的定义可知,整个流水线的处理时间取决于处理时间最长的模块的处理时间。假设数据长度为m,并行度为n,则征候值模块、关键方程求解模块、错误位置模块和错误值模块的处理时间均为m/n。为了节省资源,解码模块的架构可以采用错误位置模块和错误值模块串联的架构。首先,由错误位置模块搜索出错误位置之后,错误值模块根据错误位置计算出对应的错误值。错误位置模块每个时钟周期可以输出n个位置信息给错误值模块,这些位置可能包含错误也可能不包含错误。错误值模块只需保证最坏的n个位置均包含错误的情况下总计算时长小于m/n即可。这样,错误值模块不再需要与错误位置模块同步并行计算错误值,而只需在错误值模块之后串行计算错误值即可,从而节约了大量资源。最终具体的架构如图8所示。在一具体的实施方式中,当不支持截短码的时候,错误值模块的处理流程如图9所示,错误值模块每个时钟周期从错误位置模块接收n个位置信息,(图9中以4个错误位置为例),假如接收到的位置信息存在错误,则将位置信息存入FIFO队列,并在移位寄存器中保存本周期的错误位置的个数。计算错误值时采用串行流水线的方式,比对当前的计数与寄存器中保存的错误位置的个数,大小一致时认为当前次保存的所有错误位置对应的错误值已计算完毕,继续从FIFO队列中读取下一次保存的位置信息。计算得到的错误值首先在临时寄存器中保存,直到保存满一次读取的错误位置对应的错误值为止,此时将错误值存入出口处的FIFO队列,即完成了错误值计算的并转串转并的过程。
经过计算,图7所示的架构所消耗的资源是图8所示的架构所消耗的资源的2倍。
下面将举例说明,如何对参数进行配置,从而生成不同的解码模块。
举例一:
GPON系统下的解码模块接收到的数据长度不定但数据的输入速率较低(1G/s),且其使用的是里德-所罗门编解码,即RS(255,236)编码规则,即一个符号为8比特。此时可以将解码模块的参数设置为:伽罗华域(256),本原多项式和生成多项式(遵从GPON协议规范),并行度(1),是否支持截短码(是),即,可生成如图7所示的解码模块架构。
举例二:
以太(ETH)子系统下的FEC编码子层中的解码模块每次接收到的数据块长度固定,但数据的输入速率较高(25G/s或100G/s),且其使用的是RS(528,514)编码规则,即一个符号为10比特。此时可以将解码模块的参数设置为:伽罗华域(1024),本原多项式和生成多项式(遵从IEEE 802.3协议规范),并行度(7),是否支持截短码(否),即可生成如图8所示的解码模块架构。
参见图10,图10是本申请实施例提供的一种计算设备的结构示意图。该计算设备400包括:一个或者多个处理器410、通信接口420以及存储器430。
所述处理器410、通信接口420以及存储器430通过总线440相互连接。可选地,该计算设备400还可以包括输入/输出接口450,输入/输出接口450连接有输入/输出设备,用于接收用户设置的参数等。该计算设备400能够用于实现上述的本申请实施例中设备实施例或者系统实施例的部分或者全部功能;处理器410还能够用于实现上述的本申请实施例中方法实施例的部分或者全部操作步骤。例如,该计算设备400执行各种操作的具体实现可参照上述实施例中的具体细节,如处理器410用于执行上述方法实施例中部分或者全部步骤或者上述方法实施例中的部分或者全部操作。再例如,本申请实施例中,计算设备400可用于实现上述装置实施例中一个或者多个部件的部分或者全部功能,此外通信接口420具体可用于为了实现这些装置、部件的功能所必须的通讯功能等,以及处理器410具体可用于为了实现这些装置、部件的功能所必须的处理功能等。
应当理解的是,图10的计算设备400可以包括一个或者多个处理器410,并且多个处理器410可以按照并行化连接方式、串行化连接方式、串并行连接方式或者任意连接方式来协同提供处理能力,或者多个处理器410可以构成处理器序列或者处理器阵列,或者多个处理器410之间可以分成主处理器和辅助处理器,或者多个处理器410之间可以具有不同的架构如采用异构计算架构。另外,图10所示的计算设备400,相关的结构性描述及功能性描述是示例性且非限制性的。在一些示例性实施例中,计算设备400可以包括比图10所示的更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者具有不同的部件布置。
处理器410可以有多种具体实现形式,例如处理器410可以包括中央处理器(central processingunit,CPU)、图形处理器(graphic processing unit,GPU)、神经网络处理器(neural-networkprocessing unit,NPU)、张量处理器(tensor processing unit,TPU)或数据处理器(data processing unit,DPU)等一种或多种的组合,本申请实施例不做具体限定。处理器410还可以是单核处理器或多核处理器。处理器410可以由CPU和硬件芯片的组合。上述硬件芯片可以是专用集成电路(application-specificintegrated circuit,ASIC),可编程逻辑器件(programmable logicdevice,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complexprogrammable logic device,CPLD),现场可编程逻辑门阵列(field-programmable gate array,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。处理器410也可以单独采用内置处理逻辑的逻辑器件来实现,例如FPGA或数字信号处理器(digital signal processor,DSP)等。通信接口420可以为有线接口或无线接口,用于与其他模块或设备进行通信,有线接口可以是以太接口、局域互联网络(localinterconnect network,LIN)等,无线接口可以是蜂窝网络接口或使用无线局域网接口等。
存储器430可以是非易失性存储器,例如,只读存储器(read-onlymemory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electricallyEPROM,EEPROM)或闪存。存储器430也可以是易失性存储器,易失性存储器可以是随机存取存储器(randomaccess memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(dynamic RAM,DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(doubledatarate SDRAM,DDRSDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。存储器430也可用于存储程序代码和数据,以便于处理器410调用存储器430中存储的程序代码执行上述方法实施例中的部分或者全部操作步骤,或者执行上述设备实施例中的相应功能。此外,计算设备400可能包含相比于图10展示的更多或者更少的组件,或者有不同的组件配置方式。
总线440可以是快捷外设部件互连标准(peripheral component interconnectexpress,PCIe)总线,或扩展工业标准结构(extended industry standard architecture,EISA)总线、统一总线(unified bus,Ubus或UB)、计算机快速链接(compute express link,CXL)、缓存一致互联协议(cache coherentinterconnect for accelerators,CCIX)等。总线440可以分为地址总线、数据总线、控制总线等。总线440除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,图10中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
本申请实施例还提供一种系统,该系统包括多个计算设备,每个计算设备的结构可以参照上述的计算设备的结构。该系统可实现的功能或者操作可以参照上述方法实施例中的具体实现步骤和/或上述装置实施例中所描述的具体功能,在此不再赘述。本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机指令,当所述计算机指令在计算机设备(如一个或者多个处理器)上运行时可以实现上述方法实施例中的方法步骤。所述计算机可读存储介质的处理器在执行上述方法步骤的具体实现可参照上述方法实施例中所描述的具体操作和/或上述装置实施例中所描述的具体功能,在此不再赘述。本申请实施例还提供一种计算机程序产品,所述计算机程序产品包括存储在计算机可读存储介质上的指令,当所述指令在计算机设备上运行时使得所述计算机设备执行上述方法实施例中的方法步骤。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者任意组合来实现。当使用软件实现时,可以全部或者部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令,在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络或其他可编程装置。所述计算机指令可存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网络站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、微波等)方式向另一个网络站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质,也可以是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如软盘、硬盘、磁带等)、光介质(例如DVD等)、或者半导体介质(例如固态硬盘)等等。
在上述实施例中,对各个实施例的描述各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
Claims (10)
1.一种解码模块生成方法,其特征在于,包括如下步骤:
获取用户输入的配置参数,其中,所述配置参数包括:解码模块的并行度、是否支持截短码中的一种或者多种;所述配置参数还包括:使用的伽罗华域、伽罗华域中使用的本原多项式、伽罗华域中使用的生成多项式中的一种或者多种,所述并行度为单位时钟周期内同时处理的符号数量;
根据所述配置参数生成对应的解码模块,其中,所述解码模块包括征候值模块、关键方程求解模块,错误位置模块以及错误值模块,所述征候值模块用于将所述生成多项式的所有根代入根据接收到的数据生成的接收多项式得到征候值;所述关键方程求解模块用于对错误位置多项式的系数进行求解,得到系数结果,所述错误位置多项式的根为所述接收到的数据的错误位置,所述错误位置多项式的系数和所述征候值相关;所述错误位置模块用于根据所述系数结果计算出接收到的数据的错误位置;所述错误值模块用于根据所述系数结果和所述征候值计算出接收到的数据的错误值。
2.根据权利要求1所述的方法,其特征在于,所述解码模块还包括修正模块,所述修正模块用于根据所述错误位置以及所述错误值对接收到的数据进行修正。
3.根据权利要求1所述的方法,其特征在于,
在所述配置参数被设置为支持截短码的情况下,生成的解码模块中的所述错误位置模块和所述错误值模块是并联的;
在所述配置参数被设置为不支持截短码的情况下,生成的解码模块中的所述错误位置模块和所述错误值模块是串联的。
4.根据权利要求1所述的方法,其特征在于,
在所述配置参数被设置为解码模块的并行度为m时,其中,m为大于1的整数,生成的解码模块中的征候值模块中的接收多项式表示为:
其中,为所述接收多项式,/>为所述接收多项式的系数,为所述接收的数据,n为接收的数据的符号数量,/>分别为所述生成多项式的根的一次幂至m次幂。
5.根据权利要求4所述的方法,其特征在于,所述征候值模块的电路包括:m个乘法器、加法器以及寄存器;
将第一符号输入所述加法器进行相加;
将第二符号以及所述生成多项式的根的一次幂输入第一乘法器进行相乘,得到第一相乘结果,并将所述第一相乘结果输入所述加法器进行相加;
将第三符号以及所述生成多项式的根的二次幂输入第二乘法器进行相乘,得到第二相乘结果,并将所述第二相乘结果输入所述加法器进行相加;
…;
将第m符号以及所述生成多项式的根的m-1次幂输入第m-1乘法器进行相乘,得到第m-1相乘结果,并将所述第m-1相乘结果输入所述加法器进行相加;
将所述寄存器上一个时刻的值以及所述生成多项式的根的m次幂输入第m乘法器进行相乘,得到第m相乘结果,并将所述第m相乘结果输入所述加法器进行相加;
将所述加法器计算得到的和作为当前的值输入到所述寄存器进行存储。
6.根据权利要求4或5所述的方法,其特征在于,所述错误位置模块对应的错误位置多项式为:
其中,为所述错误位置多项式的计算结果,/>为所述系数结果,/>为所述解码模块最大的能纠正的错误符号的数量,/>为所述错误位置多项式的根的一次幂至2t-1次幂。
7.根据权利要求6所述的方法,其特征在于,所述错误位置模块包括多个位置计算模块,所述多个位置计算模块用于通过暴力破解所述错误位置多项式从而确定所述接收的数据的错误位置,所述多个位置计算模块中的每个位置计算模块分别对所述接收的数据其中一个位置进行计算,不同的位置计算模块负责对不同的位置进行计算。
8.根据权利要求4或5所述的方法,其特征在于,所述错误值模块包括多个值计算模块,所述多个值计算模块用于通过暴力破解所述错误位置多项式和错误定位多项式从而确定所述接收的数据的错误值,所述多个值计算模块中的每个值计算模块分别对所述接收的数据的每个位置的错误值进行计算,同一个位置的不同值计算模块负责对不同的错误值进行计算。
9.一种计算机设备,其特征在于,所述计算机设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现根据权利要求1-8任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,当所述计算机指令在计算机设备上运行时使得所述计算机设备执行根据权利要求1-8任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311056528.6A CN116781214B (zh) | 2023-08-22 | 2023-08-22 | 一种解码模块生成方法、设备以及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311056528.6A CN116781214B (zh) | 2023-08-22 | 2023-08-22 | 一种解码模块生成方法、设备以及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116781214A true CN116781214A (zh) | 2023-09-19 |
CN116781214B CN116781214B (zh) | 2023-12-08 |
Family
ID=87989830
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311056528.6A Active CN116781214B (zh) | 2023-08-22 | 2023-08-22 | 一种解码模块生成方法、设备以及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116781214B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050172208A1 (en) * | 2004-01-29 | 2005-08-04 | Chan-Ho Yoon | Forward Chien search type Reed-Solomon decoder circuit |
CN103763554A (zh) * | 2013-09-07 | 2014-04-30 | 安徽华东光电技术研究所 | 基于cofdm的高清视频无线传输系统的rs解码模块系统、方法 |
KR20140091087A (ko) * | 2012-12-21 | 2014-07-21 | 인하대학교 산학협력단 | 병렬 bch 복호기를 위한 고속 소면적의 수정된 스텝-바이-스텝 복호 방법 및 그 연산 회로 |
CN107204782A (zh) * | 2017-04-10 | 2017-09-26 | 北京大学 | 一种bch译码器及生成该译码器的编译器的实现方法 |
CN112286716A (zh) * | 2020-10-21 | 2021-01-29 | 天津津航计算技术研究所 | 一种1024字节的存储系统差错控制模块 |
CN112367087A (zh) * | 2020-12-01 | 2021-02-12 | 西安邮电大学 | 一种高速rs译码器 |
CN113904755A (zh) * | 2021-10-13 | 2022-01-07 | 芯河半导体科技(无锡)有限公司 | 一种截短rs码解码方法 |
-
2023
- 2023-08-22 CN CN202311056528.6A patent/CN116781214B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050172208A1 (en) * | 2004-01-29 | 2005-08-04 | Chan-Ho Yoon | Forward Chien search type Reed-Solomon decoder circuit |
KR20140091087A (ko) * | 2012-12-21 | 2014-07-21 | 인하대학교 산학협력단 | 병렬 bch 복호기를 위한 고속 소면적의 수정된 스텝-바이-스텝 복호 방법 및 그 연산 회로 |
CN103763554A (zh) * | 2013-09-07 | 2014-04-30 | 安徽华东光电技术研究所 | 基于cofdm的高清视频无线传输系统的rs解码模块系统、方法 |
CN107204782A (zh) * | 2017-04-10 | 2017-09-26 | 北京大学 | 一种bch译码器及生成该译码器的编译器的实现方法 |
CN112286716A (zh) * | 2020-10-21 | 2021-01-29 | 天津津航计算技术研究所 | 一种1024字节的存储系统差错控制模块 |
CN112367087A (zh) * | 2020-12-01 | 2021-02-12 | 西安邮电大学 | 一种高速rs译码器 |
CN113904755A (zh) * | 2021-10-13 | 2022-01-07 | 芯河半导体科技(无锡)有限公司 | 一种截短rs码解码方法 |
Non-Patent Citations (3)
Title |
---|
孙伟: "QAM解调芯片中RS解码的设计与实现", 《中国优秀硕士学位论文全文数据库信息科技2007年》, no. 04, pages 2 - 2 * |
戴伏生, 朱亮, 王春虎: "RS码译码算法与译码器的DSP实现方法", 东北电力学院学报, no. 02 * |
谢蓉芳;李子夫;叶松;: "纠错模式可配置的NAND Flash BCH译码器设计", 成都信息工程大学学报, no. 04 * |
Also Published As
Publication number | Publication date |
---|---|
CN116781214B (zh) | 2023-12-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8745472B2 (en) | Memory with segmented error correction codes | |
Lee | A high-speed low-complexity Reed-Solomon decoder for optical communications | |
JP2003529233A (ja) | データを符号化及び復号化する方法及び装置 | |
US8001446B2 (en) | Pipelined cyclic redundancy check (CRC) | |
KR101930583B1 (ko) | 비이진 선형 블록 코드에 대한 병렬 인코딩 | |
JP2007166031A (ja) | Crc値の算出装置 | |
CN112306741B (zh) | 一种crc校验方法及相关装置 | |
KR100260415B1 (ko) | 고속시리얼에러위치다항식계산회로 | |
CN101296053A (zh) | 计算循环冗余校验码之方法及系统 | |
CN106549677B (zh) | 高速并行bch码译码方法及装置 | |
CN116781214B (zh) | 一种解码模块生成方法、设备以及可读存储介质 | |
EP3420640A1 (en) | Methods and apparatus for performing reed-solomon encoding | |
CN107688506B (zh) | 一种流水结构的bch译码系统 | |
US10218386B1 (en) | Methods and apparatus for performing variable and breakout Reed Solomon encoding | |
US7987412B2 (en) | Reed Solomon decoding of signals having variable input data rates | |
US8745476B1 (en) | Systems and methods for cyclic redundancy check implementation | |
CN113821370B (zh) | 一种用于数据传输错误校验的高速crc产生方法和装置 | |
US20180006664A1 (en) | Methods and apparatus for performing reed-solomon encoding by lagrangian polynomial fitting | |
CN108847851B (zh) | 一种二元bch码伴随式矩阵的实现方法 | |
Yan et al. | Fast and low-complexity decoding algorithm and architecture for quadruple-error-correcting RS codes | |
Zhu et al. | Efficient Reed-Solomon decoder with adaptive error-correcting capability | |
Subbiah et al. | Fast BCH syndrome generator using parallel polynomial division algorithm for GPGPUs | |
US7032162B1 (en) | Polynomial expander for generating coefficients of a polynomial from roots of the polynomial | |
Juan et al. | Utilization of DSP algorithms for Cyclic Redundancy Checking (CRC) in Controller Area Network (CAN) controller | |
TWI523437B (zh) | Bch碼編碼與癥狀計算共用設計電路及決定該共用設計電路的方法 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |