複製鏈接
請複製以下鏈接發送給好友

點擊數

鎖定
點擊數是DNL誤差的數學積分,即一個具有良好INL的ADC保證有良好的DNL。
中文名
點擊數
定    義
DNL誤差的數學積分
具    有
良好INL的ADC
保    證
有良好的DNL

點擊數積分非線性

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

點擊數INL

總之,非線性微分和積分是指代碼轉換與理想狀態之間的差異。非線性微分(DNL)主要是代碼步距與理論步距之差,而非線性積分(INL)則關注所有代碼非線性誤差的累計效應。對一個ADC來説,一段範圍的輸入電壓產生一個給定輸出代碼,非線性微分誤差為正時輸入電壓範圍比理想的大,非線性微分誤差為負時輸入電壓範圍比理想的要小。從整個輸出代碼來看,每個輸入電壓代碼步距差異累積起來以後和理想值相比會產生一個總差異,這個差異就是非線性積分誤差。
與增益和偏移一樣,計算非線性微分與積分誤差也有很多種方法,代碼平均和電壓抖動兩種方法都可以使用,但是由於存在重複搜索,當器件位數較多時這兩種方法執行起來很費時。一個更加有效計算INLDNL的方法是直方圖法,採用線性或正弦直方圖。圖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;
}