查艷芳, 殷奎喜, 趙 華, 劉學(xué)軍
(南京師范大學(xué)a.物理科學(xué)與技術(shù)學(xué)院; b.地理科學(xué)學(xué)院,江蘇 南京210097)
BCH碼是1959年由霍昆格姆(Hocquenghem)[1]提出的一類(lèi)可以糾正多個(gè)隨機(jī)錯(cuò)誤的循環(huán)碼,它具有很強(qiáng)的糾錯(cuò)能力[2]。隨著信息技術(shù)的廣泛應(yīng)用和人們生活水平的不斷提高,越來(lái)越多的圖片、視頻等K量級(jí)的信息需要在各個(gè)終端之間進(jìn)行傳輸。本文介紹了一種K量級(jí)群變換BCH碼糾錯(cuò)方法,它不僅能夠?qū)崿F(xiàn)終端之間K量級(jí)信息的傳遞,同時(shí)它將K量級(jí)的信息作為一個(gè)數(shù)據(jù)包,在接收端進(jìn)行整體的包解碼和包糾錯(cuò)。
對(duì)于圖像與視頻等信息,由于它們的數(shù)據(jù)量比較大,如果每次端點(diǎn)之間用8位或16位的方式進(jìn)行傳輸,則對(duì)于擁有上M的數(shù)據(jù)量的圖片或者視頻信息來(lái)說(shuō),則需要經(jīng)過(guò)上千上萬(wàn)甚至更多次編解碼才能傳完,這就使得傳輸過(guò)程變得十分的繁復(fù)。為了避免以上的弊端,我們提出了利用群變換的BCH碼糾錯(cuò)方法來(lái)完成K量級(jí)信息的傳輸。
根據(jù)BCH碼的相關(guān)特性,我們可以構(gòu)造碼長(zhǎng)為1023,信息位長(zhǎng)度在1k以上的BCH碼。在發(fā)送端,我們將1023個(gè)數(shù)據(jù)作為整體進(jìn)行傳輸。在接收端,也是對(duì) 1023個(gè)數(shù)據(jù)的數(shù)據(jù)包進(jìn)行整體的解碼與糾錯(cuò),即包解碼和包糾錯(cuò)。
這里,我們構(gòu)造碼長(zhǎng) n=1023,信息位長(zhǎng)度 k=1003,它的碼率它可以糾正2個(gè)錯(cuò)誤。根據(jù)BCH碼的定義,構(gòu)造(1023,1003)的BCH碼,它的生成多項(xiàng)式g(x)[3]:

利用群變換編碼方法,可以很容易的實(shí)現(xiàn)K量級(jí)數(shù)據(jù)的解碼與糾錯(cuò)。與其他BCH碼解碼方法相比,群變換糾錯(cuò)方法簡(jiǎn)單易懂,步驟簡(jiǎn)便,算法簡(jiǎn)便,計(jì)算過(guò)程簡(jiǎn)單,計(jì)算時(shí)間較短。而且將K量級(jí)數(shù)據(jù)包作為整體進(jìn)行處理,處理的速度快,數(shù)據(jù)量大,很好的符合了現(xiàn)代通信與數(shù)據(jù)傳輸?shù)囊蟆?/p>
在(n,k)的 BCH碼中,碼長(zhǎng)n,信息位長(zhǎng)度k,生成多項(xiàng)式g(x)的階數(shù)r=n-k。由于g(x)的階數(shù)等于發(fā)送矩陣的監(jiān)督位長(zhǎng)度,即監(jiān)督位長(zhǎng)度為r。
在群變換的BCH碼編碼方法中,首先根據(jù)BCH碼的生成多項(xiàng)式 g (x),運(yùn)用群變換方法,產(chǎn)生對(duì)應(yīng)的生成矩陣,它是一個(gè)k×n的矩陣[4]。


由于信道中存在噪聲等干擾,所以數(shù)據(jù)在傳輸過(guò)程中可能發(fā)生錯(cuò)誤,此時(shí)接收端接收到的矩陣B=C+E,其中C是發(fā)送的矩陣,E是錯(cuò)誤矩陣。根據(jù)生成矩陣與校驗(yàn)矩陣之間的關(guān)系[5]:

如果發(fā)送矩陣 C在傳輸?shù)倪^(guò)程中僅存在一個(gè)錯(cuò)誤錯(cuò)誤,那么伴隨子向量RS與監(jiān)督矩陣行向量一一對(duì)應(yīng)。我們可以通過(guò)查找表的方法,查找伴隨子向量RS在監(jiān)督矩陣中的位置,來(lái)確定接收矩陣B中發(fā)生錯(cuò)誤的位置,并予以改正。例如,解碼過(guò)程中,通過(guò)查找得到的伴隨子向量 SR等于監(jiān)督矩陣 中的第i行向量,這就表示接收矩陣B中第i位數(shù)據(jù)出錯(cuò),只要將接收矩陣B中第i位予以改正,那么在接收端就可以得到正確的數(shù)據(jù)矩陣。(見(jiàn)圖1)。

圖1 單個(gè)錯(cuò)誤時(shí)的對(duì)應(yīng)關(guān)系

圖2 多個(gè)錯(cuò)誤時(shí)的對(duì)應(yīng)關(guān)系
對(duì)于K量級(jí)的數(shù)據(jù),根據(jù)群變換BCH碼解碼時(shí),伴隨子向量RS與監(jiān)督矩陣行向量之間的對(duì)應(yīng)關(guān)系。我們可以很容易的對(duì)K量級(jí)的數(shù)據(jù)包進(jìn)行整體的解碼和糾錯(cuò)。以能糾正2個(gè)錯(cuò)誤的K量級(jí)的BCH碼為例,首先對(duì)1003個(gè)信息位整體進(jìn)行編碼,編碼后得到既有信息位又有監(jiān)督位,數(shù)據(jù)量為1023 bit的數(shù)據(jù)包,并進(jìn)行發(fā)送。
在解碼時(shí),接收端將有 1023 bit的數(shù)據(jù)包作為一個(gè)整體,把它與監(jiān)督矩陣相乘,得到伴隨子向量RS,再根據(jù)的情況,判斷傳輸過(guò)程中是否發(fā)生錯(cuò)誤,如果發(fā)生了錯(cuò)誤,再通過(guò)查表的方式,找出伴隨子向量 SR在查找表中的位置,即判斷 SR與監(jiān)督矩陣 中的行向量的之間的關(guān)系,從而確定接收到的數(shù)據(jù)包中的錯(cuò)誤情況,并予以糾正,最后得到正確的信息。
假設(shè)在隨機(jī)信道中發(fā)送“0”的錯(cuò)誤概率和發(fā)送“1”的錯(cuò)誤概率相等為P,且 1P? ,在碼長(zhǎng)為n的碼組中恰好發(fā)生t個(gè)錯(cuò)碼的概率為[6]:

它的碼長(zhǎng)n=1023,最多可以糾正2個(gè)錯(cuò)誤,
通過(guò)以上的分析可以看出,在信噪比相同的情況下,采用K量級(jí)BCH碼糾錯(cuò)方法,可以使誤碼率改善到的數(shù)量級(jí),即誤碼率改善了20 dB以上。這說(shuō)明,將K量級(jí)的BCH碼作為一個(gè)數(shù)據(jù)包進(jìn)行傳輸,不僅使解碼過(guò)程簡(jiǎn)單快捷,也使誤碼率也得到了很好的改善。
由于群變換的BCH碼糾錯(cuò)方法簡(jiǎn)單,步驟簡(jiǎn)便,所以可以在硬件上比較容易的實(shí)現(xiàn)它。
本文用Verilog HDL語(yǔ)言,在Quartus II 7.2平臺(tái)上對(duì)K量級(jí)的BCH碼編解碼進(jìn)行硬件仿真,并采用Altera公司生產(chǎn)的Cyclone III EP3C25F324C8NES芯片來(lái)予以實(shí)現(xiàn)[7]。
K量級(jí)BCH碼糾錯(cuò)方法的硬件實(shí)現(xiàn)可以分為兩大模塊,即編碼模塊和解碼模塊。在編碼模塊中,首先通過(guò)串并轉(zhuǎn)換將輸入的K量級(jí)的串行數(shù)據(jù)轉(zhuǎn)換為并行數(shù)據(jù),經(jīng)過(guò)編碼后,得到既有信息位又有監(jiān)督位的,數(shù)據(jù)量為1023 bit的K量級(jí)數(shù)據(jù)包,然后通過(guò)并串轉(zhuǎn)換后進(jìn)行發(fā)送。由于要進(jìn)行數(shù)據(jù)間的并串轉(zhuǎn)換,所以要對(duì)時(shí)鐘進(jìn)行分頻,使得整個(gè)編碼模塊的時(shí)序得到統(tǒng)一。
解碼模塊首先將接收到的K量級(jí)的數(shù)據(jù)包進(jìn)行串并轉(zhuǎn)換,在解碼時(shí),根據(jù)伴隨子向量與監(jiān)督矩陣的對(duì)應(yīng)關(guān)系,通過(guò)判斷伴隨子向量在監(jiān)督矩陣中的位置關(guān)系,來(lái)對(duì)接收到的數(shù)據(jù)包進(jìn)行檢錯(cuò)和糾錯(cuò),然后再通過(guò)并串轉(zhuǎn)換,輸出正確信息。在判斷伴隨子向量RS在監(jiān)督矩陣∧H中位置時(shí),通過(guò)查找表的方式,即先將∧H的行向量以及所有行向量的組合存儲(chǔ)在RAM中,然后在RAM中進(jìn)行查找,當(dāng)查找到與RS相同的行向量,或者相應(yīng)的行向量的組合時(shí),相應(yīng)的行數(shù)即為接收矩陣中數(shù)據(jù)發(fā)生錯(cuò)誤的位置,從而完成解碼與糾錯(cuò)。
對(duì)K量級(jí)群變換BCH碼進(jìn)行編碼仿真(如圖5)。由于信息位(1003位)和編碼過(guò)后的數(shù)據(jù)位(1023位)太長(zhǎng),只能顯示部分的信息位(m)和編碼過(guò)后的數(shù)據(jù)(dout),cout為監(jiān)督位(10 位)。從圖 5中可以看出編碼后的數(shù)據(jù)高20位(第1022~1003位)為監(jiān)督位,之后的1003位為信息位。

圖3 K量級(jí)BCH碼編碼模塊

圖4 K量級(jí)BCH碼解碼模塊

圖5 編碼波形仿真
利用群變換 BCH碼糾錯(cuò)方法對(duì)數(shù)據(jù)進(jìn)行解碼和糾錯(cuò)時(shí),其伴隨子向量與監(jiān)督矩陣行向量之間存在對(duì)應(yīng)關(guān)系。正是這種對(duì)應(yīng)關(guān)系,使得BCH碼的解碼和糾錯(cuò)過(guò)程變得簡(jiǎn)單快捷。所以我們將這種方法應(yīng)用于K量級(jí)信息的編解碼,從而實(shí)現(xiàn)端點(diǎn)之間的大數(shù)據(jù)量的傳輸。對(duì)一個(gè)通信模型而言,K量級(jí)信息在傳輸過(guò)程中的誤碼率能改善20 dB以上。由于K量級(jí)群變換BCH碼糾錯(cuò)方法算法簡(jiǎn)便,實(shí)現(xiàn)容易,因而它可以在實(shí)際中得到很好的應(yīng)用。
[1] Hocquenghem J.Codes Correcteurs d’erreurs[J].Chiffres,1959(02):147-156.
[2] 王蘭勛,白金鳳.基于Logistic混沌序列和BCH碼交織編碼的語(yǔ)音保密通信方法[J].通信技術(shù),2008,41(04):67-69.
[3] 橫山光雄.スペクトル 擴(kuò)散通信システム [M].日本:日本技術(shù)出版社,1999:529.
[4] Kui X Y,Kishi M.The High Capacity and High Speed DiffCDMA with the BCH Double Error Correction and Continuous Phase Primary Modulation[C]//IEEE PIMRC’99.Osaka, Japan: IEEE 1999:1556-1560.
[5] 王新梅,馬文平,武傳坤.糾錯(cuò)密碼理論[M].北京:人民郵電出版社,2001:58.
[6] 樊昌信,張甫翊,徐炳祥,等.通信原理[M].第5版.北京:國(guó)防工業(yè)出版社,2005:284.
[7] 寧楠,鮑慧,宋文妙.一種基于FPGA的糾錯(cuò)編譯碼器的設(shè)計(jì)與實(shí)現(xiàn)[J].通信技術(shù),2008,41(08):95-97.