循环码的概念以及拓展
2016-11-20 22:33
176 查看
循环码是线性分组码的一个重要子集,是目前研究得最成熟的一类码。它有许多特殊的代数性质,这些
性质有助于按所要求的纠错能力系统地构造这类码,且易于实现;同时循环码的性能也较好,具有较强的检错
和纠错能力。
一、 循环码的特点
循环码最大的特点就是码字的循环特性,所谓循环特性是指:循环码中任一许用码组经过循环移位后,所
得到的码组仍然是许用码组。若(
…
)为一循环码组,则(
…
)、(
…
)、……还是许用码组。也就是说,不论是左移还是右移,也不论移多少位,仍然是许用的循
环码组。表8-7给出了一种(7,3)循环码的全部码字。由此表可以直观地看出这种码的循环特性。例如,表中
的第2码字向右移一位,即得到第5码字;第6码字组向右移一位,即得到第3码字。
为了利用代数理论研究循环码,可以将码组用代数多项是来表示,这个多项式被称为码多项式,对于许用循
环码A=(
…
),可以将它的码多项式表示为:
(8-20)
对于二进制码组,多项式的每个系数不是0就是1,x仅是码元位置的标志。因此,这里并不关心x的取值。而
表8-7中的任一码组可以表示为:
(8-20)
对于二进制码组,多项式的每个系数不是0就是1,x仅是码元位置的标志。因此,这里并不关心x的取值。
而表8-7中的任一码组可以表示为:
(8-21)
表8-7一种(7,3)循环码的全部码字
例如,表中的第7码字可以表示为:
(8-22)
在整数运算中,有模n运算。例如,在模2运算中,有1+1=2≡0(模2),1+2=3≡1(模2),2×3=6≡0
(模2)等。因此,若一个整数m可以表示为:
(8-23)
则在模n运算下,有m≡p(模n),也就是说,在模n运算下,一整数m等于其被n除所得的余数。
在码多项式运算中也有类似的按模运算法则。若一任意多项式F(x)被一个n次多项式N(x)除,得到商式Q(x)
和一个次数小于n的余式R(x),也就是:
(8-24)
则可以写为:F(x)≡R(x)(模N(x))。
这时,码多项式系数仍按模2运算,即只取值0和1,假设:计算x4+x2+1除以x3+1的值可得:
(8-25)
(8-27)
其对应的码组为0101110,它正是表8-7中第3码字。
通过上述分析和演算可以得到了一个重要的结论:一个长度为n的循环码,它必为按模(
)运算的一
个余式。
二、 循环码的生成多项式和生成矩阵
(全0码字除外)称为生成多项式,用g(x)表示。可以证明生成多项式g(x)具有以下特性:
(1)g(x)是一个常数项为1的r=n-k次多项式;
(2)g(x)是
的一个因式;
(3)该循环码中其它码多项式都是g(x)的倍式。
为了保证构成的生成矩阵G的各行线性不相关,通常用g(x)来构造生成矩阵,这时,生成矩阵G可以表示为:
(8-28)
其中
,因此,一旦生成多项式g(x)确定以后,该循环码的生成矩阵就可以
确定,进而该循环码的所有码字就可以确定。显然,式(8-28)不符合
形式,所以此生成矩阵不是典
型形式,不过,可以通过简单的代数变换将它变成典型矩阵。
现在以表8-7的(7,3)循环码为例,来构造它的生成矩阵和生成多项式,这个循环码主要参数为,n=7,
k=3,r=4。从表中可以看到,其生成多项式可以用第1码字构造:
(8-29)
(8-30)
在上面的例子中,是利用表8-7给出的(7,3)循环码的所有码字,构造了它的生成多项式和生成矩阵。但
在实际循环码设计过程中,通常只给出码长和信息位数,这就需要,这时可以利用设计生成多项式和生成矩阵g(x)所具有基本特性进行设计。
首先,生成多项式g(x)是
的一个因式,其次g(x)是一个r次因式。因此,就可以先对
进行因式分
解,找到它的r次因式。下面仍以(7,3)循环码为例进行分析。
第一步:对
进行因式分解得:
(8-31)
第二步:构造生成多项式g(x)
为了求(7,3)循环码的生成多项式g(x),要从式(8-31)中找到r=n-k次的因子。不难看出,这样的因子
有两个,即:
(8-32)
(8-33)
以上两式都可作为生成多项式用。不过,选用的生成多项式不同,产生出的循环码码组就不同。用式(8-32
作为生成多项式产生的循环码即为表8-7所列。
当然,在利用式(8-30)得到生成矩阵G以后,可以通过线性变化,使之成为典型矩阵,这时就可以采用类似监督矩阵H。
由于(n,k)循环码中g(x)是
的因式,因此可令:
(8-34)
这里h(x)称为监督多项式。与式(8-28)所表示的G(x)相对应,监督矩阵表
示为:
其中
是
逆多项式。
(8-36)
对于表8-7中的(7,3)循环码,
,则:
8.4.3 循环码的编、译码方法
1.编码过程
在编码时,首先需要根据给定循环码的参数确定生成多项式g(x),也就是从
的因子中选一个(n-k)次
多项式作为g(x);然后,利用循环码的编码特点,即所有循环码多项式A(x)都可以被g(x)整除,来定义生成多项
式g(x)。
根据上述原理可以得到一个较简单的系统:设要产生(n,k)循环码,m(x)表示信息多项式,循环码编码方法
则其次数必小于k,而
·m(x)的次数必小于n,用
·m(x)除以g(x),可得余数r(x),r(x)的次数必小于
(n-k),将r(x)加到信息位后作监督位,就得到了系统循环码。下面就将以上各步处理加以解释。
(1)用
乘m(x)。这一运算实际上是把信息码后附加上(n-k)个“0”。例如,信息码为110,它相当
于m(x)=
+x。当n-k=7-3=4时,
·m(x)=
+
,它相当于1100000。而希望的到得系统循环码多项
式应当是A(x) =
·m(x)
+ r(x)。
(2)求r(x)。由于循环码多项式A(x)都可以被g(x)整除,也就是:
(8-37)
因此,用
·m(x)除以g(x),就得到商Q(x)和余式r(x),即
(8-38)
这样就得到了r(x)。
(3)编码输出系统循环码多项式A(x)为:
(8-39)
例如,对于(7,3)循环码,若选用
,信息码110时,则:
(8-40)
上式相当于
这时的编码输出为:1100101。
上述三步编码过程,在硬件实现时,可以利用除法电路来实现,这里的除法电路采用一些移位寄存器和模2
加法器来构成。下面将以(7,3)循环码为例,来说明其具体实现过程。设该(7,3)循环码的生成多项式为:
,则构成的系统循环码编码器如图8-6所示,图中有4个移位寄存器,一个双刀双掷开关。
当信息位输入时,开关位置接“2”,输入的信息码一方面送到除法器进行运算,一方面直接输出;当信息位全部
输出后,开关位置接“1”,这时输出端接到移位寄存器的输出,这时除法的余项,也就是监督位依次输出。当信
息码为110时,编码器的工作过程如表8-8:
图8-6 (7,3)循环码编码器
顺便指出,由于数字信号处理器(DSP)和大规模可编程逻辑器件(CPLD和FPGA)的广泛应用,目前已多采
用这些先进器件和相应的软件来实现上述编码。
表8-8 编码器工作过程
2.译码过程
对于接收端译码的要求通常有两个:检错与纠错。达到检错目的的译码十分简单,可以由式(8-37),通过
判断接收到的码组多项式B(x)是否能被生成多项式g(x)整除作为依据。当传输中未发生错误时,也就是接收的码
组与发送的码组相同,即A(x)=B(x),则接收的码组B(x)必能被g(x)整除;若传输中发生了错误,则A(x)≠B(x)
,B(x)不能被g(x)整除。因此,可以根据余项是否为零来判断码组中有无错码。
需要指出的是,有错码的接收码组也有可能被g(x)整除,这时的错码就不能检出了。这种错误被称为不可检
错误,不可检错误中的错码数必将超过这种编码的检错能力。
在接收端为纠错而采用的译码方法自然比检错要复杂许多,因此,对纠错码的研究大都集中在译码算法上。
我们知道,校正子与错误图样之间存在某种对应关系。如同其它线性分组码,循环编码和译码可以分三步进行:
(1)由接收到的码多项式B(x)计算校正子(伴随式)多项式S(x);
(2)由校正子S(x)确定错误图样E(x);
(3)将错误图样E(x)与B(x)相加,纠正错误。
上述第(1)步运算和检错译码类似,也就是求解B(x)整除g(x)的余式,第(3)步也很简单。因此,纠错码
译码器的复杂性主要取决于译码过程的第(2)步。
基于错误图样识别的译码器称为梅吉特译码器,它的原理图如图8-7所示。错误图样识别器是一个具有(n-k)
个输入端的逻辑电路,原则上可以采用查表的方法,根据校正子找到错误图样,利用循环码的上述特性可以简化识
别电路。梅吉特译码器特别适合于纠正2个以下的随机独立错误。
图8-7中k级缓存器用于存储系统循环码的信息码元,模2加电路用于纠正错误。当校正子为0时,模2加来自错
误图样识别电路的输入端为0,输出缓存器的内容;当校正子不为0时,模2加来自错误图样识别电路的输入端在第
i位输出为1,它可以使缓存器输出取补,即纠正错误。
循环码的译码方法除了梅吉特译码器以外,还有补错编译码、大数逻辑编译码等方法。捕错译码是梅吉特译码的一种
变形,也可以用较简单的组合逻辑电路实现,它特别适合于纠正突发错误、单个随机错误和两个错误的码字。大数
逻辑译码也称为门限译码,这种译码方法也很简单,但它只能用于有一定结构的为数不多的大数逻辑可译码,虽然
在一般情形下,大数逻辑可译码的纠错能力和编码效率比有相同参数的其它循环码(如BCH码)稍差,但它的译码
算法和硬件比较简单,因此在实际中有较广泛的应用。
图8-7 梅吉特译码器原理
http://www.jlrtvu.jl.cn/wlkc/course/180002088-1/203-03.htm
性质有助于按所要求的纠错能力系统地构造这类码,且易于实现;同时循环码的性能也较好,具有较强的检错
和纠错能力。
一、 循环码的特点
循环码最大的特点就是码字的循环特性,所谓循环特性是指:循环码中任一许用码组经过循环移位后,所
得到的码组仍然是许用码组。若(
…
)为一循环码组,则(
…
)、(
…
)、……还是许用码组。也就是说,不论是左移还是右移,也不论移多少位,仍然是许用的循
环码组。表8-7给出了一种(7,3)循环码的全部码字。由此表可以直观地看出这种码的循环特性。例如,表中
的第2码字向右移一位,即得到第5码字;第6码字组向右移一位,即得到第3码字。
为了利用代数理论研究循环码,可以将码组用代数多项是来表示,这个多项式被称为码多项式,对于许用循
环码A=(
…
),可以将它的码多项式表示为:
(8-20)
对于二进制码组,多项式的每个系数不是0就是1,x仅是码元位置的标志。因此,这里并不关心x的取值。而
表8-7中的任一码组可以表示为:
(8-20)
对于二进制码组,多项式的每个系数不是0就是1,x仅是码元位置的标志。因此,这里并不关心x的取值。
而表8-7中的任一码组可以表示为:
(8-21)
表8-7一种(7,3)循环码的全部码字
序号 | 码字 | 序号 | 码字 | ||
信息位 a6 a5 a4 | 监督位 a3 a2 a1 a0 | 信息位 a6 a5 a4 | 监督位 a3 a2 a1 a0 | ||
1 | 0 0 0 | 0 0 0 0 | 5 | 1 0 0 | 1 0 1 1 |
2 | 0 0 1 | 0 1 1 1 | 6 | 1 0 1 | 1 1 0 0 |
3 | 0 1 0 | 1 1 1 0 | 7 | 1 1 0 | 0 1 0 1 |
4 | 0 1 1 | 1 0 0 1 | 8 | 1 1 1 | 0 0 1 0 |
(8-22)
在整数运算中,有模n运算。例如,在模2运算中,有1+1=2≡0(模2),1+2=3≡1(模2),2×3=6≡0
(模2)等。因此,若一个整数m可以表示为:
(8-23)
则在模n运算下,有m≡p(模n),也就是说,在模n运算下,一整数m等于其被n除所得的余数。
在码多项式运算中也有类似的按模运算法则。若一任意多项式F(x)被一个n次多项式N(x)除,得到商式Q(x)
和一个次数小于n的余式R(x),也就是:
(8-24)
则可以写为:F(x)≡R(x)(模N(x))。
这时,码多项式系数仍按模2运算,即只取值0和1,假设:计算x4+x2+1除以x3+1的值可得:
(8-25)
(8-27)
其对应的码组为0101110,它正是表8-7中第3码字。
通过上述分析和演算可以得到了一个重要的结论:一个长度为n的循环码,它必为按模(
)运算的一
个余式。
二、 循环码的生成多项式和生成矩阵
(全0码字除外)称为生成多项式,用g(x)表示。可以证明生成多项式g(x)具有以下特性:
(1)g(x)是一个常数项为1的r=n-k次多项式;
(2)g(x)是
的一个因式;
(3)该循环码中其它码多项式都是g(x)的倍式。
为了保证构成的生成矩阵G的各行线性不相关,通常用g(x)来构造生成矩阵,这时,生成矩阵G可以表示为:
(8-28)
其中
,因此,一旦生成多项式g(x)确定以后,该循环码的生成矩阵就可以
确定,进而该循环码的所有码字就可以确定。显然,式(8-28)不符合
形式,所以此生成矩阵不是典
型形式,不过,可以通过简单的代数变换将它变成典型矩阵。
现在以表8-7的(7,3)循环码为例,来构造它的生成矩阵和生成多项式,这个循环码主要参数为,n=7,
k=3,r=4。从表中可以看到,其生成多项式可以用第1码字构造:
(8-29)
(8-30)
在上面的例子中,是利用表8-7给出的(7,3)循环码的所有码字,构造了它的生成多项式和生成矩阵。但
在实际循环码设计过程中,通常只给出码长和信息位数,这就需要,这时可以利用设计生成多项式和生成矩阵g(x)所具有基本特性进行设计。
首先,生成多项式g(x)是
的一个因式,其次g(x)是一个r次因式。因此,就可以先对
进行因式分
解,找到它的r次因式。下面仍以(7,3)循环码为例进行分析。
第一步:对
进行因式分解得:
(8-31)
第二步:构造生成多项式g(x)
为了求(7,3)循环码的生成多项式g(x),要从式(8-31)中找到r=n-k次的因子。不难看出,这样的因子
有两个,即:
(8-32)
(8-33)
以上两式都可作为生成多项式用。不过,选用的生成多项式不同,产生出的循环码码组就不同。用式(8-32
作为生成多项式产生的循环码即为表8-7所列。
当然,在利用式(8-30)得到生成矩阵G以后,可以通过线性变化,使之成为典型矩阵,这时就可以采用类似监督矩阵H。
由于(n,k)循环码中g(x)是
的因式,因此可令:
(8-34)
这里h(x)称为监督多项式。与式(8-28)所表示的G(x)相对应,监督矩阵表
示为:
其中
是
逆多项式。
(8-36)
对于表8-7中的(7,3)循环码,
,则:
8.4.3 循环码的编、译码方法
1.编码过程
在编码时,首先需要根据给定循环码的参数确定生成多项式g(x),也就是从
的因子中选一个(n-k)次
多项式作为g(x);然后,利用循环码的编码特点,即所有循环码多项式A(x)都可以被g(x)整除,来定义生成多项
式g(x)。
根据上述原理可以得到一个较简单的系统:设要产生(n,k)循环码,m(x)表示信息多项式,循环码编码方法
则其次数必小于k,而
·m(x)的次数必小于n,用
·m(x)除以g(x),可得余数r(x),r(x)的次数必小于
(n-k),将r(x)加到信息位后作监督位,就得到了系统循环码。下面就将以上各步处理加以解释。
(1)用
乘m(x)。这一运算实际上是把信息码后附加上(n-k)个“0”。例如,信息码为110,它相当
于m(x)=
+x。当n-k=7-3=4时,
·m(x)=
+
,它相当于1100000。而希望的到得系统循环码多项
式应当是A(x) =
·m(x)
+ r(x)。
(2)求r(x)。由于循环码多项式A(x)都可以被g(x)整除,也就是:
(8-37)
因此,用
·m(x)除以g(x),就得到商Q(x)和余式r(x),即
(8-38)
这样就得到了r(x)。
(3)编码输出系统循环码多项式A(x)为:
(8-39)
例如,对于(7,3)循环码,若选用
,信息码110时,则:
(8-40)
上式相当于
这时的编码输出为:1100101。
上述三步编码过程,在硬件实现时,可以利用除法电路来实现,这里的除法电路采用一些移位寄存器和模2
加法器来构成。下面将以(7,3)循环码为例,来说明其具体实现过程。设该(7,3)循环码的生成多项式为:
,则构成的系统循环码编码器如图8-6所示,图中有4个移位寄存器,一个双刀双掷开关。
当信息位输入时,开关位置接“2”,输入的信息码一方面送到除法器进行运算,一方面直接输出;当信息位全部
输出后,开关位置接“1”,这时输出端接到移位寄存器的输出,这时除法的余项,也就是监督位依次输出。当信
息码为110时,编码器的工作过程如表8-8:
图8-6 (7,3)循环码编码器
顺便指出,由于数字信号处理器(DSP)和大规模可编程逻辑器件(CPLD和FPGA)的广泛应用,目前已多采
用这些先进器件和相应的软件来实现上述编码。
表8-8 编码器工作过程
输入 (m) | 移位寄存器 (abcd) | 反馈 (e) | 输出 (f) |
0 | 0 0 0 0 | 0 | 0 |
1 1 0 | 1 1 1 0 1 0 0 1 1 0 1 0 | 1 1 1 | 1 1 0 |
0 0 0 0 | 0 1 0 1 0 0 1 0 0 0 0 1 0 0 0 0 | 0 1 0 1 | 0 1 0 1 |
对于接收端译码的要求通常有两个:检错与纠错。达到检错目的的译码十分简单,可以由式(8-37),通过
判断接收到的码组多项式B(x)是否能被生成多项式g(x)整除作为依据。当传输中未发生错误时,也就是接收的码
组与发送的码组相同,即A(x)=B(x),则接收的码组B(x)必能被g(x)整除;若传输中发生了错误,则A(x)≠B(x)
,B(x)不能被g(x)整除。因此,可以根据余项是否为零来判断码组中有无错码。
需要指出的是,有错码的接收码组也有可能被g(x)整除,这时的错码就不能检出了。这种错误被称为不可检
错误,不可检错误中的错码数必将超过这种编码的检错能力。
在接收端为纠错而采用的译码方法自然比检错要复杂许多,因此,对纠错码的研究大都集中在译码算法上。
我们知道,校正子与错误图样之间存在某种对应关系。如同其它线性分组码,循环编码和译码可以分三步进行:
(1)由接收到的码多项式B(x)计算校正子(伴随式)多项式S(x);
(2)由校正子S(x)确定错误图样E(x);
(3)将错误图样E(x)与B(x)相加,纠正错误。
上述第(1)步运算和检错译码类似,也就是求解B(x)整除g(x)的余式,第(3)步也很简单。因此,纠错码
译码器的复杂性主要取决于译码过程的第(2)步。
基于错误图样识别的译码器称为梅吉特译码器,它的原理图如图8-7所示。错误图样识别器是一个具有(n-k)
个输入端的逻辑电路,原则上可以采用查表的方法,根据校正子找到错误图样,利用循环码的上述特性可以简化识
别电路。梅吉特译码器特别适合于纠正2个以下的随机独立错误。
图8-7中k级缓存器用于存储系统循环码的信息码元,模2加电路用于纠正错误。当校正子为0时,模2加来自错
误图样识别电路的输入端为0,输出缓存器的内容;当校正子不为0时,模2加来自错误图样识别电路的输入端在第
i位输出为1,它可以使缓存器输出取补,即纠正错误。
循环码的译码方法除了梅吉特译码器以外,还有补错编译码、大数逻辑编译码等方法。捕错译码是梅吉特译码的一种
变形,也可以用较简单的组合逻辑电路实现,它特别适合于纠正突发错误、单个随机错误和两个错误的码字。大数
逻辑译码也称为门限译码,这种译码方法也很简单,但它只能用于有一定结构的为数不多的大数逻辑可译码,虽然
在一般情形下,大数逻辑可译码的纠错能力和编码效率比有相同参数的其它循环码(如BCH码)稍差,但它的译码
算法和硬件比较简单,因此在实际中有较广泛的应用。
图8-7 梅吉特译码器原理
http://www.jlrtvu.jl.cn/wlkc/course/180002088-1/203-03.htm
相关文章推荐
- 二叉树的各种概念以及代码操作
- ssl中的两个BIO--ssl以及ipsecl的一些概念
- 大端模式和小端模式的概念以及使用程序来辨别
- Android 的机型适配: 屏幕适配(包括dpi,dp,sp的概念) 版本适配 硬件适配。 以及如何和美工配合
- sysdba,sysoper,normal 以及sys,sysdba,dba概念区别
- sysdba,sysoper,normal 以及sys,sysdba,dba概念区别
- 学校学习ios教程笔记,第四节swift中可变数组和不可变数组以及元组的概念与操作
- Linux入门学习,目录命令处理以及所有者、所属组、其他人的概念—— (二)
- MS BI 中的Ad - hoc 报表 (即席报表) 基本概念以及如何创建和使用
- node.js--概念、安装以及hello world
- Spring进阶之路(9)-Spring AOP面向切面编程概念以及通过JDK代理生成AOP代理对象
- ios UINavigationController 导航控制器的基本概念以及创建和隐藏ToolBar等
- Linux login & non-login shell 以及su, sudo相关概念
- Linux磁盘管理 LVM逻辑卷的基本概念以及LVM的工作原理
- 云计算概念以及六大云平台对比---------开发者如何选型不同的云
- 详解加密技术概念、加密方法以及应用(4)
- GO语言-切片特性以及容量的概念
- C#反射概念以及实例详解
- 工作流概念理解以及jbpm应用
- T-SQL查询进阶--理解SQL Server中索引的概念,原理以及其他