2. 海明碼: 海明碼是由R.HmIMI1ing在1950年首次提出的,它是一種可以糾正一位差錯的編碼。
可以借用簡單同位碼的產生原理來說明海明碼的構造方法。若k(=n-1)位資訊位an-1an-2…a1加上一位偶校正位a0,構成一個n位的碼字an-1an-2...a1a0,則在接收端校正時,可按關係式 S=an-1+an-2+…+a1+a0
來計算。若求得S=0,則表示元錯;若S=1,則有錯。上式可稱為監督關係式,S稱為校.正因子。.在同位情況下,只有一個監督關係式和一個校正因子,其取值只有0或1兩種情.況,分別代表元錯和有錯兩種結果,還不能指出差錯所在的位置。不難設想,若增加冗餘位,也即相應地增加了監督關係式和校正因子,就能區分更多的情況。如果有兩個校正因子. S1和S0,則S1S0取值就有00、01、10或11四種可能的組合,也即能區分四種不同的情況。若其中一種取值用於表示無錯(如00),則另外三種(01、10及11)便可以用來指出.不同情況的差錯,從而可以進一步區分出是哪一位錯。
設資訊位為k位,增加r位冗餘位,構成一個n=k+r位的碼字。若希望用r個監督關係式產生的r個校正因子來區分元錯和在碼字中的n個不同位置的一位錯,則要求滿足以下關係式: 2^r>=n+1 或 2^r>=k+r+1
以k=4為例來說明,則要滿足上述不等式,必須r>=3。假設取r=3,則n=k+r=7,即在4位資訊位a6a5a4a3後面加上3位冗餘位a2a1a0,構成7位碼字a6a5a4a3a2a1a0,其中a2、a1和a0分別由4位資訊位中某幾位半加得到,在校正時,a2、a1和a0就分別和這些位半.加構成三個不同的監督關係式。在無錯時,這三個關係式的值S2、S1和S0全為"0"。若a2錯,則S2=1,而S1=S0=0;若a1錯,則S1=1,而S2=S0=0;若a0錯,則s0=1,而S2=S1=0。S2、S1和S0這三個校正因子的其它4種編碼值可用來區分a3、a4、a5、a6中的一位錯,其對應關係如表2.1。當然,也可以規定成另外的對應關係,這並不影響討論的一般性。 表2.1 S2 S1 S0 值與錯碼位置的對應關係
S2 S1 S0 |
000 |
001 |
010 |
100 |
011 |
101 |
110 |
111 |
錯碼位置 |
無錯 |
a0 |
a1 |
a2 |
a3 |
a4 |
a5 |
a6 |
|
由表可見,a2、a4、a5或a6的一位錯都應使S2=1,由此可以得到監督關係式.. S2=a2+a4+a5+a6.... 同理可得:S1=a1+a3+a5+a6.. S0=a0+a3+a4+a6 在發送端編碼時,資訊位a6、a5、a4和句的值取決於輸入訊號,它們在具體的應用中有l確定的值。冗餘位電、a1和ao的值應根據資訊位的取值按監督關係式來確定,使上述三式l中的S2、S1和S0取值為零,即 a2+a4+a5+a6=0 a1+a3+a5+a6=0 a0+a3+a4+a6=0 由此可求得: a2=a4+a5+a6 a1=a3+a5+a6 a0=a3+a4+a6
已知資訊位後,按上述三式即可算出各冗餘位。對於本例來說,各種資訊位算出的冗餘位如表2.2所示。 表2.2 由資訊位算得海明碼冗餘位
資訊位 a6a5a4a3 |
冗餘位 a2a1a0 |
資訊位 a6a5a4a3 |
冗餘位 a2a1a0 |
0000 |
000 |
1000 |
111 |
0001 |
011 |
1001 |
100 |
0010 |
101 |
1010 |
010 |
0011 |
110 |
1011 |
001 |
0100 |
110 |
1100 |
001 |
0101 |
101 |
1101 |
010 |
0110 |
011 |
1110 |
100 |
0111 |
000 |
1111 |
111 |
|
在接收端收到每個碼字後,按監督關係式算出S2、S1和S0,若它們全為"0",則認為無錯;若不全為"0",在一位錯的情況下,可查表2.1來判定是哪一位錯,從而糾正之。例如碼字0010101傳輸中發生一位錯,在接收端收到的為0011101,代入監督關係式可算得S2=0、S1=1和S0=1,由表2.1可查得S2S1S0=011對應於a3錯,因而可將0011101糾正為00101010。
上述海明碼的編碼效率為4/7。若K=7,按2r>=k+r+1可算得r至少為4,此時編碼.效率為7/11。可見,資訊位位元越多時編碼效率就越高 |
|