Select Your Language

免責事項

  • 本サイトの情報の利用、内容、サービスによって、利用者にいかなる損害、被害が生じても、著者は一切の責任を負いません。ユーザーご自身の責任においてご利用いただきますようお願いいたします。

    本サイトで頒布している基板およびキットは、技術者、またはそれに準ずる電気的知識をお持ちの電子工作ファンの方のためのものです。一般のオーディオファンの方のためのものではありません。
    また、頒布基板およびキットは、いかなる条件でも動作を保証するものではございませんので、あらかじめご了承ください。

    電子工作では、火傷、感電、火災などの可能性があります。十分に注意をして作業して下さい。

    営利目的のご使用は認めておりません。 記事の転載や、基板・キットの商用利用の方は、ご連絡ください。学生やサークルの学習目的でまとめてご購入する場合は特別価格でご提供させていただきます。
無料ブログはココログ

スポンサー

« ZOSAN-HPA15 HPA16 試聴とファームウェア調整 | トップページ | Raspberry Pi Pico 2 発表されました。 »

2024年8月 6日 (火)

ZOSAN-HPA15 HPA16 試聴とファームウェア調整(2)

昨日の続きです。

Zosan_04
   < ぞうさんのイラストが可愛いフロントパネル >

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

Rp2040pll

VCOは750~1600MHz間をFB DIVで設定、そこから2段のDIVを経て出力される。 あまりに面倒なのでラズパイ公式計算ツールが用意されています。

https://github.com/raspberrypi/pico-sdk/blob/master/src/rp2_common/hardware_clocks/scripts/vcocalc.py

クロック設定に失敗するとpicoが起動しなくなるので、ちょっと焦ります。

ついでにpio内部にもDIVがあり、SysClockから更に分周して使うのでややこしさ爆発です(笑)

・・・

 

 

 

・・・

結局、48kHz系と44.1kHz系で共通の周波数を実現できなかった(探せなかった)ので、入力のサンプリング周波数に応じてSysClockを可変するという手法で難局を乗り切りました。

よくあるUSBマイコンは途中でCPUクロックを変えると、USB通信ができなくなりクラッシュ(PC側も・・・)するのがオチですが、picoはUSBブロックのH/WとCPUやPIO系H/Wへ独立してクロックをアサインできるためこの手が使えました。

Rp2040clocks
      rp2040-datasheet.pdfより抜粋

周波数を変更するには、

 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

ソースはこちら。色々実験していたので汚いコードになっていますがご了承ください。

usb_sound_card.c

audio_i2s.pio

それ以外の部分は以前の記事をご参照ください。

 

XIAO RP2040 のオンボード RGB-LEDをサンプリング周波数に応じて光るようにしました。

 44.1kHz:赤(GPIO17)
  48kHz:緑(GPIO16)

他のRP2040を使ったボードの場合は3.3VをLEDのアノードへ接続し、カソードから抵抗を介してGPIOポートに電流を引き込むように配線してください。

Rp2040_freq_led

その他のPINアサイン情報

 MCLK:GPIO 0
 MUTE:GPIO 7  を3.3Vにプルアップ (Lowでミュート解除)

Xiaorp2040_assign

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よりも高域が滑らかで心地よい広がり感、独特のバリっとした低域、ずっと聴いていたいと思わせる音調です。

Zosan_05

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」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

« ZOSAN-HPA15 HPA16 試聴とファームウェア調整 | トップページ | Raspberry Pi Pico 2 発表されました。 »

サイト内検索(new)

2024年9月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30