纠错17 Mar 2025 | 5 分钟阅读 错误纠正码用于在数据从发送方传输到接收方时检测和纠正错误。 错误纠正可以通过两种方式处理
单个附加位可以检测错误,但无法纠正错误。 为了纠正错误,必须知道错误的精确位置。例如,如果我们想计算单比特错误,纠错码将确定七个比特中的哪一个出错。为了实现这一点,我们必须添加一些额外的冗余比特。 假设 r 是冗余比特的数量,d 是数据比特的总数。冗余比特 r 的数量可以通过以下公式计算 2r>=d+r+1 r 的值是通过使用上述公式计算的。例如,如果 d 的值为 4,那么满足上述关系的最小可能值为 3。 为了确定出错比特的位置,R.W Hamming 开发了一种名为 Hamming 码的技术,该技术可以应用于任何长度的数据单元,并利用数据单元和冗余单元之间的关系。 Hamming 码奇偶校验位: 附加到原始二进制比特数据中的比特,以便 1 的总数是偶数或奇数。 偶校验: 要检查偶校验,如果 1 的总数为偶数,则奇偶校验位的值为 0。如果 1 的总出现次数为奇数,则奇偶校验位的值为 1。 奇校验: 要检查奇校验,如果 1 的总数为偶数,则奇偶校验位的值为 1。如果 1 的总数为奇数,则奇偶校验位的值为 0。 Hamming 码算法
错误位置与二进制数之间的关系。![]() 让我们通过一个例子来理解 Hamming 码的概念 假设原始数据是 1010,需要发送。 Total number of data bits 'd' = 4 Number of redundant bits r : 2r >= d+r+1 2r>= 4+r+1 Therefore, the value of r is 3 that satisfies the above relation. Total number of bits = d+r = 4+3 = 7; 确定冗余比特的位置冗余比特数为 3。这三个比特分别表示为 r1、r2、r4。冗余比特的位置通过与 2 的幂次对应来计算。因此,它们对应的位置是1、21、22。 添加奇偶校验位后的数据表示 ![]() 确定奇偶校验位确定 r1 位通过对二进制表示中第一个位置包含 1 的比特位置进行奇偶校验来计算 r1 位。 ![]() 我们从上图可以看出,包含 1 的第一个位置是 1、3、5、7。现在,我们对这些比特位置进行偶校验。这些对应于 r1 的比特位置上的 1 的总数是偶数,因此 r1 位的值为 0。 确定 r2 位通过对二进制表示中第二个位置包含 1 的比特位置进行奇偶校验来计算 r2 位。 ![]() 我们从上图可以看出,包含 1 的第二个位置是2、3、6、7。现在,我们对这些比特位置进行偶校验。这些对应于 r2 的比特位置上的 1 的总数是奇数,因此 r2 位的值为 1。 确定 r4 位通过对二进制表示中第三个位置包含 1 的比特位置进行奇偶校验来计算 r4 位。 ![]() 我们从上图可以看出,包含 1 的第三个位置是4、5、6、7。现在,我们对这些比特位置进行偶校验。这些对应于 r4 的比特位置上的 1 的总数是偶数,因此 r4 位的值为 0。 传输的数据如下 ![]() 假设在接收端,第 4 位从 0 变为 1,然后重新计算奇偶校验位。 R1 位r1 位所在的比特位置是 1,3,5,7 ![]() 我们从上图可以看出,r1 的二进制表示是 1100。现在,我们进行偶校验,r1 位中出现的 1 的总数为偶数。因此,r1 的值为 0。 R2 位r2 位所在的比特位置是 2,3,6,7。 ![]() 我们从上图可以看出,r2 的二进制表示是 1001。现在,我们进行偶校验,r2 位中出现的 1 的总数为偶数。因此,r2 的值为 0。 R4 位r4 位所在的比特位置是 4,5,6,7。 ![]() 我们从上图可以看出,r4 的二进制表示是 1011。现在,我们进行偶校验,r4 位中出现的 1 的总数为奇数。因此,r4 的值为 1。
下一主题# |
我们请求您订阅我们的新闻通讯以获取最新更新。