文章目录
卷积码
(
n
,
k
,
N
)
(n,k,N)
(n,k,N)卷积码是将每
k
k
k个信息比特作为一组,编码成
n
n
n个编码比特输出。
N
N
N为编码的约束长度,表示编码过程中有N组信息比特相互约束。卷积码的编码器具有记忆性,针对每组信息比特(
k
k
k个比特)输入,有n个编码比特输出,编码比特不仅与当前输入的
k
k
k个信息比特有关系,还与前
N
−
1
N-1
N−1个
k
k
k位输入信息比特有关。编码效率为
η
c
=
k
n
\eta_c=\frac{k}{n}
ηc=nk。
η
c
\eta_c
ηc和
N
N
N是衡量卷积码性能的两个重要参数。
(关于
N
N
N的含义,我在不同地方看到的不一样,有的说是编码过程中有
N
N
N组信息比特相互约束,还有说是编码过程中有
N
+
1
N+1
N+1组信息比特相互约束,本文我采用前者。)
卷积码编码器
(
n
,
k
,
N
)
(n,k,N)
(n,k,N)卷积码的编码器由
N
N
N组
k
k
k级输入移位寄存器(
N
×
k
N \times k
N×k位寄存器)、
n
n
n级输出移位寄存器和
n
n
n个模2和加法器构成,每个输出移位寄存器有一个模2和加法器与其对应,每个模2和加法器输入端的数目不一定相同。下图为
(
n
,
k
,
N
)
(n,k,N)
(n,k,N)卷积码编码器原理图。
卷积码的生成矩阵就是在描述
N
×
k
N \times k
N×k位输入移位寄存器的每一位与每个模2和加法器的连接关系。
卷积码生成矩阵
教材上是按照先子生成矩阵、生成矩阵后生成元、子生成元的顺序讲解的,我感觉不太好理解。按”子生成元 → \to →生成元 → \to →子生成矩阵 → \to →生成矩阵”的顺序介绍,似乎更容易理解矩阵中的0和1所代表的的物理意义。
子生成元和生成元
子生成元
g
(
i
,
j
)
g^{(i,j)}
g(i,j):
(
n
,
k
,
N
)
(n,k,N)
(n,k,N)卷积码有
k
n
kn
kn个子生成元
g
(
i
,
j
)
g^{(i,j)}
g(i,j),其中
i
=
1
,
2
,
3
,
⋯
,
k
i=1,2,3,\cdots,k
i=1,2,3,⋯,k,
j
=
1
,
2
,
3
,
⋯
,
n
j=1,2,3,\cdots,n
j=1,2,3,⋯,n。每个子生成元是一个
N
N
N维行向量,
g
(
i
,
j
)
g^{(i,j)}
g(i,j)的第
m
m
m位写成
g
m
(
i
,
j
)
g^{(i,j)}_m
gm(i,j),
m
=
0
,
1
,
2
,
⋯
,
N
−
1
m=0,1,2,\cdots,N-1
m=0,1,2,⋯,N−1,
g
(
i
,
j
)
g^{(i,j)}
g(i,j)可以表示为:
g
(
i
,
j
)
=
g
0
(
i
,
j
)
g
1
(
i
,
j
)
⋯
g
N
−
1
(
i
,
j
)
g^{(i,j)}=g^{(i,j)}_0\:g^{(i,j)}_1\:\cdots \: g^{(i,j)}_{N-1}
g(i,j)=g0(i,j)g1(i,j)⋯gN−1(i,j)
g
m
(
i
,
j
)
g^{(i,j)}_m
gm(i,j)表示第
m
m
m组输入寄存器比特的第
i
i
i位与第
j
j
j个模2和加法器的连接关系,其中1表示相连,0表示不相连。
生成元
g
(
i
)
g^{(i)}
g(i):
(
n
,
k
,
N
)
(n,k,N)
(n,k,N)卷积码有
k
k
k个生成元
g
(
i
)
g^{(i)}
g(i),其中
i
=
1
,
2
,
3
,
⋯
,
k
i=1,2,3,\cdots,k
i=1,2,3,⋯,k。每个子生成元是一个
N
n
Nn
Nn维行向量,
g
(
i
)
g^{(i)}
g(i)可以表示为:
g
(
i
)
=
g
0
(
i
,
1
)
g
0
(
i
,
2
)
⋯
g
0
(
i
,
n
)
⋯
g
N
−
1
(
i
,
1
)
g
N
−
1
(
i
,
2
)
⋯
g
N
−
1
(
i
,
n
)
g^{(i)}=g^{(i,1)}_0 \:g^{(i,2)}_0\:\cdots\:g^{(i,n)}_0\:\cdots\:g^{(i,1)}_{N-1}\:g^{(i,2)}_{N-1} \:\cdots \:g^{(i,n)}_{N-1}
g(i)=g0(i,1)g0(i,2)⋯g0(i,n)⋯gN−1(i,1)gN−1(i,2)⋯gN−1(i,n)
子生成矩阵和生成矩阵
子生成矩阵
g
m
g_m
gm:
(
n
,
k
,
N
)
(n,k,N)
(n,k,N)卷积码有
N
N
N个子生成矩阵
g
m
g_m
gm,其中
m
=
0
,
1
,
2
,
⋯
,
N
−
1
m=0,1,2,\cdots,N-1
m=0,1,2,⋯,N−1。每个子生成矩阵由
k
n
kn
kn个
g
m
(
i
,
j
)
g^{(i,j)}_m
gm(i,j)组成的
k
×
n
k \times n
k×n矩阵,
g
m
g_m
gm可以表示为:
g
m
=
[
g
m
(
1
,
1
)
g
m
(
1
,
2
)
⋯
g
m
(
1
,
n
)
g
m
(
2
,
1
)
g
m
(
2
,
2
)
⋯
g
m
(
2
,
n
)
⋮
⋮
⋱
⋮
g
m
(
k
,
1
)
g
m
(
k
,
2
)
⋯
g
m
(
k
,
n
)
]
g_m= \begin{bmatrix} g^{(1,1)}_m&g^{(1,2)}_m&\cdots&g^{(1,n)}_m \\ g^{(2,1)}_m&g^{(2,2)}_m&\cdots&g^{(2,n)}_m \\ \vdots&\vdots&\ddots&\vdots \\ g^{(k,1)}_m&g^{(k,2)}_m&\cdots&g^{(k,n)}_m \end{bmatrix}
gm=⎣⎢⎢⎢⎢⎡gm(1,1)gm(2,1)⋮gm(k,1)gm(1,2)gm(2,2)⋮gm(k,2)⋯⋯⋱⋯gm(1,n)gm(2,n)⋮gm(k,n)⎦⎥⎥⎥⎥⎤
基本生成矩阵
G
B
G_B
GB:
(
n
,
k
,
N
)
(n,k,N)
(n,k,N)卷积码的基本生成矩阵
G
B
G_B
GB由
N
N
N个子生成矩阵
g
m
g_m
gm组成,是一个
k
×
N
n
k \times Nn
k×Nn矩阵。
G
B
=
[
g
0
g
1
⋯
g
N
−
1
]
G_B=\begin{bmatrix}g_0&g_1&\cdots&g_{N-1}\end{bmatrix}
GB=[g0g1⋯gN−1]
生成矩阵
G
∞
G_\infty
G∞:
(
n
,
k
,
N
)
(n,k,N)
(n,k,N)卷积码的生成矩阵
G
∞
G_\infty
G∞是一个半无穷矩阵,
G
∞
G_\infty
G∞可以表示为:
G
∞
=
[
g
0
g
1
⋯
g
N
−
2
g
N
−
1
0
0
0
⋯
0
g
0
g
1
⋯
g
N
−
2
g
N
−
1
0
0
⋯
0
0
g
0
g
1
⋯
g
N
−
2
g
N
−
1
0
⋯
⋯
⋯
⋯
⋯
⋯
⋯
⋯
⋯
⋯
]
G_\infty= \begin{bmatrix} g_0&g_1&\cdots&g_{N-2 }&g_{N-1}&0&0&0&\cdots\\ 0&g_0&g_1&\cdots&g_{N-2 }&g_{N-1}&0&0&\cdots\\ 0&0&g_0&g_1&\cdots&g_{N-2 }&g_{N-1}&0&\cdots\\ \cdots&\cdots&\cdots&\cdots&\cdots&\cdots&\cdots&\cdots&\cdots \end{bmatrix}
G∞=⎣⎢⎢⎡g000⋯g1g00⋯⋯g1g0⋯gN−2⋯g1⋯gN−1gN−2⋯⋯0gN−1gN−2⋯00gN−1⋯000⋯⋯⋯⋯⋯⎦⎥⎥⎤
G
∞
G_\infty
G∞的每
k
k
k行(
g
m
g_m
gm有
k
k
k行)是前一
k
k
k行向右移位
n
n
n列(
g
m
g_m
gm有
n
n
n列)的结果。
生成矩阵的作用
假设移位寄存器的初态都是0,编码器对每组
k
k
k个信息比特的输入产生一组
n
n
n个编码比特输出。当第一组
k
k
k个信息比特(用
M
(
0
)
M(0)
M(0)表示)输入时,输出为
Y
(
0
)
=
M
(
0
)
g
0
Y(0)=M(0)g_0
Y(0)=M(0)g0(对比
G
∞
G_\infty
G∞的第一列,观察规律),相当于
M
(
0
)
M(0)
M(0)中的
k
k
k个比特输入到与其相连的模2和加法器后运算的结果。当第二组
k
k
k个信息比特(用
M
(
1
)
M(1)
M(1)表示)输入时,前一组
k
k
k个信息比特向后移位,输出为
Y
(
1
)
=
M
(
0
)
g
1
+
M
(
1
)
g
0
Y(1)=M(0)g_1+M(1)g_0
Y(1)=M(0)g1+M(1)g0(对比
G
∞
G_\infty
G∞的第二列,观察规律),相当于
M
(
0
)
M(0)
M(0)和
M
(
1
)
M(1)
M(1)中的
2
k
2k
2k个比特输入到与其相连的模2和加法器后运算的结果。以此类推,可得
Y
(
N
)
=
M
(
0
)
g
N
−
1
+
M
(
1
)
g
N
−
2
+
⋯
+
M
(
N
−
2
)
g
1
+
M
(
N
−
1
)
g
0
(
对
比
G
∞
的
第
N
列
,
观
察
规
律
)
Y(N)=M(0)g_{N-1}+M(1)g_{N-2 }+\cdots+M(N-2)g_1+M(N-1)g_0(对比G_\infty的第N列,观察规律)
Y(N)=M(0)gN−1+M(1)gN−2+⋯+M(N−2)g1+M(N−1)g0(对比G∞的第N列,观察规律)此时,再有一组信息比特(用
M
(
N
)
M(N)
M(N)表示)输入时,
M
(
0
)
M(0)
M(0)被移除移位寄存器而消失。
(我有点口拙,这块可能描述的不是很清楚,主要靠意会 😄,后面举例子)
举例
( n , 1 , N ) (n,1,N) (n,1,N)卷积码
给定子生成元:
g
(
1
,
1
)
=
10011
g^{(1,1)}=10011
g(1,1)=10011,
g
(
1
,
2
)
=
11101
g^{(1,2)}=11101
g(1,2)=11101
由子生成元可得:
n
=
2
n=2
n=2,
N
=
5
N=5
N=5
生成元为:
g
(
1
)
=
11
01
01
10
11
g^{(1)}=11\:01\:01\:10\:11
g(1)=1101011011
子生成矩阵为:
g
0
=
[
11
]
g_0=\begin{bmatrix}11\end{bmatrix}
g0=[11],
g
1
=
[
01
]
g_1=\begin{bmatrix}01\end{bmatrix}
g1=[01],
g
2
=
[
01
]
g_2=\begin{bmatrix}01\end{bmatrix}
g2=[01],
g
3
=
[
10
]
g_3=\begin{bmatrix}10\end{bmatrix}
g3=[10],
g
4
=
[
11
]
g_4=\begin{bmatrix}11\end{bmatrix}
g4=[11]
生成矩阵为:
G
∞
=
[
11
01
01
10
11
00
00
00
⋯
0
11
01
01
10
11
00
00
⋯
0
0
11
01
01
10
11
00
⋯
⋯
⋯
⋯
⋯
⋯
⋯
⋯
⋯
⋯
]
G_\infty= \begin{bmatrix} 11&01&01&10&11&00&00&00&\cdots\\ 0&11&01&01&10&11&00&00&\cdots\\ 0&0&11&01&01&10&11&00&\cdots\\ \cdots&\cdots&\cdots&\cdots&\cdots&\cdots&\cdots&\cdots&\cdots \end{bmatrix}
G∞=⎣⎢⎢⎡1100⋯01110⋯010111⋯100101⋯111001⋯001110⋯000011⋯000000⋯⋯⋯⋯⋯⎦⎥⎥⎤
编码器原理图为:
当输入序列为
m
=
110110000
⋯
m=110110000\cdots
m=110110000⋯时,输出序列为
y
=
11
10
00
00
11
11
11
01
11
00
⋯
y=11\:10\:00\:00\:11\:11\:11\:01\:11\:00\:\cdots
y=11100000111111011100⋯
( n , k , N ) (n,k,N) (n,k,N)卷积码
给定子生成元:
g
(
1
,
1
)
=
100
,
g
(
1
,
2
)
=
000
,
g
(
1
,
3
)
=
101
g^{(1,1)}=100,g^{(1,2)}=000,g^{(1,3)}=101
g(1,1)=100,g(1,2)=000,g(1,3)=101
g
(
2
,
1
)
=
000
,
g
(
2
,
2
)
=
100
,
g
(
2
,
3
)
=
110
g^{(2,1)}=000,g^{(2,2)}=100,g^{(2,3)}=110
g(2,1)=000,g(2,2)=100,g(2,3)=110
由子生成元可得:
n
=
3
n=3
n=3,
k
=
2
k=2
k=2,
N
=
3
N=3
N=3
生成元为:
g
(
1
)
=
101
000
001
g^{(1)}=101\:000\:001
g(1)=101000001
g
(
2
)
=
011
001
000
g^{(2)}=011\:001\:000
g(2)=011001000
子生成矩阵为:
g
0
=
[
1
0
1
0
1
1
]
,
g
1
=
[
0
0
0
0
0
1
]
,
g
2
=
[
0
0
1
0
0
0
]
g_0=\begin{bmatrix}1&0&1\\0&1&1\end{bmatrix},g_1=\begin{bmatrix}0&0&0\\0&0&1\end{bmatrix},g_2=\begin{bmatrix}0&0&1\\0&0&0\end{bmatrix}
g0=[100111],g1=[000001],g2=[000010]
生成矩阵为:
G
∞
=
[
101
000
001
000
000
000
⋯
011
001
000
000
000
000
⋯
000
101
000
001
000
000
⋯
000
011
001
000
000
000
⋯
000
000
101
000
001
000
⋯
000
000
011
001
000
000
⋯
⋯
⋯
⋯
⋯
⋯
⋯
⋯
]
G_\infty= \begin{bmatrix} 101&000&001&000&000&000&\cdots\\ 011&001&000&000&000&000&\cdots\\ 000&101&000&001&000&000&\cdots\\ 000&011&001&000&000&000&\cdots\\ 000&000&101&000&001&000&\cdots\\ 000&000&011&001&000&000&\cdots\\ \cdots&\cdots&\cdots&\cdots&\cdots&\cdots&\cdots \end{bmatrix}
G∞=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎡101011000000000000⋯000001101011000000⋯001000000001101011⋯000000001000000001⋯000000000000001000⋯000000000000000000⋯⋯⋯⋯⋯⋯⋯⋯⎦⎥⎥⎥⎥⎥⎥⎥⎥⎤
编码器原理图为:
当输入序列为
m
=
10
11
00
00
⋯
m=10\:11\:00\:00\cdots
m=10110000⋯时,输出序列为
y
=
101
110
000
001
000
⋯
y=101\:110\:000\:001\:000\:\cdots
y=101110000001000⋯
参考:卷积码
通信原理(第二版)张会生 著