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