错误校正和检测代码

在本教程中,我们将了解一些常用的误差校正和检测代码。我们将在数字通信中看到错误,什么是不同类型的错误,一些错误校正和检测代码,如奇偶校验,CRC,汉明码等。

介绍

在数字系统中,模拟信号将变为数字序列(以位的形式)。该比特序列被称为“数据流”。单位的位置的变化也导致数据输出中的灾难性(主要)错误。几乎在所有电子设备中,我们发现错误,我们使用错误检测和校正技术来获得精确或近似的输出。

什么是错误

在传输期间,数据可以损坏(从源到接收器)。它可能受到外部噪音或其他一些物理缺陷的影响。在这种情况下,输入数据与接收的输出数据不同。这种不匹配的数据被称为“错误”。

数据错误会导致重要/安全的数据丢失。即使是数据的一点点变化也可能影响整个系统的性能。一般来说,数字系统中的数据传输将以“位传输”的形式进行。在这种情况下,数据错误很可能在位置0和1上发生改变。

E1.

回到顶部

错误的类型

在数据序列中,如果将1变为零或0更改为1,则称为“位错误”。

在从发射机到接收机的数据传输中,一般有三种类型的错误发生。他们是

•单位错误

•多个位错误

•爆发错误

单位数据错误

整个数据序列中的一位的变化称为“单位错误”。串行通信系统中单位误差的发生非常罕见。这种类型的错误仅发生在并行通信系统中,因为数据在单线中传输位明智,有可能是单线嘈杂的。

E2.

多个数据错误

如果两个或多个数据序列的发送器到接收器有变化,则它被称为“多位错误”。这种类型的错误发生在串行类型和并行类型数据通信网络中。

E3.

爆发错误

数据序列中的比特集的变化称为“突发错误”。从第一位更改到最后一位更改,从第一个比特更改计算突发错误。

E4.

在这里,我们将错误表单第四位识别为第6位。第4位和第6位之间的数字也被视为错误。这些比特称为“突发错误”。这些突发位从发送器到接收器的变化,这可能导致数据序列中的主要错误。这种类型的错误发生在串行通信中,并且难以解决。

回到顶部

检测代码错误

在数字通信系统中,错误随着数据一起从一个通信系统转移到另一个通信系统。如果这些错误不被发现和纠正,数据将丢失。为了实现有效的通信,数据的传输必须具有较高的精度,这可以通过首先检测错误,然后改正错误来实现。

错误检测是在通信系统中检测从发送器发送到接收器的数据中存在的错误的过程。我们使用一些冗余码来检测这些错误,通过在从源(发送器)发送到数据时添加到数据。这些代码称为“错误检测代码”。

错误检测类型

  1. 奇偶校验
  2. 循环冗余检查(CRC)
  3. 纵向冗余检查(LRC)
  4. 检查和

奇偶校验

奇偶校验位意味着在发送数据之前,没有任何添加到发射器的数据的比特。在添加奇偶校验位之前,在数据中计算1的1或零。基于此数据的计算,将额外的位添加到实际信息/数据中。向数据添加奇偶校验位将导致数据字符串大小的变化。

这意味着如果我们有一个8位的数据,那么在向数据二进制字符串添加奇偶校验位之后,它将成为一个9位的二进制数据字符串。

奇偶校验也称为“垂直冗余检查(VRC)”。

错误检测中有两种类型的奇偶校验位,它们是

  • 偶同位
  • 奇数
甚至是奇偶校验
  • 如果数据有偶数个1,奇偶校验位为0。例如:data is 10000001 -> parity bit 0
  • 奇数1的,奇偶校验位为1.前:数据是10010001 - >奇偶校验位1
奇校验
  • 如果数据有奇数1的1,则奇偶校验位为0.例如:数据是10011101 - >奇偶校验位0
  • 偶数为1,奇偶校验位为1.前:数据是10010101 - >奇偶校验位1

笔记:数据位的计数也将包括奇偶校验位。

在发射器处向数据添加奇偶校验位的电路称为“奇偶校验发生器”。发送奇偶校验比特,并在接收器处检查它们。如果在接收器处接收的发送器和奇偶校验位的奇偶校验位不等于,则检测到错误。检查接收器奇偶校验的电路称为“奇偶校验器”。

甚至是奇偶校验和奇数奇偶校验的消息

5.

回到顶部

循环冗余检查(CRC)

循环代码是线性(n,k)块代码,其属性是码字的每个循环移位导致另一个代码字。这里k表示发射机处的消息的长度(信息位数)。n是添加检查位后邮件的总长度。(实际数据和检查位)。n,k是检查位的数量。
通过错误检测的循环冗余检查的代码被称为CRC代码(循环冗余校验码)。环冗余校验码是缩短的循环码。这些类型的代码用于错误检测和编码。它们可以使用具有反馈连接的移位寄存器轻松实现。这就是为什么他们广泛用于数字通信的错误检测。CRC代码将提供有效和高水平的保护。

CRC生成代码

基于所需的位检查数,我们将向实际数据添加一些零(0)。这种新的二进制数据序列由长度n + 1的新单词除以,其中n是要添加的检查比特数。作为该模数2分割的结果获得的提醒被添加到股息位序列以形成循环代码。生成的代码字由代码生成中使用的除数是完全可分割的。这通过发射器传输。

例子

前女友

在接收器方面,我们将接收的代码单词除以相同的除法以获取实际代码字。对于无错误接收数据,提醒为0.如果提醒是非零,则意味着接收的代码/数据序列存在错误。错误检测的概率取决于用于构造循环码的校验位数(n)。对于单位和两个比特错误,概率为100%。

对于长度N - 1的突发误差,错误检测的概率为100%。

长度等于n + 1的突发误差,错误检测的概率降低到1 - (1/2)n - 1

长度大于n - 1的突发误差,错误检测的概率为1 - (1/2)N

回到顶部

纵向冗余校验

在纵向冗余方法中,位块以表格格式排列(在行和列中),我们将分别计算每列的奇偶校验位。这些奇偶校验位的集合也与我们的原始数据位一起发送。

纵向冗余检查有点逐位奇偶校验计算,因为我们单独计算每列的奇偶校验。

该方法可以很容易地检测到突发错误和单比特错误,但无法检测到同一垂直切片中出现的2比特错误。

6.

回到顶部

检查和

校验和类似于奇偶校验位,除了校验位的数目大于奇偶校验位,结果总是被限制为零。这意味着如果校验和为零,则会检测到错误。消息的校验和是一定长度的码字的算术和。该总和以1的补充表示,并作为实际码字的码扩展存储或转移。在接收端,通过从发送端接收位序列来计算新的校验和。

校验和方法包括奇偶校验位,校验位和纵向冗余校验(LRC)。例如,如果我们必须转移和检测长数据序列的错误(也称为数据字符串),那么我们将其分为较短的单词,我们可以将数据存储在相同的宽度中。对于每个传入的位,我们将它们添加到已存储的数据中。在各个例子中,新添加的单词称为“校验和”。

在接收器方面,接收的位校验和与发射器的校验和相同,没有找到错误。

我们还可以通过添加所有数据位找到校验和。例如,如果我们有4个字节的数据为25h,62h,3fh,52h。

然后,添加所有字节我们得到118h

放下携带,Nibble,我们得到18H

找到啃的2的补充,即E8H

这是传输的4位数据的校验和。

在接收端,要检查数据是否正确接收,只需将校验和加到实际数据位上(我们将得到200H)。去掉进位,我们得到00H。这意味着校验和被限制为零。所以数据中没有错误。

通常,有5种类型的校验和方法

  • 整数加法校验和
  • 一个人的补充校验和
  • 弗莱彻校验和
  • 阿德勒校验和
  • ATN校验和(AN / 466)

例子

exx.

截至现在我们讨论了错误检测代码。但要收到完全和完善的数据序列而没有任何错误,才能通过检测数据发生的错误来完成。但是,我们还需要通过消除错误的存在来纠正数据,如果有的话。为此我们使用其他代码。

回到顶部

纠正代码纠错

用于错误检测和纠错误差的代码被称为“纠错码”。纠错技术有两种类型。他们是,

  • 单点误差校正
  • 突发纠错

纠正单位错误的过程或方法称为“单位错误纠正”。对数据序列中的突发错误进行检测和校正的方法称为“突发错误校正”。

汉明码或汉明距离码是我们在大多数通信网络和数字系统中使用的最佳纠错码。

回到顶部

汉明码

该错误检测和校正代码技术是由R.W.HAMM开发的。此代码不仅标识了整个数据序列中的错误位,而且还纠正了它。此代码使用位于码字中的某些位置的多个奇偶校验位。奇偶校验位数取决于信息位的数量。汉明代码使用冗余比特和数据位之间的关系,并且该代码可以应用于任何数量的数据位。

什么是冗余的位?

冗余表示“实际数据序列的比特数与发送比特之间的差异”。这些冗余位用于通信系统中以检测和纠正错误(如果有)。

汉明代码如何实际纠正错误?

在汉明码中,冗余位放置在某些计算的位置以消除错误。两个冗余位之间的距离称为“汉明距离”。

要了解汉明代码的工作和数据纠错和检测机制,让我们看看以下阶段。

奇偶校验位数

如我们之前学到的,要添加到数据字符串的奇偶校验比特数取决于要发送的数据字符串的信息比特数。通过使用数据位来计算奇偶校验位数。下面给出了这一关系。

2P.> = n + p +1

这里,n表示数据字符串中的位数。

P表示奇偶校验位的个数。

例如,如果我们有4位数据字符串,即n = 4,则可以使用试验和错误方法找到要添加的奇偶校验比特数。让我们拿到p = 2,然后

2P.= 22= 4和n + P + 1 = 4 + 2 + 1 = 7

这违反了实际表达式。

所以让我们尝试p = 3,然后

2P.= 23.= 8 and n + P + 1 = 4 + 3 + 1 = 8

因此,我们可以说需要使用单比特纠错传输4位数据所需的3个奇偶校验位。

在哪里放置这些奇偶校验位?

在计算所需的奇偶校验比特数之后,我们应该知道将它们放在信息串中的适当位置,以提供单位纠错。

在上述示例中,我们有4个数据位和3个奇偶校验位。因此要传输的总码字是7位(4 + 3)。我们通常将数据序列从右到左表示,如下所示。

7位,6位,5位,4位,3位,2位,1位,0位

奇偶校验位必须位于2.即的力量位置。在1,2,4,8和16等处,因此包括奇偶校验位之后的码字将是这样的

D7 d6 d5 p4 d3 p2 p1

这里P1 P2 P3是奇偶位。D1 - D7是数据位。

构建一点位置表

在汉明代码中,每个奇偶校验位检查并有助于查找整个代码字中的错误。因此,我们必须找到奇偶校验位的值来为它们分配一个位值。

7.

通过计算和插入数据位的奇偶校验位,我们可以通过汉明码实现纠错。

让我们通过调查一个例子来清楚地了解这一点。

前任:

用汉明码对数据1101进行偶校验编码。

步骤1

计算所需的奇偶校验位数。

设P = 2,那么

2P.= 22= 4和n + P + 1 = 4 + 2 + 1 = 7。

对于4位数据,2个奇偶校验位不足以。

所以让我们尝试p = 3,然后

2P.= 23.= 8 and n + P + 1 = 4 + 3 + 1 = 8

因此,对于4位数据,3个奇偶校验位就足够了。

码字的总位数是4 + 3 = 7

第2步

构建位位置表

8.

第3步

确定奇偶校验位。

对于P1:3,5和7位具有三个1,因此偶数均匀,P1 = 1。

对于P2: 3、6和7位有两个1,所以对于偶校验,P2 = 0。
对于p3:5,6和7位,具有两个1,因此均匀奇偶校验,p3 = 0。

通过在各自位置输入/插入奇偶校验比特,可以形成码字并发送。这是1100101。

笔记:如果代码字全为零(例如:0000000),则汉明码中没有错误。

要以字母和数字表示二进制数据,我们使用字母数字代码。

回到顶部

字母数字代码

字母数字代码基本上是二进制代码,用于表示字母数字数据。由于这些代码由字符表示数据,因此字母数字代码也称为“字符代码”。

这些代码可以以计算机可接受的形式表示所有类型的数据,包括字母、数字、标点符号和数学符号。这些代码是在I/O设备中实现的,如键盘、监视器、打印机等。
在早期,打孔卡被用来表示字母数字代码。

他们是

  • 摩尔斯特码
  • Baudot Code.
  • Hollerith Code.
  • ASCII代码
  • EBCDI代码
  • unicode.

摩尔斯特码

在计算机和数字电子电子时代的起始阶段,莫尔斯代码非常流行,最具使用的代码。这是由Samuel F.B.Morse发明的,于1837年。这是第一个用于电信中使用的电汇。它主要用于电报频道,无线电通道和空中交通管制单元。

Boudot代码

这段代码是由法国工程师Emile BadoT发明的,于1870年。它是一个5个单元代码,意味着它使用5个元素来表示字母表。它还用于电报网络以转移罗马数字。

Hollerith Code.

此代码由Herman Hollerith成立于1896年的公司开发的。根据传输信息打印卡的12位代码称为“Hollerith代码”。

ASCII代码

ASCII指的是美国标准代码用于信息交换。它是世界上最受欢迎和广泛使用的字母数字代码。此代码是在1967年开发的,首次发布的。ASCII代码是一个7位代码,这意味着此代码使用27 = 128个字符。这包括

26个小写字母(a - z), 26个大写字母(a - z), 33个特殊字符和符号(如!@ # $ etc), 33个控制字符(* - + /和% etc)和10个数字(0 - 9)。

在这个7位代码中,我们有两个部分,最左边的3位和右侧4位。最左侧的3位是已知的“区域位”,右侧4位被称为“数字位”

ASCII表

8位ASCII码可以表示256(28)个字符。它被称为USACC - II或ASCII - 8码。

例子:

如果我们想打印名称Londan,ASCII代码是?

相当于L = 1001100的ASCII-7

o = 100 1111的ASCII-7等效物

ASCII-7等效于n = 100 1110

ASCII-7等同D = 100 0100

ASCII-7等效A = 100 0001

ASCII-7等效于n = 100 1110

在ASCII代码中的LONDAN输出为1 0 0 1 1 0 0 1 0 0 11 11 11 1 0 0 11 11 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 1 0 0 11 1 1 0。

unicode.

ASCII代码和EBCDI代码的缺点是它们不能与所有语言兼容,而且它们没有足够的字符集来表示所有类型的数据。为了克服这些缺点,我们开发了这个UNICODE。
Unicode是所有数字编码技术的新概念。在此,我们有一个不同的字符来表示每个数字。它是最先进和最复杂的语言,具有代表任何类型的数据。所以这被称为“通用守则”。它是一个16位代码,我们可以代表216 = 65536不同的字符。
Unicode是由Unicode Consortium和ISO(标准化国际组织)的综合努力制定的。

EBCDI代码

EBCDI代表扩展二进制编码的十进制交换码。此代码由IBM公司开发。它是一个8位的代码,所以我们可以使用EBCDI代码表示28 = 256个字符。这包括所有的字母和符号,如26个小写字母(a - z), 26个大写字母(a - z), 33个特殊字符和符号(如!@ # $ etc), 33个控制字符(* - + /和% etc)和10个数字(0 - 9)。

在EBCDI代码中,8位代码的数字由8421 BCD代码前面的1111表示。

EBCDIC-CODE-24-1-4-638
eBDic代码

回到顶部

3回复

发表评论

您的电子邮件地址不会被公开。必需的地方已做标记*