纠错码 - 二进制卷积码
错误和纠错码
由于干扰和网络问题,在计算机网络传输过程中,比特可能会发生损坏,从而导致错误。
纠错码 (ECC) 是一系列由特定算法生成的数字,用于检测和消除在嘈杂信道上传输的数据中的错误。纠错码确定了已损坏比特的确切数量以及在算法限制内已损坏比特的位置。
ECC 可以广泛地分为两种类型:分组码和卷积码。
二进制卷积码
在卷积码中,消息包含任意长度的数据流,并且通过将布尔函数滑动应用于数据流来生成输出比特序列。
在分组码中,数据包含一定长度的数据块。然而,在卷积码中,输入数据位不会被分成块,而是作为数据位流馈送,根据编码器的逻辑函数卷积成输出位。此外,与分组码不同的是,分组码的输出码字仅取决于当前输入,而在卷积码中,输出流不仅取决于当前输入位,还取决于存储在内存中的先前输入位。
卷积码由 Elias 于 1955 年首次提出。此后,许多数学家进行了许多中间研究。1973 年,Viterbi 开发了一种用于最大似然解码方案的算法,称为 Viterbi 方案,它导致了现代卷积码的出现。
Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.
卷积码的编码
为了生成卷积码,信息按顺序通过线性有限状态移位寄存器。移位寄存器包含 (-bit) 阶段和布尔函数发生器。
卷积码可以表示为 (n,k, K),其中
k 是在一次编码中移入编码器的比特数。通常,k = 1。
n 是对应于 k 个信息比特的编码器输出比特数。
码率,Rc = k/n 。
编码器内存,大小为 k 的移位寄存器,是约束长度。
n 是当前输入比特和K内容的函数。
编码器的状态由 (K - 1) 比特的值给出。
生成卷积码的示例
让我们考虑一个k = 1, n = 2 和 K = 3 的卷积编码器。
码率,Rc = k/n = 1/2 。
输入字符串从右到左流入编码器。
当第一个比特 1 流入编码器时,编码器的内容将为 -
当下一个比特 1 流入编码器时,编码器的内容将为 -
当下一个比特 0 流入编码器时,编码器的内容将为 -
当最后一个比特 1 流入编码器时,编码器的内容将为 -
用状态转换图和状态表表示卷积编码器
从上面的例子中,我们可以看到任何特定的二进制卷积编码器都与一组二进制输入、一组二进制输出和一组状态相关联。转换和输出可以通过状态转换图和状态表有效地表示。
对于示例中给出的二进制卷积编码器 -
The set of inputs = {0, 1} The set of outputs = { 00, 10, 11} The set of states = { 00, 01, 10, 11}
我们可以看到,在初始状态 00 中,当输入 1 时,下一个状态变为 10,相应的输出为 11。在此状态 10 中,当输入 1 时,下一个状态为 11,编码器输出为 10。以同样的方式,我们得到其他转换。当将其制成表格时,我们得到如下状态转换表 -
相应的状态转换图将为 -