我想講講自己的成長歷程,主要是技術能力是怎么提升的。先簡單介紹一下。本人一直從事audio dac/adc的,也就是sigma delta dac/adc,在audio中,dac遠比adc重要,所以重點還是在dac上。目前dac的水平是做到了100多個db的動態范圍,關鍵在于功耗很低面積很小,是在公司原來70多個db的基礎上,不僅將性能做到了100多個db,還將功耗面積都大大減少了,性能功耗面積全面超出了國外知名的IP供應商。
你買mp3之類的東西,你說是播放重要還是錄音重要呢?所以dac比adc重要。
我不是什么大牛,只不過有點心得感悟,拿出來分享而已。寫得不好,見笑了。
在學校的時候我一直想做個程序設計師,自己摸索編程(編稱對一個模擬電路設計工程師來說是很重要的,后面會提到),畢業后卻成了模擬電路設計師。實際的我的專業不是計算機也不是微電子。剛進公司時實際上只懂得一點點帶隙基準的設計,實際上連ac/tran仿真都沒有弄明白,還不知道電路一定要經過tran仿真,密勒補償也不知道是什么意思。現在回想起來笑死人了。剛分給項目組時,主管在忙項目,剛好項目遇到瓶頸,他又不喜歡帶人,覺得我又用不上,干脆就分給我一個課題:研究一下classd吧,現在挺火的,研究好了你就是專家了,公司沒有人研究過。于是我就開始了長達半年多的放羊式的工作生涯,大部分的基礎都是在這個時候建立的。在這些時間內我干嗎呢?看看拉扎維,gray的書,發現跟classd也沒什么關系阿,在網上找paper,看了將近100多篇,還是沒有頭緒,畢竟paper中的垃圾太多了,找出真正好的paper不容易。后來終于找到TI的一篇classd論文,講得很好,于是試著做電路,并且開始仿真。后面我將講一些自己感覺對學習模擬電路真正有用的方法。
說的沒錯,機遇還是很重要的,重要的是自己善于把握機遇。人生就這樣,什么時間段就做什么事情,如果把握不住,以后就再沒有這么好的時光了,珍惜現在非常重要。到目前為止,我工作3年多了。IP供應商是ChipIdea,現在被mips收購了。classd幾年前還是挺火的,現在就成了白菜了。不少人有誤解,說classD的性能比不上ClassAB,更比不上ClassA,實際上是不對的。ClassD照樣可以做到非常好,好好設計的話,96dB動態范圍,-80dB以上的性能是很容易得到的,ClassAB反而不容易做好諧波失真。ADI有個AD1991,性能很高,遠比一般的ClassAB高,但是我看其架構一般,有更好的架構可以做到同樣的性能,但是功耗更低,很重要的是,開發周期可以更短。關鍵在于架構。其實所有的電路都這樣,關鍵在于架構。做電路有4點是非常重要的,
1、性能;
2、功耗;
3、面積;
4、開發周期
決定這4個范圍的折衷關系的關鍵就是架構。
1. 作模擬的一定要基礎,所謂的基礎!用來分析模擬電路的通用工具:信號與系統和電路理論,這兩本本科教材恰恰是做模擬的基礎
2. 深刻理解基本的模擬電路模塊,比如current mirror,2 stage miller OTA,folded-cascode OTA等。不是說看了Allen的書,懂了其中的公式,而是能琢磨出書中不曾提過的方面,即使書中的東西,也能有自己的理解甚至修正。這個過程既是一個需要理論嚴格推倒的過程,又是一個需要培養直覺的過程;既是一個看書學習別人的過程,又是一個獨立思考,形成自己設計方法的過程。畢竟,真正的做出產品有所創新,教科書遠遠是不夠的。
3. 在2的基礎上形成對于模擬電路設計的一種直覺以及經驗值,這是實際設計中的最有用,比如一個current mirror Vdsat取多少,面積取多大;另外對于各種電路的優劣有了更加深刻認識,知道對于所需要的性能,能夠選取最簡單可靠的結構來實現(這一點是很重要的)。
4. 在流片基礎上積累工程經驗,知道模擬電路在實際過程還有哪些仿真無法預測的東西,這往往不是一個電路的問題,而是可能各個模塊之間配合之類的。
5. 針對流片中的問題進一步加深了對電路的理解,并且在此基礎上能夠有所創新。在實際中發現很多做模擬的,論文也許看了不少,書也看過不少,可是拿他們的電路做一下DC,發現很多current mirror Vdsat只有幾十mV,一個差分對工作狀態都十分不合理,比如輸入差分對vdsat,active load Vdsat取的都不合理,比如輸出級館子的L。
還有很多人做電路是拿大炮打蚊子,很普通的要求,硬是做的很復雜的結構,不計面積。
開始看classd,我是怎么都看不懂,搞不懂原理。方波能表示諧波失真很低的正弦波?開始用開環結構,即使用最理想的PWM產生器,也很難產生諧波失真很低的波形,何況模擬電路有那么多非理想性呢?當時還看到文獻說要做死區時間。我想這怎么可能呢?那不是就制造非線性嗎?但是沒有死區時間的話,功耗很大,EMI問題也很難解決。真是太矛盾了,簡直就是沒有辦法折中。大家知道,開關電路仿真速度是很慢的,半個小時才能夠仿真一個周期,精度還不是很高,所以一有什么想法,我都需要花至少半個小時以上的時間去驗證。實際上,使用的時間遠比半個小時要長,因為hspice經常碰到收斂性問題,而且經常是仿真到一半的時候不收斂!前功盡棄!痛苦了很長時間。后來發現spectre的收斂性比較好,以后就一直用spectre了。但是還是時常有收斂性的問題。為了這個問題,我找了一本專門將spectre仿真的書(是開發spectreRF的那個牛人寫的),研究spectre是如何計算,做電路的時候如何幫助仿真器收斂,建模的時候要考慮那些不收斂因素。這是我做設計的風格,遇到不懂的問題,總是去找專業的書或者文獻,認認真真研究,即使花很多時間也要去做,重要的是一定要弄懂!在那之后我就很少碰到收斂性問題了,即使碰到了也能夠很快解決。classD的矛盾問題當時沒有辦法解決,最后我想,一定是我的思路錯了。這個時候的我,還是從時域去思考問題的。不過在研究文獻的時候,我找到了方向:
1、要從頻域解決問題;
2、ClassD的重點是noise shaping;
于是開始學習信號與系統。當時感覺,很多人都覺得信號于系統很重要,但是真正花時間去學習的人并不多,因為真正用信號的概念去解決問題的人并不多。我看書的習慣是通讀一遍,一般使用3天到1個星期的時間,然后就結合自己的實際工作開始研究相關章節。但是信號與系統太理論化了,還是不知道怎么應用到實際中。我想ClassD怎么說也算一個模擬濾波器吧,又研究起了濾波器的書,其間也是需要用拉普拉斯算子推導傳輸函數的。在推導的過程中,慢慢建立起信號與系統的概念。但是對于ClassD的noise shaping,我還是不懂。ClassD的重點是noise shaping,這點我是從sigma delta調制器中了解到的。sigma delta是7 C4 D 相當成熟的理論,現在幾乎很少人去研究它了。我想,干嘛不先弄懂sigma delta再做ClassD呢?于是我找這方面的資料。恰好我的一位同事非常喜歡搜集各種模擬電路的書籍,他給我推薦了一本ADI牛人寫的《Delta- Sigma Data Converters - Theory,Designand Simulation》,我現在把這本書稱為sigma delta bible,我的大部分sigma delta的知識都是從這本書中得來的。同樣還有一本很重要的書是:《Understanding Delta Sigma Data Converters》_這本書也是ADI的牛人寫的。如果有人問我,做模擬電路從做什么開始最好?我會說從sigma delta adc/dac做起最好,因為它會告訴你什么是信號,什么是傳輸函數,什么是建模,什么是噪聲等等模擬電路中最核心的內容。如果問學習sigma delta要看什么書的話,我就推薦這兩本書。我之所以在這個領域能做出一些東西來,這兩本書的作用是最大的!
但是不是說我學完這兩本書就什么都會了。還差太遠了,因為吸收知識是不容易的。而且,說句實話,做電路可不是學教科書,書上講得都是對的。現實情況是我們經常不知道哪些是對的,哪些是錯的,paper滿天下,但是錯誤或者含糊不清的東西也滿天下。當我們遇到沒有資料講過的問題時,甚至不相信自己的推導是否正確。很多人做完電路后也經常疑惑,自己做的電路真的可以工作嗎?性能能夠達到要求嗎?有bug嗎?有什么地方沒有考慮到嗎?
做模擬電路和做數字電路或者軟件最大的不同并不是兩者之間的難度的差距,而且模擬面對太多不確定的問題,軟件可以運行,FPGA可以跑邏輯,但是模擬電路沒有,只有比蝸牛還慢的仿真軟件,而且還沒有辦法模擬真實的情況。在回片之前很難有100%的把握說自己是對的!做模擬電路的信心實際上來自于你自己怎樣去判斷哪些仿真結果是可信的,哪些 仿真結果是不可信的。真正的提高來自于對已有芯片的debug。當時公司剛好有一款芯片正在debug,出了了不少問題,其中一個問題就是sigma delta DAC的問題。我在開會和其他情況下,我知道了這個問題的現象,那就是輸出居然有三角波!這個嚴重的問題過了很長時間都沒有能夠解決。當時我拿到了設計文檔,對 里面的結構進行matlab建模,當然還是學習階段。說到matlab建模,我得重點說一下,matlab是非常重要的工具,做sigma delta的優點是,你必須掌握這個重要的工具,否則是很難進步的。前面說過,我原來是想當程序員的,寫過一些代碼,這個時候,我寫代碼的經驗馬上幫了我大忙,我很快就進入了狀態,對matlab非常有感覺,于是我就用matlab 對sigma delta系統開始進行建模了。這里我又要介紹一本書了,那就是《數字信號處理實踐方法》,這本書我花了一個黃金周看完,一個黃金周除了看書吃飯睡覺幾乎不做別的事情,黃金假期就這樣給我毀了,但是這是我最不后悔的一個黃金周,因為這事我學習信號與系統的關鍵轉折點。這本書深入淺出,很多我原來看信號與系統沒有看懂的內容都在這本書中看懂了。而且與matlab的結合,使得本書特別適合sigma delta建模的指導書。這本書講數字濾波器的,與其說數字濾波器,不如說是離散時間濾波器,所謂ADC/DAC不就是離散時間濾波器嗎? 而且我連數字濾波器的算法也研究了,為我以后接下整個codec的設計打下了基礎。這個領域是比較奇怪的,做模擬電路的人覺得這個是數字電路的領域,做數 字電路的人又忙于做實現,沒有時間去研究,就成了真空地帶。只有我不忙項目,想學什么就學什么,自己又有興趣,剛好自己又在學習數字信號處理。所以就研究了起來。有matlab作為實踐工具,學習還是很快的。當時就一邊寫代碼,一邊優化算法去了。《Delta-Sigma Data Converters - Theory, Design and Simulation》這本書我也一直在看,直到有一天,我在書中看到了這個現象的描述,而且規律和測試結果相似,于是我對這個現象用matlab進行了建模,建模結果表明,三角波是可以建模出來!而且其它現象也類似!于是,我把建模結構給領導演示了,我說問題應該應該是這個,但是我也不知道電路是在哪里出了問題,給我時間,我相信可以把問題找出來!
做事情重要的不是你本身有多厲害,而是你有多投入。
就自己的經驗來說,收獲最多的總是投入最大的時候,而且投入的多少和得到的多少是相差很多的。假如投入80%的話,收益可能是20%,但是如果再加20% 的投入,你卻可能得到另外的80%的收益。所謂行百里者半于九十也就是這樣的道理。
實際上問題的現象和書中所講是有區別的,甚至有矛盾的地方。在建模中我對發生問題的可能性進行了研究,對問題發生的可能行也進行了猜測,同時對電路進行了仿真。為了做仿真,我又學習了VerilogA語言,進行了簡單建模,同時研究dft算法,研究用什么樣的方法可以提高仿真精度,同時減少仿真時間。 sigma delta的仿真是非常緩慢的,經常是一天才能夠仿真一個case。在仿真的時候,我幾乎絕望了,因為仿真結果表明,設計沒有問題,找不到任何問題的跡象。我不斷變換條件去仿真,同時也在不斷建模。在建模的時候,我發現,這個問題在某某電路之前不可能出現這個問題,在某某電路之后也不可能出現這個問題! 推理和建模都說明了這個問題,但是拿電路一仿真,發現又沒有這個問題!無法重現。當時的心情就是:絕望!問題看起來近在咫尺又遠在天邊,看到了希望,又好像沒有希望!就這樣我仿真了兩個多月的時間,幾乎要放棄了。在不斷的仿真中,終于有一次,我把這個問題仿真出來了,但是表現和測試結果又有不一致的地方。當時我的判斷是,問題并沒有找出來,我不過是找到了另外一個沒有那么嚴重的問題而已。debug過程又進入了絕望的階段。
當時有新的項目要開始做了,里面剛好有這個模塊,項目組內分模塊的時候,大家都不愿意選這個模塊,不過我倒是很愿意。我的思路是一定要把問題找到,才開始做電路。實際上是很冒風險的,項目是有進度要求的,但是debug這種事情是沒有辦法控制進度的,很容易把項目變得不可控。但是問題不找出來怎么能夠保證下一版就沒有問題呢?難道問題會憑空消失嗎?我決定把時間繼續投入到debug中,堅持到最后時刻,才開始這個模塊的設計。正好領導也重視這個問題,所以才能夠繼續堅持下去。在某天看波形的時候,我看到問題了!波形有不對的地方,我對這個問題進行抽象,從信號與系統的角度來看,應該跟測試結果吻合。我建立了新的模型,建模仿真表明,跟測試結果的表現是一致的,對電路做了調整,在做spice仿真,發現問題真的不見了!最讓我激動的是:我做到了理論/建模/測試/仿真的一致性!讓我100%的確定,我找到了問題的根源,唯一擔心的是,不知道是否還有未發現的問題。畢竟模擬電路和數字電路不同,數字電路對就是 對,錯就是錯,模擬電路卻是模糊的,仿真經常還是會出現盲點的。不過幸運的是,電路修改后就沒有問題了。讓我感到驚訝的是,實際上問題出現的地方跟原來一大早的推論是一致的,在那一點之前的通路不可能出現這個問題,在后面的通路也不可能出現這個問題。問題就在那個點上。這個困擾人那么久的問題,說白了其實是小小的錯誤,修復這個錯誤,我所做到的不過是修改了一根線而已。但是收獲很多,遠比一根線多多了!做sigma delta最重要的是噪聲,就是在那段時間,我獲取了不少數據,利用這些數據,并且修改仿真方法,最終做到了仿真與測試的一致,這對噪聲計算的信心增加了很多。有句話說:lowpowermeans understand more about noise,這句話是非常正確的,懂得了噪聲,你就知道怎么去簡化電路,降低非關鍵電路的功耗,并且恰當地規劃關鍵電路的功耗。對電路也能夠提出很多創新的地方出來,包括結構的創新。debug完成之后,就開始做項目中的DAC了,我馬上對結構進行了全面的修改,減少了沒有必要的噪聲源,同時合理規劃噪聲,降低了功耗。那個時候時間已經很緊張了,但是完成這個電路的速度很快,最后還是趕上了項目進度,tapeout出去了。不過項目也因為其它原因夭折了。一般人第一次都是不怎么敢創新的,都希望求穩,但是我當時的想法卻是,創新才是最穩妥的,對自己有足夠的信心,牛氣十足。現在回過來看當時的情形,自己也感覺很吃驚,明明是第一次做電路,卻好像自己是一個專家一樣,幾乎沒有投片的經驗,卻信誓旦旦地說自己的電路沒有問題,一定可以達到很高的水平。其實除了自己,其他人都不怎么相信,特別是有好幾年工作經驗的老員工。不過也不怪他們,如果我處于他們的位置,我的想法恐怕和也他們一樣。
沒有想到帖子居然給加入精華了。我做事情比較固執,很多東西我都想研究清楚,不喜歡似懂非懂的狀態,所以會花很多時間去學習。這是看起來比較慢的學習方法,卻讓我學到不少別人沒有學到的知識。上面提到的項目完成后,我又回頭去做了一下classd項目,花了一個星期的時間定義了top結構,對信號傳遞函數,噪聲傳遞函數都進行了計算,并搭建了veriloga模型,在這個模型中研究了各種非理想性,同時也加入了擴頻算法。并且仿真驗證(都是建模的)。在系統中就保證了電路的非理想性對電路性能的影響是微乎其微的。通過這種方法,把電路設計的難點轉移到系統函數中,而非模擬電路設計中。和將電路難點轉移到數字電路中是相同的道理。做完之后,我發現classd是非常簡單的東西,而且肯定可以做到比較低的功耗,最后,以至于自己連做classd電路的興趣都沒有了,因為在我眼中,這是一個已經充分論證的論題,沒有必要再投片去驗證了。后來這個電路就交給其他同事去做了,因為我又有了新的項目。最后這個項目做出來,性能非常好,相比之下,TI的classd的性能只能說是非常一般。總結起來,classd技術與我原來所想的其實是一樣的,利用了噪音整形技術,但是比sigma delta ADC/DAC更簡單,因為沒有真正意義的數模轉換部分,電路實現是很簡單的。
原帖地址:http://bbs.eetop.cn/thread-141642-1-1.html
整理后的地址:http://bbs.eetop.cn/thread-313574-1-1.html
關注EETOP,后臺輸入 百寶箱查看推薦文章:
-
模擬數字產品開發流程
-
SPICE簡史
-
干貨分享:測量自己的心電圖(從理論到電路)
-
好的模擬IC工程師應該具有的素養
-
模擬IC設計領域的經典之作
-
是否需要模擬后仿真?
-
極點零點之我見
-
六本經典模擬IC書籍精彩評論及總結
-
模擬設計的100條圣經
-
模擬電路學習入門的建議
-
模擬IC流片經驗分享
-
模擬IC年薪幾十萬師兄的模電學習經歷
-
想成為一名模擬ic設計師在本科期間應該做哪些準備?
-
模擬電路設計的九重進階
-
模擬集成電路設計第二講:傳輸函數,零極點的形成及時域響應
-
我還要不要繼續學習模擬設計--一個跨行碩士的疑問
-
如何學習模擬IC設計
-
模擬大牛談模擬工程師身價及發展方向
-
模擬電路應知應會200問
-
模擬后仿真的幾種做法以及優缺點
-
關于模擬地與數字地很意思的解釋
-
干貨! 深入淺出射頻模擬電路設計經典講義
-
伏模之路--模擬電路學習感悟
-
模擬IC設計真的很難學嗎?
-
模擬IC正向設計流程總結
-
模擬學習感悟與總結
-
模擬濾波設計講義
-
拉扎維模擬CMOS集成電路設計講義Part3
-
拉扎維模擬CMOS集成電路設計講義Part2
-
模擬學習感悟與總結
-
電子工程師
+關注
關注
252文章
767瀏覽量
95604 -
模擬技術
+關注
關注
17文章
469瀏覽量
39712
原文標題:模擬IC設計-我的成長經歷
文章出處:【微信號:eetop-1,微信公眾號:EETOP】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論