2009年10月17日 星期六

免費 RF 軟體及阻抗匹配 (Impedance Matching)

常用的 RF Simulation 軟體如 ADS, Microwave Office, 或是 SpectreRF 動則數十萬。對於大多數 RF 工程師日常的工作實在是大材(財)小用。

本文想要介紹兩個好用而且免費的 RF simulation 軟體,以及如何用這兩個軟體來做阻抗匹配。

第一個軟體是 Smith,是由 Bern 大學的 Fritz Dellsperger 教授所提供。正式版收費 $100 元;demo 版免費,但只能用五個元件而且不能存檔。說實在話這個軟體並不值得花錢買,也只能做一些簡單的事。五個元件也差不多夠用,因此只要用 demod 版就可以了。我先用 Smith 來介紹 Smith Chart 以及幾個阻抗匹配的做法。

Smith Chart 基本介紹

可參考另一篇文章 "Smith Chart"。重點摘要如下:

1.  Open load 位於 (+1, 0), Short load 位於 (-1, 0), 50Ohm load 位於 (0, 0).

2. 上半平面為 inductive load; 下半平面為 capacitive load; x-axis 為 resistive load.  因此大多 DC open 電路的 S11 位於第四象限 (如 dipole antenna); DC short 電路的 S11 位於第二象限。

3. VSWR = constant 在 smith chart 上是圓心在 (0, 0) 的圓。 Q=constant 在 smith chart 上是橄欖形,兩端點位於 (-1, 0) 和 (+1, 0)。

 

Smith 軟體介紹

Smith 軟體最大的缺點是只能觀察一個頻點,不過這也讓設計變得簡單而且容易了解。

Step 1: 輸入 ZL (load impedance)

開啟 smith 之後,先鍵入 ZL。有兩種方法輸入 ZL: 如果知道 ZL, 可以直接輸入 ZL 的實部 (resistive load) 和虛部 (reactive load),如圖一;實際的情形大多是 network analyzer 量測出的 S11 參數,也可以選 reflection coefficient 配合 polar 座標輸入,如圖二。  不論是用 ZL 或 reflection coefficient, 都必須提供工作頻率。

copy 1 of smith tutorial 1

圖一: 直接輸入 ZL (load impedance) 的實部和虛部: 實部是 84.8 Ohm (resistive load), 虛部是 -125.1 Ohm (capacitive load)。

 

smith tutorial 2 

圖二: 輸入 S11 參數的 magnitude 和 angle。Magnitude 是 0.706, Angle 部份是 -31.6 度。ZL 值圖一相同。

 

Step 2: L-match with HPF 和 LPF

最簡單的 match 就是 L-match。一般而言 L-match 可以有四種方式如圖三。分別是相交在 R=50 或 G=0.02 circles。除此之外,可以相交在 capacitive 半平面或是 inductive 半平面,一共有四種組合。

image

圖三:L match 的四種組合。

 

實際的情況則多半是在 R>50 (或 G>0.02) 的圓內,如 dipole antenna 和 loop anenna。此時只會有兩種 L-match 。如圖四和圖五所示,RL = 84.8 - 125.1 j, 只能先並聯電感或電容和 R=50 圓相交。再串聯電容或電感完成 input matching.  仔細觀察這兩種 L-match, 圖四是 HPF,因為串聯電容及並聯電感。圖五則是 LPF,因為串聯電感及並聯電容。至於應該用那一種 L-match,由系統決定。例如,如果要濾掉 FM 干擾,應該用 HPF L-match;反之,如果要濾掉 GSM 干擾,則應該用 LPF L-match。

smith tutorial 2 - HPF matching

圖四:L-match 使用 HPF。

 smith tutorial 2 - LPF matching

圖五:L-match 使用 LPF。

 

L-match 理論和應用都簡單,除了達到阻抗匹配之外,還附送了一個 HPF 或 LPF。對於窄頻系統效果相當不錯。

所謂窄頻系統就是頻寬小於載波的 10%。例如藍芽, WiFi 等使用 2.4 GHz ISM band,系統頻寬遠小於 240MHz。相反的,電視所使用的 UHF (或 VHF),頻寬從 470MHz 到 850MHz,遠遠超過載波的10%,因此是寬頻系統。

L-match 的主要缺點是只針對一個頻點做 matching。雖然對於窄頻系統效果不錯,但對寬頻系統遠端頻點的 matching/LPF/HPF 可能就不夠理想。同時在做 L-match 時,系統的 Q 值可能會變大 (寬頻會差異大,group delay 變化會增加,最好 Q=0),對某一些系統不適合。另外有時系統需要 BPF 來濾掉所有的干擾。一個解決之道就是用 Pi 或 T-match。

 

Step 3: Pi-match 和 T-match with BPF

首先把虛部去掉 --> 84.8 - 125.1j ==> 84.8 Ohm。這可以降低 Q 值同時離 50Ohm 更近一步。因為 Zl 是 capacitive loading,一開始只能使用 serial L,限制為 T match 且加上一個 LPF。

接下來再使用 L-match,把 84.8 Ohm map 到 50 Ohm。有 LPF 和 HPF 兩種選擇。

T-match LPF

上圖是 T-match 的 LPF (LPF + L-match LPF)。下圖則是 T-match 的 BPF (LPF + L-match HPF)。

Screenshot - 20091107 - 211805

 

究竟用 T-match (或 pi-match) 有什麼好處?主要是能將 matching 和 filter 的 Q 值分開。可以達成更寬頻的 impedance matching。

什麼時候會用 T-match 或 pi-match?當 impedance 實部大於 50-Ohm,原則上使用 T-match。當 admittance 實部大於 20mS,原則上使用 pi-match。 如上圖的黃和藍兩圈之內的部份。之外的部份,似乎用 L-match 就可以,不用做 T-match 或 pi-match。

當然可以做更複雜的變化,如 cascade 幾個 T 或 pi 或混合 T 和 Pi match,最主要的目的是達到多點的 impedance matching,比處不討論。

Smith 的 L-match 和 T-match 都是以單點為基礎,雖然簡單,但很難契合實做的需要。 RFSim99 剛好補足這一點。更重要的是,RFSim99 是一個完全免費的軟體。

 

RFSim99 軟體介紹

Step 1: 輸入 ZL (load impedance)

RFSim99 的 GUI 使用起來相當容易。可以選擇用 1-port 或 2-port 元件來輸入 load impedance。我們載入一個內建的 2-port 例子且設定頻率從 400MHz 到 800MHz (UHF band)。剛好非常類似一個 dipole antenna 如下圖。600MHz 的阻抗為 84.8-125.1j Ohm ,和前面 Smith 的例子一致。

S11 of 2-port

 

Step 2: L-match with HPF 和 LPF

RFSim99 已經把 L-match 自動加在軟體中。只要選 Auto Match,同時勾選 port-1 match 和 LPF (HPF) ,就可以自動產生正確的 L-match 電路。

L-match RFSim99

上圖是用 HPF 的結果,可以看到 L 和 C 值和圖四一致。S11 可以看到 600MHz 有一個很深的 notch。同時 S21 也呈現 HPF 的形狀。下圖是 Smith chart 的結果。除了在 600MHz 附近 match 不錯,大部份的頻率都不好,所以這是窄頻的 match。 L-match 的 LPF 也有一樣的問題。

smith chart

 

Step 3: Pi-match 和 T-match with BPF

接下來是 T-match。不過 RFSim99 沒有 T-match 或 pi-match 的自動 matching 功能。因此,我們必須用圖六或圖七所得到的結果。先看 LPF 的 T-match。

T-match S11

結果好很多,從 440MHz 到 800MHz S11 基本上都在 -10dB 以下。看 Smith chart 更明顯。

 

T-match smith chart

 

接下來是 BPF 的 T-match。結果更好,低頻甚至可以到 -20dB 以下。同時 Smith chart 也十分不錯。

T-match BPF S11

 

t-match BPF smith chart

 

 

附記

Ludwig 的 "RF Circuit Design" 其中有一章專門討論 impedance matching,是我看過 RF 書中最詳細的。

可以把 impedance matching 化簡問題為 R != 50Ohm to 50Ohm matching。是否有其他 optimal matching (e.g. constant Q, etc.)

2009年10月1日 星期四

Kalman Filter and PLL

考慮如 Figure 1 個 burst mode 的 packet (任何 shared media 的傳送方式)。在 packet 最前頭都會有 1010.. 的 preamble 做為 bit/symbol synchronization。緊接在後的是事先定義好的 frame sync word 用來做為確認 lock 到對的 packet 以及 word boundary。最後才是實際的 data。這個應用 focus 在 preamble 部份 (1010..) synchronization,也就是找出 (estimate) preamble 的相位和頻率,同步之後的 data。  我們可以把問題重新定義如下:A [2pft + q]  如何根據接收端的 phase 找出發射端 f (or b = 1/(2pf) or T=1/f) and q ?

[Driessen94] 和 [Christiansen94] 兩人獨立証明了這個問題的最佳解是 Kalman filter,和二階的 PLL (PI filter)有一樣的結構。但是 Kalman filter time variant 特性比 一般 PLL 更快完成 acquistion。[Patapoutian99] 將兩人的 work 作了一個很好的整理。

image

Figure 1: Packet Frame Structure.

Bit Synchronization State Space Model

Figure 2 描述了這個 state-space model: 我們可以定義兩個 state variables 分別為 phase disturbance 和 frequency disturbance.  Output variable, y(k), 是 phase disturbance 加上 observation timing jitter.  同時, state-space model 中還包含了 phase 和 frequency noise.    

kalman_filter

Figure 2: State-Space Model of Bit Synchronization.

 

Kalman Filter of State Space Model

一旦我們建立了 state space model,我們可以根據 y(k) 來估計 b(k) q(k) (Kalman filter), 其解如下:

Kalman_bit_sync

Figure 3: Kalman Filter Solution of Figure 2.

 

光從上面的方程式大概很難看出什麼名堂。K(k) 是所謂的 Kalman Gain, P(k) 是 X(k) 的 covariance matrix。重點是上述的 recursive 方程式和 2nd order PLL 有者一樣的架構 [Drissen94]。

 

Kalman Filter and PLL

Figure 4 是上述 Kalman filter 的等價 block diagram。The model includes a PI time-invariant controller followed by an integrator (remember Alper's work?  PI controller plus a slow VCXO - it's a integrator).  The Kalman filter is shown has the same structure as the 2nd order PLL.

[a(k), b(k)]' 即對應 Kalman gain, K(k).

image

Figure 4: Block diagram of the Kalman filter and a proportional integral PLL.

 

Bit Synchronization PLL 操作分為兩種模式:Acquisition 和 Tracking

在 Acquistion 模式,Phase 和 frequency disturbance 遠大於 process noise,Q 可以忽略不計。Kalman filter 表現如 dynamic loop bandwidth 的 PLL。開始時 loop bandwidth 會增加 ( a(k)/b(k) 變大) 以加快 acquistion 的時間。一旦鎖住 loop bandwidth 會減小 ( a(k)/b(k) 變小) 以減小最終的 phase jitter。下圖顯示這樣的一個例子: P(0|-1) 時同時有 phase 和 frequency disturbance,特別是 phase disturbance 很大 (1/12)。

image

 

在 Tracking 模式,Kalman Gain 會收歛到最終值。因此和 2nd order PLL 是完全等價。藉者 Kalman Gain 的幫助,可以找出最佳的 PLL 設計。

 

Follow Up Task

==> 如何將 continous PLL 和 Kalman filter 連結超來?如何設計最佳 PLL考慮 VCO noise, PFD noise, 和 sigma-delta modulator noise?如何考慮 stability?

==> How about if VCO noise is time variant?  Kalman filter should be better than PLL?

==> If adding the data after the integrator (sigma-delta or just random data), then what's the equation?? can use Kalman filter to explain it?

Analog Simulation Flow

PRESIM

schematic: composer

netlister: composer - cdl (si) : netlist

testbench: tb_dut (PVT)

simulator: hspice

processs model: t350nm, u180nm, u130nm, u110nm, u110nmAL  --> put in /home/atd/tech/...

 

tb_dut.lis  = tb_dut.sp  + netlist.spi

tb_dut.sp does not include process component (nmos, pmos), but need to include PVT, need to include process ==> change tb all the time

> make tb_dut.lis ==> update tb_dut.lis

 

netlist.spi = netlist + convt_model_process ==>  netlist only change in design phase; model_process only change occasionally

 

netlist: hard to make dependency because it's from composer.  ==> make netlist directly

> make netlist    ==> update netlist

> make tb_dut.lis  ==> update netlist.spi ==> update tb_dut.lis

 

POSTSIM

netlister: calibre

testbench: tb_dut (PVT), same as presim

simulator: hspice or Adit

processs model: t350nm, u180nm, u130nm, u110nm, u110nmAL  --> same as presim

 

tb_dut.post.lis = tb_dut.sp + netlist.post.spi

> make tb_dut.post.lis ==> update tb_dut.post.lis

 

netlist.post.spi = netlist.cal + convt_model_process

> make netlist.cal  ==> update netlist.cal

> make tb_dut.post.lis ==> update tb_dut.post.lis

2009年9月19日 星期六

Kalman Filter 簡介

Kalman 濾波器的部份,我發現網路上有一些不錯的介紹 (無法找到原作者 ),應用一引用其一。

在學習 Kalman 濾波器之前,首先看看為什麼叫「Kalman」。跟其他著名的理論(例如傅立葉變換,泰勒級數等等)一樣,Kalman也是一個人的名字,不同的是,他是個二十世紀的人。

Kalman 全名 Rudolf Emil Kalman,匈牙利數學家,1930年出生於匈牙利首都布達佩斯。1953,1954年於麻省理工學院分別獲得電機工程學士及碩士學位。1957年於哥倫比亞大學獲得博士學位。我們現在要學習的Kalman濾波器,正是源於他的博士論文和1960年發表的論文《A New Approach to Linear Filtering and Prediction Problems》(線性濾波與預測問題的新方法)。如果對這編論文有興趣,可以到這裡的地址下載: http://www.cs.unc.edu/~welch/kalman/media/pdf/Kalman1960.pdf

故名思義,Kalman 濾波器有兩類應用:一類是濾波 (filtering, 或稱為 smoothing),另一類是預測 (prediction)。特別後者被廣泛用在需要預測+修正 (prediction + correction) 的場合。簡單來說,Kalman濾波器是一個「optimal recursive data processing algorithm(最佳化自回歸數據處理演算法)」。對於解決很大部分的問題,他是最優,效率最高甚至是最有用的。他的廣泛應用已經超過30年,包括機器人導航,控制,傳感器數據融合甚至在軍事方面的雷達系統以及導彈追蹤等等。近年來更被應用於計算機圖像處理,例如頭臉識別,圖像分割,圖像邊緣檢測等等。

Kalman濾波器的介紹

為了可以更加容易的理解Kalman濾波器,這裡會用定性的描述方法來解釋,而不是像大多數參考書那樣羅列一大堆的數學公式和數學符號。雖然 Kalman filter 的5條公式是其核心內容,非常適合電腦執行。其實 Kalman 的程序相當的簡單,只要你理解了他的那5條公式。 在介紹他的5條公式之前,先讓我們來根據下面的例子一步一步的探索。

假設我們要研究的對象是一個房間的溫度。根據你的經驗判斷,這個房間的溫度是恆定的,也就是下一分鐘的溫度等於現在這一分鐘的溫度(假設我們用一分鐘來做時間單位)。假設你對你的經驗不是100%的相信,可能會有上下偏差幾度。我們把這些偏差看成是高斯白噪聲(White Gaussian Noise),也就是這些偏差跟前後時間是沒有關係的而且符合高斯分配(Gaussian Distribution)。另外,我們在房間裡放一個溫度計,但是這個溫度計也不準確的,測量值會比實際值偏差。我們也把這些偏差看成是高斯白噪聲。

好了,現在對於某一分鐘我們有兩個有關於該房間的溫度值:你根據經驗的預測值(系統的預測值)和溫度計的值(測量值)。下面我們要用這兩個值結合他們各自的噪聲來估算出房間的實際溫度值。

假如我們要估算k時刻的是實際溫度值。首先你要根據k-1時刻的溫度值,來預測k時刻的溫度。因為你相信溫度是恆定的,所以你會得到k時刻的溫度預測值是跟 k-1時刻一樣的,假設是23度,同時該值的高斯噪聲的偏差是5度(5是這樣得到的:如果k-1時刻估算出的最優溫度值的偏差是3,你對自己預測的不確定度是4度,他們平方相加再開方,就是5)(Step 1 and 2, state and covariance prediction)。然後,你從溫度計那裡得到了k時刻的溫度值,假設是25度,同時該值的偏差是4度。

由於我們用於估算k時刻的實際溫度有兩個溫度值,分別是23度和25度。究竟實際溫度是多少呢?相信自己還是相信溫度計呢?究竟相信誰多一點,我們可以用他們的 covariance來判斷。因為Kg^2=5^2/(5^2+4^2),所以Kg=0.78 (Step 4, Kalman gain correction),我們可以估算出k時刻的實際溫度值是:23+0.78* (25-23)=24.56度 (Step 3, state correction)。可以看出,因為溫度計的covariance比較小(比較相信溫度計),所以估算出的最優溫度值偏向溫度計的值。

現在我們已經得到k時刻的最優溫度值了,下一步就是要進入k+1時刻,進行新的最優估算。到現在為止,好像還沒看到什麼自回歸的東西出現。對了,在進入 k+1時刻之前,我們還要算出k時刻那個最優值(24.56度)的偏差。算法如下:((1-Kg)*5^2)^0.5=2.35 (Step 5, covariance correction)。這裡的5就是上面的k時刻你預測的那個23度溫度值的偏差,得出的2.35就是進入k+1時刻以後k時刻估算出的最優溫度值的偏差(對應於上面的3)。

就是這樣,Kalman濾波器就不斷的把covariance遞歸,從而估算出最優的溫度值。他運行的很快,而且它只保留了上一時刻的covariance。上面的Kg,就是Kalman增益(Kalman Gain)。他可以隨不同的時刻而改變他自己的值,是不是很神奇!

下面就要言歸正傳,討論真正工程系統上的Kalman。

Kalman濾波器演算法

在這一部分,我們就來描述源於 Dr Kalman 的Kalman濾波器。下面的描述,會涉及一些基本的概念知識,包括機率(Probability),隨機變量(Random Variable),高斯或常態分配(Gaussian Distribution)還有State-space Model等等。但對於Kalman濾波器的詳細證明,這裡不能一一描述。

首先,我們先要引入一個離散控制過程的系統。該系統可用一個線性隨機微分方程(Linear Stochastic Difference equation)來描述:
X(k)=A X(k-1)+B U(k)+W(k)

再加上系統的測量值:
Z(k)=H X(k)+V(k)

上兩式子中,X(k)是k時刻的系統狀態,U(k)是k時刻對系統的控制量。A和B是系統參數,對於多模型系統,他們為矩陣。Z(k)是k時刻的測量值,H 是測量系統的參數,對於多測量系統,H為矩陣。W(k)和V(k)分別表示過程和測量的噪聲。他們被假設成高斯白噪聲(White Gaussian Noise),他們的covariance 分別是Q,R(這裡我們假設他們不隨系統狀態變化而變化)。

對於滿足上面的條件(線性隨機微分系統,過程和測量都是高斯白噪聲),Kalman濾波器是最佳的信息處理器。下面我們來用他們結合他們的covariances 來估算系統的最佳化輸出(類似上一節那個溫度的例子)。

首先我們要利用系統的過程模型,來預測下一狀態的系統。假設現在的系統狀態是k,根據系統的模型,可以基於系統的上一狀態而預測出現在狀態:
X(k|k-1)=A X(k-1|k-1)+B U(k) ……….. (1)
式(1)中,X(k|k-1)是利用上一狀態預測的結果,X(k-1|k-1)是上一狀態最佳的結果,U(k)為現在狀態的控制量,如果沒有控制量,它可以為0。
到現在為止,我們的系統結果已經更新了,可是,對應於X(k|k-1)的covariance還沒更新。我們用P表示covariance:
P(k|k-1)=A P(k-1|k-1) A'+Q ……… (2)
式 (2)中,P(k|k-1)是X(k|k-1)對應的covariance,P(k-1|k-1)是X(k-1|k-1)對應的 covariance,A'表示A的轉置矩陣,Q是系統過程的covariance。式子1,2就是Kalman濾波器5個公式當中的前兩個,也就是對系統的預測。
現在我們有了現在狀態的預測結果,然後我們再收集現在狀態的測量值。結合預測值和測量值,我們可以得到現在狀態(k)的最優化估算值X(k|k):
X(k|k)= X(k|k-1)+Kg(k) (Z(k)-H X(k|k-1)) ……… (3)
其中Kg為Kalman增益(Kalman Gain):
Kg(k)= P(k|k-1) H' / (H P(k|k-1) H' + R) ……… (4)
到現在為止,我們已經得到了k狀態下最優的估算值X(k|k)。但是為了要另Kalman濾波器不斷的運行下去直到系統過程結束,我們還要更新k狀態下X(k|k)的covariance:
P(k|k)=(I-Kg(k) H)P(k|k-1) ……… (5)
其中I 為1的矩陣,對於單模型單測量,I=1。當系統進入k+1狀態時,P(k|k)就是式子(2)的P(k-1|k-1)。這樣,算法就可以自回歸的運算下去。
Kalman濾波器的原理基本描述了,式子1,2,3,4和5就是他的5 個基本公式。根據這5個公式,可以很容易的實現計算機的程序。
下面,我會用程序舉一個實際運行的例子。。。 
 

應用一: 找出 (estimate) 室溫

這裡我們舉一個非常簡單的例子來說明 Kalman 濾波器的工作過程。所舉的例子是進一步描述上一節的例子,而且還會配以 matlab 模擬結果。

根據第二節的描述,把房間看成一個系統,然後對這個系統建模。當然,我們見的模型不需要非常地精確。我們所知道的這個房間的溫度是跟前一時刻的溫度相同的,所以A=1。沒有控制量,所以U(k)=0。因此得出:

X(k|k-1)=X(k-1|k-1) ……….. (6)

式子(2)可以改成:

P(k|k-1)=P(k-1|k-1) +Q ……… (7)

因為測量的值是溫度計的,跟溫度直接對應,所以H=1。式子3,4,5可以改成以下:

X(k|k)= X(k|k-1)+Kg(k) (Z(k)-X(k|k-1)) ……… (8)

Kg(k)= P(k|k-1) / (P(k|k-1) + R) ……… (9)

P(k|k)=(1-Kg(k))P(k|k-1) ……… (10)

現在我們模擬一組測量值作為輸入。假設房間的真實溫度為25度,我模擬了200個測量值,這些測量值的平均值為25度,但是加入了標準偏差為幾度的高斯白噪聲(在圖中為藍線)。

為了令Kalman濾波器開始工作,我們需要告訴Kalman兩個零時刻的初始值,是X(0|0)和P(0|0)。他們的值不用太在意,隨便給一個就可以了,因為隨著Kalman的工作,X會逐漸的收斂。但是對於P,一般不要取0,因為這樣可能會令Kalman完全相信你給定的X(0|0)是系統最優的,從而使算法不能收斂。我選了 X(0|0)=1度,P(0|0)=10。

該系統的真實溫度為25度,圖中用黑線表示。圖中紅線是Kalman濾波器輸出的最優化結果(該結果在算法中設置了Q=1e-6,R=1e-1)。



附matlab下面的kalman濾波程序:

clear

N=200;

w(1)=0;

w=randn(1,N)

x(1)=0;

a=1;

for k=2:N;

x(k)=a*x(k-1)+w(k-1);

end

V=randn(1,N);

q1=std(V);

Rvv=q1.^2;

q2=std(x);

Rxx=q2.^2;

q3=std(w);

Rww=q3.^2;

c=0.2;

Y=c*x+V;

p(1)=0;

s(1)=0;

for t=2:N;

p1(t)=a.^2*p(t-1)+Rww;

b(t)=c*p1(t)/(c.^2*p1(t)+Rvv);

s(t)=a*s(t-1)+b(t)*(Y(t)-a*c*s(t-1));

p(t)=p1(t)-c*b(t)*p1(t);

end

t=1:N;

plot(t,s,'r',t,Y,'g',t,x,'b');

 

 應用二:Symbol(Bit) Synchronization with Unknown Phase/Frequency

考慮如下一個 burst mode 的 packet (任何 shared media 的傳送方式)。在 packet 最前頭都會有 1010.. 的 preamble 做為 bit/symbol synchronization。緊接在後的是事先定義好的 frame sync word 用來做為確認 lock 到對的 packet 以及 word boundary。最後才是實際的 data。這個應用 focus 在 preamble 部份 (1010..) synchronization,也就是找出 (estimate) preamble 的相位和頻率,同步之後的 data。

image 

我們可以把問題重新定義如下:A [2pft + q]  如何找出 f (or b = 1/(2pf) or T=1/f) and q ?

這個問題同樣可以用 state-space model 來模擬,而得到最佳的 Kalman filter 解。有趣的是,Kalman filter 等價於一個 2nd order time variant PLL 架構。這和一般所用 2nd order time invariant PLL 非常近似。可參見另文 Kalman Filter and PLL。

應用三:TCP/IP 演算法和 Kalman Filter

2009年7月25日 星期六

作虛功?

多數人都不喜歡作虛功。但在古典力學中,虛功原理 (virtual work) 漂亮的洐生出 D'Alembert 原理,以及等價的最小作用原理。後者成為 Lagrangian mechanics 和 Hamiltonian mechanics 的基礎。可以說虛功原理簡單且容易了解,並不是真的作虛功。

什麼是虛功

Wiki 的定義如下。基本上是從牛頓力學第一定律出發導出虛功原理:

Consider a system of particles, i, in static equilibrium.  Based on Newton's first law, the total force on each particle is

\mathbf {F}_{i}^{(T)} = 0.

Summing the work exerted by the force on each particle that acts through an arbitrary virtual displacement, \delta \mathbf r_i, of the system leads to an expression for the virtual work that must be zero since the forces are zero.

\delta W = \sum_{i} \mathbf {F}_{i}^{(T)} \cdot \delta \mathbf r_i = 0.

At this point it should be noted that the original vector equation could be recovered by recognizing that the work expression must hold for arbitrary displacements. Separating the forces into applied forces, \mathbf F_i, and constraint forces, \mathbf C_i, yields

\delta W = \sum_{i} \mathbf {F}_{i} \cdot \delta \mathbf r_i + \sum_{i} \mathbf {C}_{i} \cdot \delta \mathbf r_i = 0.

If arbitrary virtual displacements are assumed to be in directions that are orthogonal to the constraint forces, the constraint forces do no work. Such displacements are said to be consistent with the constraints.  This leads to the formulation of the principle of virtual work for applied forces, which states that forces applied to a static system do no virtual work

\delta W = \sum_{i} \mathbf {F}_{i} \cdot \delta \mathbf r_i = 0.

虛功原理源起於靜力學。它的白話文:對於一個處於平衡 (equilibrium, 一般為靜止)的系統,其外力乘上虛位移 (virtual displacement)為零。虛位移並不是任意的方向,而必須根據 constraint 的限制。

 

 

 

 

Lancos 則有不同的看法,他把虛功原理視為一個假設。配合牛頓第二定律可以推廣至動力學的 D'Alembert 原理。而與最小作用原理是等價。

  

虛功原理的應用

第一個重要的應用就是最低勢能原理。如果所有的外力都是勢能 (potential or work function) 的 derivative  dV = -dU = F. dr = 0 , 虛功原理就變為靜力學的最低勢能原理 (minimal potential)。請參閱另一文章。

應用在 rigid body

 

應用在 rigid body

應用在 deformable body

應用在 incomperssible fluid

 

Pascal principle

differnce between Newtonian

minimal potential principle

difference between least action and virtue work

 

Virtual work does not depend on time (t), only a spacial function

Q: When virtue work equals to Newtonian law?

Q:

2009年7月19日 星期日

RF CMOS Tuner

superheterodyne receiver

一個 generic RF superheterodyne receiver可以分為 RF stage, IF stages (上圖有兩個 IF, 第二個 IF 是 baseband), 和 clocking subsystem。

RF receiver 要達成兩個目的: (I) 將天線接收微弱的RF信號 (例如 -100 dBm, 2.2uV, or 7dBuV) 放大;(II) 把不要的干擾信號濾掉。

(I) 主要是 focus on LNA 的設計,如何提供需要的 RF gain 和夠好的 Noise Figure, 讓 receiver total noise figure 控制的夠小。此外還必須有足夠的 dynamic range 來應付不同強弱的 receiver RF signal.

(II) 主要透過一連串的 filter 設計,濾掉不同頻帶的干擾信號。如下:

  Frequency Interference type Suppresion
Tracking Filter RF far (different band) < 10dB
Image Rejection Filter RF near (+/- N channel)* 30-50dB
IF Filter IF adjacent (+/-1) High Q, 40-50dB
Baseband channel selection filter BB adjacent (+/-1) 30-50dB*
Anti-alias Filter BB near (+/-K)* < 10dB

1: depending on IF frequency; 2: for ZIF or LIF; K depends on ADC oversampling frequency

 

Receiver Filtering

Superheterodyn receiver 有下面三種最常見的變形:(a) HIF (high IF); (b) LIF (low IF); and (c) ZIF (zero IF).  各自對 filter 有不同的要求。

ZIF: 上圖中省略 IF stage,RF 訊號直接 down convert 到 baseband。這是目前最普遍的 RF CMOS tuner。

優點是 RF 架構簡單,低功秏,並且不需要外接 SAW filter,可以達到很高的整合度。

缺點是需要許多的 calibration 來彌補 ZIF 架構上的問題;例如 DC offset calibration, IQ mismatch calibration, baseband filter bandwidth calibration。

receiver filter

第一級的 Band Select Filter 大略上 suppress out of band interference,避免。因為是 wideband filter,通常 suppression 效果有限,一般是在 10dB 以內。

LIF Frequency Interference type Suppresion
Tracking Filter RF far (different band) < 10dB
Image Rejection Filter RF near (+/- N channel)* 30-50dB
IF Filter IF adjacent (+/-1) High Q, 40-50dB
Baseband channel selection filter BB adjacent (+/-1) 30-50dB*
Anti-alias Filter BB near (+/-K)* < 10dB

LIF: 類似 LIF 架構。

例如

2009年7月5日 星期日

力耶?勢耶?孰優孰劣

孫子兵法:故善戰者,求之於勢。善戰人之勢,如轉圓石於千仞之山者,勢也。故上兵伐謀,其次伐交,其次伐兵,其下攻城。伐謀、伐交就是造勢、借勢。伐兵、攻城就是以力取勝。孫子兵法明顯認為 "勢" 優 "力" 劣。

古典力學的兩種 approach

一是大家都熟悉的牛頓力學 (Newtonian mechanics) 和三大定律 (實際上是假設):即 (i) F=0 的慣性定律, (ii) F=mA 運動定律,  和 (iii) 作用力和反作用力定律。其中最重要最關鍵的物理量就是力。這也是為什麼 mechanics 中文翻譯為 "力" 學。

另一類 approach 是基於最小作用原理 (least action principle),通常稱為 Lagrangian mechanics 或是 Hamiltonian mechanics。這裹只有一個假設,就是運動的物體會遵循最小的 action。什麼是 action(S),可以用下面公式定義:

\mathcal{S} = \int_{t_1}^{t_2}\; L(x,\dot{x})\,\mathrm{d}t 

其中 L = T - V。T (kinetic energy) 是動能。V (potential) 通常稱為位能,或是勢(能)。雖然 V 大多是位置的函數,但也可能是速度或是時間的函數,所以位能不是妥當的翻譯。

只要能找出 L (i.e. T-V),其它只是計算。T=1/2mv2 是 well-known.  主要的工作就是找出 V (勢)。

簡言之:牛頓力學 (Newtonian mechanics) 主要的工作就是找到所有的力。Largrangian or Hamiltonian mechanics 主要的工作就是找到勢。在多數的情況,找勢比找力簡單容易。意即"勢" 優 "力" 劣。

靜力學的例子

考慮一條均勻繩子或鏈子兩端固立,在重力場中自然垂下如下。

img025

從牛頓力學的靜力學觀點而言,每一小段鏈子的重力和上下兩端的張力的合力為零。雖然不難,但須費一番功夫。

在靜力場中,動能 T=0, S = (t2-t1) V.   因此在靜力學中,最小作用力原理簡化為最低勢能原理。解法如下:

img026

因為重力場函數是 -gy, 所以只要將每一小段鏈子質量乘上重力場即是每一小段的勢。最後再把所有小段的勢積分就得到全部的勢。

最小作用力原理的優點

(A) 不用找力,不論是明顯的外力 (重力),或是不明顯的內力 (張力);只需要找勢。勢通常只由外力造成,內力可以被忽略(除非有彈力位能)。這讓思考簡化很多,也容易讓電腦自動計算。

(B) 同時勢能是一純量,而力是一向量。這也讓計算簡化許多。

(C) 除此之外,最小作用原理是一普遍的原理。可以同樣適用在相對論力學,量子力學上。這是比牛頓的力學三定律更基本的原理。此外,結合廣義座標和微分幾何,可以得到更深的物理意義。請參閱參考資料。

參考資料: "The Variational Principles of Mechanics" by Lanczos

追蹤者