SonofSamlawのブログ

うひょひょ

ΔΣDAコンバータその6、安定性シミュレーション

      


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

 

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

 


 

 


今回は2、3次ノイズシェイピングの安定性をシミュレーションしてみた。dに正弦波20kHzを入れ、vをみた。すべては線形要素とした。1ビット要素はない。
 

 

              図1 2次

  


               図2 3次 

 

        

           図3 2次d-->応答(発振はしない)

        


          図4 3次d-->v応答(発振はしない)

   

 

  2次のd-->v伝達関数は、

   (1-z^-1)^2

で、3次は、

   (1-z^-1)^3

なので、安定であることはたしかである。これらはFIRでありから、有限で静定する。

  3次が発散するのは(発振はしない!)、NFBの機構がSWノイズを押さえられないためであって、3次ループが不安定であるからではない。3次ではdに対してfs付近でvが8倍になるため、このNFB機構では発散が抑えられないのだと思われる。

  このまま、4次以上も作れるが、発散してしまうだろう・・・


 

          


ーーーーーーーープログラムーーーーーーーー

REM 安定性テスト、2次、 d-->v 線形 
REM 2次 44.1kHz 
REM s=100,

DIM v(100000),c(100000),e(100000),u(100000)
DIM vv(100000),vvv(100000),vvvv(100000),d(100000)

LET n=100000
LET t=2.84E-6
LET tt=0

REM Hz
LET f=20000

LET OM=2*PI*f

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

LET m=1000000/f


LET MAX=0
SET WINDOW 0,m,-1,1

FOR i=3 TO n
   LET tt=tt+t
   LET d(i)=0.5*SIN(tt*OM )
    
   LET c(i)=-e(i-2)+2*e(i-1)
    
   REM-----------------
   LET s=100    
   IF c(i)>s THEN
      LET c(i)=s     
   ELSE       
   END IF
   IF c(i)<-s THEN
      LET c(i)=-s
   ELSE
   END IF   
   REM-----------------
   IF MAX<c(i)THEN LET MAX=c(i)
    
   LET v(i)=d(i)+c(i)
   LET e(i)=c(i)-v(i)  
   REM-----------------------------------------
   REM-----------------------------------------
   LET w=100
   IF e(i)>w THEN
      LET e(i)=w    
   ELSE       
   END IF
   IF e(i)<-w THEN
      LET e(i)=-w
   ELSE
   END IF   
   REM-----------------
    
    
NEXT I

REM------fiter---
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 n
   LET vvvv(i)=(vvv(i)+vvv(i-1)-vvvv(i-1)*(1-2/(t*a)))/(2/(t*a)+1) 
NEXT i
REM---------------

REM----PLOT-------------------------------
FOR I=2 TO m
   PLOT LINES:  i, d(i);
NEXT I

PLOT POINTS:2,0

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

REM PRINT max

END

 


ーーーーープログラムーーーーーーーーーーーーーーーーーーーーーー

REM 安定性テスト、3次、 d-->v 線形 
REM 2次 44.1kHz 
REM s=100,

DIM v(100000),c(100000),e(100000),u(100000)
DIM vv(100000),vvv(100000),vvvv(100000),d(100000)

LET n=100000
LET t=2.84E-6
LET tt=0

REM Hz
LET f=20000

LET OM=2*PI*f

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

LET m=1000000/f


LET MAX=0
SET WINDOW 0,m,-1,1

FOR i=4 TO n
   LET tt=tt+t
   LET d(i)=0.5*SIN(tt*OM )
    
   LET c(i)=e(i-3)-3*e(i-2)+3*e(i-1)
    
   REM-----------------
   LET s=100    
   IF c(i)>s THEN
      LET c(i)=s     
   ELSE       
   END IF
   IF c(i)<-s THEN
      LET c(i)=-s
   ELSE
   END IF   
   REM-----------------
   IF MAX<c(i)THEN LET MAX=c(i)
    
   LET v(i)=d(i)+c(i)
   LET e(i)=c(i)-v(i)  
   REM-----------------------------------------
   REM-----------------------------------------
   LET w=100
   IF e(i)>w THEN
      LET e(i)=w    
   ELSE       
   END IF
   IF e(i)<-w THEN
      LET e(i)=-w
   ELSE
   END IF   
   REM-----------------
    
    
NEXT I


REM----PLOT-------------------------------
FOR I=4 TO m
   PLOT LINES:  i, d(i);
NEXT I

PLOT POINTS:2,0

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

REM PRINT max

END