袁 靖,高 楊,任萬春
(1.西南科技大學(xué) 信息工程學(xué)院, 四川 綿陽 621010;2.西南科技大學(xué) 微系統(tǒng)中心, 四川 綿陽 621010)
隨著無線電技術(shù)的迅速發(fā)展和無線電設(shè)備應(yīng)用領(lǐng)域的擴(kuò)大,通信系統(tǒng)對濾波器性能提出了更高的要求[1]。與聲表面波(SAW)濾波器和介質(zhì)濾波器等相比,雖然體聲波(BAW)濾波器具有體積小,品質(zhì)因數(shù)(Q)值高及帶外抑制好等優(yōu)勢,但也需要同時滿足現(xiàn)代通信系統(tǒng)對BAW濾波器時域特性的高要求[2-4]。因?yàn)樾盘柾ㄟ^BAW濾波器后,BAW濾波器的非理想相頻特性會使信號產(chǎn)生相位失真,這些失真會對通信系統(tǒng)的性能產(chǎn)生嚴(yán)重影響[5]。為了盡可能使帶內(nèi)信號通過BAW濾波器不失真,需要BAW濾波器有線性的相頻特性,即BAW濾波器群時延波動盡可能小[6],因此需要對BAW濾波器群時延波動進(jìn)行準(zhǔn)確計算,以便根據(jù)計算結(jié)果對其性能進(jìn)行評估和后續(xù)的改進(jìn)。
BAW濾波器群時延波動表示為通帶內(nèi)群時延最大值和最小值的差。群時延可通過矢量網(wǎng)絡(luò)分析儀測試后導(dǎo)出的S參數(shù)計算得到。為了從測得的S參數(shù)計算BAW濾波器群時延波動,本文分別給出了在ADS、MATLAB中計算BAW濾波器群時延波動的兩種方法,并將一組測得的BAW濾波器的S2P文件分別導(dǎo)入ADS、MATLAB中進(jìn)行計算,同時對兩種方法進(jìn)行對比,得到的結(jié)果基本吻合。
首先需要創(chuàng)建一個m文件,m文件名和輸入函數(shù)名一樣都為“readS2P”;然后定義function函數(shù)和輸入函數(shù);接著找到S2P文件中數(shù)據(jù)開始存儲的行;最后讀取S2P中的每個頻率點(diǎn)及對應(yīng)的S參數(shù)的幅值和相位。S2P文件讀取部分程序如下:
function [freq,S,magZ,angZ] =
readS2P(m,a,b)
fid = fopen(m);
tline = fgetl(fid);
i=0;j1=0;
while ischar(tline)%
if tline(1)==′!′
i=i+1;
j1=i;
elseif tline(1)==′#′
i=i+1;
else
break;
end
tline = fgetl(fid);
end
data=textread(m,″,′headerlines′,i);
freq=data([1∶1∶22000],1);
群時延波動計算同樣應(yīng)先創(chuàng)建m文件,m文件名和輸入函數(shù)名一樣都為“Filter_Measure”;然后定義function函數(shù)和輸入函數(shù);接著調(diào)用“readS2P”文件,并根據(jù)群時延的定義,編寫群時延波動的計算程序。部分程序如下:
function [Daiwaiyizhi1]=Filter_Measure1(m)
[freq,S,Mag,Ang]=readS2P(m,2,1);
warning(′off′)
Ang=(Ang<0).*(Ang+360)+(Ang>0).*Ang;
AngPi=Ang/180*pi;
AngPi=AngPi(((freq<(2094+3.1)*1000000)&(freq>(2094-3.1)*1000000)));
oumiga=2*pi*freq;
oumiga=oumiga(((freq<(2094+3.1)*1000000)&(freq>(2094-3.1)*1000000)));
Qunyanshi=-diff(AngPi(1:1:end))./diff(oumiga(1:1:end))*10^9;
Qunyanshi1=max(Qunyanshi)-min(Qunyanshi);
str=[′....5.群時延波動=′num2str(Qunyanshi1)′ns....′];
disp(str);
end
首先需要讀取測試數(shù)據(jù)文件夾下所有測得的BAW濾波器的S2P文件;然后調(diào)用群時延的計算程序“Filter_Measure”文件;接著依此計算BAW濾波器的群時延波動;最后以excel形式輸出計算數(shù)據(jù)。數(shù)據(jù)輸出部分程序如下:
clc
clear
maindir = ′F:data高低溫試驗(yàn)數(shù)據(jù)′;
subdir =dir(maindir);
for bianhao=[1 2 3 4 5 7 8]
Wendu=[];Qunyanshiall=[];
fori= 1:length(subdir)
filename=subdir(i).name;
flg=strfind(subdir(i).name,[′du_′num2str(bianhao)′#′]);
if(length(flg)~=0)
Wendu=[Wendu str2num(filename(1:flg-1))];
[Qunyanshi1]=Filter_Measure1(filename);
Qunyanshiall=[Qunyanshiall Qunyanshi1];
end
在ADS軟件中計算BAW濾波器的群時延波動,首先在ADS軟件中導(dǎo)入測得的BAW濾波器的S2P文件。具體方法是在ADS軟件中新建一張?jiān)韴D,然后放置S2P元件和相應(yīng)的S參數(shù)端子,構(gòu)成的電路圖如圖1所示。在S2P元件中導(dǎo)入測得的BAW濾波器S2P文件;S參數(shù)仿真設(shè)置的掃頻范圍和步長需要與矢量網(wǎng)絡(luò)分析儀測量時保持一致。
圖1 在ADS中導(dǎo)入S2P文件
在圖1的基礎(chǔ)上,雙擊“S-PARAMETERS”進(jìn)入S參數(shù)仿真器設(shè)置中,選中計算“Group delay”;然后在ADS軟件繪圖框中的“Trace Expression”輸入“delay(S12)”,得到BAW濾波器群時延頻率曲線,如圖2所示。
圖2 “delay(S12)”計算群時延頻率曲線
“delay(S12)”函數(shù)是利用群時延定義及下式計算[7]得到
(1)
式中:φ(ω)為相頻特性曲線;ω為角頻率;τ(ω)為群時延。
在ADS中仿真phase(S12)-頻率曲線如圖3所示。
圖3 phase(S12)-頻率曲線
由圖3可知,相位存在-180°~180°的跳變,這是因?yàn)橛嬎阋粋€系統(tǒng)相頻特性時,要用到反正切函數(shù)提取相位,計算機(jī)中反正切函數(shù)規(guī)定,在一、二象限時角度為0°~180°,三、四象限時角度為0°~-180°。這使實(shí)際得到的結(jié)果發(fā)生相位跳變,跳變幅度為360°。群時延為相位變化量和頻率變化量之比,相位發(fā)生跳變會使相位變化量增大,進(jìn)而導(dǎo)致群時延增大。
為了避免“delay(S12)”計算時遇到的相位跳變問題,在ADS中可使用“group_delay”進(jìn)行計算,即
group_delay=-diff(unwrap(phase(S12),π)/(2*π)
(2)
式中unwrap函數(shù)用于檢查數(shù)據(jù)前、后兩點(diǎn)的相位差距是否超過180°,超過為有跳變,后點(diǎn)的值自動減去360°。unwrap函數(shù)的作用是使相位在-180°處不發(fā)生跳變,從而反應(yīng)出真實(shí)的相位變化,如圖4所示。
圖4 unwrap(phase(S12))-頻率曲線
在ADS軟件繪圖框中的“Trace Expression”中輸入式(2),得到BAW濾波器群時延頻率曲線如圖5所示。通過計算帶內(nèi)群時延的最大值與最小值的差可得到群時延波動。
圖5 “group_delay”計算群時延頻率曲線
將用矢量網(wǎng)絡(luò)分析儀實(shí)測的一個BAW濾波器S2P文件作為算例的輸入數(shù)據(jù),分別導(dǎo)入MATLAB、ADS中進(jìn)行計算。一組S2P文件是BAW濾波器分別對8個溫度點(diǎn)(-55 ℃、-30 ℃、0、+25 ℃、+50 ℃、+85 ℃、+100 ℃、+125 ℃)進(jìn)行試驗(yàn)條件下測得。
BAW濾波器群時延波動在MATLAB中計算和ADS中使用“group_delay”計算的結(jié)果,如圖6所示。
圖6 MATLAB和ADS中使用“group_delay”計算的BAW濾波器帶內(nèi)群時延波動隨溫度的變化曲線
由圖6可知,MATLAB計算和ADS使用“group_delay”計算的結(jié)果偏差≤0.8 ns,表明兩種方法計算的結(jié)果基本吻合,均能正確計算BAW濾波器的群時延波動。
在ADS中分別使用“delay(S12)”和“group_delay”計算BAW濾波器群時延波動,其結(jié)果如圖7所示。
圖7 ADS中使用“group_delay”和“delay(S12)”計算的BAW濾波器帶內(nèi)群時延波動隨溫度的變化曲線
由圖7可知,在ADS中使用“delay(S12)”計算時結(jié)果出錯,這證實(shí)了相位跳變會導(dǎo)致計算的群時延波動偏大。
1) 本文給出了在ADS、MATLAB中計算BAW濾波器群時延波動的兩種方法。將一組測得的BAW濾波器的S2P文件分別導(dǎo)入ADS、MATLAB中進(jìn)行計算,均能準(zhǔn)確計算出BAW濾波器的群時延波動。
2) 在ADS中使用“delay(S12)”計算群時延波動時,因相位存在-180°~180°的跳變,當(dāng)相位延時超過180°時會導(dǎo)致計算結(jié)果出錯,因此需要使用增加unwrap函數(shù)的“group_delay”進(jìn)行計算,以避免因相位跳變而導(dǎo)致的計算出錯。