R2Rラダー抵抗型、直結ビデオDAC回路の実験

概要

 SpartanIIにビデオDAC回路を接続して、NTSCコンポジットビデオ出力に使用可能なDAC回路のテストを行う。
 ビデオ用ということで、速度的にSigma-DeltaDACなどは使えない。
 通常は、専用DAC-ICか、高抵抗値のR2R抵抗ネットワーク+IV変換&振幅調整用アンプで構成するのだろうが、FPGA&アマチュアベースゆえ、「ICは使わない」「外つけ部品は極力少なく」との方針から、75ΩのR2Rネットワーク抵抗をIOポートで直接ドライブする方法をとる。
 外付け部品を減らせること...これがFPGAの大きな魅力の1つだと思っている。

 低インピーダンスをSpartanIIのIOで直接ドライブする為、最大の問題点として、「駆動電流の変化に応じてIOポートの電圧がドリフトする」というのが最大の心配点である。
 どの程度の精度が必要かわからないのだが、そのあたりを中心に実際の回路で測定/検証を行う。

 なお、R2R方式DAC回路を知らない人は、どこか他所で勉強してください。

NTSCコンポジットビデオDACとして必要と思われるスペック
周波数DC〜14.318MHz(カラーサブキャリアx4)
分解能8〜9ビット
負荷インピーダンスAC 75Ω固定
振幅幅1.25Vpp以上?
絶対精度±5%%程度なら可?
相対精度±2%程度?
カーブリニア電圧

実験回路、条件
SpartanIIHDL製XSP005 (XC2S100PQ144+4x7SEG+8xLED+4xPSW+1xbuzzer)
VCCIO3.312V(実測)
DAC回路R2R-DAC部,XSP005部はこちらから
HDL回路Velilogソースリスト
DAC用IOポートOBUF_S_24 (24mA出力,Slowポート)
DAC分解能8ビット
抵抗カーボン抵抗 75ohm 1/4W、2Rは75ohmを2本使用,全て同ロット品
測定器安物デジタルテスターのオートレンジで測定
 アマチュアなので、誤差1%の金属皮膜抵抗などは使っていない。
 誤差が気になるなら、同じ抵抗袋の中から抵抗値の近いものを選抜すればよい。

測定1.最下位/最上位電圧測定

最大振幅幅の測定と、リニアリティーの参考とする。
00H00.1mV
01H06.9mV
02H13.6mV
03H20.5mV
FCH1590mV
FDH1597mV
FEH1604mV
FFH1612mV

結果:最大振幅=1.612mVpp、1ポイント=約6.3mV

測定2.桁上がり周辺の電圧測定

H,Lドライブピン数が大きく入れ替わる桁上がり時には、電圧ドリフトの条件が大きく変動する可能性が大きい

--------- 4桁 ----------
0DH 86.6mV
0EH 93.4mV
0FH100.4mV
10H103.7mV
12H117.3mV
EDH1489mV
EEH1497mV
EFH1504mV
F0H1507mV
F2H1521mV
---------- 5桁 ----------
1DH191.1mV
1EH197.9mV
1FH205.0mV *
20H204.8mV *
21H211.7mV
22H218.4mV
DDH1387mV
DEH1394mV
DFH1401mV -
E0H1401mV -
E1H1408mV
E2H1415mV

---------- 6桁 ----------
3DH397mV
3EH404mV *1
3FH411mV *3
40H400mV *0
41H406mV *2
42H413mV
BDH1190mV
BEH1198mV *1
BFH1205mV *3
C0H1194mV *0
C1H1200mV *2
C2H1207mV
---- 7桁 ----
7BH787mV
7CH793mV
7DH800mV *2
7EH808mV *4
7FH815mV *6
80H792mV *0
81H799mV *1
82H805mV *3
83H812mV *5
84H818mV

結果:
 やはり多ビットの桁上がり時に電圧の逆転劇が起こってしまう。
 相対的なドリフトはある程度許容できるが、電圧の逆転はグラデーション時の輝度や、カラー信号に明白な悪影響が出そうで、非常にまずい

 桁上がり時の電圧逆転対策としては、
1)R2Rの抵抗値を100/200Ω(+出力段25Ω直列)へ変更し駆動電流を下げる。
2)逆転部の出力値を、SpartanII内部で入れ替える。
3)DAC用I/Oの位置を分散し、電源ピンの近くから取る。
4)上位3〜4ビットを、I/O2本で並列ドライブする。
 などが考えられる。1)は有効だと思うが、精度を望むのであれば、とっととデジタルビデオ用エンコーダーへ頭を切り替えるべきだろう。
 シリアルI/Fタイプなら占有ピンは減るし精度も保証される。もちろん入手できればだが、石を選ばなければさほど難しくないでしょう。
 しかし、そんなのは当たり前すぎて面白くないのでここではやらない。

 SpartanII内部で逆転部の出力値を入れ替える「その筋」な対策は、IOや電源ピンの処理、チップ個体差などの影響が大きそうなので個別調整となるだろう。
 また、ビット数を増やすと桁上がり時の電圧変動に関しては逆効果になると思われるので、IOの電圧精度も考えると、この回路では分解能を8ビット以上にする意味は無いように思える。

 全体のリニアリティはそこそこあるので、実際にNTSCを出力して、だめなら再考すればよいので、とりあえず現状でよしとする。
 比較的振幅幅の小さいカラー信号への影響が小さいことを祈るしかない。

測定3.IOピンの電圧ドリフト測定(ワーストケース)

 桁上がり時に関連することだが、最小/最大負荷時のI/O電圧を計っておく
 ドライブ電流によっては、VIH=3.0V程度まで落ちるのかもしれない。

ビットVOH最大負荷VOL最大負荷VOH最小負荷
bit001H=3.162VFEH = 46.7mVFFH = 3.234V
bit102H=3.164VFDH = 68.7mVFFH = 3.270V
bit204H=3.163VFBH = 81.0mVFFH = 3.286V
bit308H=3.163VF7H = 84.5mVFFH = 3.291V
bit410H=3.160VEFH = 83.7mVFFH = 3.297V
bit520H=3.161VDFH = 75.6mVFFH = 3.275V
bit640H=3.158VBFH = 61.7mVFFH = 3.249V
bit780H=3.144V7FH = 35.6mVFFH = 3.196V
※00Hの時、すべてのビットは計らずとも0Vで、VOLの最小負荷値である。

結果:VIHのドロップは思ったより小さいが、やはり負荷によるドリフト変動は大きい。

参考文献

CQ出版社 ドランジスタ技術スペシャルNo.65 パソコン周辺インターフェース : NTSC(P131-)
CQ出版社 定本OPアンプ回路の設計 : D-Aコンバーター(P323-)