中北大學計算機與控制工程學院 溫建飛 岳鳳英
基于FPGA的漢明碼擴頻串行通信的實現
中北大學計算機與控制工程學院 溫建飛 岳鳳英
擴頻通信技術作為現代通信系統中一種新興的通信方式,有著抗干擾性強、抗衰落、頻譜利用率高等特點。以Altera FPGA的Quarturs II為開發平臺設計了一種串行數據收發、時序、資源經過優化的漢明碼編碼譯碼器,采用模塊化設計方法對漢明碼擴頻通信進行了行為級設計且通過了綜合和仿真,并在實際設備通信中得到了良好的應用。
擴頻通信;串行數據;漢明碼;FPGA
現代通信技術在微電子技術、大規模集成電路、信號處理技術快速發展的大環境下舉足輕重。擴頻通信,即擴展頻譜通信技術(Spread Spectrum Communication),它與光纖通信、衛星通訊被譽為進入信息時代的三大高技術通信傳輸方式。香農(E.Shannon)在20世紀50年代發表了關于信息論和通信加密以及系統安全性的論文,提出在高斯白噪聲干擾條件下,通信系統的極限傳輸速率(或者信道容量)為:

試中:C:信道容量;B:帶寬大小;S:信號能量;N:噪聲能量。
擴頻通信有著優異的抗干擾能力,所以在無線通信等干擾性很強的通信領域中有著重要的應用。具體地擴頻通信有選擇地址能力、信號隱蔽性強、防竊聽性好、抗干擾能力強、速率高等特點[1]。
整個系統中包含信源、發送端、接收端、信宿。發送端又包含漢明碼編碼、M序列發生器、編碼后信號擴頻,接收端包含M序列同步器、解擴器和漢明碼解碼。系統中發送端和接收端可以綜合成電路結構,而其他部分為測試需要,不可綜合。由于在設計仿真時需要模擬一些加性干擾,所以在信號傳輸的過程中添加了干擾源。加上測試平臺(TESTBENCH)構成了整個系統的通信方式,整個系統的拓撲結構圖如圖1所示。
2.1 漢明碼編碼模塊
隨著半導體產業的高速發展,FPGA的功耗低、靈活性強、運行速度快、資源多的特點使得其得到了廣泛的應用,而用FPGA實現信道編碼也成為了一種趨勢。

圖1 擴頻解擴系統拓撲結構圖
傳統的漢明碼編碼譯碼采用并行執行的方法,其優點是速度快、簡單,但占用資源多、設計消耗面積大,隨之整個系統的成本也增加。在此,設計了一個基于FPGA的串行數據收發的編碼方式,實現了系統流水線設計,節省了FPGA資源、優化了編碼譯碼時序,同時本文給出了整個編碼譯碼的具體方案,并對該方案的FPGA驗證作了分析。
數字信號在傳輸過程中常常因信道噪聲而發生損壞,接收端接收到數據可能造成誤判,對于一些信號加性干擾,考慮使用差錯控制措施,即在數據位中間添加必要的監督位,本設計采用漢明碼的編碼方式,每發送4比特的信息需要添加3比特的監督位,監督位根據信息位的既定約束關系得到,漢明碼能夠糾錯一比特錯誤的特殊的線性分組碼,在數據通信和計算機存儲系統中廣泛應用[2]。
將添加糾錯碼作為一個系統,即輸入4位原始信息位(b6b5b4b3),而輸出帶有3比特監督位(b2b1b0)的碼組。漢明碼輸出的序列為b6b5b4b3b2b1b0,傳輸順序為MSB-LSB,監督位的運算規則如下:

2.2 M序列產生模塊


圖2 M序列產生
利用FPGA資源中的6個觸發器和1個異或門就可以完成M序列的設計。
2.3 發送端軟件設計
2.3.1 發送端Verilog實現
數據發送端數據時鐘頻率為CLK,而產生M序列的時鐘為31*CLK發送端程序包含以下幾個部分:
(1)發送同步頭1111_1111_110;發送同步頭的作用是在解碼端首先確定我們發送端所用的M序列,以便解碼。
(2)發送完同步頭后發送依次發送4位數據位,并在發送的過程中計算出監督位, 發送完數據位后就開始發出監督位。
(3)發送完3位監督位后,狀態跳到發送4位數據位,繼續發送數據。
(4)發送完512幀4位的數據后,發送同步信號0000,用來判斷發送端與接收端是否同步,如果同步繼續發送數據,如果不同步,則重新發送同步頭。
(5)在數據發送的過程中,M序列的每一位與同步頭和漢明碼進行異或,并將異或結果進行擴頻,每一位擴頻結果為2位數據;
M_out為時鐘頻率為Clk*31的M序列,Data_out_Reg為擴頻前數據流,頻率為Clk。

圖3 數據發送模塊流程圖
2.3.2 發送端仿真結果
如圖4中Data_out_Reg為漢明碼編碼后的數據,同步頭11111111110之后為所發的第一幀漢明碼編碼后的數據,數據位為0010,校驗位為011,根據漢明碼校驗碼計算公式,該校驗是正確的,后邊發送的數據經驗證也是正確的。
3.1 接收端Verilog實現
接收端解碼部分時鐘頻率為。接收端程序包含以下部分:
(1)接收同步頭1111_1111_11的過程中判斷發送端的M序列;
(2)檢測一位0作為同步頭檢測的結束和數據接收的開始;
(3)接收數據,并解擴成漢明碼數據(4位信息位和3位監督位);
(4)解碼糾錯模塊進行漢明碼解碼和數據糾錯(糾錯能力為一位);根據公式計算出S1S2S3;根據{S1,S2,S3}的值來判斷數據位錯誤的位置,如果誤碼超過2位,則舍棄數據,并請求同步;
3.2 數據解碼接收模塊流程
數據解碼端,首先根據同步頭來判斷M序列,找到編碼所用的M序列后,要用同樣的M序列進行解碼,解碼完成會根據校驗公式進行數據校驗,如果數據正確則將數據并行輸出,如果數據有一位錯誤,則會更正錯誤的數據后并行輸出(見圖5)。

圖5 數據接收端程序流程圖
3.3 數據接收模塊波形
如圖6所示,接收端收到的漢明碼數據為0010011等。
4.1 信道加噪部分
4.1.1 信道加噪Verilog實現
unnoised_data為擴頻后信道中傳輸的數據,noise為模擬信道噪聲,noised_data位加噪后的信號。

圖4 數據發送端波形圖

圖6 數據接收端波形

圖7 數據加噪

圖8 經過解擴譯碼后的最終數據
assign noised_data={unnoised_data[1], unnoised_data} +noise;
always @(posedge Clk_31)begin
noise<=$random%2;
end
4.1.2 信道加噪后數據波形
如圖7為模擬信道噪聲,信號加噪后仿真演示。
4.2 漢明碼解碼后輸出數據
經過漢明碼解碼后,數據位4位一幀,并行輸出。如圖8所示,輸出的數據是我們想要的0010,0100等。
以上漢明碼擴頻串行通信的設計在FPGA上實現,主要是為了保證在有信道噪聲的情況下,使數據能夠有效快速地傳送到信宿。面積和速度兩個指標貫穿著FPGA設計的整個過程,是衡量一個設計好壞的基本標準[5],本設計采用了串行數據輸入擴頻、信道傳播和譯碼解擴,節省了資源,消除了多通道間的相互干擾,在保證運行速度沒有太大降低的前提下,消耗了FPGA最小的資源面積,芯片其他資源可以用作更多的設計。此通信系統中取得的經驗可以在其他類型的FPGA系統中借鑒并推廣。
[1]王愛珍.擴展漢明碼的編解碼器設計及其FPGA實現[J].現代電子技術,2008(19): 3187-191.
[2]方國濤.基于FPGA的漢明碼編譯碼系統[J].信息技術,2010(7):79-81.
[3]岳菊霞,計雯,石可,等.漢明編譯碼仿真系統的實現[J].現代電子技術,2012,35(11):27-29.
[4]GALLAGER R G.Low density partiy-check codes[D].Cambrige, MA:MIT Press,1963
[5]王傳新,FPGA設計基礎[M].北京:高等教育出版社,2007.
溫建飛(1991—),男,碩士研究生,研究方向為動態測試與智能儀器。
岳鳳英(1977—),女,副教授,研究生導師,研究方向為導航與制導。