ZOSAN-HPA15 HPA16 試聴とファームウェア調整(2)
昨日の続きです。
208.8MHz新ファームウェアの音が良くなかった原因を推測してみます。
・MCLKを追加したことによる弊害
・オーバークロックによる弊害
んまあ、このくらいは簡単に実験できそうです。
・MCLK部分のpioをコメントアウトしてみた。==> 音は殆ど変化なし。
・オーバークロックをやめる。 ==> オリジナルの音に戻る。
完全に判明しましたね。picoのCPUは何も操作しないと標準125MHzで動作しています。
125MHz÷48kHz =2604.1667(ジッターなし)
125MHz÷44.1kHz=2834.4671(ジッターあり)
同様にオーバークロック版では
208.8MHz÷48kHz =4350(ジッターなし)キレイに割り切れる
208.8MHz÷44.1kHz=4734.6938(ジッターなし)
ジッター発生の有無は単純計算では推測しにくいようなのでオシロ波形みながら判断するしか方法はなさそうです。
ということでアレコレ試してみたのですが、picoのCPUクロック(SysClock)も自在に周波数を設定できる訳ではなく内部PLL、分周器などの制約があります。 詳しくはdatasheetに掲載されています。
https://datasheets.raspberrypi.com/rp2040/rp2040-datasheet.pdf
VCOは750~1600MHz間をFB DIVで設定、そこから2段のDIVを経て出力される。 あまりに面倒なのでラズパイ公式計算ツールが用意されています。
クロック設定に失敗するとpicoが起動しなくなるので、ちょっと焦ります。
ついでにpio内部にもDIVがあり、SysClockから更に分周して使うのでややこしさ爆発です(笑)
・・・
・・・
結局、48kHz系と44.1kHz系で共通の周波数を実現できなかった(探せなかった)ので、入力のサンプリング周波数に応じてSysClockを可変するという手法で難局を乗り切りました。
よくあるUSBマイコンは途中でCPUクロックを変えると、USB通信ができなくなりクラッシュ(PC側も・・・)するのがオチですが、picoはUSBブロックのH/WとCPUやPIO系H/Wへ独立してクロックをアサインできるためこの手が使えました。
周波数を変更するには、
set_sys_clock_khz(FREQ, true);
もしくは直接 PLL指定するら、
set_sys_clock_pll(VCOFREQ, PDIV1, PDIV2);
です。
詳細はこちらの資料をご覧ください。https://datasheets.raspberrypi.com/pico/raspberry-pi-pico-c-sdk.pdf
クロック周波数を上げると音質的によろしくないことが分ったので標準の125MHzよりも低くなるよう調整しました。 ざっくり96MHz近辺です。
この改良版ファームウェアにより48kHzも44.1kHzも十分楽しめる音になりました。
ZOSANKIBANさんにも合格を頂いたので今回は完了とします。
■ファームウェア===================
コンパイル済みファームウェア(バイナリ)は以下に置いておきます。
usb_sound_card_vari_sysclock_led_44_48.uf2
ソースはこちら。色々実験していたので汚いコードになっていますがご了承ください。
それ以外の部分は以前の記事をご参照ください。
XIAO RP2040 のオンボード RGB-LEDをサンプリング周波数に応じて光るようにしました。
44.1kHz:赤(GPIO17)
48kHz:緑(GPIO16)
他のRP2040を使ったボードの場合は3.3VをLEDのアノードへ接続し、カソードから抵抗を介してGPIOポートに電流を引き込むように配線してください。
その他のPINアサイン情報
MCLK:GPIO 0
MUTE:GPIO 7 を3.3Vにプルアップ (Lowでミュート解除)
P0には本来printfデバッグ情報が出てくるのでアサインを間違ったなと思いました。もう基板作っちゃったし、デバッグするときはMCLKを止める出せるので放置してます。
■ZOSAN-HPA15 の感想
少し明るめで明瞭。メリハリがあって楽器までの距離感が近くなる印象です。絶妙に楽しく聴ける味付けがされているようで、POPSやアニソンなどがノリノリで聴けます。NOS-DACらしさをうまく料理されているという気がします。
PC側で音量を絞りすぎると音が緩慢になってしまうので、PCで90%くらいに上げた方が良いみたいです。あとは本体にあるボリュームで音量を調整します。Windowsはカーネルミキサーの介入で音量100%にすると音が劣化しますで注意してください。wasapi排他モードなどを使うという手もあります。
Android機(Pixel 7)では、USB-DACとして認識しても音がでなくて困りました。iPadや古いAndroid機(Android 7)、Windowsでは大丈夫でした。
■ZOSAN-HPA16 の感想
こちらは本体にボリュームがなくDACからST-45へ接続しヘッドホンをドライブするというシンプル設計になっています。音圧が高めな録音のものでは平気ですが、クラシックなど音量が低めなソースの時はちょっと音量が不足するケースがあるように感じました。感度高めなヘッドホンを使うのが吉です。
音はHPA15よりも高域が滑らかで心地よい広がり感、独特のバリっとした低域、ずっと聴いていたいと思わせる音調です。
PinkのTRUSTFALLは完全にハマり曲です。
Youtubeはこちらですが AmazonMusicの方が良いみたいです。
https://www.youtube.com/watch?v=K_MGWqsV7-k
欲しい方はヤフオクから「ZOSANKIBAN」で検索すると良いです。
ということで、残る仕事はCQ出版に送ったバイナリを差し替えてもらうことですね・・
picoはPIOによって様々な形式のデータを生成することができます。 インターフェス誌に掲載しているgeachlabさんはUSBディスクリプタを改変してハイレゾ対応していますし、I2S信号も16bitだけではなく24bit、32bit化も可能と思われます。
まだまだ潜在能力を秘めていますね。
※ インターフェス誌の208.8MHz駆動のpico DACは、回路が違うためオーバークロックによる音の弊害は不明です。あくまでもZOSANKIBANさんのNOSDACでの検証結果です。念のため。
« ZOSAN-HPA15 HPA16 試聴とファームウェア調整 | トップページ | Raspberry Pi Pico 2 発表されました。 »
「Raspberry Pi pico」カテゴリの記事
- RPiZeroRP2040 USB-DDC基板試作(2024.09.01)
- ラズパイPico USB-DDC Feedbackを機能するように実装(3)(2024.08.24)
- ラズパイPico USB-DDC Feedbackを機能するように実装(2)(2024.08.23)
- ラズパイPico USB-DDC Feedbackを機能するように実装(1)(2024.08.22)
- Raspberry Pi Pico 2 発表されました。(2024.08.09)
« ZOSAN-HPA15 HPA16 試聴とファームウェア調整 | トップページ | Raspberry Pi Pico 2 発表されました。 »
コメント