點擊數

點擊數

DNL誤差的數學積分,即一個具有良好INL的ADC保證有良好的DNL

基本介紹

  • 中文名:點擊數
  • 定義DNL誤差的數學積分
  • 具有:良好INL的ADC
  • 保證:有良好的DNL
積分非線性,INL,C++中的INL,簡單框架,

積分非線性

(Integral nonlinearity,INL)
積分非線性表示了ADC器件在所有的數值點上對應的模擬值和真實值之間誤差最大的那一點的誤差值,也就是輸出數值偏離線性最大的距離。單位是LSB。例如,一個12bit的ADC,INL值為1LSB,那么,對應基準4.095V,測某電壓得到的轉換結果是1000b,那么,真實電壓值可能分布在0.999V到1.001V之間。

INL

DNL誤差的數學積分,即一個具有良好INL的ADC保證有良好的DNL。
總之,非線性微分和積分是指代碼轉換與理想狀態之間的差異。非線性微分(DNL)主要是代碼步距與理論步距之差,而非線性積分(INL)則關注所有代碼非線性誤差的累計效應。對一個ADC來說,一段範圍的輸入電壓產生一個給定輸出代碼,非線性微分誤差為正時輸入電壓範圍比理想的大,非線性微分誤差為負時輸入電壓範圍比理想的要小。從整個輸出代碼來看,每個輸入電壓代碼步距差異累積起來以後和理想值相比會產生一個總差異,這個差異就是非線性積分誤差。
與增益和偏移一樣,計算非線性微分與積分誤差也有很多種方法,代碼平均和電壓抖動兩種方法都可以使用,但是由於存在重複搜尋,當器件位數較多時這兩種方法執行起來很費時。一個更加有效計算INL和DNL的方法是直方圖法,採用線性或正弦直方圖。圖7說明了線性斜升技術的套用,首先使輸入電壓線性增加,同時對輸出以固定間隔連續採樣,電壓逐步增加時連續幾次採樣都會得到同樣輸出代碼,這些採樣次數稱為“點擊數”。
從統計上講,每個代碼的點擊數量直接與該代碼的相應輸入電壓範圍成正比,點擊數越多表明該代碼的輸入電壓範圍越大,非線性微分誤差也就越大;同樣,代碼點擊數越少表明該代碼輸入電壓範圍越小,非線性微分誤差也就越小。用數學方法計算,如果某個代碼點擊數為9,而“理想”情況下是8,則該器件的非線性微分誤差就是(9-8)/8或0.125。非線性積分是所有代碼非線性微分的累計值,對於斜升直方圖,它就是每個非線性微分誤差的和。從數學觀點來看,非線性積分誤差等於在代碼X-1的非線性微分誤差加上代碼X和代碼X-1的非線性微分誤差平均值。

C++中的INL

inl 檔案是內聯函式的源檔案。內聯函式通常在c++頭檔案中實現,但有的時候內聯函式較多或者出於一些別的考慮(使頭檔案看起來更簡潔等),往往會將這部分具體定義的代碼添加到INL檔案中,然後在該頭檔案的末尾將其用#include引入。由此也可以看到inl檔案的例外一個用法的影子——模板函式、模板類的定義代碼的存放。對於比較大的工程來說,出於管理方面的考慮,模板函式、模板類的聲明部分一般存放在一個或少數幾個檔案中,而將其定義部分存放在inl檔案中,然後在相應的頭檔案中包含進來。

簡單框架

如下:
// .h檔案
template<class T1,class T2>
class CTemplateClass
{
CTemplateClass();
virtual ~CTemplateClass();
BOOL getInfo(CStringArray& userBaseInfoAry);
};
// .inl檔案
template<class T1,class T2>
CTemplateClass<T1,T2>::CTemplateClass()
{
}
template<class T1,class T2>
CTemplateClass<T1,T2>::~CTemplateClass()
{
}
template<class T1,class T2>
BOOL CTemplateClass<T1,T2>::getInfo(CStringArray& userBaseInfoAry)
{
T1 arg1;
T2 arg2;
return TRUE;
}

相關詞條

熱門詞條

聯絡我們