夏志達 李麗華 張 龍
(1.91919部隊 黃岡 438000)(2.海軍工程大學電子工程學院 武漢 430033)
?
基于CCS的(7,4)漢明碼的編譯碼設計*
夏志達1李麗華2張龍2
(1.91919部隊黃岡438000)(2.海軍工程大學電子工程學院武漢430033)
摘要二元漢明碼是d=3的完備碼,即可以完成一個錯誤的糾正。論文分析了(7,4)漢明碼的編譯碼過程與實現方法,并運用C++Builder和CCS對(7,4)漢明碼的系統碼編譯碼進行編程設計,提高了理論學習與實踐能力。
關鍵詞(7,4)漢明碼; 糾錯譯碼; DSP實現
Class NumberTN911.22
漢明碼[1~3]是信道編碼常用的編碼方式之一,目的在于提高信息傳輸的可靠性,屬于線性分組碼,它是同時具有分組特性(碼字和消息長度恒定)和線性特性(消息相加的編碼等于各自編碼后的相加)的糾錯碼,并且編碼方式簡單[4~5]。
對于二元碼,碼與碼之間的基本運算是模二加和模二乘[6~7],本文通過對二元(7,4)漢明碼系統碼的編譯碼進行簡單的介紹,然后給出其基于C++Builder和CCS的編程實現方法。
(7,4)漢明碼的碼字c可以表示為c=mG, 其中m是任意4維向量(稱為消息向量),G是4行7列的秩為4的矩陣(稱為生成矩陣)。
一個二元(7,4)漢明碼的系統碼形式的生成矩陣如下所示:

等價的編碼方程為
編碼電路的一種實現形式如圖1所示。

圖1 (7,4)系統漢明碼編碼電路
在編程過程中,一般運用等價編碼方程的模二加運算實現程序設計[8]。
(7,4)漢明碼的最小距離為3,因此它擁有糾正一個錯誤的能力。其譯碼方式為:s=rHT,其中r為經過信道傳輸的碼字,其中可能存在由于信道不理想而導致的信息錯誤,H為校驗矩陣,s是描述接收向量是否有錯的伴隨式向量,與系統碼的生成矩陣G相對應的校驗矩陣如下:

而r=c+e,0=cHT,因此s=rHT=(c+e)HT=eHT;若s≠0,則傳輸中一定有錯誤發生;若s=0,則傳輸過程中要么無差錯發生,要么差錯恰為一個碼字。
針對有錯誤的碼字s≠0,若s與H中的某一列的向量相同,則可以說明接收碼字中的相同列出現錯誤,這僅能說明出現一個錯誤時可以實現糾錯。相應的伴隨式計算方程如下式,糾錯譯碼電路如圖2所示。

圖2 (7,4)漢明碼的一種糾錯譯碼電路
在C++Builder中[9]利用式(2)的關系方程進行信息位到編碼位的轉換,運算過程為模二加,即可實現編碼。
利用式(4)的關系方程可以得到伴隨式,判斷,若為0向量,則可能沒有錯誤(程序中假設此種情況都是正確碼字);若不為0向量,則將其與校驗矩陣H的列向量進行比較,那一列匹配記錄下來,就將相應的碼字位進行替換(0變1,1變0)。
同時在此還實現了隨機加噪的功能(rand()函數生成),即在碼字的7位中隨機產生一個錯誤,用于檢驗漢明碼糾正一個錯誤的能力。最終實現的界面如圖3所示(代碼位于文件夾中)。

圖3 設計實現界面
應用CCS[10]進行(7,4)編譯碼實現不像上面介紹的那么簡單,由于能力有限信息的輸入沒有實現自定義功能,而是固定輸入12個比特,即3組信息,方便結果查詢,輸出則是21比特,即3組編碼信息,同時固定設置出現一位比特錯誤,進行求解伴隨式糾錯譯碼,其中每一比特均占一個字節的地址。
在地址分配方面除錯誤圖樣外都是每個字段32位(雙字節),多余部分為0。其中matrix為生成矩陣段有效占28位;indata為輸入3組固定信息占12位;codingdata為編碼21位;errdata隨機錯誤,分別出現在第4、2和6位占21位;checkdata校驗矩陣占21位;sdata為伴隨式8位;errchart錯誤圖樣占64位;temp 1data是將伴隨式計算結果放于一位地址中;temp 2data用于比較哪一位出現錯誤;decodingdata譯碼序列(最終正確的譯碼);outdata是將正確譯碼后的前四比特提取出來,即信息位。
程序中同樣運用模二加運算,根據式(2)和式(4)可以看出參與運算的位數最多只有四位,即按照十進制算結果無非是0、1、2、3和4,只要對應換為0、1、0、1和0即可;其中運用CMPM進行判斷是否相等,從而進行跳轉。
參 考 文 獻
[1] 陳運.信息論與編碼[M].北京:電子工業出版社,2007.
[2] 樊昌信,曹麗娜.通信原理(第六版)[M].北京:國防工業出版社,2009.
[3] G. D. Forney. On Decoding BCH Codes[C]//IEEE Trans. Inform. Theory, IT-11:549-557,October 1965.
[4] 姚曉莉,王梅.信道編碼在移動通信中的應用[C]//2007年北京地區高校研究生學術交流會,2008.
[5] 王新梅,肖國鎮.糾錯碼-原理與方法[M].西安:西安電子科技大學出版社,2001.
[6] 郝峰,王曉峰.漢明碼的Matlab設計[J].信息技術,2011,3:135-137.
[7] 章學靜,薛琳,李金平,等.漢明碼及其編譯碼算法的研究與實現[J].北京聯合大學學報(自然科學版),2008,22(1):46-49.
[8] 王鋼,高宏亮.基于FPGA交織編碼的設計與實現[J].哈爾濱理工大學學報,2009,14(1):63-66.
[9] 張建平.C++Builder程序設計[M].北京:兵器工業出版社,2006.
[10] 戴明楨,周建江.TMS320C54x DSP結構、原理及應用[M].北京:北京航空航天出版,2007.
*收稿日期:2015年10月5日,修回日期:2015年11月25日
基金項目:海軍工程大學自然科學基金(編號:HGDQNJJ15017)資助。
作者簡介:夏志達,男,工程師,研究方向:短波通信。李麗華,女,碩士,講師,研究方向:短波通信與裝備。張龍,男,碩士研究生,研究方向:數字通信理論與技術。
中圖分類號TN911.22
DOI:10.3969/j.issn.1672-9730.2016.04.017
Design of Encoding and Decoding of (7,4) Hamming Code Based on CCS
XIA Zhida1LI Lihua2ZHANG Long2
(1. No. 91919 Troops of PLA, Huanggang438000)(2. College of Electronic Engineering, Naval University of Engineering, Wuhan430033)
AbstractThe binary hamming code is the completed code whose minimum distance is 3.And it can correct one error. This paper analyzes the process of (7,4) hamming code’s encoding and decoding and its realization of the circuit, Then, the software of C++ Builder and CCS are used to design (7,4) hamming system code in order to improve the ability of theory and practice.
Key Words(7, 4) hamming code, error correction, DSP realization