查艷芳, 殷奎喜, 趙 華, 劉學軍
(南京師范大學a.物理科學與技術學院; b.地理科學學院,江蘇 南京210097)
BCH碼是1959年由霍昆格姆(Hocquenghem)[1]提出的一類可以糾正多個隨機錯誤的循環(huán)碼,它具有很強的糾錯能力[2]。隨著信息技術的廣泛應用和人們生活水平的不斷提高,越來越多的圖片、視頻等K量級的信息需要在各個終端之間進行傳輸。本文介紹了一種K量級群變換BCH碼糾錯方法,它不僅能夠實現(xiàn)終端之間K量級信息的傳遞,同時它將K量級的信息作為一個數(shù)據(jù)包,在接收端進行整體的包解碼和包糾錯。
對于圖像與視頻等信息,由于它們的數(shù)據(jù)量比較大,如果每次端點之間用8位或16位的方式進行傳輸,則對于擁有上M的數(shù)據(jù)量的圖片或者視頻信息來說,則需要經(jīng)過上千上萬甚至更多次編解碼才能傳完,這就使得傳輸過程變得十分的繁復。為了避免以上的弊端,我們提出了利用群變換的BCH碼糾錯方法來完成K量級信息的傳輸。
根據(jù)BCH碼的相關特性,我們可以構造碼長為1023,信息位長度在1k以上的BCH碼。在發(fā)送端,我們將1023個數(shù)據(jù)作為整體進行傳輸。在接收端,也是對 1023個數(shù)據(jù)的數(shù)據(jù)包進行整體的解碼與糾錯,即包解碼和包糾錯。
這里,我們構造碼長 n=1023,信息位長度 k=1003,它的碼率它可以糾正2個錯誤。根據(jù)BCH碼的定義,構造(1023,1003)的BCH碼,它的生成多項式g(x)[3]:
利用群變換編碼方法,可以很容易的實現(xiàn)K量級數(shù)據(jù)的解碼與糾錯。與其他BCH碼解碼方法相比,群變換糾錯方法簡單易懂,步驟簡便,算法簡便,計算過程簡單,計算時間較短。而且將K量級數(shù)據(jù)包作為整體進行處理,處理的速度快,數(shù)據(jù)量大,很好的符合了現(xiàn)代通信與數(shù)據(jù)傳輸?shù)囊蟆?/p>
在(n,k)的 BCH碼中,碼長n,信息位長度k,生成多項式g(x)的階數(shù)r=n-k。由于g(x)的階數(shù)等于發(fā)送矩陣的監(jiān)督位長度,即監(jiān)督位長度為r。
在群變換的BCH碼編碼方法中,首先根據(jù)BCH碼的生成多項式 g (x),運用群變換方法,產(chǎn)生對應的生成矩陣,它是一個k×n的矩陣[4]。
由于信道中存在噪聲等干擾,所以數(shù)據(jù)在傳輸過程中可能發(fā)生錯誤,此時接收端接收到的矩陣B=C+E,其中C是發(fā)送的矩陣,E是錯誤矩陣。根據(jù)生成矩陣與校驗矩陣之間的關系[5]:
如果發(fā)送矩陣 C在傳輸?shù)倪^程中僅存在一個錯誤錯誤,那么伴隨子向量RS與監(jiān)督矩陣行向量一一對應。我們可以通過查找表的方法,查找伴隨子向量RS在監(jiān)督矩陣中的位置,來確定接收矩陣B中發(fā)生錯誤的位置,并予以改正。例如,解碼過程中,通過查找得到的伴隨子向量 SR等于監(jiān)督矩陣 中的第i行向量,這就表示接收矩陣B中第i位數(shù)據(jù)出錯,只要將接收矩陣B中第i位予以改正,那么在接收端就可以得到正確的數(shù)據(jù)矩陣。(見圖1)。
圖1 單個錯誤時的對應關系
圖2 多個錯誤時的對應關系
對于K量級的數(shù)據(jù),根據(jù)群變換BCH碼解碼時,伴隨子向量RS與監(jiān)督矩陣行向量之間的對應關系。我們可以很容易的對K量級的數(shù)據(jù)包進行整體的解碼和糾錯。以能糾正2個錯誤的K量級的BCH碼為例,首先對1003個信息位整體進行編碼,編碼后得到既有信息位又有監(jiān)督位,數(shù)據(jù)量為1023 bit的數(shù)據(jù)包,并進行發(fā)送。
在解碼時,接收端將有 1023 bit的數(shù)據(jù)包作為一個整體,把它與監(jiān)督矩陣相乘,得到伴隨子向量RS,再根據(jù)的情況,判斷傳輸過程中是否發(fā)生錯誤,如果發(fā)生了錯誤,再通過查表的方式,找出伴隨子向量 SR在查找表中的位置,即判斷 SR與監(jiān)督矩陣 中的行向量的之間的關系,從而確定接收到的數(shù)據(jù)包中的錯誤情況,并予以糾正,最后得到正確的信息。
假設在隨機信道中發(fā)送“0”的錯誤概率和發(fā)送“1”的錯誤概率相等為P,且 1P? ,在碼長為n的碼組中恰好發(fā)生t個錯碼的概率為[6]:
它的碼長n=1023,最多可以糾正2個錯誤,
通過以上的分析可以看出,在信噪比相同的情況下,采用K量級BCH碼糾錯方法,可以使誤碼率改善到的數(shù)量級,即誤碼率改善了20 dB以上。這說明,將K量級的BCH碼作為一個數(shù)據(jù)包進行傳輸,不僅使解碼過程簡單快捷,也使誤碼率也得到了很好的改善。
由于群變換的BCH碼糾錯方法簡單,步驟簡便,所以可以在硬件上比較容易的實現(xiàn)它。
本文用Verilog HDL語言,在Quartus II 7.2平臺上對K量級的BCH碼編解碼進行硬件仿真,并采用Altera公司生產(chǎn)的Cyclone III EP3C25F324C8NES芯片來予以實現(xiàn)[7]。
K量級BCH碼糾錯方法的硬件實現(xiàn)可以分為兩大模塊,即編碼模塊和解碼模塊。在編碼模塊中,首先通過串并轉換將輸入的K量級的串行數(shù)據(jù)轉換為并行數(shù)據(jù),經(jīng)過編碼后,得到既有信息位又有監(jiān)督位的,數(shù)據(jù)量為1023 bit的K量級數(shù)據(jù)包,然后通過并串轉換后進行發(fā)送。由于要進行數(shù)據(jù)間的并串轉換,所以要對時鐘進行分頻,使得整個編碼模塊的時序得到統(tǒng)一。
解碼模塊首先將接收到的K量級的數(shù)據(jù)包進行串并轉換,在解碼時,根據(jù)伴隨子向量與監(jiān)督矩陣的對應關系,通過判斷伴隨子向量在監(jiān)督矩陣中的位置關系,來對接收到的數(shù)據(jù)包進行檢錯和糾錯,然后再通過并串轉換,輸出正確信息。在判斷伴隨子向量RS在監(jiān)督矩陣∧H中位置時,通過查找表的方式,即先將∧H的行向量以及所有行向量的組合存儲在RAM中,然后在RAM中進行查找,當查找到與RS相同的行向量,或者相應的行向量的組合時,相應的行數(shù)即為接收矩陣中數(shù)據(jù)發(fā)生錯誤的位置,從而完成解碼與糾錯。
對K量級群變換BCH碼進行編碼仿真(如圖5)。由于信息位(1003位)和編碼過后的數(shù)據(jù)位(1023位)太長,只能顯示部分的信息位(m)和編碼過后的數(shù)據(jù)(dout),cout為監(jiān)督位(10 位)。從圖 5中可以看出編碼后的數(shù)據(jù)高20位(第1022~1003位)為監(jiān)督位,之后的1003位為信息位。
圖3 K量級BCH碼編碼模塊
圖4 K量級BCH碼解碼模塊
圖5 編碼波形仿真
利用群變換 BCH碼糾錯方法對數(shù)據(jù)進行解碼和糾錯時,其伴隨子向量與監(jiān)督矩陣行向量之間存在對應關系。正是這種對應關系,使得BCH碼的解碼和糾錯過程變得簡單快捷。所以我們將這種方法應用于K量級信息的編解碼,從而實現(xiàn)端點之間的大數(shù)據(jù)量的傳輸。對一個通信模型而言,K量級信息在傳輸過程中的誤碼率能改善20 dB以上。由于K量級群變換BCH碼糾錯方法算法簡便,實現(xiàn)容易,因而它可以在實際中得到很好的應用。
[1] Hocquenghem J.Codes Correcteurs d’erreurs[J].Chiffres,1959(02):147-156.
[2] 王蘭勛,白金鳳.基于Logistic混沌序列和BCH碼交織編碼的語音保密通信方法[J].通信技術,2008,41(04):67-69.
[3] 橫山光雄.スペクトル 擴散通信システム [M].日本:日本技術出版社,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] 王新梅,馬文平,武傳坤.糾錯密碼理論[M].北京:人民郵電出版社,2001:58.
[6] 樊昌信,張甫翊,徐炳祥,等.通信原理[M].第5版.北京:國防工業(yè)出版社,2005:284.
[7] 寧楠,鮑慧,宋文妙.一種基于FPGA的糾錯編譯碼器的設計與實現(xiàn)[J].通信技術,2008,41(08):95-97.