Channel coding
Linear block codes
source data 被整理为一个拥有 k bits 的 block
m
ˉ
\bar m
mˉ
这个 block 可以被编码为一个拥有 n bits 的序列
n
ˉ
\bar n
nˉ,n 必须大于 k
m ˉ \bar m mˉ 被称为 message word, n ˉ \bar n nˉ 被称为 code word
信道编码会在 block 中添加 r = n - k 个冗余码
一个(n, k)的线性区块码,意味着将 k-bit 的信息编码在 n-bit 的码向量中
此码的 code rate 为 R = k / n R=k/n R=k/n
如果我们想要在这个编码内包含所有可能的 k-bit 信息,则需要 2 k 2^k 2k 个向量,每个向量包含 n bits
Error probability over BSC
一个包含 n bits 信息的 block 存在 t 个错误的概率为:
出现小于 t 个错误为
出现多于 t 个错误为
Variance
错误数量的方差为
Generator matrix
Generator matrix of code 可以表达为:
其中 r = n - k,即冗余码,我们之后会用冗余码来对整个码做奇偶校验,因此冗余码也被称为奇偶校验码
Parity check matrix
定义一个奇偶校验矩阵为
对于 binary codes,奇偶校验矩阵可以写为
Parity check theorem
一个 valid code vector 与奇偶校验矩阵的转置的乘积为 0
下文的 symdrome decoder 就用到了这个theorem
Hamming code
m
ˉ
\bar m
mˉ是 message word
c
ˉ
\bar c
cˉ 是 code word
e
ˉ
\bar e
eˉ 是 error vector
v
ˉ
\bar v
vˉ 是 received vector
s
ˉ
\bar s
sˉ 是 syndrome vector
我们通常需要将 message word 转换为 code word
要进行这个过程,需要先通过 P 计算出 G 和 H
接着,将 message word 与 G 相乘,注意这里计算时需要遵从特殊的加法和乘法原则,以确保结果只包含 1 和 0,规则如下:
而要将接收端的 code word 还原成 message word,则需要用到 syndrome decoding
Syndrome decoder
首先需要计算出 syndrome vector,需要用到下式中的
s
ˉ
=
e
ˉ
∗
H
T
\bar s=\bar e*H^T
sˉ=eˉ∗HT
其中
e
ˉ
\bar e
eˉ 为和
H
T
H^T
HT行数相同的单位矩阵
得到 s 后,用 v 乘以 H,观察结果,就可以知道传输过程是否存在错误,且错误在第几位
观察第几位要从右往左数 s,可以看到 100 对应第一位, 010 对应第二位,以此类推
需要注意的是,(7,4) hamming code 中 第三位和第四位相反