|
數(shù)字世界是現(xiàn)實(shí)世界的鏡像,模數(shù)轉(zhuǎn)換器ADC則是連接這兩個世界的大門。采樣速率是ADC重要參數(shù)之一,圍繞采樣速率,有一條著名的定理:奈奎斯特采樣定理。 采樣定理: 只要采樣頻率大于或等于有效信號最高頻率的兩倍,采樣值就可以包含原始信號的所有信息,被采樣的信號就可以不失真地還原成原始信號。 采樣定理是美國電信工程師H.奈奎斯特在1928年提出的,在1948年,信息論的創(chuàng)始人C.E.香農(nóng)對這一定理加以明確地說明并正式作為定理引用,因此在許多文獻(xiàn)中又稱為香農(nóng)采樣定理。 為方便介紹,我們統(tǒng)稱之為采樣定理。 在詳細(xì)介紹采樣定理之前,我們一定要知道一個非常有趣的頻率現(xiàn)象:'任何模擬信號,在離散化后,在頻率上都會按照采樣率周期性延拓。’ 先拋個問題: 我們以fs=100Hz的采樣率,采集一段模擬信號,得到了100個采樣點(diǎn),我們能夠重構(gòu)出原始的模擬信號,得到模擬信號的頻率信息嗎? 理論來講是不可能的,模擬信號一旦經(jīng)過采樣離散化后,其波形就已經(jīng)失真了,我們永遠(yuǎn)無法完美的重構(gòu)原始模擬信號。 其中一個重要原因是,我們無法區(qū)分離散后信號的頻率信息。 我們從時域和頻域兩個方向分別理解:'我們無法區(qū)分離散后信號的頻率信息’這句話的意義。 時域解釋 下圖藍(lán)色點(diǎn)是采集后的一段離散序列,我們無法知道采樣的原始信號是紅色曲線還是藍(lán)色點(diǎn)直連重構(gòu)的曲線。 通常情況下,我們重構(gòu)采集后的離散點(diǎn)方法是直接連接相鄰采樣點(diǎn)。 基于這樣的方法,我們直接重構(gòu)后的最低頻率為fa,而理論上可以提取出(fa+n*fs)Hz的信號(n為≥0的整數(shù),fa為原始信號頻率,fs為采樣頻率)。 比如一段頻率為fa=10Hz的模擬信號,經(jīng)過采樣頻率fs=100Hz后,離散后的信號可以重構(gòu)為10Hz、110Hz、210Hz。這個特性就是信號頻率的模糊性。 頻域解釋 一段頻率為帶限為fa的模擬信號,經(jīng)過采樣頻率fs采樣后,其在頻譜上的波形會按照fs周期性復(fù)現(xiàn),波形見下圖。 這是一個非常有趣的現(xiàn)象,可以看到時域的結(jié)果和頻域的分析是統(tǒng)一的。 而這里面就隱含著著名的采樣定理。 同樣的,我們從時域和頻域分別看下采樣定理的理解。 時域分析 在時域的角度下,當(dāng)一個周期采集點(diǎn)數(shù)少于2個時,我們直連采樣點(diǎn)重構(gòu)信號,則頻率就錯了;而當(dāng)一個周期采集兩個采樣點(diǎn)時,采用直連的重構(gòu)方式,我們起碼可以得到原始信號的頻率信息。 頻域解釋 如下圖所示,當(dāng)fs<2fa時,周期性復(fù)現(xiàn)的帶限信號,會有紅色重疊的地方,這會導(dǎo)致我們失去原始帶限信號的基本頻率信息,俗稱頻譜混疊。 如上就可以提煉出采樣定理的基本要義了。 采樣定理與過采樣率 上文中的fa是信號的帶限(信號的最大頻率范圍),2*fa是采樣定理的基本要求;M*2*fa中,M就是過采樣率,過采樣率是對'采樣定理的最低采樣頻率’而言的。 過采樣率M每提高4倍,可以讓ADC分辨率B提高1bit。舉例如下: 過采樣率分別為4、16、64,ADC分辨率B分別會提高1、2、3bit。這個后面會繼續(xù)深入介紹。 具體原理與實(shí)現(xiàn),公眾號會繼續(xù)更新。 然而過采樣并不是一直都有效的,它也會有限制因素,這個也是后話,咱們后面一一說明。 傅里葉變換的提出讓人們看問題的角度從時域變成了頻域,多了一個維度??焖俑道锶~變換算法的提出普及了傅里葉變換在工程領(lǐng)域的應(yīng)用,在科學(xué)計算和數(shù)字信號處理等領(lǐng)域,離散傅里葉變換(DFT)至今依然是非常有效的工具之一。 比如下圖是一個幅度為1、頻率為2Hz的正弦波和它的離散傅里葉變換后的結(jié)果。 可以得到原始matlab代碼 信噪比(SNR)是信號與噪聲的比率,它是衡量通信或模擬系統(tǒng)性能的重要指標(biāo)之一,與傅里葉變換更是有千絲萬縷的聯(lián)系。在很多情況下,我們是通過傅里葉變換來評估信噪比,如果評估方法不對,很難的到我們期望的結(jié)果,經(jīng)常會事與愿違。 求解SNR的過程,我們是用'評估SNR’來描述,這就是說我們無法精確計算出SNR,只能進(jìn)行評估,事實(shí)也是如此。 評估SNR的方法分為時域和頻域兩種。我們以一組離散樣本點(diǎn)為分析目標(biāo),看下如何評估SNR,及其誤區(qū)。 時域估計SNR Xs(n)為信號序列,Xn(n)為噪聲序列,則信號X(n)=Xs(n)+Xn(n),是一組帶噪離散序列,在時域上評估X(n)的信噪比公式如下: ![]() 其意義為分別求取離散信號、噪聲功率和,計算二者之比。這里有個前提是,我們需要分離出信號與噪聲,然后才能求解, 然而問題也在于此,對于一段給定的離散時間序列,我們很難完全分離出信號和噪聲,所以時域評估SNR是有局限性的,而且不夠直觀,所以通常我們在頻域下求解。 頻域估計SNR 在頻域上的SNR計算原理和時域很接近,還是求信號功率與噪聲功率只比。最簡單的方法是在頻譜X(m)上設(shè)置閾值,閾值之上為信號,閾值之下為噪聲。這樣就會有閾值設(shè)置帶來的估計準(zhǔn)確性問題,同時信號頻帶范圍內(nèi)或多或少也會有噪聲疊加進(jìn)來,在頻域計算SNR也是一個近似。 ![]() SNR以dB作為單位,SNR(dB)=10*log10(SNR)。 我們往往使用Matlab評估SNR,Matlab是非常強(qiáng)大的數(shù)學(xué)工具,其集成了SNR計算函數(shù),如果應(yīng)用不正確,誤差會非常大,無法得到預(yù)期結(jié)果,舉例如下。 下圖是一個幅度為1、頻率為2Hz的正弦波和它的離散傅里葉變換后的結(jié)果。 ![]() 用Matlab SNR函數(shù)計算計算信噪比的結(jié)果如下,藍(lán)色為感興趣的信號成分,橙色為噪聲。這個頻域圖就可以表征SNR,橙色的噪聲數(shù)值越小、越低,說明信噪比越高、越好。即使紅色圓圈部分有一點(diǎn)噪聲,在評估單頻率成分信號的SNR時,這依然是一個非常有效的手段。 ![]() 假如一信號x(n)=sin(4pi*t)+0.5*sin(18pi*t),如下圖是一個幅度為1、頻率為2Hz的正弦波疊加幅度為0.5、頻率為9Hz的正弦波的結(jié)果。 ![]() 用Matlab SNR函數(shù)計算計算信噪比的結(jié)果如下,藍(lán)色為感興趣的信號成分,橙色為噪聲,matlab舍棄了頻率為9Hz、能量少的成分,只計算了2Hz信號的信噪比。 所以倘若我們的感興趣信號比較復(fù)雜,就不能直接用SNR函數(shù)直接計算。 ![]() 所以我們一定要在理解DFT與SNR關(guān)系的基礎(chǔ)上,正確使用matlab才能得到期望的SNR結(jié)果。 在過采樣中,信噪比、ADC有效位數(shù)、過采樣率是有千絲萬縷的聯(lián)系,了解了基本的概念后,我們一步一步理解過采樣的原理。 數(shù)字世界是模擬世界的鏡像,而ADC就是連接兩個世界的大門。一切模擬信號一旦經(jīng)過ADC離散化后,其幅值必然會失真,其重要原因是ADC分辨率有限,只能逼近真實(shí)幅值。 我們不可能抵達(dá)真理,只能無限的接近真理。 ![]() 分辨率是ADC的重要參數(shù)之一,它和精度是兩個不同的量,精度描述的是離散結(jié)果的準(zhǔn)確性,而分辨率描述的是ADC能夠分辨的最小信號,為1LSB。 換言之,分辨率高的ADC能區(qū)分出更小的信號,但其轉(zhuǎn)化的結(jié)果準(zhǔn)確性受精度限制。 ![]() 一個8bit ADC,可分辨出256種電平,當(dāng)輸入范圍是2.56V時,1LSB即為10mV。受分辨率限制,ADC輸出值和實(shí)際值之間存在誤差。 下圖是量化誤差的示意圖,對于變化小于1LSB的信號,ADC是無法區(qū)分出來的,輸入和輸出此時的誤差即為量化誤差。 ![]() 量化噪聲的簡化數(shù)學(xué)模型如下, e(t)=st, -q/2s < t < +q/2s ![]() 根據(jù)輸入信號、ADC分辨率和量化誤差的關(guān)系,我們可以推導(dǎo)出一條重要的SNR計算公式。詳細(xì)推導(dǎo)過程在公眾號后臺回復(fù):過采樣 下面就是經(jīng)典的ADC SNR計算公式。 SNR = 6.02N + 1.76dB DC至fs/2帶寬范圍 如果使用數(shù)字濾波來濾除帶寬BW以外的噪聲成分,則等式中還要包括一個校正系數(shù)
或者寫作
BW是信號帶寬,F(xiàn)S是采樣率,OSR=Fs/(2*BW)就是過采樣率。 ![]() 我們所說的過采樣率每提高4倍,可以提高ADC 1bit的有效分辨率就是根據(jù)上面的公式來的,過采樣率可以參考以前文章: 為什么“過采樣率每提高4倍,可以提高ADC 1bit的有效分辨率”? 舉個栗子: 當(dāng)過采樣率OSR為1時,
當(dāng)過采樣率OSR為4時,
對比公式1和公式2,只有紅色框部分不同,即過采樣帶來的SNR收益和增加分辨率N是可以轉(zhuǎn)化等效的。 額外增加的位數(shù)N+: N+=10log(OSR)/6.02, 當(dāng)OSR=1,4,16,,,,時,N+=1,2,3,,,,, 這就是通常所說的,過采樣率每增加4倍,可以提高1bit分辨率的原因。 ![]() 那么是不是只要提高采樣速率就可以提高分辨率了呢? 其實(shí)不對,從公式2可以看出,10log(4)變?yōu)?0log(1)了,這個過程還需要降低采樣,或者下抽,這么做除了降低數(shù)據(jù)量外,就是可以提高分辨率。 如何下抽,是一個學(xué)問,如果簡單的求平均,往往只提高信噪比,達(dá)不到提高有效位數(shù)的目的,好多人在這里會采坑。 如何正確使用下抽來增加有效位數(shù)?量化誤差與過采樣率最經(jīng)典的解釋是頻譜密度解釋,篇幅有限,后面文章都會持續(xù)更新。 這應(yīng)該是過采樣系列的最后一篇文章,經(jīng)常有同學(xué)在使用FPGA、單片機(jī)或者DSP進(jìn)行過采樣時沒有正確設(shè)計代碼,導(dǎo)致結(jié)果異常,有些結(jié)果看似正常,而實(shí)際卻沒有意義。 這篇文章涉及到簡單的整型數(shù)據(jù)和算術(shù)運(yùn)算,希望能有所幫助,僅供參考。 舉栗子,理想的8 bit ADC,編碼范圍是0-255,在參考電壓是255mV的情況下,分辨率是1mV。 對一個理想的9.6mV直流電壓進(jìn)行采樣,ADC無法分辨小數(shù)點(diǎn)后的0.6mV,采樣結(jié)果會被編碼為10,即10mV。 過采樣有效是有前提條件的,在這里是對9.6V的直流電壓加隨機(jī)噪聲。 過采樣 對疊加噪聲后的信號進(jìn)行4次采樣,理論上應(yīng)該得到[9.8, 9.6, 10.4, 9.6]4個離散的樣本點(diǎn),而受到ADC分辨率的限制,實(shí)際只能得到[10, 10, 10, 10]4個編碼樣本,所有樣本點(diǎn)都只能分布在。。。8、9、10。。。整數(shù)上。
接下來就對這4個樣本點(diǎn)詳細(xì)介紹,直觀的感受過采樣的原理。 假設(shè)信號帶寬為B,我們分別分析采樣頻率F為2B sps/S和8B sps/S兩種情況。 當(dāng)采樣頻率為2B時,過采樣率OSR1=F/(2B)=1; 當(dāng)采樣頻率為8B時,過采樣率OSR4=F/(2B)=4; OSR4/OSR1=4,即過采樣率提高了4倍(注意:是提高了4倍),其分辨率應(yīng)該會增加1bit。 繼續(xù)以上面采樣9.6mV信號舉栗子。 當(dāng)以采樣頻率F=1采樣時,采集的結(jié)果是[10, 10,10, 10]中的任意一個,對應(yīng)二進(jìn)制(0000 1010)。 當(dāng)以采樣頻率F=4采樣時,采集的結(jié)果是[10, 10,10, 10]4個序列。 下面對F=4的4個數(shù)據(jù)進(jìn)行下抽處理(降采樣),可以減少計算量增加分辨率。
抽取 ADC是8bit的分辨率,但是在過采樣計算時,不能定義并初始化一個8bit的整形數(shù)據(jù),如果初始化8bit的數(shù)據(jù),計算過程會溢出,最終結(jié)果的位寬還是8bit,并沒有增加分辨率,在這里我們定義一個16bit的數(shù)據(jù),預(yù)留了足夠的buffer。 對采樣得到的4個8bit數(shù)據(jù)求和運(yùn)算,需要計算最大位寬,求和后的最大位寬為8+2=10bit,相當(dāng)于左移了2bit,變?yōu)?0bit。
如果只是簡單的求平均,求和后的結(jié)果再除以采樣個數(shù)4的話,則數(shù)據(jù)其實(shí)是右移2bit,又變回原來的8bit位寬,并沒有增加分辨率。 在這里我們選擇下抽方法是求和后除以2,即右移1bit,則數(shù)據(jù)從10bit變?yōu)?bit,相比于原始的8bit,增加了1bit分辨率(過采樣容易理解,更重要的是下抽)。 過采樣率為4時,采樣的4個數(shù)據(jù)序列[10, 10,10, 10]求和后是40,對應(yīng)二進(jìn)制(00 0010 1000),右移1bit后變?yōu)?0,對應(yīng)二進(jìn)制(0 0001 0100)
255mV參考電壓下,原始的8bit ADC,分辨率為1mV,采集的數(shù)據(jù)是9(0000 1001),即9mV; 過采樣率增加4倍后: 255mV參考電壓下,9bit ADC,分辨率為0.5mV,采集的數(shù)據(jù)是20(0 0001 0100),即10.0(9.98)mV; 過采樣率增加4倍的前提下,只提高了1bit分辨率,效果不是很明顯,繼續(xù)在9.6mV基礎(chǔ)上添加隨機(jī)噪聲,這次過采樣率再增加4倍,達(dá)到16倍,即采樣速率F=16,對16個采樣序列進(jìn)行計算舉例。
對采樣得到的16個8bit數(shù)據(jù)求和運(yùn)算,最大位寬是8+4=12bit。 求和:10*8+9*7+11=154,對應(yīng)二進(jìn)制是(0000 1001 1010),再右移2bit,則變?yōu)?0bit的38(00 0010 0110),(再次強(qiáng)調(diào),不能簡單的求和然后求平均)。
9.6mV加噪信號: 1、255mV參考電壓下,原始的8bit ADC,分辨率為1mV,采集的數(shù)據(jù)是10(0000 1001),即10mV 2、過采率為4后: 255mV參考電壓下,9bit ADC,分辨率為0.5mV,采集的數(shù)據(jù)是20(0 0001 0100),即10.0(9.98)mV; 3、過采率為16后: 255mV參考電壓下,10bit ADC,分辨率為0.25mV,采集的數(shù)據(jù)是38(00 0010 0110),即9.47mV; 從列舉的例子可以看出,過采樣率是可以提高分辨率的,但是提高采樣速率來提高分辨率的代價是巨大的(牛頓第三定律:得到點(diǎn)東西時總要舍棄點(diǎn)什么^_^)。 - The End - |
|
|