SonofSamlawのブログ

うひょひょ

ΔΣDAコンバータその2、1,2次ノイズシェイピングシミュレーション

       



ライター:mpcsp079さん(最終更新日時:2016/4/2)投稿日:2016/3/30    
.

ΔΣDAコンバータのシミュレーション集
https://sonofsamlaw.hatenablog.com/entry/2024/10/26/072013?_gl=1*3rx3q6*_gcl_au*NjcxMDc5NjMxLjE3MjQ2NjkyOTg.

 

 

 

ΔΣDAコンバータその2、1,2次ノイズシェイピングシミュレーション

 

 


この分野の解説はたくさんあるがわからない。不完全でいい加減な資料が氾濫している.特に、ΔΣDAのノイズシェイピングがわからない者が多い。そこである信頼のできる資料を紹介する。

今回は前回のものをシミュレーションしてみた。

 


資料

1)

http://www.eit.lth.se/fileadmin/eit/courses/etin60/lectures/lec10.pdf#search='ΔΣ+DA'

2)

http://jaco.ec.t.kanazawa-u.ac.jp/edu/digi/pdf/54.pdf#search='ΔΣ+DAC

3)

シグマ・デルタADC/DAC の原理【AD社】

http://www.analog.com/media/jp/technical-documentation/application-notes/AN-283_jp.pdf#search='ΔΣ+DAC+ノイズ'

4)旭化成

http://www.akm.com/akm/jp/file/datasheet/AK4388AET.pdf#search='ΔΣDAC+ノイズシェイピング'


  

ΔΣ DAコンバータ ノイズシェイピングが理解できる - SonofSamlawのブログ

における、1、2次ノイズシェピングをシミュレーションした。

サンプル周波数:44.1kHz*8

周波数:1kHz

 


ーーーローパスフィルターーーー

ローパスフィルタは1次の離散型である。

http://note.chiebukuro.yahoo.co.jp/detail/n137547

a;カットオフ角周波数

T:サンプル周期
Y(n)=(X(n)+X(n-1)-Y(n-1)*(1ー2/(Ta))/(2/(Ta)+1) 

これを2段ににし、

a=2π*10000とした。
 


 

 

     


           図1 1次ノイズシェイピング

 

    



           図2 図1の変形

 

      


          図3 2次のノイズシェイピング

    

     

      

        

      

                図4

 


  ローパスフィルタ3次10kHzにした場合。

  

       

     

 

      


                  図5


  2次の方が低い周波数のうねりがちいさいことがわかる。


   

ーーーープログラム(1次)-----

REM 1次 44.1kHz 2次フィルタ10k

DIM v(100000),c(100000),e(100000),u(100000)
DIM vv(100000),vvv(100000),vvvv(100000)
LET n=100000
LET t=2.84E-6
LET tt=0

REM Hz
LET f=1000

LET OM=2*PI*f

LET v(1)=0
LET c(1)=0
LET e(1)=0

LET m=1000000/f
SET WINDOW 0,m,-1,1

FOR i=2 TO n
   LET tt=tt+t
   LET u(i)=0.3*SIN(tt*OM )
    
   LET e(i)=u(i)-v(i-1)
   LET c(i)=e(i)+c(i-1)
    
   IF c(i)>0 THEN
      LET v(i)=0.5
   else  
      LET v(i)=-0.5
   END IF    
NEXT I

LET a=2*PI*10000
FOR I=3 TO n
   LET vv(i)=(v(i)+v(i-1)-vv(i-1)*(1-2/(t*a)))/(2/(t*a)+1) 
NEXT i
FOR I=3 TO n
   LET vvv(i)=(vv(i)+vv(i-1)-vvv(i-1)*(1-2/(t*a)))/(2/(t*a)+1) 
NEXT i

FOR I=1 TO m
   PLOT LINES:  i, u(i);
NEXT I

PLOT POINTS:0,0

REM FOR I=1 TO m 
REM PLOT LINES:  i, v(i);
REM PLOT LINES:i+1,v(i);
REM NEXT I

PLOT POINTS:0,0
FOR I=1 TO m
   PLOT LINES:  i, vvv(i);
   PLOT LINES:i+1,vvv(i);
NEXT I

END

 

ーーーープログラム(2次)-----


REM 2次 44.1kHz 2次フィルタ10000Hz

DIM v(100000),c(100000),e(100000),u(100000),vv(100000),vvv(100000)
LET n=100000
LET t=2.84E-6
LET tt=0

REM Hz
LET f=1000

LET OM=2*PI*f

LET v(1)=0
LET c(1)=0
LET e(1)=0

LET m=1000000/f
SET WINDOW 0,m,-1,1

FOR i=3 TO n
   LET tt=tt+t
   LET u(i)=0.3*SIN(tt*OM )
    
   LET c(i)=u(i)-e(i-2)+2*e(i-1)
    
   IF c(i)>0 THEN
      LET v(i)=0.5
   else  
      LET v(i)=-0.5
   END IF  
    
   LET e(i)=c(i)-v(i)  
NEXT I

LET a=2*PI*10000
FOR I=3 TO n
   LET vv(i)=(v(i)+v(i-1)-vv(i-1)*(1-2/(t*a)))/(2/(t*a)+1) 
NEXT i
FOR I=3 TO n
   LET vvv(i)=(vv(i)+vv(i-1)-vvv(i-1)*(1-2/(t*a)))/(2/(t*a)+1) 
NEXT i


FOR I=3 TO m
   PLOT LINES:  i, u(i);
NEXT I

PLOT POINTS:0,0

REM FOR I=3 TO m 
REM PLOT LINES:  i, v(i);
REM PLOT LINES:i+1,v(i);
REM NEXT I

PLOT POINTS:0,0
FOR I=3 TO m
   PLOT LINES:  i, vvv(i);
   PLOT LINES:i+1,vvv(i);
NEXT I

END