郭 巍,劉建成,倪永婧,李 勇
(1.中國電子科技集團公司第五十四研究所,河北 石家莊 050081;2.河北科技大學,河北 石家莊050018)
目前,強大的計算機輔助分析設計能力的鏈路波形仿真已成為不可或缺的技術手段。通過高效和可靠性強的仿真技術,可有效降低硬件實現風險,同時顯著提高工程項目的研發效率[1]。以計算機輔助分析和設計為基礎的通信系統仿真軟件發展十分迅速,主要有SPW,SystemView,Matlab/Simulink,其中以Matlab/Simulink應用最為廣泛[1]。Matlab最初是由美國新墨西哥大學Cleve Moler教授于上世紀70年代末研發,用于數學計算的軟件[2]。歷經幾十年的發展,Matlab已成為覆蓋多個學科領域的科學計算和仿真軟件,具有入門快、交互友好和開發簡單等優點。Matlab軟件進行算法設計或者波形仿真主要有腳本語言編寫和Simulink工具2種途徑。Simulink是Matlab中能夠進行動態系統仿真、建模和分析的軟件包,能夠支持線性系統、非線性系統、連續系統、離散系統以及幾者混合的系統仿真,另外還可進行多種采樣率系統仿真[3]。
對于通信領域,成功的工程項目和優秀的產品研發都需要大量的前期輔助工作[4-5],這是必不可少的環節。這些工作主要是進行系統性能分析和驗證,若單純依靠構建的實驗系統和各種儀器進行測量測試,勢必會存在實驗系統搭建是否成功的風險、資金成本增加以及研發周期延長等問題。利用Simulink模擬系統級和鏈路層的通信系統,避免構建實驗系統的不便,降低了成本,而且模塊化的操作簡便,可有效縮短建模周期,同時根據設定的參數可實現不同情況下的系統動態仿真,對于結果數據的存儲分析具有更多的優勢,更加便于研究分析系統性能[6]。相比于SystemView等其他模塊化仿真平臺,Simulink具有更強的可操作性,能夠實現多采樣率、定點以及時鐘使能等基礎仿真[7-8]。更為關鍵的是,Simulink還具備生成用于FPGA,DSP開發的硬件語言代碼的功能,可將該工具的模塊化仿真模型直接編譯為比特文件,從而下載至FPGA,DSP等開發芯片。
綜上所述,Simulink模塊化的仿真平臺可為解決通信系統物理層鏈路的算法開發及性能分析等問題提供便捷、可靠的技術途徑。為此,本文以QPSK波形為例,重點研究如何充分利用Simulink優勢,進行完備的、更貼近工程實現的物理層通信鏈路仿真。
Simulink是Matlab的子產品,專注于系統建模和仿真,通過基于模型的設計,強調從概念到代碼的設計,通過對被測系統和物理對象建模,探索廣泛的設計空間,可使用一個多域環境對系統所有部分的行為方式進行仿真[2]。所以, Simulink是用來建模、分析和仿真各種動態系統的交互環境,通過豐富的功能模塊,為用戶迅速創建系統模型提供極大的便利,減少了用戶書寫代碼的麻煩,其主要有以下幾個方面特點:
(1)模塊化的交互式建模
在Simulink中有多個學科領域的工具箱,如“Communications System Toolbox”“DSP System Toolbox”“Neural Network Toolbox”“Aerospace Blockset”等,這些工具箱根據各自學科特點封裝了大量的基礎模塊,為用戶快速建立系統模型提供了極大的便利,用戶可根據待仿真系統功能特點選擇特定的工具箱進行建模。另外,Simulink具有開放性和靈活性,用戶也可自由地根據需要進行模塊的構建和封裝。建模時只需將對應的功能模塊拖入,并按照所建模型進行連接即可,操作簡單。
(2)友好的界面交互仿真
Simulink為用戶提供了友好的交互界面,有下拉菜單、對話窗口以及仿真結果顯示的示波器(頻譜儀)等,如圖1所示。用戶可通過對話窗口進行功能模塊的參數設置,也可通過菜單輸入腳本語言等命令進行參數變量預設。同時,用戶還可通過交互界面設定和運行波形級仿真,檢查分析仿真的結果。

圖1 Simulink交互界面示意圖
(3)良好的可擴充和定制特性
與其他仿真軟件相比,Simulink為用戶提供了強大的可擴展功能。這主要源于Simulink的開放式結構,允許用戶根據自身需求擴展仿真環境的功能。Simulink為用戶擴充和定制特殊功能的仿真模塊提供了多種途徑:① 通過Matlab的m腳本、Fortran和C語言代碼生成自定義模塊,定義自己的圖標和界面;② 將Simulink已有或者用戶自己生成的模塊進行鏈接組合,生成并封裝為新的功能模塊;③ 借助第三方開發的工具箱和Matlab強大的接口功能,打通Simulink和這些軟件的信息溝通。
基于上述的Simulink分析,以Communications System Toolbox和DSP System Toolbox兩個工具箱為主,充分利用Simulink的模塊建模和信號流仿真等優勢,進行QPSK波形傳輸鏈路仿真,包括編譯碼、調制解調、信道、時間同步、位定時、頻偏估計矯正和相位矯正等部分。
不同的通信系統可能采用不同的物理層傳輸波形,不過其鏈路結構大致相同,即完整的波形鏈路通常由相同的幾部分組成。QPSK作為一種相位調制方式,廣泛應用于多種無線通信系統,以QPSK波形傳輸鏈路為例研究Simulink仿真技術,不失其典型的代表性。
一般的物理層鏈路發送端結構如圖2所示,編碼、交織、成型和頻譜搬移是物理層通信鏈路的通用部分,其中頻譜搬移包括中頻、數模轉換和射頻,而導引符號和同步導引是為解決接收端相位模糊、頻偏和時間同步等問題[7],插入已知的特定符號序列。
QPSK為正交相移鍵控,調制階數為4,同等比特信噪比(Eb/No)具有與BPSK相同的誤比特率性能,其復數表達式為[9]:
(1)
式中,a(t)表示QPSK調制的復數域基帶碼元波形,ωc,θ0分別表示載波的角頻率和初始相位,a(t)由同相分量i(t)和正交分量q(t)兩部分組成。
i(t)和q(t)則是由待發送的0,1信息和采用的成型濾波器生成,成型濾波器g(t)通常采用平方根升余弦濾波,表達式為[7]:
(2)
式中,α為滾降系數,Tb為碼元周期。
對于圖2中所示的信道編碼、交織、組幀和頻譜搬移等部分內容,不再進行一一描述。
設計的QPSK波形傳輸鏈路接收端采用開環方式,即利用插入的導引符號解決載波同步、時間同步和相位模糊等問題,實現的模型如圖3所示。與發送端類似,匹配濾波、解調、解交織和譯碼等是通用部分,最為關鍵、實現難度最大的是位定時、頻偏矯正和信道估計,這里對三者的建模進行詳述。

圖2 物理層通信鏈路發送端結構

圖3 物理層通信鏈路接收端結構
接收端的時間同步和位定時是實現后續處理,準確解調、有效譯碼等部分的基礎[10]。時間同步和位定時恢復采用等間隔插入的同步導引序列匹配法獲取最佳采樣點[11],具體實現模型如圖4所示,二者同時完成。
圖中,I和Q兩路信號采樣率設定的為符號速率8倍,信號經過匹配濾波,抽取一個符號周期內不同的8個樣點輸出8路信號,分別與本地的同步導引序列滑動相關,對比8路滑動相關絕對值的大小,并與門限對比,若8路中最大值大于門限,則時間同步成功,最大值對應的一路抽取為最佳抽取,即找到最佳位定時。

圖4 基于導引匹配的同步、位定時實現模型
由于收發設備可能處于相對運動的狀態,或者收發兩端晶振存在一定的偏差,均會引入不期望的頻偏。對于頻偏的消除,考慮充分利用插入的同步導引序列,以相位累加的最大似然頻偏估計方法得到頻偏值,進而予以矯正,基本模型如圖5所示,該部分替代了閉環工作的鎖頻環和鎖相環。

圖5 基帶正交鎖相環結構
設同步導引序列長度為n,在精準位定時基礎上,將含有頻偏和相偏的接收導引序列xr取共軛,取其2~n段與已知的本地導引x的2~n點乘得到xΔ1,取1~n-1與本地導引的1~n-1點乘(.·)得到xΔ2,利用xΔ1和xΔ2可估計出相鄰符號間的相偏,進而求得頻率偏移量fΔ,具體表示為[12]:
xr=[xr1xr2…xrn],
(3)
x=[x1x2…xn],
(4)
xΔ1=[xr2xr3…xrn]*··[x2x3…xn],
(5)
xΔ2=[xr1xr2…xrn-1]*··[x1x2…xn-1] ,
(6)
(7)
式中,angle( )表示取復數向量中每個元素的角度,Ts為符號周期。
除頻偏外,接收端QPSK信號還會存在星座圖旋轉的相位模糊問題,設計模型中等間隔插入導引序號,在接收端與本地導引的共軛做相關運算得到信道估計值vd,在不考慮信道均衡情況下主要用于解決相位偏移模糊的問題,故設計用于信道估計的導引符號長度設為d,其插入方式如第一部分所示。
算法描述為[13]:
(8)
信道(相偏)的矯正過程即利用vd與數據符號逐個相乘。
x′r=vdxr,
(9)
式中,x′r為均衡后的數據符號,xr為接收到的數據符號,上述過程如圖6所示。
對于QPSK波形鏈路的編譯碼、加解交織和組幀等,可參考文獻[14-15]。

圖6 信道估計示意圖
在設計模型基礎上,基于Simulink所含有的功能模塊,搭建物理層QPSK波形傳輸鏈路,主要包括3個方面的工作:① 在仿真模型基礎上設計鏈路各部分的仿真參數,比如信息速率、幀長、導引長度及成型濾波器參數等;② 確定Simulink中能夠實現設計模型各部功能的模塊,或者利用多個基礎模塊組合實現對應的功能;③ 對完成的Simulink仿真鏈路進行調試檢查,研究分析所得結果的可靠性。
對于Simulink仿真時的參數設置有多種方式,以Matlab腳本語言編寫,運行之后將參數對應變量存于Workspace;在Simulink的slx文件菜單欄的“File”選項中選擇“Model Properties”,如圖1中(b)所示。
仿真鏈路搭建是Simulink仿真實現的重點,核心是如何利用Simulink中包含的基礎模塊或專用模塊實現上述QPSK波形收發兩端各部分功能,同時確定便于鏈路分析的數據采集節點和方式,QPSK波形鏈路的仿真實現如圖7所示。
波形建模的各部分功能實現主要有幾種方式:① 直接利用Simulink中的專用功能模塊,如圖7中所示的QPSK波形發送端隨機0,1生成和調制映射,接收端解調和誤碼率統計;② 通過多種基礎模塊的組合實現復雜功能,包括時間同步、位定時、頻偏估計和相偏矯正等;③ 依托S-Function模塊,通過m腳本語言、C、C++等高級語言編寫自定義功能的模塊。
QPSK波形仿真主要是通過前2種方式實現,發送端和接收端具體如圖8所示,其中需要注意的是對數據Frame長度和使能信號的處理。基于該仿真鏈路可驗證QPSK波形的同步、定時和頻偏矯正算法的有效性,通過改變信道的信噪比等參數,觀察接收端誤碼率變化,進而分析整個波形鏈路的性能,為后續算法改進奠定基礎。

圖7 QPSK波形鏈路仿真總體圖


圖8 QPSK波形發送端和接收端具體實現
在波形仿真鏈路搭建完畢后,如何采集數據,通過數據分析進而驗證仿真模型的有效性是關鍵的一步。Simulink中對于數據采集,即可輸出至數據文件也可以變量的形式直接保存至workspace,分析工具有頻譜儀、示波器、星座圖顯示、眼圖分析和誤碼率統計模塊等,這些為仿真鏈路調試提供了極大的方便。通過分析輸出數據是否與理論相符,從而判斷構建的仿真鏈路可靠性和有效性,所以一個完整鏈路波形的仿真需要充分利用Simulink中的分析調試工具。
以QPSK波形為例,講解了如何基于Simulink進行物理層通信鏈路仿真,從而展現了Simulink仿真技術的直觀性、可復用性和簡單易操作性。不過,本文介紹的QPSK波形仿真只是Simulink強大功能的冰山一角,如何充分發掘Simulink仿真平臺的潛力,更好地為物理層傳輸鏈路仿真服務,還需進行更多的應用研究。