中北大學計算機與控制工程學院 溫建飛 岳鳳英
基于FPGA的漢明碼擴頻串行通信的實現(xiàn)
中北大學計算機與控制工程學院 溫建飛 岳鳳英
擴頻通信技術(shù)作為現(xiàn)代通信系統(tǒng)中一種新興的通信方式,有著抗干擾性強、抗衰落、頻譜利用率高等特點。以Altera FPGA的Quarturs II為開發(fā)平臺設(shè)計了一種串行數(shù)據(jù)收發(fā)、時序、資源經(jīng)過優(yōu)化的漢明碼編碼譯碼器,采用模塊化設(shè)計方法對漢明碼擴頻通信進行了行為級設(shè)計且通過了綜合和仿真,并在實際設(shè)備通信中得到了良好的應(yīng)用。
擴頻通信;串行數(shù)據(jù);漢明碼;FPGA
現(xiàn)代通信技術(shù)在微電子技術(shù)、大規(guī)模集成電路、信號處理技術(shù)快速發(fā)展的大環(huán)境下舉足輕重。擴頻通信,即擴展頻譜通信技術(shù)(Spread Spectrum Communication),它與光纖通信、衛(wèi)星通訊被譽為進入信息時代的三大高技術(shù)通信傳輸方式。香農(nóng)(E.Shannon)在20世紀50年代發(fā)表了關(guān)于信息論和通信加密以及系統(tǒng)安全性的論文,提出在高斯白噪聲干擾條件下,通信系統(tǒng)的極限傳輸速率(或者信道容量)為:
試中:C:信道容量;B:帶寬大小;S:信號能量;N:噪聲能量。
擴頻通信有著優(yōu)異的抗干擾能力,所以在無線通信等干擾性很強的通信領(lǐng)域中有著重要的應(yīng)用。具體地擴頻通信有選擇地址能力、信號隱蔽性強、防竊聽性好、抗干擾能力強、速率高等特點[1]。
整個系統(tǒng)中包含信源、發(fā)送端、接收端、信宿。發(fā)送端又包含漢明碼編碼、M序列發(fā)生器、編碼后信號擴頻,接收端包含M序列同步器、解擴器和漢明碼解碼。系統(tǒng)中發(fā)送端和接收端可以綜合成電路結(jié)構(gòu),而其他部分為測試需要,不可綜合。由于在設(shè)計仿真時需要模擬一些加性干擾,所以在信號傳輸?shù)倪^程中添加了干擾源。加上測試平臺(TESTBENCH)構(gòu)成了整個系統(tǒng)的通信方式,整個系統(tǒng)的拓撲結(jié)構(gòu)圖如圖1所示。
2.1 漢明碼編碼模塊
隨著半導體產(chǎn)業(yè)的高速發(fā)展,F(xiàn)PGA的功耗低、靈活性強、運行速度快、資源多的特點使得其得到了廣泛的應(yīng)用,而用FPGA實現(xiàn)信道編碼也成為了一種趨勢。
圖1 擴頻解擴系統(tǒng)拓撲結(jié)構(gòu)圖
傳統(tǒng)的漢明碼編碼譯碼采用并行執(zhí)行的方法,其優(yōu)點是速度快、簡單,但占用資源多、設(shè)計消耗面積大,隨之整個系統(tǒng)的成本也增加。在此,設(shè)計了一個基于FPGA的串行數(shù)據(jù)收發(fā)的編碼方式,實現(xiàn)了系統(tǒng)流水線設(shè)計,節(jié)省了FPGA資源、優(yōu)化了編碼譯碼時序,同時本文給出了整個編碼譯碼的具體方案,并對該方案的FPGA驗證作了分析。
數(shù)字信號在傳輸過程中常常因信道噪聲而發(fā)生損壞,接收端接收到數(shù)據(jù)可能造成誤判,對于一些信號加性干擾,考慮使用差錯控制措施,即在數(shù)據(jù)位中間添加必要的監(jiān)督位,本設(shè)計采用漢明碼的編碼方式,每發(fā)送4比特的信息需要添加3比特的監(jiān)督位,監(jiān)督位根據(jù)信息位的既定約束關(guān)系得到,漢明碼能夠糾錯一比特錯誤的特殊的線性分組碼,在數(shù)據(jù)通信和計算機存儲系統(tǒng)中廣泛應(yīng)用[2]。
將添加糾錯碼作為一個系統(tǒng),即輸入4位原始信息位(b6b5b4b3),而輸出帶有3比特監(jiān)督位(b2b1b0)的碼組。漢明碼輸出的序列為b6b5b4b3b2b1b0,傳輸順序為MSB-LSB,監(jiān)督位的運算規(guī)則如下:
2.2 M序列產(chǎn)生模塊
圖2 M序列產(chǎn)生
利用FPGA資源中的6個觸發(fā)器和1個異或門就可以完成M序列的設(shè)計。
2.3 發(fā)送端軟件設(shè)計
2.3.1 發(fā)送端Verilog實現(xiàn)
數(shù)據(jù)發(fā)送端數(shù)據(jù)時鐘頻率為CLK,而產(chǎn)生M序列的時鐘為31*CLK發(fā)送端程序包含以下幾個部分:
(1)發(fā)送同步頭1111_1111_110;發(fā)送同步頭的作用是在解碼端首先確定我們發(fā)送端所用的M序列,以便解碼。
(2)發(fā)送完同步頭后發(fā)送依次發(fā)送4位數(shù)據(jù)位,并在發(fā)送的過程中計算出監(jiān)督位, 發(fā)送完數(shù)據(jù)位后就開始發(fā)出監(jiān)督位。
(3)發(fā)送完3位監(jiān)督位后,狀態(tài)跳到發(fā)送4位數(shù)據(jù)位,繼續(xù)發(fā)送數(shù)據(jù)。
(4)發(fā)送完512幀4位的數(shù)據(jù)后,發(fā)送同步信號0000,用來判斷發(fā)送端與接收端是否同步,如果同步繼續(xù)發(fā)送數(shù)據(jù),如果不同步,則重新發(fā)送同步頭。
(5)在數(shù)據(jù)發(fā)送的過程中,M序列的每一位與同步頭和漢明碼進行異或,并將異或結(jié)果進行擴頻,每一位擴頻結(jié)果為2位數(shù)據(jù);
M_out為時鐘頻率為Clk*31的M序列,Data_out_Reg為擴頻前數(shù)據(jù)流,頻率為Clk。
圖3 數(shù)據(jù)發(fā)送模塊流程圖
2.3.2 發(fā)送端仿真結(jié)果
如圖4中Data_out_Reg為漢明碼編碼后的數(shù)據(jù),同步頭11111111110之后為所發(fā)的第一幀漢明碼編碼后的數(shù)據(jù),數(shù)據(jù)位為0010,校驗位為011,根據(jù)漢明碼校驗碼計算公式,該校驗是正確的,后邊發(fā)送的數(shù)據(jù)經(jīng)驗證也是正確的。
3.1 接收端Verilog實現(xiàn)
接收端解碼部分時鐘頻率為。接收端程序包含以下部分:
(1)接收同步頭1111_1111_11的過程中判斷發(fā)送端的M序列;
(2)檢測一位0作為同步頭檢測的結(jié)束和數(shù)據(jù)接收的開始;
(3)接收數(shù)據(jù),并解擴成漢明碼數(shù)據(jù)(4位信息位和3位監(jiān)督位);
(4)解碼糾錯模塊進行漢明碼解碼和數(shù)據(jù)糾錯(糾錯能力為一位);根據(jù)公式計算出S1S2S3;根據(jù){S1,S2,S3}的值來判斷數(shù)據(jù)位錯誤的位置,如果誤碼超過2位,則舍棄數(shù)據(jù),并請求同步;
3.2 數(shù)據(jù)解碼接收模塊流程
數(shù)據(jù)解碼端,首先根據(jù)同步頭來判斷M序列,找到編碼所用的M序列后,要用同樣的M序列進行解碼,解碼完成會根據(jù)校驗公式進行數(shù)據(jù)校驗,如果數(shù)據(jù)正確則將數(shù)據(jù)并行輸出,如果數(shù)據(jù)有一位錯誤,則會更正錯誤的數(shù)據(jù)后并行輸出(見圖5)。
圖5 數(shù)據(jù)接收端程序流程圖
3.3 數(shù)據(jù)接收模塊波形
如圖6所示,接收端收到的漢明碼數(shù)據(jù)為0010011等。
4.1 信道加噪部分
4.1.1 信道加噪Verilog實現(xiàn)
unnoised_data為擴頻后信道中傳輸?shù)臄?shù)據(jù),noise為模擬信道噪聲,noised_data位加噪后的信號。
圖4 數(shù)據(jù)發(fā)送端波形圖
圖6 數(shù)據(jù)接收端波形
圖7 數(shù)據(jù)加噪
圖8 經(jīng)過解擴譯碼后的最終數(shù)據(jù)
assign noised_data={unnoised_data[1], unnoised_data} +noise;
always @(posedge Clk_31)begin
noise<=$random%2;
end
4.1.2 信道加噪后數(shù)據(jù)波形
如圖7為模擬信道噪聲,信號加噪后仿真演示。
4.2 漢明碼解碼后輸出數(shù)據(jù)
經(jīng)過漢明碼解碼后,數(shù)據(jù)位4位一幀,并行輸出。如圖8所示,輸出的數(shù)據(jù)是我們想要的0010,0100等。
以上漢明碼擴頻串行通信的設(shè)計在FPGA上實現(xiàn),主要是為了保證在有信道噪聲的情況下,使數(shù)據(jù)能夠有效快速地傳送到信宿。面積和速度兩個指標貫穿著FPGA設(shè)計的整個過程,是衡量一個設(shè)計好壞的基本標準[5],本設(shè)計采用了串行數(shù)據(jù)輸入擴頻、信道傳播和譯碼解擴,節(jié)省了資源,消除了多通道間的相互干擾,在保證運行速度沒有太大降低的前提下,消耗了FPGA最小的資源面積,芯片其他資源可以用作更多的設(shè)計。此通信系統(tǒng)中取得的經(jīng)驗可以在其他類型的FPGA系統(tǒng)中借鑒并推廣。
[1]王愛珍.擴展?jié)h明碼的編解碼器設(shè)計及其FPGA實現(xiàn)[J].現(xiàn)代電子技術(shù),2008(19): 3187-191.
[2]方國濤.基于FPGA的漢明碼編譯碼系統(tǒng)[J].信息技術(shù),2010(7):79-81.
[3]岳菊霞,計雯,石可,等.漢明編譯碼仿真系統(tǒng)的實現(xiàn)[J].現(xiàn)代電子技術(shù),2012,35(11):27-29.
[4]GALLAGER R G.Low density partiy-check codes[D].Cambrige, MA:MIT Press,1963
[5]王傳新,FPGA設(shè)計基礎(chǔ)[M].北京:高等教育出版社,2007.
溫建飛(1991—),男,碩士研究生,研究方向為動態(tài)測試與智能儀器。
岳鳳英(1977—),女,副教授,研究生導師,研究方向為導航與制導。