線性分組碼的基本概念:
線性分組碼(n,k)中許用碼字(組)為2k個。定義線性分組碼的加法為模2和,乘法為二進位乘法。即1+1=0、1+0=1、0+1=1、0+0=0;1×1=1、1×0=0、0×0=0、0×1=0。且碼字與碼字的運算在各個相應位元位上符合上述二進位加法運算規則。
線性分組碼具有如下性質(n,k)的性質:
1、封閉性。任意兩個碼組的和還是許用的碼組。
2、碼的最小距離等於非零碼的最小碼重。
對於碼組長度為n、資訊碼元為k位、監督碼元為r=n-k位的分組碼,常記作(n,k)碼,如果滿足2r-1≥n,則有可能構造出糾正一位或一位以上錯誤的線性碼。
下面我們通過(7,4)分組碼的例子來說明如何具體構造這種線性碼。設分組碼(n,k)中,k = 4,為能糾正一位誤碼,要求r≥3。現取r=3,則n=k+r=7。我們用a0ala2a3a4a5a6表示這7個碼元,用S1、S2、S3表示由三個監督方程式計算得到的校正子,並假設三位S1、S2、S3校正子碼組與誤碼位置的對應關係如表12.2所示。
表12.2 (7,4)碼校正子與誤碼位置
S1S2S3 |
誤碼位置 |
S1S2S3 |
誤碼位置 |
001 |
a0 |
101 |
a4 |
010 |
a1 |
110 |
a5 |
100 |
a2 |
111 |
a6 |
011 |
a3 |
000 |
無錯 |
|
|
由表可知,當誤碼位置在a2、a4、a5、a6時,校正子S1=1;否則S1=0。因此有S1=a6⊕a5⊕a4⊕a2,同理有S2=a6⊕a5⊕a3⊕a1和S3=a6⊕a4⊕a3⊕a0。在編碼時a6、a5、a4、a3為資訊碼元,a2、a1、a0為監督碼元。則監督碼元可由以下監督方程唯一確定 |
即
|
由上面方程可得到表12.3所示的16個許用碼組。在接收端收到每個碼組後,計算出S1、S2、S3,如果不全為0,則表示存在錯誤,可以由表12.2確定錯誤位置並予以糾正。例如收到碼組為0000011,可算出S1S2S3=011,由表12.2可知在a3上有一誤碼。通過觀察可以看出,上述(7,4)碼的最小碼距為dmin=3,它能糾正一個誤碼或檢測兩個誤碼。如果超出錯誤修正能力則反而會因“亂糾”出現新的誤碼。
表12.3 (7,4)許用碼組
信 息 位 |
監 督 位 |
信 息 位 |
監 督 位 |
a6a5a4a3 |
a2a1a0 |
a6a5a4a3 |
a2a1a0 |
0000 0001 0010 0011 0100 0101 0110 0111 |
000 011 101 110 110 101 011 000 |
1000 1001 1010 1011 1100 1101 1110 1111 |
111 100 010 001 001 010 100 111 |
上述方法構造的能糾正單個誤碼的線性分組碼又稱為漢明碼。它具有以下一些特點:碼長n=2m-1,最小碼距為d=3,資訊碼長k=2n-m-1,錯誤修正能力t=1,監督碼長r=n-k=m。這裡m為≥2的正整數。給定m後,就可構造出漢明碼(n,k)。
(7,4)漢明碼的編解碼模擬:
圖12.1所示為(7,4)漢明碼的編碼器電路原理圖,圖12.2為對應的解碼器電路原理圖。根據上述兩圖可構建12.3所示的模擬原理圖。該模擬原理圖包含兩個子系統,分別是(7,4)漢明碼的編碼器和解碼器。模擬時的訊號源採用了一個PROM,並由使用者自訂資料內容,資料的輸出由一個計數器來定時驅動,每隔一秒輸出一個4位元據(PROM的8位僅用了其中4位),由編碼器子系統編碼轉換後成為7位漢明碼,經過並串轉換後傳輸,其中的並串、串並轉換電路使用了擴充通訊庫2中的時分複用合路器和分路器圖符,該合路器和分路器最大為16位長度的時隙轉換,這裡定義為7位時隙。此時由於輸入輸出資料的系統資料率不同,因此必須在子系統的輸入端重新設定系統採樣率,將系統設定為多速率系統。因為原始4位元據的重新整理率為1Hz,因此編碼器的輸入端可設定重採樣率位10Hz,時分複用合路器和分路器的資料幀周期設為1秒,時隙數位7,則輸出採樣率為輸入採樣率的7倍,即70Hz。如果要加入雜訊,則雜訊訊號源的採樣率也應設為70Hz。圖12.3是(7,4)漢明碼編碼器的模擬子系統原理圖,圖12.4是其對應的解碼器的模擬子系統原理圖。圖12.5為經過並串轉換後的(7,4)漢明碼輸出波形圖,這裡僅設定了4秒時間長度的模擬,輸出的4個資料為0、1、3、4,對應的(7,4)漢明碼碼字為(0000000)、(0001011)、(0011110)、(0100110),注意串列傳輸的次序是先低後高的次序(LSB)。
當然,我們也可以不通過並串轉換,直接並行傳輸、解碼。這樣可以在7位漢明碼並行傳輸時人為對其中的一位進行幹擾,並觀察其錯誤修正的情況。通過模擬實驗可以發現,出現兩位以上錯誤時漢明碼就不能正確錯誤修正了。因此,在要求對多位錯誤進行糾正的應用場合,就要使用別的編碼方式了,如BCH碼、RS碼、卷積碼等。
圖12.6 輸入為0、1、3、4的(7,4)漢明碼輸出波形圖