【ZYBO】オーディオ・コーデックSSM2603を使ってみる(I2Sについて)

I2Sとは音声デジタルデータをシリアル通信により転送する規格です。オーディオの分野では一般的に使用されているようです。SSM2603ではADC/DACによりデジタル化されたデータをI2Sにより扱うため、I2Sについて勉強してみました。

Inter-IC Sound -Wikipedia-

尚、ここでの説明はSSM2603にてI2Sを扱うことを前提としています。そのため全体的にSSM2603と絡めた話になっています。

I2S信号

I2Sで使用される基本的な信号は以下の通りです。

信号名 意味
LRCLK Left/Right Clock。ステレオ信号のLeft/Rightを区別するための信号。
BCLK Bit Clock。シリアルデータの変化タイミング、取り込みタイミングを表す。
SDATA Serial Data。シリアルデータ。
MCLK Master Clock。I2S通信の基準クロック。I2Sの全信号はMCLKに同期して動作し、SSM2603へも入力が必要。

SSM2603で使用される信号が下表です。上と比較して、録音用と再生用でLRクロックとDATが分かれた形となっています。

信号名 意味
PBLRC Play Back Left/Right Clock。再生専用(D/A Converter用)のLRCLK。
PBDAT Play Back Data。再生専用(D/A Converter用)のSDATA。
RECLRC Record Left/Right Clock。録音専用(A/D Converter用)のLRCLK。
RECDAT Record Data。録音専用(A/D Converter用)のSDATA。
BCLK Bit Clock。
MCLK Master Clock。

タイミングチャート

デジタルデータが24bit諧調の場合のタイミングチャートです。要点をまとめると、

  • LRCLKはサンプリング周期でHigh/Lowを繰り返す。LowがLeft。HighがRight。
  • Left/RightそれぞれBCLK 32clock。LRCLK 1周期でBCLK 64clock。
  • 32clockのSDATA中、初回1clockと最後7clockは無効データ。その間24clockが有効データで、初回がLSB。
  • BCLKの立ち下がりでSDATA変化。立ち上がりで有効データラッチ。
  • 図中にはないが、全てMCLK同期。

i2s timing chart

説明のため信号名をLRCLKとSDATAとしていますが、SSM2603ではLRCLKをPBLRC/RECLRC、SDATAをPBDAT/RECDATと読み替えれば、考え方はそのまま適用できます。

【2017.5.2 追記】
タイミングチャートがLSBファーストとなっていましたが、SSM2603のデータシートにMSBファーストの記述があったため修正しました。

各クロック周期の計算

実際にI2S制御用の回路を組もうとした場合に、決定しないといけないのが各クロックの周期(=周波数)です。何を元に決定するかというと、自分が設定したい「サンプリング周波数」を決めるところから始まります。

サンプリング周波数、オーディオの分野でよく耳にする言葉です。「1秒間に何回アナログ音声データをサンプルするか」という意味ですね。

SSM2603では設定可能なサンプリング周波数が決まっています。詳細はデータシートを参照ください。今回は48kHzを使用することにします。
SSM2603 データシート

サンプリング周波数を決定すると、LRCLK、BCLKの周波数を決定出来ます。下表にまとめますが、タイミングチャートと見比べつつ考えると分かりやすいです。MCLKは正確にBCLKを刻めればよいため、BCLKの倍数であればいくつでも問題ないと想像しています。今回はSSM2603が要求する値としています。

信号 周波数 計算式
LRCLK 48kHz =サンプリング周波数
BCLK 3.072MHz =LRCLK×32×2
MCLK 12.288MHz =BCLK×4

これでI2Sを使用する準備が整いました。次回は実際にZynqのPLブロックでI2S制御用の回路を作成してみたいと思います。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする