PS:课上讲的也是编解码流程,也没有原理,网上也没找到每一步的原理,想要了解设计思路还是需要去找一下原版的论文。
参考blog:
【1】【举例子详细分析】BCH码(BCH code)
1. 伽罗华域和多项式
见之前的blog伽罗华域GF
2. 提出背景和思路
奇偶校验码只能检查出错误而不知道具体是哪里出错。
hamming码只能纠正 1 bit 错误。
在GF
(
2
q
)
(2^q)
(2q)中,用多项式表示对应的有限域中的数值,多项式又可表示成二进制bit流的形式,等于二进制bit流与符号之间的一一映射,同时二进制多项式加法和二进制的按位异或等同(二进制流所受的干扰可用加法表示),多项式乘法及其逆运算能够实现多项式的恢复,本原多项式能保证逆运算结果具有唯一性。
现假设待传输的消息用二进制流对应的 m ( x ) m(x) m(x)表示,乘上一个编码多项式 p ( x ) p(x) p(x),传输过程收到干扰可表示为 e ( x ) e(x) e(x),则接受到: c ( x ) = m ( x ) p ( x ) + e ( x ) c(x)=m(x) p(x)+e(x) c(x)=m(x)p(x)+e(x)如果接受端也知道p(x),那么就能得到 m ( x ) m(x) m(x)和 e ( x ) e(x) e(x)。
本原元→本原多项式:
- GF ( 2 q ) (2^q) (2q)上的本原元是一个元素, 在域中的任何非零元素都可以表示为它的方幂
- 任意一个有限域 GF ( 2 q ) (2^q) (2q)必有一个本原元 α \alpha α
- 本原元的阶数为 2 q − 1 2^q-1 2q−1,即 α 2 q − 1 + 1 = 0 \alpha^{2^q-1}+1=0 α2q−1+1=0
- 本原多项式 p ( x ) p(x) p(x)是以本原元 α \alpha α为根的、首项系数为1的最低阶不可约多项式
3. 案例:为什么需要本原多项式
对于GF
(
2
4
)
(2^4)
(24),有本原多项式
p
(
x
)
=
x
2
+
x
+
1
p(x)=x^{2}+x+1
p(x)=x2+x+1
m
(
x
)
m(x)
m(x)是
1001
1001
1001,而编码多项式
p
(
x
)
p(x)
p(x)是
1101
1101
1101,则
m
(
x
)
∗
p
(
x
)
=
1100101
m(x)*p(x)=1100101
m(x)∗p(x)=1100101。若收到了干扰
e
(
x
)
=
0000010
e(x)=0000010
e(x)=0000010,则接受到
1100111
1100111
1100111,
e(x) | e(x)/p(x) 的余项 |
---|---|
1000000 | 1000000 |
0100000 | 0100000 |
0010000 | 0010000 |
0001000 | 1100000 |
0000100 | 0110000 |
0000010 | 1110000 |
0000001 | 1010000 |
从表中可看出, e ( x ) e(x) e(x)和所得余项一一对应,通过余项结果可找到对应的 e ( x ) e(x) e(x)。如果采用 p ( x ) = 10001 = 101 ∗ 101 p(x)=10001=101*101 p(x)=10001=101∗101,1000000和0000100除以10001后余项均为1000000。
4. BCH码编码过程
思想:一个本原多项式纠正一个错误,通过修正编码多项式 c ( x ) = m ( x ) Q ( x ) + e ( x ) c(x)=m(x) Q(x)+e(x) c(x)=m(x)Q(x)+e(x)令其中 Q ( x ) = p ( x ) p 3 ( x ) p 5 ( x ) ⋯ p 2 t − 1 ( x ) Q(x)=p(x) p_{3}(x) p_{5}(x) \cdots p_{2 t-1}(x) Q(x)=p(x)p3(x)p5(x)⋯p2t−1(x),p(x)是本原多项式,实现纠正多个错误。
p 2 t − 1 ( x ) p_{2 t-1}(x) p2t−1(x)的性质(a mod b=c,表明a除以b余数为c):
- p 2 i − 1 ( x ) m o d p ( x ) = 0 , i = 2 , . . . , t p_{2 i-1}(x) \, mod \, p(x)=0,i=2,...,t p2i−1(x)modp(x)=0,i=2,...,t
- 本原BCH码 p ( α ) = p ( α 3 ) = . . . = p ( α 2 t − 1 ) = 0 p(\alpha)=p(\alpha^{3})=...=p(\alpha^{2t-1})=0 p(α)=p(α3)=...=p(α2t−1)=0
以 n = 2 4 − 1 = 15 n=2^{4}-1=15 n=24−1=15, 纠错数量 t = 3 t=3 t=3 的本原BCH码为例,设 α \alpha α为GF ( 2 4 ) (2^4) (24)的本原元,本原多项式为 p ( x ) = x 4 + x + 1 p(x)=x^{4}+x+1 p(x)=x4+x+1,那么 Q ( x ) = p ( x ) p 3 ( x ) p 5 ( x ) Q(x)=p(x) p_{3}(x) p_{5}(x) Q(x)=p(x)p3(x)p5(x),现有 p ( x ) = x 4 + x + 1 = ( x − α ) ( x − α 2 ) ( x − α 4 ) ( x − α 8 ) p(x)=x^{4}+x+1=(x-\alpha)(x-\alpha^2)(x-\alpha^4)(x-\alpha^8) p(x)=x4+x+1=(x−α)(x−α2)(x−α4)(x−α8),画表得到其共轭根为 α 3 , α 6 , α 12 , α 9 \alpha^{3}, \alpha^{6}, \alpha^{12}, \alpha^{9} α3,α6,α12,α9,故 p 3 ( x ) = ( x − α 3 ) ( x − α 6 ) ( x − α 2 ) ( x − α 9 ) = x 4 + x 3 + x 2 + x + 1 p_{3}(x)=(x-\alpha^{3})\left(x-\alpha^{6}\right)\left(x-\alpha^{2}\right)\left(x-\alpha^{9}\right)=x^{4}+x^{3}+x^{2}+x+1 p3(x)=(x−α3)(x−α6)(x−α2)(x−α9)=x4+x3+x2+x+1,剩余两根构成 p 5 ( x ) = ( x − α 5 ) ( x − α 10 ) = x 2 + x + 1 p_{5}(x)=\left(x-\alpha^{5}\right)\left(x-\alpha^{10}\right)=x^{2}+x+1 p5(x)=(x−α5)(x−α10)=x2+x+1。此时 g ( x ) = p ( x ) p 3 ( x ) p 5 ( x ) = x 10 + x 8 + x 5 + x 4 + x 2 + x + 1 g(x)=p(x) p_{3}(x) p_{5}(x)=x^{10}+x^{8}+x^{5}+x^{4}+x^{2}+x+1 g(x)=p(x)p3(x)p5(x)=x10+x8+x5+x4+x2+x+1。
此时n=15,t=3,deg(g(x))= 10, k=n-deg=5,t=3,设计的码距d=2t+1,实际码距和设计码距相等
PS:(以上推导过程为法一,适合做题不适合编程)
法二:上图中极小多项式是
x
2
q
−
1
x^{2^q-1}
x2q−1的因式分解结果,一个BCH码的生成多项式也可由
L
C
M
[
f
1
(
x
)
,
f
2
(
x
)
,
…
,
f
2
t
(
x
)
]
LCM[f_1(x),f_2(x),…,f_{2t}(x)]
LCM[f1(x),f2(x),…,f2t(x)]给出,详细可见参考文献【1】
5. BCH码译码过程
由于
m
(
x
)
Q
(
x
)
m(x) Q(x)
m(x)Q(x)以
α
1
,
α
2
,
…
,
α
2
t
\alpha^{1}, \alpha^{2}, \ldots, \alpha^{2 t}
α1,α2,…,α2t为根。想要知道错误图样,需要知道在位置i是否发生错误。
定义
e
(
x
)
=
∑
i
=
0
n
−
1
e
i
x
i
=
∑
l
=
1
γ
Y
l
x
i
l
e(x)={\sum_{i=0}^{n-1} e_{i} x^{i}}=\sum_{l=1}^{\gamma} Y_{l} x^{i_{l}}
e(x)=∑i=0n−1eixi=∑l=1γYlxil,
i
l
i_{l}
il表示错误位置。
译码五步:
5.1 伴随多项式的计算
法一:接收端知道
Q
(
x
)
Q(x)
Q(x),能得到对应的
h
(
x
)
=
x
n
+
1
Q
(
x
)
h(x)=\frac{x^n+1}{Q(x)}
h(x)=Q(x)xn+1,从而写出H,即可计算s(x)
法二:
推导过程:
文章来源:https://www.toymoban.com/news/detail-489661.html
5.2 错误位置多项式系数的求解:
5.3 错误位置的确定
5.4 计算对应错误位置上的错误数值
5.5 得到e(x),输出结果
文章来源地址https://www.toymoban.com/news/detail-489661.html
到了这里,关于BCH码(能纠正多个随机错误的循环码)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!