前回から1ヶ月ちかくも空いてしまい、申し訳ありません。前回に続きトランスポートとAudio信号のデジタル伝送について考えてゆくことにします。
CDからの読出し以降、DACに伝えるまでがAudioトランスポートの役割であり、トランスポートと呼ばれる製品では、伝送されるのはアナログ信号ではなくデジタル信号です。Audio信号を伝送するための標準的なデジタル伝送フォーマットはI2Sと呼ばれる方式で、アナログ信号をデジタル信号に変換するA/Dコンバータの出力フォーマット、D/Aコンバータへの入力信号、Audio処理のDSPの入出力などで、このI2Sフォーマットが標準化されています。SACD(Super Audio CD)や1bit AudioではI2Sの代わりにDSDと呼ばれるフォーマットが使用されていますが、今のところ少数派なのでまずI2Sについて理解しておくべきだと思います。I2Sは下図のようにLRCK(Word Clockと標記される場合もあります)、SCLKまたはBCLK(Bit Clock)、SD(Serial Data)の3本の信号線で構成されています。この他に、DACやDSPによってはMCLK(Master Clock)を必要とする場合があります。
LRCLKは期間中のデータがLeft(Ch.1)かRight(Ch.2)かを示すための信号で、’L’レベルでLeft、’H’レベルでRightを示します。周期はfs(サンプリング周波数)の逆数ですので、CDの場合は約22,6757μSec.となります。SCLK/BCLK(サンプリングクロックまたはbitクロック)はSD信号線のデータをサンプリングしてレベルを判断する基準となるクロックで、アクティブエッジ(Clockの立ち上がり)でSD上の信号レベルをラッチします。SDはAudioのアナログ信号をデジタイズしたデータそのもので、SCLK/BCLKを基準に各ビットの状態(’L’か’H’か)を反映するようにI2Sマスタから送り出されます。CDから読み出したデータはL,Rそれぞれ16bit、サンプリングが44.1kHzですので、前記のように図からLRCLKの周波数が44.1kHzであることがわかります。I2Sは図のようにL,Rそれぞれ32bitに拡張されていますので、CDからの16bitデータは図のb0(LSB)からb15の位置にはめ込まれ、のこりのb16からb23まで’0’がパディングされます。データ部の最初には1bitのガードbit、後部には7bitのパディングbitがあり、最近のAudio用LSIでは、この後部の余っているところにS/PDIFのような情報bitをはめ込むことができるものもあります。
図から、SCLK/BCLKの周波数はfs(サンプリング周波数。CDの場合は44.1kHz)の64倍(Lが32bit、Rが32bit)になります。したがって2.8224MHzとなり、1bitの周期は354.3nSec.となります。SLCK/BCLKがぶれていなければ、だいたいこの真中あたりでSD上の信号がラッチされますので、SCLK/BCLKの立下りから100nS以内くらいにデータが確定していればデータが化けるということはなさそうです。実際にD/Aコンバータを動作させるためにはI2Sの信号以外にMCLK(Master Clock)という、すべての動作の基準となるClockが必要な場合があり、DACによって異なりますが128fsや256fs、512fsなど、fsの128倍や256倍あるいは512倍の周波数が必要です。CD専用ならばfsは44.1kHz 固定でもよいのですが、DVDを再生したり、96kHzや192kHzでサンプリングされた信号を伝送するためにはMCLKもそれらに対応できるような設計にしておく必要があります。データ長(bit数)はI2Sでは元々各Ch.あたり24bit用意されていますので、DACさえ自動判別で対応できれば、CDの16bitであろうが、24bit長のデータであろうが伝送することができます。
I2Sは簡単で、LSIなどに組み込むロジック回路の設計も難しくないことからDAC(Chipレベル)の入力や、ADC(同様にChipレベル)の出力として標準的に採用されています。しかし、図からおわかりのように、伝送エラーに対するチェックが全く存在せず、しかもプロトコル(通信手順)もMasterからSlaveへの一方通行(コンピュータ通信の世界では、”たれ流し方式”と呼んでいます)で、エラー検出時の再送手順やフロー制御など何もありません。しかし、前記のようにLRCLK、SCLK/BCLK、MCLK相互間の同期さえきちんと取っておけば、SCLK/BCLKの立ち上がりでデータをラッチしていますのでClcok信号の波形の揺らぎや崩れなどに強いという特徴があります。元々、LSI?LSI間の信号ですので、これで当たり前ということです。REX-Linkシリーズでは、2.4GHzWireless受信回路の±5ppmという高い精度の水晶発振子を使用した発振回路から分周してMCLKやLRCLK,BCLKを作成し、きちんと同期を取ってDACに送りこんでいます。Audio製品やTVなどの民生用の水晶発振子とはグレードが違いますのでご安心ください。2.4GHzの通信回路では周波数偏差やふらつきが大きいと通信できませんし、TELECにも合格させることができません。また、基板設計時にもノイズが飛び込んで誤動作しないよう、配慮していますのでRF受信部とDACの間、USBインターフェイス部とRF送信部の間でI2S信号が化けるということはありませんので、ご安心ください。
基板上でのDAC-Chipへの信号伝送はI2Sでもよいのですが、機器(トランスポート)と機器(市販の筐体入りのDAC、フルデジタルアンプなど)の間を接続するためには、さすがにI2Sではノイズの影響を受けやすく、しかも信号線も4本と多いのでI2Sとは別の伝送方式が標準化されています。民生用として一般的なのがSONYとPhilippsから提案され、特許料無料で公開されたS/PDIFです。業務用はAES3というバランス方式でCanonコネクタが使用されます。本Blogでは民生用を中心に考えていますのでS/PDIFについて考えてゆくことにします。また、S/PDIFはHDMIのAudio伝送でも使用されていますので、次回はS/PDIFのフォーマットや問題点について検討してゆきたいと思います。あわせてTさんから頂いたコメントに関しても回答してゆきたいと思います。回答がどんどん遅れて申し訳ありません。
PCオーディオ派でIT関係の仕事をしています。本当に勉強になるページのご提供、心から感謝申し上げます。PCからDAC、PCからD級アンプへのディジタルデータの正確な伝送メカニズムに興味を持っています。
初歩的な質問です。I2S入力を受けたDACは普通、自分の内部FIFOかどこかに何点分かのバッファリングをするのではなく、受けたものは即変換してしまう設計でしょうか?それともある程度バッファリングするのが常識なのでしょうか?通常のDAC LSIは自分から外部メモリに取りに行くことはしないで、シリアルで流れ込んでくるのを受動的に受けるだけなのでしょうか?
出力の間隔は、I2Sで入力されたLRCLKではなく自分の持つクロックを基に算出して出力すると考えていいでしょうか?