2019年11月11日 星期一

【教學】如何決定R-String DAC電阻大小?

這邊分享一點點經驗,大家一起來討論,有錯歡迎糾正!
R-String DAC的阻值要取多少確實有點麻煩。
DAC中unit cell的阻值基本上是三個東西在做取捨

1. Settling time
2. Mismatch
3. DNL



這邊我們先以"Pure DAC"來討論,因此先不討論電阻如何影響DNL

(Subrange R-DAC就需要考慮)

這邊應該滿多人有疑問,奇怪不需要考慮電阻貢獻的NOISE嗎?

可以參考Razavi第七章,有RC電路的輸出功率雜訊推導,這邊我就不詳細描述。

最後推導結果為KT/C,Noise跟電阻無關,只跟電阻串輸出電容大小有關!

用心的讀者,如果真的去模擬RC電路的輸出雜訊會發現,我明明電阻變大輸出雜訊

也會跟著變大,難道書上資訊有錯?

嘿嘿..這邊簡單來說呢~書上積分頻寬是無限大!如果你模擬NOISE積分範圍太小,你

就會認為電阻會影響輸出雜訊,試著將積分頻寬拉大吧!

(可是如果"你考慮的Noise頻寬範圍很窄",就需要考慮電阻大小)


既然我們先不討論Noise和DNL,那只剩下兩個東西在做取捨

1. Settling time
2. Mismatch

1.Settling time我們都知道Vo=Vin(1-e^(-t/𝜏))

假設輸出誤差我們想要<0.5*LSB

因此Vin-Vin*(1-e^(-t/𝜏))<0.5*LSB

我們可以得到T=A*𝜏

𝜏=R*C,假設C和T已知,可以求得R的範圍!

(注意:求得的R為等效阻抗,為Middle Code看進去的阻抗,才是電阻值最大的,需再

轉換成Ru的電阻值,以後有機會在說明)


2.知道阻值大小之後,我們還不知道W*L要如何決定

(由於這邊我有些字體打不上來,只好先打在PPT,再複製貼上了ORZ(如圖1所示)...)


藉由已知線性度決定電阻面積(Determine the resistance area by known linearity)
圖1:計算Unit cell面積大小


這邊<1LSB為規格,N為Bit數,Ac為PDK給出的參數,如圖2所示。

當然如果你架構有變形Ex:Subrange DAC,則上面式子還要微微修改!


由mismatch決定電阻面積大小(The size of the resistor is determined by mismatch)
圖2:PDK Mismatch Model


到這邊已經知道單純的R-DAC如何決定電阻大小和面積,千萬千萬不要一味的嘗試

錯誤法一直跑Monte-Carlo重複決定W*L需要多大,這是非常花時間和伺服器資源

的。

佑哥我自己習慣做法步驟

1.先手算出需要的面積大小(W*L)

2.代進DAC Behavior Matlab Model模擬確認INL結果(見圖3)

3.實際進到電路設計階段


Monte-Carlo Matlab Simulation
圖3:DAC Behavior Matlab Monte-Carlo模擬結果


有些地方表達不是很好,目前還在學習如何更清楚表達。

如果有問題或者有錯誤的地方,歡迎大家提出來,互相切磋學習進步!

沒有留言:

張貼留言