摘 要: 基于AVR單片機Atmega16采用(12,8,4)漢明碼和交織技術相結合的方法設計了一套FEC編解碼方案,并在實際的工業環境中進行了測試。測試結果表明,經過FEC信道編碼的通信系統可以有效地提高無線通信系統的可靠通信距離。
關鍵詞: AVR單片機;漢明碼;交織;FEC;通信距離
對于工業級通信系統,監測數據與控制命令傳輸的準確性顯得尤為重要。尤其是某些重要的監測數據(例如煤礦安全監控系統中的瓦斯監測數據等),原則上要求達到100%的準確率,但在實際通信中這是不可能做到的,通常只能要求誤碼率在10-6或更低,這就要求系統具有高效的糾錯功能[1]。本文基于Atmel公司的MEGA系列高性能單片機Atmega16,通過采用(12,8,4)漢明碼與交織技術相結合的方法實現了前向糾錯編碼(FEC)方案,并利用TI公司的CC1100芯片構建無線通信平臺,在實際工業環境中進行了測試。在不加任何FEC編碼的情況下,調制方式為GMSK,發射功率為-30 dBm,接收靈敏度為-105 dBm,通信波特率為9.6 kb/s,可靠通信距離為10 m;加入FEC編碼方案,其他條件不變的情況下,可靠通信距離提高到12 m,可見經過FEC信道編碼的通信系統可以有效提高無線信號可靠傳輸的距離。
1 漢明碼與交織技術
漢明碼(Hamming Code)由Richard Hamming于1950年提出,它屬于線性分組編碼方式。設原代碼的碼長為k bit,附加糾錯編碼部分為r bit,當碼字長度n=2r-1,r=n-k,r=1,2,…時就稱這種線性分組碼為漢明碼[2-3]。其基本原理是將信息碼元與監督碼元通過線性方程式聯系起來,每一個監督位被編在傳輸碼字的特定比特位置上。系統對于錯誤的數位無論是原有信息位中的,還是附加監督位中的都能把它分離出來[4]。
信息傳輸中,信道噪聲干擾不僅使原代碼的每一位可能出錯,而且附加糾錯位也可能出錯,故具有“一個差錯”的情況共有k+r種,加上“正確”狀態共有k+r+1種狀態,而r比特附加糾錯位要能分辨這k+r+1種狀態。
對k位碼字的漢明碼進行編碼,所需步驟如下:
(1)確定最小的監督位數r,將它們記成D1,D2,…,Dr,每個監督位符合不同的奇偶測試規定;
(2)原有信息和r個監督位一起編成長為r+k位的新碼字,選擇r監督位(0或1)以滿足必要的奇偶條件;
(3)對所接收的信息作所需的r個奇偶檢查;
(4)如果所有的奇偶檢查結果均正確,則認為信息無誤;如果發現有一個或多個錯了,則錯誤的位由這些檢查的結果來唯一地確定。
漢明碼是一種能糾一位錯的線性分組碼, 由于它的編譯碼簡單,在數據通信和計算機存儲系統中廣泛應用。然而漢明碼只能糾正一個錯誤,因此,為了使糾錯碼能更好地抵抗由噪聲和干擾引起的突發錯誤,避免突發的長干擾或者深衰落,在實際應用中往往結合數據交織技術。交織技術是指一個數據序列在一一對應的條件下進行數據的位置重排過程。它可以使信道中的突發錯誤分散開來,將原來屬于突發錯誤的信道改成獨立的隨機差錯信道,從而充分發揮糾錯編碼的作用,交織技術實際上是一種信道改造技術。本文所采用的交織技術,其交織度達到400 bit。
2 通信系統平臺設計
本文采用ATmega16芯片與一款基于CC1100的無線模塊構建無線通信系統的硬件平臺,系統框圖如圖1所示。
如圖1所示,Atmega16通過串口RS232與CC1100無線模塊進行數據交互,無線模塊實現數據的透明傳輸。實現方案如圖2所示。在發送端,Atmega16實現數據的打包,利用C語言實現FEC編碼和數據的交織處理,并通過RS232發送到CC1100無線模塊,然后經過GMSK調制方式經天線將信號發射出去;在接收端,經天線首先通過GMSK解調信號,然后對數據包進行解交織和FEC解碼,然后進行數據解包。
3 FEC編碼方案及測試
3.1 FEC編解碼
FEC接收端不僅能在收到的信碼中發現錯誤,還能糾正錯誤。對于二進制系統,如果能夠確定錯碼的位置,就能實現糾正。這種方法不需要反向信道(傳遞重發指令),也不會由于反復重發而延誤時間,實時性很好。在使用FEC編碼方式時,糾正的錯誤個數應根據具體情況而定。本文采用了(12,8,4)漢明碼,能糾正一位錯誤。
在發送方,根據式(1)的編碼邏輯,可以將數據進行FEC編碼:
接收方將FEC編碼接收進來,并根據式(2)的編碼邏輯形成接收端的FEC編碼,
然后再對接收的數據進行FEC譯碼,譯碼表如表1所示。
3.2 交織方案
考慮到實際的通信環境中會存在電火花等瞬間的強干擾,而且有時持續時間較長,因此在進行交織編碼時采用較長的交織深度,這樣能避免上述情況造成的不利影響。設計方案為:以400 B為一組,并對其進行FEC后得到200 B,再將這400+200=600 B進行交織并發送出去,如表2所示。
3.3 測試結果與分析
為了驗證FEC編碼的實際效果,對該系統在某工廠車間內進行了測試。在未加任何FEC編碼的情況下,調制方式為GMSK,發射功率為-30 dBm,接收靈敏度為-105 dBm,通信波特率為9.6 kb/s,可靠通信距離為10 m;加入FEC編碼方案,其他條件不變的情況下,可靠通信距離提高到12 m,可見經過FEC信道編碼的通信系統,可以有效地提高無線通信系統的可靠通信距離。
參考文獻
[1] 閻英,劉伯紅,張林.第二代數字廣播電視系統前向糾錯 編碼硬件實現研究[J],電子技術應用,2009,35(10):74-77.
[2] SHU Lin,COSTELLO D J.差錯控制編碼[M].晏堅,何元智,潘亞漢,等譯.北京:機械工業出版社,2007.
[3] 王新梅,肖國鎮,糾錯碼—原理與方法[M].西安:西安電子科技大學出版社,1991.
[4] 甘家寶.漢明碼校驗原理解析[J].微型電腦應用,2007,23(1):58-64.