どもです。AUDIY( Follow @AUDIY14 )です。
今回はAnalog Discovery 3(AD3)でCombo384から出力されるI2Sをデコードし、実際に取得できるサンプルの限界を探ってみたいと思います。
Combo384について
Amanero Technnologiesが販売するUSBオーディオをI2SやDSDに変換するモジュールです。
この手のソリューションで有名なものだと他にXMOSがありますが、個人使用だとデバイスドライバが評価版だったり、モジュール形式で販売されていないこと等から個人製作だとCombo384が多用されている印象があります。
Combo384は公式ドライバをインストールするだけでサンプリング周波数384kHzまでのPCMを再生することが可能です。
今回はPCMを再生してみて各サンプリング周波数(48/96/192/384kHz)でデコードした波形を取得してみたいと思います。
ちなみにXMOSについてはInnocent Key様が過去にいろいろと検討された記事を出しています。
再生する音源
今回は以下の音源を再生したいと思います。
- サンプリング周波数: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と接続する
接続はこんな感じです(暗くてすみません・・・)
今回はロジアナのデフォルトで接続しましたが、ここはユーザーの設定で変わりますのでご注意ください。
AD3購入時に合わせてICクリップを購入しておいて正解でした。
通販コード:P-03436
いざデータ取得
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程度までなので。
まとめ
とりあえず、AD3のロジアナ機能でCombo384から出力されるI2S波形をデコードしてみました。
- サンプリング周波数384kHzまでは細かな調整で取得可能
- 限界はサンプリング周波数768kHzと推察される
- AD2(最大サンプルレート100MHz)はサンプリング周波数384kHzが限界な可能性がある
- AD3のハードウェアスペックをフルで活かすには細かな設定変更が必要
- I2Sデコード時は細かい設定に注意
- AUDIYの用途ではDigital Discoveryがすぐに必要になることはなさそう
これはケチらずAD3買って正解でしたわ・・・・
どんどん電子工作を加速させていきたいと思います。