用于并行bch编码的电路、编码器及方法

文档序号:7513193阅读:247来源:国知局
专利名称:用于并行bch编码的电路、编码器及方法
技术领域
本发明涉及对数据进行纠错编码的技术领域,尤其涉及一种用于并行BCH 编码的电路、编码器及方法。
背景技术
在各种各样的传输系统和网络中,为保证数据在对等端点间正确传输,需 要一定的纠检错编码。在通信领域和消费类电子领域经常使用BCH码作为检 错或纠错的依据。需要纠错或检错的数据通过BCH编码器生成校验码,并将 校验码和原码同时发送出,然后在解码端解码并同时纠4昔或检错。所述BCH 码取自Bose、 Ray-Chaudhuri与Hocquenghem的缩写,是纠正多个随机错 误的循环码,可以用生成多项式g(x)的才艮描述。对数据进行BCH编码的方式 主要有两种, 一种是串行编码方式,另一种是并行编码方式。图1是一种常规的串行BCH编码器的原理图。其中输入序列为二进制序 列 为移位寄存器。c,^^馈序列的抽头系数,它的值为O或1,是BCH码的生成多项式g(;c)二?-k"+ —x—/^+…+ c^ + l中的系数。二进制序列的多项式表达式比如输入序列为IOOIOO...001, ^代表 的是0或者1, ?代表m'在序列中的位置,(i的范围是0 N-l)。图中符号0为GF (2)的乘法器,十为GF (2)的加法器,D为选通控制器,GF是伽罗华 域的意思,GF (2) 指的是1位二进制占用的域元素空间。二进制序列一位一位的输入编码器,输出完成以后寄存器序列A…Av—f,中保存的值就是校验码,此时选通控制器输出校验码序列。但由于高速通信或者闪存控制器的数据传输速率非常快。例如闪存控制器向闪存芯片写入数据的时候,极限情况可以达到50MHz+8bit每秒,这时常规 的BCH编码器的工作速度高达400MHz,并且运算的延迟很大(例如bch(8191, 8048, 23)至少要8191个时钟周期才能够完成编码),因此串行编码在速度要求 很高的地方是不行的。其中bch(8191, 8048, 23)即bch (N, k, r)中具体的取 值,其中N是码字的长度,也就是编码器输出的序列长度;K是有效信息序列 的长度,也就是进入编码器的序列长度;r是最小半径。而如果采用并行的方式对数据进行BCH编码,则可以在更短的时钟周期 内完成编码,因此,现有技术中又出现了基于查找表的并行算法及相关的改进 方法,其基本思路是将长度为N的输入序列作为一个符号,这个符号有2〃种 组合。把这2W种序列的组合输入移位寄存器产生出对应的2W种输出序列。把这 些输出序列作成一个表,以后运算时不再通过移位寄存器来运算,而是通过查 表的方式来获得结果。但此种方法在校验位比较多的时候,生成多项式g(x)的项数非常多(例如 bch(8191,8048,23)的校验g(x)项数就有143个),如果输入序列的长度N=8191,则相对应的序列有28191种组合。生成序列的位宽为143位。因此需要2^1143位 才能保存各种组合产生的序列。这种方法在实际上是不可能实现的。在此基础上出现了进一步改进的方法,其方法是将输入序列的长度N减小 (比如将长度减小到8),则新的查找表大小为2w.(w —幻,其中(N画K)是移 位寄存器的长度。再通过移位和异或等组合逻辑纟乘作完成迭代运算。其原理如 下1. 假设输入序列的长度为K,用多项式可以表达为w(X) = i + ff^Z—2 H-----h ff^i + w。 ( Bl )其中m,为1或者0, (i=0,l,2,3...k-l)2. 设图1中移位寄存器的长度为R=N-K,其多项式表达式为其中。为1或者0, (i=0,l,2,3...k-l)3. 可以得到以下等式<formula>formula see original document page 6</formula>其中g(X)为生成多项式,x、(x)表示x"与—义)的乘积,为x (x)除以g(X) 得到的商多项式,r(x)则是(2)式中定义的余数多项式4. 将输入的数据"分解成N组,并假设输入序列长度K能够被N整除。则 m(x)可以写成<formula>formula see original document page 6</formula>其中5. 又^i殳w,(x)二g(x).aXx) + ^(Jc) (B5) 其中a,(x)为^(;c)除以g(X)得到的商多项式,巧Oc)则是",(x)除以g(X)得到的余数多项式6. 将(5)式带入(4)得到<formula>formula see original document page 6</formula>并两边求it,得到<formula>formula see original document page 6</formula>(B7)<formula>formula see original document page 6</formula><formula>formula see original document page 7</formula>ZCW(r,(x))表示";c)的高N位,iWG// O,(jc))表示r,(jc)的^f氐R-N位 采用这种算法每次运算过程是A、 如果是第一次运算,则先查找序列",(x)对应的输出序列表,得到/;(x)序列(它的长度为R ),并令S簡=^ W 。B、 Sum乘以,(它的长度为R+N ),得到序列》■.ZC、 这个序列的长度超过了移位寄存器组的长度R,因此这个序列的最高N位 还需要求一次模g(x)(同样可以查表)D、 最后将S,.;^的低R位,的最高N位求模后的序列以及&0)相 加,得到新的Sum此运算直到加上r。W后结束,由此可以看出长度为K的序列的模g(x)余式 可以由其N个子序列的余式g,(力组合而成。这种方式虽然大幅度节省了资源,但是当BCH编码器的冗余位比较多的 时候对资源的消耗依然很大。例如,使用这种方式设计bch(8191, 8049, 23) 码的编码器时,当并行宽度为8位,则需要消耗的存储空间为2"143位。如果 要减少资源消耗,则必须要减少并行运算的宽度,因此必然影响速度。发明内容本发明实施例的目的在于提供一种用于并行BCH编码的电路、编码器及 方法,旨在解决现有技术中的串行编码运算慢,扇出大及基于查找表的并行算 法耗费资源的问题。本发明实施例是这样实现的, 一种用于BCH并行编码的电路,包括M个输入支路,所述每一输入支路包括一常数向量乘法器,当前周期的输入序列 {^,,...,^}按顺序分别输入至所述系数为&:^,''',:^,''',"_15的常数向量乘法器对应相乘后,将相乘结果通过矩阵加法器求和得到最终编码输出;其中,M 为并行度,i为不大于M的自然数,T为一个/ xi 的方阵,S是一个i xl的固 定向量[l 0 ... 0 l]', R为bch编码后冗余位的长度,t为转置符号。本发明实施例的另一 目的在于提供一种采用如权利要求1所述的电路的编 码器。本发明实施如J的另一目的在于提供一种用于BCH并行编码的电路,包括 M个输入支路和一个反馈支路,所述每一输入支路包括一常数向量乘法器,所 述反馈支路包括依次连接的系数为rM的常数矩阵乘法器、矩阵加法器及寄存器 组;当前周期的输入序列化,…,x,,按顺序分别输入至所述系数为 S,re,…,7^,…,"-A的常数向量乘法器对应相乘后,将相乘结果求和作为第一输出,其中,M为并行度,i为不大于M的自然数,T为一个i xi 的方阵,S是 一个/ xl的固定向量[1 0 ... o R为bch编码后冗余位的长度,t为转置 符号;所述寄存器组用于寄存所述矩阵加法器当前周期的输出,并将当前周期 反馈,作为所述系数为r"的常数矩阵乘法器下一周期的输入;所述常数矩阵乘 法器当前周期的输入与常数矩阵rM相乘结果作为第二输出;所述矩阵加法器将 所述第一输出及第二输出求和后输出至寄存器组作为寄存器组当前周期的输 出;所述输入支路和反馈支路经过特定数量次运算,得到最终编码输出。本发明实施例的另 一 目的在于提供一种采用如权利要求3所述的电路的编 码器。本发明实施例的另一目的在于提供一种用于BCH并行编码的方法,包括 如下步骤将当前周期的输入序列(x,…,;c(, 按顺序分别与常数向量s,:rs,…,r;s,…,:r-'s对应相乘,并将相乘结果求和作为第一输出,其中,M为并 4亍度,i为不大于M的自然数,T为一个i xi 的方阵,S是一个尺xl的固定向 量[l 0…0 R为bch编码后冗余位的长度,t为转置符号;将寄存器组上一周期的输出与常数矩阵r"相乘结果作为第二输出;第一输出和第二输出求 和输出至寄存器组,作为寄存器组当前周期的输出;上述步骤经过特定数量次 运算,得到最终编码输出。本发明提供的用于并行BCH编码的电路、编码器及方法采用了迭代算法, 相对于串行编码有更快的运算速度;与基于查找表的并行算法相比,取消了查 找表,大幅度减少了资源消耗;且有效控制了电路的扇出。


图1是现有的串行BCH编码原理图;图2是现有的bch (15, 11, 3)的串行编码原理图;图3A是本发明实施例提供的一种并行BCH编码电路结构框图;图3B是本发明实施例提供的一种并行BCH编码电路算法示意图;图4A是本发明实施例提供的另一种并行BCH编码电路结构框图;图4B是本发明实施例提供的另 一种并行BCH编码电路算法示意图;图5是本发明实施例提供的常数矩阵乘法器内部结构示意图;图6是本发明实施例提供的常数向量乘法器内部结构示意图;图7是本发明实施例提供的产的扇出示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实 施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅 仅用以解释本发明,并不用于限定本发明。以bch (15, 11, 3)的编码为例说明,图2是现有的bch (15, 11, 3) 的串行编码原理图Bch(15, 11, 3)的生成多项式为g(;c)二jc4+jc + l,又4艮设/)(");表示第n个寄存器在第i个时钟后的状态,则可以得到如下表达式该显示器配置成向该解码器提供多个输入信号,该输入信号具有不同频率,并

接收高频输入信号的解码器放置得比接收^^贞输入信号的解码器更接近该第二
OR门。构框图和算法示意图,如图3A和图3B所示;图中"表示常数向量乘法器(i的范围是0 M-1),十表示GF②矩阵加法器。所述用于BCH并行编码的电路,包括M个输入支路,每一输入支路包括 一常数向量乘法器;当前周期的输入序列K,…,x,.,…,xJ按顺序分别输入至系数 为&re,…,rs,…,"-^的常数向量乘法器对应相乘后,将相乘结果通过矩阵加法器求和得到最终编码输出,其中,M为并行度,i为不大于M的自然数,T为 一个i x尺的方阵,S是一个i xl的固定向量[l 0…0 R为bch编码后冗 余位的长度,t为转置符号。按照图3A和图3B所示的并行编码电路有如下优点(1) 运算速度快,只需要一个时钟周期就可以计算出来;(2) 不需要ROM,因此节省了存储空间;(3) 在码长较短的时候电路复杂程度小。本发明实施例提供的 一种用上述并行编码电路编码的方法,将输入序列 h,…,x,,…,;^按顺序分别与常数向量S,",…,r'S,…,"1对应相乘,将相乘结果求和得到最终编码输出;其中,M输入序列长度,i为不大于M的自然数,T 为一个i xi 的方阵,S是一个i xl的固定向量[l 0…0 l]', R为BCH编码 后冗余位的长度,t为转置符号。参考公式A3,由于通常处理数据是按照字节、双字节、或4字节进行的, 在一个时钟内输入8048bit的输入是没有必要的。当输入序列长度变的很长, 并且校验码比较多的时候,下面的方式可以有效减小扇出。4艮设并行度为M, 则有<formula>formula see original document page 11</formula>很明显<formula>formula see original document page 12</formula> (A6 )A二0 〔 A=0 J "0由上述公式的迭代计算,本发明实施例提供的另 一种并行BCH编码电路, 如图4A和图4B所示;图中,"表示G^P)的常数矩阵乘法器,^表示常数向量乘法器(i的范围是0 M-l) , e表示GF("矩阵加法器,H为寄存器组。所述用于BCH并行编码的电路,包括M个输入支路和一个反馈支路,所 述每一输入支路包括一常数向量乘法器,所述反馈支路包括依次连接的系数为"的常数矩阵乘法器、矩阵加法器及寄存器组;当前周期的输入序列 (x,,…,x,.,…,xJ按顺序分别输入至所述系数为S,",…,rs,…,"-'s的常数向量乘法器对应相乘后,将相乘结果求和作为第一输出,其中,M为并行度,i为不大 于M的自然数,T为一个i x尺的方阵,S是一个i xl的固定向量[l 0…0 l]', R为bch编码后冗余位的长度,t为转置符号;所述寄存器组用于寄存所述矩 阵加法器当前周期的输出,并将当前周期反馈,作为所述系数为I^的常数矩阵 乘法器下 一周期的输入;所述常数矩阵乘法器当前周期的输入与常数矩阵rM相 乘结果作为第二输出;所述矩阵加法器将所述第 一输出及第二输出求和后输出 至寄存器組作为寄存器组当前周期的输出;所述输入支路和反馈支路经过特定 数量次运算,得到最终编码输出。本发明实施例采用迭代计算方法,其流程如下将当前周期的输入序列按顺序分别与常数向量 s,rs,…,rs,…,:rM-^对应相乘,并将相乘结果求和作为第一输出,其中,M为并 行度,i为不大于M的自然数,T为一个i xi 的方阵,S是一个i xl的固定向 量[l 0…0 R为bch编码后冗余位的长度,t为转置符号;将寄存器组 上一周期的输出与常数矩阵r^相乘结果作为第二输出;第一输出和第二输出求 和输出至寄存器组,作为寄存器组当前周期的输出;上述步骤经过特定数量次 运算,得到最终编码输出。所述迭代计算方法在本电路中的具体实施方式
为(1) 首先,外部发出复位信号,将寄存器组D清零;(2) 复位完成以后,常数向量乘法器将输入序列中的每一个x,与每一常数向量乘法器对应的常数向量r"-^相乘得到一组向量值并输出至所述 矩阵加法器,所述x,表示输入序列中的位置,所述7^-^表示常数向量 乘法器的系数。而每次有输入的数据有M位(范围从x,一到x,—M ), 因此在一次运算的时间内可以算出M组向量的值。(3) 在计算x,.与常数向量r^S的同时,常数矩阵乘法器计算向量Z^与常 数矩阵r"的乘积,得到一组向量值并输出至所述矩阵加法器,所述i^ 表示输入信号异或常数;其中,z^表示迭代运算时D寄存器组中的内 容。(4) 矩阵加法器把A x:T-15的结果( 一共有M组向量)与a爿的结果(只有一组向量)加起来,输出结果D,.至寄存器。(5) 让(2) (3) (4)过程不断循环,每一次运算都会得到新D,.,用于下 一次迭代运算。迭代运算的次数由输入信息数据的长度k和并行度M 来决定,此时的迭代次数为k/M (如果k能够被M整除的话)或者为 大于k/M的最小整数(如果k不能够被M整除的话)。使a变成Z),—t ,将更新后的a一,反馈至常数矩阵乘法器进行迭代运算,所述a表示每一 次矩阵加法的运算结果。(6) 等到完成了设计的迭代运算次数以后,停止运算,并串行输出寄存器 组D中的值,并将其添加到输入的信息序列后。这样就得到了一个BCH 码的码字。图5是本发明实施例提供的常数矩阵乘法器内部结构示意图,现详述如下图中L&J表示输入信号异或常数^, 0表示GF②加法器,r的值为生成码字 中的冗余位的数量。移位序列a'…A保持了每一次矩阵加法的运算结果,并且它作为输入变量进入各自的运算支路进行运算,从而实现乘法器。运算支路的<formula>formula see original document page 14</formula>均来自矩P车式(A5) (A6)中的T。图6是本发明实施例提供的常数向量乘法器内部结构示意图,现详述如下图中表示输入信号异或常数(,-"S、 , R的值为生成码字中的冗余位的数量,k表示第k个常数向量乘法器支路。输入数据^与常数向量r("、中的每 一个元素<formula>formula see original document page 14</formula> 相乘,从而形成了新的向量序列x,— ...w 。运算器中的<formula>formula see original document page 14</formula>均来自矩阵式(A5)及(A6)中的向量r(")s。图7是本发明实施例提供的"的扇出示意图,现详述如下图7为当运算 的并行程度M=8时(即每次输入8位数据),本发明实施例所采用方式的 bch(8191, 8048, 23)编码扇出复杂程度示意图。图中纵坐标的值为0或者1, 当其为1的时候表示有扇出发生,当其为0的时候表示没有扇出发生。由图7 中可见采用这种方式得到的矩阵依然很大,但是它是一个稀疏矩阵,其大部分 扇出都集中在对角线左右和矩阵的最后几列,其扇出大幅度减小,有利于硬件 实现。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发 明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明 的保护范围之内。
权利要求
1、一种用于BCH并行编码的电路,包括M个输入支路,所述每一输入支路包括一常数向量乘法器,输入序列{x1,…,x1,…,xM}按顺序分别输入至所述系数为S,TS,…,TiS,…,TM-1S的常数向量乘法器对应相乘后,将相乘结果通过矩阵加法器求和得到最终编码输出;其中,M为并行度,i为不大于M的自然数,T为一个R×R的方阵,S是一个R×1的固定向量[1 0…0 1]t,R为BCH编码后冗余位的长度,t为转置符号。
2. 一种采用如权利要求l所述的电路的编码器。
3. 一种用于BCH并行编码的电路,其特征在于,包括M个输入支路和 一个反馈支路,所述每一输入支路包括一常数向量乘法器,所述反馈支路包括 依次连接的系数为rM的常数矩阵乘法器、矩阵加法器及寄存器组;当前周期的输入序列^,…,x,.,…,xj按顺序分别输入至所述系数为 S,TS,…,n',"—'S的常数向量乘法器对应相乘后,将相乘结果求和作为第一输 出,其中,M为并行度,i为不大于M的自然数,T为一个i xi 的方阵,S是 一个i xl的固定向量[l 0 ... 0 l]', R为BCH编码后冗余位的长度,t为转置符号;所述寄存器组用于寄存所述矩阵加法器当前周期的输出,并将当前周期反馈,作为所述系数为r"的常数矩阵乘法器下一周期的输入;所述常数矩阵乘法器当前周期的输入与常数矩阵rM相乘结果作为第二输出;所述矩阵加法器将所述第一输出及第二输出求和后输出至寄存器组作为 寄存器组当前周期的输出;所述输入支路和反馈支路经过特定数量次运算,得到最终编码输出。
4. 如权利要求3所述的电路,其特征在于,特定数量由输入信息数据的 长度K和并行度M来决定,特定数量为不小于K/M的最小整数。
5、 一种采用如权利要求3所述的电路的编码器。
6、 一种用于BCH并行编码的方法,其特征在于,输入序列{^...,义,,...,;^}按 顺序分别与常数向量&",…,ns,…,"-S对应相乘,将相乘结果求和得到最终编码输出;其中,M输入序列长度,i为不大于M的自然数,T为一个i x尺的方 阵,S是一个i xl的固定向量[l 0 ... 0 R为BCH编码后冗余位的长度, t为转置符号。
7、 一种用于BCH并行编码的方法,其特征在于,包括如下步骤 将当前周期的输入序列h,…,x,,…,xj按顺序夯别与常数向量s,ra,…,rs,…,rns对应相乘,并将相乘结果求和作为第一输出,其中,M为并 行度,i为不大于M的自然数,T为一个i x/ 的方阵,S是一个i xl的固定向 量[l 0…0 l]', R为BCH编码后冗余位的长度,t为转置符号;将寄存器组上一周期的输出与常数矩阵 ^相乘结果作为第二输出; 第一输出和第二输出求和输出至寄存器组,作为寄存器组当前周期的输出;上述步骤经过特定数量次运算,得到最终编码输出。
8、 如权利要求6所述的方法,其特征在于,特定数量由输入信息数据的 长度K和并行度M来决定,特定数量为不小于K/M的最小整数。
全文摘要
本发明公开了一种用于BCH并行编码的方法,包括如下步骤将当前周期的输入序列{x<sub>1</sub>…,x<sub>i</sub>,…,x<sub>M</sub>}按顺序分别与常数向量S,TS,…,T<sup>i</sup>S,…,T<sup>M-1</sup>S对应相乘,并将相乘结果求和作为第一输出;将寄存器组上一周期的输出与常数矩阵T<sup>M</sup>相乘结果作为第二输出;第一输出和第二输出求和输出至寄存器组,作为寄存器组当前周期的输出;上述步骤经过特定数量次运算,得到最终编码输出。本发明提供的用于并行BCH编码的方法采用了迭代算法,相对于串行编码有更快的运算速度;与基于查找表的并行算法相比,取消了查找表,大幅度减少了资源消耗;且有效控制了电路的扇出。本发明还公开了一种用于BCH并行编码的电路和编码器。
文档编号H03M13/00GK101227194SQ20081006597
公开日2008年7月23日 申请日期2008年1月22日 优先权日2008年1月22日
发明者洪 彭 申请人:炬力集成电路设计有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1