/HOME /DIY /PCM1704 DAC

First In First Out Buffer

最終更新日2006-02-04


Design Concept

 今回のDACの肝であるFIFOバッファはTIの74ACT7804。 18Bit512段の非同期FIFOバッファを採用しました。

 DAIF IC(今回はDIR1703)から出力される BCK,LRCK,DATA は16Bitのシリアルデータなので,このデータを74HC164を使用してシリパラ変換を行い,16bitのパラレルデータとしてFIFOバッファに入力します。 FIFOのレジスタへの書き込みは,FIFOに入力するクロックの立ち上がりで行われます。 LRCKはちょうどサンプリングと等しい周波数(fs)ですので,左右のチャンネルのデータを読み込ませるためにはLRCKの2倍に当たる2fsのタイミングクロックが必要になります。 このクロックを仮にワードクロック(WCK)と呼んでいますが,LRCKとDATAがBCKの立下りに同期しているのでWCKも立下りに同期している必要があります。 今回はシフトレジスタにLRCKを入力しBCKで叩いて遅延したLRCKを作り,元のLRCKとEXORを取ることで2fsのタイミングを作りました。 単純にBCKを反転して分周していっても良いのですが,LRCKとどのように同期を取ればいいのか思い浮かばなかったので前述の方法をとっています。

 CS8414を使えば,LRCKの代わりにWCKを出すモードがありますのでこの回路は必要ありません。

 FIFOの内部レジスタに読み込まれたデータの読み出しはVCXOのクロックを分周して作った2fsのクロック(WCK)で行っています。 2fsのクロックをFIFOに入力すると立ち上がりに同期して内部のレジスタに保存されていたデータが読み出せます。 読み出したデータを74HC165に入力してパラシリ変換を行います。 パラシリ変換の基準になるクロックはVCXOを分周して作ったBCKになります。 パラシリ変換開始のタイミングはWCKでとっています。 パラシリ変換されたDATAをDF1704に入力するわけですが,DF1704に入力するDATAはBCKの立下り基準でなければなりませんので注意が必要です。

 このDACのミソは,なんといっても読み出し側にVCXOを使用していることです。 VCXOはQの高い水晶ベースの発振器ですのでクロックの純度は最高によいです。 DAIF ICの内部VCOなどとは比較になりませんし,ルビジウムやらGPS衛星やらをリファレンスにしたクロック生成機器も実際に出力されるクロックは水晶を使用したVCXOなのでそれほど違いがあるとは考えられません。

 256fsの11.2896MHzを74HC161で分周するとBCK,WCK,LRCKはBCKの立下りに同期して出力されるように見えます LRCKはBCKの立下り基準でよいのですが,データの読み出しとWCKはLRCKからBCKの半クロック遅れたタイミングが必要になることがタイミングチャートからわかります。 74HC74によってWCKをBCKの立ち上がりで叩きなおし,FIFOにはBCKの反転クロックを供給します。


 実際にどのくらいJitterに差があるのか測定してみました。

Comparison of Long Term Jitter, DIR1703 and VCXO


VCXO(σ = 41psec) 44.1kHz 256fs(11.2896MHz) Long Term Jitter (1024CLK)


DIR1703(σ = 347psec) 44.1kHz 256fs(11.2896MHz) Long Term Jitter (1024CLK)

 上記の2枚の図はトリガーをかけたエッジから1024クロック後のエッジがどれだけ揺れているかを評価した結果です。 クロック周波数が早いと1クロックのジッターを計測しようとしても,分解能が荒くなってしまい正確に計測することができません。 そこでロングタームジッターという計測手法を用いて評価を行ってみました。 PLLの働きによってあるクロック数以上はジッターが一定になりますが,今回は簡易的に1024クロックでのジッターを比較してみました。

 この結果からはSPDIFが揺れているのか,VCOのジッターが見えているのかは判断がつきませんが, 伝送系の揺れはSpActがほとんど吸収していますので,DIR1703内蔵のVCOのジッターが見えていると考えていいと思います。

 VCXOの方がジッター41psecとなっていますが,何クロック分を計測しても41psec付近の値が出るので,計測系の限界と考えられます。

 この数字は1024クロック分を加算した標準偏差を示していて1σの値(実効値)です。Peak-Peakのジッターは6.6倍して1/1024した値になります。

 現状VCXOに入力する制御信号は1Hz以下にフィルタリングしています。 512段のバッファがありますので,入力側のクロックが揺れても簡単に同期が外れることはありません。 例えば,クロックが100ppmずれたとすると,左右チャンネルあるのでFIFOのクロックは88.2kHzになります。 100ppmでは8.82Hz,1秒間に8.82クロックずれるということになります。 FIFOが512段ありますので,512 / 8.82 = 58[sec]持ちこたえることが出来ます。 そもそもVCXOの可変範囲が±100ppmと考えると世の中の水晶発振器の精度も同程度と考えられますので,VCXOの発振周波数とSPDIFから復調したクロックが100ppm以上ズレることはなかなか無いと思います。


/HOME /DIY /PCM1704 DAC

inserted by FC2 system