細說模擬信號采樣與AD轉(zhuǎn)換
1 著名的Nyquist采樣定理
盡管大家都知道,但還是提一提。大牛奧本海姆的《信號與系統(tǒng)》中是這樣描述的:
Let x(t) be a band-limited signal with X(jw) = 0 for |w|> wM. Then x(t) is uniquely determined by its samples x(nT),n=1,±1,±2,...,if
ws > 2wM where ws = 2 pi/T.Given these samples, we can reconstruct x(t) by generating a periodic impluse train in which successive impluse have amplitudes that are successive sample values. This impluse train is then processed through an ideal lowpass filter with gain T and cutoff frequency greater than wM and less than ws-wM. The resulting output signal will exactly equal x(t).
來捋一捋,幾個點:
- 帶寬有限(band-limited)
- 采樣頻率大于2倍信號最高頻率后可以無失真的恢復出原始信號
實際中,信號往往是無線帶寬的,如何保證帶寬有限?所以,我們在模擬信號輸入端要加一個低通濾波器,使信號變成帶寬有限,再使用2.5~3倍的最高信號頻率進行采樣。關(guān)于此我們下面將模擬數(shù)字轉(zhuǎn)換過程將會看到。
雖說是不能小于等于2倍,但選2倍是不是很好呢,理論上,選擇的采樣頻率越高,越能無失真的恢復原信號,但采樣頻率越高,對后端數(shù)字系統(tǒng)的處理速度和存儲要求也就越高,因此要選擇一個折中的值。
如果后端數(shù)字信號處理中的窗口選擇過窄,采樣率太高,在一個窗口內(nèi)很難容納甚至信號的一個周期,這從某方面使得信號無法辨識。比如,數(shù)字信號處理的窗口大小為1024個點,采樣率為50KHz,則窗口最多容納1024*(1/50KHz)=20.48ms的信號長度,若信號的一個周期為30ms>20.48ms,這就使得數(shù)字信號的處理窗口沒法容納一個周期信號,解決的辦法就是在滿足要求的前提下使用減小采樣率或增加窗口長度。
2 模數(shù)轉(zhuǎn)換
記得有一次參加中科院計算所的實習筆試,里面就有這么一道題:模擬信號轉(zhuǎn)換到數(shù)字信號要經(jīng)歷哪兩個步驟?還好,早有準備,立刻填上了采樣和量化。我們下面就來詳細分析下這兩個過程,但在分析之前,我們先給出一張整個過程的流圖,您可以先想想為什么需要各模塊。
程控放大器
我們實際中的模擬信號都是通過傳感器采集進來的,做過單片機的人應該熟知DS18B20溫度傳感器,不好意思,那是數(shù)字傳感器,也就是說人家做傳感器的時候把AD轉(zhuǎn)換也放到傳感器里面了。但這并不是普遍的情況,因為溫度量是模擬信號中最容易測量的量了,而大多數(shù)的傳感器并沒有集成AD轉(zhuǎn)換過程,如大多數(shù)的加速度傳感器、震動傳感器、聲音傳感器、電子羅盤,甚至有的GPS(別懵了,GPS也算是一種傳感器哦)等,都是模擬輸出的。而且由于物理制作的原因,傳感器返回的電信號非常微小,一般在幾mV(如果是電流,也一般在幾mA),這么微弱的信號,如果經(jīng)過導線或電纜傳輸很容易就湮滅在噪聲中。因此,我們常常見到模擬傳感器的輸出線都會使用套上一層塑膠的線,叫屏蔽線(如圖)。
屏蔽線只能保證在信號傳輸?shù)较到y(tǒng)之前受到的干擾最小,但信號仍要經(jīng)過處理才能為數(shù)字系統(tǒng)使用。在模擬信號(尤其是高頻信號)的輸入端首先要使用低噪聲放大器對信號進行放大,這個放大器有特殊的要求,一定是低噪聲,我們已經(jīng)知道,模擬信號信號已經(jīng)非常微弱,如果放大器還存在一定的噪聲,在噪聲疊加之后放大出來的信號可能已經(jīng)不再是原信號了。既然說到低噪聲,那么低噪聲是如何衡量的呢?這可以通過放大器噪聲系數(shù)(NF)來定,
噪聲系數(shù)定義為放大器輸入信號與輸出信號的信噪比。其物理含義是:信號通過放大器之后,由于放大器產(chǎn)生噪聲,使信噪比變壞;信噪比下降的倍數(shù)就是噪聲系數(shù)。噪聲系數(shù)通常用dB表示,
實際中除了考慮低噪聲系數(shù)外,還要考慮放大器的帶寬和頻率范圍以及最重要的放大增益。由于輸入信號的強度可能時變,采用程序可控(程控)的放大增益保證信號能達到滿度而又不會出現(xiàn)飽和(實際中要做到這一點還是很難的)。
低通濾波器
在Nyquist采樣定理中已經(jīng)提過,要滿足采樣定理必須要求信號帶寬有限,使用大于2倍的最高信號頻率采樣才能保證信號的不混疊。低通濾波器的一個考慮就是使信號帶寬有限,以便于后期的信號采樣,這個低通濾波器是硬件實現(xiàn)的。另一方面,實際情況中我們也只會對某個頻頻段的信號感興趣,低通濾波器的另一個考慮就是濾波得到感興趣的信號。比如,測量汽車聲音信號,其頻率大部分在5KHz以下,我們則可以設置低通濾波器的截止頻率在7KHz左右。
程控的實現(xiàn)方法就是使用模擬通道選擇芯片(如74VHC4051等)。
NOTES:
有關(guān)濾波與程控的電路設計請參考文獻[1].
在采樣之前的所有電路實現(xiàn)方案叫信號調(diào)理電路。這樣,我們就可以根據(jù)這個詞到處Google/Baidu文獻了。
采樣及采樣保持
采樣貌似有一套完整的理論,就是《數(shù)字信號處理》書中的一堆公式推導,我們這里當然不會那么去說。其實采樣最核心的問題就是采樣率選擇的問題。
- 根據(jù)實際,選擇頻率分辨率df
- 選擇做DFT得點數(shù)N,因為DFT時域點數(shù)和變換后頻域點數(shù)相同,則采樣率可確定,F(xiàn)s=N*df
- Fs是否滿足Nyquist的采樣定理?是,OK,否則增加點數(shù)N,重新計算2。
我們希望df越小越好,但實際上,df越小,N越大,計算量和存儲量隨之增大。一般取N為為2的整數(shù)次冪,不足則在尾端補0。
這里給出我的一個選擇Fs的方案流程圖,僅供參考。
采樣后還有一個重要的操作是采樣保持(S/H)操作,采樣脈沖采樣后無法立刻量化,這個過程要等待很短的一個時間,硬件上一般0.幾個us,等待量化器的量化。
注意,在量化之前,所有的信號都是模擬信號,模擬信號就有很多干擾的問題需要考慮,這里只是從總體上給出我對整個過程的理解。更多細化的方案還需要根據(jù)實際信號進行研究。
量化
我們可以先直觀的看一下量化的過程,
量化有個關(guān)鍵的參數(shù),叫量化位數(shù),在所有的AD轉(zhuǎn)換芯片(如AD7606)上都能看到這個關(guān)鍵的參數(shù),常見的有8bit,10bit,12bits,16bit和24bit。
如上圖,以AD7606為例,AD7606是16bit的AD芯片,量化位數(shù)指用16bit來表示連續(xù)信號的幅值。因此,考慮AD的測量范圍(AD7606有兩種:±5V和±10V),則AD分辨率是
±5V: (5V-(-5V)) / (2^16) = 152 uV
±10V: (10V-(-10V)) / (2^16) = 305 uV
量化位數(shù)越高,AD分辨率越高,習慣上,AD分辨率用常用LSB標示。
因此,AD7606中對于某個輸入模擬電壓值,因為存在正負電壓,若以0V為中間電壓值,范圍為±5V時AD轉(zhuǎn)換電壓可計算為
AD7606若使用內(nèi)部參考電壓,Vref=2.5V。哦對了,這又出現(xiàn)個參考電壓。參考電壓與AD量化的實現(xiàn)方式有關(guān),從速度上分串行和并行,串行包括逐次逼近型,并行方式包括并行比較式,如下圖(左:串行,右:并行)。AD7606是使用逐次逼近型的方式。
AD轉(zhuǎn)換芯片另外兩個重要參數(shù)是轉(zhuǎn)換時間(轉(zhuǎn)換速率)。并行AD的轉(zhuǎn)換速率比串行的要高。但并行比較的方式中電阻的精度對量化有影響。
接著,我們還將介紹一個重要的概念:量化噪聲。量化噪聲對應量化信噪比,
SNRq = (6.02N + 4.77) dB
其中N為量化位數(shù),且不去管這個公式是怎么得到的(詳細推導可參考文獻[2]),對于
N=12, SNRq ≈ 70dB
N=16, SNRq ≈ 94dB
從中可以看出:每增加1bit量化位數(shù),SNRq將提高6.02dB,在設計過程中,如果對方有信噪比的要求,則在ADC選型時就要選擇合適位數(shù)的ADC芯片。
明顯的,并不是量化位數(shù)越高越好,量化位數(shù)的提高將對成本、轉(zhuǎn)換速度、存儲空間與數(shù)據(jù)吞吐量等眾多方面提出更高的要求。同時,我們盡量提高量化噪聲的前提是信號的SNR已經(jīng)比較低了,如果信號的SNR比量化噪聲還高,努力提高量化噪聲將是舍本求末的做法。
到最后,給點福利吧,下面是我參考AD7606數(shù)據(jù)手冊設計的原理圖,經(jīng)過實踐檢驗可用: