ライター: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-->応答(発振はしない)
a630.jpg
図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