電子回路わからん日記

にゃーんと言いながら電子回路いじってます

Analog Dicovery 3でI2Sをデコードしてみる

どもです。AUDIY( )です。

今回はAnalog Discovery 3(AD3)でCombo384から出力されるI2Sをデコードし、実際に取得できるサンプルの限界を探ってみたいと思います。

audio-diy.hatenablog.com


Combo384について

Amanero Technnologiesが販売するUSBオーディオをI2SやDSDに変換するモジュールです。

amanero.com

この手のソリューションで有名なものだと他にXMOSがありますが、個人使用だとデバイスドライバが評価版だったり、モジュール形式で販売されていないこと等から個人製作だとCombo384が多用されている印象があります。

www.xmos.com

Combo384は公式ドライバをインストールするだけでサンプリング周波数384kHzまでのPCMを再生することが可能です。

今回はPCMを再生してみて各サンプリング周波数(48/96/192/384kHz)でデコードした波形を取得してみたいと思います。

ちなみにXMOSについてはInnocent Key様が過去にいろいろと検討された記事を出しています。

innocent-key.com


再生する音源

今回は以下の音源を再生したいと思います。

  • サンプリング周波数:48/96/192/384kHz
  • 量子化ビット数:32bit
  • 収録波形:1kHz正弦波
  • 再生時間:60秒
  • 振幅:0dBフルスケール

Pythonを使って自身で作成した音源になります。


AD3の設定について

今回波形を取得するうえで変更しなければならない設定が複数ありましたので共有しておきたいと思います。

デフォルトのメモリ長について

2023年10月22日現在のAD3用操作ソフトウェア(Waveforms)では、立ち上げ時点でAD3のハードウェアのスペックをフルに使えるような設定がなされていません。

Device Managerでロジックアナライザのメモリの割当が最大となるように変更してあげます。

デフォルトではNo. 1が選択されていて、ロジアナ機能の1チャンネルあたり最大サンプル数が16384サンプルになっています。

No. 4(ブルーハイライト)またはNo. 5に変更することで、1チャンネルあたり最大サンプル数が32768サンプルまで拡大できます。

サンプリング周波数について

デフォルトではAnalog Discovery 2(AD2)と同じ100MHz(100MSPs/S)になっています。

Options→「Clocking」タブから、最大値の125MHzに設定してあげます。

ここまでの設定で125MSPs/S、メモリ長最大32768サンプル/chのロジアナとして使用可能になります。

I2Sデコード設定

まず、Sampleの項をFallingからRisingに変更します。
これはビットクロックのデータ取り込みエッジを指定するものです。

I2Sは規格上Fallingエッジに合わせてデータを送るため、デフォルトのままではデータの取りこぼし(メタステーブル)が発生します。

次にFormatの項ですが、多くの場合で"Two's complement"(2の補数)にしないと意図した数値が表示されないと思います。

最初"Signed"にしてて正負反転した波形が出てきてしまいました。

Showの項はデータを確認したいチャンネルを選択すればOKです。


Combo384と接続する

接続はこんな感じです(暗くてすみません・・・)

  • 赤(DIO 0):LRCK
  • 緑(DIO 1):BCK
  • 紫(DIO 2):DATA
  • 黒(GND):GND

今回はロジアナのデフォルトで接続しましたが、ここはユーザーの設定で変わりますのでご注意ください。

AD3購入時に合わせてICクリップを購入しておいて正解でした。

通販コード:P-03436

akizukidenshi.com


いざデータ取得

48kHz

4周期ぶんほどとなりました。このときのサンプルレートは7.8125MHzです。

ビットクロックの速度が48000 Hz * 64 = 3.072MHzなので、6.2MHzまでサンプルレートを小さくしてみます。

細かくサンプルレートを微調整すれば5周期ほどまでできそうです。

ここまで見ることができれば十分かなと思います。

96kHz

細かく調整して13.889MHzのサンプルレートで取得できました。

192kHz

31.25MHzのサンプルレートで取得できました。このあたりから細かいサンプルレートの調整ができなくなってきます。

384kHz

同様に細かなサンプルレートの調整はできず、62.5MHzでやっと取得できました。

最大サンプルレートから考えると768kHzのPCMまでは確認できそうですね

384kHzを再生した状態で波形を拡大します。LチャンネルとRチャンネルで数値は一致していますし、AUDIYが確認した限りではデータの取りこぼしもなさそうです。

侮れませんねAD3。ひょっとしたらDigital Discovery程度のサンプルレート(800MSPs/S)が必要かもと思っていましたが、とうぶんは杞憂に済みそうです。

近年のオーディオDACが受けれるサンプリング周波数の多くは768kHzとか1.536MHz程度までなので。

digilent.com


まとめ

とりあえず、AD3のロジアナ機能でCombo384から出力されるI2S波形をデコードしてみました。

  1. サンプリング周波数384kHzまでは細かな調整で取得可能
  2. 限界はサンプリング周波数768kHzと推察される
  3. AD2(最大サンプルレート100MHz)はサンプリング周波数384kHzが限界な可能性がある
  4. AD3のハードウェアスペックをフルで活かすには細かな設定変更が必要
  5. I2Sデコード時は細かい設定に注意
  6. AUDIYの用途ではDigital Discoveryがすぐに必要になることはなさそう

これはケチらずAD3買って正解でしたわ・・・・

どんどん電子工作を加速させていきたいと思います。