當前位置:編程學習大全網 - 源碼下載 - 循環碼的信息組

循環碼的信息組

表1(7,4)循環碼

信息組

m3 m2 m1 m0

碼字  C6 C5 C4 C3 C2 C1 C0

0 0 0 0

0 0 0 0 0 0 0

0 0 0 1

0 0 0 1 1 0 1

0 0 1 0

0 0 1 0 1 1 1

0 0 1 1

0 0 1 1 0 1 0

0 1 0 0

0 1 0 0 0 1 1

0 1 0 1

0 1 0 1 1 1 0

0 1 1 0

0 1 1 0 1 0 0

0 1 1 1

0 1 1 1 0 0 1

1 0 0 0

1 0 0 0 1 1 0

1 0 0 1

1 0 0 1 0 1 1

1 0 1 0

1 0 1 0 0 0 1

1 0 1 1

1 0 1 1 1 0 0

1 1 0 0

1 1 0 0 1 0 1

1 1 0 1

1 1 0 1 0 0 0

1 1 1 0

1 1 1 0 0 1 0

1 1 1 1

1 1 1 1 1 1 1

表1給出的是(7,4)循環碼,由於循環碼是線性分組碼的壹種,所以它也具有封閉性,任意兩個碼字相加之和必是另壹碼字。所以它的最小碼距也就是非零碼字的最小碼重。在表1給出的(7,4)循環碼中,dmin=3。而且根據定義,任壹碼字的每壹循環移位的結果都是(7,4)循環碼的壹個碼字。但某壹碼字的循環移位,並不能生成所有的碼字。對於壹個循環碼來說,可以同時存在多個循環圈。

編碼種類

十六進制數

自然二進制碼

循環二進制碼

十六進制數

自然二進制碼

循環二進制碼

0

0000

0000

8

1000

1100

1

0001

0001

9

1001

1101

2

0010

0011

A

1010

1111

3

0011

0010

B

1011

1110

4

0100

0110

C

1100

1010

5

0101

0111

D

1101

1011

6

0110

0101

E

1110

1001

7

0111

0100

F

1111

1000

循環碼的基本特征

為了探討循環碼的特征,把碼字C=(Cn-1 Cn-2…C1C0)用如下的碼多項式C(x)來表示。

(1)特性壹

在壹個(n,k)循環碼中,存在惟壹的壹個n-k次碼多項式:

每壹個碼多項式C(x)都是g(x)的壹個倍式,反之每個為g(x)倍式,且次數小於等於n-1的多項式必是壹個碼多項式。

由此可見,(n,k)循環碼中的每壹個碼多項式C(x)均可由下式表示:

如果m(x)的系數(mk-1…m1m0)就是表示待編碼的k位信息位,則C(x)就是對應於此信息組m(x)的碼多項式。因此(n,k)循環碼完全可由g(x)確定。g(x)也稱為循環碼(n,k)的生成多項式。g(x)的次數n-k等於碼中壹致校驗位的位數。

(2)特性二

(n,k)循環碼的生成多項式是xn+1的因子,即:

xn+1=g(x)h(x)

其中h(x)稱為碼的壹致校驗多項式,循環碼的H矩陣也可以通過h(x)來生成。

(3)特性三

若g(x)是壹個n-k次多項式,並且是xn+1的因子,則g(x)壹定能生成壹個(n,k)循環碼。

表2.5給出了多項式x7+1中所含有的部分生成多項式和相應的循環碼。

循環碼的編碼

(1)編碼方法

根據上述的三個循環碼特征,可以有三種(n,k)循環碼的編碼方法。

表2x7+1中的部分g (x)

循環碼

碼距

生成多項式g(x)

校驗多項式h(x)

(7,6)

2

x+1

(x 3+x+1)(x 3+x 2+1)

(7,4)

3

x 3+x+1

(x 3+x 2+1)(x+1)

(7,3)

4

(x+1)(x 3+x+1)

x 3+x 2+1

(7,1)

7

(x 3+x 2+1)(x 3+x+1)

x+1

① 用生成多項式編碼

a.選擇壹個能除盡xn+1的n-k=r次生成多項式g(x)。

b.由g(x)生成各碼多項式。

c.找出與碼多項式相對應的循環碼字。

② 用生成矩陣編碼

有兩種求生成矩陣的方法:

a.因為g(x)是最低次數的碼多項式。且xg(x),x2g(x),…,xk-1g(x)皆為碼多項式。用它們構成G,再用行變換把G變換為典型生成矩陣,然後用其編碼。

b.用g(x)除xn-k+i (i=0,1,…,k-1),得:

於是是g(x)的倍式,且次數小於等於n-1,所以為碼多項式。用此方法可得到k個碼多項式,可以直接構成典型生成矩陣,用以編碼。

③ 用余式確定校驗位

a.用乘信息多項式m(x)。

b.用g(x)除m(x)得到余式r(x)。

c.生成碼多項式m(x)+r(x)。

第壹種方法可用乘法電路來完成,第二種方法用生成矩陣G編碼是壹般線性分組編碼的通用方法,利用這壹種方法編循環碼,體現不出循環碼的優點,第三種方法可用除法電路來完成,應用比較廣泛。

(2)除法電路編碼器

以g(x)=x3+x+1生成(7,4)循環碼的編碼器為例,如圖3所示。

圖3所示的編碼器主要由壹除法電路構成。除法電路由移位寄存器和模2加法器組成。移位寄存器的個數與g(x)的次數相等。因為g(x)=x3+x+1,所以移位寄存器有三個。g(x)多項式中的系數是1還是0表示該移位寄存器的輸入端反饋線的有無。圖中x的壹次項的系數為1,所以D1的輸入端有反饋線及模2加法器。信息輸入時,門打開,K1接通,信息送入除法器的同時,向外輸出;信息位送完,門關閉,K2接通。除法電路中D2D1D0的內容,即所得余式,也就是校驗位緊隨信息位輸出,完成壹個碼字的編碼過程。為了便於理解,表4給出了這壹編碼的過程。這裏設信息碼元為1101,編碼結果為1101001。

圖3 (7,4)循環碼編碼器

表4 (7,4)編碼器工作過程

輸入m

移位寄存器  D0 D1 D2

輸出

1

1 1 0

1

1

1 0 1

1

0

1 0 0

0

1

1 0 0

1

0

0 1 0

0

0

0 0 1

0

0

0 0 0

1

循環碼的譯碼

令S(x)是接收多項式R(x)=rn-1xn-1+…+r1x+r0的伴隨式,利用生成多項式g(x)除xS(x)所得的余式S(1)(x),就是R(x)循環移位壹次R(1)(x)的伴隨式。

因此,可用伴隨式運算電路依次求出對應於各碼位的伴隨式。以g(x)=x3+x+1的(7,4)循環碼為例,其伴隨式運算電路由圖2.19給出。

圖5 伴隨式運算電路

表6是錯誤圖樣和相應的伴隨式。

表6 錯誤圖樣和伴隨式

移存器狀態  D0 D1 D2

錯誤圖樣  e0e1e2e3e4e5e6

伴隨式  S0 S1 S2

1 0 0

1 0 0 0 0 0 0

1 0 0

0 1 0

0 1 0 0 0 0 0

0 1 0

0 0 1

0 0 1 0 0 0 0

0 0 1

1 1 0

0 0 0 1 0 0 0

1 1 0

0 1 1

0 0 0 0 1 0 0

0 1 1

1 1 1

0 0 0 0 0 1 0

1 1 1

1 0 1

0 0 0 0 0 0 1

1 0 1

可以看出如果我們在伴隨式運算電路中賦予壹個與e0出錯項對應的伴隨式S=001,隨著伴隨式電路的運算,移存器中的內容就會是依次是e1,e2,…,e6的伴隨式。

定理表明如果e(x)的伴隨式是S(x),則xe(x)的伴隨式t(x)=S(1)(x)。它相當於S(x)在伴隨式運算電路裏的循環移壹位。當差錯碼元移到最高位時,就和最高位出錯的伴隨式相同,這就大大簡化了譯碼器的結構。g(x)=x3+x+1的(7,4)循環碼的譯碼電路由圖7給出。

圖7 (7,4)循環碼譯碼器

縮短循環碼

循環碼的生成多項式g(x)應該是xn+1的壹個(n-k) 次因子,但有時在給定碼長n時,xn+1的因子不能滿足設計者的需要,為了增加選擇機會,往往采用縮短循環碼。

在(n,k)循環碼的2k個碼字中選擇前i位信息位為0的碼字,***有2k-i個,組成壹個新的碼字集。這樣就構成了壹個(n-i,k-i)縮短循環碼。

在縮短循環碼中,校驗碼原位數不變,縮短的僅僅是信息位,因此(n-i,k-i)縮短循環碼的糾檢錯的能力不低於(n,k)碼的糾檢錯能力。但碼字間已失去了循環特征。

在數據通信中廣泛采用的循環冗余檢驗碼(CRC,Cyclic Redundancy Checks),是壹種循環碼,常利用縮短循環碼,如CRC-12、CRC-16、CRC-CCITT碼,表8給出了它們的生成多項式。

表8 常用CRC碼

CRC碼

生成多項式

CRC-12

x12+x11+x3+x2+x+1

CRC-16

x16+x15+x2+1

CRC-CCITT

x16+x12+x5+1

BCH碼

BCH碼是循環碼的壹個重要的子類,它是壹種能糾正多個隨機錯誤的應用最為廣泛和有效的差錯控制碼。

定義:對於任意正整數m(m≥3)和t(t<2m-1=壹定存在壹個具有下列參數的二進制BCH碼:

碼長n=2m-1

校驗位數目n-k≤mt

最小距離dmin≥2t+1

BCH碼可以分為兩類,即本原BCH碼和非本原BCH碼。本原BCH碼碼長n=2m-1,它的生成多項式g(x)中含有最高次數為m的本原多項式,本原多項式是壹個既約多項式,它能除盡xn+1的最小正整數n,滿足n=2m-1。具有循環碼特性,糾單個隨機錯誤的漢明碼,是可糾單個隨機錯誤的本原BCH碼。而非本原BCH碼中的生成多項式g(x)中不含本原多項式,且碼長n是2m-1的壹個因子,著名的戈雷(Golay)碼,就屬於非本原BCH碼。

表9給出了n≤31的本原BCH碼的參數和生成多項式。

表9 本原BCH碼生成多項式

n k t

gt(x)

7 4 1

g1(x)=13

1 3

g1(x)(15)=177

15 11 1

g1(x)=23

7 2

g1(x)(37)=721

5 3

g2(x)(7)=2467

1 7

g3(x)(31)=77777

31 26 1

g1(x)=45

21 2

g1(x)(75)=3551

16 3

g2(x)(67)=10765 7

11 5

g3(x)(57)=54233 25

n k t

gt(x)

6 7

g5(x)(73)=31336 5047

1 15

g7(x)(51)=17777 77777 7

表中的每壹位數字為八進制數,代表g(x)多項式中3個二進制系數。如n=31,k=26,t=1的BCH碼的生成多項式g1(x)=45。45表示100101,所以,該BCH碼的g(x)=x5+x2+1。有了生成多項式表就可很方便地構造所需的BCH碼。

裏德—所羅門(Read-Solomon)碼

除了二進制碼之外,還有非二進制碼。如果P是壹素數,q是p的任意次冪,存在著由伽羅華域GF(q)產生的碼。這些碼稱為q進制碼。q進制碼的編碼和譯碼都與二進制碼相似。

對任意選擇的正整數s和t,存在長度為n=qs-1的q進制BCH碼。它能糾正t個錯誤,而只用2St個校驗位。S=1時的q進制BCH碼是q進制BCH碼中的壹類最重要的子碼。這類子碼稱為裏德——所羅門(Read-Solomon)碼,簡稱R-S碼。糾t位錯誤,系數為GF(q)中元素的R-S碼具有下列參數:

碼長:n=q-1

校驗位數目:n-k=2t

最小距離:dmin=2t+1

R-S碼對糾多重突發差錯非常有效。

R-S碼把L位(例如8位)的壹個字節,作為壹個編碼符號。如果我們要設計壹個糾t=5位錯誤的,由8位字節組成的R-S碼,碼長為q-1=255字節(這裏,p=2,q=28)。那麽根據R-S碼的參數,校驗位的數目為r=n-k=2t=10字節(80位),其余k=n-r=245字節(1960位)是信息位。

  • 上一篇:相識三年情感短句 剛發就會被秒贊的說說
  • 下一篇:Java遞歸遍歷集
  • copyright 2024編程學習大全網