2009年10月23日 星期五

PC 部份常用軟體

本文整理我的 PC 內常用軟體及設定

I. Internet 及網路和雲端軟體

1. Firefox 和 add-on: xmark, IE tab, Wikidiction

2. UltraVNC 取代 Microsoft remote desktop (家用 XP, Windows 7 不支援 remote desktop)。不過 UltraVNC 似乎容易掛掉,網路上有人建議用 WinVNC 或 RealVNC。VNC 的好處是可以用在 linux。

3. Syncplicity 及 Dropbox

4. Evernote 和 Microsoft OneNote

 

G. Google 軟體及 service

1. Google desktop

 

V. 防毒軟體

1. Avira Antivir (小紅傘)

 

T. 工具類軟體

1. Total commander: 支援 unicode,非常好用。Linux 上只有 Konqueror 可用。

2. Free commander: 類似 total commander, 免費且容易使用。不支援 unicode, 會有日文及簡體亂碼。

3. Foxit: PDF reader,比 Adobe 小且快速

4. 7zip: 免費且強大壓縮軟體

 

M. 多媒體

1. Picasa: 最棒的相片 database 軟體

2. GOM player: 最佳的 video player 軟體。取代 Microsoft Media Player, KMplayer.  類似軟體尚有 VLC,MPlayer, 和 KMplayer。說明和下載。

3. iTune: CD ripper 以及 audio database

4. Imgburner: 類似 Nero, 免費且快速,用於燒 DVD 光碟和擷取 DVD -> ISO 軟體。

5. DVDFab HD Decrypter: 擷取 DVD -> ISO 軟體, 同時破除保護。

6. DVD Shrink: 類似 DVDFab HD Decrypter。

7. Daemon Tools: 虛擬光碟機軟體,用於 player ISO 檔案。

 

P. P2P 軟體

1. uTorrent: 小且常用

 

L. Linux 軟體

1. cygwin (1.7.x): gnu+windows+cygnus 簡單的說就是在 windows 上架構 linux,對於習慣在 linux 上工作的人非常方便。

幾點需要注意:change default installation to include: openssh (in Network option), tcsh (in Shell option), xwindows (in X option).

2. VMware/Virtualbox: 除了 cygwin 以外,另外的選擇是 VMware 或 Virtulbox,虛擬的機器。VMware 是商用軟體。Virtualbox 是免費軟體。

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

追蹤者