1. 约束长度和编码器状态的关系
首先,约束长度(Constraint Length,通常用 K K K 表示)是指卷积编码器在生成输出比特时,所需要参考的比特数。这包括当前的输入比特和之前存储的 K − 1 K-1 K−1 个比特。因此,约束长度为 K K K 表示编码器需要用到 K K K 个比特的信息来决定输出。
在这个例子中,约束长度 K = 3 K = 3 K=3,表示编码器需要用到当前输入比特和之前两个比特的信息。这三个比特是用来计算输出的。
1.1 编码器的状态数
虽然约束长度为3,但编码器的状态是由前 K − 1 = 2 K-1 = 2 K−1=2 个比特决定的。原因如下:
- 约束长度为3,这表示编码器需要用到3个比特的信息:当前输入比特(称为 x [ n ] x[n] x[n])和前两个输入比特(分别是 x [ n − 1 ] x[n-1] x[n−1] 和 x [ n − 2 ] x[n-2] x[n−2])。
- 但是,在编码过程中,编码器的状态实际上不需要知道当前比特 x [ n ] x[n] x[n],它只需要知道之前的两个比特( x [ n − 1 ] x[n-1] x[n−1] 和 x [ n − 2 ] x[n-2] x[n−2]),因为当前比特会作为输入进入编码器。因此,编码器的状态仅由之前的两个比特决定,这两个比特可以有 2 2 = 4 2^2 = 4 22=4 种组合(00、01、10、11),用两个比特来表示编码器的状态是足够的。
因此,当约束长度为3时,编码器的状态数是 2 K − 1 = 2 2 = 4 2^{K-1} = 2^2 = 4 2K−1=22=4,这些状态是用两个比特来表示的。
2. 为什么输入两个零可以清零?
为了让编码器回到全零状态,我们需要逐渐把之前的状态“清空”,这就需要向编码器输入足够的零比特。
2.1 清零过程的原理
- 编码器的状态由两个比特( x [ n − 1 ] x[n-1] x[n−1] 和 x [ n − 2 ] x[n-2] x[n−2])决定。当我们输入一个新比特时,编码器的状态就会向前移动,比如原来的 x [ n − 1 ] x[n-1] x[n−1] 变成新的 x [ n − 2 ] x[n-2] x[n−2],而新的 x [ n ] x[n] x[n] 变成新的 x [ n − 1 ] x[n-1] x[n−1]。
- 因此,每当我们输入一个零,比特序列就会向前移动一个位置。如果我们连续输入两个零,比特序列中的两个位置都会被零填满,这就使得之前存储的比特被完全替换为零。
- 在这个例子中,编码器的状态由两个比特表示(因为约束长度为3),所以只需要输入两个零比特,就可以确保这两个比特的位置全部变为零,从而将编码器完全清零。
2.2 输入的零比特数与约束长度的关系
为了确保编码器回到全零状态,我们需要输入的零比特数是 K − 1 K - 1 K−1,即约束长度减1:
- 对于约束长度为3的情况,我们需要输入 K − 1 = 3 − 1 = 2 K - 1 = 3 - 1 = 2 K−1=3−1=2 个零。这是因为编码器的状态由 K − 1 K - 1 K−1 个比特决定,当我们输入两个零时,就可以确保所有状态比特都变为零。
总结
- 约束长度为3时,编码器的状态由两个比特(前两个输入比特)决定。
- 为了完全清零,需要输入与状态比特数相同数量的零,即 K − 1 K - 1 K−1 个零,这样编码器的历史状态就会被零填满,回到全零状态。