ライター: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