倪 磊,萬再蓮,周 瑋
(四川師范大學成都學院 通信工程學院,四川 成都 611745)
國內(nèi)眾多學者都對Matlab信號仿真進行過研究,但這些研究都是基于Matlab的數(shù)字信號或者是模擬信號的仿真。而在國內(nèi)的主流教材中,也都未涉及到信號產(chǎn)生的仿真界面。通信學科中的信號繁多復雜,學生在學完某類信號時,未能對數(shù)字和模擬信號進行詳細的區(qū)分。很多高校由于教學學時及實驗室條件的限制,很難達到讓學生熟練掌握信號的教學要求,將Matlab仿真技術(shù)和GUI界面設計引入教學中[1],可彌補這方面的遺憾。因此,通過對通信學科中的信號進行歸納和總結(jié),借助于現(xiàn)有的Matlab仿真軟件,設計和編寫出一個集模擬與數(shù)字信號調(diào)制于一體的仿真界面系統(tǒng),在這種創(chuàng)新型平臺上向?qū)W生展示通信系統(tǒng)的各類信號的處理。該平臺具有良好的交互性,實用性和可擴展性[2],為學生提供了一個實驗平臺,能幫助供學生熟悉并掌握通信信號處理的基本理論和基本方法,例如模擬通信系統(tǒng)中的AM、DSB、SSB信號調(diào)制與解調(diào)信號的時域和頻域波形、數(shù)字基帶信號中的各種碼型時域波形和PSK、FSK、ASK等數(shù)字調(diào)制信號等。
隨著計算機技術(shù)的飛速發(fā)展,人與計算機的通信方式也發(fā)生了很大變化,從原來的命令行通訊方式到現(xiàn)在的圖形界面下的交互方式,而現(xiàn)在多數(shù)的應用程序都是在圖形化界面下運行的。
Matlab圖形用戶界面開發(fā)環(huán)境簡稱GUIDE(matlab graphical user interface development environment),其主要是一個界面設計工具集。GUI(Graphical User Interface)就是基于數(shù)據(jù)處理軟件Matlab的圖形用戶界面開發(fā)環(huán)境。在Matlab7.0中,GUI包含多種圖形對象的界面,包括圖形顯示區(qū)域、功能按鈕及自定義的功能菜單等。Matlab將GUI所支持的用戶控件都集成起來,同時提供界面外觀、屬性和行為響應方法的設置方法。為了讓界面實現(xiàn)各種功能,需要對各個圖形對象進行布局。當用戶激活對應的GUI對象時,就能執(zhí)行相應的屬性設置。最后,必須保存和發(fā)布自己創(chuàng)建的GUI,使得用戶可以應用GUI對象[3]。
在Matlab中,可以將所有對象用M文件進行創(chuàng)建及編寫。將GUI視為Matlab對象,可以使用M文件來創(chuàng)建GUI。通過GUIDE創(chuàng)建GUI對象,執(zhí)行效率高,可以交互式地進行組件布局,還能生成保存和發(fā)布GUI的對應文件[3]。
GUI將用戶設計保存好的界面保存在FIG資源文件中,同時自動生成包含圖形用戶界面初始化和組件界面布局控制代碼的M文件。該M文件為實現(xiàn)回調(diào)函數(shù)的編寫提供了一個參考框架。而FIG文件是一個二進制文件,主要是對對象句柄進行保存,保存用戶創(chuàng)建圖形窗口時設計的屬性。M文件中包含GUI設計、控制函數(shù)及控件的回調(diào)函數(shù),主要用來控制界面展開時的各種特征。該文件可以分為GUI初始化和回調(diào)函數(shù)2個部分,控件的回調(diào)函數(shù)可根據(jù)用戶與GUI的具體交互行為分別調(diào)用。
本平臺的實現(xiàn)是在Matlab的圖形用戶界面(GUI)設計環(huán)境下完成[4]。通過GUIDE可以很方便地設計出各種符合要求的圖形用戶界面[5],考慮到平臺的應用性,在設計時要遵循簡單性、習慣性和直觀性3個原則。
在界面設計的過程中,首先,分析界面所要求實現(xiàn)的主要功能,明確設計任務;其次,在稿紙上繪出界面草圖,并站在學生使用的角度上審查該圖;第三,根據(jù)構(gòu)思,利用GUI設計出直觀、簡單的信號處理界面;最后,編寫相關(guān)代碼函數(shù),并對設計中存在的問題進行修改及優(yōu)化,直至檢查無誤。
GUI包含許多可以使軟件終端與用戶界面進行交互的用戶界面組件,GUI實現(xiàn)的任務之一就是控制組件如何響應用戶的行為[6]。在Matlab主界面的command window窗口中輸入GUIDE,即彈出圖形用戶界面模板選擇窗口,選擇默認的空白(BLANK GUI)選項即可進入編輯界面[7]。
圖1 Matlab/GUI開發(fā)環(huán)境Fig.1 Main matlab/GUI development
通信類信號調(diào)制中存在有兩類信號,即模擬信號與數(shù)字信號。據(jù)此,將信號的仿真實驗平臺中分為模擬信號波形仿真圖和數(shù)字信號波形仿真圖兩大模塊。
模擬信號的調(diào)制包括有調(diào)幅、調(diào)頻和調(diào)相。而調(diào)幅中又包含普通調(diào)制AM信號、抑制載波的雙邊帶DSB信號和抑制載波的單邊帶SSB信號。數(shù)字信號調(diào)制中則包括幅移鍵控、頻移鍵控和相移鍵控三類。通過將通信中遇到的數(shù)字信號調(diào)制進行歸納,幅移鍵控ASK是通過改變載波信號的振幅大小來表示數(shù)字信號 “0”和 “1”的,包括有2ASK,四進制MASK。頻移鍵控FSK是利用兩個不同頻率的振蕩信號來表示數(shù)字信號“0”和“1”的,其包括有 2FSK,4FSK,8FSK,最小頻移鍵控MSK,高斯濾波最小頻移鍵控GMSK。相移鍵控PSK是根據(jù)數(shù)字基帶信號的兩個電平使載波相位在兩個不同的數(shù)值之間切換的一種相位調(diào)制方法,包括BPSK,8PSK,16PSK,QPSK,OQPSK,UQPSK。正交幅度調(diào)制是利用正交的載波對兩路信號分別進行雙邊帶抑制載波調(diào)幅形成的,通常有16進制QAM,64QAM,32QAM,128QAM。
將設計好的界面文件保存運行,就可以看到該平臺在運行時顯示出的實際效果,如圖2所示。
通過文本編輯框控件來顯示模擬信號調(diào)制與數(shù)字信號調(diào)制的定義;使用單選按鈕控件來實現(xiàn)信號類型的選擇;完成控件布局之后,開始編制回調(diào)程序。在GUI編輯狀態(tài)下用鼠標右鍵單擊需要編寫回調(diào)程序的控件,打開右鍵快捷菜單,從View Callbacks中選擇一種回調(diào)方式[8]。在每一個控件的Callbacks函數(shù)里編寫相應調(diào)制信號的代碼。
Matlab通過創(chuàng)建M文件為GUI控制程序提供了一個框架,即所有代碼(含callback回調(diào)函數(shù))都包含在應用程序M文件中。在完成圖形界面的設計后,最主要的工作就是對控件的回調(diào)函數(shù)進行代碼設計。下面分析程序設計流程及控件回調(diào)函數(shù)的編寫。
該實驗平臺在運行時,系統(tǒng)先進行初始化。彈出GUI界面窗口,判斷點擊的位置是否正確,不正確則重新輸入。正確即可在相應信號的功能菜單中彈出相應的時域頻譜圖。程序流程如圖3所示。
圖3 程序流程圖Fig.3 Program flow picture
該軟件的各控件callback回調(diào)函數(shù)根據(jù)信號類型的不同而各有不同。如數(shù)字信號分為幅移鍵控、頻移鍵控和相移鍵控,而每種鍵控又有多種調(diào)制方式。當選擇幅移鍵控控件按鈕后,則選擇該控件下的調(diào)制方式,方能彈出所需的信號頻譜。
對代碼編寫中,首先先統(tǒng)一變量符號,其次進行調(diào)制信號類型的分類編碼,便于輸入輸出變量的傳遞及信號的擴充,通過定義data_I(表示輸出I路信號)和data_Q(表示輸出Q路信號),modulate_fre定義信號碼率,sample_fre表示采樣頻率,sample_num表示采樣點數(shù),調(diào)用統(tǒng)一函數(shù)function[data_Idata_Q]=Singal_modulate(mod_tpye,mod_v,mod_v2,sam_fre,sam_l)使代碼編寫更規(guī)范;最后根據(jù)matlab自帶的函數(shù)分別進行設計。
本設計中將所有信號調(diào)制放置在一個M文件中,通過callback函數(shù)調(diào)用該M文件。在完成了各個空間的callback函數(shù)編寫后,對該軟件功能進行調(diào)試,以確保每項功能都能正確的相應用戶的操作,彈出正確的頻譜圖。
鑒于篇幅有限,僅提供本實驗平臺信號中的DSB信號和16QAM信號代碼。
DSB信號callback函數(shù)部分代碼如下:
time_t=0:1/sample_fre:(sample_num-1)/sample_fre;%時間坐標
num=length(modulate_param1);
su_data=data_I+1j*data_Q;
su_data=su_data.*exp(-1j*2*pi*modulate_param2*time_t);
Bw=modulate_param1;
firOrder=60;
fircomb=sample_fre/(4*Bw);
[yf,tf]=rcosine(1,ceil(fircomb),'fir/sqrt',0.35,
ceil(firOrder/(2*fircomb)));%設置升余弦濾波器參數(shù)
data=filter(yf,1,su_data);
data_I=real(data);
data_Q=imag(data);
figure;
subplot(211);plot(abs(data_I+1j*data_Q));
xlabel('DSB信號的幅度譜')
ff=[-2047:2048].*sample_fre/4096;
subplot(212);plot(ff,abs(fftshift(fft(data_I+1j*data_Q,4096))));
xlabel('DSB信號的頻譜')
end
16QAM callback函數(shù)部分代碼如下:
nsamp=floor(sample_fre/modulate_fre);%采樣率設置
data_num=floor(sample_num/nsamp)+1;
data=randint(data_num,1,16);
y=modulate(modem.qammod(16),data);%調(diào)制函數(shù)
out_data=rectpulse(y,nsamp);
data_I=real(out_data(1:sample_num));
data_Q=imag(out_data(1:sample_num));
scatterplot(data_I+1j*data_Q);
[yf,tf]=rcosine(1,nsamp,'fir/sqrt',0.25);
data_I=filter(yf,1,data_I);
data_Q=filter(yf,1,data_Q);
data_I=data_I';
data_Q=data_Q';
figure
subplot(211);plot(abs(data_I+1j*data_Q));
ff=[-2048:2047].*sample_fre/4096;
subplot(212);plot(ff,abs(fftshift(fft(data_I+1j*data_Q,4096))));
end
在編寫完軟件的各代碼后,應對所設計的軟件代碼進行優(yōu)化。打開軟件中使用次數(shù)較多的程序,利用Matlab的自帶函數(shù)profile程序執(zhí)行耗時剖析功能函數(shù)對程序中耗時情況進行分析,完后進行改進,以提高系統(tǒng)的執(zhí)行效率[2]。
通過編寫完全部信號代碼及調(diào)試后,可以實現(xiàn)平臺中所有信號的波形。因篇幅有限,羅列模擬信號DSB調(diào)制和數(shù)字信號中4ASK和64QAM的波形圖,如圖4到圖7所示。
圖4 雙邊帶信號的頻譜Fig.4 Spectrum of DSB
圖5 4ASK信號時域頻域圖Fig.5 Spectrum of 4ASK
該實驗平臺的搭建,可以讓教師在講授信號調(diào)制理論的過程中,通過結(jié)合該軟件,可增強授課內(nèi)容的豐富性及延展性,拓展了實踐性教學環(huán)節(jié)。讓學生在對信號的理論學習中,通過應用該仿真平臺,不僅強化模擬信號和數(shù)字通信理論的基本思想和核心概念,而且為學生的理解和應用提供有力幫助,讓學生以專業(yè)化的身份進入到今后的科研工作中。
圖6 64QAM時域頻域圖Fig.6 Spectrum of 64QAM
圖7 64QAM星座圖Fig.7 Constellation of 64QAM
本文主要介紹了基于Matlab圖形用戶界面GUI的通信信號實驗平臺的設計,并以DSB信號和 16QAM信號為例說明回調(diào)函數(shù)與M文件的實現(xiàn)過程。學生可通過信號調(diào)制的時域頻域等仿真結(jié)果的分析,不僅驗證了通信系統(tǒng)中的基礎(chǔ)理論,更提高他們對通信信號的各方面認識,鞏固了所學內(nèi)容。特別對缺乏通信硬件實驗設備的學校來說,該軟件更具有實驗價值。
[1]王峰,丁金林.基于MATLAB/GUI的數(shù)字通信系統(tǒng)虛擬實驗平臺的設計[J].南通職業(yè)大學學,2013,3(1):96-99.WANG Feng,DING Jin-lin.Virtual experiment platform design of digital communication system based on MATLAB/GUI[J].Journal of Nnatong Vocational College,2013,3(1):96-99.
[2]王帆,劉慧.基于Matlab GUI的數(shù)字圖像處理實驗平臺設計[J].中國科技信息,2010(11):124-125.WANG Fan,LIU Hui.Experiment platform Design of Digital Communication system Based on MATLAB/GUI[J],Journal of Information Technology,2010(11):124-125.
[3]邱金蕙,王矞輝,李振全.基于Matlab/GUI的新型界面開發(fā)方式[J].河北工業(yè)科技,2008,7(4):234-235.QIU Jin-hui,WANG Yu-hui,LI Zhen-quan.A new way to develop interface based on Matlab/GUI[J].Hebei Journal of Industrial Science and Technology,2008,7(4):234-235.
[4]秦輝,席裕庚.基于Matlab GUI的預測控制仿真平臺設計[J].系統(tǒng)仿真學報,2006,10(10):2778-2779.QIN Hui,XI Yu-geng,Matlab GUI-Based Simulation Platform Design of Predictive Control[J].Journal of System Simulation,2006,10(10):2778-2779.
[5]陳亮,郝衛(wèi)東,喬建華.基于Matlab的濾波器分析界面設計[J].現(xiàn)代電子技術(shù),2009(10):39-41.CHEN Liang,HAO Wei-dong,QIAO Jian-hua,Design of filteranalysisinterface based on matlab [J].Modern Electronic Technology,2009(10):39-41.
[6]賈建科,韓團軍,朱寧洲.基于Matlab GUI的模擬帶通濾波器的設計[J].現(xiàn)代電子技術(shù).2010(10):58-60.JIA Jian-ke,HUAN Tuan-jun,ZHU Ning-zhou,Design of Analog Band-pass Filter Based on Matlab GUI[J].Modern Electronic Technology,2010(10):58-60.
[7]楊華為.基于MATLAB GUI的數(shù)據(jù)處理分析界面的設計與應用[J].工業(yè)控制計算機,2011(12):16-18.YANG Hua-wei,Interface of Data Processing and Analyzing Based on MATLAB GUI[J].Industrial Control Computer,2011(12):16-18.
[8]王巧花,葉平,黃民.基于MATLAB的圖形用戶界面(GUI)設計[J].煤礦機械,2005(3):60-62.WANG Qiao-hua,YE Ping,HUANG Min.Theinterface Design of GUI Based on MATLAB [J].Journal of Mine Machinery,2005(3):60-62.