有一段時(shí)間沒(méi)說(shuō)過(guò)模擬芯片了,今天我們就聊一聊模擬芯片,特別是模數(shù)轉(zhuǎn)換芯片ADC。
1. 什么是ADC
從本質(zhì)上來(lái)看,模擬芯片和數(shù)字芯片最主要的區(qū)別,就是處理信號(hào)的不同。顧名思義,模擬芯片處理的是模擬信號(hào),而數(shù)字芯片處理的是數(shù)字信號(hào)。模擬信號(hào)是隨著時(shí)間連續(xù)變化的,比如溫度、濕度、聲音、速度等等。它們最大的特點(diǎn)是,在一定的時(shí)間范圍內(nèi)有無(wú)數(shù)個(gè)不同的取值。
相比之下,數(shù)字信號(hào)就是一堆不連續(xù)的數(shù)值,比如計(jì)算機(jī)里用的二進(jìn)制0101。由于晶體管有開(kāi)和關(guān)兩種狀態(tài),所以可以很自然的表示0和1 兩種數(shù)值。晶體管沒(méi)辦法做到類似于10%開(kāi)、或者31.5%關(guān)這樣的狀態(tài),所以它是一個(gè)數(shù)字信號(hào)。
為了連接模擬和數(shù)字這兩個(gè)相互獨(dú)立的領(lǐng)域,就需要使用兩種芯片作為橋梁,一個(gè)是模數(shù)轉(zhuǎn)換芯片ADC、另外一個(gè)是數(shù)模轉(zhuǎn)換芯片DAC。
顧名思義,模數(shù)轉(zhuǎn)換芯片ADC就是用來(lái)把模擬信號(hào)轉(zhuǎn)換成數(shù)字信號(hào),而模數(shù)轉(zhuǎn)換DAC就是正好反過(guò)來(lái),把數(shù)字信號(hào)轉(zhuǎn)換成模擬信號(hào)。不過(guò)在實(shí)際應(yīng)用里,ADC的占比更高。有數(shù)據(jù)顯示,在模擬數(shù)字相互轉(zhuǎn)換的應(yīng)用里,有80%是ADC。特別是在數(shù)字化社會(huì),幾乎所有東西都被數(shù)字化了,方便后續(xù)的處理、傳輸和存儲(chǔ)。
很多朋友可能覺(jué)得,不就是模擬信號(hào)轉(zhuǎn)成數(shù)字信號(hào)嘛,聽(tīng)起來(lái)好像沒(méi)什么難度。實(shí)際上,ADC芯片是模擬芯片中難度最高的,甚至可能沒(méi)有之一。在半導(dǎo)體和集成電路領(lǐng)域的頂級(jí)會(huì)議ISSCC、也就是國(guó)際固態(tài)電路會(huì)議上,就有相當(dāng)一部分文章是介紹ADC設(shè)計(jì)。
2. 如何設(shè)計(jì)和優(yōu)化ADC
那么,究竟模數(shù)轉(zhuǎn)換ADC是怎么實(shí)現(xiàn)的呢?簡(jiǎn)單來(lái)說(shuō)需要采樣(Sampling)、量化(Quantization)、編碼(Encoding)這么幾個(gè)過(guò)程。也就是說(shuō),我們首先需要對(duì)這個(gè)信號(hào)進(jìn)行采樣,每隔一段時(shí)間記錄一下信號(hào)當(dāng)時(shí)的電壓值。采集到的數(shù)值會(huì)經(jīng)過(guò)量化,轉(zhuǎn)換成相應(yīng)的數(shù)字信號(hào)值,最后再通過(guò)某種編碼表示出來(lái),比如補(bǔ)碼、格雷碼等等。
ADC有很多個(gè)參數(shù)指標(biāo),其中有兩個(gè)常見(jiàn)的參數(shù),一個(gè)是ADC的采樣速率(sampling rate)或者叫數(shù)據(jù)速率(data rate),另一個(gè)是分辨率(resolution)。采樣速率很好理解,就是單位時(shí)間內(nèi)能做多少次采樣,采樣點(diǎn)數(shù)越多,就越能還原初始信號(hào)的樣子。
分辨率被定義為輸入信號(hào)值的最小變化,這個(gè)最小數(shù)值變化會(huì)改變ADC數(shù)字輸出值的一個(gè)碼值。在ADC有同樣輸入范圍的情況下,分辨率越高,一個(gè)碼值所代表的最小變化就越小。如果我們的ADC有3位,那么就可以把整個(gè)電壓范圍分成2^3=8份。如果電壓變化范圍是0-10V,那么每份就代表1.25V。也就是說(shuō),如果電壓的變化小于這個(gè)值,那么ADC就沒(méi)辦法捕捉到這個(gè)細(xì)小的變化。需要注意的重要一點(diǎn)是,ADC的分辨率(resolution)和ADC的精度(accuracy)是兩個(gè)完全不同的概念。
ADC的具體實(shí)現(xiàn)形式有很多種,常見(jiàn)的包括逐次逼近型ADC(SAR),還有一種叫Delta-Sigma ADC。比如常見(jiàn)的逐次逼近型ADC在電路里主要集成了一個(gè)電壓比較器、一個(gè)寄存器、還有一個(gè)DAC,以及一些控制電路。它的本質(zhì)就是用二分查找來(lái)確定模擬電壓對(duì)應(yīng)的數(shù)字信號(hào)。也就是一開(kāi)始先拿輸入電壓和參考電壓的一半比較,如果輸入電壓更大,那就再和參考電壓的四分之三再比較。相反,如果輸入電壓更小,那就在和參考電壓的四分之一做比較。以此類推,直到比較完成。
3. ADC驅(qū)動(dòng)設(shè)計(jì)
然而,即使是最基礎(chǔ)的ADC,它在實(shí)際的工程應(yīng)用中也并不簡(jiǎn)單,因此配套的資源支持也就顯得尤為重要。比如,ADC往往不能獨(dú)立工作,它們需要配合其他的外部電路才能發(fā)揮作用,這里面最重要的外部電路之一就是驅(qū)動(dòng)電路。
前面說(shuō)過(guò),ADC需要對(duì)輸入信號(hào)進(jìn)行采樣、量化和編碼,并且輸出N位的數(shù)字信號(hào),這些操作通常都在數(shù)字時(shí)鐘的一個(gè)周期里完成。這就意味著,在采樣的過(guò)程里,輸入信號(hào)應(yīng)該保持不變。這有點(diǎn)類似于數(shù)字信號(hào)里時(shí)鐘的保持時(shí)間。
在ADC內(nèi)部,它的輸入端其實(shí)包含開(kāi)關(guān)和電容陣列,通常等效成一個(gè)開(kāi)關(guān)和一個(gè)采樣電容。當(dāng)開(kāi)關(guān)閉合的時(shí)候,電容充電;等充好電之后,開(kāi)關(guān)斷開(kāi),,比較器和DAC相互配合在這個(gè)時(shí)候完成ADC的采樣量化的操作。
這樣問(wèn)題就來(lái)了,首先,如果對(duì)ADC的性能要求比較高,比如需要它的采樣頻率很高,那么把ADC內(nèi)部這個(gè)電容進(jìn)行充電的時(shí)間就會(huì)很短。打個(gè)比方,如果采樣頻率是每秒100萬(wàn)次采樣,那么充電時(shí)間、即捕獲時(shí)間(TACQ)可能只有300納秒。如果輸入端不加任何電路作為驅(qū)動(dòng),那么基本就無(wú)法滿足這么高采樣頻率的需求。所以針對(duì)這個(gè)問(wèn)題,我們通常會(huì)在ADC前端加上一個(gè)運(yùn)算放大器作為驅(qū)動(dòng),這樣就可以在較短的采樣時(shí)間之內(nèi)提供足夠的電荷給采樣電容。
這樣還沒(méi)完,雖然我們可以直接把運(yùn)放和ADC直接連接起來(lái),但我們?cè)趯?shí)際應(yīng)用里很少這么設(shè)計(jì)。因?yàn)樵诓蓸宇l率很大的時(shí)候,直接連運(yùn)放的話就需要很高帶寬的運(yùn)放。另外從仿真里也可以看到,在開(kāi)關(guān)切換的時(shí)候,一開(kāi)始的轉(zhuǎn)換可能會(huì)產(chǎn)生較大的瞬時(shí)電流,而且驅(qū)動(dòng)電路需要能夠在較短的ADC捕獲時(shí)間(TACQ)之內(nèi)對(duì)ADC內(nèi)部的采樣電容完成充電。
為了滿足這些條件,并且避免出現(xiàn)很大的瞬時(shí)電流,我們可以在ADC之前加入一個(gè)RC電路。大學(xué)電路里我們學(xué)過(guò),RC電路是用來(lái)做濾波的,但這里它的主要作用就是利用這個(gè)額外的電容,實(shí)現(xiàn)更加快速的充電。運(yùn)放可以把這個(gè)電容充滿,然后等ADC內(nèi)部開(kāi)關(guān)閉合的時(shí)候,通過(guò)這個(gè)電容給ADC內(nèi)部的電容充電。當(dāng)然除了這個(gè)電容之外,一部分的電荷也來(lái)自前端的運(yùn)放。這個(gè)RC電路也叫做charge bucket filter電路,它可以有效的降低對(duì)前端運(yùn)放帶寬的需求,所以我們選擇較低帶寬、更低成本的普通運(yùn)放就可以滿足設(shè)計(jì)需要。同時(shí)它也消除掉了一開(kāi)始的瞬時(shí)電流,也極大的提升了電路的穩(wěn)定性。
問(wèn)題又來(lái)了,如何確定這些放大器和RC電路的具體大小和指標(biāo)呢?這里有兩種方法,一個(gè)就是通過(guò)理論公式進(jìn)行推導(dǎo),這個(gè)在網(wǎng)上有非常詳細(xì)的推導(dǎo)過(guò)程,根據(jù)ADC的指標(biāo),比如分辨率、采樣速率、參考電壓等等,就可以一步一步推導(dǎo)出所需RC電路和運(yùn)放的參數(shù)數(shù)據(jù)。看了這些東西,我真的又不由得想起當(dāng)年學(xué)模電的時(shí)候被它支配的恐懼……
當(dāng)然還有另外一種方法,那就是通過(guò)現(xiàn)成的設(shè)計(jì)工具和仿真工具來(lái)進(jìn)行仿真計(jì)算。比如德州儀器TI就提供了一系列相關(guān)的工具來(lái)簡(jiǎn)化上面所有的計(jì)算過(guò)程。一開(kāi)始可以根據(jù)ADC的性能指標(biāo)選擇對(duì)應(yīng)的器件,然后使用ADC SAR Drive工具,來(lái)直接計(jì)算電阻電容的值,并且得到相應(yīng)的性能指標(biāo)。
為了進(jìn)一步簡(jiǎn)化設(shè)計(jì)流程,TI不僅提供設(shè)計(jì)工具,還有一整套完整的生態(tài)把這些工具整合起來(lái)。
拿SAR驅(qū)動(dòng)設(shè)計(jì)舉例,TI就提供了很多經(jīng)典的ADC電路設(shè)計(jì)方案, 比如這個(gè)“高電壓電池監(jiān)控器電路”就一步一步的教我們從設(shè)計(jì)說(shuō)明目標(biāo),到如何選擇合適的器件、如何建模仿真,并得到理想的性能指標(biāo)。并且在設(shè)計(jì)的過(guò)程中,可以隨時(shí)回顧 “TI 高精度實(shí)驗(yàn)室”視頻系列作為參考。
具體到這個(gè)電路,我們可以隨時(shí)查看”高精度實(shí)驗(yàn)室”里介紹的選擇電荷桶電路(charge bucket filter)的方法,并為這個(gè)例子里的放大器、增益設(shè)置和數(shù)據(jù)轉(zhuǎn)換器提供良好的趨穩(wěn)和交流性能。我們還可以直接下載這個(gè)電路的設(shè)計(jì)文件,按照需求來(lái)對(duì)設(shè)計(jì)進(jìn)行改修改。
4. PADC設(shè)計(jì)中的噪聲
之前的文章里介紹過(guò),模擬芯片的一個(gè)最大的問(wèn)題就是容易受到干擾。事實(shí)上,模擬信號(hào)能夠受到干擾的地方太多了,從之前說(shuō)過(guò)的電磁輻射EMI、到電路板的設(shè)計(jì)缺陷、電源電壓的變化,再到周圍環(huán)境的各種變化,其實(shí)都有可能會(huì)對(duì)模擬芯片和模擬電路造成干擾,從而造成誤差。
對(duì)于ADC來(lái)說(shuō),除了這些外在的因素和干擾之外,它自己本身也會(huì)引入誤差,這個(gè)通常叫做量化誤差。也就是說(shuō),當(dāng)我們?cè)诎岩粋€(gè)連續(xù)變化的模擬量,量化成離散變化的數(shù)字量的時(shí)候,必然會(huì)引入這種誤差。不管我們劃分的粒度有多細(xì),分的份有多小,這種量化誤差都會(huì)存在。
先說(shuō)理論,對(duì)于一個(gè)N位的ADC,每一位代表的電壓范圍可以通過(guò)這個(gè)公式得到
其中FSR是ADC支持的電壓范圍。那么在這個(gè)ADC里可以區(qū)分的最小的電壓變化,就是LSB的一半。舉個(gè)例子,一個(gè)3位的ADC,輸入電壓從0到8V之間變化。那么它的LSB就是8/2^3 = 1V,能分辨的最小電壓變化是1/2V。也就是說(shuō),當(dāng)輸入電壓是0-0. 5V之間的時(shí)候,輸出其實(shí)都是0,從0.5-1.5之間的時(shí)候,輸出都是1,以此類推。所以輸出其實(shí)是一個(gè)階梯曲線。
再結(jié)合前面說(shuō)的環(huán)境噪聲、也稱作熱噪聲(thermal),那么一個(gè)ADC的總噪聲就是熱噪聲和量化噪聲的平方和再開(kāi)方。
是不是看到這里就有點(diǎn)上頭了,這個(gè)其實(shí)只是剛開(kāi)始。對(duì)于一個(gè)給定的ADC來(lái)說(shuō),我們要去量化和測(cè)量它的這兩個(gè)噪聲,這樣才能更好的、有針對(duì)性的設(shè)計(jì)包含ADC的整個(gè)系統(tǒng)。
拿Delta-Sigma ADC舉例,它的這兩種噪聲取決于ADC的分辨率、參考電壓、以及輸出速率。對(duì)于一個(gè)包含ADC的系統(tǒng)來(lái)說(shuō),這種噪聲分析更加的復(fù)雜。在一個(gè)典型的模數(shù)轉(zhuǎn)換系統(tǒng)里,通常包含各種模擬噪聲濾波器、運(yùn)放、ADC、以及對(duì)數(shù)字信號(hào)進(jìn)行處理的數(shù)字濾波器、FPGA、MCU等模擬數(shù)字芯片,這也構(gòu)成了一個(gè)信號(hào)鏈。要分析這個(gè)信號(hào)鏈的噪聲,我們不僅要對(duì)ADC本身做噪聲分析,還要考查整個(gè)信號(hào)鏈里每個(gè)元件的噪聲,以及所有這些元件之間的相互影響。
這個(gè)東西聽(tīng)起來(lái)好像很復(fù)雜,但我們可以使用信號(hào)鏈的有效噪聲帶寬(Effective Noise Bandwidth)來(lái)量化這個(gè)分析過(guò)程。當(dāng)然我們也需要一系列的工具、軟件和參考資料,來(lái)幫助我們做定量分析。
事實(shí)上,前面的很多內(nèi)容都來(lái)自TI的電子書(shū)《高精度ADC噪聲分析基礎(chǔ)》。這本書(shū)結(jié)合了大量TI工程師的設(shè)計(jì)實(shí)踐經(jīng)驗(yàn),詳細(xì)介紹了ADC的噪聲來(lái)源、如何量化分析、如何有效的設(shè)計(jì)電路來(lái)優(yōu)化ADC的噪聲表現(xiàn)。這本書(shū)寫(xiě)的非常通俗易懂,同時(shí)也兼顧了技術(shù)深度,強(qiáng)烈推薦給大家。
在前面說(shuō)過(guò)的TI”高精度實(shí)驗(yàn)室”教程里,除了這里介紹的驅(qū)動(dòng)電路設(shè)計(jì)和噪聲分析之外,還有最基本的ADC基礎(chǔ)、SAR與Delta-sigma ADC的原理與比較、誤差分析、低功耗設(shè)計(jì)、高速設(shè)計(jì)等等,非常全面。每個(gè)視頻后還有配套習(xí)題,方便我們鞏固學(xué)習(xí)成果。我覺(jué)得無(wú)論你是模電新手還是老炮,都能找到適合你的內(nèi)容。
“高精度實(shí)驗(yàn)室”、ADC電路設(shè)計(jì)指導(dǎo)手冊(cè)都是TI ADC工具箱的一部分,這里面還有《模擬工程師口袋參考書(shū)》,可以用來(lái)快速查找和計(jì)算各種信號(hào)鏈的調(diào)參方法,包括運(yùn)放帶寬、穩(wěn)定性等等。這些設(shè)計(jì)資源可以和ADC 模擬工程師計(jì)算器,TI TINA 以及Pspice for TI 配合使用,形成了一站式的設(shè)計(jì)體驗(yàn)。我把這些內(nèi)容的鏈接都放在了下面的參考資料里,想學(xué)習(xí)這方面知識(shí)的朋友,一定記得從這里開(kāi)始。
參考文獻(xiàn):
1. TI 精密ADC學(xué)習(xí)中心
https://www.ti.com.cn/zh-cn/data-converters/adc-circuit/precision-adcs/learning-center.html
2. TI高精度實(shí)驗(yàn)室線上培訓(xùn)視頻
https://training.ti.com/ti-precision-labs-adcs
3. 模擬工程師口袋參考指南
https://www.ti.com/seclit/eb/slyw038c/slyw038c.pdf
4. ADC 噪聲分析基礎(chǔ) 電子書(shū)
https://www.ti.com/lit/eb/slyy192/slyy192.pdf
5. 電路設(shè)計(jì)指導(dǎo)手冊(cè)
https://www.ti.com.cn/zh-cn/design-resources/design-tools-simulation/analog-circuits/overview.html
6. 模擬工程師計(jì)算器
https://www.ti.com.cn/tool/cn/ANALOG-ENGINEER-CALC
7. TI TINA
https://www.ti.com.cn/tool/cn/TINA-TI
8. Pspice for TI
https://www.ti.com.cn/tool/cn/PSPICE-FOR-TI
9. 參考設(shè)計(jì)
https://www.ti.com.cn/zh-cn/data-converters/adc-circuit/precision-adcs/reference-designs.html#search?famid=2019