在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<abbr id="27omo"></abbr>

<menu id="27omo"><dl id="27omo"></dl></menu>
    • <label id="27omo"><tt id="27omo"></tt></label>

      新聞中心

      EEPW首頁 > 測試測量 > 設(shè)計應(yīng)用 > 基于MAX5891的差分輸出測量方法簡介

      基于MAX5891的差分輸出測量方法簡介

      作者: 時間:2012-09-21 來源:網(wǎng)絡(luò) 收藏

      VCODE是計算的輸出電壓值。

      下面的等式用于計算任意給定編碼的DNL:

      DNLCODE(LSBs) = [VCODE - VCode-1 - VLSB]/VLSB(公式4)

      其中

      CODE是要計算的數(shù)字編碼。

      VCODE是針對CODE計算的輸出電壓值。

      VCODE-1是針對CODE - 1計算的輸出電壓值。

      VLSB是公式2中計算的電壓值。

      以下舉例說明利用MATLAB腳本計算MAX5889、MAX5890和的線性度。每次計算都得到最小和最大DNL和INL誤差編碼和誤差值。實例還為所有編碼畫出了傳輸函數(shù),得到INL和DNL。要求用戶輸入前面表格中所列出編碼的電壓測量值。必須按照所列順序輸入數(shù)值。

      計算16位線性度的MATLAB腳本

      function Lin16(Measurements)
      %Calculate INL and DNL of a 16-bit device with a 5-4-3-4 segmentation architecture
      % DacCodes is the range of possible input data to the 16-bit DAC
      DacCodes=[0:65535]’;
      %VOUT for each code is calculated from the measured points
      %create a VOUT variable and fill it with zeros
      VOUT=zeros(size(DacCodes));
      %The first measurement is the zero-scale point, or code (0x0000)
      ZS=Measurements(1);
      VOUT(1)=ZS;
      %The last measurement is the full-scale point, or code (0xFFFF)
      FS=Measurements(length(Measurements));
      VOUT(65536)=FS;
      %Midscale is stored at position 43 of the input data array
      MS=Measurements(43);
      %The device has four segmentation levels
      Segments=4;
      %The decimal values for the LSB codes are 1, 2, 4 and 8
      Seg1Codes=[1;2;4;8];
      %The voltages for the LSBs are in positions 2-5 of the input array
      for i=1:4
      Seg1V(i)=Measurements(i+1)-MS;
      end
      %The second level of segmentation is controlled with input codes 16 through
      %112 in steps of 16. Create the code array and fill the measurements for
      %this segmentation level
      Seg2Codes=[16:16:16*7]’;
      for i=1:7
      Seg2V(i)=Measurements(i+5)-MS;
      end
      %Segmentation level 3 uses input codes 128 through 1920 in steps of 128.
      %Create the code array and fill the measurements array.
      Seg3Codes=[128:128:128*(2^4-1)]’;
      for i=1:15
      Seg3V(i)=Measurements(i+12)-MS;
      end
      %Segmentation level 3 uses input codes 2048 through 63,488 in steps of 2048.
      %Create the code array and fill the measurements array.
      Seg4Codes=[2048:2048:2048*(2^5-1)]’;
      for i=1:31
      Seg4V(i)=Measurements(i+27)-ZS;
      end
      %The endpoints have been defined, now fill in the voltages for the
      %remaining points of the DAC transfer function.
      for i = 2:65535
      targetcode=i-1;
      VOUT(i)=ZS;
      for s=31:-1:1
      if Seg4Codes(s)=targetcode
      targetcode=targetcode-Seg4Codes(s);
      VOUT(i)=VOUT(i)+Seg4V(s);
      s=0;
      end
      end
      for s=15:-1:1
      if Seg3Codes(s)=targetcode
      targetcode=targetcode-Seg3Codes(s);
      VOUT(i)=VOUT(i)+Seg3V(s);
      s=0;
      end
      if targetcode==0
      s=0;
      end
      end
      for s=7:-1:1
      if Seg2Codes(s)=targetcode
      targetcode=targetcode-Seg2Codes(s);
      VOUT(i)=VOUT(i)+Seg2V(s);
      s=0;
      end
      if targetcode==0
      s=0;
      end
      end
      if targetcode==0
      s=0;
      end
      for s=4:-1:1
      if Seg1Codes(s)=targetcode
      targetcode=targetcode-Seg1Codes(s);
      VOUT(i)=VOUT(i)+Seg1V(s);
      end
      end
      end
      %Plot the transfer function
      figure(1)
      plot(DacCodes, VOUT);
      xlabel(‘DAC Input Code’);
      ylabel(‘Measured Voltage’);
      axis([0 65536 -1.1 1.1]);
      title(‘DAC Transfer Function’);
      set(gca,’XTick’,0:16384:65536)
      %Calculate the linearity
      LSB=(max(VOUT)-min(VOUT))/65535;
      INL(1)=0;
      DNL(1)=0;
      for i=2:65536
      INL(i)=(VOUT(i)-(VOUT(1)+(i-1)*LSB))/LSB;
      DNL(i)=(VOUT(i)-VOUT(i-1)-LSB)/LSB;
      end
      %Plot INL
      figure(2)
      plot(DacCodes, INL);
      title(‘DAC Integral Linearity’);
      xlabel(‘DAC Input Code’);
      ylabel(‘INL (LSBs)’);
      axis([0 65536 min(INL)*1.1 max(INL)*1.1]);
      set(gca,’XTick’,0:16384:65536)
      %Plot DNL
      figure(3)
      plot(DacCodes, DNL);
      title(‘DAC Differential Linearity’);
      xlabel(‘DAC Input Code’);
      ylabel(‘DNL (LSBs)’);
      axis([0 65536 min(DNL)*1.1 max(DNL)*1.1]);
      set(gca,’XTick’,0:16384:65536)
      txtstr=sprintf(‘INL MAX = %f’, max(INL));
      disp (txtstr);
      txtstr=sprintf(‘INL MIN = %f’, min(INL));
      disp (txtstr);
      txtstr=sprintf(‘DNL MAX = %f’, max(DNL));
      disp (txtstr);
      txtstr=sprintf(‘DNL MIN = %f’, min(DNL));
      disp (txtstr);






      16位腳本產(chǎn)生的曲線


      上一頁 1 2 3 下一頁

      關(guān)鍵詞: MAX5891 差分輸出測量 DAC

      評論


      相關(guān)推薦

      技術(shù)專區(qū)

      關(guān)閉
      ×

      “芯”朋友见面大会
      珠海|11.14|泰克“芯”朋友见面大会珠海站|泰克带您从测试角度看半导体的整条产业链,快来报名抢位吧>>