第二屆華爲杯創芯大賽題目淺析及模擬均衡器(AEQ)基礎理論推導

引言:

在高速串行接口中(典型如SERDES),高頻信號的0-1切換可能會由於傳輸線阻抗等因素無法切換完全,進而出現ISI碼間干擾。這種方式的典型解決方法有兩種:發射端預增強和接收端均衡。兩種方式的目的都是要補償高頻信號的衰減,而均衡器的主要實現有兩種,一種是模擬均衡器,一種是數字均衡器。後者可能是通過射頻ADC採樣後進行DSP,前者的目的是通過模擬電路直接實現下圖所示的信號傳遞曲線:

在較高頻率處增益變高,類似於一個帶通濾波器。值得一提的是,這是2019年華爲杯創芯大賽機試題目:原題爲實現這樣的幅頻特性,fboost~=70MHz,Gain_dc=6dB,Gain_boost=12dB;且slope_p和slope_n都約爲20dB/dec。

提綱:

1 固定均衡器的結構

2 反饋式結構實現類似幅頻特性

3 五管單元的零點能否利用?

 

正文:

一、固定均衡器實現

固定均衡器(相對於自適應均衡器的一個概念,後者往往將固定均衡器代入一個環路來實現自適應)的一般實現電路爲:

將開環的差動對尾管分離,並加入一個阻容對,其小信號等效電路爲:

 

這裏和五管單元的小信號推導類似,不能用半邊等效電路而要用電流恆定(KCL)來推導,過程略起,結論爲Gx實現了一個零點和一個極點,Gl實現了一個極點。當負載電容較大時,主極點由負載電容決定,零點由Gx決定,次極點由gm和Cx決定。

爲了簡便起見,直接將兩個極點放到同一位置。此係統通過手算來使得最高點恰好爲(70MHz,12dB)是有難度的,所以直接通過MATLAB確定零極點位置,代碼如下。

close all;%關閉所有圖
syms s;
coeff=70/92;
z0=26e6*coeff;
p0=100e6*coeff;
p1=100e6*coeff;
fs0=(1+s/z0)/(1+s/p0)/(1+s/p1) *2;
fs0=expand(fs0);
fs0_2=expand(fs0_2);
[N1,D1]=numden(fs0);
res1=double(fliplr(coeffs(N1,s)));
res2=double(fliplr(coeffs(D1,s)));%提取開環傳遞函數的係數




hs0=tf(res1,res2);
figure;
margin(hs0);

w0=logspace(0,9,1000);%從10^0~10^9,取1000點波特圖
[mag0,phase0]=bode(hs0,w0);
mag1=zeros(1,max(size(mag0)));
for i=1:max(size(mag0))
    mag1(i)=mag0(1,1,i);
end
[peaky,peakx]=max(mag1);
peakx=w0(peakx);

先隨意給出一個z0,調節p0和p1使得最大值爲12dB。求出此時的頻率點,將z0,p0,p1縮放即可。最後得到z0=1.98MHz,p0=p1=76.1MHz。

二、反饋結構的嘗試

傳統的模擬電路中往往將放大器閉環使用,設計一個增益較高的放大器,然後通過反饋實現一個較爲精準的放大倍數。機試過程中我一直在嘗試閉環結構...

直接上代碼:

close all;%關閉所有圖
syms s;
coeff=3.857;
w0=7e5/coeff;
gain=1000;
% beta=-0.5/(1+s/60e3);%反饋係數
% fs0=1000/(1+s/20e3)/(1+s/700e9);
% beta=-0.5/(1+s/200e5);%反饋係數
% fs0=1000/(1+s/50e4);
% beta=-0.7/(1+s/(11666666));%反饋係數
% fs0=1000/(1+s/(167264));

beta=-0.5/(1+s/(w0*gain*0.35));%反饋係數爲負
fs0=-1*gain/(1+s/w0);%開環傳遞函數默認180度相移
fs0_2=fs0/(1+fs0*beta);%閉環傳遞函數
fs0=fs0*beta;%環路傳遞函數

% coeff=70/92;
% z0=26e6*coeff;
% p0=100e6*coeff;
% p1=100e6*coeff;
% fs0=(1+s/z0)/(1+s/p0)/(1+s/p1) *2;

fs0=expand(fs0);
fs0_2=expand(fs0_2);
[N1,D1]=numden(fs0);
[N2,D2]=numden(fs0_2);
res1=double(fliplr(coeffs(N1,s)));
res2=double(fliplr(coeffs(D1,s)));%提取開環傳遞函數的係數

ses1=double(fliplr(coeffs(N2,s)));
ses2=double(fliplr(coeffs(D2,s)));%提取閉環傳遞函數係數


hs0=tf(res1,res2);
hs0_2=tf(ses1,ses2);
figure;
margin(hs0);%計算loop TF的相位裕度

wx=logspace(0,9,1000);%1000點波特圖截止到1G
[mag0,phase0]=bode(hs0_2,wx);
mag1=zeros(1,max(size(mag0)));
for i=1:max(size(mag0))
    mag1(i)=mag0(1,1,i);
end
[peaky,peakx]=max(mag1);
peakx=wx(peakx);

figure;
bode(hs0_2);%可以看閉環的波特圖,閉環的相位裕度沒有意義
% figure;
% step(hs0_2);
% figure;
% pzmap(hs0_2);

由於是在反饋路徑上引入了一個極點,所以最後的閉環hs0_2會有一個零點,迭代計算得到零點位置爲63MHz。

這個結構比較難以滿足要求,

一是因爲相位裕度和Gain_boost的矛盾:相位裕度越高,尖峯越小。在相位裕度=45度的極限情況下,gain_dc=11.8。

二是因爲閉環傳遞函數得到一個零點和一對共軛極點,而且位置相近,所以很難實現指定的slope。

三是反饋路徑上如何實現極點?假設採用大電阻反饋,單端運放和差分運放產生帶極點的負反饋路徑的方法如下圖:

三、五管單元的零點分析

五管單元中產生的零點固定爲第二極點的兩倍,所以無法實現要求波特圖中先升後降的效果。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章