• 大小: 10KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-06-04
  • 语言: Matlab
  • 标签: matlab  adc  参数  

资源简介

文件输入的是csv文件,设定ADC的分辨率,读取文件的数据,计算数据的DNL,INL,信噪比,有效位数等动态参数,用来评估ADC

资源截图

代码片段和文件信息

% Test script for ADC
% - Josh Carnes 20061128
% - Sumig Cao 20120731
% - Jesaint 201211218
clear all;
% SET OPTIONS (These need to be set)
% ********************************************
DNLgo=1;                      % Execute INL/DNL? [yes=1/no=0]

% SET VALUES FOR FFT (These need to be set)
% *********************************************
N=12;                      % Resolution of converter
fs_predec=90e6;           % Pre-decimated clock frequency [Hz]
fres=fs_predec/8192;       % Desired frequency resolution of FFT [Hz] fres=fclk/2^N=fin/M  频率分辨率
fin=fres*2621;             % Frequency of interest [Hz] (used to test if frequency will be dead on a spike)
                           % Choose frequency of resolution times a prime number选择频率分辨率的倍数最好是个素数
Ndelay=0;                  % Number of samples to dump at beginning of transient
Vref=2^(N-1);              % Positive max voltage swing for voltage output (Simulink Model)
                           %     or 2^(N-1) for digital output
fundpnts=0;               % # of FFT points on either side of fundamental to include
                           %   in fundamental power due to non-coherence(非相干性)
num_harm=5;               % # of harmonics to find and use in THD/SNR calculation

% GET DATA (These need to be set)
% ******************************
M = importdata(‘90-28.79.csv‘);
indata = M.data(:2);
%dataa = round(indata*10)/10;
dataa = round(indata);
%dataa = indata;
data=dataa(100:8291);
datab=dataa(100:8291);
%datac=datab+(2^N-1)/2;%把负的提升为正的
datac=datab+2^(N-1);

% CALCULATE VALUES FOR FFT
% ***********************************
fs=fs_predec;              % Decimated clock frequency
Ts=1/fs;                   % Calculate period
Nsamples=round(fs/fres);   % Determine number of samples required for desired FFT
                           %   frequency resolution
frescalc=fs/Nsamples;      % Calculated freq resolution based on calculated number of samples


% DATA & CONFIGURATION CHECK
% ************************************
%    Check if there are enough samples in the data for the desired
%      FFT frequency resolution
if length(data) < (Nsamples+Ndelay)
    disp(‘ERROR: not enough samples taken in transient‘);
    disp(‘  increase transient sampling time above ‘);
    disp((Nsamples+Ndelay)*Ts);
    disp(‘ you are short by this number of samples‘);
    disp(Nsamples+Ndelay-length(data));
    return;
end

%    Check if frequency of interest is greater than the Nyquist
%      frequency and folds back into the baseband
if fs < 2*fin
    disp(‘WARNING Frequency of interest is folded back into base band‘)
end

%    Check if the frequency of interest sits directly on top of an FFT bin
%      to prevent spectral leakage/skirting
if fin/frescalc ~= round(fin/frescalc)
    disp(‘ERROR frequency of interest will exhibit skirting spectral leakage‘);
    disp(‘make the frequency of interest a prime multiple of your frequency resolution‘);
    re

评论

共有 条评论