串行數(shù)據(jù)在傳輸過程中,由于干擾可能引起信息的出錯(cuò),例如,傳輸字符‘E’,其各位為:
0100,0101=45H
D7D0
由于干擾,可能使位變?yōu)?,這種情況,我們稱為出現(xiàn)了“誤碼”。我們把如何發(fā)現(xiàn)傳輸中的錯(cuò)誤,叫“檢錯(cuò)”。發(fā)現(xiàn)錯(cuò)誤后,如何消除錯(cuò)誤,叫“糾錯(cuò)”。
最簡單的檢錯(cuò)方法是“奇偶校驗(yàn)”,即在傳送字符的各位之外,再傳送1位奇/偶校驗(yàn)位?刹捎闷嫘r(yàn)或偶校驗(yàn)。
奇校驗(yàn):所有傳送的數(shù)位(含字符的各數(shù)位和校驗(yàn)位)中,“1”的個(gè)數(shù)為奇數(shù),如:
10110,0101
00110,0001
偶校驗(yàn):所有傳送的數(shù)位(含字符的各數(shù)位和校驗(yàn)位)中,“1”的個(gè)數(shù)為偶數(shù),如:
10100,0101
00100,0001
奇偶校驗(yàn)?zāi)軌驒z測出信息傳輸過程中的部分誤碼(1位誤碼能檢出,2位及2位以上誤碼不能檢出),同時(shí),它不能糾錯(cuò)。在發(fā)現(xiàn)錯(cuò)誤后,只能要求重發(fā)。但由于其實(shí)現(xiàn)簡單,仍得到了廣泛使用。
為了能檢測和糾正內(nèi)存軟錯(cuò)誤,首先出現(xiàn)的是內(nèi)存“奇偶校驗(yàn)”。內(nèi)存中最小的單位是比特,也稱為“位”,位有只有兩種狀態(tài)分別以1和0來標(biāo)示,每8個(gè)連續(xù)的比特叫做一個(gè)字節(jié)(byte)。不帶奇偶校驗(yàn)的內(nèi)存每個(gè)字節(jié)只有8位,如果其某一位存儲(chǔ)了錯(cuò)誤的值,就會(huì)導(dǎo)致其存儲(chǔ)的相應(yīng)數(shù)據(jù)發(fā)生變化,進(jìn)而導(dǎo)致應(yīng)用程序發(fā)生錯(cuò)誤。而奇偶校驗(yàn)就是在每一字節(jié)(8位)之外又增加了一位作為錯(cuò)誤檢測位。在某字節(jié)中存儲(chǔ)數(shù)據(jù)之后,在其8個(gè)位上存儲(chǔ)的數(shù)據(jù)是固定的,因?yàn)槲恢荒苡袃煞N狀態(tài)1或0,假設(shè)存儲(chǔ)的數(shù)據(jù)用位標(biāo)示為1、1、1、0、0、1、0、1,那么把每個(gè)位相加(1+1+1+0+0+1+0+1=5),結(jié)果是奇數(shù)。對于偶校驗(yàn),校驗(yàn)位就定義為1,反之則為0;對于奇校驗(yàn),則相反。當(dāng)CPU讀取存儲(chǔ)的數(shù)據(jù)時(shí),它會(huì)再次把前8位中存儲(chǔ)的數(shù)據(jù)相加,計(jì)算結(jié)果是否與校驗(yàn)位相一致。從而一定程度上能檢測出內(nèi)存錯(cuò)誤,奇偶校驗(yàn)只能檢測出錯(cuò)誤而無法對其進(jìn)行修正,同時(shí)雖然雙位同時(shí)發(fā)生錯(cuò)誤的概率相當(dāng)?shù)停媾夹r?yàn)卻無法檢測出雙位錯(cuò)誤。
奇偶監(jiān)督碼是一種增加二進(jìn)制傳輸系統(tǒng)最小距離的簡單和廣泛采用的方法。例如,單個(gè)的奇偶監(jiān)督將使碼的最小距離由一增加到二。
一個(gè)二進(jìn)碼字,如果它的碼元有奇數(shù)個(gè)1,就稱為具有奇性。例如,碼字“1011010111”有七個(gè)1,因此,這個(gè)碼字具有奇性。同樣,偶性碼字具有偶數(shù)個(gè)1。注意奇性檢測等效于所有碼元的模二加,并能夠由所有碼元的異或運(yùn)算來確定。對于一個(gè)n位字,奇性由式(8-1)給出:
奇性=a0