朱玉穎, 楊小華, 姚遠程
(西南科技大學 信息工程學院,四川 綿陽 621010)
QPSK調制信號[1]是抑制載波的信號,無法用常規的鎖相環或窄帶濾波器直接提取參考載波,但它又不同于一些連續相位調制信號,其載波相位變化只能取有限的幾個離散值,這就隱含了參考載波的相位信息。所以,可以通過非線性處理,消除信號中的調制信息,產生與原載波相位有一定關系的分量,然后再提純該信號,恢復已被抑制的載波信號,進而完成信號的相干解調[2]。QPSK調制由于具有較好的頻帶利用率[3],在現代衛星通信系統中得到了廣泛應用。
數控振蕩器一般由相位寄存器、相位累加器和正弦波查找表等部分組成。正弦波樣本可以用實時計算的方法產生,。通過設定NCO的wordφ的大小,來產生希望的頻率的正弦波;反之,wordφ的大小是根據已知正弦波的頻率計算得到的。例如,如果NCO的相位累加器的時鐘頻率為 100 MHz,相位累加器的位數為 16位,但這只適用于信號采樣頻率很低的情況。在軟件無線電超高速信號采樣頻率的情況下,NCO[4]實時計算的方法比較困難。此時,用NCO產生正弦波樣本最有效、最簡便的方法就是查找表法。其工作原理是,通過相位累加器產生的地址信息,輸出與當前時刻的相位值所對應的正弦值。此時NCO輸出的正弦波的頻率為φw or d為8 000 H,則NCO輸出的正弦波頻率為100MHz= 5 0 M Hz 。借助MATLAB[5]生成ROM中定點正、余弦波形數值,形成文件并加載到ROM中。利用MATLAB計算出正、余弦波形的浮點值[5],并量化為16比特的定點數值。
FIR[6]濾波器的設計采用窗函數設計方法,這種方法也稱傅立葉級數法,一般是先給出所要求的理想濾波器頻率響應H d (ejw),要求設計一個 FIR濾波器頻率響應但是設計是在時域進行的,因而先由 H d (ejw)的傅立葉反變換導出 H d ( n):

在 MATLAB中提供了相應的函數如fir1(N,Wn,‘窗函數代號’)和fir2(N,F,M,‘窗函數代號’)來產生各種基于窗函數的FIR濾波器。現根據設計的實際需求,采用窗函數設計方法設計30階低通濾波器。然后通過Matlab仿真得到系數,再采用Xilinx公司提供的IP核進行實現。
fbe=[0 0.25 0.45 1];
damps=[1 1 0 0];
h=fir2(30,fbe,damps);
freqz(h)。
QPSK調制解調[7]原理的Simulink[8]仿真模型如圖1所示。

圖1 QPSK調制解調的Simulink仿真
在圖1中,左側為調制器部分,包括QPSK碼元產生模塊(QPSK Source)、串并轉換模塊(ser2par)、調制器模塊(modulator)和加法器。右側為解調器部分,包含本地載波(Local Carrier)、乘法器(Product)、低通濾波器(Lowpass Filter),抽樣判決器,并串變換模塊。示波器模塊(Scope)用于觀察各路波形。圖1中的QPSK、串并轉換模塊和并串轉換模塊為組合后的子系統,如圖2和圖3所示。

圖2 串并轉換模塊

圖3 并串轉換模塊
原始碼元由“貝努利二進制隨機數發生器”(Bernoulli Binary Generator)產生,對它的輸出作簡單調整可得到-1或1的偽隨機碼輸出,即是QPSK調制的信號源。而兩路輸入由正弦波模塊(Sine Wave)的輸出經分路器(Demux)產生,設置 a路調制器中的正弦波模塊屬性中的相位(Phase)為[0,π],可得到初相位分別為0和π的正弦向量波形,設置b路調制器中的正弦波模塊屬性中的相位(Phase)為[3π2,π2],可得到初相位分別為3π2和π2的正弦向量波形。
仿真中,QPSK的調制采用調相法[9]。即將QPSK的雙比特碼元(a,b)轉換為I、Q兩路碼元,對其分別作BPSK調制,再將兩路調制波形相加得到 QPSK信號,其相位編碼邏輯關系如表1所示。

表1 QPSK信號碼元與相位邏輯關系
QPSK信號的調制器仿真波形如圖4所示。從上至下,依次為:①輸入信號碼元;②經串并轉換后的a路信號碼元;③經串并轉換后的b路信號碼元;④I路調制波形;⑤Q路調制波形;⑥合成后的QPSK信號。觀察信號2和信號3可知輸入信號經串并轉換后,有一個周期的延遲,且信號周期變為兩倍。信號4和信號5中均包含兩種相位的調制波形,合成后的信號6包含了四種相位,與表1中的關系相符。

圖4 QPSK調制的仿真波形
QPSK信號的解調器仿真波形如圖5所示。從上至下,依次為:①QPSK調制信號;②I路載波;③Q路載波;④I路乘法器輸出;⑤Q路乘法器輸出;⑥I路通過低通濾波后的波形;⑦Q路經過低通濾波后的波形。
輸出判決模塊的主要作用是根據濾波后的數據,依據算法的判決規則,得出基帶的數據碼流。判決規則是,如果濾波后的數據為正數,則基帶數據判決為 0,如果濾波后的數據為負數,則基帶數據判決為 1,如果濾波后的數據為零,則判決成與前一個判決值相反的數據,即前一個為 0,則為1,前一個為1,則為0,這樣為了保證基帶碼流中不會出現長的連0或者長的連1。用Verilog語言編寫代碼實現該部分,代碼的實現方法是:當進入一個有符號的數據,由于有符號數的最高位是符號位,因此判斷最高位的值,當為“1”時,則輸出“0”;當為“0”時,則輸出“1”。

圖5 QPSK解調的仿真波形
文章介紹了基于軟件無線電的全數字QPSK解調方案,通過下載試驗,得到了具有良好實時性和可靠性的解調模塊。設計思路及實現流程,也可以應用于包括MSK、QAM等常用的解調器。
并串變換模塊采用多路器電路原理,由時鐘來控制輸入的兩路信號的輸出情況。本文當時鐘為高電平時,輸出第一路為低電平時,輸出第二路。因此,總的輸出信號的頻率是輸入信號頻率的2倍。用Verilog語言編寫代碼,通過輸入兩組數據“11011000111”和“010011000111”進行測試,理論輸出應為“101100101101……”。測試結果如圖6所示。

圖6 并串變換波形輸出結果示意
[1] LINN Y.A Self-normalizing Symbol Synchronization Lock Detector for QPSK and BPSK[J].IEEE Trans-actions on Wireless Communications,2006,5(02):347-353.
[2] 蘇偉.基于軟件無線電的BPSK/QPSK解調器的研究[D].北京:北京化工大學,2008.
[3] VIJAY K G,YIH C W.Modulation and Demodulation Technologies[J].The Electrical Engineering Handbook,2005(03):971-981.
[4] 安效君,王力男.NCO的數字化實現及應用[J].無線電通信技術,2004,30(02):51-52.
[5] 候周國,錢盛友.基于Matlab編程的QPSK的仿真[J].廣西師范大學學報:自然科學版,2005(03):21-24.
[6] 葉仁澤.基于 MATLAB的 FIR數字濾波器的設計[J].科技資訊,2008(29):34-36.
[7] 韓露,徐釗,陳婕,等.一種過零脈寬檢測 QPSK全數字解調器及其FPGA的實現[J].通信技術,2008,41(08):4-6.
[8] 李媛媛,徐巖,王靖岳.對 MATLAB實現數字信號的 QPSK的頻譜分析[J].通信技術,2008,41(01):41-42.
[9] LIM D.A Modified Gardner Detector for Symbol Timing Recovery of M-PSK Singals[J].IEEE Transacti-on on Communications52,2004(10):1643-1647.