摘 要:數字信號在傳輸過程中受到干擾的影響,降低了其傳輸的可靠性,線性分組碼作為一種常用的信道編碼,在通信傳輸系統中應用廣泛。在對線性分組碼的編譯碼規則研究基礎上,討論了生成矩陣、監督矩陣與錯誤圖樣集之間的關系,在Max+Plus Ⅱ開發環境中,用VHDL語言設計線性分組碼編譯碼器,對其各項設計功能進行了仿真和驗證。結果表明,該設計正確,其功能符合線性分組碼編譯碼器的要求。
關鍵詞:信道編碼; 線性分組碼; Max+Plus Ⅱ; VHDL
中圖分類號:TP391 文獻標識碼:A
文章編號:1004-373X(2010)09-0116-02
Design of Linear Block Codes Based on VHDL
TANG Bing-hua, SHUI Qi-jun
(Department of Physics and Engineering Technology, Sichuan University of Arts and Science, Dazhou 635000, China)
Abstract: The interference reduces transmission reliability when digital signal is transmissed in signal path. Linear block code is widely used in communication transmission system as a common channel coding. The generating matrix, monitoring matrix and the relationship between the error pattern sets are discussed based on the coding and decoding rules of linear block codes. The Max+Plus Ⅱ software simulation and verification shows that its function comforms to the linear block code encoding and decoding device requirements.
Keywords: channel coding; linear block codes; Max+Plus Ⅱ; VHDL
在通信系統中,由于信道存在大量的噪聲和干擾,使得經信道傳輸后的接收碼與發送碼之間存在差異,出現誤碼。在數字通信系統中常采用差錯控制信道編碼技術,以此來減少傳輸過程的誤碼,提高數字通信系統的傳輸質量[1]。它的基本原理是:發送端的信道編碼器在信息碼元序列中按照一定的關系加入一些冗余碼元(稱為監督碼元),使得原來相關性很小的信息碼元產生某種相關性,從而在接收端利用這種相關性來檢查并糾正信息碼元在傳輸中引起的差錯。冗余度的引入提高了傳輸的可靠性,但降低了傳輸效率。
1 線性分組碼
分組碼是由一組固定長度為n,稱之為碼字的矢量構成的。線性分組編碼時,將每k個信息位分為一組獨立處理,按一定規則給每個信息組增加(n-k)個監督碼元,組成長度為n的二進制碼字,這種編碼方式記為是(n,k)分組碼[2]。信息位和監督位采用的關系式由一組線性方程所決定,稱之為線性分組碼。
若線性分組碼的輸入信息位為U=(U0,U1,…,Uk),編碼輸出為C=(C0,C1,…,Cn),則有如下關系:
C=U#8226;G
H#8226;CT=OT
(1)
式中:G為線性分組碼的生成矩陣;H為監督矩陣。當G確定后,編碼的方法就完全確定了,而H給定后,編碼時監督位和信息位的關系也就確定了。因此,在設計分組碼編碼器時,需要確定生成矩陣G;在設計分組碼譯碼器時,需要確定監督矩陣H。
2 線性分組碼編譯碼器設計
2.1 線性分組碼編碼器設計
設G=
0 0 1 0 1 1
1 0 0 1 0 1
0 1 0 1 1 0,由于生成矩陣G是k行n列,所以k=3,n=6,改(n,k)碼為(6,3)碼。根據生成矩陣和式(1)運算后得到相應的編碼。即由:
(C0,C1,C2,C3,C4,C5)=
(U0,U1,U2)#8226; 0 0 1 0 1 1
1 0 0 1 0 1
0 1 0 1 1 0
可得:
C0=U1,C1=U2,C2=U0,
C3=U1+U2,C4=U0+U2,C5=U0+U1
COUT=(C0,C1,C2,C3,C4,C5)為編碼輸出,其中前3個分量為增加的監督碼元,后3個為原輸入信息位。
2.2 線性分組碼譯碼器設計
將生成矩陣G進行初等運算:原矩陣的第2,3,1行分別作為典型矩陣的第1,2,3行,可得典型生成矩陣:
G=1 0 0 1 0 10 1 0 1 1 00 0 1 0 1 1=IkQ
Q=1 0 11 1 01 1 0,P=QT=1 1 00 1 11 0 1
于是,典型監督矩陣H為:
H=[PIr]=1 1 0 1 0 00 1 1 0 1 01 0 1 0 0 1
(2)
監督碼元與信息碼元之間的關系稱為監督方程式(監督關系式),監督矩陣的每行中“1”的位置表示相應碼元之間存在的監督關系,即下述三個監督方程:
Y0⊕Y1⊕Y3=0
Y1⊕Y2⊕Y4=0
Y0⊕Y2⊕Y5=0(3)
發送的碼字C=(C0,C1,…,Cn)。e表示傳輸中的差錯;Y表示接收的碼字。如果碼字在傳輸過程中沒有出現差錯,則有HYT=HeT=0;出現差錯時,則有HYT=H(C⊕e)T=HeT=ST,S=eHT。其中,S稱為伴隨子,又稱為校正子。由于S只與序列傳輸中的差錯e有關,因此在編碼的能力之內,一定的e序列必然對應一定的S組合。可以在接收機中做好對應表,然后根據序列S準確地判斷差錯位置,再根據出錯位置進行糾正,可得到正確的譯碼輸出。根據式(2)可計算接收矢量Y的伴隨子S=Y#8226;HT。這里:
(S0,S1,S2)=(Y0,Y1,Y2,Y3,Y4,Y5)#8226;
1 0 1
1 1 0
0 1 1
1 0 0
0 1 0
0 0 1
S0=Y0+Y1+Y3,S1=Y1+Y2+Y4,
S2=Y0+Y2+Y5
錯誤圖樣即校正子與錯碼位置的關系,因為r=3,所以有3個校正子,相應的有3個監督關系式。將式(3)改寫為[3]:
Y0⊕Y1⊕Y3=S0
Y1⊕Y2⊕Y4=S1
Y0⊕Y2⊕Y5=S2
(4)
則可得由伴隨子S決定對應的錯誤圖樣集e,即為典型監督矩陣的轉置HT,如表1所示。
表1 錯誤圖樣表
錯碼位置(e碼)S0S1S2錯碼位置(e碼)S0S1S2
Y5101Y1010
Y4110Y0001
Y3011無錯000
Y2100
3 仿真及分析
圖1、圖2分別為線性仿真分組編碼器、譯碼器電路的仿真波形。圖中各參數含義如下:
clk是系統時鐘信號輸入;
UI是編碼器中三位線性分組碼的輸入;
CO是編碼器中六位編碼的輸出;
Y是解碼器中六位編碼的輸入;
c是解碼器中六位譯碼的輸出。
圖1 線性仿真分組編碼器仿真波形
圖2 線性仿真分組譯碼器仿真波形
在圖1、圖2中,截取了仿真的部分波形進行分析,產生的六位編碼CO、六位譯碼Y完全依據線性分組碼的編譯碼規則,任意兩個許用碼組之和(逐位模2加)仍為一許用碼組,即具有封閉性。
4 結 語
對線性分組碼編、譯碼器的設計基于VHDL(硬件描述語言)[4-10],與傳統設計相比較,采用VHDL語言設計的線性分組碼編、譯碼器無需考慮具體電路的實現,只需要掌握編譯碼原理,根據相應的編譯碼規則轉換成VHDL語言,大大減少了設計人員的工作量,提高了設計的準確性和效率。程序已在Max+Plus Ⅱ10.0工具軟件上進行了編譯、仿真和調試。經過實驗結果的分析,說明本設計是正確的。本文給出的設計思想也適用于其他基于PLD芯片的系統設計。
參考文獻
[1]曹麗娜,樊昌信.通信原理[M].6版.北京:國防工業出版社,2007.
[2]曹雪虹,張宗橙.信息論與編碼[M].北京:北京郵電大學出版社,2003.
[3]黃智偉.PFGA系統設計與實踐[M].北京:電子工業出版社,2007.
[4]曾繁泰,陳美全.VHDL程序設計[M].北京:清華大學出版社,2001.
[5]王鎖萍.電子設計自動化(EDA教程)[M].西安:西安電子科技大學出版社,2000.
[6]宋嘉玉,孫麗霞.EDA實用技術[M].北京:人民郵電出版社,2006.
[7]劉云仙.VHDL在數字電路設計中的應用[J].浙江科技學院學報,2004(9):167-168.
[8]潘松,黃繼業.EDA技術實用教程[M].北京:科學出版社,2002.
[9]王振紅.VHDL數字電路設計與應用實踐教程[M].北京:機械工業出版社,2003.
[10]趙俊超.集成電路設計VHDL教程[M].北京:北京希望電子出版社,2002.