基于FPGA的混合擴頻發(fā)射機設(shè)計與實現(xiàn)
摘要:以Alter公司的FPGA為硬件平臺,以QuartusⅡ為設(shè)計工具,來實現(xiàn)該直擴/跳頻混合發(fā)射系統(tǒng)。頂層采用圖形設(shè)計方式,各個模塊均采用Verilog語言進行設(shè)計。編碼模塊采用了RS(255,223)碼與卷積碼(2,1,7)相結(jié)合,擴頻模塊采用GOLD碼序列進行擴頻,調(diào)制模塊采用MSK調(diào)制。仿真結(jié)果表明:各個仿真模塊均滿足設(shè)計的要求,整個系統(tǒng)輸出穩(wěn)定無毛刺,達到了預(yù)期的效果。
關(guān)鍵詞:直擴/跳頻;發(fā)射機;Verilog HDL;MSK
0 引言
擴頻通信是將待傳輸?shù)男畔?shù)據(jù)用偽隨機序列進行調(diào)制,實現(xiàn)頻譜擴展后再發(fā)射出去進行傳輸。在接收端,使用與發(fā)射端相同的偽隨機碼對接收到的信號進行相關(guān)處理,恢復出原來的信息。直擴/跳頻(DS/FH)混合模式是一種有效的方法,它結(jié)合了直擴擴頻與跳頻擴頻的優(yōu)點,消除了直擴擴頻與跳頻擴頻的局限性,可廣泛應(yīng)用于軍事通信中,達到更好的抗干擾效果。
該設(shè)計以FPGA為硬件平臺,以QuartusⅡ為設(shè)計工具來實現(xiàn)直擴/跳頻(DS/FH)發(fā)射機的。頂層采用圖形設(shè)計方式,各個模塊均采用Veri log語言進行設(shè)計,編碼模塊采用了RS(255,223)碼與卷積碼(2,1,7)相結(jié)合,擴頻模塊采用GOLD碼序列進行擴頻,調(diào)制模塊采用MSK調(diào)制。
1 發(fā)射系統(tǒng)的總體框圖
所設(shè)計的發(fā)射機系統(tǒng)主要包括:信道編碼器、組幀電路、直擴部分、成形電路、調(diào)制器、數(shù)/模轉(zhuǎn)換器、頻率合成器、RS碼產(chǎn)生器、混頻器、功放、天線等。組成框圖如圖1所示。
射頻部分主要采用跳頻技術(shù)將中頻信號進行頻譜搬移,通過跳頻調(diào)制和高頻混頻兩步完成,用到頻率合成技術(shù)和濾波等,這主要通過硬件實現(xiàn)?;鶐Р糠謩t完成FPGA的設(shè)計,下面將詳細介紹。
主要可以劃分為以下幾個模塊:編碼模塊、組幀模塊、擴頻模塊、調(diào)制模塊。編碼模塊完成信息的RS編碼和卷積編碼;組幀模塊在經(jīng)過編碼的數(shù)據(jù)前面添加位同步和幀同步信息;直接序列擴頻模塊將信號頻譜擴展到一個很寬的頻段上;MSK調(diào)制模塊利用擴頻序列去調(diào)制載波,將擴頻調(diào)制信號搬移到射頻上去,然后經(jīng)過功率放大,D/A變換發(fā)送出去。
2 各個發(fā)射模塊的功能介紹及設(shè)計
2.1 編碼模塊設(shè)計
整個編碼實現(xiàn)由4級組成,分別是RS編碼、交織、并/串轉(zhuǎn)換和卷積編碼,如圖2所示。
2.2 組幀模塊設(shè)計
在信息發(fā)送端,經(jīng)過編碼的數(shù)據(jù)插入狀態(tài)標識組成數(shù)據(jù)幀。再加上同步序列、幀同步,組成1幀。組幀器的設(shè)計思路:首先將輸入數(shù)據(jù)放入一個寄存器,輸出12 b的同步序列,以及幀同步碼——巴克碼;之后,將保存的部分狀態(tài)標識數(shù)據(jù)依次輸出;最后,通過移位法將輸人數(shù)據(jù)依次移位輸出,輸完之后加上幀尾。設(shè)計結(jié)果如圖3所示。
圖3中:
clk:時鐘采樣信號,組幀器在其上升沿處數(shù)據(jù)采樣,并進行組幀運算。
reset_n:組幀器異步復位控制信號。定義為1表示不進行復位操作,采樣數(shù)據(jù)有效,組幀器正常操作;定義為0表示進行復位操作,采樣數(shù)據(jù)寄存器清零,組幀器清零。
data_in:信啟、數(shù)據(jù)的輸入端口,其位寬為1 b。
state_in:狀態(tài)標識輸入比特。
valid:輸入數(shù)據(jù)的有效位。
data_out:組幀后碼字輸出端口,其位寬為1 b。
outvalid:輸出數(shù)據(jù)的有效位。
2.3 擴頻模塊設(shè)計
GOLD碼序列產(chǎn)生器的設(shè)計結(jié)果如圖4所示。在整個模塊中分為2個進程。一是在時鐘上升沿到來并且復位結(jié)束時,進行m序列優(yōu)選對的算法,分別將兩個31位的m序列值存入寄存器中,初值都為“11111”。另一個進程通過輸入位valid進行判斷。通過valid=1,進行對位異或運算,計算GOLD碼,產(chǎn)生一組碼后,將其保存,然后在連續(xù)零處添加1個零,然后輸出,其余的碼組通過移位實現(xiàn),這樣就生成了32 b×32 b的GOLD碼,串行輸出。
圖4中:
clk:時鐘采樣信號,GOLD碼編碼器在其上升沿處數(shù)據(jù)采樣,并進行產(chǎn)生GOLD碼運算。
reset_n:GOLD碼編碼器異步復位控制信號。定義為1表示不進行復位操作,數(shù)據(jù)有效,GOLD碼編碼器正常操作;定義為0表示進行復位操作,數(shù)據(jù)寄存器清零,并進行初值賦值。
valid:開啟計算GOLD碼的開關(guān)。
out:GOLD碼輸出端口,其位寬為1 b。
outvalid:輸出數(shù)據(jù)的有效位。
2.4 調(diào)制模塊設(shè)計
根據(jù)MSK的基本原理,并且根據(jù)公式改變頻率控制字的值即可改變NCO的輸出頻率。其中FCW為用二進制初碼表示的頻率控制字。fin為NCO的采樣頻率,n為頻率控制字的位數(shù),相當為輸入二進制初碼的位數(shù)。即為輸出所要求的頻率。
MSK調(diào)制器的實現(xiàn)需要3個必要條件。一是在碼元轉(zhuǎn)換時刻,進行FPGA中控制NCO的頻率輸出的切換。二是相位連續(xù)。由于NCO輸出信號的相位始終能保持連續(xù),滿足了條件。三是在一個符號周期內(nèi)必須包含1/4載波周期的整數(shù)倍。根據(jù)必要條件三,可以得出下式:
因此,當fs=4 MHz,即輸入MSK調(diào)制器的符號采樣率為4 MHz,當n=20時,則fc為20 MHz,即載波頻率為20 MHz。因此,便完成了MSK調(diào)制器的FPGA實現(xiàn)。
根據(jù)上面的實現(xiàn)方式,需要一個開關(guān),根據(jù)輸入碼字“1”或“0”來改變NCO輸入頻率字,分別輸出頻率24 MHz與16 MHz。于是設(shè)計的MSK調(diào)制器如圖5所示,前面部分是開關(guān),后面部分是NCO。
圖5中clk:時鐘采樣信號,MSK調(diào)制器的開關(guān)在其上升沿處數(shù)據(jù)采樣。
clk_sample:時鐘信號,NCO時鐘采樣信號。
data_in:MSK調(diào)制器的字符輸入端口,其位寬為1b。
reset_n:MSK調(diào)制器異步復位控制信號。定義為1表示不進行復位操作,數(shù)據(jù)有效,MSK調(diào)制器正常操作;定義為0表示進行復位操作,數(shù)據(jù)寄存器清零,MSK調(diào)制器清零。
valid:開啟MSK調(diào)制器的開關(guān)。
out:MSK調(diào)制器輸出端口,其位寬為16b。
outvalid:輸出數(shù)據(jù)的有效位。
3 驗證與實現(xiàn)
下面詳細敘述采用CycloneⅡ開發(fā)板進行編碼、組幀、擴頻、調(diào)制模塊的驗證結(jié)果。
3.1 編碼模塊的驗證
首先驗證RS編碼模塊。采用輸入信號為1~223,這223個十進制數(shù)。通過Matlab仿真,輸出的校正位應(yīng)該是104,237,65,17,239,22,155,184,61,164,225,240,171,17,31,251,196,2,221,208,31,239,17,192,196,214,197,41,87,190,41,120。QuartusⅡ測試結(jié)果由圖6所示。從圖中可以看出,設(shè)計符合要求。
其次驗證交織編碼模塊。輸入數(shù)據(jù)為上面RS編碼器的輸出。輸出數(shù)據(jù)為1,17,33,…;2,18,34,…;3,19,35,…;…;16,32,48,…。仿真結(jié)果如圖7所示。由于數(shù)據(jù)太長無法顯示,只顯示部分。
最后驗證卷積編碼,同時達到驗證整個編碼器的功能的目的。輸入數(shù)據(jù)為上述編碼輸入的數(shù)據(jù)。根據(jù)Matlab的仿真,輸出的數(shù)據(jù)為1,1,1,0,1,1,1,1,0,0,0,1,1,1,0,0,1,1,1,0,…。仿真結(jié)果如圖8所示,參考時鐘為clk16。
3.2 組幀模塊的驗證
組幀模塊比較簡單,狀態(tài)標識通過外界輸入,且長度要求為31b。此模塊的輸入數(shù)據(jù)為上面編碼模塊的輸出數(shù)據(jù)。仿真結(jié)果如圖9所示,從frame_valid為高電平開始,輸出12 b的“1”的導頻碼;后面是7 b的幀同步碼——巴克碼;之后,將部分狀態(tài)標識數(shù)據(jù)與卷積編碼器的輸出數(shù)據(jù)1,1,1,0,1,1,1,1,0,0,0,1,1,1,0,0,1,1,1,0,…依次輸出;最后輸出剩余狀態(tài)標識數(shù)據(jù)。
3.3 擴頻模塊的驗證
擴頻實現(xiàn)原理:輸入數(shù)據(jù)與擴頻碼進行異或運算,需要一個異或運算器,如圖10所示。
圖10中clk:時鐘信號,異或運算器在其上升沿處數(shù)據(jù)采樣。
frame_data:異或運算器的數(shù)據(jù)輸入端口,其位寬為1b。
frame_valid:輸入數(shù)據(jù)的有效標志位。
gold_valid:GOLD碼輸出有效標志位。
gold_data:GOLD碼。
goldout_valid:輸出數(shù)據(jù)有效標志位。
gold_out:異或運算器輸出端口,其位寬為1b。
擴頻模塊的輸入數(shù)據(jù)為組幀模塊輸出的數(shù)據(jù),碼為GOLD碼。仿真結(jié)果如圖11所示,clk16_31是采樣時鐘,frame_out是數(shù)據(jù)輸入,gold是GOLD碼輸入,out為輸出。
3.4 調(diào)制模塊的驗證
由于是驗證模塊的正確性,因此時鐘與數(shù)據(jù)都是隨便取的。將程序下載到FPGA平臺上,通過SignalTapⅡ捕捉數(shù)據(jù)。結(jié)果如圖12所示,clk1M是輸入數(shù)據(jù),out是MSK調(diào)制的輸出結(jié)果。
4 結(jié)語
FPGA是整個發(fā)射機的核心,且FPGA的可編程性使電路的設(shè)計更具靈活性。本文即是以FPGA為硬件設(shè)計平臺,QuartusⅡ為設(shè)計工具設(shè)計實現(xiàn)的一種直擴/跳頻混合擴頻發(fā)射系統(tǒng)。給出了發(fā)射機的系統(tǒng)模型,以及各個模塊的設(shè)計原理和仿真波形。仿真結(jié)果表明該FPGA設(shè)計是正確可行的,加入了擴頻模塊,使得整個系統(tǒng)具有較高的性能指標,輸出穩(wěn)定無毛刺。